forked from phcode-dev/phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEditorOptionHandlers.js
More file actions
1 lines (1 loc) · 4.4 KB
/
EditorOptionHandlers.js
File metadata and controls
1 lines (1 loc) · 4.4 KB
1
define(function(require,exports,module){const AppInit=require("utils/AppInit"),Editor=require("editor/Editor").Editor,Commands=require("command/Commands"),CommandManager=require("command/CommandManager"),PreferencesManager=require("preferences/PreferencesManager"),Strings=require("strings"),EditorManager=require("editor/EditorManager"),ThemeManager=require("view/ThemeManager"),_=require("thirdparty/lodash"),SHOW_LINE_NUMBERS="showLineNumbers",STYLE_ACTIVE_LINE="styleActiveLine",WORD_WRAP="wordWrap",CLOSE_BRACKETS="closeBrackets",AUTO_HIDE_SEARCH="autoHideSearch";let currentMaxLineLength=120;const PREFERENCES_EDITOR_RULERS="editor.rulers",PREFERENCES_EDITOR_RULER_COLORS="editor.rulerColors",PREFERENCES_EDITOR_RULERS_ENABLED="editor.rulersEnabled";let _currentTheme;PreferencesManager.definePreference(PREFERENCES_EDITOR_RULERS_ENABLED,"boolean",!0,{description:Strings.DESCRIPTION_RULERS_ENABLED}),PreferencesManager.definePreference(PREFERENCES_EDITOR_RULERS,"array",[120],{description:Strings.DESCRIPTION_RULERS_COLUMNS}),PreferencesManager.definePreference(PREFERENCES_EDITOR_RULER_COLORS,"array",[],{description:Strings.DESCRIPTION_RULERS_COLORS});let _optionMapping={};function _updateCheckedState(name){var mapping=_optionMapping[name];mapping&&CommandManager.get(mapping).setChecked(PreferencesManager.get(name))}function _getToggler(prefName){return function(){PreferencesManager.set(prefName,!PreferencesManager.get(prefName))}}function _createRulers(editor){const rulerColumns=PreferencesManager.get(PREFERENCES_EDITOR_RULERS)||[],rulerColors=PreferencesManager.get(PREFERENCES_EDITOR_RULER_COLORS)||[],rulersEnabled=PreferencesManager.get(PREFERENCES_EDITOR_RULERS_ENABLED);if(!rulersEnabled||!rulerColumns.length||!editor)return;if(_currentTheme||(_currentTheme=ThemeManager.getCurrentTheme()),!_currentTheme)return;const defaultColor=_currentTheme&&_currentTheme.dark?"#333333":"#e0e0e0";if(!editor._codeMirror.getOption("rulers")){let rulerOptions=[];for(let i=0;i<rulerColumns.length;i++)rulerOptions.push({color:rulerColors[i]?rulerColors[i]:defaultColor,column:rulerColumns[i],lineStyle:"solid !important"});editor._codeMirror.setOption("rulers",rulerOptions)}}function _resetRulers(){Editor.forEveryEditor(function(editor){editor._codeMirror.setOption("rulers",null),_createRulers(editor)})}function _handleThemeChange(){_currentTheme=ThemeManager.getCurrentTheme(),_resetRulers()}function _init(){_.each(_optionMapping,function(commandName,prefName){CommandManager.get(commandName).setChecked(PreferencesManager.get(prefName))}),Editor.getShowLineNumbers()||Editor._toggleLinePadding(!0),EditorManager.on("activeEditorChange",(_event,newActiveEditor)=>{_createRulers(newActiveEditor)}),PreferencesManager.on("change",PREFERENCES_EDITOR_RULERS_ENABLED,_resetRulers),PreferencesManager.on("change",PREFERENCES_EDITOR_RULERS,()=>{const rulerColumns=PreferencesManager.get(PREFERENCES_EDITOR_RULERS)||[];currentMaxLineLength=rulerColumns.length?Math.max(...rulerColumns):120,_resetRulers()}),PreferencesManager.on("change",PREFERENCES_EDITOR_RULER_COLORS,_resetRulers),ThemeManager.on(ThemeManager.EVENT_THEME_CHANGE,_handleThemeChange),_resetRulers()}function getMaxLineLength(){return currentMaxLineLength}_optionMapping.showLineNumbers=Commands.TOGGLE_LINE_NUMBERS,_optionMapping.styleActiveLine=Commands.TOGGLE_ACTIVE_LINE,_optionMapping.wordWrap=Commands.TOGGLE_WORD_WRAP,_optionMapping.closeBrackets=Commands.TOGGLE_CLOSE_BRACKETS,_optionMapping.autoHideSearch=Commands.TOGGLE_SEARCH_AUTOHIDE,_optionMapping[PREFERENCES_EDITOR_RULERS_ENABLED]=Commands.TOGGLE_RULERS,Object.keys(_optionMapping).forEach(function(preference){PreferencesManager.on("change",preference,function(){_updateCheckedState(preference)})}),CommandManager.register(Strings.CMD_TOGGLE_LINE_NUMBERS,Commands.TOGGLE_LINE_NUMBERS,_getToggler("showLineNumbers")),CommandManager.register(Strings.CMD_TOGGLE_ACTIVE_LINE,Commands.TOGGLE_ACTIVE_LINE,_getToggler("styleActiveLine")),CommandManager.register(Strings.CMD_TOGGLE_WORD_WRAP,Commands.TOGGLE_WORD_WRAP,_getToggler(WORD_WRAP)),CommandManager.register(Strings.CMD_TOGGLE_CLOSE_BRACKETS,Commands.TOGGLE_CLOSE_BRACKETS,_getToggler(CLOSE_BRACKETS)),CommandManager.register(Strings.CMD_TOGGLE_SEARCH_AUTOHIDE,Commands.TOGGLE_SEARCH_AUTOHIDE,_getToggler("autoHideSearch")),CommandManager.register(Strings.CMD_TOGGLE_RULERS,Commands.TOGGLE_RULERS,_getToggler(PREFERENCES_EDITOR_RULERS_ENABLED)),AppInit.appReady(_init),exports.getMaxLineLength=getMaxLineLength});