Ejemplo n.º 1
0
        public IIntellisenseCache Get(ISassDocument document)
        {
            if (document == null)
                return null;

            return Caches.GetOrAdd(document, key => CreateCache(key));
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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.");
                }
            }
        }
Ejemplo n.º 5
0
        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.");
            }
        }
Ejemplo n.º 6
0
 public IntellisenseCache(ISassDocument document, IIntellisenseManager intellisenseManager)
 {
     Document = document;
     IntellisenseManager = intellisenseManager;
 }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 8
0
 public DocumentAddedEventArgs(ISassDocument document)
 {
     Document = document;
 }
Ejemplo n.º 9
0
 public FileParsingRequest(ITextProvider provider, ISassDocument document)
 {
     Text = provider;
     Document = document;
 }
Ejemplo n.º 10
0
 public BackgroundParseRequest(ISassDocument document)
 {
     _Document = document;
 }
Ejemplo n.º 11
0
 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.");
     }
 }
Ejemplo n.º 12
0
            public TextSnapshotParsingRequest(ITextBuffer buffer, ISassDocument document)
            {
                Buffer = buffer;
                Snapshot = Buffer.CurrentSnapshot;
                Document = document;

                Text = new SnapshotTextProvider(Snapshot);
            }
Ejemplo n.º 13
0
 public IntellisenseCache(ISassDocument document, IIntellisenseManager intellisenseManager)
 {
     Document            = document;
     IntellisenseManager = intellisenseManager;
 }