3

私はcompleting-readファイルシステムパスのリストを扱っています。("~/parent/child" "/parent/child").

の出力をマスクして、completing-read/ido-completing-readのみが表示されるようにしたいchildのですが、それでも完全なパスが返されます。

これはまったく可能ですか?

宜しくお願いします、ラット

4

2 に答える 2

4

回答: いいえ、できません。完了読み取りでは、文字列のセマンティクスが考慮されていないためです。

これは可能ですが、completed-list を複数回呼び出す必要があります。

この関数には文字列のリストが渡され、そのリストから文字列を選択するのに役立ちます。

Completing-list は、文字列の内容を制御できません。パスとしての文字列のセマンティクスは気にしません。文字列のリストのみが表示されます。

ですから、思い通りにするためには、カレントディレクトリのファイル一覧で一度呼び出して、ディレクトリを選択したら、まずそのディレクトリに移動してから、ファイル一覧でもう一度呼び出します。そのディレクトリなどから

pwd を初期と同じに保ちたい場合は、返されたときに元のディレクトリに再度変更します。

(cd (concat default-directory
            (completing-read "> " (directory-files default-directory ))))
于 2012-07-28T10:17:26.050 に答える
2

パッケージuniquifyは、あなたが望むものと同様のことを行います。同じファイル名のファイルを訪問する 2 つのバッファがある場合、2 つを区別するために末尾に文字列が追加されます。

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

于 2012-07-28T14:40:17.683 に答える