Consult ให้คำสั่งการค้นหาและการนำทางตามฟังก์ชันการเติม Emacs ให้เสร็จสิ้นและอ่าน การเสร็จสิ้นทำให้คุณสามารถเลือกรายการจากรายชื่อผู้สมัครได้อย่างรวดเร็ว Consult นำเสนอคำสั่ง consult-grep
และ consult-ripgrep
แบบอะซิงโครนัสและเชิงโต้ตอบ และคำสั่ง consult-line
คำสั่งการค้นหาตามบรรทัด นอกจากนี้ Consult ยังมีคำสั่งการสลับบัฟเฟอร์ขั้นสูง consult-buffer
เพื่อสลับระหว่างบัฟเฟอร์ ไฟล์ที่เพิ่งเปิด บุ๊กมาร์ก และตัวเลือกที่มีลักษณะคล้ายบัฟเฟอร์จากแหล่งอื่น คำสั่ง Consult บางคำสั่งเป็นเวอร์ชันปรับปรุงของคำสั่ง Emacs ในตัว ตัวอย่างเช่น คำสั่ง consult-imenu
แสดงรายการแบบเรียบของ Imenu พร้อมการแสดงตัวอย่างแบบสด การจัดกลุ่ม และการจำกัดให้แคบลง โปรดดูรายการคำสั่งทั้งหมด
Consult เข้ากันได้อย่างสมบูรณ์กับระบบการเสร็จสิ้นที่มีศูนย์กลางอยู่ที่ API completing-read
Emacs มาตรฐาน โดยเฉพาะอย่างยิ่งระบบการเสร็จสิ้นเริ่มต้น Vertico, Mct และ Icomplete
แพ็คเกจนี้ทำให้ระบบมีความสมบูรณ์เฉพาะน้อยที่สุด ความสามารถของคำสั่ง Consult ที่จะทำงานได้ดีกับระบบการทำให้สมบูรณ์โดยพลการเป็นหนึ่งในข้อดีหลักของแพ็คเกจ การให้คำปรึกษาเหมาะสมกับการตั้งค่าที่มีอยู่ และช่วยให้คุณสร้างสภาพแวดล้อมที่สมบูรณ์โดยใช้ส่วนประกอบขนาดเล็กและเป็นอิสระ
คุณสามารถรวมแพ็คเกจเสริม Marginalia, Embark และ Orderless เข้ากับ Consult ได้ Marginalia เสริมการแสดงผลที่สมบูรณ์ด้วยคำอธิบายประกอบ เช่น สตริงเอกสารหรือข้อมูลไฟล์ แพ็คเกจ Embark อเนกประสงค์ให้การดำเนินการเฉพาะที่เทียบได้กับเมนูตามบริบท การดำเนินการเหล่านี้ดำเนินการกับผู้สมัครที่เลือกในมินิบัฟเฟอร์หรือที่จุดในบัฟเฟอร์ปกติ ตัวอย่างเช่น เมื่อเลือกจากรายการไฟล์ Embark จะเสนอการดำเนินการเพื่อลบไฟล์ นอกจากนี้ Embark ยังมีสิ่งอำนวยความสะดวกในการรวบรวมผู้สมัครที่สำเร็จการศึกษาในบัฟเฟอร์การรวบรวม ส่วน เอกสารการรวม Embark จะให้รายละเอียดว่า Consult และ Embark ทำงานร่วมกันอย่างไร
รูปที่ 1: คำสั่ง consult-git-grep
รูปที่ 2: Command consult-imenu
รูปที่ 3: consult-line
คำสั่ง
คำสั่ง Consult ส่วนใหญ่เป็นไปตามรูปแบบการตั้งชื่อที่มีความหมาย consult-
คำสั่งหลายคำสั่งใช้ฟีเจอร์ Emacs ที่รู้จักกันน้อยแต่สะดวกซึ่งเรียกว่า "ประวัติอนาคต" ซึ่งจะคาดเดาว่าผู้ใช้ต้องการอินพุตอะไร ที่พรอมต์คำสั่งให้พิมพ์ Mn
และโดยทั่วไปแล้ว Consult จะแทรกสัญลักษณ์หรือสิ่งของตรงจุดลงในอินพุต
เคล็ดลับ: หากคุณเปิดใช้งานคำอธิบายประกอบ Marginalia ให้พิมพ์ Mx ^consult
เพื่อดูคำสั่ง Consult ทั้งหมดพร้อมคำอธิบายแบบย่อ หรือพิมพ์ Ch a ^consult
เพื่อดูภาพรวมของตัวแปร Consult และฟังก์ชันทั้งหมดพร้อมคำอธิบาย
consult-buffer
: เวอร์ชันปรับปรุงของ switch-to-buffer
พร้อมรองรับบัฟเฟอร์เสมือน รองรับการแสดงตัวอย่างบัฟเฟอร์แบบเรียลไทม์และจำกัดประเภทบัฟเฟอร์เสมือนให้แคบลง คุณสามารถพิมพ์ f SPC
เพื่อจำกัดให้แคบลงเฉพาะไฟล์ล่าสุด กด SPC
เพื่อแสดงบัฟเฟอร์ชั่วคราว รองรับปุ่มแคบลง:recentf-mode
)consult-buffer-sources
consult-buffer-other-window
, consult-buffer-other-frame
, consult-buffer-other-tab
: ตัวแปรของ consult-buffer
consult-project-buffer
: ตัวแปรของ consult-buffer
จำกัดเฉพาะบัฟเฟอร์และไฟล์ล่าสุดของโปรเจ็กต์ปัจจุบัน คุณสามารถเพิ่มแหล่งที่มาที่กำหนดเองให้กับ consult-project-buffer-sources
คำสั่งอาจแจ้งให้คุณทราบถึงโครงการหากคุณเรียกใช้จากภายนอกโครงการconsult-bookmark
: เลือกหรือสร้างบุ๊คมาร์ค ในการเลือกบุ๊กมาร์ก คุณอาจใช้ consult-buffer
เป็นทางเลือก ซึ่งสามารถรวมแหล่งบัฟเฟอร์เสมือนของบุ๊กมาร์กได้ โปรดทราบว่า consult-bookmark
รองรับการแสดงตัวอย่างบุ๊กมาร์กและการจำกัดให้แคบลงconsult-recent-file
: เลือกจากไฟล์ล่าสุดพร้อมการแสดงตัวอย่าง คุณอาจต้องการ consult-buffer
ที่มีประสิทธิภาพแทน ซึ่งสามารถรวมไฟล์ล่าสุดเป็นแหล่งบัฟเฟอร์เสมือนได้ recentf-mode
ช่วยให้สามารถติดตามไฟล์ล่าสุดได้ consult-yank-from-kill-ring
: เวอร์ชันปรับปรุงของ yank
เพื่อเลือกรายการจาก kill-ring
ข้อความที่เลือกแสดงตัวอย่างเป็นการซ้อนทับในบัฟเฟอร์consult-yank-pop
: เวอร์ชันปรับปรุงของ yank-pop
ที่มีพฤติกรรม DWIM ซึ่งจะแทนที่ yank
ครั้งสุดท้ายด้วยการวนผ่าน kill-ring
หรือหากไม่มี yank
ครั้งสุดท้าย ให้ปรึกษา kill-ring
ข้อความที่เลือกแสดงตัวอย่างเป็นการซ้อนทับในบัฟเฟอร์consult-yank-replace
: เช่นเดียวกับ consult-yank-pop
แต่มักจะแทนที่ yank
ครั้งล่าสุดด้วยรายการจาก kill-ring
consult-kmacro
: เลือกมาโครจากวงแหวนมาโครและดำเนินการ consult-register
: เลือกจากรายการทะเบียน คำสั่งรองรับการจำกัดประเภทการลงทะเบียนและดูตัวอย่างตำแหน่งเครื่องหมาย คำสั่งนี้มีประโยชน์ในการค้นหาเนื้อหารีจิสเตอร์ เพื่อการเข้าถึงที่รวดเร็ว ให้ใช้คำสั่ง consult-register-load
, consult-register-store
หรือคำสั่งการลงทะเบียน Emacs ในตัวconsult-register-format
: ตั้งค่า register-preview-function
เป็นฟังก์ชันนี้เพื่อการจัดรูปแบบรีจิสเตอร์ที่ได้รับการปรับปรุง ดูการกำหนดค่าตัวอย่างconsult-register-window
: แทนที่ register-preview
ด้วยฟังก์ชันนี้เพื่อให้หน้าต่างการลงทะเบียนดีขึ้น ดูการกำหนดค่าตัวอย่างconsult-register-load
: คำสั่งยูทิลิตี้เพื่อโหลดรีจิสเตอร์อย่างรวดเร็ว คำสั่งจะข้ามไปที่ค่ารีจิสเตอร์หรือแทรกเข้าไปconsult-register-store
: ปรับปรุง UI เพื่อจัดเก็บการลงทะเบียนโดยขึ้นอยู่กับบริบทปัจจุบันด้วยเมนูการทำงาน ด้วยขอบเขตที่ใช้งานอยู่ ให้จัดเก็บ/ผนวก/เพิ่มเนื้อหา หรือเลือกที่จะลบขอบเขตเมื่อมีการให้อาร์กิวเมนต์คำนำหน้า ด้วยอาร์กิวเมนต์นำหน้าตัวเลข ให้จัดเก็บ/เพิ่มตัวเลข ไม่เช่นนั้นจะเก็บจุด เฟรมเซ็ต หน้าต่าง หรือคามาโคร ตัวอย่างการใช้งาน:M-' x
: หากไม่มีภูมิภาคใดใช้งานอยู่ ให้เก็บจุดไว้ใน register x
หากภูมิภาคใช้งานอยู่ ให้จัดเก็บภูมิภาคไว้ในทะเบียน x
M-' Mw x
: กำหนดค่าหน้าต่างร้านค้าใน register x
Cu 100 M-' x
: หมายเลขร้านค้าในทะเบียน x
consult-goto-line
: ข้ามไปที่หมายเลขบรรทัดที่ปรับปรุงด้วยการแสดงตัวอย่างแบบสด นี่คือการแทนที่แบบดรอปอินสำหรับ goto-line
ป้อนหมายเลขบรรทัดเพื่อข้ามไปยังคอลัมน์แรกของบรรทัดที่กำหนด หรือป้อน line:column
เพื่อข้ามไปยังคอลัมน์ที่ต้องการconsult-mark
: ข้ามไปยังเครื่องหมายใน mark-ring
รองรับการแสดงตัวอย่างสดและการแก้ไขแบบเรียกซ้ำconsult-global-mark
: ข้ามไปที่เครื่องหมายใน global-mark-ring
รองรับการแสดงตัวอย่างสดและการแก้ไขแบบเรียกซ้ำconsult-outline
: ข้ามไปที่ส่วนหัวของโครงร่าง รองรับการจำกัดระดับส่วนหัว การแสดงตัวอย่างสด และการแก้ไขแบบเรียกซ้ำconsult-imenu
: ข้ามไปที่รายการ imenu ในบัฟเฟอร์ปัจจุบัน รองรับการแสดงตัวอย่างสด การแก้ไขแบบเรียกซ้ำ และการจำกัดให้แคบลงconsult-imenu-multi
: ข้ามไปที่รายการ imenu ในบัฟเฟอร์โปรเจ็กต์ โดยมีโหมดหลักเหมือนกับบัฟเฟอร์ปัจจุบัน รองรับการแสดงตัวอย่างสด การแก้ไขแบบเรียกซ้ำ และการจำกัดให้แคบลง คุณลักษณะนี้ได้รับแรงบันดาลใจจาก imenu-anywhere consult-line
: ป้อนสตริงการค้นหาและเลือกจากบรรทัดที่ตรงกัน รองรับการแสดงตัวอย่างสดและการแก้ไขแบบเรียกซ้ำ สัญลักษณ์ตรงจุดและสตริง Isearch ล่าสุดจะถูกเพิ่มใน "ประวัติอนาคต" และสามารถเข้าถึงได้โดยการกด Mn
เมื่อ consult-line
เชื่อมโยงกับ isearch-mode-map
และถูกเรียกใช้ระหว่าง Isearch ที่รันอยู่ ระบบจะใช้สตริง Isearch ปัจจุบันconsult-line-multi
: ค้นหาแบบไดนามิกในหลายบัฟเฟอร์ โดยการค้นหาเริ่มต้นในบัฟเฟอร์โปรเจ็กต์ หากเรียกใช้ด้วยการค้นหาอาร์กิวเมนต์คำนำหน้าในบัฟเฟอร์ทั้งหมด ผู้สมัครจะถูกคำนวณตามความต้องการโดยอิงจากข้อมูลที่นำเข้า คำสั่งทำงานเหมือน consult-grep
แต่ทำงานบนบัฟเฟอร์แทนไฟล์consult-keep-lines
: การแทนที่ keep/flush-lines
ซึ่งใช้รูปแบบการทำให้เสร็จสมบูรณ์ในปัจจุบันสำหรับการกรองบัฟเฟอร์ ฟังก์ชั่นอัพเดตบัฟเฟอร์ขณะพิมพ์ โดยเฉพาะอย่างยิ่ง consult-keep-lines
สามารถจำกัดบัฟเฟอร์การรวบรวม Embark ที่ส่งออกเพิ่มเติมได้ โดยอาศัยการกรองความสมบูรณ์แบบเดียวกับ completing-read
หากอินพุตเริ่มต้นด้วยตัวดำเนินการปฏิเสธ เช่น ! SPC
ตัวกรองตรงกับส่วนเสริม หากภูมิภาคใช้งานอยู่ ภูมิภาคนั้นจะจำกัดการกรองconsult-focus-lines
: ซ่อนเส้นชั่วคราวโดยการกรองโดยใช้รูปแบบการทำให้สมบูรณ์ในปัจจุบัน โทรด้วยอาร์กิวเมนต์คำนำหน้า Cu
เพื่อแสดงบรรทัดที่ซ่อนอยู่อีกครั้ง หากอินพุตเริ่มต้นด้วยตัวดำเนินการปฏิเสธ เช่น ! SPC
ตัวกรองตรงกับส่วนเสริม ตรงกันข้ามกับ consult-keep-lines
ฟังก์ชันนี้ไม่ได้แก้ไขบัฟเฟอร์ หากภูมิภาคใช้งานอยู่ ภูมิภาคนั้นจะจำกัดการกรอง consult-grep
, consult-ripgrep
, consult-git-grep
: ค้นหานิพจน์ทั่วไปในไฟล์ Consult เรียกใช้ Grep แบบอะซิงโครนัสในขณะที่คุณป้อนคำค้นหา หลังจาก consult-async-min-input
อย่างน้อยที่สุด การค้นหาจะเริ่มต้นขึ้น Consult จะแยกสตริงอินพุตออกเป็นสองส่วน หากอักขระตัวแรกเป็นอักขระเครื่องหมายวรรคตอน เช่น #
ตัวอย่างเช่น #regexps#filter-string
จะถูกแยกที่ #
ที่สอง regexps
สตริงถูกส่งไปยัง Grep โปรดทราบว่า Consult จะแปลงนิพจน์ทั่วไปของ Emacs เป็นนิพจน์ที่โปรแกรมค้นหาเข้าใจ ใช้นิพจน์ทั่วไปของ Emacs เมื่อได้รับแจ้งเสมอ หากคุณป้อนนิพจน์ทั่วไปหลายรายการโดยคั่นด้วยช่องว่าง เฉพาะบรรทัดที่ตรงกับนิพจน์ทั่วไปทั้งหมดเท่านั้นที่จะแสดง เพื่อให้ตรงกับช่องว่างอย่างแท้จริง ให้หลีกเลี่ยงช่องว่างด้วยแบ็กสแลช filter-string
จะถูกส่งผ่านไปยังการกรอง Emacs ที่รวดเร็ว เพื่อจำกัดรายการรายการที่ตรงกันให้แคบลง สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณใช้รูปแบบการตกแต่งขั้นสูง เช่น การไม่มีลำดับ consult-grep
รองรับการแสดงตัวอย่าง consult-grep
ค้นหาไดเร็กทอรีโปรเจ็กต์ปัจจุบันหากพบโปรเจ็กต์ มิฉะนั้นระบบจะค้นหา default-directory
หาก consult-grep
ถูกเรียกใช้ด้วยอาร์กิวเมนต์นำหน้า Cu Ms g
คุณสามารถระบุไฟล์และไดเร็กทอรีที่คั่นด้วยเครื่องหมายจุลภาคตั้งแต่หนึ่งไฟล์ขึ้นไปได้ด้วยตนเอง หากเรียกใช้ด้วยอาร์กิวเมนต์นำหน้าสองตัว Cu Cu Ms g
คุณสามารถเลือกโปรเจ็กต์ก่อนได้หากคุณยังไม่ได้อยู่ในโปรเจ็กต์consult-find
, consult-fd
, consult-locate
: ค้นหาไฟล์โดยการจับคู่เส้นทางกับ regexp เช่นเดียวกับ consult-grep
รูทโปรเจ็กต์หรือไดเร็กทอรีปัจจุบันคือไดเร็กทอรีรูทสำหรับการค้นหา สตริงอินพุตได้รับการปฏิบัติคล้ายกับ consult-grep
โดยที่ส่วนแรกถูกส่งเพื่อค้นหา และส่วนที่สองใช้สำหรับการกรอง Emacs อาร์กิวเมนต์นำหน้าเพื่อ consult-find
งานเช่นเดียวกับคำสั่ง grep ปรึกษา consult-compile-error
: ข้ามไปที่ข้อผิดพลาดในการคอมไพล์ รองรับการจำกัดการแสดงตัวอย่างแบบสดและการแก้ไขแบบเรียกซ้ำconsult-flymake
: ข้ามไปที่การวินิจฉัย Flymake รองรับการแสดงตัวอย่างสดและการแก้ไขแบบเรียกซ้ำ คำสั่งรองรับการแคบลง กด e SPC
, w SPC
, n SPC
เพื่อแสดงเฉพาะข้อผิดพลาด คำเตือน และหมายเหตุตามลำดับconsult-xref
: บูรณาการกับ xref ฟังก์ชั่นนี้สามารถตั้งค่าเป็น xref-show-xrefs-function
และ xref-show-definitions-function
consult-complex-command
: เลือกคำสั่งจาก command-history
คำสั่งนี้เป็นเวอร์ชัน completing-read
ของ repeat-complex-command
และยังใช้แทนคำสั่ง command-history
จาก chistory.el อีกด้วยconsult-history
: แทรกสตริงจากประวัติบัฟเฟอร์ปัจจุบัน เช่น ประวัติ Eshell หรือ Comint คุณยังสามารถเรียกใช้คำสั่งนี้จากมินิบัฟเฟอร์ได้ ในกรณีนั้น consult-history
จะใช้ประวัติที่จัดเก็บไว้ใน minibuffer-history-variable
หากคุณต้องการ completion-at-point
ลองดูที่ cape-history
จากแพ็คเกจ Capeconsult-isearch-history
: ระหว่างเซสชัน Isearch คำสั่งนี้จะเลือกสตริงการค้นหาจากประวัติและดำเนินการค้นหาต่อด้วยสตริงที่เลือกใหม่ ภายนอก Isearch คำสั่งอนุญาตให้คุณเลือกสตริงจากประวัติและเริ่ม Isearch ใหม่ consult-isearch-history
ทำหน้าที่เป็นการแทนที่แบบดรอปอินสำหรับ isearch-edit-string
consult-minor-mode-menu
: เปิด/ปิดโหมดรอง รองรับการแคบลงเป็นโหมดเปิด/ปิด/ท้องถิ่น/ทั่วโลกโดยการกด i/o/l/g SPC
ตามลำดับconsult-mode-command
: รันคำสั่งจากโหมดรองหรือโหมดหลักที่ใช้งานอยู่ในปัจจุบัน รองรับการจำกัดให้แคบลงเป็นโหมด local-minor/global-minor/major ผ่านทางปุ่ม l/g/m
consult-org-heading
: ตัวแปรของ consult-imenu
หรือ consult-outline
สำหรับบัฟเฟอร์องค์กร พาดหัวและพาดหัวข่าวระดับบนจะคั่นด้วยเครื่องหมายทับ รองรับการจำกัดให้แคบลงตามระดับส่วนหัว ลำดับความสำคัญ และคีย์เวิร์ด TODO ตลอดจนการแสดงตัวอย่างแบบสดและการแก้ไขแบบเรียกซ้ำconsult-org-agenda
: ข้ามไปที่หัวข้อวาระการประชุมขององค์กร รองรับการจำกัดให้แคบลงตามระดับส่วนหัว ลำดับความสำคัญ และคีย์เวิร์ด TODO ตลอดจนการแสดงตัวอย่างแบบสดและการแก้ไขแบบเรียกซ้ำ consult-man
: ค้นหาหน้า man ของ Unix apropos
ทาง Unix หรือ man -k
consult-man
เปิดหน้า man ที่เลือกโดยใช้คำสั่ง Emacs man
consult-info
: ค้นหาข้อความแบบเต็มผ่านหน้าข้อมูล หากเรียกใช้คำสั่งจากภายในบัฟเฟอร์ *info*
คำสั่งจะค้นหาผ่านคู่มือปัจจุบัน คุณอาจต้องการสร้างคำสั่งของคุณเองซึ่งค้นหาผ่านชุดหน้าข้อมูลที่กำหนดไว้ล่วงหน้า เช่น: ( defun consult-info-emacs ()
" Search through Emacs info pages. "
( interactive )
(consult-info " emacs " " efaq " " elisp " " cl " " compat " ))
( defun consult-info-org ()
" Search through the Org info page. "
( interactive )
(consult-info " org " ))
( defun consult-info-completion ()
" Search through completion info pages. "
( interactive )
(consult-info " vertico " " consult " " marginalia " " orderless " " embark "
" corfu " " cape " " tempel " ))
consult-theme
: เลือกธีมและปิดการใช้งานธีมที่เปิดใช้งานอยู่ทั้งหมด รองรับการแสดงตัวอย่างธีมสดขณะเลื่อนดูตัวเลือกconsult-preview-at-point
และ consult-preview-at-point-mode
: โหมด Command และ minor ที่แสดงตัวอย่างผู้สมัคร ณ จุดหนึ่งในบัฟเฟอร์ *Completions*
โหมดนี้เกี่ยวข้องหากคุณใช้ Mct หรือ UI *Completions*
เริ่มต้นconsult-completion-in-region
: ในกรณีที่คุณไม่ได้ใช้ Corfu เป็น UI การเสร็จสมบูรณ์ในบัฟเฟอร์ ฟังก์ชันนี้สามารถตั้งค่าเป็น completion-in-region-function
ได้ จากนั้น UI การทำ minibuffer ของคุณให้เสร็จสิ้น (เช่น Vertico หรือ Icomplete) จะถูกนำมาใช้ในการ completion-at-point
; ; Use `consult-completion-in-region' if Vertico is enabled.
; ; Otherwise use the default `completion--in-region' function.
( setq completion-in-region-function
( lambda ( &rest args )
( apply ( if vertico-mode
# 'consult-completion-in-region
# 'completion--in-region )
args)))
แทนที่จะ consult-completion-in-region
คุณอาจต้องการเห็นความสำเร็จโดยตรงในบัฟเฟอร์เป็นป๊อปอัปขนาดเล็ก ในกรณีนี้ผมขอแนะนำแพ็คเกจ Corfu มีข้อจำกัดทางเทคนิคของ consult-completion-in-region
ร่วมกับโหมด Lsp เซิร์ฟเวอร์ Lsp อาศัยอินพุต ณ จุด เพื่อสร้างสตริงตัวเลือกที่ได้รับการปรับปรุง เนื่องจากความสมบูรณ์ถูกถ่ายโอนจากบัฟเฟอร์ดั้งเดิมไปยังมินิบัฟเฟอร์ เซิร์ฟเวอร์จึงไม่ได้รับอินพุตที่อัปเดต ในทางตรงกันข้าม การทำ Lsp ในบัฟเฟอร์ให้สมบูรณ์ เช่น ผ่าน Corfu จะทำงานได้อย่างถูกต้อง เนื่องจากการเสร็จสิ้นจะเกิดขึ้นโดยตรงในบัฟเฟอร์ดั้งเดิม
Consult ปรับปรุง completing-read
ด้วยการแสดงตัวอย่างผู้สมัครแบบสด ความสามารถเพิ่มเติมในการจำกัดกลุ่มผู้สมัครให้แคบลง และรายชื่อผู้สมัครที่สร้างขึ้นแบบอะซิงโครนัส ฟังก์ชัน consult--read
ซึ่งใช้โดยคำสั่ง Consult ส่วนใหญ่ มีลักษณะเป็นกระดาษห่อเล็กๆ สำหรับ completing-read
และจัดเตรียมฟังก์ชันพิเศษ เพื่อที่จะสนับสนุนแหล่งที่มาของผู้สมัครหลายแหล่ง จึงได้มี consult--multi
สถาปัตยกรรมของ Consult ช่วยให้สามารถทำงานกับระบบความสำเร็จที่แตกต่างกันในแบ็กเอนด์ ในขณะที่ยังคงนำเสนอคุณสมบัติขั้นสูง
คำสั่ง Consult บางคำสั่งรองรับการแสดงตัวอย่างแบบสด ตัวอย่างเช่น เมื่อคุณเลื่อนดูรายการต่างๆ ของ consult-line
บัฟเฟอร์จะเลื่อนไปยังตำแหน่งที่เกี่ยวข้อง สามารถข้ามไปมาระหว่างมินิบัฟเฟอร์และบัฟเฟอร์เพื่อทำการแก้ไขแบบเรียกซ้ำในขณะที่การค้นหาดำเนินอยู่
Consult เปิดใช้งานการแสดงตัวอย่างตามค่าเริ่มต้น คุณปิดใช้ได้โดยการปรับตัวแปร consult-preview-key
นอกจากนี้ ยังสามารถระบุการผูกปุ่มซึ่งจะทริกเกอร์การแสดงตัวอย่างด้วยตนเองดังที่แสดงในการกำหนดค่าตัวอย่าง การตั้ง consult-preview-key
คือ any
ซึ่งหมายความว่า Consult จะทริกเกอร์การแสดงตัวอย่าง ทันที เมื่อกดปุ่มใดๆ เมื่อผู้สมัครที่เลือกมีการเปลี่ยนแปลง คุณสามารถกำหนดค่าแต่ละคำสั่งแยกกันได้ :preview-key
ของตัวเอง การตั้งค่าต่อไปนี้เป็นไปได้:
'any
(list :debounce 0.5 'any)
"M-."
(list :debounce 0.5 "M-.")
nil
คำแนะนำที่ปลอดภัยคือปล่อยให้การแสดงตัวอย่างทันทีแบบอัตโนมัติเปิดใช้งานไว้โดยทั่วไป และปิดใช้งานการแสดงตัวอย่างอัตโนมัติเฉพาะสำหรับคำสั่งที่การแสดงตัวอย่างอาจมีราคาแพงเนื่องจากการโหลดไฟล์ ภายใน Consult จะใช้ค่าของ this-command
เพื่อกำหนด :preview-key
ที่กำหนดเอง ซึ่งหมายความว่าหากคุณรวมคำสั่ง consult-*
ภายในฟังก์ชันหรือคำสั่งของคุณเอง คุณจะต้องเพิ่มชื่อของ คำสั่งที่คุณกำหนดเอง ลงในการเรียก consult-customize
เพื่อให้ได้รับการพิจารณา
(consult-customize
consult-ripgrep consult-git-grep consult-grep
consult-bookmark consult-recent-file consult-xref
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
; ; my/command-wrapping-consult ;; disable auto previews inside my command
:preview-key '( :debounce 0.4 any) ; ; Option 1: Delay preview
; ; :preview-key "M-.") ;; Option 2: Manual preview
ในกรณีนี้ บางคนอาจสงสัยว่าอะไรคือความแตกต่างระหว่างการใช้การดำเนินการเริ่มต้นกับผู้สมัครปัจจุบันเมื่อเปรียบเทียบกับการแสดงตัวอย่างที่ทริกเกอร์ด้วยตนเอง ข้อแตกต่างหลักคือไฟล์ที่เปิดโดยการดูตัวอย่างด้วยตนเองจะถูกปิดอีกครั้งหลังจากเซสชันเสร็จสิ้น ในระหว่างการดูตัวอย่าง ฟังก์ชันบางอย่างถูกปิดใช้งานเพื่อปรับปรุงประสิทธิภาพ ดูตัวอย่างตัวแปรการปรับแต่ง consult-preview-variables
และ consult-preview-allowed-hooks
เฉพาะ hook ที่แสดงอยู่ใน consult-preview-allowed-hooks
เท่านั้นที่จะดำเนินการ ตัวแปรนี้ใช้กับ find-file-hook
, change-major-mode-hook
และ hooks โหมด เช่น prog-mode-hook
หากต้องการเปิดใช้งานการล็อกแบบอักษรเพิ่มเติมในระหว่างการแสดงตัวอย่าง ให้เพิ่ม hooks ที่เกี่ยวข้องลงในรายการที่อนุญาต รหัสต่อไปนี้สาธิตสิ่งนี้สำหรับ org-modern และ hl-todo
; ; local modes added to prog-mode hooks
( add-to-list 'consult-preview-allowed-hooks 'hl-todo-mode )
( add-to-list 'consult-preview-allowed-hooks 'elide-head-mode )
; ; enabled global modes
( add-to-list 'consult-preview-allowed-hooks 'global-org-modern-mode )
( add-to-list 'consult-preview-allowed-hooks 'global-hl-todo-mode )
ไฟล์ที่มีขนาดใหญ่กว่า consult-preview-partial-size
จะแสดงตัวอย่างบางส่วน การชะลอการแสดงตัวอย่างยังมีประโยชน์สำหรับ consult-theme
เนื่องจากการแสดงตัวอย่างธีมช้า ความล่าช้าส่งผลให้ประสบการณ์ UI ราบรื่นขึ้น
; ; Preview on any key press, but delay 0.5s
(consult-customize consult-theme :preview-key '( :debounce 0.5 any))
; ; Preview immediately on M-., on up/down after 0.5s, on any other key after 1s
(consult-customize consult-theme
:preview-key
'( " M-. "
:debounce 0.5 " " " "
:debounce 1 any))
Consult มีการสนับสนุนเป็นพิเศษสำหรับกลุ่มผู้สมัคร หาก UI ที่สมบูรณ์รองรับฟังก์ชันการจัดกลุ่ม UI จะแยกกลุ่มด้วยเส้นบางๆ และแสดงชื่อกลุ่ม การจัดกลุ่มจะมีประโยชน์หากรายชื่อผู้สมัครประกอบด้วยผู้สมัครหลายประเภทหรือผู้สมัครจากหลายแหล่ง เช่น คำสั่ง consult-buffer
ซึ่งแสดงทั้งบัฟเฟอร์และไฟล์ที่เปิดล่าสุด โปรดทราบว่าคุณสามารถปิดใช้งานชื่อกลุ่มได้โดยการตั้งค่าคุณสมบัติ :group
ของคำสั่งที่เกี่ยวข้องให้เป็นศูนย์โดยใช้มาโคร consult-customize
โดยการป้อนคำนำหน้าแบบแคบหรือโดยการกดปุ่มแคบ คุณสามารถจำกัดผู้สมัครที่เสร็จสมบูรณ์ให้เหลือเพียงกลุ่มผู้สมัครบางกลุ่มได้ เมื่อคุณใช้คำสั่ง consult-buffer
คุณสามารถป้อนคำนำหน้า b SPC
เพื่อจำกัดรายชื่อผู้สมัครไว้เฉพาะบัฟเฟอร์เท่านั้น หากกด DEL
หลังจากนั้น รายชื่อผู้สมัครทั้งหมดจะแสดงอีกครั้ง นอกจากนี้ คุณสามารถกำหนดค่าคีย์นำหน้าแบบแคบและคีย์ขยายได้ ซึ่งสามารถกดได้เพื่อให้ได้ผลเช่นเดียวกัน โปรดดูตัวแปรการกำหนดค่า consult-narrow-key
และ consult-widen-key
หลังจากกด consult-narrow-key
แล้ว คีย์การจำกัดขอบเขตที่เป็นไปได้สามารถแสดงได้โดยการกด Ch
เมื่อกด Ch
หลังจากคีย์นำหน้าบางคีย์ prefix-help-command
จะถูกเรียกใช้ ซึ่งจะแสดงหน้าต่างวิธีใช้การผูกคีย์ตามค่าเริ่มต้น เป็นทางเลือกที่มีขนาดกะทัดรัดมากขึ้น มีคำสั่ง consult-narrow-help
ซึ่งสามารถเชื่อมโยงกับคีย์ได้ เช่น ?
หรือ Ch
ใน consult-narrow-map
ดังที่แสดงในการกำหนดค่าตัวอย่าง หากมีการติดตั้งคีย์ใด คีย์การแคบจะแสดงโดยอัตโนมัติในหน้าต่างคีย์ใดหลังจากกด consult-narrow-key
Consult รองรับการสร้างรายชื่อผู้สมัครแบบอะซิงโครนัส คุณลักษณะนี้ใช้สำหรับคำสั่งการค้นหา เช่น consult-grep
โดยที่รายการรายการที่ตรงกันจะถูกสร้างขึ้นแบบไดนามิกในขณะที่ผู้ใช้พิมพ์นิพจน์ทั่วไป กระบวนการ grep ดำเนินการในเบื้องหลัง เมื่อแก้ไขนิพจน์ทั่วไป กระบวนการเบื้องหลังจะสิ้นสุดลง และกระบวนการใหม่จะเริ่มต้นด้วยนิพจน์ทั่วไปที่ได้รับการแก้ไข
การแข่งขันซึ่งพบแล้วสามารถจำกัดให้แคบลงได้โดยใช้รูปแบบการทำให้สมบูรณ์ของ Emacs ที่ติดตั้งไว้ สิ่งนี้อาจมีประสิทธิภาพหากคุณใช้ตัวอย่างสไตล์การทำให้เสร็จสมบูรณ์ orderless
การกรองสองระดับนี้สามารถทำได้โดยการแยกสตริงอินพุต ส่วนหนึ่งของสตริงอินพุตจะถือเป็นอินพุตของ grep และส่วนหนึ่งของอินพุตนั้นใช้สำหรับการกรอง มีรูปแบบการแบ่งหลายรูปแบบให้เลือก กำหนดค่าใน consult-async-split-styles-alist
: nil
, comma
, semicolon
และ perl
รูปแบบการแยกเริ่มต้นได้รับการกำหนดค่าด้วยตัวแปร consult-async-split-style
ด้วยรูปแบบการแยก comma
และ semicolon
คำแรกก่อนเครื่องหมายจุลภาคหรืออัฒภาคจะถูกส่งผ่านไปยัง grep สตริงที่เหลือจะถูกใช้สำหรับการกรอง สไตล์การแยกแบบ nil
ไม่ได้ทำการแยกใดๆ อินพุตทั้งหมดจะถูกส่งผ่านไปยัง grep
รูปแบบการแยก perl
จะแยกสตริงอินพุตที่อักขระเครื่องหมายวรรคตอน โดยใช้ไวยากรณ์ที่คล้ายกันกับนิพจน์ทั่วไปของ Perl
ตัวอย่าง:
#defun
: ค้นหา “defun” โดยใช้ grep#consult embark
: ค้นหาทั้ง “consult” และ “embark” โดยใช้ grep ในลำดับใดก็ได้#first.*second
: ค้นหา “first” ตามด้วย “second” โดยใช้ grep#(consult|embark)
: ค้นหา “consult” หรือ “embark” โดยใช้ grep. สังเกตการใช้นิพจน์ทั่วไปสไตล์ Emacs#defun#consult
: ค้นหา “defun” โดยใช้ grep กรองด้วยคำว่า “consult”/defun/consult
: สามารถใช้อักขระเครื่องหมายวรรคตอนอื่นได้#to#
: บังคับให้ค้นหา "to" โดยใช้ grep เนื่องจากรูปแบบ grep จะต้องยาวกว่า consult-async-min-input
ตามค่าเริ่มต้น#defun -- --invert-match#
: ส่งอาร์กิวเมนต์ --invert-match
เป็น grep กระบวนการแบบอะซิงโครนัส เช่น find
และ grep
สร้างบัฟเฟอร์บันทึกข้อผิดพลาด _*consult-async*
(สังเกตช่องว่างนำหน้า) ซึ่งมีประโยชน์สำหรับการแก้ไขปัญหา ข้อความแจ้งมีตัวบ่งชี้ขนาดเล็กที่แสดงสถานะของกระบวนการ:
:
เครื่องหมายโคลอนพร้อมต์ปกติ ก่อนที่จะระบุอินพุต*
มีหน้าคำเตือน แสดงว่ากระบวนการกำลังทำงานอยู่:
ด้วยหน้าแห่งความสำเร็จ ความสำเร็จ กระบวนการออกด้วยรหัสข้อผิดพลาดเป็นศูนย์!
มีข้อผิดพลาด ล้มเหลว กระบวนการออกจากระบบโดยมีรหัสข้อผิดพลาดที่ไม่ใช่ศูนย์;
มีข้อผิดพลาดถูกขัดจังหวะ เช่น หากมีอินพุตเพิ่มเติม สามารถรวมแหล่งข้อมูลผู้สมัครแบบซิงโครนัสหลายรายการเข้าด้วยกันได้ คำสั่ง consult-buffer
ใช้คุณลักษณะนี้เพื่อนำเสนอตัวเลือกที่มีลักษณะคล้ายบัฟเฟอร์ในเมนูเดียวเพื่อให้เข้าถึงได้รวดเร็ว ตามค่าเริ่มต้น consult-buffer
จะรวมบัฟเฟอร์ บุ๊กมาร์ก ไฟล์ล่าสุด รวมถึงบัฟเฟอร์และไฟล์เฉพาะโปรเจ็กต์ คุณสามารถกำหนดค่ารายการแหล่งที่มาผ่านตัวแปร consult-buffer-sources
ได้ สามารถกำหนดแหล่งที่มาที่กำหนดเองตามอำเภอใจได้
ตามตัวอย่าง แหล่งที่มาของบุ๊กมาร์กถูกกำหนดไว้ดังนี้:
( defvar consult--source-bookmark
`( :name " Bookmark "
:narrow ?m
:category bookmark
:face consult-bookmark
:history bookmark-history
:items ,# 'bookmark-all-names
:action ,# 'consult--bookmark-action ))
ฟิลด์แหล่งที่มาที่จำเป็น:
:category
หมวดความสมบูรณ์:items
รายการสตริงที่จะเลือกหรือฟังก์ชันส่งคืนรายการสตริง ไม่รองรับรายการเซลล์ข้อเสียฟิลด์แหล่งที่มาเพิ่มเติม:
:name
ชื่อของแหล่งข้อมูล ใช้สำหรับจำกัดชื่อกลุ่มและคำอธิบายประกอบ:narrow
อักขระที่แคบลงหรือคู่ (character . string)
:preview-key
คีย์แสดงตัวอย่างหรือคีย์ที่เรียกใช้การแสดงตัวอย่าง:enabled
ฟังก์ชั่นซึ่งจะต้องส่งคืน t หากเปิดใช้งานแหล่งที่มา:hidden
เมื่อตัวเลือกของแหล่งข้อมูลนี้ถูกซ่อนไว้ตามค่าเริ่มต้น:face
ใช้สำหรับเน้นผู้สมัคร:annotate
ฟังก์ชันคำอธิบายประกอบที่ถูกเรียกสำหรับผู้สมัครแต่ละคน ส่งคืนสตริง:history
ชื่อของตัวแปรประวัติที่จะเพิ่มผู้สมัครที่เลือก:default
ต้องเป็น t หากรายการแรกของแหล่งที่มาเป็นค่าเริ่มต้น:action
ฟังก์ชันที่ถูกเรียกพร้อมกับผู้สมัครที่เลือก:new
ฟังก์ชันถูกเรียกด้วยชื่อผู้สมัครใหม่ เฉพาะในกรณีที่ :require-match
เป็นศูนย์:state
ตัวสร้างสถานะสำหรับแหล่งที่มา จะต้องส่งคืนฟังก์ชัน state ช่อง :state
และ :action
ของแหล่งที่มาสมควรได้รับคำอธิบายที่ยาวกว่านี้ ฟังก์ชัน :action
รับอาร์กิวเมนต์เดียวและจะถูกเรียกหลังจากการเลือกกับผู้สมัครที่เลือกเท่านั้น หากการเลือกไม่ได้ถูกยกเลิก ฟังก์ชันนี้มีไว้เพื่อความสะดวกและกำหนดแหล่งที่มาได้ง่าย ฟิลด์ :state
มีลักษณะทั่วไปมากกว่า ฟังก์ชัน :state
เป็นฟังก์ชัน Constructor ที่ไม่มีอาร์กิวเมนต์ ซึ่งสามารถดำเนินการตั้งค่าบางอย่างที่จำเป็นสำหรับการแสดงตัวอย่างได้ จะต้องส่งคืนการปิดซึ่งรับ ACTION และอาร์กิวเมนต์ CANDIDATE ดูเอกสาร consult--with-preview
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับอาร์กิวเมนต์ ACTION
ตามค่าเริ่มต้น consult-buffer
จะแสดงตัวอย่างบัฟเฟอร์ บุ๊กมาร์ก และไฟล์ การโหลดไฟล์หรือบุ๊กมาร์กล่าสุดอาจทำให้การดำเนินการมีค่าใช้จ่ายสูง อย่างไรก็ตาม คุณสามารถกำหนดค่าการแสดงตัวอย่างด้วยตนเองได้ดังต่อไปนี้
(consult-customize
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
:preview-key " M-. " )
สามารถเพิ่มแหล่งที่มาลงในรายการ consult-buffer-source
ได้โดยตรงเพื่อความสะดวก ตัวอย่างเช่น แหล่งที่มาต่อไปนี้แสดงรายการบัฟเฟอร์องค์กรทั้งหมดและให้คุณสร้างบัฟเฟอร์ใหม่ได้
( defvar org-source
( list :name " Org Buffer "
:category 'buffer
:narrow ?o
:face 'consult-buffer
:history 'buffer-name-history
:state # 'consult--buffer-state
:new
( lambda ( name )
( with-current-buffer ( get-buffer-create name)
( insert " #+title: " name " nn " )
( org-mode )
(consult--buffer-action ( current-buffer ))))
:items
( lambda ()
(consult--buffer-query :mode 'org-mode :as # 'consult--buffer-pair ))))
( add-to-list 'consult-buffer-sources 'org-source 'append )
เราสามารถสร้างแหล่งข้อมูลที่คล้ายกันสำหรับโหมดหลักอื่นๆ ได้ ดูวิกิที่ปรึกษาสำหรับตัวอย่างแหล่งข้อมูลเพิ่มเติมมากมาย โปรดดูเอกสารประกอบของ consult-buffer
และ consult--multi
API สามารถใช้ฟังก์ชัน consult--multi
เพื่อสร้างคำสั่งหลายแหล่งใหม่ได้
หมายเหตุ : ติดตั้งแพ็คเกจ embark-consult
จาก MELPA ซึ่งมีการดำเนินการ Embark เฉพาะที่ปรึกษาและการส่งออกบัฟเฟอร์ Occur
Embark เป็นแพ็คเกจอเนกประสงค์ที่ให้การดำเนินการตามบริบท เทียบได้กับเมนูบริบท ดูคู่มือ Embark สำหรับคำอธิบายโดยละเอียดเกี่ยวกับความสามารถต่างๆ
การดำเนินการคือคำสั่งที่สามารถดำเนินการกับผู้สมัครที่เลือกในปัจจุบัน (หรือเป้าหมายในคำศัพท์เฉพาะของ Embark) เมื่อกรอกไฟล์เสร็จแล้ว เช่น จะมีการเสนอคำสั่ง delete-file
ด้วย Embark คุณสามารถดำเนินการคำสั่งตามอำเภอใจกับผู้สมัครที่เลือกในปัจจุบันผ่านทาง Mx
นอกจากนี้ Embark ยังมีคำสั่ง embark-collect
ซึ่งจะรวบรวมผู้สมัครและนำเสนอในบัฟเฟอร์การรวบรวม Embark ซึ่งสามารถนำการดำเนินการเพิ่มเติมไปใช้กับพวกเขาได้ คุณลักษณะที่เกี่ยวข้องคือคำสั่ง embark-export
ซึ่งจะส่งออกรายชื่อผู้สมัครไปยังบัฟเฟอร์ประเภทพิเศษ ตัวอย่างเช่น ในกรณีที่ไฟล์เสร็จสมบูรณ์ บัฟเฟอร์ Dired จะถูกเปิดขึ้น
ในบริบทของ Consult สิ่งที่น่าตื่นเต้นอย่างยิ่งคือความเป็นไปได้ในการส่งออกบรรทัดที่ตรงกันจาก consult-line
, consult-outline
, consult-mark
และ consult-global-mark
บรรทัดที่ตรงกันจะถูกส่งออกไปยังบัฟเฟอร์ Occur ซึ่งสามารถแก้ไขได้ผ่าน occur-edit-mode
(กดปุ่ม e
) ในทำนองเดียวกัน Embark รองรับการส่งออกการจับคู่ที่พบโดย consult-grep
, consult-ripgrep
และ consult-git-grep
ไปยังบัฟเฟอร์ Grep ซึ่งสามารถแก้ไขได้หากติดตั้งแพ็คเกจ wgrep ขั้นตอนการทำงานทั้งสามนี้มีความสมมาตร
consult-line
-> embark-export
ไปยัง occur-mode
-> occur-edit-mode
สำหรับการแก้ไขการจับคู่ในบัฟเฟอร์consult-grep
-> embark-export
ไปยังบัฟเฟอร์ grep-mode
-> wgrep
เพื่อแก้ไขรายการที่ตรงกันทั้งหมดconsult-find
-> embark-export
ไปยังบัฟเฟอร์ dired-mode
-> wdired-change-to-wdired-mode
สำหรับการแก้ไขสามารถติดตั้งที่ปรึกษาได้จาก ELPA หรือ MELPA ผ่านทางตัวจัดการแพ็คเกจในตัวของ Emacs หรือสามารถติดตั้งได้โดยตรงจากพื้นที่เก็บข้อมูลการพัฒนาผ่านตัวจัดการแพ็คเกจที่ไม่ได้มาตรฐานอื่นๆ
มีวิกิที่ปรึกษาซึ่งสามารถสนับสนุนตัวอย่างการกำหนดค่าเพิ่มเติมได้
สิ่งสำคัญ: ขอแนะนำให้คุณเปิดใช้งานการเชื่อมโยงคำศัพท์ในการกำหนดค่าของคุณ ข้อมูลโค้ดที่เกี่ยวข้องกับการปรึกษาจำนวนมากจำเป็นต้องมีการเชื่อมโยงคำศัพท์ เนื่องจากใช้แลมบ์ดาและการปิด
แพ็คเกจ Consult จะให้คำสั่งเท่านั้นและไม่ได้เพิ่มการผูกคีย์หรือโหมดใดๆ ดังนั้นแพ็คเกจจึงไม่รบกวน แต่ต้องใช้ความพยายามในการตั้งค่าเล็กน้อย ในการใช้คำสั่ง Consult แนะนำให้เพิ่มการผูกคีย์สำหรับคำสั่งที่มีการเข้าถึงบ่อยครั้ง คำสั่งที่ไม่ค่อยได้ใช้สามารถเรียกใช้ผ่าน Mx
ได้ คุณสามารถผูกเฉพาะคำสั่งที่คุณพิจารณาว่ามีประโยชน์กับเวิร์กโฟลว์ของคุณได้ตามใจชอบ การกำหนดค่าที่แสดงไว้ที่นี่จะขึ้นอยู่กับมาโคร use-package
ซึ่งเป็นเครื่องมือที่สะดวกในการจัดการการกำหนดค่าแพ็คเกจ
หมายเหตุ: มีวิกิที่ปรึกษา ซึ่งคุณสามารถสนับสนุนตัวอย่างการกำหนดค่าเพิ่มเติมได้
; ; Example configuration for Consult
( use-package consult
; ; Replace bindings. Lazily loaded by `use-package' .
:bind ( ; ; C-c bindings in `mode-specific-map'
( " C-c M-x " . consult-mode-command)
( " C-c h " . consult-history)
( " C-c k " . consult-kmacro)
( " C-c m " . consult-man)
( " C-c i " . consult-info)
([remap Info-search] . consult-info)
; ; C-x bindings in `ctl-x-map'
( " C-x M-: " . consult-complex-command) ; ; orig. repeat-complex-command
( " C-x b " . consult-buffer) ; ; orig. switch-to-buffer
( " C-x 4 b " . consult-buffer-other-window) ; ; orig. switch-to-buffer-other-window
( " C-x 5 b " . consult-buffer-other-frame) ; ; orig. switch-to-buffer-other-frame
( " C-x t b " . consult-buffer-other-tab) ; ; orig. switch-to-buffer-other-tab
( " C-x r b " . consult-bookmark) ; ; orig. bookmark-jump
( " C-x p b " . consult-project-buffer) ; ; orig. project-switch-to-buffer
; ; Custom M-# bindings for fast register access
( " M-# " . consult-register-load)
( " M-' " . consult-register-store) ; ; orig. abbrev-prefix-mark (unrelated)
( " C-M-# " . consult-register)
; ; Other custom bindings
( " M-y " . consult-yank-pop) ; ; orig. yank-pop
; ; M-g bindings in `goto-map'
( " M-g e " . consult-compile-error)
( " M-g f " . consult-flymake) ; ; Alternative: consult-flycheck
( " M-g g " . consult-goto-line) ; ; orig. goto-line
( " M-g M-g " . consult-goto-line) ; ; orig. goto-line
( " M-g o " . consult-outline) ; ; Alternative: consult-org-heading
( " M-g m " . consult-mark)
( " M-g k " . consult-global-mark)
( " M-g i " . consult-imenu)
( " M-g I " . consult-imenu-multi)
; ; M-s bindings in `search-map'
( " M-s d " . consult-find) ; ; Alternative: consult-fd
( " M-s c " . consult-locate)
( " M-s g " . consult-grep)
( " M-s G " . consult-git-grep)
( " M-s r " . consult-ripgrep)
( " M-s l " . consult-line)
( " M-s L " . consult-line-multi)
( " M-s k " . consult-keep-lines)
( " M-s u " . consult-focus-lines)
; ; Isearch integration
( " M-s e " . consult-isearch-history)
:map isearch-mode-map
( " M-e " . consult-isearch-history) ; ; orig. isearch-edit-string
( " M-s e " . consult-isearch-history) ; ; orig. isearch-edit-string
( " M-s l " . consult-line) ; ; needed by consult-line to detect isearch
( " M-s L " . consult-line-multi) ; ; needed by consult-line to detect isearch
; ; Minibuffer history
:map minibuffer-local-map
( " M-s " . consult-history) ; ; orig. next-matching-history-element
( " M-r " . consult-history)) ; ; orig. previous-matching-history-element
; ; Enable automatic preview at point in the *Completions* buffer. This is
; ; relevant when you use the default completion UI.
:hook ( completion-list-mode . consult-preview-at-point-mode)
; ; The :init configuration is always executed (Not lazy)
:init
; ; Optionally configure the register formatting. This improves the register
; ; preview for `consult-register' , `consult-register-load' ,
; ; `consult-register-store' and the Emacs built-ins.
( setq register-preview-delay 0.5
register-preview-function # 'consult-register-format )
; ; Optionally tweak the register preview window.
; ; This adds thin lines, sorting and hides the mode line of the window.
( advice-add # 'register-preview :override # 'consult-register-window )