Blog

Cocoa Emacs 23 全屏

在 Mac OS X 下编译 Emacs 非常简单,从 BZR 上下载(记得要用“--stacked”参数)最新的源代码后,运行

./configure --with-ns
make
make install

就可以生成 .app 程序包。自从我知道了这个方法之后,我一直在用最新的 Emacs。

过去我用 CarbonEmacs 的时候,曾经设置过 Emacs 的全屏功能,用着一直感觉不错。后来自己编译使用 Emacs 23 后,就再也无法全屏了。上网查了一下原因,知道是因为从 Carbon 升级的 Cocoa 的过程中,有一些功能还没有完全实现,而全屏功能就是其中之一,因此我不得不遗憾的暂时放弃了这个功能。后来我发现点两次窗口最大化键也可以勉强达到全屏效果,于是就这么一直凑合着。

今天在浏览 Emacs Wiki 时看到了一篇 blog 文章的链接,文章介绍了在 Cocoa 环境下全屏的方法。按照文章中的办法,略微变通一下,果然成功了。

文章中说,日本黑客 Daisuke Murase 给 Emacs 23 添加了全屏功能。他在 github 上放了一个 Emacs 分支,但除了他添加的新功能之外,这个分支一直没有跟着主分支一起更新。所以文章的作者 Steve 从一个“官方”的 Emacs git 分支 clone 了最新的代码,并合并这两个版本,但在合并的时候发生了冲突。于是 Steve 提取了这个更新(a3585f6c2a)的 patch 并成功的更新了代码。

我在 clone Steve 提供的 Emacs git repo 时速度非常缓慢,已经超出了可以忍受的范围,只好放弃,改用从官方的 BZR repo 来下载代码。但这样我就无法(不会)用 git 来合并 Daisuke 的分支了。不过我在看 Daisuke 的 git repo 的时候,发现他提到了他的分支与主流分支的合并冲突问题,并给出了 patch 文件。把这个 patch 下载下来后,在下载下来的 Emacs trunk 目录下,运行 cat feature-fullscreen.patch | patch -p1 后就按照上面的方法正常编译 Emacs 就好了。编译完成后,用 M-x ns-toggle-fullscreen RET 就可以像过去一样全屏了。

我照样喜欢把全屏功能绑定在 command+return 键上,在 .emacs 文件中加上一行

(global-set-key (kbd "M-RET") 'ns-toggle-fullscreen)

搞定。

既然说道改动 .emacs 文件了,我前两天刚刚也修改了一下功能,就是 set-mark-command 的键位绑定。Emacs 默认对这个函数的绑定是 control+space,但在 Windows 和 Linux 系统上一般被用来切换输入法,在 Mac OS X 下我又把这个组合键设定成了 QuickSilver 的快捷键,所以这个键绑定就失效了。因为我一直用的笔记本电脑,所以我之前在选定文字的时候,就干脆用鼠标板来手动划定,勉强可用。如果要选定整个 buffer,就干脆把光标送到开头,再送到结尾也算是变相的选定了全文,操作起来就是按住 Meta 和 Shift 键,在迅速的分别按 ,. 一下就好了(或许有“正确”的全文选定办法,不过这么多年了,习惯了:-))除了用 control+space 来选定外,默认情况下用 C-@ 也可以同样的呼叫 set-mark-command,但我一直以来都觉得这个组合键的反人体工学达到了变态的程度。而 M-@ 这个组合键虽然同样需要三个键,但却更加顺手一些。M-@ 默认的绑定是 mark-word,就是选定一个词组,这些年来我从来没有用过这个功能。于是前天我“痛定思痛”,决定彻底解决这个问题,就是把这两个键绑定切换一下。于是在 .emacs 里面加上了这么两行

(global-set-key (kbd "M-@") 'set-mark-command)
(global-set-key (kbd "C-@") 'mark-word)

于是世界清净了。

3 comments

  1. qzi qzi

    现在开始用macport上的emacs

    沙发
    • Feng Feng

      我也早就用Homebrew来安装Emacs了。:-)

  2. 板凳

Leave a Reply