【发布时间】:2014-03-04 09:59:45
【问题描述】:
我将以下代码添加到我的.emacs 文件中。
(defun delete-right-window ()
(interactive)
(windmove-right)
(delete-window))
(defun delete-left-window ()
(interactive)
(windmove-left)
(delete-window))
(defun delete-below-window ()
(interactive)
(windmove-down)
(delete-window))
(defun delete-above-window ()
(interactive)
(windmove-up)
(delete-window))
(global-set-key (kbd "C-s-<right>") 'delete-right-window)
(global-set-key (kbd "C-s-<left>") 'delete-left-window)
(global-set-key (kbd "C-s-<down>") 'delete-below-window)
(global-set-key (kbd "C-s-<up>") 'delete-above-window)
如您所见,大部分代码都是重复的。
我阅读了How do I pass a function as a parameter to in elisp? 并尝试将代码重构为传递windmove-* 函数,如下所示:
(defun delete-other-window (callback)
(interactive)
(funcall callback)
(delete-window))
...
(defun delete-right ()
(delete-other-window 'windmove-right))
我这样绑定击键:
(global-set-key (kbd "C-s-<right>") 'delete-right)
但是当我点击C-s-<right>时它不起作用,只在迷你缓冲区中显示Wrong type argument: commandp, delete-right。
我遗漏了什么或者我应该怎么做才能正确处理代码?
【问题讨论】: