Archive for the ‘Emacs’ Category

Emacs Timeline

Thursday, November 29th, 2007

我曾经在我的 wiki 上帖过一个 Emacs 的 Timeline ,最近收集资料的时候想找新版本的 Timeline ,正好找到了画这个 Timeline 的作者:Jamie Zawinski ,他画的 Timeline 已经有更新了,把最新发布的 Emacs 22 也包含在了里面。我把他转帖过来了:

Read the rest of this page »

smart-snippet.el update: properly undoing in a snippet

Wednesday, November 28th, 2007

A user of smart-snippet reported a bug to me today. The behavior of undoing in a snippet is confusing. In fact I’ve noticed this bug a long time ago, even before I write smart-snippet.el — it’s a bug if snippet.el . But I never try to fix it, I thought it might be impossible or at least difficult to fix.

However, when I open my mailbox and receive a new mail asking for help of this bug. I suddenly feel that I should fix it, or at least try to. Then I sit down and open my Emacs. Only after a few minutes, the confusing behavior is gone! It’s very simple!

That’s it, you know, sometimes it’s not that we can’t solve the problem, it’s just that we are too lazy to even try to solve it. So never doubt about yourself. Make a decision. You can do it!

And the last point: It’s really happy to see many people using and enjoying your software! :)

Emacs 生存指南

Wednesday, November 21st, 2007

Emacs 生存指南
pluskid
2007 年 11 月

作为一个历史悠久的程序,网上有不少相关资料,总结一下,大致可以分为一下几类:

  • 电子书:例如 O’ Reilly的《Learning GNU Emacs》以及 Sams系列的《Sams Teach Yourself Emacs in 24 Hours》等,从头至尾系统地讲解了 Emacs 的方方面面,非常详细。
  • 文档:Emacs 自带了有交叉索引的文档,其中还包括 Elisp 介绍以及详细文档等,在 Emacs 里查阅非常方便。
  • Blog 文章:多是介绍一些特性或者技巧之类的,比较零散。
  • 个人笔记:这方面有许多中文资料,例如王垠的笔记叶文彬的笔记以及我自己的一些笔记等等。相对于 Blog 文章要稍微系统一些。
  • Wiki 形式的资源:如 Emacs WikiThe very unofficial dotemacs home 等,由不同的用户贡献的内容,比较全面。

不过我觉得其中似乎还有一个空缺。学习用一个编辑器,如果专门照着一本书去学,多少有些不必要,一来有些枯燥,二来写书需要照顾所有人,同时却又是众口难调,对自己来说有些东西根本用不到,学了不用也会很快忘记的。大多是看一个入门的东西,大概上手了,需要用的地方才花心思去 Wiki 呀、别人的笔记等地方找找资料、查查文档之类的。

但是从入门到能够自己轻松地自己查阅资料进阶学习似乎还是有一段距离,比如别人介绍 setnu.el 和 setnu+.el 可以让 Emacs 显示行号,说了半天却没有说如何安装,或者说了放到 load-path 下,你却不知道什么是 load-path 。总是有这样类似的一些问题阻止大家深入,抹杀了继续使用的热情。我觉得主要还是缺少一个引导大家从入门级别到 serious Emacser 的文档。所以我写了这篇文章,希望能有所帮助。

Read the rest of this page »

smart-snippet.el update: escape char supported

Thursday, November 1st, 2007

I updated smart-snippet.el today. There’re main two changes:

  • The code is merged with snippet.el.
  • Now you can use \ to escape and protect a character that might else be recognized as a snippet identifier.

Read the rest of this page »

Emacs Multi-tty Reloaded

Tuesday, September 18th, 2007

前不久得到一个消息,听说 Emacs Multi-tty 的代码 merge 到 CVS Head 里面去了,异常兴奋。可是看了 newsmth 上各位网友的试用及讨论之后,发现是 merge 到 trunk 里面,这里原来是 22 的 CVS ,现在 22 正式 Release 了,这里进行继续开发。换句话说,并没有和 unicode-branch 融合。而且版本号有些奇怪,现在 unicode-branch 里面的版本号是 23.0.0.2 这样的,而现在的 CVS Head 的版本号是 23.0.50.1

