一千萬個為什麽

搜索

Emacs守護進程主要模式啟動

我在啟動時使用systemd加載多個守護進程服務。 這樣做的目的是讓每個應用程序用於不同的應用程序,一個用於C編碼,一個用於Ocaml,一個用於組織...

我有一個每個客戶端的配置文件,在運行守護程序時,使用 load-file 傳遞給 -e 。 我想為它們中的每一個設置暫存緩沖區的dedault主要模式,所以在配置文件中,我以ocaml配置為例:

 (setq initial-major-mode 'tuareg-mode)
 (setq initial-scratch-message "\
 (* This buffer is for notes you don't want to save, and for OCaml code.
 * If you want to create a file, visit that file with C-x C-f,
 * then enter the text in that file's own buffer. *)")

消息已寫入,但主要模式仍為lisp。

會發生什麽以及如何解決這個問題?

最佳答案

您無法在使用 -l <�​​/ code>加載的文件中更改 initial-major-mode ,因為在加載時已經創建了初始緩沖區。

您需要在init文件中設置此變量。要在不同的Emacs守護程序中創建不同的臨時緩沖區,請在啟動該守護程序實例時傳遞環境變量,例如,

$ export MY_EMACS_DAEMON="ocaml"
$ emacs --daemon …

在你的init文件中檢查變量的值並相應地設置 initial-major-mode ,例如

(when (string= (getenv "MY_EMACS_DAEMON") "ocaml")
  (setq initial-buffer-choice 'tuareg-mode))

要在systemd單元文件中設置此變量,請使用 Environment = 選項,如:

Environment=MY_EMACS_DAEMON=tuareg

轉載註明原文: Emacs守護進程主要模式啟動