From 556733c9ee11add41531ba082e43174423d824b4 Mon Sep 17 00:00:00 2001 From: PocketMiner82 Date: Sat, 20 Apr 2024 17:41:41 +0200 Subject: [PATCH] fix: autocomplete menu selection hack removed --- pseudocodeIde/PseudocodeIDEForm.cs | 10 ++++---- .../pseudocode/PseudocodeAutocompleteItem.cs | 24 +++++++++++++++---- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/pseudocodeIde/PseudocodeIDEForm.cs b/pseudocodeIde/PseudocodeIDEForm.cs index dcbf823..8030df5 100644 --- a/pseudocodeIde/PseudocodeIDEForm.cs +++ b/pseudocodeIde/PseudocodeIDEForm.cs @@ -333,11 +333,11 @@ private void CodeTextBox_KeyDown(object sender, KeyEventArgs e) e.SuppressKeyPress = TrySelectNextTabIndicator(); } - // hack to allow enter to autocomplete even if down wasnt pressed before - if ((e.KeyCode == Keys.Enter || e.KeyCode == Keys.Tab) && e.Modifiers == Keys.None && autoCompleteMenu.SelectedItemIndex < 0) - { - autoCompleteMenu.ProcessKey((char)Keys.Down, e.Modifiers); - } + //// hack to allow enter to autocomplete even if down wasnt pressed before + //if ((e.KeyCode == Keys.Enter || e.KeyCode == Keys.Tab) && e.Modifiers == Keys.None && autoCompleteMenu.SelectedItemIndex < 0) + //{ + // autoCompleteMenu.ProcessKey((char)Keys.Down, e.Modifiers); + //} // ignore CTRL[+SHIFT]+(Z/Y/L/R/E/S) if ((e.KeyCode == Keys.Z || e.KeyCode == Keys.Y || e.KeyCode == Keys.L || e.KeyCode == Keys.R || e.KeyCode == Keys.E || e.KeyCode == Keys.S) diff --git a/pseudocodeIde/interpreter/pseudocode/PseudocodeAutocompleteItem.cs b/pseudocodeIde/interpreter/pseudocode/PseudocodeAutocompleteItem.cs index 7615db2..515349c 100644 --- a/pseudocodeIde/interpreter/pseudocode/PseudocodeAutocompleteItem.cs +++ b/pseudocodeIde/interpreter/pseudocode/PseudocodeAutocompleteItem.cs @@ -12,6 +12,7 @@ using AutocompleteMenuNS; using pseudocodeIde; using ScintillaNET; +using System; using System.Collections.Generic; using System.Linq; @@ -20,7 +21,7 @@ namespace pseudocode_ide.interpreter.pseudocode /// /// Represents an autocomplete item for pseudocode with custom behavior for replacing text. /// - public class PseudocodeAutocompleteItem : SnippetAutocompleteItem + public class PseudocodeAutocompleteItem : AutocompleteItem { /// /// Initializes a new instance of the class with the specified snippet and optional menu text. @@ -29,10 +30,10 @@ public class PseudocodeAutocompleteItem : SnippetAutocompleteItem /// The text to be displayed in the autocomplete menu. If null, the snippet is used. public PseudocodeAutocompleteItem(string snippet, string menuText = null) : base(snippet) { - if (menuText != null) - { - MenuText = menuText; - } + Text = snippet.Replace("\r", ""); + MenuText = menuText; + ToolTipText = snippet.Replace("^", ""); + ToolTipTitle = "Snippet:"; } /// @@ -96,5 +97,18 @@ public override void OnSelected(SelectedEventArgs e) PseudocodeIDEForm.Instance.AddTabSelectionIndicators(tabSelections); } + + /// + /// Compares fragment text with this item + /// + public override CompareResult Compare(string fragmentText) + { + return Text.StartsWith(fragmentText, StringComparison.InvariantCultureIgnoreCase) ? CompareResult.VisibleAndSelected : CompareResult.Hidden; + } + + public override string ToString() + { + return MenuText ?? Text.Replace("\n", " ").Replace("^", ""); + } } }