1
我写了一个elisp函数来复制当前行,如果没有选择区域,但它不适用于emacs 24.5。当我点击“M-w”键击时,在小缓冲区中出现“Mark set”消息。我错过了什么?这个elisp函数有什么问题?
(defun copy-region-or-current-line (beg end)
"copy current if no region selected, copy the region otherwise"
(interactive "r")
(let ((cur-pos (point)))
(if (region-active-p)
(kill-ring-save beg end)
(progn
(kill-whole-line)
(yank)
(goto-char cur-pos)))))
(global-set-key (kbd "M-w") 'copy-region-or-current-line)
作为一般的注脚,许多交互式命令不建议作为功能在自己的elisp打电话,是考虑的这些副作用 - 命令执行某些事情(如设置标记)是常见的,这些事情在交互式上下文中很有用,但并非真正需要的。在某些情况下,命令的文档字符串会指出您应该使用什么,因此很好意识到这一点。 – phils