smzht / fakeymacs

Emacs-like key bindings for Keyhac
MIT License
112 stars 49 forks source link

VSCode用のキー定義が元のキー定義を殺してしまっている #8

Closed gotoh closed 3 years ago

gotoh commented 3 years ago

config.pyではL1635付近で数字キーの周りのキー定義をしています。 https://github.com/smzht/fakeymacs/blob/e6a72d24632d2037dd0ccb6870343da23618e63b/config.py#L1635-L1640

ですが、もっと後ろのVSCode用のキー定義でCTRL+数字の定義を上書きしてしまっています。 https://github.com/smzht/fakeymacs/blob/e6a72d24632d2037dd0ccb6870343da23618e63b/config.py#L1853-L1854

少なくともこの数字キーの定義はオプショナルとするかVSCode専用のキーマップを導入する 方向のほうが良いのではないでしょうか。

switch_focus() は 非 isVscodeTarget() == Falseな場合なにも行われていないので キー入力が捨てられてしまっています。詳細ログでいうとINしたキーに対してVScode以外では THUもOUTも発生させないという定義になってしまっています。 その他のvs_code用のメソッドも同様。

TyporaでC+2といったショートカットが使えないため悩みました。 とりあえずは config_personal.py にて当該キーを再定義することで回避しています。

# [section-base-2] ---------------------------------------------------------------------------------

## CTRL+数字キーの再設定
for n in range(10):
    key = str(n)
    if fc.use_ctrl_digit_key_for_digit_argument:
        define_key(keymap_emacs, "C-" + key, digit2(n))
    else:
        define_key(keymap_emacs, "C-" + key, reset_undo(reset_counter(reset_mark(repeat(self_insert_command2("C-" + key))))))
smzht commented 3 years ago

指摘いただき、ありがとうございます。問題を確認しました。 今週末、対策について検討します。VSCode用のキーバインドを専用のキーマップにして、 拡張機能に逃がす方法などもあるかと思っていました。 以上、よろしくお願いします。

smzht commented 3 years ago

develop branch に見直した実装をコミットしました。確認ください。 https://github.com/smzht/fakeymacs/tree/develop しばらくテストしてみて問題なければ master branch にマージしたいと思います。

smzht commented 3 years ago

VSCode 周りの実装は、拡張機能 vscode_key に移管しました。 https://github.com/smzht/fakeymacs/tree/develop/fakeymacs_extensions/vscode_key

smzht commented 3 years ago

問題なさそうなので、master branch にマージしました。 https://github.com/smzht/fakeymacs/commit/b3532670d9f6e8aa2f75b1c8ce8e7a8aacc3d6cd

gotoh commented 3 years ago

対策ありがとうございます。 「当該キーを再定義することで回避」をしなくても C-の動作が実現できていることを確認しましたのでクローズします。