私は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/aand/mnt/aのように呼び出すとしa <bar>ますa <mnt>。次に、バッファを切り替えるために使用するときにido、完全なファイル名から選択する必要はありませんが、正しいバッファになります。