Archive for the ‘Emacs’ Category

ntemacs

Sunday, December 6th, 2009

把XP上的ntemacs更新到23.1.50.1后发现以前写在 site-list/default.el 中的配置似乎不起作用了。比如,我在其中写了:
(setq default-directory "C:\Documents and Settings\liqun\Desktop\")

现在这个设置楞是变得不起作用,枉我号称Emacs达人,折腾来折腾去都搞不定,传到江湖上岂不是丢大了。不过既然敢写出来,那一定是搞定啦!右击emacs的快捷方式图标,选择”Properties”,然后进”Shortcut”标签,下面有个设置是”start in”,一眼瞅过去,写的是”C:\Program Files\ntemacs23\bin\”,怪不得现在每次C-x C-f都用这个目录,应该是它捣的鬼啦!改回去后重启emacs,果然OK了。

另外,一个起作用的配置文件:”C:\Documents and Settings\liqun\Application Data\.emacs”,把default.el直接重命名过去就得了。最后,”start in”中的设置会覆盖.emacs中对default-directory的设置。

Elisp to Rescue!

Wednesday, September 9th, 2009

这些日子开始做一个简单的代码生成工具 — 听着很炫,其实很思想简单 — 就是用一些(脚本)程序修改老的C头文件,并自动在源代码中修改相应的实现。修改头文件相对简单,用sed就可以了,因为现有API的名字有明显的模式可寻,而修改C源代码则相对困难,这是因为大家的实现方式并不一致。姑且不论对代码的解析,仅仅是用sed/awk之类的工具去做块编辑便很难得心应手。

生活中总有一些事情可以激发一点点灵感。昨天因为写错了一个自定义类型的名字,一段代码花费了我半个多小时的调试时间(为了通用,它藏在两层macro之中),于是想如果能把这些自定义类型加入vim/emacs的语法高亮,这样可以比较方便的看出来。接着便配置了vim/emacs去做这些事,配置emacs很简单,在c-mode-hook里面设置一下c-font-lock-extra-types即可。

我突然想到,为什么不重用cc-mode来做代码生成呢?Emacs提供了编辑功能,cc-mode提供了足够的c/c++语法解析,而lisp天生便用于符号操作,用elisp去操纵c/c++代码实在是再适合不过了!

另外,如果我们的代码能做到简单一致(Simple & Consistent)那该多么美妙!可惜这已经是奢望了。

Display Chinese TXT File in Vim/Emacs

Saturday, July 18th, 2009

For Vim, put the following line in ~/.vimrc:
set fileencodings=utf-8,cp936

For Emacs, add the following to ~/.emacs:
(custom-set-variables
'(current-language-environment "Chinese-GB"))

你推我也推!

Wednesday, May 20th, 2009

看见邮箱里又躺着一封Twitter的入伙信,心想,“算了,也随个大流吧!”于是点击了连接上了贼船。

用Emacs连Twitter比较方便,我试用了两个twitter.eltwittering-mode.el,感觉上更喜欢后者,其配置也很简单:

(require ‘twittering-mode)

(setq twitter-username “live4thee”)

(setq twitter-password “blabla”)

值得注意的是,里面有个快捷键C-c C-l绑定到函数twittering-update-lambda,它会post一串貌似韩文的东西到你的twitter页面。于是我把它从我的twittering-mode.el里删掉了。

另外,firefox的扩展ubiquity里面有twitter命令,用它也post消息也很方便。但它也仅仅只能post而已。

http://twitter.com/live4thee

ERC技巧一则

Thursday, April 16th, 2009

所谓“来电提醒”。


(add-hook erc-insert-pre-hook

          (lambda (msg-str)

             (if (and (string= erc-session-server “127.0.0.1″)

                      (string-match “^<” msg-str)

                      (not (string-match “^<root>”

                                         (propertize msg-str ‘face nil))))

                 (play-sound-file “~/.emacs.d/hi.au”))

             t))