PavelTorgashov / FastColoredTextBox

Fast Colored TextBox for Syntax Highlighting. The text editor component for .NET.
Other
1.21k stars 463 forks source link

Autocomplete feature moves cursor to the end and erases last char of the text #257

Open DCxDemo opened 1 year ago

DCxDemo commented 1 year ago

I guess the control isn't actively maintained anymore, but in case someone will face this same issue in the future:

  1. it isn't possible to drag drop the autocomplete component in VS2022, throws a "no required constructor found" exception, so we have to resort to manual creation, which is not hard though. I tested both NuGet and source directly.

  2. autocomplete sample seems to be outdated, sample suggests autocomplete.SetAutocompleteItems(items); while it should be autocomplete.Items.SetAutocompleteItems(items); now https://www.codeproject.com/Articles/365974/Autocomplete-Menu

  3. and the actual bug why I am opening this: when the autocomplete value is inserted, the very last char of the document gets erased.

from what it looks, it kinda feels like this code shouldn't even be there, once commented you get the expected "cursor stays at the end of inserted text" behavior.

it happens in this call:

item.OnSelected(Menu, args2);

https://github.com/PavelTorgashov/FastColoredTextBox/blob/5361a7b07d7949ee32cdeb63ffdb206627ffcb8b/FastColoredTextBox/AutocompleteMenu.cs#L619

particularly here:

            //move caret position right and find char ^
            while (e.Tb.Selection.CharBeforeStart != '^')
                if (!e.Tb.Selection.GoRightThroughFolded())
                    break;

https://github.com/PavelTorgashov/FastColoredTextBox/blob/5361a7b07d7949ee32cdeb63ffdb206627ffcb8b/FastColoredTextBox/AutocompleteItem.cs#L172