不管怎么说,multi-tty 的特性虽然很诱人(其实 XEmacs 早就有了这个功能),在中国最受欢迎的版本应该是 unicode-branch ,有两个重要原因:

  • 编码支持好。似乎整个核心都经过重写,改成 unicode 核心了,现在对 utf-8gbk 以及 gb18030 之类的编码都支持非常好。并且不需要安装额外的 mule-ucs 以及 mule-gbk 之类的包。
  • XFT 的支持。一来配置字体更方便了,二来更漂亮了。

Read the rest of this page »

nXhtml: tame your rhtml files

Friday, August 31st, 2007

I personally use Emacs as an IDE to develop rails project. Equipped with emacs-rails, it becomes a powerful IDE for rails developing.

However, you may noticed, it doesn’t have full support for rhtml files. You can use html-mode to edit rhtml files, it is already good enough. But is is of course not as good as other wonderful modes(e.g. ruby-mode) Emacs supplied.

Other choices is mmm-mode, two-mode-mode or some similar things. But it is a little complicated to config while the results is not very impressing.

There’s also a custom-made mode for rhtml files in Rinari: rhtml-mode. It might be good. Bug I guess there’s something wrong with the code. Emacs may become slow when I turn on this mode: a latency can be felt even to move the cursor up and down.

I still use the plain old html-mode to edit those rhtml files, until I finally find the godsends nXhtml package. It has a nxhtml-mode which can recognize plenty of embedded fragment including javascript, php and, of course, ruby, etc.

It is really an amazing package! And the installation is very simple. Just download the latest nXhtml zip package. Unzip it and load the autostart.el file in your Emacs.

