Пример #1
0
 public void UpdateFoldings(string fileName, object parseInfo)
 {
     if (foldingStrategy == null)
     {
         return;
     }
     UpdateFoldings(foldingStrategy.GenerateFoldMarkers(document, fileName, parseInfo));
 }
        /// <summary>
        /// Updates the foldings.
        /// </summary>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="parseInfo">The parse info.</param>
        public void UpdateFoldings(string fileName, object parseInfo)
        {
            if (foldingStrategy == null || !document.TextEditorProperties.EnableFolding)
            {
                return;
            }

            UpdateFoldings(foldingStrategy.GenerateFoldMarkers(document, fileName, parseInfo));
        }
Пример #3
0
        public void UpdateFoldings(string fileName, object parseInfo)
        {
            int oldFoldingsCount = foldMarker.Count;

            lock (this) {
                ArrayList newFoldings = foldingStrategy.GenerateFoldMarkers(document, fileName, parseInfo);
                if (newFoldings != null && newFoldings.Count != 0)
                {
                    newFoldings.Sort();
                    if (foldMarker.Count == newFoldings.Count)
                    {
                        for (int i = 0; i < foldMarker.Count; ++i)
                        {
                            ((FoldMarker)newFoldings[i]).IsFolded = ((FoldMarker)foldMarker[i]).IsFolded;
                        }
                        foldMarker = newFoldings;
                    }
                    else
                    {
                        for (int i = 0, j = 0; i < foldMarker.Count && j < newFoldings.Count;)
                        {
                            int n = ((FoldMarker)newFoldings[j]).CompareTo(foldMarker[i]);
                            if (n > 0)
                            {
                                ++i;
                            }
                            else
                            {
                                if (n == 0)
                                {
                                    ((FoldMarker)newFoldings[j]).IsFolded = ((FoldMarker)foldMarker[i]).IsFolded;
                                }
                                ++j;
                            }
                        }
                    }
                }
                if (newFoldings != null)
                {
                    foldMarker = newFoldings;
                }
                else
                {
                    foldMarker.Clear();
                }
            }
            if (oldFoldingsCount != foldMarker.Count)
            {
                document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.WholeTextArea));
                document.OnUpdateCommited();
            }
        }
Пример #4
0
 public void UpdateFoldings(string fileName, object parseInfo)
 {
     UpdateFoldings(foldingStrategy.GenerateFoldMarkers(document, fileName, parseInfo));
 }