私はcompleting-read
ファイルシステムパスのリストを扱っています。("~/parent/child" "/parent/child")
.
の出力をマスクして、completing-read/ido-completing-read
のみが表示されるようにしたいchild
のですが、それでも完全なパスが返されます。
これはまったく可能ですか?
宜しくお願いします、ラット
回答: いいえ、できません。完了読み取りでは、文字列のセマンティクスが考慮されていないためです。
これは可能ですが、completed-list を複数回呼び出す必要があります。
この関数には文字列のリストが渡され、そのリストから文字列を選択するのに役立ちます。
Completing-list は、文字列の内容を制御できません。パスとしての文字列のセマンティクスは気にしません。文字列のリストのみが表示されます。
ですから、思い通りにするためには、カレントディレクトリのファイル一覧で一度呼び出して、ディレクトリを選択したら、まずそのディレクトリに移動してから、ファイル一覧でもう一度呼び出します。そのディレクトリなどから
pwd を初期と同じに保ちたい場合は、返されたときに元のディレクトリに再度変更します。
(cd (concat default-directory
(completing-read "> " (directory-files default-directory ))))
パッケージuniquify
は、あなたが望むものと同様のことを行います。同じファイル名のファイルを訪問する 2 つのバッファがある場合、2 つを区別するために末尾に文字列が追加されます。
たとえば、ファイルがあり、バッファを/etc/foo/bar/a
and/mnt/a
のように呼び出すとしa <bar>
ますa <mnt>
。次に、バッファを切り替えるために使用するときにido
、完全なファイル名から選択する必要はありませんが、正しいバッファになります。