diff --git a/README.md b/README.md index aa70fd30..f29d1c78 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ - Image viewer - Quick access: frequently access folders are pin to the homepage - Stateless -- Emacs keybindings `;)` +- Emacs, VIM or Sublime keybindings `;)` # Screenshots

diff --git a/client/pages/viewerpage/editor.js b/client/pages/viewerpage/editor.js index 604e3e36..1dd698bd 100644 --- a/client/pages/viewerpage/editor.js +++ b/client/pages/viewerpage/editor.js @@ -50,7 +50,8 @@ export class Editor extends React.Component { }); - this.loadMode(this.props.filename) + this.loadKeybinding() + .then(() => this.loadMode(this.props.filename)) .then((res) => new Promise((done) => this.setState({loading: false}, () => done(res)))) .then(loadCodeMirror.bind(this)) .then(() => { @@ -96,7 +97,7 @@ export class Editor extends React.Component { value: this.props.content, lineNumbers: true, mode: mode, - keyMap: config.god_editor_mode ? "emacs" : "default", + keyMap: config.editor, lineWrapping: true, foldOptions: { widget: "..." @@ -194,6 +195,13 @@ export class Editor extends React.Component { .then((module) => Promise.resolve([module.default, mode: mode])); } + loadKeybinding(){ + if(config.editor === "emacs" || !config.editor){ + return Promise.resolve(); + } + return import(/* webpackChunkName: "editor" */'./editor/keymap_'+config.editor); + } + render() { return (

diff --git a/client/pages/viewerpage/editor/keymap_sublime.js b/client/pages/viewerpage/editor/keymap_sublime.js new file mode 100644 index 00000000..b110dbbf --- /dev/null +++ b/client/pages/viewerpage/editor/keymap_sublime.js @@ -0,0 +1 @@ +import 'codemirror/keymap/sublime.js'; diff --git a/client/pages/viewerpage/editor/keymap_vim.js b/client/pages/viewerpage/editor/keymap_vim.js new file mode 100644 index 00000000..5f8b1d57 --- /dev/null +++ b/client/pages/viewerpage/editor/keymap_vim.js @@ -0,0 +1 @@ +import 'codemirror/keymap/vim.js'; diff --git a/config_client.js b/config_client.js index 1961a11c..d4114634 100644 --- a/config_client.js +++ b/config_client.js @@ -1,5 +1,6 @@ module.exports = { - god_editor_mode: true, + // editor keybinding can be either: "sublime", "emacs", "vim" + editor: "emacs", fork_button: true, search: { enable: true,