#emacs #eshell
#emacs #эшелл
Вопрос:
По умолчанию Emacs 24 может обрабатывать арабский, иврит и другие языки с переводом справа налево (RTL). У меня есть многоязычные эмуляторы терминов, которые обрабатывают это в X, но я хотел бы использовать eshell внутри emacs, чтобы видеть неанглоязычные символьные имена файлов (и, черт возьми, у меня их много). Когда я использую eshell, символы расположены не в правильном порядке, и получается тарабарщина. (setq-default bidi-display-reordering t)
(который используется по умолчанию), очевидно, не имеет никакого значения.
Возможно ли это?
Комментарии:
1.
eshell
в моей настройке работает с арабским языком из коробки. У вас такая же проблема, когда вы используете, например,shell
вместо этого? (Любопытно, что ввод bidishell
почти , но не совсем корректен в списках файлов.)2. И еще один вопрос: какой шрифт вы используете и поддерживает ли он необходимый вам набор символов?
3. Я использую eshell на стороне mlterm и запускаю экземпляр tmux. Шрифт и mlterm правильно отображают порядок в других приложениях, но не на арабском языке. Я задавался вопросом, может быть
4. Ваш комментарий был прерван. Можете ли вы заставить арабский (или иврит) работать в командной строке (т. Е. Не Запускать emacs)? Если нет, то это проблема mlterm. Unicode rxvt для терминала работал для меня вместе с DejaVu Sans Mono, чтобы шрифт правильно отображался на арабском языке. Я бы предположил, что то же самое будет работать и на иврите.
5. Да, извините за это. Похоже, эта проблема масштабнее, чем я думал. Кажется, что Bidi работает в mlterm, mlterm tmux, но у меня возникают проблемы даже с пустым
init.el
файлом. Вот о чем я говорю : символы выровнены по правому краю, но, по иронии судьбы, в неправильном порядке в emacs (это test (mlterm) -> tset si a siht (emacs в mlterm)).
Ответ №1:
Я полагаю, что вы получаете двойное переупорядочение с помощью emacs mlterm, и вам нужно отключить его.
На вашем скриншоте в верхней половине показано, что mlterm успешно определяет построчное базовое направление и переупорядочивает символы. И Emacs 24 по умолчанию переупорядочивает bidi в терминале, предполагая, что LTR termianl не является термином LTR. Объединение обоих приводит к двойному переупорядочению ABC -> CBA -> ABC.
У вас есть 2 варианта:
- Отключите bidi в mlterm (по крайней мере, при запуске emacs, не уверен, как это автоматизировать).
- Отключите bidi в emacs (по крайней мере, при запуске под mlterm). Т.е. установите для bidi-display-reordering значение nil, а не t .
Я ожидаю, что первый будет работать лучше. mlterm может предоставить вам только тупой слой «bidi display», который может сбивать с толку поверх редактора; emacs предоставляет вам «редактирование bidi», где кто-то подумал о том, как должно работать все взаимодействие.
- В частности, параллельные «окна» в emacs должны хорошо работать, когда emacs выполняет bidi, и ужасно ломаться, когда работает mlterm.
- OTOH, копирование-вставка с помощью мыши, вероятно, работает лучше, когда mlterm выполняет bidi.
Если emacs отправляет переупорядоченные символы, это то, что будет скопировано при выборе мышью. Emacs в основном может управлять мышью,xterm-mouse-mode
но (непроверенные предположения) он работает с координатами терминала, и потребуется дополнительная работа, чтобы сопоставить их с текстом логического порядка.
PS Я не уверен, почему конечный результат выровнен по правому краю, так как кажется, что перед этим есть пустая строка, поэтому Emacs должен считать это новым абзацем, решить, что это RTL, и отправить текст, выровненный по правому краю, в mlterm, и я ожидаю, что mlterm затем перевернет строку, в результате чего она останется левойвыровнено. Возможно, я что-то упускаю.
Комментарии:
1. Прошло много времени, и впоследствии я перешел на prelude и менее ручную настройку. Я забыл elisp, но вы попали в самую точку, и в конце концов я переключил соответствующие настройки.