예제 #1
0
        /// <summary>
        ///     Removes trailing spaces from each line
        /// </summary>
        public void StripTrailingSpaces()
        {
            NativeScintilla.BeginUndoAction();

            for (int line = startingLine; line < endingLine; line++)
            {
                int  lineStart = NativeScintilla.PositionFromLine(line);
                int  lineEnd   = NativeScintilla.GetLineEndPosition(line);
                int  i         = lineEnd - 1;
                char ch        = NativeScintilla.GetCharAt(i);
                while ((i >= lineStart) && ((ch == ' ') || (ch == '\t')))
                {
                    i--;
                    ch = NativeScintilla.GetCharAt(i);
                }
                if (i == lineStart - 1)
                {
                    ch = NativeScintilla.GetCharAt(i + 1);
                    while (i < lineEnd && ch == '\t')
                    {
                        i++;
                        ch = NativeScintilla.GetCharAt(i + 1);
                    }
                }
                if (i < (lineEnd - 1))
                {
                    NativeScintilla.SetTargetStart(i + 1);
                    NativeScintilla.SetTargetEnd(lineEnd);
                    NativeScintilla.ReplaceTarget(0, string.Empty);
                }
            }
            NativeScintilla.EndUndoAction();
        }
예제 #2
0
        void scintilla_CharAdded(object sender, CharAddedEventArgs e)
        {
            if (this.IsActive)
            {
                int le = getLengthEntered();

                // We need to make sure we aren't affecting the main list later on.
                // and so we create a new SkipList from the one we're given.
                SkipList      usableList = new SkipList(_list.GetList());
                StringBuilder strb       = new StringBuilder();
                int           cop        = 1;
                while (le > (cop - 1))
                {
                    strb.Append(NativeScintilla.GetCharAt(NativeScintilla.GetCurrentPos() - cop));
                    cop++;
                }
                char[] arr = strb.ToString().ToCharArray();
                Array.Reverse(arr);
                String   tmp    = new string(arr);
                SkipList srList = usableList.RemoveNonMatchingStartString(tmp);
                String   rList  = getListString(srList);
                NativeScintilla.AutoCSetCurList(rList);
            }
            else
            {
                if (this.List[0] != "")
                {
                    if (ShouldTrigger(e.Ch))
                    {
                        this.Show();
                    }
                }
            }
        }
예제 #3
0
        void scintilla_KeyDown(object sender, KeyEventArgs e)
        {
            if (this.IsActive)
            {
                if (e.KeyData == Keys.Back)
                {
                    int le = getLengthEntered();

                    if (le > 0)
                    {
                        // We need to make sure we aren't affecting the main list later on.
                        // and so we create a new SkipList from the one we're given.
                        SkipList      usableList = new SkipList(_list.GetList());
                        StringBuilder strb       = new StringBuilder();
                        int           cop        = 1;
                        while (le > (cop - 1))
                        {
                            strb.Append(NativeScintilla.GetCharAt(NativeScintilla.GetCurrentPos() - (cop + 1)));
                            cop++;
                        }
                        char[] arr = strb.ToString().ToCharArray();
                        Array.Reverse(arr);
                        String   tmp    = new string(arr);
                        SkipList srList = usableList.RemoveNonMatchingStartString(tmp.Substring(1));
                        String   rList  = getListString(srList);
                        NativeScintilla.AutoCSetCurList(rList);
                    }
                }
            }
        }
예제 #4
0
        internal void Show(int lengthEntered, SkipList list, bool dontSplit)
        {
            //	We may have the auto-detect of lengthEntered. In which case
            //	look for the last word character as the start
            int le = lengthEntered;

            if (le < 0)
            {
                le = getLengthEntered();
            }

            // We need to make sure we aren't affecting the main list later on.
            // and so we create a new SkipList from the one we're given.
            SkipList      usableList = new SkipList(list.GetList());
            StringBuilder strb       = new StringBuilder();
            int           cop        = 1;

            while (le > (cop - 1))
            {
                strb.Append(NativeScintilla.GetCharAt(NativeScintilla.GetCurrentPos() - cop));
                cop++;
            }
            SkipList srList = usableList.RemoveNonMatchingStartString(strb.ToString());
            String   rList  = getListString(srList);

            NativeScintilla.AutoCShow(le, rList);

            //	Now it may have been that the auto-detect lengthEntered
            //	caused to AutoCShow call to fail becuase no words matched
            //	the letters we autodetected. In this case just show the
            //	list with a 0 lengthEntered to make sure it will show
            if (!IsActive && lengthEntered < 0)
            {
                NativeScintilla.AutoCShow(0, rList);
            }
        }