ARCed.Scintilla.Lexing.ToggleLineComment C# (CSharp) Method

ToggleLineComment() public method

public ToggleLineComment ( ) : void
return void
        public void ToggleLineComment()
        {
            if (string.IsNullOrEmpty(this._lineCommentPrefix))
                return;

            NativeScintilla.BeginUndoAction();

            Range selRange = Scintilla.Selection.Range;
            int start = selRange.StartingLine.Number;
            int end = selRange.EndingLine.Number;

            int offset = this._lineCommentPrefix.Length;

            for (int i = start; i <= end; i++)
            {
                Line l = Scintilla.Lines[i];
                int firstWordChar = this.FindFirstNonWhitespaceChar(l.Text);
                if (firstWordChar >= 0)
                {
                    int startPos = l.StartPosition + firstWordChar;
                    Range commentRange = Scintilla.GetRange(startPos, startPos + offset);
                    if (commentRange.Text == this._lineCommentPrefix)
                    {
                        commentRange.Text = string.Empty;
                        selRange.End -= offset;
                    }
                    else
                    {
                        Scintilla.InsertText(l.StartPosition + firstWordChar, this._lineCommentPrefix);
                        selRange.End += offset;
                    }
                }
            }

            NativeScintilla.EndUndoAction();
            selRange.Select();
        }