Previous: File Name Completion, Up: File Names [Contents][Index]
Emacs
Lispプログラムが特定の用途のために標準的なファイル名を指定する必要がある場合があります。典型的には、カレントユーザーにより指定された設定データを保持する場合がそうです。そのようなファイルは通常、user-emacs-directory
により指定されるディレクトリーに置かれ、デフォルトでは~/.emacs.dです(Init Fileを参照)。たとえば、abbrev(abbreviation:
省略形)の定義は、デフォルトでは~/.emacs.d/abbrev_defsに格納されます。このようなファイル名を指定するには、関数locate-user-emacs-file
を使用するのが、もっとも簡単な方法です。
この関数は、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
により使用される。
この関数は、filenameにもとづき、カレントオペレーティングシステムの慣習に適合するファイル名をリターンする。
GNUおよびUnixシステムでは、これは単にfilenameをリターンする。その他のオペレーティングシステムでは、システム固有のファイル名規約にしたがうだろう。たとえばMS-DOSでは、この関数はMS-DOSファイル名制限にしたがうよう、先頭の‘.’を‘_’に変換したり、‘.’の後続の文字を3文字に切り詰める等、さまざまな変更を行う。
この関数でGNUおよびUnixシステムの慣習に適合する名前を指定して、それをconvert-standard-filename
に渡すのが推奨される使用方法である。