Документация строк и компиляция
При загрузке функций и переменных Emacs из байткодированного файла, он обычно не загружает их строки документации в память. Каждая строка документации динамически загружается из байткодированного файла только по мере необходимости. Это экономит память и ускоряет загрузку, пропуская обработку строк документации.
У этого свойства есть недостаток: если вы удаляете, перемещаете или изменяете байткодированный файл (например, компилируя новую версию), Emacs может больше не иметь доступа к строке документации ранее загруженных функций или переменных. Такая проблема обычно возникает только, если вы сами собираете Emacs и редактируете и/или перекомпилируете файлы исходного кода Lisp. Чтобы решить это, просто перезагрузите каждый файл после перекомпиляции.
Динамическая загрузка строк документации из байткодированных файлов определяется во время компиляции для каждого байткодированного файла. Ее можно отключить с помощью опции byte-compile-dynamic-docstrings.
- Опция пользователя: byte-compile-dynamic-docstrings
-
Если это значение не
nil, байткодировщик генерирует байткодированные файлы, настроенные для динамической загрузки строк документации.Чтобы отключить функцию динамической загрузки для определенного файла, установите эту опцию в значение
nilв его строке заголовка (см. Локальные переменные в файлах в Руководстве GNU Emacs), примерно так:-*-byte-compile-dynamic-docstrings: nil;-*-
Это полезно в основном, если вы ожидаете изменения файла и хотите, чтобы сессии Emacs, которые уже загрузили его, продолжали работать при изменении файла.
Внутренне динамическая загрузка строк документации осуществляется путем записи байткодированных файлов со специальным конструктом Lisp-читателя, ‘#@count’. Этот конструкт пропускает следующие count символов. Он также использует конструкт ‘#$’, который обозначает имя этого файла как строку. Не используйте эти конструкции в файлах исходного кода Lisp; они не предназначены для того, чтобы быть понятными людям, читающим файл.
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/Docs-and-Compilation.html