whitphx/vscode-emacs-mcx

Workaround for text boxes

ganaware opened this issue · 2 comments

概要

  • VSCode のテキストボックスのキーバインドはカスタマイズができません
  • そのため、テキストボックスで Emacs 的な操作をすると思わぬ結果になります
  • 思わぬ結果になるよりは、何も起こらないように無効にしておいたほうが良いのではないかと思います。

VSCode のテキストボックスの現状

VSCode では、現在のところテキストボックスでのキーバインディングのカスタマイズはほとんどできません。

そのため、テキストボックスでのキーバインディングはほとんどデフォルトの動作をします。

  • Windows ではデフォルトのキーバインディングは Emacs とは割と異なります
  • macOS での事情はわかりませんが、おそらく割と Emacs と似ているのではないかと思います
  • Linux での事情もわかりません

このような事情なので、Windows 特有の問題といえると思います。

Windows での例

例えば Search View (メニューの View ⇒ Search) を開いて、
左上の検索文字列を入力する欄に文字を入力している際に、

  • C-b を押すと
    • 期待すること: カーソルが左へ動く
    • 実際に起こること: Search View が閉じる
  • C-f を押すと
    • 期待すること: カーソルが右へ動く
    • 実際に起こること: Find Widget が表示される

といった、期待とはかけ離れたことが起こります。

Workaround

期待とはかけ離れたことが起こるよりは、何も起こらない方が都合が良いと思います。

そこで、テキストボックスで自然と行ってしまいがちな Emacs 的操作について、Windows では動作しないような設定をすると良いのではないでしょうか?

[
    {
        "key": "ctrl+f",
        "when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
    },
    {
        "key": "ctrl+b",
        "when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
    },
    {
        "key": "ctrl+a",
        "when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
    },
    {
        "key": "ctrl+e",
        "when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
    },
    {
        "key": "alt+f",
        "when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
    },
    {
        "key": "alt+b",
        "when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
    },
    {
        "key": "ctrl+d",
        "when": "isWindows && inputFocus && !textInputFocus",
    },
    {
        "key": "ctrl+h",
        "when": "isWindows && inputFocus && !textInputFocus",
    },
    {
        "key": "alt+d",
        "when": "isWindows && inputFocus && !textInputFocus",
    },
    {
        "key": "ctrl+k",
        "when": "isWindows && inputFocus && !textInputFocus",
    },
    {
        "key": "ctrl+w",
        "when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
    },
    {
        "key": "alt+w",
        "when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
    },
    {
        "key": "ctrl+y",
        "when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
    },
    {
        "key": "alt+y",
        "when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
    },
    {
        "key": "ctrl+m",
        "when": "isWindows && inputFocus && !textInputFocus",
    },
    {
        "key": "ctrl+j",
        "when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
    },
    {
        "key": "alt+l",
        "when": "isWindows && inputFocus && !textInputFocus",
    },
    {
        "key": "alt+u",
        "when": "isWindows && inputFocus && !textInputFocus",
    },
    {
        "key": "alt+backspace",
        "when": "isWindows && inputFocus && !textInputFocus",
    }
]

ありがとうございます、検討させていただきます。

長らく放置してしまいすみません。
#755 でこの修正をして、次のリリースに含めます。