public static void PrepareForIncertion(string rawText, int charsOffset, int documentOffset = 0) { LocSnippetContext = new SnippetContext(); LocSnippetContext.ReplacementString = rawText; string offset = new string(' ', charsOffset); LocSnippetContext.ReplacementString = LocSnippetContext.ReplacementString.Replace(Environment.NewLine, Environment.NewLine + offset); int endPos; int startPos = LocSnippetContext.ReplacementString.IndexOf("$", StringComparison.Ordinal); while (startPos != -1) { endPos = LocSnippetContext.ReplacementString.IndexOf("$", startPos + 1, StringComparison.Ordinal); if (endPos != -1) { //'$item$' -> 'item' int newEndPos = endPos - 2; LocSnippetContext.Parameters.Add(new Point(startPos + documentOffset, newEndPos + 1 + documentOffset)); string leftText = LocSnippetContext.ReplacementString.Substring(0, startPos); string rightText = LocSnippetContext.ReplacementString.Substring(endPos + 1); string placementValue = LocSnippetContext.ReplacementString.Substring(startPos + 1, endPos - startPos - 1); LocSnippetContext.ReplacementString = leftText + placementValue + rightText; endPos = newEndPos; } else { break; } startPos = LocSnippetContext.ReplacementString.IndexOf("$", endPos + 1, StringComparison.Ordinal); } Npp.ReplaceKeywordWrapped(LocSnippetContext.ReplacementString, -1); if (LocSnippetContext.Parameters.Any()) { LocSnippetContext.CurrentParameter = LocSnippetContext.Parameters.FirstOrDefault(); } }
static public void FinalizeCurrent() { var indic = Npp.GetIndicator(SnippetContext.IndicatorId); var indicators = indic.FindRanges().ToArray(); foreach (var range in indicators) { indic.Clear(range.X, range.Y); } var caretPoint = indicators.Where(point => { string text = Npp.GetTextBetween(point); return(text == " " || text == "|"); }) .FirstOrDefault(); if (caretPoint.X != caretPoint.Y) { Npp.SetTextByRange(caretPoint.X, caretPoint.Y, ""); Npp.SetSelection(caretPoint.X, caretPoint.X); } LocSnippetContext = null; }
public static void FinalizeCurrent() { var indic = Npp.GetIndicator(SnippetContext.IndicatorId); var indicators = indic.FindRanges().ToArray(); foreach (var range in indicators) indic.Clear(range.X, range.Y); var caretPoint = indicators.Where(point => { string text = Npp.GetTextBetween(point); return text == " " || text == "|"; }) .FirstOrDefault(); if (caretPoint.X != caretPoint.Y) { Npp.SetTextByRange(caretPoint.X, caretPoint.Y, ""); Npp.SetSelection(caretPoint.X, caretPoint.X); } LocSnippetContext = null; }
public static void PrepareForIncertion(string rawText, int charsOffset, int documentOffset = 0) { LocSnippetContext = new SnippetContext(); LocSnippetContext.ReplacementString = rawText; string offset = new string(' ', charsOffset); LocSnippetContext.ReplacementString = LocSnippetContext.ReplacementString.Replace(Environment.NewLine, Environment.NewLine + offset); int endPos; int startPos = LocSnippetContext.ReplacementString.IndexOf("$", StringComparison.Ordinal); while (startPos != -1) { endPos = LocSnippetContext.ReplacementString.IndexOf("$", startPos + 1, StringComparison.Ordinal); if (endPos != -1) { //'$item$' -> 'item' int newEndPos = endPos - 2; LocSnippetContext.Parameters.Add(new Point(startPos + documentOffset, newEndPos + 1 + documentOffset)); string leftText = LocSnippetContext.ReplacementString.Substring(0, startPos); string rightText = LocSnippetContext.ReplacementString.Substring(endPos + 1); string placementValue = LocSnippetContext.ReplacementString.Substring(startPos + 1, endPos - startPos - 1); LocSnippetContext.ReplacementString = leftText + placementValue + rightText; endPos = newEndPos; } else break; startPos = LocSnippetContext.ReplacementString.IndexOf("$", endPos + 1, StringComparison.Ordinal); } Npp.ReplaceKeywordWrapped(LocSnippetContext.ReplacementString, -1); if (LocSnippetContext.Parameters.Any()) LocSnippetContext.CurrentParameter = LocSnippetContext.Parameters.FirstOrDefault(); }