[我爲窮人標題道歉,但未能拿出一個更好的]之前defadvice不執行功能?
bin chen問在Google+上:
如何輸入相對路徑(緩衝文件名稱)在#emacs中
M-!
之後在minibuffer中?
我認爲如果buffer-file-name
被保存在寄存器中,它應該是通過調用insert-register
訪問(C-X R I),而在shell-command
提示。
(defun save-buffer-file-name-in-register()
(set-register ?F (buffer-file-name))
(set-register ?D (file-name-directory buffer-file-name)))
(defadvice shell-command (before save-buffer-file-name)
"Save buffer-file-name to register F before running shell-command"
(save-buffer-file-name-in-register))
(ad-activate 'shell-command)
當我調用shell-command
(!M-),其次是insert-register
(C-X R I),我得到錯誤信息:Register does not contain any text
。
但是,當我運行list-registers
我確實看到F
和D
設置了適當的值。如果我再次運行shell-command
,則可以訪問先前保存的寄存器中的值。
是否有可能第一次將寄存器設置得太遲?我如何修復代碼以做我想做的事?
編輯:改變around
到before
(感謝@phils)
感謝您的回覆。我正在玩'around'和'before',上面代碼中的「around」是我的emacs緩衝區粘貼不正確的結果。我實際試過並希望問的版本是「之前」版本。 – 2012-03-06 03:42:51