Yanıtlar:
* Tamamlamalar * listesindeki sıralama düzeni display-sort-function
, tamamlama tablonuzun özelliğine (tarafından döndürüldüğü şekilde completion-metadata
) göre belirlenir. Sizin durumunuzda, tamamlama tablonuzun böyle bir özelliği yoktur, bu nedenle alfabetik olarak sıralanacak olan varsayılana geri döner.
Kullanabilirsiniz:
(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))))
ve sonra
(completing-read "test: " (my-presorted-completion-table '("a" "b" "c")))
[Bu, kullandığınızı varsayar lexical-binding
. ]
completing-read
Listelerin bir listesini verin ve bu sıraya saygı gösterecektir:
(completing-read "test: " '(("a") ("b") ("c")))
(completing-read "test: " '(("c") ("b") ("a")))
Doktora diyor:
(completing-read PROMPT COLLECTION &optional PREDICATE
REQUIRE-MATCH INITIAL-INPUT HIST DEF INHERIT-INPUT-METHOD)
Minibuffer'da tamamlanmış bir dize okuyun. PROMPT komut istemi; normalde iki nokta üst üste ve boşlukla biter. KOLEKSİYON bir dizi listesi, bir alist, bir obarray veya bir karma tablosu olabilir. ...
Bu nedenle bir alist koleksiyonu olarak alabilir. Aslında, anahtarları olan, ancak değerleri olmayan bir alist oluşturuyorsunuz.
Bu kadim büyüyü kullanmamanızı öneririm.
Yerleşik ido-completing-read
bu eksikliği yok:
(ido-completing-read "test: " '("a" "b" "c"))
(ido-completing-read "test: " '("c" "b" "a"))
Ayrıca helm
:
(helm :sources
`((name . "test: ")
(candidates . ("a" "b" "c"))))
(helm :sources
`((name . "test: ")
(candidates . ("c" "b" "a"))))
ido-completing-read
, garip yeni satır karakteri ^
olması semantic-format-tag-summarize
. Helm'e gelince, herkesin bunu kullandığını varsayamam. Bu yüzden completing-read
tek seçenek var.
semantic-format-tag-summarize
Size ne verirse verin.
ido
semantic-format-tag-summarize
sonunda döner bir şey, ama karakter görüntülenmez completing-read
veya helm-comp-read
. Zaten semantic-format-tag-summarize
henüz yüzü olmayan başka bir işlev yazdım . Etiketleri (renklerle) kullanıcılara göstermek için, yine semantic-format-tag-summarize
de metin widget'larıyla özel bir tampon kullanıyorum.
semantic-format-tag-summarize
sonunda ne döndüğünü öğrendikten sonra Ido'ya hata göndereceğim . Bir çözüm buldum ama hala bir çözüm bilmek istiyorum completing-read
. Helm'in başarabileceğini biliyorum ama sadece kolay bir yol olup completing-read
olmadığını bilmek istedim .
Buz sarkıtları kullanırsanız , sıraya saygı duyulur completing-read
.
(Ve etkileşimli olarak veya Lisp aracılığıyla farklı sıralama düzenleri kullanarak sıralayabilirsiniz . Vanilya Emacs'ın aksine, sıralama hem *Completions*
görüntüleme hem de bisiklet sırasını etkiler .)
ido-completing-read
bazı problemler yaşıyor.
completing-read
buz sarkıtları ile kullanın . Hatta , örneğin, makro kullanarak, icicle-mode
geçici olarak (ör. Çağrı için completing-read
) açabilirsiniz icicle-with-icy-mode-ON
.
icomplete
de sipariş saygı, bir ekleyebilir(cycle-sort-function . ,#'identity)
meta listesine.