Emacs

Emacs 无法启动 XIM 输入法

某日把 Debian 所有的包更新以后,新启动的 Emacs 就无法启动 XIM 输入法。开始以为是 Emacs 更新的问题,所以回到以前肯定是对的版本,重新编译,问题依旧。说明可能跟 Emacs 本身没有关系。Google Emacs 和 Debian 相关的 bug report,发现[有些]是跟 xserver 的字体处理有关系。最后发现有这么一个[帖子],要建一个从 /usr/lib/X11/fonts 到 /usr/share/fonts/X11 符号链接。抱着死马当作活马医的想法,就试了一把,果然就成功了。这里总结一下 SCIM 在 Emacs 的使用:

  1. 首先将 SCIM 作为缺省的输入法,可以使用 im-switch 来配置。
  2. X 的核心字体必须要安装配置好,xfont-* 相关的包一定要装,/usr/lib/X11/fonts 必须要存在,可以是指向 /usr/share/fonts/X11 的符号链接。

Emacs 中 Bazaar 提交问题

在 Emacs 中使用 vc 操作 Bazaar 时碰到了两个问题:

  • 在 vc-dir 中如果有多个修改的问题,然后标记其中的一些,提交后,所有的文件都被提交,而不是标记的那些。
  • 如果提交注解(commit comment)有多行,只有第一行当作真正的提交注解,其他的都丢弃了。并且所有文件都被提交。

这个问题很久以前就发现了,一直也没有仔细看过,所以在 Windows 上一直都没有在 Emacs 中使用 Bazaar,而是使用命令行,写提交注解尤其是多行注解的时候很不方便。已经给 Emacs 提交了 [bug 报告]。在 Linux 上没有问题。

今天仔细研究了一下,也顺便学习了一下 Elisp。整个版本控制包(vc)的概念比较简单,很多操作都是在一个函数中完成的——vc-next-action 中完成。

  1. vc.el:988:vc-next-action:1088
  2. ;; 调用 start-logentry 时定义了一个 lambda 函数

Emacs 的一些问题和可能的改进

有些问题在用的过程中觉得不太舒服,或者是有待改进:

  • win32 上,输入间隔号(·)时并不显示,再输入其他任何字符时才全部显示出来。似乎在 Linux 上没有这个问题,不知道跟输入法有没有关系。

Emacs 将使用 Bazaar 作为版本控制工具

Emacs 的[邮件列表]上早就说要换一些开发工具,包括现在的版本控制工具(CVS)和 bug 跟踪工具(纯邮件),吵了有不少日子了。Bug 跟踪工具一直以来用的都是纯邮件人工控制,基本上没有什么比较“规范”的方法,要求就是完全可以使用邮件进行各种操作。

Emacs Unicode branch 中文输入 bug

版本是 GNU Emacs 23.0.60.1 (i386-mingw-nt5.1.2600) of 2007-11-26 on $HOST_NAME,上次更新以后似乎一直没有用过中文,然后周末的时候写 blog 用到了,立刻就发现一个问题:用输入法输入标点符号以后什么都输入不进去了,不管是中文标点还是英文标点都不行。随便打一个字符,然后不选字直接删除,再重新输入就可以了,非常得不方便。换输入法也不行,而在别的应用程序里面都是可以的。

Emacs diff-mode 移动非常慢

Emacs Unicode branch 用 diff-mode 浏览 diff 或者 patch 文件时候,在使用 M-n 或者 M-p 的时候,常常会停在那里,然后 Emacs 完全就没有反应了,大概能过十几秒到半分钟左右才到下一个块,而文件操作 M-N 或者 M-P 就没有问题。似乎是跟特定的块有关系,随便用一个 diff 文件基本上都能碰得到。

psgml 的奇怪问题

这一阵编辑 XML 文件比较多,当然要用 [PSGML Mode],再配合上 [DTD],可以很方便地添加相应的标记,比如 DTD 里面会规定一个标记里可以嵌套哪些子标记,有哪些属性等等,通过在相应的位置按 C-c C-e 或者 C-c + 就可以添加子标记或者属性。当然要在 XML 文档里面加上 DTD 的声明,并按 C-c C-p 来解析 DTD 以后才可以。

Emacs font backend

前几天在[水木 Emacs] 版看到有人说 Emacs Unicode 支持了 xft, 拿下来一看 ChangeLog.unicode, 如下:

  1. 2006-06-06  Kenichi Handa  <handa@m17n.org>
  2.  
  3.         * configure.in: New args --enable-font-backend, --with-xft,
  4.         --with-freetyp.  New AC_DEFINEs USE_FONT_BACKEND, HAVE_XFT,
  5.         HAVE_FREETYPE, HAVE_LIBOTF.  New AC_SUBSTs XFT_LIBS,
  6.         FREETYPE_CFLAGS, FREETYPE_LIBS, FONTCONFIG_CFLAGS,
  7.         FONTCONFIG_LIBS, LIBOTF_CFLAGS, LIBOTF_LIBS.
  8.  
  9.         * configure: Re-generated.
Syndicate content