diff --git a/public/index.html b/public/index.html
index cca1fefba..8ee8a394d 100644
--- a/public/index.html
+++ b/public/index.html
@@ -4230,6 +4230,16 @@
+
diff --git a/public/scripts/autocomplete/AutoComplete.js b/public/scripts/autocomplete/AutoComplete.js
index 1526a9937..268342869 100644
--- a/public/scripts/autocomplete/AutoComplete.js
+++ b/public/scripts/autocomplete/AutoComplete.js
@@ -16,6 +16,13 @@ export const AUTOCOMPLETE_WIDTH = {
'FULL': 2,
};
+/**@readonly*/
+/**@enum {Number}*/
+export const AUTOCOMPLETE_SELECT_KEY = {
+ 'TAB': 1, // 2^0
+ 'ENTER': 2, // 2^1
+};
+
export class AutoComplete {
/**@type {HTMLTextAreaElement|HTMLInputElement}*/ textarea;
/**@type {boolean}*/ isFloating = false;
@@ -724,6 +731,7 @@ export class AutoComplete {
}
case 'Enter': {
// pick the selected item to autocomplete
+ if ((power_user.stscript.autocomplete.select & AUTOCOMPLETE_SELECT_KEY.ENTER) != AUTOCOMPLETE_SELECT_KEY.ENTER) break;
if (evt.ctrlKey || evt.altKey || evt.shiftKey || this.selectedItem.value == '') break;
if (this.selectedItem.name == this.name) break;
if (!this.selectedItem.isSelectable) break;
@@ -734,6 +742,7 @@ export class AutoComplete {
}
case 'Tab': {
// pick the selected item to autocomplete
+ if ((power_user.stscript.autocomplete.select & AUTOCOMPLETE_SELECT_KEY.TAB) != AUTOCOMPLETE_SELECT_KEY.TAB) break;
if (evt.ctrlKey || evt.altKey || evt.shiftKey || this.selectedItem.value == '') break;
evt.preventDefault();
evt.stopImmediatePropagation();
diff --git a/public/scripts/power-user.js b/public/scripts/power-user.js
index 08fbfb504..6c4c53440 100644
--- a/public/scripts/power-user.js
+++ b/public/scripts/power-user.js
@@ -45,7 +45,7 @@ import { FILTER_TYPES } from './filters.js';
import { PARSER_FLAG, SlashCommandParser } from './slash-commands/SlashCommandParser.js';
import { SlashCommand } from './slash-commands/SlashCommand.js';
import { ARGUMENT_TYPE, SlashCommandArgument, SlashCommandNamedArgument } from './slash-commands/SlashCommandArgument.js';
-import { AUTOCOMPLETE_WIDTH } from './autocomplete/AutoComplete.js';
+import { AUTOCOMPLETE_SELECT_KEY, AUTOCOMPLETE_WIDTH } from './autocomplete/AutoComplete.js';
import { SlashCommandEnumValue, enumTypes } from './slash-commands/SlashCommandEnumValue.js';
import { commonEnumProviders, enumIcons } from './slash-commands/SlashCommandCommonEnumsProvider.js';
import { POPUP_TYPE, callGenericPopup } from './popup.js';
@@ -276,6 +276,7 @@ let power_user = {
left: AUTOCOMPLETE_WIDTH.CHAT,
right: AUTOCOMPLETE_WIDTH.CHAT,
},
+ select: AUTOCOMPLETE_SELECT_KEY.TAB + AUTOCOMPLETE_SELECT_KEY.ENTER,
},
parser: {
/**@type {Object.
} */
@@ -1492,6 +1493,9 @@ function loadPowerUserSettings(settings, data) {
if (power_user.stscript.autocomplete.style === undefined) {
power_user.stscript.autocomplete.style = power_user.stscript.autocomplete_style || defaultStscript.autocomplete.style;
}
+ if (power_user.stscript.autocomplete.select === undefined) {
+ power_user.stscript.autocomplete.select = defaultStscript.autocomplete.select;
+ }
}
if (power_user.stscript.parser === undefined) {
power_user.stscript.parser = defaultStscript.parser;
@@ -1656,6 +1660,14 @@ function loadPowerUserSettings(settings, data) {
$('#stscript_matching').val(power_user.stscript.matching ?? 'fuzzy');
$('#stscript_autocomplete_style').val(power_user.stscript.autocomplete.style ?? 'theme');
document.body.setAttribute('data-stscript-style', power_user.stscript.autocomplete.style);
+ $('#stscript_autocomplete_select').val(power_user.stscript.select ?? (AUTOCOMPLETE_SELECT_KEY.TAB + AUTOCOMPLETE_SELECT_KEY.ENTER));
+ $('#stscript_parser_flag_strict_escaping').prop('checked', power_user.stscript.parser.flags[PARSER_FLAG.STRICT_ESCAPING] ?? false);
+ $('#stscript_parser_flag_replace_getvar').prop('checked', power_user.stscript.parser.flags[PARSER_FLAG.REPLACE_GETVAR] ?? false);
+ $('#stscript_autocomplete_font_scale').val(power_user.stscript.autocomplete.font.scale ?? defaultStscript.autocomplete.font.scale);
+ $('#stscript_matching').val(power_user.stscript.matching ?? 'fuzzy');
+ $('#stscript_autocomplete_style').val(power_user.stscript.autocomplete.style ?? 'theme');
+ document.body.setAttribute('data-stscript-style', power_user.stscript.autocomplete.style);
+ $('#stscript_autocomplete_select').val(power_user.stscript.select ?? (AUTOCOMPLETE_SELECT_KEY.TAB + AUTOCOMPLETE_SELECT_KEY.ENTER));
$('#stscript_parser_flag_strict_escaping').prop('checked', power_user.stscript.parser.flags[PARSER_FLAG.STRICT_ESCAPING] ?? false);
$('#stscript_parser_flag_replace_getvar').prop('checked', power_user.stscript.parser.flags[PARSER_FLAG.REPLACE_GETVAR] ?? false);
$('#stscript_autocomplete_font_scale').val(power_user.stscript.autocomplete.font.scale ?? defaultStscript.autocomplete.font.scale);
@@ -3838,6 +3850,12 @@ $(document).ready(() => {
saveSettingsDebounced();
});
+ $('#stscript_autocomplete_select').on('change', function () {
+ const value = $(this).find(':selected').val();
+ power_user.stscript.autocomplete.select = parseInt(String(value));
+ saveSettingsDebounced();
+ });
+
$('#stscript_autocomplete_font_scale').on('input', function () {
const value = $(this).val();
$('#stscript_autocomplete_font_scale_counter').val(value);