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);