トランジェントマークモードがアクティブなときのEmacsの通常の動作は、シフト選択を行うと、次のコマンドが非シフト移動の場合、マークが非アクティブ化されることです。たとえば、コマンドM-l(現在の行を以下の関数でC-fマークする)との後、マークは無効になります。後にelispからその動作をエミュレートするにはどうすればよい(set-mark-command nil)ですか?
例えば:
(defun my-mark-current-line ()
(interactive)
(beginning-of-line)
(set-mark-command nil)
(end-of-line)
(forward-char))
(global-set-key (kbd "M-l") 'my-mark-current-line)
ここでMl Cfを実行すると、領域が拡大しますが、代わりにデフォルトの動作、つまりCfのときに領域を非アクティブ化し、CSfで拡大します。
編集:これを可能にするset-mark-commandとは異なる関数を使用する必要がありますか?何も見つかりませんでした。
また、実行したラッパーとバインディングは、
—
Kaushal Modi、
C-f使用する他のすべてのナビゲーションコマンドにも適用されます。
btw
—
Kaushal Modi
C-fafter M-lは、末尾にアクティブなリージョンがないため、リージョンを拡張しませんM-l(downcase-wordデフォルトでバインドされています)。
私はと思い@KaushalModi
—
nispio
M-lOPによって参照すること(結合デフォルトではありませんdowncase-word)が、結合のカスタムmy-mark-current-line
確かに@nispio。
—
mikl 2016年
C-S-fは、C-SPC(領域のアクティブ化)+C-f(ナビゲーション)に類似しています。おそらくC-f、アクティブな場合は最初に領域を非アクティブ化し、次に何をするかを続行するラッパー関数にバインドすることで、必要なものを取得できますC-f(forward-char); にC-S-f直接バインドしforward-charます。注あなたはターミナルモードではemacsを使用し、その場合C-fとC-S-fの両方動作しますC-f端末としては、2つを区別することはできません。