2015-01-25 6 views
2

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

Было бы особенно приятно, если бы это могло быть связано с используемым в настоящее время словарем ispell. Я знаю, что существуют разные аббревиатурные таблицы, но они специфичны для режимов, а не для языков.

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

ответ

0

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

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

0

Рассмотрим пытается dynamic-completion-mode (стандартная библиотека completion.el).

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

«Документ» для dynamic-completion-mode находится в библиотеке Commentarycompletion.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. 

(Смотри также Icicles completion for dynamic-completion-mode.)