2016-03-14 61 views
1

某些elisp init函數錯誤地設置變量'yas-snippet-dirs'。跟蹤在elisp中設置變量'yas-snippet-dirs'

有沒有一種方法來獲得一個調試模式,獲取所有的堆棧跟蹤記錄,最終修改這個值?

+0

不是您的問題的答案,但源代碼的grep需要2秒鐘,並給你所有對'yas-snippet-dirs'的引用。從那裏,你可以進入並修改任何你不喜歡的東西,或者創建新的函數或者使用建議等等。在我看來,真正沒有必要使用調試模式或堆棧跟蹤來處理grep可以在眨眼間做些什麼眼睛。 – lawlist

+0

是的,這就是我所做的'grep -r -n「yas-snippet-dirs」*'。但是,由於這些變量的變化是以「代碼爲數據」的形式進行回調,所以我不能只在其中插入一個斷點,或者至少在我想的時候是這樣。 – nicolas

+0

這些引用都沒有內置到C代碼庫中。它們都是用Lisp編寫的以「.el」擴展名結尾的純文本文件。直接進入並直接修改它們,然後在完成時輸入'M-x byte-compile-file'。如果你想改變某些東西而不修改源代碼,那麼你只需在你的'.emacs'文件中'(需要...)'庫,然後在下面把修改過的函數名稱改爲相同的名稱。無需高級調試/ gdb技能。也許你只是部分安裝Emacs而沒有以'.el'結尾的源代碼Lisp文件? – lawlist

回答

1

在最近足夠的Emacs,你可以使用debug-watch爲:

M-x debug-watch RET yas-snippet-dirs RET 

應該做的伎倆。如果您需要添加觀察者早期(前就可以進入交互式命令),然後把

(debug-watch 'yas-snippet-dirs) 

~/.emacs年初的某個地方。