|
|
- /**
- * 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);
- });
|