Zarówno:
(completing-read "test: " '("a" "b" "c"))
lub:
(completing-read "test: " '("c" "b" "a"))
daje ten sam wynik w buforze zakończenia po naciśnięciu TAB. Jak sprawić, by przestrzegał porządku sortowania?
Kolejność sortowania na liście * Uzupełnienia * zależy od display-sort-function
właściwości tabeli uzupełnień (zwróconej przez completion-metadata
). W twoim przypadku tabela ukończenia nie ma takiej właściwości, więc wraca do wartości domyślnej, czyli sortowania alfabetycznego.
Możesz użyć:
(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))))
i wtedy
(completing-read "test: " (my-presorted-completion-table '("a" "b" "c")))
[Zakłada się, że używasz lexical-binding
. ]
icomplete
również uszanować kolejność, możesz dodać znak(cycle-sort-function . ,#'identity)
do listy metadanych.Podaj
completing-read
listę list, a uszanuje kolejność:Dokument mówi:
Może zatem przyjmować alist jako zbiór. W efekcie tworzysz listę z kluczami, ale bez wartości.
źródło
Proponuję nie używać tego starożytnego zaklęcia.
Wbudowany
ido-completing-read
nie ma tego niedoboru:Ani też
helm
:źródło
ido-completing-read
jest to, że ma dziwny znak nowej linii^
zsemantic-format-tag-summarize
. Co do Helma, nie mogę założyć, że wszyscy go używają. Dlategocompleting-read
jest jedyną opcją.semantic-format-tag-summarize
ci daje.ido
semantic-format-tag-summarize
zwraca coś na końcu, ale znak nie jest wyświetlany wcompleting-read
lubhelm-comp-read
. Napisałem już inną funkcję zamiastsemantic-format-tag-summarize
bez twarzy. Do wyświetlania znaczników (z kolorami) użytkownikom nadal używam,semantic-format-tag-summarize
ale zamiast tego używam niestandardowego bufora z widżetami tekstowymi.semantic-format-tag-summarize
zwraca na końcu. Miałem rozwiązanie, ale nadal chcę znać rozwiązaniecompleting-read
. Wiem, że Helm może to zrobić, ale chciałem tylko wiedzieć, czy istnieje łatwy sposóbcompleting-read
.Jeśli używasz Sopli, kolejność jest przestrzegana przez
completing-read
.(I możesz sortować za pomocą różnych porządków sortowania , interaktywnie lub przez Lisp. W przeciwieństwie do waniliowych Emacsów, sortowanie wpływa zarówno na
*Completions*
kolejność wyświetlania, jak i kolejność.)źródło
ido-completing-read
ma jakiś problem.completing-read
z Soplami. Możesz nawet po prostu włączyćicicle-mode
tymczasowo (np. Dla połączenia zcompleting-read
), używając npicicle-with-icy-mode-ON
. Makra .