Exemple #1
0
        /// <summary>
        /// Inserts the specified snippet to the document
        /// </summary>
        public static Int32 InsertSnippetText(ScintillaControl sci, Int32 currentPosition, String snippet)
        {
            sci.BeginUndoAction();
            try
            {
                Int32  newIndent;
                String text = snippet;
                if (sci.SelTextSize > 0)
                {
                    currentPosition -= sci.MBSafeTextLength(sci.SelText);
                }
                Int32 line   = sci.LineFromPosition(currentPosition);
                Int32 indent = sci.GetLineIndentation(line);
                sci.ReplaceSel("");

                Int32  lineMarker = LineEndDetector.DetectNewLineMarker(text, sci.EOLMode);
                String newline    = LineEndDetector.GetNewLineMarker(lineMarker);
                if (newline != "\n")
                {
                    text = text.Replace(newline, "\n");
                }
                newline = LineEndDetector.GetNewLineMarker((Int32)PluginBase.MainForm.Settings.EOLMode);
                text    = PluginBase.MainForm.ProcessArgString(text).Replace(newline, "\n");
                newline = LineEndDetector.GetNewLineMarker(sci.EOLMode);
                String[] splitted = text.Trim().Split('\n');
                for (Int32 j = 0; j < splitted.Length; j++)
                {
                    if (j != splitted.Length - 1)
                    {
                        sci.InsertText(sci.CurrentPos, splitted[j] + newline);
                    }
                    else
                    {
                        sci.InsertText(sci.CurrentPos, splitted[j]);
                    }
                    sci.CurrentPos += sci.MBSafeTextLength(splitted[j]) + newline.Length;
                    if (j > 0)
                    {
                        line      = sci.LineFromPosition(sci.CurrentPos - newline.Length);
                        newIndent = sci.GetLineIndentation(line) + indent;
                        sci.SetLineIndentation(line, newIndent);
                    }
                }
                Int32 length = sci.CurrentPos - currentPosition - newline.Length;
                Int32 delta  = PostProcessSnippets(sci, currentPosition);
                return(length + delta);
            }
            finally
            {
                sci.EndUndoAction();
            }
        }
 /// <summary>
 /// Saves a backup file to the recovery directory
 /// </summary>
 public static void SaveTemporaryFile(String file, String text, Encoding encoding)
 {
     try
     {
         String name        = ConvertToFileName(file) + ".bak";
         String recoveryDir = FileNameHelper.RecoveryDir;
         if (!Directory.Exists(recoveryDir))
         {
             Directory.CreateDirectory(recoveryDir);
         }
         String path          = Path.Combine(recoveryDir, name); // Create full file path
         Int32  lineEndMode   = LineEndDetector.DetectNewLineMarker(text, (Int32)Globals.Settings.EOLMode);
         String lineEndMarker = LineEndDetector.GetNewLineMarker(lineEndMode);
         text = file + lineEndMarker + lineEndMarker + text;
         FileHelper.WriteFile(path, text, encoding);
     }
     catch (Exception ex)
     {
         ErrorManager.ShowError(ex);
     }
 }
