Emacs on osx

尔会在老婆的Macbook上做事,所以弄一套开发环境是有必要的,Emacs作为我的首选编辑器自然首当其冲。由于在Emacs官方主页上并没有提供Mac OS X版的下载,自己又懒得去编译,最终选择了Emacs for Mac OS X

 Emacs的配置是没啥问题的,就是多加了一个判断,在system-type是darwin的情况下,做一些OS X特别的配置就行了。我这儿也就设一下字体,开个server而已,简单得紧。

这个版本的Emacs倒是挺智能的,知道在启动了一个Emacs之后,如果从finder中打开其他文件的话,会自动使用emacsclient去打开文件。但是有一个挺郁闷的地方,就是默认情况下,新打开的文件都会新建一个Frame。我在智能地启动emacs一文中就提到过,我还是比较喜欢使用单一窗口,所以这点必须调整一下。

使用Google搜了一下,在stackoverflow上也找着了和我有相同困惑的同志。回答里民那提供了多种办法,但是试了一下只有使用设置ns-pop-up-frames配合open的办法是适用的。如果单独设置ns-pop-up-frames,那么结果是无法自动激活Emacs窗口。而单独使用open -a /Applications/Emacs.app "$@",则和直接从finder里打开没啥两样。至于为什么组合在一起就可以,我也没弄清楚……管它呢,先用起来再说。

设置ns-pop-up-frames容易,可是要怎么让finder使用open来打开文件呢?如果在Linux下,写一个脚本,然后让文件管理器使用这个脚本打开就行,所以很自然地就以为OSX下也是这样。可是结果很残酷,finder指定打开文件的方法必须是app格式的。咱毕竟只是个Mac菜鸟,怎么制作app这是一个大问题。

还好Google出一个叫Platypus的玩意儿,能够将脚本打包成app。这儿有个小插曲,一开始我用的是最新的4.2版本,可是生成出来的app一直无法获取文件路径,搞得我还以为传参是需要特殊处理的,折腾了半天也没解决。结果跑到Platypus的主页上去一瞅,在More About Platypus的页面里才发现,作者在这儿说道,4.2有bug,无法获取参数,现在请自行绕道4.0,或者等未出世的4.3… 我当下吐血,白白浪费了这么多青春…

使用制作出来的app已经能够复用Emacs窗口并自动激活了,但是每次打开文件都需要从打开方式里选择其他选项,然后手动指定该app的路径,也是相当麻烦。稍稍剖析了一下app的格式,发现是在Info.plist文件里面指定支持的格式的,于是无耻地把Emacs的Info.plist中的相关部分复制过来,这时候,在Emacs支持的文件的打开方式里就出现了这个smartemacs这个选项了。

最后提供我制作的这个脚本,有兴趣的童鞋可以下载玩玩。

下载地址: smartemacs.zip

BTW: 这两天Emacs已经发布了23.2,但是由于现在使用的还是Leopard,而Emacs for Mac只提供了基于Snow Leopard的版本,所以暂时也只能用用23.1了。发现这台机器再不升级也许马上都没软件能用了 Orz

对“Emacs on osx”的1条评论

  1. Avatar

    想不到你也喜欢emacs,我vim和emacs都用,但其实还是比较喜欢emacs

发表评论

评论备注:

  1. 留言时的头像是Gravatar提供的服务。
  2. By submitting a comment here you grant this site a perpetual license to reproduce your words and name/web site in attribution. So, you don't fully own your words, so to speak.