From 5c7dff5d2bde0e0d542a694f8512350c65d6baf2 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Tue, 17 Jun 2025 21:11:09 -0500 Subject: [PATCH] Moved keybindings to mapping pattern --- src/app/common/configs/keybinding-newton.js | 142 ---------- src/app/common/configs/keybindings.config.ts | 244 +++++++----------- .../newton-editor/newton-editor.base.ts | 14 +- .../newton-editor/newton-editor.component.ts | 161 +++--------- 4 files changed, 142 insertions(+), 419 deletions(-) delete mode 100644 src/app/common/configs/keybinding-newton.js diff --git a/src/app/common/configs/keybinding-newton.js b/src/app/common/configs/keybinding-newton.js deleted file mode 100644 index 2a69344..0000000 --- a/src/app/common/configs/keybinding-newton.js +++ /dev/null @@ -1,142 +0,0 @@ -const editorCommands = [ - { - name: "showSettingsMenu", - bindKey: {win: "Ctrl-Shift-m", mac: "Ctrl-Shift-m"}, - exec: function(editor) { - ace.config.loadModule("ace/ext/settings_menu", function(module) { - module.init(editor); - editor.showSettingsMenu(); - }) - } - }, { - name: "showKeyboardShortcuts", - bindKey: {win: "ctrl-shift-h", mac: "command-shift-h"}, - exec: function(editor) { - ace.config.loadModule("ace/ext/keybinding_menu", function(module) { - module.init(editor); - editor.showKeyboardShortcuts(); - }) - } - }, { - name: "openCommandPalette2", - bindKey: {linux: "Command-Shift-/|F1", win: "Ctrl-Shift-/|F1"}, - exec: function(editor) { - editor.execCommand("openCommandPalette"); - } - }, { - name: "showLSPManager", - bindKey: {win: "ctrl-m", mac: "command-m"}, - exec: function(editor) { - $('#lsp-modal').modal("toggle"); - } - }, { - name: "search", - bindKey: {win: "ctrl-f", mac: "ctrl-f"}, - exec: function(editor) { - blockHigherNewtonEvePropigation = true; - searchReplace.toggleShow(); - }, - readOnly: true - }, { - name: "openFile", - bindKey: {win: "ctrl-o", mac: "ctrl-o"}, - exec: function(editor) { - fpath = aceSessions[currentSession]["fpath"] - sendMessage("open_file", "", "", fpath, ""); - }, - readOnly: true - }, { - name: "saveSession", - bindKey: {win: "ctrl-s", mac: "ctrl-s"}, - exec: function(editor) { - saveSession(currentSession); - }, - readOnly: true - }, { - name: "newSession", - bindKey: {win: "ctrl-t", mac: "ctrl-t"}, - exec: function(editor) { - newSession(); - }, - readOnly: true - }, { - name: "closeSession", - bindKey: {win: "ctrl-w", mac: "ctrl-w"}, - exec: function(editor) { - closeSession(currentSession); - }, - readOnly: true - }, { - name: "toggleLineHighlight", - bindKey: {win: "ctrl-h", mac: "ctrl-h"}, - exec: function(editor) { - toggleLineHighlight(); - }, - readOnly: true - }, { - name: "gotoDefinition", - bindKey: {win: "ctrl-g", mac: "ctrl-g"}, - exec: function(editor) { - console.log("Goto stub..."); - // lspProvider.$messageController.postMessage(Message(), callback); - }, - readOnly: true - }, { - name: "movelinesUp", - bindKey: {win: "ctrl-up", mac: "ctrl-up"}, - exec: function(editor) { - editor.execCommand("movelinesup"); - }, - readOnly: true - }, { - name: "movelinesDown", - bindKey: {win: "ctrl-down", mac: "ctrl-down"}, - exec: function(editor) { - editor.execCommand("movelinesdown"); - }, - readOnly: true - }, { - name: "tgglTopMainMenubar", - bindKey: {win: "ctrl-0", mac: "ctrl-0"}, - exec: function(editor) { - sendMessage("tggl_top_main_menubar", "", "", "", ""); - }, - readOnly: true - }, { - name: "zoomIn", - bindKey: {win: "ctrl-=", mac: "ctrl-="}, - exec: function(editor) { - zoomIn(); - }, - readOnly: true - }, { - name: "zoomOut", - bindKey: {win: "ctrl--", mac: "ctrl--"}, - exec: function(editor) { - zoomOut(); - }, - readOnly: true - }, { - name: "scrollUp", - bindKey: {win: "alt-up", mac: "alt-up"}, - exec: function(editor) { - editor.execCommand("scrollup"); - }, - readOnly: true - }, { - name: "scrollDown", - bindKey: {win: "alt-down", mac: "alt-down"}, - exec: function(editor) { - editor.execCommand("scrolldown"); - }, - readOnly: true - }, { - name: "launhLSP", - bindKey: {win: "ctrl-l", mac: "ctrl-l"}, - exec: function(editor) { - loadLSPManager(); - }, - readOnly: true - } - -]; \ No newline at end of file diff --git a/src/app/common/configs/keybindings.config.ts b/src/app/common/configs/keybindings.config.ts index 057e4cd..8df1b46 100644 --- a/src/app/common/configs/keybindings.config.ts +++ b/src/app/common/configs/keybindings.config.ts @@ -1,146 +1,100 @@ -export const Keybindings: Array = [ -// export const Keybindings: any = [ - // { - // name: "showSettingsMenu", - // bindKey: {win: "Ctrl-Shift-m", mac: "Ctrl-Shift-m"}, - // exec: () => { - // ace.config.loadModule("ace/ext/settings_menu", function(module) { - // module.init(editor); - // editor.showSettingsMenu(); - // }) - // } - // }, { - // name: "showKeyboardShortcuts", - // bindKey: {win: "ctrl-shift-h", mac: "command-shift-h"}, - // exec: () => { - // ace.config.loadModule("ace/ext/keybinding_menu", function(module) { - // module.init(editor); - // editor.showKeyboardShortcuts(); - // }) - // } - // }, { - // name: "openCommandPalette2", - // bindKey: {linux: "Command-Shift-/|F1", win: "Ctrl-Shift-/|F1"}, - // exec: () => { - // editor.execCommand("openCommandPalette"); - // } - // }, { - // name: "showLSPManager", - // bindKey: {win: "ctrl-m", mac: "command-m"}, - // exec: () => { - // $('//lsp-modal').modal("toggle"); - // } - // }, { - { - name: "search", - bindKey: {win: "ctrl-f", mac: "ctrl-f"}, - exec: () => { - // blockHigherNewtonEvePropigation = true; - // searchReplace.toggleShow(); - console.log("Search"); - }, - readOnly: true - } - // }, { - // name: "openFile", - // bindKey: {win: "ctrl-o", mac: "ctrl-o"}, - // exec: () => { - // fpath = aceSessions[currentSession]["fpath"] - // sendMessage("open_file", "", "", fpath, ""); - // }, - // readOnly: true - // }, { - // name: "saveSession", - // bindKey: {win: "ctrl-s", mac: "ctrl-s"}, - // exec: () => { - // saveSession(currentSession); - // }, - // readOnly: true - // }, { - // name: "newSession", - // bindKey: {win: "ctrl-t", mac: "ctrl-t"}, - // exec: () => { - // newSession(); - // }, - // readOnly: true - // }, { - // name: "closeSession", - // bindKey: {win: "ctrl-w", mac: "ctrl-w"}, - // exec: () => { - // closeSession(currentSession); - // }, - // readOnly: true - // }, { - // name: "toggleLineHighlight", - // bindKey: {win: "ctrl-h", mac: "ctrl-h"}, - // exec: () => { - // toggleLineHighlight(); - // }, - // readOnly: true - // }, { - // name: "gotoDefinition", - // bindKey: {win: "ctrl-g", mac: "ctrl-g"}, - // exec: () => { - // console.log("Goto stub..."); - // lspProvider.$messageController.postMessage(Message(), callback); - // }, - // readOnly: true - // }, { - // name: "movelinesUp", - // bindKey: {win: "ctrl-up", mac: "ctrl-up"}, - // exec: () => { - // editor.execCommand("movelinesup"); - // }, - // readOnly: true - // }, { - // name: "movelinesDown", - // bindKey: {win: "ctrl-down", mac: "ctrl-down"}, - // exec: () => { - // editor.execCommand("movelinesdown"); - // }, - // readOnly: true - // }, { - // name: "tgglTopMainMenubar", - // bindKey: {win: "ctrl-0", mac: "ctrl-0"}, - // exec: () => { - // sendMessage("tggl_top_main_menubar", "", "", "", ""); - // }, - // readOnly: true - // }, { - // name: "zoomIn", - // bindKey: {win: "ctrl-=", mac: "ctrl-="}, - // exec: () => { - // zoomIn(); - // }, - // readOnly: true - // }, { - // name: "zoomOut", - // bindKey: {win: "ctrl--", mac: "ctrl--"}, - // exec: () => { - // zoomOut(); - // }, - // readOnly: true - // }, { - // name: "scrollUp", - // bindKey: {win: "alt-up", mac: "alt-up"}, - // exec: () => { - // editor.execCommand("scrollup"); - // }, - // readOnly: true - // }, { - // name: "scrollDown", - // bindKey: {win: "alt-down", mac: "alt-down"}, - // exec: () => { - // editor.execCommand("scrolldown"); - // }, - // readOnly: true - // }, { - // name: "launhLSP", - // bindKey: {win: "ctrl-l", mac: "ctrl-l"}, - // exec: () => { - // loadLSPManager(); - // }, - // readOnly: true - // } - +export const Keybindings: Array<{}> = [ + { + name: "showSettingsMenu", + bindKey: {win: "Ctrl-Shift-m", mac: "Ctrl-Shift-m"}, + readOnly: false + }, { + name: "showKeyboardShortcuts", + bindKey: {win: "ctrl-shift-k", mac: "command-shift-k"}, + readOnly: false + }, { + name: "openCommandPalette", + bindKey: {linux: "Command-shift-/|F1", win: "ctrl-shift-/|F1"}, + readOnly: false + }, { + name: "showFilesModal", + bindKey: {win: "ctrl-b", mac: "ctrl-b"}, + service: "filesModalService", + readOnly: false + }, { + name: "showLSPModal", + bindKey: {win: "ctrl-shift-l", mac: "ctrl-shift-l"}, + readOnly: false + }, { + name: "search", + bindKey: {win: "ctrl-f", mac: "ctrl-f"}, + readOnly: true + }, { + name: "newSession", + bindKey: {win: "ctrl-t", mac: "ctrl-t"}, + readOnly: true + }, { + name: "destroySession", + bindKey: {win: "ctrl-w", mac: "ctrl-w"}, + readOnly: false + }, { + name: "openFiles", + bindKey: {win: "ctrl-o", mac: "ctrl-o"}, + readOnly: false + }, { + name: "saveFile", + bindKey: {win: "ctrl-s", mac: "ctrl-s"}, + readOnly: false + }, { + name: "saveFileAs", + bindKey: {win: "ctrl-shift-s", mac: "ctrl-shift-s"}, + readOnly: false + }, { + name: "selectSessionLeft", + bindKey: {win: "ctrl-pageup", mac: "ctrl-pageup"}, + readOnly: false + }, { + name: "selectSessionRight", + bindKey: {win: "ctrl-pagedown", mac: "ctrl-pagedown"}, + readOnly: false + }, { + name: "moveSessionLeft", + bindKey: {win: "ctrl-shift-up", mac: "ctrl-shift-up"}, + readOnly: false + }, { + name: "moveSessionRight", + bindKey: {win: "ctrl-shift-down", mac: "ctrl-shift-down"}, + readOnly: false + }, { + name: "cutToBuffer", + bindKey: {win: "ctrl-k", mac: "ctrl-k"}, + readOnly: false + }, { + name: "pasteCutBuffer", + bindKey: {win: "ctrl-u", mac: "ctrl-u"}, + readOnly: false + }, { + name: "movelinesUp", + bindKey: {win: "ctrl-up", mac: "ctrl-up"}, + readOnly: false + }, { + name: "movelinesDown", + bindKey: {win: "ctrl-down", mac: "ctrl-down"}, + readOnly: false + }, { + name: "duplicateLines", + bindKey: {win: "ctrl-d", mac: "ctrl-d"}, + readOnly: false + }, { + name: "zoomIn", + bindKey: {win: "ctrl-=", mac: "ctrl-="}, + readOnly: true + }, { + name: "zoomOut", + bindKey: {win: "ctrl--", mac: "ctrl--"}, + readOnly: true + }, { + name: "toggleLineHighlight", + bindKey: {win: "ctrl-h", mac: "ctrl-h"}, + readOnly: true + }, { + name: "gotoDefinition", + bindKey: {win: "ctrl-g", mac: "ctrl-g"}, + readOnly: true + } ]; \ No newline at end of file diff --git a/src/app/editor/newton-editor/newton-editor.base.ts b/src/app/editor/newton-editor/newton-editor.base.ts index f2b0950..eaa9445 100644 --- a/src/app/editor/newton-editor/newton-editor.base.ts +++ b/src/app/editor/newton-editor/newton-editor.base.ts @@ -34,14 +34,26 @@ export class NewtonEditorBase { this.editorElm.nativeElement.classList.remove("active-editor") } - public commander() { + public openCommandPalette() { this.editor.execCommand("openCommandPalette"); } + public showSettingsMenu() { + this.editor.showSettingsMenu(); + } + + public showKeyboardShortcuts() { + this.editor.showKeyboardShortcuts(); + } + protected search() { console.log(this.editor.session.getMode()["$id"]); } + protected destroySession() { + this.editor.session.destroy(); + } + protected openFiles() { let startDir = ""; if (this.activeFile) { diff --git a/src/app/editor/newton-editor/newton-editor.component.ts b/src/app/editor/newton-editor/newton-editor.component.ts index 4635a72..08cc388 100644 --- a/src/app/editor/newton-editor/newton-editor.component.ts +++ b/src/app/editor/newton-editor/newton-editor.component.ts @@ -3,6 +3,7 @@ import { Component } from "@angular/core"; // Import Ace and its modes/themes so that `ace` global is defined import * as ace from "ace-builds/src-noconflict/ace"; import "ace-builds/src-noconflict/ext-settings_menu"; +import "ace-builds/src-noconflict/ext-keybinding_menu"; import "ace-builds/src-noconflict/ext-command_bar"; import "ace-builds/src-noconflict/ext-language_tools"; import "ace-builds/src-noconflict/theme-one_dark"; @@ -54,138 +55,36 @@ export class NewtonEditorComponent extends NewtonEditorBase { this.editor = ace.edit( this.editorElm.nativeElement ); this.editor.setOptions( this.editorSettings.CONFIG ); - // this.editor.commands.addCommands( this.editorSettings.KEYBINDINGS ); - this.editor.commands.addCommands([ - { - name: "openCommandPalette2", - bindKey: {linux: "Command-shift-/|F1", win: "ctrl-shift-/|F1"}, - exec: () => { - this.commander(); - }, - readOnly: false - }, { - name: "search", - bindKey: {win: "ctrl-f", mac: "ctrl-f"}, - exec: () => { - this.search(); - }, - readOnly: true - }, { - name: "selectSessionLeft", - bindKey: {win: "ctrl-pageup", mac: "ctrl-pageup"}, - exec: () => { - this.selectSessionLeft(); - }, - readOnly: false - }, { - name: "selectSessionRight", - bindKey: {win: "ctrl-pagedown", mac: "ctrl-pagedown"}, - exec: () => { - this.selectSessionRight(); - }, - readOnly: false - }, { - name: "moveSessionLeft", - bindKey: {win: "ctrl-shift-up", mac: "ctrl-shift-up"}, - exec: () => { - this.moveSessionLeft(); - }, - readOnly: false - }, { - name: "moveSessionRight", - bindKey: {win: "ctrl-shift-down", mac: "ctrl-shift-down"}, - exec: () => { - this.moveSessionRight(); - }, - readOnly: false - }, { - name: "movelinesUp", - bindKey: {win: "ctrl-up", mac: "ctrl-up"}, - exec: () => { - this.movelinesUp(); - }, - readOnly: false - }, { - name: "movelinesDown", - bindKey: {win: "ctrl-down", mac: "ctrl-down"}, - exec: () => { - this.movelinesDown(); - }, - readOnly: false - }, - { - name: "duplicateLines", - bindKey: {win: "ctrl-d", mac: "ctrl-d"}, - exec: () => { - this.duplicateLines(); - }, - readOnly: false - }, { - name: "zoomIn", - bindKey: {win: "ctrl-=", mac: "ctrl-="}, - exec: () => { - this.zoomIn(); - }, - readOnly: true - }, { - name: "zoomOut", - bindKey: {win: "ctrl--", mac: "ctrl--"}, - exec: () => { - this.zoomOut(); - }, - readOnly: true - }, { - name: "cutToBuffer", - bindKey: {win: "ctrl-k", mac: "ctrl-k"}, - exec: () => { - this.cutToBuffer(); - }, - readOnly: false - }, { - name: "pasteCutBuffer", - bindKey: {win: "ctrl-u", mac: "ctrl-u"}, - exec: () => { - this.pasteCutBuffer(); - }, - readOnly: false - }, { - name: "destroySession", - bindKey: {win: "ctrl-w", mac: "ctrl-w"}, - exec: () => { - this.editor.session.destroy(); - }, - readOnly: false - }, { - name: "openFiles", - bindKey: {win: "ctrl-o", mac: "ctrl-o"}, - exec: () => { - this.openFiles(); - }, - readOnly: false - }, { - name: "saveFile", - bindKey: {win: "ctrl-s", mac: "ctrl-s"}, - exec: () => { - this.saveFile(); - }, - readOnly: false - }, { - name: "saveFileAs", - bindKey: {win: "ctrl-shift-s", mac: "ctrl-shift-s"}, - exec: () => { - this.saveFileAs(); - }, - readOnly: false - }, { - name: "showModal", - bindKey: {win: "ctrl-b", mac: "ctrl-b"}, - exec: () => { - this.filesModalService.showFilesModal(); - }, - readOnly: false - } - ]); + let keyBindings = []; + for (let i = 0; i < this.editorSettings.KEYBINDINGS.length; i++) { + let keyBinding = this.editorSettings.KEYBINDINGS[i]; + keyBindings.push( + { + name: keyBinding.name, + bindKey: keyBinding.bindKey, + exec: (keyBinding.name && keyBinding?.service) ? + () => ( + this[keyBinding?.service][keyBinding.name]() + ) + : + (this[keyBinding.name]) ? + () => ( + this[keyBinding.name]() + ) + : + () => ( + console.log( + `Name: ${keyBinding.name}, is not mapping to a method OR mapping to a Service: ${keyBinding?.service} and Name: ${keyBinding.name}.` + ) + ) + , + readOnly: keyBinding.readOnly + } + ); + } + + this.editor.commands.addCommands( keyBindings ); // Note: https://ajaxorg.github.io/ace-api-docs/interfaces/ace.Ace.EditorEvents.html this.editor.on("focus", (e) => {