Respostas:
A ordem de classificação na lista * Conclusões * é determinada pela display-sort-function
propriedade da sua tabela de conclusão (conforme retornado por completion-metadata
). No seu caso, sua tabela de conclusão não possui essa propriedade; portanto, ela volta ao padrão, que é classificar em ordem alfabética.
Você pode usar:
(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))))
e depois
(completing-read "test: " (my-presorted-completion-table '("a" "b" "c")))
[Isso pressupõe que você esteja usando lexical-binding
. ]
Dê completing-read
uma lista de listas e ela respeitará a ordem:
(completing-read "test: " '(("a") ("b") ("c")))
(completing-read "test: " '(("c") ("b") ("a")))
A doutrina diz:
(completing-read PROMPT COLLECTION &optional PREDICATE
REQUIRE-MATCH INITIAL-INPUT HIST DEF INHERIT-INPUT-METHOD)
Leia uma sequência no minibuffer, com conclusão. PROMPT é uma string para solicitar; normalmente termina em dois pontos e um espaço. COLEÇÃO pode ser uma lista de strings, uma lista, uma lista ou uma tabela de hash. ...
Portanto, pode levar um alist como uma coleção. Na verdade, você está criando um alist com chaves, mas sem valores.
Eu sugeriria não usar este feitiço antigo.
O built-in ido-completing-read
não tem essa deficiência:
(ido-completing-read "test: " '("a" "b" "c"))
(ido-completing-read "test: " '("c" "b" "a"))
Nem helm
:
(helm :sources
`((name . "test: ")
(candidates . ("a" "b" "c"))))
(helm :sources
`((name . "test: ")
(candidates . ("c" "b" "a"))))
ido-completing-read
é que ele tem um caractere ^
de nova linha estranho semantic-format-tag-summarize
. Quanto ao Helm, não posso assumir que todos o usem. É por isso que completing-read
é a única opção.
semantic-format-tag-summarize
lhe der.
ido
semantic-format-tag-summarize
retorna algo no final, mas o caractere não é exibido em completing-read
ou helm-comp-read
. Eu já escrevi outra função no lugar de semantic-format-tag-summarize
, sem rosto ainda. Para exibir tags (com cores) para os usuários, ainda uso, semantic-format-tag-summarize
mas em vez disso, um buffer personalizado com widgets de texto.
semantic-format-tag-summarize
retorna no final. Eu tinha uma solução, mas ainda quero saber uma solução para completing-read
. Eu sei que Helm consegue, mas só queria saber se completing-read
existe uma maneira fácil .
Se você usar Sincelos , o pedido será respeitado completing-read
.
(E você pode classificar usando ordens de classificação diferentes , de forma interativa ou via Lisp. E, ao contrário do Emacs de baunilha, a classificação afeta a *Completions*
exibição e a ordem do ciclo.)
ido-completing-read
está tendo algum problema.
completing-read
com pingentes. Você pode até ligar icicle-mode
temporariamente (por exemplo, para a chamada para completing-read
), usando, por exemplo, macro icicle-with-icy-mode-ON
.
icomplete
também quiser respeitar o pedido, poderá adicionar um(cycle-sort-function . ,#'identity)
à lista de metadados.