smzht / fakeymacs

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

拡張選択(expand selection)を実装したい #21

Closed DaikiSuganuma closed 2 years ago

DaikiSuganuma commented 2 years ago

Visual Studio Codeなどにある拡張選択の機能を他のアプリケーションでも実装できればと思っております。

Visual Studio Codeのexpand selectionの説明はこちら。 https://code.visualstudio.com/docs/editor/codebasics

簡易的に

self_insert_command("C-Left", "C-S-Right")()

で単語を選択できるようにしておりますが、行先頭や文字先頭だとうまく機能しません。 カーソル位置の左右にある文字を取得するにはどうしたらよいでしょうか?

smzht commented 2 years ago

次のようにすると、少し良いかもしれません。

self_insert_command("C-Right", "C-Left", "C-S-Right")()
DaikiSuganuma commented 2 years ago

お返事ありがとうございます! 少し改善しました。

さらに次のようにできればと思っております。

このプログラムを書くために下記可能でしょうか?

smzht commented 2 years ago

カーソル位置の左右の文字の取得は、文字を選択して C-c でクリップボードに取り込み、getClipboardText 関数により取り出せます。でも、後処理などいろいろ操作が必要になると思います。

また、選択状態かは fakeymacs.forward_direction 変数の値で判断できます。None で「未選択」、True で forward 方向にカーソルを動かしての「選択」、False で backward 方向にカーソルを動かしての「選択」です。キーボードで選択操作を行った時のみ設定される変数であり、マウスで選択した場合には設定されません。

以上、お試しください。

DaikiSuganuma commented 2 years ago

ご回答ありがとうございます! 簡単に実現できればと思ってましたが、しばらくは簡易的な選択で様子をみたいと思います。 お手数をおかけしました。