2

我正在尝试编写一个函数,它将:

  1. 如果没有选择区域,则终止当前行。
  2. 如果选择了一个区域,则终止点和标记之间的矩形。

(2) 我的意思是如果你运行 Mx kill-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-rectangle采用startandend顺序,因此您的代码仅在 point < 标记时才有效。

做这种事情的典型方法是给你的函数startend参数,然后使用(interactive "r").

于 2012-06-26T23:24:29.540 回答