|
/**
|
|
* Defines a set of configuration options for Ace editors
|
|
*/
|
|
Hooks.once("init", () => {
|
|
const namespace = "acelib";
|
|
const settings = [];
|
|
|
|
/**
|
|
* Registers a single game setting for this module.
|
|
*
|
|
* The settings is registered with the module's namespace,
|
|
* and the name and hint are assigned translated values
|
|
* based on the setting name.
|
|
*
|
|
* All the settings are world scoped.
|
|
*
|
|
* @param {string} name - The name of the setting
|
|
* @param {type} type - The data type of the setting value.
|
|
* @param {object} choices - The choices object
|
|
* @param {Number|Boolean|String} def - The default value of the setting.
|
|
* @param {Boolean} show - Should this appear in the module settings?
|
|
*/
|
|
const register = (name, type, choices = undefined, def, show = true) => {
|
|
game.settings.register(namespace, name, {
|
|
name: `${namespace}.settings.${name}.Name`,
|
|
hint: `${namespace}.settings.${name}.Hint`,
|
|
scope: "client",
|
|
config: true,
|
|
type: type,
|
|
choices: choices,
|
|
default: def ?? type(""),
|
|
config: show
|
|
});
|
|
settings.push(name);
|
|
}
|
|
|
|
/**
|
|
* Add a getter to Ace that returns an object containing all the settings
|
|
* from the settings array. These can be passed directly to the Ace initialization.
|
|
*/
|
|
Object.defineProperty(ace, "userSettings", {
|
|
get: () => {
|
|
return Object.fromEntries(
|
|
settings.map(name => [name, game.settings.get(namespace, name)])
|
|
)
|
|
},
|
|
set: () => { throw `ace: Not allowed to re-assign the global instance of ace.userSettings` },
|
|
configurable: false
|
|
});
|
|
|
|
register("selectionStyle", String, { "line": "line", "text": "text" }, "text");
|
|
register("highlightActiveLine", Boolean, undefined, false);
|
|
register("highlightSelectedWord", Boolean, undefined, true);
|
|
register("readOnly", Boolean, undefined, false, false);
|
|
register("cursorStyle", String, { "ace": "ace", "slim": "slim", "smooth": "smooth", "wide": "wide" }, "smooth");
|
|
register("mergeUndoDeltas", String, undefined, "always", false);
|
|
register("behavioursEnabled", Boolean, undefined, true, false);
|
|
register("wrapBehavioursEnabled", Boolean, undefined, true, false);
|
|
register("autoScrollEditorIntoView", Boolean, undefined, undefined, false);
|
|
register("showInvisibles", Boolean, undefined, false);
|
|
register("displayIndentGuides", Boolean, undefined, true);
|
|
register("navigateWithinSoftTabs", Boolean, undefined, true);
|
|
register("enableMultiselect", Boolean, undefined, true);
|
|
register("highlightGutterLine", Boolean, undefined, true);
|
|
register("animatedScroll", Boolean, undefined, true, false);
|
|
register("showPrintMargin", Boolean, undefined, false);
|
|
register("printMarginColumn", Number, undefined, 80);
|
|
register("printMargin", Number, undefined, undefined, false);
|
|
register("showFoldWidgets", Boolean, undefined, true);
|
|
register("fadeFoldWidgets", Boolean, undefined, true);
|
|
register("showLineNumbers", Boolean, undefined, true);
|
|
register("showGutter", Boolean, undefined, true);
|
|
register("fontSize", Number, undefined, 15);
|
|
register("fontFamily", String, undefined, "monospace");
|
|
register("scrollPastEnd", Number, undefined, 0.5);
|
|
register("fixedWidthGutter", Boolean, undefined, false, false);
|
|
register("theme", String, { "ace/theme/ambiance": "ambiance", "ace/theme/chaos": "chaos", "ace/theme/chrome": "chrome", "ace/theme/clouds": "clouds", "ace/theme/clouds_midnight": "clouds_midnight", "ace/theme/cobalt": "cobalt", "ace/theme/crimson_editor": "crimson_editor", "ace/theme/dawn": "dawn", "ace/theme/dracula": "dracula", "ace/theme/dreamweaver": "dreamweaver", "ace/theme/eclipse": "eclipse", "ace/theme/github": "github", "ace/theme/gob": "gob", "ace/theme/gruvbox": "gruvbox", "ace/theme/idle_fingers": "idle_fingers", "ace/theme/iplastic": "iplastic", "ace/theme/katzenmilch": "katzenmilch", "ace/theme/kr_theme": "kr_theme", "ace/theme/kuroir": "kuroir", "ace/theme/merbivore": "merbivore", "ace/theme/merbivore_soft": "merbivore_soft", "ace/theme/mono_industrial": "mono_industrial", "ace/theme/monokai": "monokai", "ace/theme/nord_dark": "nord_dark", "ace/theme/pastel_on_dark": "pastel_on_dark", "ace/theme/solarized_dark": "solarized_dark", "ace/theme/solarized_light": "solarized_light", "ace/theme/sqlserver": "sqlserver", "ace/theme/terminal": "terminal", "ace/theme/textmate": "textmate", "ace/theme/tomorrow": "tomorrow", "ace/theme/tomorrow_night_blue": "tomorrow_night_blue", "ace/theme/tomorrow_night_bright": "tomorrow_night_bright", "ace/theme/tomorrow_night_eighties": "tomorrow_night_eighties", "ace/theme/tomorrow_night": "tomorrow_night", "ace/theme/twilight": "twilight", "ace/theme/vibrant_ink": "vibrant_ink", "ace/theme/xcode": "xcode" }, "ace/theme/chrome");
|
|
register("newLineMode", String, { "auto": "auto", "unix": "unix", "windows": "windows" }, "unix");
|
|
register("useWorker", Boolean, undefined, true, false);
|
|
register("tabSize", Number, undefined, 4);
|
|
register("wrap", Boolean, undefined, true);
|
|
register("foldStyle", String, { "markbegin": "markbegin", "markbeginend": "markbeginend", "manual": "manual" }, "markbegin");
|
|
register("mode", String, { "ace/mode/html": "html", "ace/mode/text": "plain text", "ace/mode/json": "json", "ace/mode/css": "css", "ace/mode/js": "javascript" }, "ace/mode/text");
|
|
register("enableBasicAutocompletion", Boolean, undefined, true);
|
|
register("enableSnippets", Boolean, undefined, true);
|
|
register("enableLiveAutocompletion", Boolean, undefined, true);
|
|
register("useElasticTabstops", Boolean, undefined, true);
|
|
register("keyboardHandler", String, { "ace/mode/emacs": "emacs", "ace/mode/sublime": "sublime", "ace/mode/vim": "vim", "ace/mode/vscode": "vscode" }, undefined);
|
|
register("hScrollBarAlwaysVisible", Boolean, undefined, false);
|
|
register("vScrollBarAlwaysVisible", Boolean, undefined, false);
|
|
register("maxLines", Number, undefined, undefined, false);
|
|
register("minLines", Number, undefined, 10, false);
|
|
register("maxPixelHeight", Number, undefined, 0, false);
|
|
register("scrollSpeed", Number, undefined, 2);
|
|
register("dragDelay", Number, undefined, 0);
|
|
register("dragEnabled", Boolean, undefined, true);
|
|
register("focusTimeout", Number, undefined, 0, false);
|
|
register("tooltipFollowsMouse", Boolean, undefined, true, false);
|
|
register("firstLineNumber", Number, undefined, 1);
|
|
register("overwrite", Boolean, undefined, false);
|
|
register("useSoftTabs", Boolean, undefined, true);
|
|
register("indentedSoftWrap", Boolean, undefined, true);
|
|
});
|