由desktopsavemode引起的Emacs配置失效

最近在修改.emacs配置文件的时候,经常出现修改参数后没有效果的情况,例如明明设置了(setq indent-tabs-mode t),缩进时却是空格,很奇怪。

折腾良久,终于发现是desktop-save-mode搞的鬼(关于desktop-save-mode,可以参考:Saving Emacs Sessions),执行M-x desktop-save时,Emacs中已打开的所有文件的信息会被记录到一个.emacs.desktop文件中,其中包括每个文件的mode信息,就像这样:

(desktop-create-buffer 206
  "c:/Users/gamesun/Desktop/test.c"
  "test.c"
  'c-mode
  '(abbrev-mode hide-ifdef-mode senator-minor-mode semantic-idle-scheduler-mode semantic-idle-summary-mode semantic-idle-local-symbol-highlight-mode semantic-idle-completions-mode semantic-mru-bookmark-mode semantic-decoration-mode linum-mode semantic-tag-folding-mode global-auto-revert-mode helm-mode)
  529
  '(529 nil)
  nil
  nil
  '((tab-width . 4) (indent-tabs-mode) (buffer-file-coding-system . japanese-cp932-dos)))

注意到其中有个(indent-tabs-mode),而其他的c文件都是(indent-tabs-mode . t),这下就明白了,把(indent-tabs-mode)改成(indent-tabs-mode . t)就OK了。

出现这个问题的原因,应该是以前用desktop-save保存时,没有配置indent-tabs-mode,然后就一直被固定成这样了。如果大家遇到类似问题,希望本文能有帮助。

软件环境
Emacs for Windows, version 24.2
OS:Windows7中文版
原文地址:https://www.cnblogs.com/gamesun/p/2839625.html