Next: , Previous: , Up: EmacsとMicrosoft Windows/MS-DOS   [Contents][Index]


H.4 MS-Windowsでのlsのエミュレーション

Diredは通常、Diredバッファーで表示するディレクトリーリストを生成するために、外部プログラムのlsを使用します。しかしMS-WindowsとMS-DOSには、GNU lsのいくつかのポートは存在するものの、システムにはそのようなプログラムがありません。したがって、そのようなシステム上のEmacsは、ls-lisp.elパッケージを使用することにより、Lispでlsエミュレートします。ls-lisp.elは、lsのほぼ完全なエミュレーションを提供し、エミュレーションに特化したオプションと機能もあります。 それらについては、このセクションで説明します。

lsエミュレーションは、lsスイッチの多くをサポートしますが、すべてをサポートする訳ではありません。サポートされているオプションは、-A-a-B-C-c-G-g-h-i-n-R-r-S-s-t-U-u-v-Xです。-Fオプションは、部分的にサポートされています(ファイルをクラス化する文字を追加しますが、シンボリックリンクのフォローを抑止しません)。

MS-WindowsとMS-DOSでは、ls-lisp.elはEmacsが構築されるとき事前ロードされるので、それらの環境では常にlsのLispエミュレーションが使用されます。ポートされたlsがある場合、ls-lisp-use-insert-directory-programを非nil値にセットすることにより、変数insert-directory-programにセットされた名前の外部プログラムを使用するように戻すことができます。

ls-lisp.elがファイルをソートする順序は、以下で説明するいくつかのカスタマイズ可能なオプションに依存します。

デフォルトのソート順は、システムlocaleから派生したlocale固有ルールにしたがいます。ls-lisp-use-string-collatenil値にカスタマイズすることにより、localeから独立したソート順にすることができます。

GNUおよびUnixシステムでは、localeのエンコーディングがUTF-8のときの照合順はUCA(Unicode Collation Algorithm: Unicode照合順序アルゴリズム )にしたがいます。MS-Windowsで同様の効果を得るには、変数ls-lisp-UCA-like-collationが非nil値をもつべきです(これがデフォルトです)。結果となるソート順は句読点、シンボル文字、空白文字を無視するので、.foobarfoobarfoo barは別々ではなく一緒に表示されるでしょう。

デフォルトでは、ls-lisp.elはディレクトリーのリストを生成するのに、大文字小文字を区別するソート順を使用します。これは他のプラットフォームと同じような見映えにリストするためです。大文字小文字を区別せずにファイルをソートしたい場合は、変数ls-lisp-ignore-caseに非nil値をセットしてください。

デフォルトでは、lsの動作をエミュレートするために、ファイルとサブディレクトリーは一緒にソートされます。しかしネイティブのMS-WindowsとMS-DOSのファイルマネージャーでは、ファイルの前にディレクトリーがリストされます。このように動作させたい場合は、オプションls-lisp-dirs-firstを非nil値にカスタマイズしてください。

変数ls-lisp-verbosityは、ls-lisp.elが表示するファイル属性を制御します。値にはnil、またはシンボルlinksuidgidを1つ以上含むリストを指定します。linksは、そのファイルデータに関連付けられている(links toとも言います)別のファイルの数を表示することを意味し、これはNTFSボリュームでのみ有用です。uidはそのファイルを所有するユーザーの、数字による識別子を表示することを意味します。gidはそのファイルの所有者のグループの、数字による識別子を表示することを意味します。デフォルト値は(links uid gid)で、3つのすべてのオプション属性が表示されます。値nilはこれらの属性を何も表示しないことを意味します。

変数ls-lisp-emulationは、上記で説明した3つのオプションls-lisp-ignore-casels-lisp-dirs-firstls-lisp-verbosityでデフォルトをセットすることにより、lsエミュレーションの風合いを制御します。このオプションの値には、以下のシンボルを指定できます:

GNU
nil

GNUシステムをエミュレートします(デフォルト)。これはls-lisp-ignore-casels-lisp-dirs-firstnilに、ls-lisp-verbosity(links uid gid)にセットします。

UNIX

Unixシステムをエミュレートします。GNUと同様ですが、ls-lisp-verbosity(links uid)にセットします。

MacOS

macOSをエミュレートします。ls-lisp-ignore-casetに、ls-lisp-dirs-firstls-lisp-verbositynilにセットします。

MS-Windows

MS-Windowsをエミュレートします。ls-lisp-ignore-casels-lisp-dirs-firsttにセットし、ls-lisp-verbosityを、Windows 9Xではnil、Windowsのモダンなバージョンではtにセットします。これらのプラットフォームのEmacsユーザーの多くがデフォルトとしてGNUを好むため、たとえWindowsにおいても、デフォルトのエミュレーションはMS-Windowsではないことに注意してください。

これ以外の値をls-lisp-emulationにセットするのは、GNUをセットするのと同じです。このオプションをカスタマイズすることにより、必要に応じて3つの従属オプションを更新するために、関数ls-lisp-set-optionsが呼び出されます。ls-lisp.elがロードされた後(MS-WindowsとMS-DOSでは事前ロードされることに注意してください)に、customizeを使用せずにこの変数の値を変更した場合、この関数を手動で呼び出して、同じ結果を得ることができます。

変数ls-lisp-support-shell-wildcardsは、ファイル名パターンがサポートされる方法を制御します。非nil(デフォルト)の場合、ファイル名パターンはシェルスタイルのワイルドカードとして扱われ、nilの場合はEmacsの正規表現として扱われます。

変数ls-lisp-format-time-listは、ファイルの日付と時刻の書式をフォーマットする方法を定義します。Emacsがカレントlocaleを判断できる場合、この変数の値は無視されます(しかしls-lisp-use-localized-time-formatの値が非nilの場合、Emacsはカレントlocaleが利用できるときでもls-lisp-format-time-listにしたがいます。以下を参照してください)。

ls-lisp-format-time-listの値は、2つの文字列からなるリストです。最初の文字列は、そのファイルがその年に変更されている場合に使用され、2番目の文字列はそれより古いファイルに使用されます。2つの文字列では、日時の一部を置換するために‘%’シーケンスを使用できます。たとえば:

("%b %e %H:%M" "%b %e  %Y")

これらの‘%’シーケンスにたいする文字列の置換は、カレントlocaleに依存することに注意してください。日時のフォーマットの仕様については、Time Parsing in The Emacs Lisp Reference Manualを参照してください。

Emacsは通常、ファイルのタイムスタンプの日時フォーマットに、慣習にしたがったフォーマット、またはISOスタイルのフォーマットを使用します。しかし変数ls-lisp-use-localized-time-formatの値が非nilの場合、Emacsはファイルのタイムスタンプを、ls-lisp-format-time-listの指定にしたがってフォーマットします。ls-lisp-format-time-listの‘%’シーケンスは、localeにしたがった月の名前と曜日名を生成し、それによりDiredの列表示がずれるかもしれません。ls-lisp-use-localized-time-formatのデフォルト値はnilです。