2017-09-01 101 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