2014-07-05 134 views
0

我在Windows 7下安裝了Emacs,並希望在日常工作中使用它。不幸的是,Emacs世界和其他文本編輯器的世界是完全不同的,我被卡在鍵盤上按下的每一個按鍵序列上 - 我做了一些我不指望它會做的事情。如何在Emacs啓動時加載.el文件的更改?

我想做一個恐慌命令 - 當我按下ESC ESC ESC時,它會停止做所有事情,退出minibuffer,停止輸入命令,unhighlight regexps等。它已經做了我想要的,除了它殺死緩衝區,佈局我的工作空間。所以我修改simple.el文件keyboard-escape-quit功能(由C-H K ESC ESC ESC發現)

(defun keyboard-escape-quit() 
    "Exit the current \"mode\" (in a generalized sense of the word). 
    This command can exit an interactive command such as `query-replace', 
    can clear out a prefix argument or a region, 
    can get out of the minibuffer or other recursive edit, 
    cancel the use of the current buffer (for special-purpose buffers), 
    or go back to just one window (by deleting all but the selected window)." 
    (interactive) 
    ; Stop highlighting regexp 
    (unhighlight-regexp) 
    (cond ((eq last-command 'mode-exited) nil) 
    ((region-active-p) 
    (deactivate-mark)) 
    ((> (minibuffer-depth) 0) 
    (abort-recursive-edit)) 
    (current-prefix-arg 
    nil) 
    ((> (recursion-depth) 0) 
    (exit-recursive-edit)) 
    (buffer-quit-function 
    (funcall buffer-quit-function)) 
    ;((not (one-window-p t)) 
    ; (delete-other-windows)) 
    ((string-match "^ \\*" (buffer-name (current-buffer))) 
    (bury-buffer)))) 

我字節編譯並加載該文件,它工作正常。但我不明白爲什麼它不在啓動時加載。

+0

我是newb,但是你能把這段代碼放在你的'.emacs'或'.emacs.d/init.el'中,從而覆蓋以前的定義嗎? (Windows,它可能是'c:\ Users \ \ AppData \ Roaming \ _emacs'。)我儘量不要依賴編輯源文件,因爲那時你可能不得不擔心它可能在某個時刻。 (重新安裝,排除故障,檢查出與支持交互時出血的邊緣) –

+0

因此,據我瞭解,所有用戶自定義都是通過.emacs.d目錄下的init.el完成的。做他們的安全方法是添加新功能,綁定新鍵或重新綁定現有鍵。 –

+0

@ user2244092我認爲你應該至少瀏覽一下[Emacs手冊](http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html)。它徹底地解釋了Emacs的所有概念,包括[Customization](http://www.gnu.org/software/emacs/manual/html_node/emacs/Customization.html#Customization)和[Init File](http:// www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html#Init-File)。 – lunaryorn

回答

2

您不能修改某些特殊的內置庫,包括simple.el。 Emacs從來沒有從它們的源代碼或字節代碼文件中實際加載這些特殊的庫。他們的字節碼在構建時直接包含在Emacs可執行文件中,通過一個稱爲「傾倒」的過程。 Emacs從它自己的二進制文件加載這些庫。

一般來說,應該不是無論如何修改任何內置庫。當您更新Emacs時,您的風險將被破壞,並且您的定製信息將丟失。

相反,做你應該做的:添加自定義功能到你的​​。

因此,不是修改內置的keyboard-escape-quit,而是創建自己的功能,例如, my-emergency-quit,在您的​​中,並將其綁定到全局密鑰,例如, C-c q,與

(global-set-key (kbd "C-c q") #'my-emergency-quit) 

一些建議最後的話:我不認爲這樣的恐慌命令做什麼好。 Emacs的第一條規則是:不要恐慌。如果你陷入困境,不要試圖退出並殺死所有的東西。相反,試着找出你被困住的原因,以及如何通過常規手段獲得「不卡住」。你會以這種方式更好地學習Emacs,恕我直言。

+0

感謝您的回答。至於建議,也許你是對的。 –

相關問題