Ou:
(completing-read "test: " '("a" "b" "c"))
ou:
(completing-read "test: " '("c" "b" "a"))
produz o mesmo resultado no buffer de conclusão ao pressionar TAB. Como faço para respeitar a ordem de classificação?
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
. ]
icomplete
também quiser respeitar o pedido, poderá adicionar um(cycle-sort-function . ,#'identity)
à lista de metadados.Dê
completing-read
uma lista de listas e ela respeitará a ordem:A doutrina diz:
Portanto, pode levar um alist como uma coleção. Na verdade, você está criando um alist com chaves, mas sem valores.
fonte
Eu sugeriria não usar este feitiço antigo.
O built-in
ido-completing-read
não tem essa deficiência:Nem
helm
:fonte
ido-completing-read
é que ele tem um caractere^
de nova linha estranhosemantic-format-tag-summarize
. Quanto ao Helm, não posso assumir que todos o usem. É por isso quecompleting-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 emcompleting-read
ouhelm-comp-read
. Eu já escrevi outra função no lugar desemantic-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 paracompleting-read
. Eu sei que Helm consegue, mas só queria saber secompleting-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.)fonte
ido-completing-read
está tendo algum problema.completing-read
com pingentes. Você pode até ligaricicle-mode
temporariamente (por exemplo, para a chamada paracompleting-read
), usando, por exemplo, macroicicle-with-icy-mode-ON
.