Previous: , Up: ファイルの名前   [Contents][Index]


26.9.7 標準的なファイル名

Emacs Lispプログラムが特定の用途のために標準的なファイル名を指定することが必要な場合があります。典型的にはカレントユーザーによって指定された設定データを保持する場合が該当します。そのようなファイルは、通常はuser-emacs-directoryで指定されるディレクトリーに配置されて、 デフォルトでは通常は~/.config/emacs/~/.emacs.d/です(How Emacs Finds Your Init File in The GNU Emacs Manualを参照)。たとえばabbrev(abbreviation: 省略形)の定義は、デフォルトでは~/.config/emacs/abbrev_defs~/.emacs.d/abbrev_defsに格納されます。このようなファイル名を指定するためには、関数locate-user-emacs-fileを使用するのがもっとも簡単な方法です。

Function: 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ファイルは~/.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)

ファイル名の標準化のための低レベル関数はconvert-standard-filenameで、これはサブルーチンとしてlocate-user-emacs-fileにより使用されます。

Function: convert-standard-filename filename

この関数はfilenameにもとづいたカレントオペレーティングシステムの慣習に適合するファイル名をリターンする。

GNUや他のPOSIX準拠システムでは単にfilenameをリターンする。その他のオペレーティングシステムではシステム固有のファイル名規約にしたがうだろう。たとえばMS-DOSでは、この関数はMS-DOSファイル名制限にしたがうように先頭の‘.’を‘_’に変換したり、‘.’の後続の文字を3文字に切り詰める等、さまざまな変更を行う。

この関数でGNUとUnixシステムの慣習に適合する名前を指定して、それをconvert-standard-filenameに渡すのが推奨される使用方法である。