回答:
* Completions *リストのソート順は、display-sort-function
補完テーブル(によって返されるcompletion-metadata
)のプロパティによって決まります。あなたのケースでは、補完表にはそのようなプロパティがないため、アルファベット順にソートするというデフォルトにフォールバックします。
以下を使用できます。
(defun my-presorted-completion-table (completions)
(lambda (string pred action)
(if (eq action 'metadata)
`(metadata (display-sort-function . ,#'identity))
(complete-with-action action completions string pred))))
その後
(completing-read "test: " (my-presorted-completion-table '("a" "b" "c")))
[これはあなたが使用していることを前提としていますlexical-binding
。]
completing-read
リストのリストを与えると、順序が尊重されます:
(completing-read "test: " '(("a") ("b") ("c")))
(completing-read "test: " '(("c") ("b") ("a")))
docstringは言う:
(completing-read PROMPT COLLECTION &optional PREDICATE
REQUIRE-MATCH INITIAL-INPUT HIST DEF INHERIT-INPUT-METHOD)
ミニバッファー内の文字列を、補完して読み取ります。PROMPTはプロンプトを表示する文字列です。通常は、コロンとスペースで終わります。COLLECTIONは、文字列のリスト、alist、obarray、またはハッシュテーブルです。...
したがって、それはコレクションとしてalistを取ることができます。実際には、キーはあるが値はない連想リストを作成しています。
私はこの古代の呪文を使用しないことをお勧めします。
組み込みにido-completing-read
はこの欠陥はありません:
(ido-completing-read "test: " '("a" "b" "c"))
(ido-completing-read "test: " '("c" "b" "a"))
どちらもしませんhelm
:
(helm :sources
`((name . "test: ")
(candidates . ("a" "b" "c"))))
(helm :sources
`((name . "test: ")
(candidates . ("c" "b" "a"))))
ido-completing-read
は、^
からの奇妙な改行文字があることsemantic-format-tag-summarize
です。Helmについては、誰もが使用できるとは限りません。それcompleting-read
が唯一の選択肢である理由です。
semantic-format-tag-summarize
ます。
ido
semantic-format-tag-summarize
は最後に何かを返しますが、文字はcompleting-read
またはに表示されませんhelm-comp-read
。の代わりに別の関数をすでに書いてsemantic-format-tag-summarize
いますが、まだ顔はありません。ユーザーにタグを(色付きで)表示するために、私はまだ使用してsemantic-format-tag-summarize
いますが、代わりにテキストウィジェット付きのカスタムバッファーを使用しています。
semantic-format-tag-summarize
最後に何が返ってくるのかを見つけたら、バグをイドに提出するでしょう。解決策はありましたが、それでも解決策を知りたいですcompleting-read
。Helmでそれができることは知っていますが、簡単な方法がcompleting-read
存在するかどうかを知りたかっただけです。
つららを使用する場合、順序はによって尊重されcompleting-read
ます。
(そして、対話的にまたはLispを介して、さまざまな並べ替え順序を使用して並べ替えることができます。そして、バニラEmacsとは異なり、並べ替えは*Completions*
表示順序と循環順序の両方に影響します。)
ido-completing-read
、いくつかの問題があります。
completing-read
です。Iciclesを使用するだけです。たとえばmacroを使用して、icicle-mode
一時的に(たとえばの呼び出しのためにcompleting-read
)オンにすることもできicicle-with-icy-mode-ON
ます。