private void Button_DeDent_Click(object sender, RoutedEventArgs e)
        {
            bool isFirstLine = true;
            int  dedentedAmount = 0;
            int  firstLine = 0, lastLine = 0;
            int  savedSelectionLength = TextBox_Code.SelectionLength;
            int  newSelectionStart    = TextBox_Code.SelectionStart;
            int  charCount            = 0;

            SwapTabsForSpaces();

            string[] lines = ToArray(TextBox_Code.Text);

            GetLineRange(lines, ref firstLine, ref lastLine);

            for (int i = 0; i < lines.Length; i++)
            {
                if (i >= firstLine && i <= lastLine)
                {
                    int leadingCount = GetLeadingWhiteSpaceCount(lines[i]);

                    if (leadingCount >= TAB_SIZE)
                    {
                        lines[i]       = lines[i].Substring(TAB_SIZE);
                        dedentedAmount = TAB_SIZE;
                    }
                    else if (leadingCount > 0)
                    {
                        lines[i]       = lines[i].Substring(leadingCount);
                        dedentedAmount = leadingCount;
                    }

                    charCount += lines[i].Length + Environment.NewLine.Length;

                    if (isFirstLine)
                    {
                        newSelectionStart = (charCount - (lines[i].Length + Environment.NewLine.Length)) + GetLeadingWhiteSpaceCount(lines[i]);
                        isFirstLine       = false;
                    }
                    else
                    {
                        if (savedSelectionLength > dedentedAmount)
                        {
                            savedSelectionLength -= dedentedAmount;
                        }
                    }

                    dedentedAmount = 0;
                }
                else
                {
                    charCount += lines[i].Length + Environment.NewLine.Length;
                }
            }

            TextBox_Code.Text            = ToText(lines);
            TextBox_Code.SelectionStart  = newSelectionStart;
            TextBox_Code.SelectionLength = savedSelectionLength;
            TextBox_Code.Focus();
        }
        private void Button_FixIndentation_Click(object sender, RoutedEventArgs e)
        {
            SwapTabsForSpaces();

            if (TextBox_Code.LineCount > 1)
            {
                string[] lines          = ToArray(TextBox_Code.Text);
                int      firsLineOffset = GetLeadingWhiteSpaceCount(lines[0]);
                if (firsLineOffset > 0)
                {
                    DeDent(firsLineOffset);
                }

                lines = ToArray(TextBox_Code.Text);
                int lastLineOffset = GetLeadingWhiteSpaceCount(lines[lines.Length - 1]);
                if (lastLineOffset > 0)
                {
                    DeDent(lastLineOffset);
                }
            }

            TextBox_Code.Focus();
        }