ทั้ง:
(completing-read "test: " '("a" "b" "c"))
หรือ:
(completing-read "test: " '("c" "b" "a"))
TABจะให้ผลลัพธ์เดียวกันในบัฟเฟอร์เสร็จสิ้นเมื่อกด ฉันจะทำให้มันเป็นไปตามลำดับการเรียงลำดับได้อย่างไร
ทั้ง:
(completing-read "test: " '("a" "b" "c"))
หรือ:
(completing-read "test: " '("c" "b" "a"))
TABจะให้ผลลัพธ์เดียวกันในบัฟเฟอร์เสร็จสิ้นเมื่อกด ฉันจะทำให้มันเป็นไปตามลำดับการเรียงลำดับได้อย่างไร
คำตอบ:
ลำดับการเรียงลำดับในรายการ * เสร็จสมบูรณ์ * ถูกกำหนดโดยdisplay-sort-functionคุณสมบัติของตารางความสมบูรณ์ของคุณ (ส่งคืนโดยcompletion-metadata) ในกรณีของคุณตารางความสมบูรณ์ของคุณไม่มีคุณสมบัติดังกล่าวดังนั้นจึงกลับไปที่ค่าเริ่มต้นซึ่งจะเรียงลำดับตามตัวอักษร
คุณสามารถใช้ได้:
(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))))
แล้ว
(completing-read "test: " (my-presorted-completion-table '("a" "b" "c")))
lexical-binding[นี้จะถือว่าคุณกำลังใช้ ]
ให้completing-readรายการของรายการและมันจะเคารพคำสั่ง:
(completing-read "test: " '(("a") ("b") ("c")))
(completing-read "test: " '(("c") ("b") ("a")))
docstring พูดว่า:
(completing-read PROMPT COLLECTION &optional PREDICATEREQUIRE-MATCH INITIAL-INPUT HIST DEF INHERIT-INPUT-METHOD)อ่านสตริงใน minibuffer โดยสมบูรณ์ พรอมต์เป็นสตริงที่จะแจ้งให้; โดยปกติแล้วจะสิ้นสุดในลำไส้ใหญ่และช่องว่าง คอลเล็กชันสามารถเป็นรายการของสตริง, alist, obarray หรือตารางแฮช ...
ดังนั้นจึงสามารถใช้ alist เป็นชุดสะสมได้ ผลคือคุณกำลังสร้าง alist ด้วยปุ่ม แต่ไม่มีค่า
ฉันไม่แนะนำให้ใช้คาถาโบราณนี้
บิวท์อินido-completing-readไม่มีข้อบกพร่องนี้:
(ido-completing-read "test: " '("a" "b" "c"))
(ido-completing-read "test: " '("c" "b" "a"))
ไม่ทำhelm:
(helm :sources
`((name . "test: ")
(candidates . ("a" "b" "c"))))
(helm :sources
`((name . "test: ")
(candidates . ("c" "b" "a"))))
ido-completing-readคือว่ามันมีตัวอักษรขึ้นบรรทัดใหม่แปลกจาก^ semantic-format-tag-summarizeสำหรับ Helm ฉันไม่สามารถสันนิษฐานได้ว่าทุกคนใช้มัน นั่นเป็นเหตุผลที่completing-readเป็นตัวเลือกเท่านั้น
semantic-format-tag-summarizeให้คุณ
ido
semantic-format-tag-summarizeผลตอบแทนบางสิ่งบางอย่างที่สิ้นสุด แต่ตัวละครตัวนี้จะไม่แสดงในหรือcompleting-read helm-comp-readฉันได้เขียนฟังก์ชั่นอื่นแทนsemantic-format-tag-summarizeโดยยังไม่มีใบหน้า สำหรับการแสดงแท็ก (สี) ให้กับผู้ใช้ฉันยังคงใช้semantic-format-tag-summarizeแต่ใช้บัฟเฟอร์ที่กำหนดเองพร้อมวิดเจ็ตข้อความแทน
semantic-format-tag-summarizeผลตอบแทนใดในตอนท้าย ผมมีวิธีการแก้ปัญหา completing-readแต่ฉันยังคงต้องการที่จะรู้วิธีการแก้ ฉันรู้ว่า Helm สามารถสร้างมันได้ แต่แค่อยากรู้ว่ามีวิธีง่าย ๆcompleting-readอยู่หรือไม่
ถ้าคุณใช้Iciclescompleting-readแล้วเพื่อเป็นที่ยอมรับโดย
(และคุณสามารถจัดเรียงโดยใช้คำสั่งการเรียงลำดับที่แตกต่างกันไม่ว่าจะเป็นการโต้ตอบหรือผ่าน Lisp และต่างจากวานิลลา Emacs การเรียงลำดับมีผลต่อลำดับการ*Completions*แสดงผลและการขี่จักรยาน)
ido-completing-readกำลังมีปัญหาบางอย่าง
completing-readกับหยาด คุณสามารถแม้เพียงแค่เปิดicicle-modeชั่วคราว (เช่นการเรียกร้องให้completing-read) icicle-with-icy-mode-ONโดยใช้เช่นมาโคร
icompleteเคารพคำสั่งซื้อด้วยคุณสามารถเพิ่ม a(cycle-sort-function . ,#'identity)ลงในรายการเมทาดาทา