Exemple #3
0
        /// <summary>
        /// Shows the activated snippet's contents
        /// </summary>
        private void SnippetListViewSelectedIndexChanged(Object sender, EventArgs e)
        {
            if (this.snippetListView.SelectedItems.Count == 0)
            {
                return;
            }
            if (this.saveButton.Enabled)
            {
                this.PromptToSaveSnippet();
            }
            String name = this.snippetListView.SelectedItems[0].Text;
            String path = Path.Combine(this.SnippetDir, this.currentSyntax);

            path = Path.Combine(path, name + ".fds");
            String content = File.ReadAllText(path);

            // Convert eols to windows and save current eol mode
            this.eolMode = LineEndDetector.DetectNewLineMarker(content, 0);
            content      = content.Replace(LineEndDetector.GetNewLineMarker(this.eolMode), "\r\n");
            this.snippetNameTextBox.Text = name;
            this.contentsTextBox.Text    = content;
            this.saveButton.Enabled      = false;
        }
        public static void ApplySciSettings(ScintillaControl sci, Boolean hardUpdate)
        {
            try
            {
                sci.CaretPeriod          = Globals.Settings.CaretPeriod;
                sci.CaretWidth           = Globals.Settings.CaretWidth;
                sci.EOLMode              = LineEndDetector.DetectNewLineMarker(sci.Text, (Int32)Globals.Settings.EOLMode);
                sci.IsBraceMatching      = Globals.Settings.BraceMatchingEnabled;
                sci.UseHighlightGuides   = !Globals.Settings.HighlightGuide;
                sci.Indent               = Globals.Settings.IndentSize;
                sci.SmartIndentType      = Globals.Settings.SmartIndentType;
                sci.IsBackSpaceUnIndents = Globals.Settings.BackSpaceUnIndents;
                sci.IsCaretLineVisible   = Globals.Settings.CaretLineVisible;
                sci.IsIndentationGuides  = Globals.Settings.ViewIndentationGuides;
                sci.IndentView           = Globals.Settings.IndentView;
                sci.IsTabIndents         = Globals.Settings.TabIndents;
                sci.IsUseTabs            = Globals.Settings.UseTabs;
                sci.IsViewEOL            = Globals.Settings.ViewEOL;
                sci.ScrollWidth          = Globals.Settings.ScrollWidth;
                sci.TabWidth             = Globals.Settings.TabWidth;
                sci.ViewWS               = Convert.ToInt32(Globals.Settings.ViewWhitespace);
                sci.WrapMode             = Convert.ToInt32(Globals.Settings.WrapText);
                sci.SetProperty("fold", Convert.ToInt32(Globals.Settings.UseFolding).ToString());
                sci.SetProperty("fold.comment", Convert.ToInt32(Globals.Settings.FoldComment).ToString());
                sci.SetProperty("fold.compact", Convert.ToInt32(Globals.Settings.FoldCompact).ToString());
                sci.SetProperty("fold.preprocessor", Convert.ToInt32(Globals.Settings.FoldPreprocessor).ToString());
                sci.SetProperty("fold.at.else", Convert.ToInt32(Globals.Settings.FoldAtElse).ToString());
                sci.SetProperty("fold.html", Convert.ToInt32(Globals.Settings.FoldHtml).ToString());
                sci.SetProperty("lexer.cpp.track.preprocessor", "0");
                sci.SetVirtualSpaceOptions((Int32)Globals.Settings.VirtualSpaceMode);
                sci.SetFoldFlags((Int32)Globals.Settings.FoldFlags);

                /**
                 * Set correct line number margin width
                 */
                Boolean viewLineNumbers = Globals.Settings.ViewLineNumbers;
                if (viewLineNumbers)
                {
                    sci.SetMarginWidthN(1, ScaleHelper.Scale(31));
                }
                else
                {
                    sci.SetMarginWidthN(1, 0);
                }

                /**
                 * Set correct bookmark margin width
                 */
                Boolean viewBookmarks = Globals.Settings.ViewBookmarks;
                if (viewBookmarks)
                {
                    sci.SetMarginWidthN(0, ScaleHelper.Scale(14));
                }
                else
                {
                    sci.SetMarginWidthN(0, 0);
                }

                /**
                 * Set correct folding margin width
                 */
                Boolean useFolding = Globals.Settings.UseFolding;
                if (!useFolding && !viewBookmarks && !viewLineNumbers)
                {
                    sci.SetMarginWidthN(2, 0);
                }
                else if (useFolding)
                {
                    sci.SetMarginWidthN(2, ScaleHelper.Scale(15));
                }
                else
                {
                    sci.SetMarginWidthN(2, ScaleHelper.Scale(2));
                }

                /**
                 * Adjust the print margin
                 */
                sci.EdgeColumn = Globals.Settings.PrintMarginColumn;
                if (sci.EdgeColumn > 0)
                {
                    sci.EdgeMode = 1;
                }
                else
                {
                    sci.EdgeMode = 0;
                }

                /**
                 * Add missing ignored keys
                 */
                foreach (Keys keys in ShortcutManager.AllShortcuts)
                {
                    if (keys != Keys.None && !sci.ContainsIgnoredKeys(keys))
                    {
                        sci.AddIgnoredKeys(keys);
                    }
                }
                if (hardUpdate)
                {
                    String lang = sci.ConfigurationLanguage;
                    sci.ConfigurationLanguage = lang;
                }
                sci.Colourise(0, -1);
                sci.Refresh();
            }
            catch (Exception ex)
            {
                ErrorManager.ShowError(ex);
            }
        }
