Написание динамически загружаемых модулей
В этом разделе описывается интерфейс API модулей Emacs и как его использовать при написании расширяющих модулей для Emacs. Интерфейс API модулей определён на языке программирования C, поэтому описание и примеры в этом разделе предполагают, что модуль написан на C. Для других языков программирования вам необходимо использовать соответствующие обертки, интерфейсы и средства для вызова кода C. Код Emacs на C требует компилятора C99 или более поздней версии (см. Диалект C), и поэтому примеры кода в этом разделе также следуют этому стандарту.
Написание модуля и его интеграция в Emacs включают следующие задачи:
- Написание кода инициализации модуля.
- Написание одного или нескольких функций модуля.
- Обмен значениями и объектами между Emacs и функциями вашего модуля.
- Обработка условий ошибок и нелокальных выходов.
Следующие подразделы описывают эти задачи и сам интерфейс API более подробно.
После написания модуля скомпилируйте его, чтобы получить общую библиотеку, согласно соглашениям используемой платформы. Затем поместите общую библиотеку в каталог, упомянутый в load-path, где Emacs её найдёт. (см. Поиск библиотек).
Если вы хотите проверить соответствие модуля интерфейсу API динамических модулей Emacs, вызовите Emacs с опцией --module-assertions. См. Начальные опции в Руководстве пользователя GNU Emacs.
| • Инициализация модуля | ||
| • Функции модуля | ||
| • Значения модуля | ||
| • Разное для модулей | ||
| • Нелокальные вызовы в модулях |
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Writing-Dynamic-Modules.html