From 7b39a9bbd344a84c4b4dfaa2f3ea9be1679a9ac7 Mon Sep 17 00:00:00 2001 From: Rutwik Hiwalkar Date: Tue, 16 Apr 2024 11:35:58 +0530 Subject: [PATCH] feat: add vim and emacs mode for ace-editor (#25936) --- frappe/core/doctype/user/user.json | 12 ++++++++++-- frappe/core/doctype/user/user.py | 1 + frappe/public/js/frappe/form/controls/code.js | 4 +++- frappe/utils/user.py | 1 + 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/frappe/core/doctype/user/user.json b/frappe/core/doctype/user/user.json index 206a9ba248..1cdf6c2397 100644 --- a/frappe/core/doctype/user/user.json +++ b/frappe/core/doctype/user/user.json @@ -48,6 +48,7 @@ "desk_settings_section", "mute_sounds", "desk_theme", + "code_editor_type", "banner_image", "change_password", "new_password", @@ -726,6 +727,13 @@ "fieldname": "workspace_section", "fieldtype": "Section Break", "label": "Workspace" + }, + { + "default": "vscode", + "fieldname": "code_editor_type", + "fieldtype": "Select", + "label": "Code Editor Type", + "options": "vscode\nvim\nemacs" } ], "icon": "fa fa-user", @@ -788,7 +796,7 @@ "link_fieldname": "user" } ], - "modified": "2024-03-23 16:03:59.833565", + "modified": "2024-04-12 23:25:04.628007", "modified_by": "Administrator", "module": "Core", "name": "User", @@ -827,4 +835,4 @@ "states": [], "title_field": "full_name", "track_changes": 1 -} +} \ No newline at end of file diff --git a/frappe/core/doctype/user/user.py b/frappe/core/doctype/user/user.py index 2d1583a81c..d856fd0c0f 100644 --- a/frappe/core/doctype/user/user.py +++ b/frappe/core/doctype/user/user.py @@ -63,6 +63,7 @@ class User(Document): birth_date: DF.Date | None block_modules: DF.Table[BlockModule] bypass_restrict_ip_check_if_2fa_enabled: DF.Check + code_editor_type: DF.Literal["vscode", "vim", "emacs"] default_workspace: DF.Link | None defaults: DF.Table[DefaultValue] desk_theme: DF.Literal["Light", "Dark", "Automatic"] diff --git a/frappe/public/js/frappe/form/controls/code.js b/frappe/public/js/frappe/form/controls/code.js index 4efd92bd8d..d57b6728b7 100644 --- a/frappe/public/js/frappe/form/controls/code.js +++ b/frappe/public/js/frappe/form/controls/code.js @@ -177,7 +177,9 @@ frappe.ui.form.ControlCode = class ControlCode extends frappe.ui.form.ControlTex const ace_language_mode = language_map[language] || ""; this.editor.session.setMode(ace_language_mode); - this.editor.setKeyboardHandler("ace/keyboard/vscode"); + this.editor.setKeyboardHandler( + `ace/keyboard/${frappe.boot.user.code_editor_type || "vscode"}` + ); } parse(value) { diff --git a/frappe/utils/user.py b/frappe/utils/user.py index a3562d6d7a..872fa8dca8 100644 --- a/frappe/utils/user.py +++ b/frappe/utils/user.py @@ -216,6 +216,7 @@ class UserPermissions: [ "creation", "desk_theme", + "code_editor_type", "document_follow_notify", "email", "email_signature",