1 // Scintilla source code edit control
2 /** @file AutoComplete.h
3 ** Defines the auto completion list box.
5 // Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>
6 // The License.txt file describes the conditions under which this software may be distributed.
11 namespace Scintilla::Internal
{
17 std::string stopChars
;
18 std::string fillUpChars
;
20 char typesep
; // Type separator
21 enum { maxItemLen
=1000 };
22 std::vector
<int> sortMatrix
;
28 AutoCompleteOption options
;
29 std::unique_ptr
<ListBox
> lb
;
30 Sci::Position posStart
;
31 Sci::Position startLen
;
32 /// Should autocompletion be cancelled if editor's currentPos <= startPos?
33 bool cancelAtStartPos
;
36 Scintilla::CaseInsensitiveBehaviour ignoreCaseBehaviour
;
39 /** Ordering::PreSorted: Assume the list is presorted; selection will fail if it is not alphabetical<br />
40 * Ordering::PerformSort: Sort the list alphabetically; start up performance cost for sorting<br />
41 * Ordering::Custom: Handle non-alphabetical entries; start up performance cost for generating a sorted lookup table
43 Scintilla::Ordering autoSort
;
46 // Deleted so AutoComplete objects can not be copied.
47 AutoComplete(const AutoComplete
&) = delete;
48 AutoComplete(AutoComplete
&&) = delete;
49 AutoComplete
&operator=(const AutoComplete
&) = delete;
50 AutoComplete
&operator=(AutoComplete
&&) = delete;
53 /// Is the auto completion list displayed?
54 bool Active() const noexcept
;
56 /// Display the auto completion list positioned to be near a character position
57 void Start(Window
&parent
, int ctrlID
, Sci::Position position
, Point location
,
58 Sci::Position startLen_
, int lineHeight
, bool unicodeMode
, Scintilla::Technology technology
,
59 ListOptions listOptions
);
61 /// The stop chars are characters which, when typed, cause the auto completion list to disappear
62 void SetStopChars(const char *stopChars_
);
63 bool IsStopChar(char ch
) const noexcept
;
65 /// The fillup chars are characters which, when typed, fill up the selected word
66 void SetFillUpChars(const char *fillUpChars_
);
67 bool IsFillUpChar(char ch
) const noexcept
;
69 /// The separator character is used when interpreting the list in SetList
70 void SetSeparator(char separator_
);
71 char GetSeparator() const noexcept
;
73 /// The typesep character is used for separating the word from the type
74 void SetTypesep(char separator_
);
75 char GetTypesep() const noexcept
;
77 /// The list string contains a sequence of words separated by the separator character
78 void SetList(const char *list
);
80 /// Return the position of the currently selected list item
81 int GetSelection() const;
83 /// Return the value of an item in the list
84 std::string
GetValue(int item
) const;
87 void Cancel() noexcept
;
89 /// Move the current list element by delta, scrolling appropriately
92 /// Select a list element that starts with word as the current element
93 void Select(const char *word
);