2

次のような関数を作成しようとしています。

  1. リージョンが選択されていない場合は、現在の行を強制終了します。
  2. 領域が選択されている場合は、ポイントとマークの間の長方形を削除します。

(2)とは、Mxkill-rectangleを実行した場合に発生するのと同じことを意味します。

この関数での私の試みは次のとおりです。

(defun cut-line-or-rectangle ()
  "Cut rectangle if selection exists, cut line otherwise"
  (interactive)
  (if mark-active
      (kill-rectangle (point) (mark))
    (kill-whole-line)
  )
)

これは(1)を満たしますが、リージョンがアクティブな場合は何もしません。この状況でemacsをkill-rectangle関数に従わせるにはどうすればよいですか?

4

1 に答える 1

5

kill-rectanglestartとその順序でとるendので、コードはポイント < マークの場合にのみ機能します。

この種のことを行う典型的な方法は、関数startend引数を与えてから を使用すること(interactive "r")です。

于 2012-06-26T23:24:29.540 に答える