从交互式函数内部调用kill-rectangle

时间:2012-06-26 23:05:33

标签: emacs elisp

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

  1. 如果没有选择区域,则终止当前行。
  2. 如果选择了某个区域,则在点和标记之间删除矩形。
  3. 通过(2)我的意思是如果你运行M-x 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)
      )
    )
    

    此fullfils(1)但如果某个区域处于活动状态则不执行任何操作。在这种情况下,如何让emacs服从kill-rectangle函数?

1 个答案:

答案 0 :(得分:5)

kill-rectangle按此顺序选择startend,因此您的代码仅在点<标记

执行此类操作的典型方法是提供函数startend参数,然后使用(interactive "r")