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

mje*_*mje 2 emacs elisp

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

  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)
  )
)
Run Code Online (Sandbox Code Playgroud)

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

phi*_*ils 5

kill-rectangle需要startend的顺序,那么你的代码只能在点<大关.

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