emacs注册自定义函数
问题描述:
我试图在我的点emacs中添加两个keybinds来保存/恢复缓冲区位置。emacs注册自定义函数
所以,这里是我的代码:
(defun savePosition()
(interactive)
(point-to-register "m"))
(defun goToPosition()
(interactive)
(jump-to-register "m"))
(global-set-key (kbd "M-M") 'savePosition)
(global-set-key (kbd "M-m") 'goToPosition)
不幸的是这是行不通的。 emacs没有错误,但寄存器似乎不存在 - 我认为这是因为寄存器保存在函数中,而不是当前缓冲区。
那么,我该怎么办?
答
找到解决方案。替换:
"m"
有了:
?m
的确。您的原始尝试不起作用,因为'(eq“m”“m”)'是'nil'(因为读者为两个字符串创建独立的对象)。虽然你可能不想使用角色。交互式地,寄存器是字符;但是在代码中,您可以使用与'eq'相媲美的任何东西,因此为此目的使用非冲突符号是明智的,这样您就不会破坏注册字符之一的交互式使用。 – phils