public SassCompletionSource(ISassEditor editor, IIntellisenseManager intellisenseManager, ICompletionCompiler compiler, ITextStructureNavigatorSelectorService textNavigator) { Editor = editor; Cache = intellisenseManager.Get(editor.Document); IntellisenseManager = intellisenseManager; Compiler = compiler; TextNavigator = textNavigator; }
public override void Add(ParseItem item, ITextProvider text) { if (item is SassImportDirective) { var directive = item as SassImportDirective; foreach (var file in directive.Files.Where(x => x.IsValid)) { Containers.Add(new ImportContainer(directive, IntellisenseManager.Get(file.Document))); } } else if (item is XmlDocumentationComment) { var comment = item as XmlDocumentationComment; foreach (var tag in comment.Children.OfType <FileReferenceTag>().Where(x => x.Document != null)) { Containers.Add(new ImportContainer(tag, IntellisenseManager.Get(tag.Document))); } } else if (item is MixinDefinition) { var definition = item as MixinDefinition; if (definition.Name != null && definition.Name.Name != null) { Parse(new MixinContainer(definition, text), definition.Children, text); var name = text.GetText(definition.Name.Name.Start, definition.Name.Name.Length); _Mixins.Add(definition.End, new MixinCompletionValue(name)); } } else if (item is UserFunctionDefinition) { var definition = item as UserFunctionDefinition; if (definition.Name != null) { Parse(new FunctionContainer(definition, text), definition.Children, text); var name = text.GetText(definition.Name.Start, definition.Name.Length); _Functions.Add(definition.End, new UserFunctionCompletionValue(name)); } } else { base.Add(item, text); } }
ISassEditor Create(ITextBuffer buffer) { ITextDocument document; if (buffer.Properties.TryGetProperty(typeof(ITextDocument), out document)) { var sassDocument = DocumentManager.Get(new FileInfo(document.FilePath)); var cache = IntellisenseManager.Get(sassDocument); return(new SassEditor(buffer, sassDocument, cache, ParsingTask)); } return(null); }