However, as an Emacs geek, I always want to configure it to my own style. So here comes my configuration for nXhtml to edit rhtml files:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
(load "~/emacs/packages/nxml/autostart.el")
(add-to-list 'auto-mode-alist
             '("\\.rhtml$" . kid-rhtml-mode))
;; only special background in submode
(setq mumamo-chunk-coloring 'submode-colored)
(setq nxhtml-skip-welcome t)
 
;; do not turn on rng-validate-mode automatically, I don't like
;; the anoying red underlines
(setq rng-nxml-auto-validate-flag nil)
 
;; force to load another css-mode, the css-mode in nxml package
;; seems failed to load under my Emacs 23
(let ((load-path (cons "~/emacs/extension/"
                       load-path)))
  (require 'css-mode))
 
(defun kid-rhtml-mode ()
  (nxhtml-mode)
  ;; I don't use cua-mode, but nxhtml always complains. So, OK, let's
  ;; define this dummy variable
  (make-local-variable 'cua-inhibit-cua-keys)
  (setq mumamo-current-chunk-family '("eRuby nXhtml Family" nxhtml-mode
                                      (mumamo-chunk-eruby
                                       mumamo-chunk-inlined-style
                                       mumamo-chunk-inlined-script
                                       mumamo-chunk-style=
                                       mumamo-chunk-onjs=)))
  (mumamo-mode)
  (rails-minor-mode t)
  (auto-fill-mode -1)
  (setq tab-width 2)
  (setq indent-tabs-mode nil))

You can see in the screenshot the nxhtml-mode recognize both ERB fragment and javascript fragment. It can also handle css fragment if you have proper css-mode installed(nxml comes with a css-mode, but it refuses to load with my Emacs 23). Wonderful! :D

linum.el: Yet another package for Emacs to display line number

Wednesday, August 29th, 2007

Emacs 自带的行号显示方式仅仅在 mode-line 上显示当前行号,有时候显得颇不方便。其他流行的和不流行的编辑器通常都有在左边显示行号的功能。Emacs 当然也有许多扩展来实现这个功能,比如 setnu.el(再配上 setnu+.el) 以及 wb-line-number.el 等。今天在这里又发现一个 linum.el ,它的主页在这里

其实总的来说,这几个扩展都不是特别理想,比如 setnu 总有各种各样的小问题,虽然不太印象使用,但是让人感觉不舒服。wb-line-number 看上去要好一点,不过却要求你把滚动条关掉。而这里的 linum 几乎和 setnu 差不多,不过据说性能等方面会好一些。其实这种东西应该 Emacs 自身从 UI 上提供支持的。包括其他许多诸如自动补全的 UI ,做起来以后许多扩展会写起来很方便(比如输入法、自动提示等)。但是不知道是 RMS 太顽固还是没人愿意去做,这些功能一直都是通过现有的 UI 以 Elisp 的方式“旁敲侧击”地去实现,虽然能用,但是总是有各种各样的小问题。 :(

我以前的笔记

Wednesday, July 25th, 2007

以前用 Emacs Muse 写了不少的笔记,自己觉得有些东西还是挺有用的,至少我自己也经常回去查阅,有些东西不记下来过一段时间还真忘记了。只是一直没有合适的地方挂出来给大家分享。虽然现在已经很少再添加新的东西了,不过既然有这个机会,我还是挂出来,免得白白写了些东西,只有我自己看到了。 :)

我把它放在了这里: http://pluskid.lifegoo.com/wiki/index.html

Emacs 版衫设计

Friday, June 29th, 2007

最近 newsmth 的 Emacs 版在征集版衫设计。我不知道这么远是不是能在那里订版衫。不过还是跟风做了一个。 图像处理工具用得也不熟。抽取 simple.el 中的代码帖了一大段到背面,我想也许会看起来 Cool 一点。

My design of Emacs T-shirt


如果太远了订不到的话,有机会不妨在 freecity 也做一个 Emacs 的版衫,这边也有很多人用 Emacs 的。

Emacs 22.1 Released!

Saturday, June 2nd, 2007

经过一而再再而三的跳票,RMS 终于让 Emacs 22.1 Release 出来了。http://www.gnu.org/software/emacs/ 上也更新了最新的 Stable 版本的信息:

  • Current Stable Release
    • Latest stable release: 22.1 (June 2, 2007)
      • Emacs version 22 includes GTK+ toolkit support, enhanced mouse support, a new keyboard macro system, improved Unicode support, and drag-and-drop operation on X, plus many new modes and packages including a graphical user interface to GDB, Python mode, the mathematical tool Calc, the remote file editing system Tramp, and more.
    • For more info read its News file.
    • To download visit the obtaining section.

Emacs 的上一个版本 Release 是在两年以前了,RMS 对 Bug fix 要求很严格,导致 Emacs 22 好几次说要发布结果都跳票了,实际上很多人很早就在使用 CVS 的 Unicode 分支的 Emacs (通常称为 Emacs 23)了,但是 Emacs 22 的发布仍然是非常令人振奋的!而且 22 的发布可以让更多的开发力量转移到 23 上,Emacs 无疑是一个伟大的软件,RMS 也无疑是一个伟大的领袖,但是时代在进步,Emacs 也需要不断吸收新的东西,然而有些人 RMS 似乎有些保守了,多次拖延发布时间也在邮件列表上发生过争吵。确实,试想,如果我参加了一个激动人心的项目,结果过了好几年,却还没有一个版本发布出来,实在是很让人心急呢!有些开发者便转移到其他项目去了。当时好像就是 GNU Emacs 太保守了,才有 XEmacs 这个 fork 吧,不过后来又有 XEmacs fork 出来的 SXEmacs 。唉!总之希望它们集中力量,把 Emacs 做得更好才是啊!

新的 TODO 文件里面也有一些非常令人期待的功能,例如 multi-tty 的支持。现在 multi-tty 分支和 unicode 分支是分开的,短期内是不可能有下一个版本发布了,不过期待两个分支在短期内合并在一起还是有希望的,真是激动人心啊!哈哈!这次我要滥用职权,让这个新闻在 LinuxApp 版上置顶!呵呵,何况现在几个版主都是 Emacs 一派的。