GNU Emacs支持server/client這種運行方式。就類似的,UltraEditor,雙擊打開多個文件時,可以共用一個程序進程,每次打開文件只是在已有進程下創建一個文檔標簽。
這個功能對於Emacs來說十分有用,因為作為開發環境,許多人的Emacs並不單純是Emacs,也許還有ECB,也許還有CEDET,也許還有cscope等等。這些東東,每次啟動Emacs都會加載半天的。但我們如果使用Server/Client方式,將只需要啟動一次Emacs,以後每次打開文件,只是在已經啟動好的Emacs進程下創建一個Buffer。
首先,我們必須設置一個環境變量:
EMACS_SERVER_FILE=C:\.emacs.d\server\server
這個變量指定了emacsclient默認去尋找的server文件。而我們指定的這個文件,是emacs server創建的默認server文件。
接下來,修改C:\.emacs文件。這個文件是Emacs的默認配置文件。在裡面加入一行:
(server-start)
這樣,每次啟動Emacs的時候,就自動啟動server了。如果你想手動啟動server,也可以啟動emacs後手動執行:
M-x server-start
好了,現在讓我們啟動Emacs,執行runemacs命令。
然後在資源管理器中找到你要打開的文件,用“Open with...”->“Change program”打開,然後選擇emacsclientw.exe程序,勾上“Always use selected program to open this kind of file”(不好意思,現在公司用的是E文版的XP……)。
以後你就可以每次雙擊文件,都用同一個Emacs打開了。注意,要先啟動runemacs哦。當然,你也可以寫個bat腳本來自動判別(流程是判斷C:\.emacs.d\server\server,若無,啟動runemacs,若有,啟動emacsclientw)。