默认情况下,Emacs 24 可以处理阿拉伯语、希伯来语和其他从右到左 (RTL) 的语言。我有多语言术语模拟器可以在 X 中处理这个问题,但我想在 emacs 中使用 eshell 来查看非英文字符文件名(我有很多)。当我使用 eshell 时,字符的顺序不正确,并且拼写成乱码。 (setq-default bidi-display-reordering t)
(这是默认设置)显然没有区别。
这可能吗?
我相信您正在通过 emacs + mlterm 进行双重重新排序,并且需要禁用一个。
您的屏幕截图显示在上半部分 mlterm 成功检测到逐行基本方向并重新排序字符。并且默认情况下,Emacs 24 会在终端中重新排序 bidi,假设是 non-bidi LTR termianl。将两者结合起来会导致 ABC -> CBA -> ABC 的双重重新排序。
您有 2 个选项:
在 mlterm 中禁用 bidi(至少在运行 emacs 时,不知道如何自动化)。
在 emacs 中禁用 bidi(至少在 mlterm 下运行时)。即将双向显示重新排序设置为nil,而不是t。
我希望第一个会更好。mlterm 只能给你一个愚蠢的“bidi display”层,这在编辑器之上可能会令人困惑;emacs 为您提供“双向编辑”,其中有人想到了整个交互应该如何工作。
xterm-mouse-mode
但是(未经测试的推测)它适用于终端坐标,并且需要额外的工作才能将它们与逻辑顺序文本匹配。PS我不确定为什么最终结果是右对齐的,因为之前似乎有一个空行所以Emacs应该将它视为一个新段落,决定它是RTL并将右对齐文本发送到mlterm,我希望mlterm 然后反转该行,使其左对齐。我可能错过了一些东西。