Exemple #5
0
        public static void ApplySciSettings(ScintillaControl sci, Boolean hardUpdate)
        {
            try
            {
                ISettings settings = PluginBase.Settings;
                sci.CaretPeriod          = settings.CaretPeriod;
                sci.CaretWidth           = settings.CaretWidth;
                sci.EOLMode              = LineEndDetector.DetectNewLineMarker(sci.Text, (Int32)settings.EOLMode);
                sci.IsBraceMatching      = settings.BraceMatchingEnabled;
                sci.UseHighlightGuides   = !settings.HighlightGuide;
                sci.Indent               = settings.IndentSize;
                sci.SmartIndentType      = settings.SmartIndentType;
                sci.IsBackSpaceUnIndents = settings.BackSpaceUnIndents;
                sci.IsCaretLineVisible   = settings.CaretLineVisible;
                sci.IsIndentationGuides  = settings.ViewIndentationGuides;
                sci.IndentView           = settings.IndentView;
                sci.IsTabIndents         = settings.TabIndents;
                sci.IsUseTabs            = settings.UseTabs;
                sci.IsViewEOL            = settings.ViewEOL;
                sci.ScrollWidth          = Math.Max(settings.ScrollWidth, 1);
                sci.ScrollWidthTracking  = settings.ScrollWidth == 0 || settings.ScrollWidth == 3000;
                sci.TabWidth             = settings.TabWidth;
                sci.ViewWS               = Convert.ToInt32(settings.ViewWhitespace);
                sci.WrapMode             = Convert.ToInt32(settings.WrapText);
                sci.SetProperty("fold", Convert.ToInt32(settings.UseFolding).ToString());
                sci.SetProperty("fold.comment", Convert.ToInt32(settings.FoldComment).ToString());
                sci.SetProperty("fold.compact", Convert.ToInt32(settings.FoldCompact).ToString());
                sci.SetProperty("fold.preprocessor", Convert.ToInt32(settings.FoldPreprocessor).ToString());
                sci.SetProperty("fold.at.else", Convert.ToInt32(settings.FoldAtElse).ToString());
                sci.SetProperty("fold.html", Convert.ToInt32(settings.FoldHtml).ToString());
                sci.SetProperty("lexer.cpp.track.preprocessor", "0");
                sci.SetVirtualSpaceOptions((Int32)settings.VirtualSpaceMode);
                sci.SetFoldFlags((Int32)settings.FoldFlags);

                /**
                 * Set if themes should colorize the first margin
                 */
                Language language = SciConfig.GetLanguage(sci.ConfigurationLanguage);
                if (language != null && language.editorstyle != null)
                {
                    Boolean colorizeMarkerBack = language.editorstyle.ColorizeMarkerBack;
                    if (colorizeMarkerBack)
                    {
                        sci.SetMarginTypeN(BookmarksMargin, (Int32)MarginType.Fore);
                    }
                    else
                    {
                        sci.SetMarginTypeN(BookmarksMargin, (Int32)MarginType.Symbol);
                    }
                }

                /**
                 * Set correct line number margin width
                 */
                Boolean viewLineNumbers = settings.ViewLineNumbers;
                if (viewLineNumbers)
                {
                    sci.SetMarginWidthN(LineMargin, ScaleArea(sci, 36));
                }
                else
                {
                    sci.SetMarginWidthN(LineMargin, 0);
                }

                /**
                 * Set correct bookmark margin width
                 */
                Boolean viewBookmarks = settings.ViewBookmarks;
                if (viewBookmarks)
                {
                    sci.SetMarginWidthN(BookmarksMargin, ScaleArea(sci, 14));
                }
                else
                {
                    sci.SetMarginWidthN(BookmarksMargin, 0);
                }

                /**
                 * Set correct folding margin width
                 */
                Boolean useFolding = settings.UseFolding;
                if (!useFolding && !viewBookmarks && !viewLineNumbers)
                {
                    sci.SetMarginWidthN(FoldingMargin, 0);
                }
                else if (useFolding)
                {
                    sci.SetMarginWidthN(FoldingMargin, ScaleArea(sci, 15));
                }
                else
                {
                    sci.SetMarginWidthN(FoldingMargin, ScaleArea(sci, 2));
                }

                sci.SetMarginWidthN(1, 0); //Inheritance Margin (see ASCompletion.PluginMain.Margin)

                /**
                 * Adjust caret policy based on settings
                 */
                if (settings.KeepCaretCentered)
                {
                    sci.SetXCaretPolicy((Int32)(CaretPolicy.Jumps | CaretPolicy.Even), 30);
                    sci.SetYCaretPolicy((Int32)(CaretPolicy.Jumps | CaretPolicy.Even), 2);
                }
                else // Match edge...
                {
                    sci.SetXCaretPolicy((Int32)CaretPolicy.Even, 0);
                    sci.SetYCaretPolicy((Int32)CaretPolicy.Even, 0);
                }
                sci.SetVisiblePolicy((Int32)(CaretPolicy.Strict | CaretPolicy.Even), 0);

                /**
                 * Set scroll range (if false, over-scroll mode is enabled)
                 */
                sci.EndAtLastLine = settings.EndAtLastLine ? 1 : 0;

                /**
                 * Adjust the print margin
                 */
                sci.EdgeColumn = settings.PrintMarginColumn;
                if (sci.EdgeColumn > 0)
                {
                    sci.EdgeMode = 1;
                }
                else
                {
                    sci.EdgeMode = 0;
                }

                /**
                 * Add missing ignored keys
                 */
                foreach (Keys keys in ShortcutManager.AllShortcuts)
                {
                    if (keys != Keys.None && !sci.ContainsIgnoredKeys(keys))
                    {
                        sci.AddIgnoredKeys(keys);
                    }
                }
                if (hardUpdate)
                {
                    String lang = sci.ConfigurationLanguage;
                    sci.ConfigurationLanguage = lang;
                }
                sci.Colourise(0, -1);
                sci.Refresh();
            }
            catch (Exception ex)
            {
                ErrorManager.ShowError(ex);
            }
        }