2017-09-01 103 views
0

我试图在我的点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没有错误,但寄存器似乎不存在 - 我认为这是因为寄存器保存在函数中,而不是当前缓冲区。

那么,我该怎么办?

回答

1

找到解决方案。替换:

"m" 

有了:

?m 
+0

的确。您的原始尝试不起作用,因为'(eq“m”“m”)'是'nil'(因为读者为两个字符串创建独立的对象)。虽然你可能不想使用角色。交互式地,寄存器是字符;但是在代码中,您可以使用与'eq'相媲美的任何东西,因此为此目的使用非冲突符号是明智的,这样您就不会破坏注册字符之一的交互式使用。 – phils