Emacs 24.3支持cygwin上使用Win32 GUI


剛看見GNU Emacs 24.3發了第一個pretest版本(24.2.90),我從git倉庫里打開NEWS看了一下,發現了這么一條:


  ** Cygwin builds can use the native MS Windows user interface.  Pass --with-w32 to configure. The default remains the X11 interface.


哈,這正是我原來一直夢想着的特性:底層采用Cygwin的POSIX兼容層,界面采用Win32原生GUI——這在以前看到rxvt的win32原生GUI版本時就有了這個願望。

這樣有什么好處呢?

1 底層采用Cygwin的POSIX兼容層

  • Emacs與shell和其它程序的交互就跟UNIX下面一樣了,這樣很多win32特有的兼容性問題就不存在了,比如調用一個shell命令時的引號問 題(比如悲摧的find-grep,比如M-x shell-toggle-cd里面的"cd /path/to/somewhere""cd /d x:\path\to\somewhere"問題);反過來,你在git/hg里面可以很方便地調用ediff和emerge來比較文件、解決合並沖突了
  • cygwin有虛擬終端支持,這樣你可以用M-x term來運行各類終端程序,比如bpython, midnight commander。反過來,如果用cygwin版本的Emacs,你也可以在screen里面跑emacs

2. GUI采用win32 gui

  • 相對terminal版本,GUI的優勢是有豐富的顏色、字體以及fringe修飾
  • 相對原來的X11 GUI版本,優勢是不必啟動一個X11 server了
  • 這個cygwin-w32版本有win32 native版本的幾乎所有功能
    • 可以從Windows程序(比如資源管理器)拖放文件到Emacs
    • 可以使用Windows所管理的字體,也就是你不用自己再安裝配置X11字體
    • 可以使用<lwindow>, <rwindow>, <apps>等鍵,也就是說w32-lwindow-modifier等變量仍然可以設置
    • 缺省打開瀏覽器的方法與win32 native版本和cygwin原來的設置都是一樣的: browse-url-default-windows-browser
    • 雖然缺省shell改成了bash (由Cygwin提供的環境變量SHELL決定),但你應該可以用(let ((shell-file-name "cmd")) (shell))的方式來運行cmd(不過我不推薦你用(setq shell-file-name "cmd")修改掉缺省的shell——調用很多外部程序時需要這個設置,而cmd實在是配合不好)

3. 為什么不用native win32 gui版本?

這主要是Cygwin的優勢了:

從安裝的方便性上來說,很多外部程序(比如find, grep, diff, git),你不用繁瑣地到處去尋找win32 native port來安裝了,你可以很方便地安裝和使用cygwin的版本(在此推薦一下cyg-apt  t, 你只要簡單地cyg-apt install w3m就可以安裝上w3m了。另外[url=]我也略做過改進,以支持多個repo),何況有些程序目前沒有win32 native port,比如dict, sdcv

目前發現的一些小問題:

* 窗口沒有圖標(我發現nt/emacs.rc並沒有被編譯、包含進可執行文件,但手工加了一下之后,窗口還是沒有圖標——待有空仔細看看代碼看問題在哪里)

 

附兩張截圖:

Emacs 24.2.90 cygwin build, with Win32 GUI  


快寫完的時候,郵箱收到了cygwin-announce郵件列表的通知,說是已經提供了23.2.90的測試版本,這次新增的w32 gui版本也提供了,所以你只要打開Cygwin setup.exe,選擇安裝emacs-w32就可以了。
如果你用cyg-apt的話,那么就是這么幾步:

cyg-apt setup    #第一次運行cyg-apt的話,需要用這個建立配置文件~/.cyg-apt
cyg-apt update   # update setup.ini
cyg-apt install emacs-w32



P.S. 根據這個HAVE_MOUSE補丁,新的Emacs不需要跟X11庫鏈接也可以在terminal下支持鼠標了(這個補丁也可以在老版本的Emacs源代碼上使用)——但你還是需要在運行期執行M-x xterm-mouse-mode打開鼠標支持


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM