Eshell для имен файлов RTL

#emacs #eshell

#emacs #эшелл

Вопрос:

По умолчанию Emacs 24 может обрабатывать арабский, иврит и другие языки с переводом справа налево (RTL). У меня есть многоязычные эмуляторы терминов, которые обрабатывают это в X, но я хотел бы использовать eshell внутри emacs, чтобы видеть неанглоязычные символьные имена файлов (и, черт возьми, у меня их много). Когда я использую eshell, символы расположены не в правильном порядке, и получается тарабарщина. (setq-default bidi-display-reordering t) (который используется по умолчанию), очевидно, не имеет никакого значения.

Возможно ли это?

Комментарии:

1. eshell в моей настройке работает с арабским языком из коробки. У вас такая же проблема, когда вы используете, например, shell вместо этого? (Любопытно, что ввод bidi shell почти , но не совсем корректен в списках файлов.)

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 варианта:

  1. Отключите bidi в mlterm (по крайней мере, при запуске emacs, не уверен, как это автоматизировать).
  2. Отключите 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, но вы попали в самую точку, и в конце концов я переключил соответствующие настройки.