キーマップの削除
通常、Atomのキーバインドを削除するにはkeymap.cson
にてunset!
と書く。
keymap.cson
"atom-text-editor:not([mini])":
"tab": "unset!"
この場合、ユーザー自身でCoreのキーバインドを削除する分にはいいが、パッケージでCoreのキーバインドを変更したい場合、keymaps/[package].cson
に書いてしまうと顰蹙もののように思える。
README.md
に書いてユーザーに設定を促すのもひとつの方法だと思うが、プログラムで制御してオプションのオン/オフでキーバインドの変更が出来ると便利ではないだろうか。
キーマップを扱うには?
キーマップを扱うKeymapManager
オブジェクトにはatom.keymaps
でアクセスできる。
キーマップを追加するにはatom.keymaps.add
メソッドを利用するが、削除はどうするのだろうか?
例のごとくAtomのソースコードを彷徨っているとmenu-manager-spec.coffeeにこのような記載があった。
menu-manager-spec.coffee
atom.keymaps.add 'test', 'atom-text-editor': 'ctrl-b': 'unset!'
keymap.cson
に書くときと同じようにunset!
を渡せばよいようだ。
試しにデベロッパーツールのコンソールから下記の通り実行してテキストエディターでタブキーを押すとeditor:indent
ではなくcore:focus-next
が実行されてフォーカスがどこかに飛んでいった。
atom.keymaps.add("Core", {"atom-text-editor:not([mini])": {"tab": "unset!"}});