public static string GetSelectedText(this ScintillaGateway document) { int start = document.GetSelectionStart(); int end = document.GetSelectionEnd(); return(document.GetTextBetween(start, end)); }
private void ExecuteCommand(string command) { IntPtr currentScint = PluginBase.GetCurrentScintilla(); ScintillaGateway scintillaGateway = new ScintillaGateway(currentScint); string selectedText = scintillaGateway.GetSelText(); int positionStar = scintillaGateway.GetSelectionStart(); int positionEnd = scintillaGateway.GetSelectionEnd(); string newText = command.Replace("|", selectedText); scintillaGateway.ReplaceSel(newText); scintillaGateway.SetSelection(positionStar + command.Substring(0, command.IndexOf('|')).Length, positionEnd + command.Substring(0, command.IndexOf('|')).Length); //scintillaGateway.SetSelectionEnd(position + command.Substring(0, command.IndexOf('|')).Length); }
/// <summary> /// Replace the tag at the caret with an expansion defined in the [Tags] /// ini-file section. /// </summary> internal static void ReplaceTag() { IntPtr currentScint = PluginBase.GetCurrentScintilla(); ScintillaGateway scintillaGateway = new ScintillaGateway(currentScint); int position = scintillaGateway.GetSelectionEnd(); string selectedText = scintillaGateway.GetSelText(); if (string.IsNullOrEmpty(selectedText)) { // TODO: remove this hardcoded 10 crap. Remove selection manipulation: // user will not be happy to see any such side-effects. scintillaGateway.SetSelection(position > 10 ? (position - 10) : (position - position), position); selectedText = scintillaGateway.GetSelText(); var reges = Regex.Matches(scintillaGateway.GetSelText(), @"(\w+)"); if (reges.Count > 0) { selectedText = reges.Cast <Match>().Select(m => m.Value).LastOrDefault(); scintillaGateway.SetSelection(position - selectedText.Length, position); selectedText = scintillaGateway.GetSelText(); } } try { if (string.IsNullOrEmpty(selectedText)) { throw new Exception("No tag here."); } byte[] buffer = new byte[1048]; var ini = new IniFile(iniFilePath); string value = ini.Get("Tags", selectedText, 1048); if (string.IsNullOrEmpty(value.Trim('\0'))) { throw new Exception("No tag here."); } value = TransformTags(value); scintillaGateway.ReplaceSel(value.Replace("|", null)); scintillaGateway.SetSelectionEnd(position + value.Substring(0, value.IndexOf('|')).Length - selectedText.Length); } catch (Exception ex) { scintillaGateway.CallTipShow(position, ex.Message); } }
/// <param name="settings"></param> public void formatCurrentToCADdy(Settings settings) { IScintillaGateway editor = new ScintillaGateway(PluginBase.GetCurrentScintilla()); if (Punkte.Count > 0) { Position oldPos = editor.GetCurrentPos(); Position selStart = editor.GetSelectionStart(); Position selEnd = editor.GetSelectionEnd(); editor.BeginUndoAction(); editor.ClearAll(); foreach (ClassCADdyPunkt item in Punkte) { String temp = item.getCADdyFormatString(settings); editor.AppendText(temp.Length + 1, temp + Environment.NewLine); } editor.ConvertEOLs(0); editor.EndUndoAction(); editor.SetCurrentPos(oldPos); editor.SetSelection(selStart.Value, selEnd.Value); //editor.ClearSelectionToCursor(); } }
public void InsertSnippet() { ScintillaGateway editor = new ScintillaGateway(PluginBase.GetCurrentScintilla()); editor.BeginUndoAction(); Position end = editor.GetLineEndPosition(editor.LineFromPosition(editor.GetSelectionEnd())); Position start = editor.PositionFromLine(editor.LineFromPosition(editor.GetSelectionStart())); int indent = KeepIndent ? editor.GetLineIndentation(editor.LineFromPosition(start)) : 0; string insertText = IndentSnippetBody(SnippetBodyBefore, indent) + IndentSelectedStrings(editor, start, end) + IndentSnippetBody(SnippetBodyAfter, indent); editor.DeleteRange(start, end.Value - start.Value + 1); editor.InsertText(start, insertText); using (TextToFind textToFind = new TextToFind(start.Value, start.Value + insertText.Length, Placeholder)) { Position placeholderPosition = editor.FindText(0, textToFind); editor.SetSelection(placeholderPosition.Value + Placeholder.Length, placeholderPosition.Value); } editor.EndUndoAction(); }
/// <summary>Setzt die Punktnummern auf den angegebenen Code</summary> /// <param name="pointnumber"></param> /// <param name="newCode"></param> /// <returns>true = es wurde mind. ein Code geändert</returns> public Boolean setPointNumberToCode(String pointnumber, String newCode) { Boolean allPoints = false; Boolean hasAnyChanged = false; if (ClassStringTools.IsNullOrWhiteSpace(pointnumber)) { pointnumber = "*"; } if (!ClassStringTools.IsNullOrWhiteSpace(newCode)) { ClassRegexTools regexT = null; if (pointnumber == "*") { allPoints = true; } else { regexT = new ClassRegexTools(pointnumber); } IScintillaGateway editor = new ScintillaGateway(PluginBase.GetCurrentScintilla()); int sLnrStart = -1; int sLnrEnd = -1; if (editor != null) { sLnrStart = editor.LineFromPosition(editor.GetSelectionStart()); sLnrEnd = editor.LineFromPosition(editor.GetSelectionEnd()); if (editor.GetColumn(editor.GetSelectionEnd()) < 2) { sLnrEnd--; } } foreach (ClassCADdyStandpunkt item in standpunkte) { if (allPoints || regexT.isMatch(item.Punktnummer.Substring(1))) { if ((sLnrStart >= 0) && (sLnrEnd >= 0)) { if ((item.LineNumber >= sLnrStart) && (item.LineNumber <= sLnrEnd)) { item.Code = newCode; hasAnyChanged = true; } } else { item.Code = newCode; hasAnyChanged = true; } } foreach (ClassCADdyZielung ziel in item.Zielungen) { if (allPoints || regexT.isMatch(ziel.Zielpunkt)) { if ((sLnrStart >= 0) && (sLnrEnd >= 0)) { if ((ziel.LineNumber >= sLnrStart) && (ziel.LineNumber <= sLnrEnd)) { ziel.Code = newCode; hasAnyChanged = true; } } else { ziel.Code = newCode; hasAnyChanged = true; } } } } } return(hasAnyChanged); }
internal static void C7GSPFunction() { //Preparing some variables var scintilla = new ScintillaGateway(PluginBase.GetCurrentScintilla()); //Starting Undo "recording". Next steps can be undo with one undo command scintilla.BeginUndoAction(); //Is there any text selected if (scintilla.GetSelText() != "") { //Calculating selections first line begin Position selStartPos = scintilla.GetSelectionStart(); int startLineNum = scintilla.LineFromPosition(selStartPos); Position startLinePos = scintilla.PositionFromLine(startLineNum); //Calculating selections last line end Position selEndPos = scintilla.GetSelectionEnd(); int endLineNum = scintilla.LineFromPosition(selEndPos); Position endLinePos = scintilla.GetLineEndPosition(endLineNum); //Setting the selection as needed scintilla.SetSel(startLinePos, endLinePos); //Preparing needed variables int ignoreMe = 0; //Gathered information string line = ""; int lineFeedLen = 0; int tt = 0, np = 0, na = 0, gtrc = 0; string ns = ""; string modifiers = ""; //Loopping through the selected lines int i = startLineNum; while (i <= endLineNum) { //Line to the memory line = scintilla.GetLine(i); if (line.Length > 2) { //Checking did we get a fresh GT line (three first chars are int (TT)) if (int.TryParse(line.Substring(0, 3), out ignoreMe)) { //Gathering the basic GT information tt = int.Parse(line.Substring(0, 3)); np = int.Parse(line.Substring(5, 2)); na = int.Parse(line.Substring(9, 3)); ns = line.Substring(14, 16).Replace(" ", string.Empty); gtrc = na = int.Parse(line.Substring(56, 3)); //Move carret to the begin of the line scintilla.SetCurrentPos(scintilla.PositionFromLine(i)); //Delete all from the line scintilla.DelLineRight(); //Add text scintilla.InsertText(scintilla.PositionFromLine(i), "C7GSI:TT=" + tt + ",NP=" + np + ",NA=" + ",NS=" + ns + ",GTRC=" + gtrc + ";"); //Checking next line if it it's not empty if (scintilla.GetLine(i + 1).Length >= 9) { //And the line will contain header which begins with MTT if (scintilla.GetLine(i + 1).Substring(9, 3) == "MTT") { //If yes then take the line under it to the variable modifiers = scintilla.GetLine(i + 2); //If linefeed is CRLF, then two extra characters in the end of line if (scintilla.GetEOLMode() == 0) { lineFeedLen = 2; } else { lineFeedLen = 1; } //Removing lines which not needed anymore scintilla.SetCurrentPos(scintilla.PositionFromLine(i + 1)); scintilla.LineDelete(); scintilla.LineDelete(); endLineNum = endLineNum - 2; //Determining which variables the modifiers line will contain if (modifiers.Length == (12 + lineFeedLen)) { //Insert command to the line scintilla.InsertText(scintilla.PositionFromLine(i + 1), "C7GSC:TT=" + tt + ",NP=" + np + ",NA=" + ",NS=" + ns + ",MTT=" + modifiers.Substring(9, 3).Replace(" ", string.Empty) + ";"); } else if (modifiers.Length == (17 + lineFeedLen)) { if (!string.IsNullOrWhiteSpace(modifiers.Substring(9, 3))) { //Insert command to the line scintilla.InsertText(scintilla.GetCurrentPos(), "C7GSC:TT=" + tt + ",NP=" + np + ",NA=" + ",NS=" + ns + ",MTT=" + modifiers.Substring(9, 3).Replace(" ", string.Empty) + ";"); //Go to end of the current line scintilla.GotoPos(scintilla.GetLineEndPosition(scintilla.LineFromPosition(scintilla.GetCurrentPos()))); //Adding new line scintilla.NewLine(); endLineNum++; } scintilla.InsertText(scintilla.GetCurrentPos(), "C7GSC:TT=" + tt + ",NP=" + np + ",NA=" + ",NS=" + ns + ",MNP=" + modifiers.Substring(14, 3).Replace(" ", string.Empty) + ";"); } else if (modifiers.Length == (22 + lineFeedLen)) { if (!string.IsNullOrWhiteSpace(modifiers.Substring(9, 3))) { scintilla.InsertText(scintilla.GetCurrentPos(), "C7GSC:TT=" + tt + ",NP=" + np + ",NA=" + ",NS=" + ns + ",MTT=" + modifiers.Substring(9, 3).Replace(" ", string.Empty) + ";"); scintilla.GotoPos(scintilla.GetLineEndPosition(scintilla.LineFromPosition(scintilla.GetCurrentPos()))); scintilla.NewLine(); endLineNum++; } if (!string.IsNullOrWhiteSpace(modifiers.Substring(14, 3))) { scintilla.InsertText(scintilla.GetCurrentPos(), "C7GSC:TT=" + tt + ",NP=" + np + ",NA=" + ",NS=" + ns + ",MNP=" + modifiers.Substring(14, 3).Replace(" ", string.Empty) + ";"); scintilla.GotoPos(scintilla.GetLineEndPosition(scintilla.LineFromPosition(scintilla.GetCurrentPos()))); scintilla.NewLine(); endLineNum++; } scintilla.InsertText(scintilla.GetCurrentPos(), "C7GSC:TT=" + tt + ",NP=" + np + ",NA=" + ",NS=" + ns + ",MNA=" + modifiers.Substring(19, 3).Replace(" ", string.Empty) + ";"); } else { if (!string.IsNullOrWhiteSpace(modifiers.Substring(9, 3))) { scintilla.InsertText(scintilla.GetCurrentPos(), "C7GSC:TT=" + tt + ",NP=" + np + ",NA=" + ",NS=" + ns + ",MTT=" + modifiers.Substring(9, 3).Replace(" ", string.Empty) + ";"); scintilla.GotoPos(scintilla.GetLineEndPosition(scintilla.LineFromPosition(scintilla.GetCurrentPos()))); scintilla.NewLine(); endLineNum++; } if (!string.IsNullOrWhiteSpace(modifiers.Substring(14, 3))) { scintilla.InsertText(scintilla.GetCurrentPos(), "C7GSC:TT=" + tt + ",NP=" + np + ",NA=" + ",NS=" + ns + ",MNP=" + modifiers.Substring(14, 3).Replace(" ", string.Empty) + ";"); scintilla.GotoPos(scintilla.GetLineEndPosition(scintilla.LineFromPosition(scintilla.GetCurrentPos()))); scintilla.NewLine(); endLineNum++; } if (!string.IsNullOrWhiteSpace(modifiers.Substring(19, 3))) { scintilla.InsertText(scintilla.GetCurrentPos(), "C7GSC:TT=" + tt + ",NP=" + np + ",NA=" + ",NS=" + ns + ",MNA=" + modifiers.Substring(19, 3).Replace(" ", string.Empty) + ";"); scintilla.GotoPos(scintilla.GetLineEndPosition(scintilla.LineFromPosition(scintilla.GetCurrentPos()))); scintilla.NewLine(); endLineNum++; } scintilla.InsertText(scintilla.GetCurrentPos(), "C7GSC:TT=" + tt + ",NP=" + np + ",NA=" + ",NS=" + ns + ",MNS=" + modifiers.Substring(24, (modifiers.Length - 24 - lineFeedLen)).Replace(" ", string.Empty) + ";"); } } } } } i++; } } scintilla.EndUndoAction(); }