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