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

Emacs 23.2中不可读的缓冲区名称,emacs,character-encoding,elisp,Emacs,Character Encoding,Elisp,我刚从Emacs 21.2升级到23.2(在Windows XP上),虽然我设法调整了我的.Emacs以适应新的更改,但我找不到解决无法读取的缓冲区名称的方法: 无论是在微型缓冲区中,还是在缓冲区菜单中,字符都不能正常显示。相反,我看到的是臭名昭著的Unicode空白矩形 知道怎么解决吗 谢谢 更新:同样,所有缓冲区都会完美地显示(相同的字体)-即使有语法高亮显示。包含缓冲区名称的缓冲区也会正确显示所有内容,但缓冲区名称除外。奇怪 这可能与Emacs 23.2中引入的名为“”的新功能有关吗?矩形

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

无论是在微型缓冲区中,还是在缓冲区菜单中,字符都不能正常显示。相反,我看到的是臭名昭著的Unicode空白矩形

知道怎么解决吗

谢谢

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


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

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


还是Emacs假定文件名编码错误的问题?如果是这样,请提供更多信息,例如文件名的编码方式、Emacs将其解释为什么以及工作和非工作文件名的示例。

OK-在gnu.Emacs.help的Tim X的帮助下,我在my.Emacs中发现了破坏新版本的违规行(这两条语句都需要注释掉!):

根据Tim的建议,我使用选项菜单设置字体,然后将其保存到my.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%跨平台的)。

Gilles,非常感谢您的快速回答。缓冲区本身可以很好地显示文件内容,minibuffer字体是否与其他缓冲区相同?此外,在同一缓冲区菜单列表中,“CRM缓冲区”列显示矩形,而“文件”列正确显示文件名。我怀疑问题在于缓冲区名称的独特之处。例如,Dired模式可以正确显示所有内容。我认为默认情况下Windows XP文件名编码是Unicode?纳森,我刚刚注意到你的问题:不,我的字体没有改变。我的配置管理非常严格,我可以非常自信地告诉您,唯一改变的是Emacs(从21.2升级到23.2)。
(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")))))