windows平台Emacs單一實例原理、設定及右鍵菜單的添加

來源:互聯網
上載者:User

鑒於Emacs那神奇的啟動速度,如果像Vim一樣,每開啟一個檔案都啟動一個Emacs的話,那肯定是無法忍受的,於是,Linux下可以使用emacs --deamon來啟動Emacs作為一個守護進程,但該參數不支援windows平台(雖然說在windows平台使用Emacs是一件感覺很彆扭的事情),估計是使用了windows平台沒有的特性,具體使用的什麼特性我並沒有研究。

但是windows平台還是可以實現只啟動Emacs單一實例的,這樣每次開啟檔案時用這個已經存在的執行個體開啟即可,避免等待Emacs那尷尬的啟動速度。其原理是啟動一個Emacs執行個體作為server,監聽某個連接埠,然後在需要開啟檔案時,利用client串連那個連接埠,將需要開啟的檔案路徑等資訊傳遞給server,然後作為server的Emacs收到路徑資訊後,找到檔案並開啟它。

 

要將Emacs啟動為一個server,需要在Emacs的設定檔中加入以下命令:

(server-start)

這樣,使用runemacs.exe啟動Emacs後,在Home目錄(HOME目錄的設定及具體值請參看這裡)的.emacs.d\server目錄下會產生一個server檔案,裡面記錄了Emacs執行個體的IP地址及連接埠號碼等資訊,在退出Emacs後,這個檔案就會被刪除。

 

現在server已經起來了,下面就可以用client串連server了,在Emacs安裝目錄的bin目錄下會有emacsclient.exe和emacsclientw.exe兩個exe檔案,前者基於命令列,後者有圖形介面,使用client來串連server開啟檔案的命令如下:

emacsclientw.exe --no-wait --alternate-editor="runemacs.exe" "~/.emacs"

其中--no-wait參數告訴client不要等待Emacs server返回,而是直接退出;--alternate-editor參數指定一個fallback的編輯器,在server不存在的時候就使用該編輯器來開啟檔案,在這裡指定為runemacs.exe,這樣就可以在Emacs沒啟動並執行情況下運行Emacs並使用之進行編輯,第三個參數是要開啟的檔案,這裡指定為HOME目錄下的設定檔.emacs。在運行這個命令後,emacsclientw.exe會去<HOME>\.emacs.d\server目錄下找到server檔案,取出裡面的IP地址和連接埠號碼,串連之,將"~/.emacs"傳過去,然後作為server的Emacs開啟該檔案,因為有--no-wait參數,所以client不會等作為server的Emacs返回結果就直接退出了;當然如果在<HOME>\.emacs.d\server目錄沒有找到server檔案的話,client就會調用runemacs.exe來開啟該檔案。

====================================我是自豪的分界線====================================

情況來了,我們不可能在每開啟一個檔案的時候就去命令列輸入這麼大一串東西,況且路徑每次都有變化,所以,將“Edit with Emacs”加入右鍵菜單是不二選擇,於是,在註冊表中建如下索引值:

HKEY_CLASSES_ROOT\*\shell\Edit with Emacs\command

並將其default的值設為:

"path\to\emacsclientw.exe" --no-wait --alternate-editor="path\to\runemacs.exe" "%1"

上述命令需要把emacsclientw.exe和runemacs.exe的路徑換成實際路徑,而後面的%1則代表要開啟的檔案。最好把所有的帶有路徑的部分都加上引號,以防止空格的”騷擾“。如:

右鍵菜單的效果如:

 

參考資料:http://www.emacswiki.org/emacs/EmacsClient

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.