Режим сокращений Emacs на естественных языках

Я часто использую режим сокращений в Emacs, когда пишу прозу или просто делаю заметки. Было бы неплохо, если бы был какой-либо способ определения аббревиатур для конкретного языка, например. если я напишу «proj» в английском тексте, он расширится до «project», а если я напишу его в шведском тексте, он расширится до «projekt». Точно так же «riskfac» расширится до «фактор риска» на английском языке, но «рискфактор» на шведском языке. Как это сделать?

Было бы особенно хорошо, если бы это можно было связать с ispell-dictionary, который используется в настоящее время. Я знаю, что существуют разные таблицы сокращений, но они относятся к режимам, а не к языкам.

Любые идеи здесь?


person Sebastian I    schedule 25.01.2015    source источник


Ответы (2)


Для произвольного текста я обычно использую pabbrev.el (который я написал!), но есть несколько других пакетов, которые теперь делают то же самое — динамическое расширение аббревиатуры в зависимости от того, что вы уже написали. Это, как правило, дает определенную степень языковой специфичности на практике.

В противном случае, я думаю, вам нужно что-то, чтобы переключать таблицы сокращений в разных буферах. Возможно, вы могли бы подключить это к методам ввода, если вы их используете, тогда Emacs будет знать, какой язык вы используете.

person Phil Lord    schedule 25.01.2015

Подумайте о том, чтобы попробовать dynamic-completion-mode (стандартная библиотека completion.el).

Вы можете переключаться между различными файлами динамического завершения, по одному для каждого языка. Опция save-completions-file-name содержит имя файла, но ничто не говорит о том, что вы не можете динамически изменять его значение, например. с помощью команды, чтобы переключаться между несколькими наборами дополнений. (Естественно, такая команда должна сохраняться в один файл перед переключением на другой.)

"Документ" для dynamic-completion-mode находится в Commentary библиотеки completion.el. Библиотека старенькая, но все равно вполне полезная, ИМХО. Выдержки из Commentary:

This watches all the words that you type and remembers them.  When
typing a new word, pressing "complete" (meta-return) "completes" the
word by inserting the most recently used word that begins with the
same characters.  If you press meta-return repeatedly, it cycles
through all the words it knows about.

If you like the completion then just continue typing, it is as if you
entered the text by hand.  If you want the inserted extra characters
to go away, type control-w or delete.  More options are described below.

The guesses are made in the order of the most recently "used".  Typing
in a word and then typing a separator character (such as a space) "uses"
the word.  So does moving a cursor over the word.  If no words are found,
it uses an extended version of the dabbrev style completion.

(См. также Завершение сосулек для dynamic-completion-mode.)

person Drew    schedule 26.01.2015