Emacs 23.2中的不可读缓冲区名称

时间:2010-08-13 21:22:54

标签: emacs character-encoding elisp

我刚从Emacs 21.2升级到23.2(在Windows XP上),当我设法调整我的.emacs以适应新的更改时,我无法找到不可读缓冲区名称的解决方案:

在迷你缓冲区和缓冲区菜单中都不能正常显示字符。相反,我所看到的只是臭名昭着的Unicode空白矩形。

知道如何解决这个问题吗?

感谢。

更新:同样,所有缓冲区都完美显示(相同的字体) - 即使语法高亮显示。包含缓冲区名称的缓冲区也会正确显示所有内容,除缓冲区名称外。怪异。

这可能与Emacs 23.2中引入的名为“uniquify-buffer-name-style”的新功能有关吗?

2 个答案:

答案 0 :(得分:1)

矩形最可能的解释是您的字体没有所需的字符。修复方法是选择不同的字体(或安装相同字体的更完整版本)。

或者Emacs是否假定文件名编码错误?如果是这样,请提供更多信息,例如文件名的编码方式,Emacs将其解释为的内容,以及工作和非工作文件名的示例。

答案 1 :(得分:1)

好的 - 在gnu.emacs.help的Tim X的帮助下,我发现我的.emacs中的违规行打破了新版本(两个语句都需要注释掉!):

     (setq default-frame-alist
            (cons '(font . "-*-Lucida Console-normal-r-*-*-12-*-*-*-c-*-*-
iso8859-1")
                  default-frame-alist))
     (set-default-font
      "-*-Lucida Console-normal-r-*-*-12-*-*-*-c-*-*-iso8859-1")

根据蒂姆的建议,我使用“选项”菜单设置字体,然后将其保存到我的.emacs中。这导致附加以下两行单一声明:

(custom-set-faces
'(default ((t (:inherit nil :stipple nil :background
"Black" :foreground "LightGray" :inverse-video nil :box nil :strike-
through nil :overline nil :underline nil :slant normal :weight
normal :height 90 :width normal :foundry "outline" :family "Lucida
Console")))))

通过这样做,我不确定我的.emacs是否会继续在Linux中工作(就像以前一样 - 我的.emacs以前是100%跨平台的。)

相关问题