From 6599e08d3235ab6def045ed6b72960adebea0817 Mon Sep 17 00:00:00 2001 From: ilvalle Date: Thu, 24 Oct 2013 16:16:41 +0200 Subject: [PATCH] 'Highlight current line' & 'Display line numbers' options in admin editor --- applications/admin/controllers/default.py | 4 ++-- applications/admin/views/default/edit.html | 7 +++++++ applications/admin/views/default/edit_js.html | 4 ++-- .../admin/views/default/editor_settings.html | 12 ++++++++++-- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/applications/admin/controllers/default.py b/applications/admin/controllers/default.py index 883b3ad7..4639a627 100644 --- a/applications/admin/controllers/default.py +++ b/applications/admin/controllers/default.py @@ -563,7 +563,7 @@ def edit(): # Load json only if it is ajax edited... app = get_app(request.vars.app) app_path = apath(app, r=request) - editor_defaults={'theme':'web2py', 'editor': 'default', 'closetag': 'true', 'codefolding': 'false', 'tabwidth':'4', 'indentwithtabs':'false'} + editor_defaults={'theme':'web2py', 'editor': 'default', 'closetag': 'true', 'codefolding': 'false', 'tabwidth':'4', 'indentwithtabs':'false', 'linenumbers':'true', 'highlightline':'true'} config = Config(os.path.join(request.folder, 'settings.cfg'), section='editor', default_values=editor_defaults) preferences = config.read() @@ -586,7 +586,7 @@ def edit(): response.headers["web2py-component-command"] = "update_editor(%s);$('a[href=#editor_settings] button.close').click();" % response.json(config.read()) return else: - details = {'filename':'settings', 'id':'editor_settings', 'force': False} + details = {'realfilename':'settings', 'filename':'settings', 'id':'editor_settings', 'force': False} details['plain_html'] = response.render('default/editor_settings.html', {'editor_settings':preferences}) return response.json(details) diff --git a/applications/admin/views/default/edit.html b/applications/admin/views/default/edit.html index 132c91f2..5c94de76 100644 --- a/applications/admin/views/default/edit.html +++ b/applications/admin/views/default/edit.html @@ -136,6 +136,13 @@ function update_editor(preferences) { editor.setOption("indentUnit", parseInt(preferences.tabwidth)); editor.setOption("tabSize", parseInt(preferences.tabwidth)); editor.setOption("indentWithTabs", (preferences.indentwithtabs === 'true')); + if (preferences.linenumbers === 'true') { + gutters = editor.getOption("gutters"); + gutters.splice(0, 0, 'CodeMirror-linenumbers'); + editor.setOption("gutter", gutters); + } + editor.setOption("lineNumbers", (preferences.linenumbers === 'true')); + editor.setOption("styleActiveLine", (preferences.highlightline === 'true')); }); } diff --git a/applications/admin/views/default/edit_js.html b/applications/admin/views/default/edit_js.html index 37cb833f..62e6fb54 100644 --- a/applications/admin/views/default/edit_js.html +++ b/applications/admin/views/default/edit_js.html @@ -47,11 +47,11 @@ {{else:}} mode: { name: '{{=filetype}}'{{if filetype=='python':}},version: 2,singleLineStringErrors: false, {{pass}} }, {{pass}} - lineNumbers: true, + lineNumbers: {{=editor_settings['linenumbers']}}, indentUnit: {{=editor_settings['tabwidth']}}, indentWithTabs: {{=editor_settings['indentwithtabs']}}, tabSize: {{=editor_settings['tabwidth']}}, - styleActiveLine: true, + styleActiveLine: {{=editor_settings['highlightline']}}, autoCloseTags: {{=editor_settings['closetag']}}, theme: "{{=editor_settings['theme']}}", lineWrapping: true, diff --git a/applications/admin/views/default/editor_settings.html b/applications/admin/views/default/editor_settings.html index ab4c0dda..b5eee771 100644 --- a/applications/admin/views/default/editor_settings.html +++ b/applications/admin/views/default/editor_settings.html @@ -26,13 +26,21 @@
{{=stateWidget("codefolding", value=editor_settings['codefolding'])}}
- +
{{=SELECT(range(1,9, 1), value=editor_settings['tabwidth'], _name="tabwidth" )}}
- +
{{=stateWidget("indentwithtabs", value=editor_settings['indentwithtabs'])}}
+
+ +
{{=stateWidget("linenumbers", value=editor_settings['linenumbers'])}}
+
+
+ +
{{=stateWidget("highlightline", value=editor_settings['highlightline'])}}
+