三月 30, 2009

Mount WebDav directory with davfs2

使用davfs2,可以将WebDav目录mount到本地,然后就像操作本地目录一样操作WebDav目录。

sudo mount -t davfs http://example.com/webdev/dir local-dir

如果是自己编译安装的话,使用之前还要创建用户davfs2和相应的组。

三月 26, 2009

Update auto-complete candidates dynamically

前面对auto-complete的配置有问题,即使用F1开启自动补全功能后,候选列表不会随着输入自动更新,要连续按F1才行。使用如下配置,可以使候选列表在一次补全期间自动更新。

(setq ac-auto-start nil)
(defun wl-ac-start ()
  (interactive)
  (setq ac-auto-start 6)
  (ac-start))
(defadvice ac-cleanup (after wl-ac-cleanup ())
  (setq ac-auto-start nil))
(ad-activate 'ac-cleanup)
(define-key global-map (kbd "<f1>") 'wl-ac-start)

自动补全功能入口改为自定义的函数wl-ac-start,在这个函数里,ac-auto-start变量的值被设置为6,即当输入字符达到6个时显示候选列表。当本次自动补全完成后,ac-cleanup函数会清理现场,而自定义的advice wl-ac-cleanup会在它运行后将ac-auto-start设置nil,这样自动补全功能就被关闭了。

三月 22, 2009

Revert buffer

在Emacs缺省配置下,revert-buffer没有映射到任何快捷键,经过了几年痛苦地M-x revert-buffer RET yes RET,终于痛定思痛,弄了个快捷键出来。

(defun wl-revert-buffer (&optional arg)
  (interactive "P")
  (revert-buffer t t arg))

(global-set-key (kbd "<f5>") 'wl-revert-buffer)

通常情况下使用F5,如果不想改变major mode,那么使用C-u F5。比如打开文件a.c,缺省使用c-mode,在手工改为c++-mode后,使用C-u F5保持c++-mode不变,而F5则会恢复为c-mode

三月 18, 2009

Customize psvn

psvn提供了在Emacs里面管理subversion repository的功能,我根据自己的喜好做了如下的配置:

(eval-after-load 'psvn
  '(progn
     (setq svn-status-hide-unknown t)
     (setq svn-status-hide-unmodified t)
     (add-hook 'svn-log-edit-done-hook
               (lambda ()
                 (kill-buffer svn-log-edit-buffer-name)
                 (with-current-buffer svn-status-buffer-name
                   (svn-status-update-cmd nil))))))

*svn-status* buffer里隐藏没有放入版本控制的文件,以及放入版本控制但是没有修改过的文件。如果想查看这两类文件的话,可以使用快捷键?_关闭隐藏功能。

Hook里面实现了两个功能,当提交成功后,先关掉编写log的buffer,然后更新(否则查询log时看不到最新提交的log)。

三月 15, 2009

Auto complete on demand

随着使用越来越多,觉得auto-complete自动弹出下拉菜单很不爽,于是改成按F1才弹出候选列表,配置如下:

(setq ac-auto-start nil)
(define-key global-map (kbd "<f1>") 'ac-start)

三月 10, 2009

Exclude packages from yum update permanently

yum update的时候遇到kmod-fglrx冲突的问题,不知道为什么在我的fedora 9上一定要安装两个不同版本的ATI驱动程序,事实上我一直在使用akmod-fglrx。为了让yum update永远忽略各个版本的kmod-fglrx,只需在/etc/yum.conf文件里添加如下一行即可:

exclude=kmod-fglrx*

三月 06, 2009

email

工作上,公司使用MS Outlook,每天的邮件不多,十几封,凑合着也就用了。有一段日子感觉特别不爽,于是Setup your own IMAP to MS Exchange。在Linux上,我同时使用三种客户端——Thunderbird,mutt,以及Gnus。Thunderbird+slideshow扩展是看图片附件的利器;mutt是处理邮件的最佳选择;而Gnus+Org Mode则用于管理日程。三种工具各有优点。在家里是Firefox+Gmail,不过也配置了mutt和Gnus去访问Gmail。另外我还Backup gmail with offlineimap

mutt的配置参见DotMuttrc;Gnus的配置参见wl-fedora-init.el中关于Gnus的部分。由于我基本不用这些客户端发邮件,所以可能没有smtp的设置,即使有,也没有测试完全。另外,我还没有找到用Gnus订阅Gmail中名字为中文的group(Gmail的术语是label)。

三月 03, 2009

Subscribe git mailing list with gnus

不想再用GMail订阅邮件列表了,便尝试了gnus。方法是,在*Group* buffer里

G m gmane.comp.version-control.git RET nntp RET news.gmane.org RET