簡體   English   中英

如何在啟動時在Emacs中加載.el文件的更改?

[英]How can I load changes of .el file at startup in Emacs?

我已經在Windows 7下安裝了Emacs,並希望在日常工作中使用它。 不幸的是,Emacs世界和其他文本編輯器世界完全不同,我在鍵盤上按的每三個按鍵序列上都陷入了困境–它在做我沒想到會做的事情。

我想發出一個緊急命令-當我按ESC ESC ESC時,它停止執行所有操作,從小型緩沖區中退出,停止輸入命令,取消突出顯示正則表達式等。它已經可以執行我想要的操作,除了殺死緩沖區,工作區的布局。 所以我在simple.el文件中修改了keyboard-escape-quit功能(由Ch 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))))

我已經字節編譯並加載了此文件,它工作正常。 但是我不知道為什么它不能在啟動時加載。

您不能修改某些特殊的內置庫,包括simple.el Emacs實際上從未從它們的源代碼或字節代碼文件中加載這些特殊的庫。 它們的字節碼在構建時通過稱為“轉儲”的過程直接包含在Emacs可執行文件中。 Emacs從自己的二進制文件加載這些庫。

通常,無論如何都不應修改任何內置庫。 當您更新Emacs時,您的風險破壞和自定義設置將丟失。

而是執行您應該做的事情:將自定義函數添加到init.el

因此,不用修改內置的keyboard-escape-quitinit.elinit.el創建您自己的函數(例如my-emergency-quit ,然后使用它將其綁定到全局鍵(例如Cc q )。

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

最后一些建議:我認為這樣的緊急命令沒有任何用處。 Emacs的第一條規則是:不要驚慌。 如果您陷入困境,請不要嘗試退出並殺死一切。 相反,嘗試找出為什么會被卡住,以及如何通過常規方式“擺脫”卡住。 這樣,您將更好地學習Emacs,恕我直言。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM