Example #1
0
        public CompletionSource(ITextStructureNavigatorSelectorService navigatorSelectorService, WorkspaceDocument <ITextBuffer> document)
        {
            this.navigatorSelectorService = navigatorSelectorService;
            this.document = document;

            this.keywords = ImmutableArray.Create(
                new CompletionItem("break", this, CompletionItemIcon),
                new CompletionItem("default", this, CompletionItemIcon),
                new CompletionItem("func", this, CompletionItemIcon),
                new CompletionItem("interface", this, CompletionItemIcon),
                new CompletionItem("select", this, CompletionItemIcon),
                new CompletionItem("case", this, CompletionItemIcon),
                new CompletionItem("defer", this, CompletionItemIcon),
                new CompletionItem("go", this, CompletionItemIcon),
                new CompletionItem("map", this, CompletionItemIcon),
                new CompletionItem("struct", this, CompletionItemIcon),
                new CompletionItem("chan", this, CompletionItemIcon),
                new CompletionItem("else", this, CompletionItemIcon),
                new CompletionItem("goto", this, CompletionItemIcon),
                new CompletionItem("package", this, CompletionItemIcon),
                new CompletionItem("switch", this, CompletionItemIcon),
                new CompletionItem("const", this, CompletionItemIcon),
                new CompletionItem("fallthrough", this, CompletionItemIcon),
                new CompletionItem("if", this, CompletionItemIcon),
                new CompletionItem("range", this, CompletionItemIcon),
                new CompletionItem("type", this, CompletionItemIcon),
                new CompletionItem("continue", this, CompletionItemIcon),
                new CompletionItem("for", this, CompletionItemIcon),
                new CompletionItem("import", this, CompletionItemIcon),
                new CompletionItem("return", this, CompletionItemIcon),
                new CompletionItem("var", this, CompletionItemIcon));
        }
Example #2
0
        public Tagger(TaggerProviderBase <TTagType> taggerProvider, WorkspaceDocument <ITextBuffer> document)
        {
            this.taggerProvider = taggerProvider
                                  ?? throw new ArgumentNullException(nameof(taggerProvider));
            this.document = document
                            ?? throw new ArgumentNullException(nameof(document));

            this.document.DocumentUpdated += this.OnDocumentUpdated;
        }
Example #3
0
        protected override void AttachDocument(WorkspaceDocument <ITextBuffer> document)
        {
            base.AttachDocument(document);

            // TODO: is this a leak?
            document.Key.Changed += (sender, e) =>
            {
                document.QueueReparse();
            };
        }
Example #4
0
        private static WorkspaceModel RetrieveModelByFile(Application anApp, string aFileName)
        {
            Workspace activeWorkspace = (Workspace)anApp.ActiveWorkspace;

            if (activeWorkspace == null)
            {
                throw new Exception("Unable to reach the Workspace");
            }
            Stack stack = new Stack();

            stack.Push(activeWorkspace);
            ArrayList list = new ArrayList();

            while (stack.Count != 0)
            {
                WorkspaceFolder item = (WorkspaceFolder)stack.Pop();
                if (!list.Contains(item))
                {
                    list.Add(item);
                    foreach (WorkspaceElement element in item.Children)
                    {
                        switch (element.ClassKind)
                        {
                        case -1262200149:
                        {
                            WorkspaceDocument document = (WorkspaceDocument)element;
                            if (document.Filename.ToLower() == aFileName.ToLower())
                            {
                                return((WorkspaceModel)document);
                            }
                            break;
                        }

                        case 0x42b53a08:
                            stack.Push(element);
                            break;
                        }
                    }
                }
            }
            return(null);
        }
        internal override bool TryGetNewTags(
            WorkspaceDocument <ITextBuffer> document,
            ITextSnapshot textSnapshot,
            out ImmutableArray <ITagSpan <IClassificationTag> > tags)
        {
            var tokensBuilder = ImmutableArray.CreateBuilder <ITagSpan <IClassificationTag> >();

            foreach (var token in document.GetFileTokens())
            {
                // TODO: per token.
                var classificationType = this.classificationTypeRegistry.GetClassificationType(token.Type.ToClassificationTypeName());
                var tag = new ClassificationTag(classificationType);

                tokensBuilder.Add(
                    new TagSpan <IClassificationTag>(new SnapshotSpan(
                                                         textSnapshot,
                                                         Span.FromBounds(Math.Max(0, token.Pos - 1), token.End)),
                                                     tag));
            }

            tags = tokensBuilder.ToImmutable();
            return(true);
        }
Example #6
0
        internal override bool TryGetNewTags(
            WorkspaceDocument <ITextBuffer> document,
            ITextSnapshot textSnapshot,
            out ImmutableArray <ITagSpan <IErrorTag> > tags)
        {
            // TODO: get error spans so we can correctly place the error squiggles.
            var errorTagsBuilder = ImmutableArray.CreateBuilder <ITagSpan <IErrorTag> >();

            foreach (var error in document.GetErrors())
            {
                var lineSegments = error.Split(':');
                if (lineSegments.Length == 3 &&
                    int.TryParse(lineSegments[0], out var lineNumber) &&
                    int.TryParse(lineSegments[1], out var column) &&
                    lineNumber >= 0 &&
                    lineNumber <= textSnapshot.LineCount)
                {
                    var errorLineStart = textSnapshot.GetLineFromLineNumber(lineNumber - 1).Start;
                    var errorSpanStart = errorLineStart.Position + column;

                    // TODO: this won't draw squiggles on the last char in the file.
                    if (errorSpanStart + 1 < textSnapshot.Length)
                    {
                        // TODO: we can probably pass the span back from Go instead of reading it from the error text.
                        // TODO: highlight the whole token.
                        errorTagsBuilder.Add(
                            new TagSpan <IErrorTag>(
                                new SnapshotSpan(textSnapshot, new Span(errorSpanStart, 1)),
                                new ErrorTag(PredefinedErrorTypeNames.SyntaxError, lineSegments[2])));
                    }
                }
            }

            tags = errorTagsBuilder.ToImmutable();
            return(true);
        }
Example #7
0
 public QuickInfoSource(WorkspaceDocument <ITextBuffer> document)
 {
     this.document = document ?? throw new ArgumentNullException(nameof(document));
 }
Example #8
0
 internal abstract bool TryGetNewTags(
     WorkspaceDocument <ITextBuffer> document,
     ITextSnapshot textSnapshot,
     out ImmutableArray <ITagSpan <TTagType> > tags);
Example #9
0
 public SmartIndent(WorkspaceDocument <ITextBuffer> document, IEditorOptions options)
 {
     this.document = document ?? throw new ArgumentNullException(nameof(document));
     this.options  = options ?? throw new ArgumentNullException(nameof(options));
 }
Example #10
0
 public override SnapshotBase GetCurrentSnapshot(WorkspaceDocument <ITextBuffer> workspaceDocumentBase)
 => workspaceDocumentBase.Key.CurrentSnapshot.ToSnapshot();