Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
 private void IncrementBufferVersion()
 {
     BufferVersion = IsMaster ? BufferVersion.IncrementMaster() : BufferVersion.IncrementSlave();
 }