前: File Name Completion, 上: File Names


24.8.7 標準ファイル名

Lispプログラムで使われるほとんどのファイル名は、 ユーザーが入力したものです。 しかし、Lispプログラムでは、 特定目的の標準ファイル名を指定する必要がある場合があります。 典型的には、各ユーザーごとのカスタマイズ情報を保持するものです。 たとえば、省略形の定義は(デフォルトでは) ファイル~/.abbrev_defsに保存されます。 パッケージcompletionは、 補完情報をファイル~/.completionsに保存します。 これらは、Emacsで特定目的に使われる多くの標準ファイル名のうちの2つです。

さまざまなのオペレーティングシステムには、 正しいファイル名やユーザーのプロフィールデータに使うファイル名に 独自の慣習があります。 標準ファイル名を使用するファイルを読み込むLispプログラムでは、 各システムごとに当該システムに適したファイル名を使うべきです。 関数convert-standard-filenameは、これを簡単にします。

— 機能: convert-standard-filename filename

この関数は、ファイル名filenameを使用しているオペレーティングシステム の慣習に従うように変換し、新たな文字列として結果を返す。

Lispプログラムにおいて標準ファイル名を指定する推奨方法は、 GNUとUNIXシステムの慣習に従った名前を選ぶことです。 つまり、ピリオドで始まる非ディレクトリ部分を選び、 それを直接使うかわりにconvert-standard-filenameに渡します。 パッケージcompletionからの例をつぎに示します。

     (defvar save-completions-file-name
             (convert-standard-filename "~/.completions")
       "*The file name to save completions to.")

GNUとUNIXシステム、および、他のいくつかのシステムでは、 convert-standard-filenameは引数を未変更で返します。 別のシステムでは、システムの慣習に従うように名前を変更します。

たとえば、MS-DOSではこの関数は、先頭の`.'を`_'に、 `.'がどこにもなければ名前の途中の`_'を`.'に、 8文字目のうしろに`.'がなければ`.'を挿入し、 `.'以降の3文字よりうしろを切り詰めるなどを行います。 (これ以外にも変更する。) したがって、.abbrev_defs_abbrev.defとなり、 .completions_complet.ionとなります。