public IIntellisenseCache Get(ISassDocument document) { if (document == null) return null; return Caches.GetOrAdd(document, key => CreateCache(key)); }
public SassEditor(ITextBuffer buffer, ISassDocument document, IIntellisenseCache cache, IForegroundParsingTask parsingTask) { Buffer = buffer; Cache = cache; _Document = document; ParsingTask = parsingTask; Buffer.ChangedLowPriority += OnBufferChanged; if (document.Stylesheet == null) document.StylesheetChanged += OnInitialStylesheetChange; }
IIntellisenseCache CreateCache(ISassDocument document) { var cache = new IntellisenseCache(document, this); if (document.Stylesheet != null) { Task.Run(() => UpdateCache(cache, document)); } else { // wait until we have a stylesheet to generate the cache document.StylesheetChanged += OnStylesheetChanged; } return cache; }
public void ResolveImports(ITextProvider text, ISassDocument document, IDocumentManager documentManager) { foreach (var file in Files) { try { var path = file.ResolvePath(document.Source.Directory, text); if (string.IsNullOrEmpty(path)) continue; var importFile = new FileInfo(path); if (importFile.Exists) file.Document = documentManager.Import(importFile, document); } catch (Exception ex) { OutputLogger.Log(ex, "Failed to process import file."); } } }
public void ResolveImports(ITextProvider text, ISassDocument document, IDocumentManager documentManager) { try { if (Filename == null || Filename.Value == null) return; var path = ImportResolver.ResolvePath(Filename.Value, text, document.Source.Directory); if (string.IsNullOrEmpty(path)) return; var importFile = new FileInfo(path); if (importFile.Exists) Document = documentManager.Import(importFile, document); } catch (Exception ex) { OutputLogger.Log(ex, "Failed to process reference file."); } }
public IntellisenseCache(ISassDocument document, IIntellisenseManager intellisenseManager) { Document = document; IntellisenseManager = intellisenseManager; }
private bool IsReferenced(FileInfo source, ISassDocument document, HashSet<ISassDocument> visited) { if (document == null || document.Stylesheet == null) return false; var comparer = StringComparer.CurrentCultureIgnoreCase; foreach (var import in document.Stylesheet.Children.OfType<SassImportDirective>().SelectMany(x => x.Files).Where(x => x.Document != null && x.Document.Source != null)) { if (comparer.Equals(import.Document.Source.FullName, source.FullName)) return true; if (!visited.Add(import.Document)) continue; if (IsReferenced(source, import.Document, visited)) return true; } return false; }
public DocumentAddedEventArgs(ISassDocument document) { Document = document; }
public FileParsingRequest(ITextProvider provider, ISassDocument document) { Text = provider; Document = document; }
public BackgroundParseRequest(ISassDocument document) { _Document = document; }
private void UpdateCache(IIntellisenseCache cache, ISassDocument document) { try { var manager = new FileTextManager(document.Source); using (var scope = manager.Open()) cache.Update(document.Stylesheet, scope.Text); } catch (Exception ex) { Logger.Log(ex, "Failed to update intellisense cache."); } }
public TextSnapshotParsingRequest(ITextBuffer buffer, ISassDocument document) { Buffer = buffer; Snapshot = Buffer.CurrentSnapshot; Document = document; Text = new SnapshotTextProvider(Snapshot); }