Пример #1
0
        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();
            }
        }
Пример #2
0
        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;
        }
Пример #3
0
        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;
        }
Пример #4
0
        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();
        }