Spec-Zone.ru › Elisp

Стандартные имена файлов

Иногда программе Emacs Lisp необходимо указать стандартное имя файла для определенного использования — обычно для хранения данных конфигурации, заданных текущим пользователем. Обычно такие файлы должны располагаться в каталоге, указанном в user-emacs-directory, который по умолчанию обычно является ~/.config/emacs/ или ~/.emacs.d/ (см. Как Emacs находит ваш файл инициализации в Руководстве GNU Emacs). Например, определения сокращений по умолчанию хранятся в ~/.config/emacs/abbrev_defs или ~/.emacs.d/abbrev_defs. Наиболее простой способ указать имя такого файла — использовать функцию locate-user-emacs-file.

Функция: locate-user-emacs-file base-name &optional old-name

Эта функция возвращает абсолютное имя файла конфигурации или данных, специфичного для Emacs. Аргумент base-name должен быть относительным именем файла. Результат — абсолютное имя файла в каталоге, указанном в user-emacs-directory; если этот каталог не существует, функция создаёт его.

Если необязательный аргумент old-name не nil, он указывает на файл в домашнем каталоге пользователя, ~/old-name. Если такой файл существует, результат — абсолютное имя этого файла, а не файла, указанного base-name. Этот аргумент предназначен для использования пакетами Emacs для обеспечения обратной совместимости. Например, до появления user-emacs-directory, файл сокращений находился в ~/.abbrev_defs. Вот определение abbrev-file-name:

(defcustom abbrev-file-name
  (locate-user-emacs-file "abbrev_defs" ".abbrev_defs")
  "Default name of file from which to read abbrevs."
  …
  :type 'file)

Функция более низкого уровня для стандартизации имён файлов, которую locate-user-emacs-file использует в качестве подпрограммы, — это convert-standard-filename.

Функция: convert-standard-filename filename

Эта функция возвращает имя файла на основе filename, которое соответствует соглашениям текущей операционной системы.

В системах GNU и других системах, подобных POSIX, она просто возвращает filename. В других операционных системах она может применять специфические для системы соглашения об именах файлов; например, в MS-DOS эта функция выполняет различные изменения для соблюдения ограничений имён файлов MS-DOS, включая преобразование любого ведущего ‘.’ в ‘_’ и усечение до трёх символов после ‘.’.

Рекомендуемый способ использования этой функции — указать имя, соответствующее соглашениям систем GNU и Unix, и передать его в convert-standard-filename.

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/Standard-File-Names.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API