我试图通过编写一些简单的宏来学习Emacs和eLisp。这是其中之一:
(global-set-key (kbd "C-c d") 'local-delete-line)
(defun local-delete-line ()
"deletes 1 line"
(interactive)
(beginning-of-line)
(set-mark-command)
(next-line)
(delete-region))
不幸的是,在触发C-c d
(或我global-set-key
设置的任何其他热键)之后,Emacs会回复:
任何可能导致这种情况的想法?
要进行问题排查,我已删除了我的整个.emacs
文件,创建了一个空文件,并且我只添加了local-delete-line
函数的定义以及{{1}命令。调用函数时,Emacs仍会产生垃圾。
答案 0 :(得分:3)
首先阅读set-mark-command
(C-h f set-mark-command
)的文档。看看它没有在您编写的代码中设置标记的内容。查看需要多少参数。
阅读delete-region
的文档:需要两个参数。
执行M-: (setq debug-on-error t)
,然后尝试您的食谱。回溯缓冲区会告诉你你做错了什么。
说明你要做的是什么。到目前为止,您似乎只想删除或删除一行。如果是这样,C-k
会出现什么问题?