2

dired は、任意の比較機能に従ってファイル/フォルダーをソートするためのインターフェースを提供していないようです。(デフォルトでは、名前と日付による並べ替えのみが許可されています)。

この並べ替えのメカニズムを特定するためにソース コードを調べたところ、再表示を行うのは(revert-buffer)in dired-sort-toggle(in ) の呼び出しであることがわかりました。dired.elこれにより、dired は単純に特定のスイッチを指定して ls コマンドを実行し、出力をバッファーに読み込むことがわかりました。

diredのls関数をカスタムのものに向けるよりも、このカスタムソートを達成するためのより良い方法はありますか? dired バッファー内のファイル/ディレクトリの順序付きリストを保持する変数が存在する可能性があると感じています。これを再配置する可能性があります。

変数を見つけましたdired-subdir-alistが、これにはトップディレクトリのみが含まれているようです(ドキュメントによると、これはまさに私が望むリストのようです)

dired-subdir-alist は、`dired.el' で定義されている変数です。ドキュメンテーション: サブディレクトリとそのバッファ位置の関連リスト。各サブディレクトリには要素 (DIRNAME . STARTMARKER) があります。要素の順序は、バッファ内の順序の逆です。単純なケースでは、このリストには 1 つの要素が含まれます。

どうすればそのような変数を見つけることができますか?

4

2 に答える 2

2

あなたの理解は正しいです。そして、@Stefan が指摘するように、ls-lisp.elある程度の柔軟性を提供します。

ライブラリDired Sort Menuも参照してください。これにより、少なくともより多くのls可能性が提供され、並べ替え順序を組み合わせることができます。(ただし、任意の並べ替え順序を提供することはできません。これについては、 を参照してくださいls-lisp.el。)

于 2013-09-13T21:37:20.937 に答える
1

の Elisp 実装である ls-lisp を使用することをお勧めしますinsert-directory。これは Dired が (通常) ls を実行するために使用する関数です。これは通常、ls存在しないことが多いWindows で使用されます。

(require 'ls-lisp)

独自のソート機能を使用できるようにコードを微調整するのは簡単なはずです。

于 2013-09-13T12:59:28.190 に答える