C-Space
+矢印キーを動かすだけで、elispでは同じ動作をしたいと思います。プログラムで領域を選択する
(名前空間に論理的にグループ化されていたり、何らかの形でタグ付けされている場合)正しい関数を見つけることができません。どちらですか?
C-Space
+矢印キーを動かすだけで、elispでは同じ動作をしたいと思います。プログラムで領域を選択する
(名前空間に論理的にグループ化されていたり、何らかの形でタグ付けされている場合)正しい関数を見つけることができません。どちらですか?
C-h k キーを使用して、キーストロークをelispに変換できます。
set-mark-command
というマークを設定するためのelisp関数には、オプションではない引数が1つあります。 Emacsは特別なinteractive
関数を使用して、elisp関数を引数で自然に書くことができます。これにより、他のelispプログラムで汎用的で再利用が容易になり、キーストロークから直接呼び出すことも可能です。また、C-uプレフィクスロジックが組み込まれています。
set-mark-command
の場合、その最初の機能は(interactive "P")
です。これは、キーボードから呼び出されたときに接頭辞が引数として渡されることを意味します。あなたが最後にまたは他のアクティブなマークを残すためにEmacsに指示する必要があり
(defun my-select-current-line()
(interactive)
(move-beginning-of-line nil)
(set-mark-command nil)
(move-end-of-line nil)
(setq deactivate-mark nil))
注:現在のelispの中の行を選択するために、例えば
(set-mark-command nil)
:あなたはとelispの中でこれを直接シミュレートすることができますリージョンはハイライト表示されません(ただし、ポイントとマークは、それらを去った場所になります)。
あなたは次のように、コードをLISPのemacsにプッシュマークを使用する必要があります。
(defun mark-n (n)
"Programmtically mark the next N lines"
(interactive "nNum lines to mark: ")
(push-mark)
(next-line n))
をこの追加情報は、他の誰かに使用である念のために、私は次を見つけた:
(point)
と(mark)
のそれぞれの位置を取得するので、たとえば(set-mark (+ 5 (mark)))
を実行できます。
ポイントを行の終わりに設定して '(set-mark-command 0)'を実行すると、ポイントは移動しますがマークは移動せず、何も選択されません。私は何が欠けていますか?ありがとうございました。 – vemv
領域の先頭にマークを設定し、ポイントを最後まで移動します。また、argは実際にはゼロではなくnilでなければなりません。私は例で私の答えを更新しました。 – ataylor
機能は動作します(ありがとう!)私は視覚的なフィードバックを得ていません。つまり、 'deactivate-mark'は違いがないようです。とにかく私の特定の目的のために重要ではない。 – vemv