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-readListelerin 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 PREDICATEREQUIRE-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-readbu 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-readtek seçenek var.
semantic-format-tag-summarizeSize ne verirse verin.
ido
semantic-format-tag-summarizesonunda döner bir şey, ama karakter görüntülenmez completing-readveya helm-comp-read. Zaten semantic-format-tag-summarizehenüz yüzü olmayan başka bir işlev yazdım . Etiketleri (renklerle) kullanıcılara göstermek için, yine semantic-format-tag-summarizede metin widget'larıyla özel bir tampon kullanıyorum.
semantic-format-tag-summarizesonunda 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-readolmadığı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-readbazı problemler yaşıyor.
completing-readbuz sarkıtları ile kullanın . Hatta , örneğin, makro kullanarak, icicle-modegeçici olarak (ör. Çağrı için completing-read) açabilirsiniz icicle-with-icy-mode-ON.
icompletede sipariş saygı, bir ekleyebilir(cycle-sort-function . ,#'identity)meta listesine.