diff --git a/README.md b/README.md index 2919c8c..45925f1 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,15 @@ Or in Atom: There's no need to restart Atom. +Use shift-ctrl-space to activate/deactivate emacs key bindings. + +There is a setting to control whether emacs bindings are active when Atom starts. + ## Commands +### Activation + 'shift-ctrl-space': 'atomic-emacs:toggle' + ### Navigation 'ctrl-b': 'atomic-emacs:backward-char' diff --git a/keymaps/atomic-emacs.cson b/keymaps/atomic-emacs.cson index b13004b..afc930a 100644 --- a/keymaps/atomic-emacs.cson +++ b/keymaps/atomic-emacs.cson @@ -1,4 +1,7 @@ 'atom-workspace': + 'shift-ctrl-space': 'atomic-emacs:toggle' + +'atom-workspace.atomic-emacs': 'ctrl-g': 'core:cancel' 'alt-x': 'command-palette:toggle' 'ctrl-x ctrl-c': 'application:quit' @@ -11,28 +14,28 @@ 'ctrl-x 1': 'atomic-emacs:close-other-panes' 'ctrl-x o': 'window:focus-next-pane' -'body.platform-darwin': +'body.platform-darwin .atomic-emacs': 'cmd-x': 'atomic-emacs:cut' 'cmd-c': 'atomic-emacs:copy' -'body.platform-linux': +'body.platform-linux .atomic-emacs': 'shift-delete': 'atomic-emacs:cut' 'ctrl-insert': 'atomic-emacs:copy' 'ctrl-x': 'atomic-emacs:cut' 'ctrl-c': 'atomic-emacs:copy' # For command palette, buffer switcher, etc. on Linux. -'body.platform-linux .select-list atom-text-editor.mini': +'body.platform-linux .atomic-emacs .select-list atom-text-editor.mini': 'ctrl-p': 'core:move-up' 'ctrl-n': 'core:move-down' -'body.platform-win32': +'body.platform-win32 .atomic-emacs': 'shift-delete': 'atomic-emacs:cut' 'ctrl-insert': 'atomic-emacs:copy' 'ctrl-x': 'atomic-emacs:cut' 'ctrl-c': 'atomic-emacs:copy' -'atom-workspace atom-text-editor': +'atom-workspace.atomic-emacs atom-text-editor': # Navigation 'ctrl-b': 'atomic-emacs:backward-char' 'left': 'atomic-emacs:backward-char' @@ -107,7 +110,7 @@ 'ctrl-x ctrl-w': 'core:save-as' 'alt-.': 'symbols-view:go-to-declaration' -'atom-text-editor:not(.autocomplete-active):not(.mini)': +'.atomic-emacs atom-text-editor:not(.autocomplete-active):not(.mini)': # Navigation 'ctrl-p': 'atomic-emacs:previous-line' 'up': 'atomic-emacs:previous-line' @@ -126,12 +129,12 @@ 'ctrl-d': 'core:delete' 'ctrl-e': 'editor:move-to-end-of-screen-line' -'.platform-linux atom-workspace atom-text-editor:not([mini]), - .platform-win32 atom-workspace atom-text-editor:not([mini])': +'.platform-linux atom-workspace.atomic-emacs atom-text-editor:not([mini]), + .platform-win32 atom-workspace.atomic-emacs atom-text-editor:not([mini])': 'ctrl-j': 'editor:newline' -'.platform-linux atom-workspace atom-text-editor:not(.autocomplete-active):not([mini]), - .platform-win32 atom-workspace atom-text-editor:not(.autocomplete-active):not([mini])': +'.platform-linux atom-workspace.atomic-emacs atom-text-editor:not(.autocomplete-active):not([mini]), + .platform-win32 atom-workspace.atomic-emacs atom-text-editor:not(.autocomplete-active):not([mini])': 'ctrl-/': 'core:undo' '.platform-win32 atom-workspace.atomic-emacs atom-text-editor': @@ -139,42 +142,42 @@ 'ctrl-e': 'editor:move-to-end-of-screen-line' 'ctrl-k ctrl-k': 'editor:cut-to-end-of-line' -'atom-workspace .find-and-replace atom-text-editor': +'atom-workspace.atomic-emacs .find-and-replace atom-text-editor': 'ctrl-s': 'find-and-replace:confirm' 'ctrl-r': 'find-and-replace:show-previous' -'.go-to-line atom-text-editor[mini] input': +'.atomic-emacs .go-to-line atom-text-editor[mini] input': 'ctrl-g': 'core:cancel' -'.tree-view-dialog atom-text-editor[mini]': +'.atomic-emacs .tree-view-dialog atom-text-editor[mini]': 'ctrl-g': 'core:cancel' -'atom-panel.left, atom-panel.right': +'.atomic-emacs atom-panel.left, atom-panel.right': 'ctrl-g': 'tool-panel:unfocus' -'.platform-linux atom-workspace, .platform-win32 atom-workspace': +'.platform-linux atom-workspace.atomic-emacs, .platform-win32 atom-workspace.atomic-emacs': 'alt-g g': 'go-to-line:toggle' 'alt-g alt-g': 'go-to-line:toggle' 'ctrl-g': 'core:cancel' -'.platform-win32 .go-to-line atom-text-editor[mini] input': +'.platform-win32 .atomic-emacs .go-to-line atom-text-editor[mini] input': 'ctrl-g': 'core:cancel' -'.platform-darwin': +'.platform-darwin .atomic-emacs': 'alt-g g': 'go-to-line:toggle' 'alt-g alt-g': 'go-to-line:toggle' 'ctrl-g': 'core:cancel' -'.platform-darwin .go-to-line atom-text-editor[mini] input': +'.platform-darwin .atomic-emacs .go-to-line atom-text-editor[mini] input': 'ctrl-g': 'core:cancel' -'atom-text-editor.autocomplete-active': +'.atomic-emacs atom-text-editor.autocomplete-active': 'ctrl-g': 'autocomplete-plus:cancel' -'atom-text-editor !important, atom-text-editor[mini] !important': +'.atomic-emacs atom-text-editor !important, .atomic-emacs atom-text-editor[mini] !important': 'ctrl-g': 'editor:consolidate-selections' -'atom-workspace .atomic-emacs.search atom-text-editor': +'atom-workspace.atomic-emacs .atomic-emacs.search atom-text-editor': 'enter': 'atomic-emacs:isearch-exit' 'ctrl-m': 'atomic-emacs:isearch-exit' 'escape': 'atomic-emacs:isearch-cancel' diff --git a/lib/atomic-emacs.coffee b/lib/atomic-emacs.coffee index e5a387f..ced574b 100644 --- a/lib/atomic-emacs.coffee +++ b/lib/atomic-emacs.coffee @@ -50,6 +50,10 @@ module.exports = State: State config: + aastartWithEmacsBindings: + type: 'boolean', + default: true, + title: 'Turn on emacs bindings when Atom starts' useAdvancedOpenFile: type: 'boolean', default: true, @@ -78,11 +82,14 @@ module.exports = State.initialize() @search = new SearchManager(plugin: @) - document.getElementsByTagName('atom-workspace')[0]?.classList?.add('atomic-emacs') + if atom.config.get('atomic-emacs.aastartWithEmacsBindings') + document.getElementsByTagName('atom-workspace')[0]?.classList?.add('atomic-emacs') @disposable = new CompositeDisposable @disposable.add atom.commands.onWillDispatch (event) -> beforeCommand(event) @disposable.add atom.commands.onDidDispatch (event) -> afterCommand(event) @disposable.add atom.commands.add 'atom-text-editor', + # Activation + "atomic-emacs:toggle": (event) -> atom.workspace.element.classList.toggle('atomic-emacs') # Navigation "atomic-emacs:backward-char": (event) -> getEditor(event).backwardChar() "atomic-emacs:forward-char": (event) -> getEditor(event).forwardChar() diff --git a/package.json b/package.json index 44d8325..1817e78 100644 --- a/package.json +++ b/package.json @@ -1,68 +1,8 @@ { "name": "atomic-emacs", "main": "./lib/atomic-emacs", - "version": "0.15.0", + "version": "0.15.1", "description": "An atomic implementation of emacs keybindings", - "activationCommands": { - "atom-text-editor": [ - "atomic-emacs:backward-char", - "atomic-emacs:forward-char", - "atomic-emacs:backward-word", - "atomic-emacs:forward-word", - "atomic-emacs:backward-sexp", - "atomic-emacs:forward-sexp", - "atomic-emacs:backward-list", - "atomic-emacs:forward-list", - "atomic-emacs:previous-line", - "atomic-emacs:next-line", - "atomic-emacs:backward-paragraph", - "atomic-emacs:forward-paragraph", - "atomic-emacs:back-to-indentation", - "atomic-emacs:backward-kill-word", - "atomic-emacs:kill-word", - "atomic-emacs:kill-line", - "atomic-emacs:kill-region", - "atomic-emacs:copy-region-as-kill", - "atomic-emacs:append-next-kill", - "atomic-emacs:yank", - "atomic-emacs:yank-pop", - "atomic-emacs:yank-shift", - "atomic-emacs:cut", - "atomic-emacs:copy", - "atomic-emacs:delete-horizontal-space", - "atomic-emacs:delete-indentation", - "atomic-emacs:open-line", - "atomic-emacs:just-one-space", - "atomic-emacs:transpose-chars", - "atomic-emacs:transpose-words", - "atomic-emacs:transpose-lines", - "atomic-emacs:downcase-word-or-region", - "atomic-emacs:upcase-word-or-region", - "atomic-emacs:capitalize-word-or-region", - "atomic-emacs:dabbrev-expand", - "atomic-emacs:dabbrev-previous", - "atomic-emacs:isearch-forward", - "atomic-emacs:isearch-backward", - "atomic-emacs:isearch-exit", - "atomic-emacs:isearch-cancel", - "atomic-emacs:isearch-repeat-forward", - "atomic-emacs:isearch-repeat-backward", - "atomic-emacs:isearch-toggle-case-fold", - "atomic-emacs:isearch-toggle-regexp", - "atomic-emacs:isearch-yank-word-or-character", - "atomic-emacs:set-mark", - "atomic-emacs:mark-sexp", - "atomic-emacs:mark-whole-buffer", - "atomic-emacs:exchange-point-and-mark", - "atomic-emacs:recenter-top-bottom", - "atomic-emacs:scroll-down", - "atomic-emacs:scroll-up" - ], - "atom-workspace": [ - "atomic-emacs:find-file", - "atomic-emacs:close-other-panes" - ] - }, "consumedServices": { "file-icons.element-icons": { "versions": {