我将以下代码添加到了我的
正如您所看到的,大部分代码都是重复的。 我阅读了如何在elisp中将函数作为参数传递?并尝试通过以下方式重构代码来传递
我把按键绑定成了这样:
但是,当我按下
.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)
正如您所看到的,大部分代码都是重复的。 我阅读了如何在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
。
我错过了什么或者应该做些什么才能使代码正常工作呢?