|
こんにちは。
Tabキーで空白4文字を入力する設定で使用しており、
行頭の空白のみが入力された位置でBackspaceを押した際、
空白1文字ずつではなく、タブストップの位置までまとめて
削除するようにしたいと思っています
(VimのsmarttabやSublime Textのような動作)。
そこで、添付のBackspace.macを作って、キー割り当て拡張でBkspに割り当てました。
やりたかったことは実現できましたが、
IMEで直前に確定した文字列を確定アンドゥ(Ctrl+Backspace)で編集する際、
IMEから送信されるBackspaceが1回分しか認識されず、
2文字以上前の確定済みの文字列が残ってしまいます。
キー入力:あいうえお[Enter][Ctrl+Backspace]
期待する動作:【あいうえお】
実際の動作:あいうえ【あいうえお】
(【 】で未確定の文字列を示します。)
マクロの内容には特に関係ないようですので、
単に「backspace;」と書いたマクロを割り当てた場合でも再現できます。
上記のような場合、IMEから送信されたキーの回数分のマクロを実行する方法は
あるでしょうか?
また、別の問題で、EOF直前の行を選択している際、
自分は[↓]キーで選択解除をするのですが、
他のエディターと違い、秀丸では選択解除されません。
----- 選択状態の例 -----
a
b
【c
】[EOF]
----------
こちらも添付のDown.macをDownに割り当てて使用しており、
特に問題はありませんが、いずれ標準の動作でも実現できるようになると
ありがたいです。
環境は次のようになります。
Windows 7 Home Premium
ATOK 2014, MS-IMEの両方で確認
秀丸エディタ8.51
入力モード トゥルーインライン入力、通常のインライン入力の両方で確認
----- Backspace.mac -----
if (selecting || (!column))
backspace;
else {
$left = gettext2(0, lineno, column, lineno);
#re = loaddll("HMJRE.DLL");
#r = dllfunc(#re, "FindRegular", "[^ \t]", $left, 0);
if (#r != -1)
backspace;
else {
#col = column;
backtab;
beginsel;
moveto2 #col, lineno;
endsel;
backspace;
}
}
----------
----- Down.mac -----
if (code == -1)
right;
else
down;
----------
|
|