public void Fire(RdTextChange value) { Assertion.Assert(Delegate.IsBound || BufferVersion == TextBufferVersion.InitVersion, "Delegate.IsBound || BufferVersion == TextBufferVersion.InitVersion"); if (Delegate.IsBound) { Proto.Scheduler.AssertThread(); } BufferVersion = IsMaster ? BufferVersion.IncrementMaster() : BufferVersion.IncrementSlave(); var ts = GetCurrentTs(); var operation = value.ToOperation(LocalOrigin, ts); switch (operation.Kind) { case OtOperationKind.Normal: myDiff.Add(operation); break; case OtOperationKind.Reset: myDiff = new List <OtOperation>(); break; default: throw new ArgumentOutOfRangeException(); } SendOperation(operation); }
private IEnumerable <Reference> GetModuleReferences(IPythonProjectEntry entry, PythonAst tree, BufferVersion version, ReferencesParams @params) { if ([email protected]?.includeDeclaration == true) { return(Enumerable.Empty <Reference>()); } var index = tree.LocationToIndex(@params.position); var w = new ImportedModuleNameWalker(entry, index, tree); tree.Walk(w); if (w.ImportedType != null) { @params._expr = w.ImportedType.Name; return(Enumerable.Empty <Reference>()); } var modulesNamesInRange = w.ImportedModules.Where(m => { var start = tree.LocationToIndex(m.SourceSpan.Start); var end = tree.LocationToIndex(m.SourceSpan.End); return(start <= index && index < end); }).ToArray(); if (modulesNamesInRange.Length == 0) { return(Enumerable.Empty <Reference>()); } var refs = new List <Reference>(); foreach (var n in modulesNamesInRange) { if (Analyzer.Modules.TryGetImportedModule(n.Name, out var modRef) && modRef.AnalysisModule != null) { // Return a module reference refs.AddRange(modRef.AnalysisModule.Locations .Select(l => new Reference { uri = l.DocumentUri, range = l.Span, _version = version?.Version, _kind = ReferenceKind.Definition }) .ToArray()); } } return(refs); }
private void IncrementBufferVersion() { BufferVersion = IsMaster ? BufferVersion.IncrementMaster() : BufferVersion.IncrementSlave(); }