Consult menyediakan perintah pencarian dan navigasi berdasarkan fungsi penyelesaian Emacs yang menyelesaikan-baca. Penyelesaian memungkinkan Anda dengan cepat memilih item dari daftar kandidat. Consult menawarkan perintah consult-grep
dan consult-ripgrep
yang asinkron dan interaktif, serta perintah pencarian berbasis baris consult-line
. Lebih jauh lagi, Consult menyediakan perintah pengalihan buffer tingkat lanjut, consult-buffer
untuk beralih di antara buffer, file yang baru dibuka, bookmark, dan kandidat mirip buffer dari sumber lain. Beberapa perintah Konsultasikan adalah versi yang disempurnakan dari perintah Emacs bawaan. Misalnya perintah consult-imenu
menyajikan daftar datar Imenu dengan pratinjau langsung, pengelompokan, dan penyempitan. Silakan lihat daftar lengkap perintah.
Konsultasikan sepenuhnya kompatibel dengan sistem penyelesaian yang berpusat pada API completing-read
Emacs standar, terutama sistem penyelesaian default, Vertico, Mct, dan Icomplete.
Paket ini meminimalkan spesifikasi sistem penyelesaian. Kemampuan perintah Konsultasi untuk bekerja dengan baik dengan sistem penyelesaian sewenang-wenang adalah salah satu keunggulan utama paket ini. Konsultasi sangat cocok dengan pengaturan yang ada dan membantu Anda menciptakan lingkungan penyelesaian penuh dari komponen kecil dan independen.
Anda dapat menggabungkan paket pelengkap Marginalia, Embark dan Orderless dengan Consult. Marginalia memperkaya tampilan penyelesaian dengan anotasi, misalnya string dokumentasi atau informasi file. Paket Embark yang serbaguna menyediakan tindakan lokal, sebanding dengan menu konteks. Tindakan ini beroperasi pada kandidat yang dipilih di minibuffer atau pada titik di buffer normal. Misalnya, saat memilih dari daftar file, Embark menawarkan tindakan untuk menghapus file tersebut. Selain itu Embark menawarkan fasilitas untuk mengumpulkan kandidat penyelesaian dalam buffer pengumpulan. Bagian Integrasi Embark mendokumentasikan secara rinci bagaimana Consult dan Embark bekerja sama.
Gambar 1: Perintah consult-git-grep
Gambar 2: consult-imenu
perintah
Gambar 3: consult-line
perintah
Kebanyakan perintah Consult mengikuti skema penamaan yang bermakna consult-
. Banyak perintah yang mengimplementasikan fitur Emacs yang kurang dikenal namun mudah digunakan yang disebut “riwayat masa depan”, yang menebak masukan apa yang diinginkan pengguna. Pada prompt perintah ketik Mn
dan biasanya Consult akan memasukkan simbol atau benda ke dalam input.
TIPS: Jika Anda mengaktifkan anotator Marginalia, ketik Mx ^consult
untuk melihat semua perintah Konsultasikan dengan deskripsi singkatnya. Alternatifnya, ketik Ch a ^consult
untuk mendapatkan gambaran umum semua variabel dan fungsi Consult beserta deskripsinya.
consult-buffer
: Versi switch-to-buffer
yang ditingkatkan dengan dukungan untuk buffer virtual. Mendukung pratinjau langsung buffer dan mempersempit jenis buffer virtual. Anda dapat mengetikkan f SPC
untuk mempersempit ke file terbaru. Tekan SPC
untuk menampilkan buffer sementara. Kunci penyempitan yang didukung:recentf-mode
)consult-buffer-sources
.consult-buffer-other-window
, consult-buffer-other-frame
, consult-buffer-other-tab
: Varian dari consult-buffer
.consult-project-buffer
: Varian consult-buffer
terbatas pada buffer dan file terbaru dari proyek saat ini. Anda dapat menambahkan sumber khusus ke consult-project-buffer-sources
. Perintah ini mungkin meminta Anda untuk suatu proyek jika Anda memanggilnya dari luar proyek.consult-bookmark
: Pilih atau buat bookmark. Untuk memilih bookmark, Anda dapat menggunakan consult-buffer
sebagai alternatif, yang dapat menyertakan sumber buffer virtual bookmark. Perhatikan bahwa consult-bookmark
mendukung pratinjau bookmark dan penyempitan.consult-recent-file
: Pilih dari file terbaru dengan pratinjau. Anda mungkin lebih memilih consult-buffer
yang kuat, yang dapat menyertakan file terbaru sebagai sumber buffer virtual. recentf-mode
memungkinkan pelacakan file terbaru. consult-yank-from-kill-ring
: Versi yank
yang disempurnakan untuk memilih item dari kill-ring
. Teks yang dipilih dipratinjau sebagai overlay di buffer.consult-yank-pop
: Versi yank-pop
yang disempurnakan dengan perilaku DWIM, yang menggantikan yank
terakhir dengan bersepeda melalui kill-ring
, atau jika belum ada yank
terakhir, konsultasikan dengan kill-ring
. Teks yang dipilih dipratinjau sebagai overlay di buffer.consult-yank-replace
: Seperti consult-yank-pop
, tetapi selalu mengganti yank
terakhir dengan item dari kill-ring
.consult-kmacro
: Pilih makro dari cincin makro dan jalankan. consult-register
: Pilih dari daftar register. Perintah ini mendukung penyempitan untuk mendaftarkan tipe dan melihat pratinjau posisi penanda. Perintah ini berguna untuk mencari isi register. Untuk akses cepat gunakan perintah consult-register-load
, consult-register-store
atau perintah register bawaan Emacs.consult-register-format
: Setel register-preview-function
ke fungsi ini untuk pemformatan register yang ditingkatkan. Lihat contoh konfigurasi.consult-register-window
: Ganti register-preview
dengan fungsi ini untuk jendela pendaftaran yang lebih baik. Lihat contoh konfigurasi.consult-register-load
: Perintah utilitas untuk memuat register dengan cepat. Perintahnya melompat ke nilai register atau memasukkannya.consult-register-store
: Peningkatan UI untuk menyimpan register tergantung pada konteks saat ini dengan menu tindakan. Dengan wilayah aktif, simpan/tambahkan/tambahkan konten, secara opsional menghapus wilayah ketika argumen awalan diberikan. Dengan argumen awalan numerik, simpan/tambahkan nomornya. Kalau tidak, simpan titik, bingkai, jendela, atau kmacro. Contoh penggunaan:M-' x
: Jika tidak ada wilayah yang aktif, simpan titik di register x
. Jika suatu wilayah aktif, simpan wilayah tersebut di register x
.M-' Mw x
: Menyimpan konfigurasi jendela di register x
.Cu 100 M-' x
: Nomor simpan di register x
. consult-goto-line
: Lompat ke nomor baris yang disempurnakan dengan pratinjau langsung. Ini adalah pengganti drop-in untuk goto-line
. Masukkan nomor baris untuk melompat ke kolom pertama dari baris tertentu. Atau masukkan line:column
untuk melompat ke kolom tertentu.consult-mark
: Lompat ke penanda di mark-ring
. Mendukung pratinjau langsung dan pengeditan rekursif.consult-global-mark
: Lompat ke penanda di global-mark-ring
. Mendukung pratinjau langsung dan pengeditan rekursif.consult-outline
: Lompat ke judul garis besar. Mendukung penyempitan ke tingkat judul, pratinjau langsung, dan pengeditan rekursif.consult-imenu
: Lompat ke item imenu di buffer saat ini. Mendukung pratinjau langsung, pengeditan dan penyempitan rekursif.consult-imenu-multi
: Lompat ke item imenu di buffer proyek, dengan mode utama yang sama dengan buffer saat ini. Mendukung pratinjau langsung, pengeditan dan penyempitan rekursif. Fitur ini terinspirasi oleh imenu-anywhere. consult-line
: Masukkan string pencarian dan pilih dari baris yang cocok. Mendukung pratinjau langsung dan pengeditan rekursif. Simbol pada titik dan string pencarian terbaru ditambahkan ke “sejarah masa depan” dan dapat diakses dengan menekan Mn
. Ketika consult-line
terikat ke isearch-mode-map
dan dipanggil selama Isearch berjalan, ia akan menggunakan string Isearch saat ini.consult-line-multi
: Pencarian secara dinamis di beberapa buffer. Secara default, pencarian di seluruh buffer proyek. Jika dipanggil dengan argumen awalan, cari di semua buffer. Kandidat dihitung berdasarkan permintaan berdasarkan masukan. Perintah ini berperilaku seperti consult-grep
, tetapi beroperasi pada buffer, bukan pada file.consult-keep-lines
: Penggantian keep/flush-lines
yang menggunakan gaya penyelesaian saat ini untuk memfilter buffer. Fungsi ini memperbarui buffer saat mengetik. Khususnya consult-keep-lines
dapat mempersempit buffer pengumpulan Embark yang diekspor lebih lanjut, dengan mengandalkan pemfilteran penyelesaian yang sama seperti completing-read
. Jika input dimulai dengan operator negasi, yaitu ! SPC
, filternya cocok dengan komplemennya. Jika suatu wilayah aktif, wilayah tersebut membatasi pemfilteran.consult-focus-lines
: Sembunyikan garis untuk sementara dengan memfilternya menggunakan gaya penyelesaian saat ini. Panggil dengan argumen awalan Cu
untuk menampilkan kembali garis tersembunyi. Jika input dimulai dengan operator negasi, yaitu ! SPC
, filternya cocok dengan komplemennya. Berbeda dengan consult-keep-lines
fungsi ini tidak mengedit buffer. Jika suatu wilayah aktif, wilayah tersebut membatasi pemfilteran. consult-grep
, consult-ripgrep
, consult-git-grep
: Cari ekspresi reguler dalam file. Konsultasikan memanggil Grep secara asinkron, saat Anda memasukkan istilah pencarian. Setelah setidaknya consult-async-min-input
, pencarian akan dimulai. Consult membagi string masukan menjadi dua bagian, jika karakter pertama adalah karakter tanda baca, seperti #
. Misalnya #regexps#filter-string
, dipecah pada #
kedua. regexps
string diteruskan ke Grep. Perhatikan bahwa Consult mengubah ekspresi reguler Emacs menjadi ekspresi yang dipahami oleh program pencarian. Selalu gunakan ekspresi reguler Emacs saat diminta. Jika Anda memasukkan beberapa ekspresi reguler yang dipisahkan oleh spasi, hanya baris yang cocok dengan semua ekspresi reguler yang akan ditampilkan. Untuk mencocokkan ruang secara harfiah, keluarkan ruang dengan garis miring terbalik. filter-string
diteruskan ke pemfilteran Emacs cepat untuk lebih mempersempit daftar kecocokan. Ini sangat berguna jika Anda menggunakan gaya penyelesaian tingkat lanjut seperti tanpa pesanan. consult-grep
mendukung pratinjau. consult-grep
mencari direktori proyek saat ini jika proyek ditemukan. Kalau tidak, default-directory
akan dicari. Jika consult-grep
dipanggil dengan argumen awalan Cu Ms g
, Anda dapat menentukan satu atau lebih file dan direktori yang dipisahkan koma secara manual. Jika dipanggil dengan dua argumen awalan Cu Cu Ms g
, Anda dapat memilih proyek terlebih dahulu jika Anda belum berada di dalam proyek.consult-find
, consult-fd
, consult-locate
: Temukan file dengan mencocokkan jalur dengan regexp. Seperti untuk consult-grep
, root proyek atau direktori saat ini adalah direktori root untuk pencarian. String masukan diperlakukan serupa dengan consult-grep
, di mana bagian pertama diteruskan ke find, dan bagian kedua digunakan untuk pemfilteran Emacs. Argumen awalan untuk consult-find
berfungsi seperti argumen untuk perintah konsultasi grep. consult-compile-error
: Lompat ke kesalahan kompilasi. Mendukung penyempitan pratinjau langsung dan pengeditan rekursif.consult-flymake
: Lompat ke diagnostik Flymake. Mendukung pratinjau langsung dan pengeditan rekursif. Perintah tersebut mendukung penyempitan. Tekan e SPC
, w SPC
, n SPC
untuk hanya menampilkan masing-masing kesalahan, peringatan dan catatan.consult-xref
: Integrasi dengan xref. Fungsi ini dapat diatur sebagai xref-show-xrefs-function
dan xref-show-definitions-function
. consult-complex-command
: Pilih perintah dari command-history
. Perintah ini adalah versi repeat-complex-command
completing-read
dan juga merupakan pengganti perintah command-history
dari chistory.el.consult-history
: Masukkan string dari riwayat buffer saat ini, misalnya riwayat Eshell atau Comint. Anda juga dapat menjalankan perintah ini dari minibuffer. Dalam hal ini consult-history
menggunakan riwayat yang disimpan dalam minibuffer-history-variable
. Jika Anda lebih suka completion-at-point
, lihat cape-history
dari paket Cape.consult-isearch-history
: Selama sesi Isearch, perintah ini mengambil string pencarian dari riwayat dan melanjutkan pencarian dengan string yang baru dipilih. Di luar Isearch, perintah ini memungkinkan Anda memilih string dari riwayat dan memulai Isearch baru. consult-isearch-history
bertindak sebagai pengganti isearch-edit-string
. consult-minor-mode-menu
: Mengaktifkan/menonaktifkan mode minor. Mendukung penyempitan ke mode on/off/lokal/global dengan menekan i/o/l/g SPC
masing-masing.consult-mode-command
: Jalankan perintah dari mode minor atau mayor yang sedang aktif. Mendukung penyempitan ke mode lokal-minor/global-minor/mayor melalui tombol l/g/m
. consult-org-heading
: Varian dari consult-imenu
atau consult-outline
untuk buffer Org. Judul dan judul pendahulunya dipisahkan dengan garis miring. Mendukung penyempitan berdasarkan tingkat judul, prioritas dan kata kunci TODO, serta pratinjau langsung dan pengeditan rekursif.consult-org-agenda
: Lompat ke judul agenda Organisasi. Mendukung penyempitan berdasarkan tingkat judul, prioritas dan kata kunci TODO, serta pratinjau langsung dan pengeditan rekursif. consult-man
: Temukan halaman manual Unix, melalui Unix apropos
atau man -k
. consult-man
membuka halaman manual yang dipilih menggunakan perintah man
Emacs.consult-info
: Pencarian teks lengkap melalui halaman info. Jika perintah ini dipanggil dari dalam buffer *info*
, perintah tersebut akan mencari melalui manual saat ini. Anda mungkin ingin membuat perintah sendiri yang menelusuri serangkaian halaman info yang telah ditentukan sebelumnya, misalnya: ( 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
: Pilih tema dan nonaktifkan semua tema yang saat ini diaktifkan. Mendukung pratinjau langsung tema sambil menelusuri kandidat.consult-preview-at-point
dan consult-preview-at-point-mode
: Mode perintah dan minor yang mempratinjau kandidat pada titik di buffer *Completions*
. Mode ini relevan jika Anda menggunakan Mct atau UI *Completions*
default.consult-completion-in-region
: Jika Anda tidak menggunakan Corfu sebagai UI penyelesaian dalam buffer, fungsi ini dapat ditetapkan sebagai completion-in-region-function
. Kemudian UI penyelesaian minibuffer Anda (misalnya Vertico atau Icomplete) akan digunakan untuk 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)))
Daripada consult-completion-in-region
, Anda mungkin lebih suka melihat penyelesaian langsung di buffer sebagai popup kecil. Dalam hal ini, saya merekomendasikan paket Corfu. Ada batasan teknis consult-completion-in-region
yang dikombinasikan dengan mode Lsp. Server Lsp mengandalkan masukan pada titik, untuk menghasilkan string kandidat yang disempurnakan. Karena penyelesaian ditransfer dari buffer asli ke minibuffer, server tidak menerima input yang diperbarui. Sebaliknya, penyelesaian Lsp dalam buffer misalnya melalui Corfu berfungsi dengan baik karena penyelesaian dilakukan langsung di buffer asli.
Konsultasikan meningkatkan completing-read
dengan pratinjau langsung kandidat, kemampuan penyempitan tambahan pada kelompok kandidat, dan daftar kandidat yang dihasilkan secara asinkron. Fungsi consult--read
internal, yang digunakan oleh sebagian besar perintah Konsultasikan, merupakan pembungkus tipis untuk completing-read
dan menyediakan fungsionalitas khusus. Untuk mendukung banyak sumber kandidat, terdapat fungsi consult--multi
. Arsitektur Consult memungkinkannya bekerja dengan sistem penyelesaian berbeda di backend, sambil tetap menawarkan fitur-fitur canggih.
Beberapa perintah Konsultasikan mendukung pratinjau langsung. Misalnya ketika Anda menelusuri item-item consult-line
, buffer akan menggulir ke posisi yang sesuai. Dimungkinkan untuk berpindah-pindah antara minibuffer dan buffer untuk melakukan pengeditan rekursif saat pencarian sedang berlangsung.
Konsultasikan mengaktifkan pratinjau secara default. Anda dapat menonaktifkannya dengan menyesuaikan variabel consult-preview-key
. Selain itu, dimungkinkan untuk menentukan pengikatan kunci yang memicu pratinjau secara manual seperti yang ditunjukkan dalam contoh konfigurasi. Pengaturan default dari consult-preview-key
adalah any
yang berarti bahwa Konsultasi langsung memicu pratinjau ketika tombol apa pun ditekan ketika kandidat yang dipilih berubah. Anda dapat mengonfigurasi setiap perintah satu per satu dengan :preview-key
nya sendiri. Pengaturan berikut mungkin dilakukan:
'any
(list :debounce 0.5 'any)
"M-."
(list :debounce 0.5 "M-.")
nil
Rekomendasi yang aman adalah membiarkan pratinjau langsung otomatis diaktifkan secara umum dan menonaktifkan pratinjau otomatis hanya untuk perintah yang pratinjaunya mungkin mahal karena pemuatan file. Secara internal, Konsultasikan menggunakan nilai this-command
untuk menentukan :preview-key
yang disesuaikan. Ini berarti bahwa jika Anda menggabungkan perintah consult-*
dalam fungsi atau perintah Anda sendiri, Anda juga perlu menambahkan nama perintah khusus Anda ke panggilan consult-customize
agar dapat dipertimbangkan.
(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
Dalam hal ini orang mungkin bertanya-tanya apa perbedaan antara menggunakan tindakan Memulai pada kandidat saat ini dibandingkan dengan pratinjau yang dipicu secara manual. Perbedaan utamanya adalah file yang dibuka dengan pratinjau manual ditutup kembali setelah sesi penyelesaian. Selama pratinjau, beberapa fungsi dinonaktifkan untuk meningkatkan kinerja, lihat misalnya variabel penyesuaian consult-preview-variables
dan consult-preview-allowed-hooks
. Hanya kait yang terdaftar di consult-preview-allowed-hooks
yang dijalankan. Variabel ini berlaku untuk find-file-hook
, change-major-mode-hook
dan mode hooks, misalnya prog-mode-hook
. Untuk mengaktifkan penguncian font tambahan selama pratinjau, tambahkan kait yang sesuai ke daftar yang diizinkan. Kode berikut menunjukkan hal ini untuk org-modern dan 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 )
File yang lebih besar dari consult-preview-partial-size
akan dipratinjau sebagian. Menunda pratinjau juga berguna untuk consult-theme
, karena pratinjau tema lambat. Penundaan ini menghasilkan pengalaman UI yang lebih lancar.
; ; 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 memiliki dukungan khusus untuk kelompok kandidat. Jika UI penyelesaian mendukung fungsi pengelompokan, UI akan memisahkan grup dengan garis tipis dan menampilkan judul grup. Pengelompokan berguna jika daftar kandidat terdiri dari kandidat dari beberapa jenis atau kandidat dari berbagai sumber, seperti perintah consult-buffer
, yang memperlihatkan buffer dan file yang baru dibuka. Perhatikan bahwa Anda dapat menonaktifkan judul grup dengan mengatur properti :group
dari perintah terkait ke nil menggunakan makro consult-customize
.
Dengan memasukkan awalan penyempitan atau dengan menekan tombol penyempitan, dimungkinkan untuk membatasi kandidat penyelesaian pada kelompok kandidat tertentu. Saat Anda menggunakan perintah consult-buffer
, Anda dapat memasukkan awalan b SPC
untuk membatasi daftar kandidat hanya pada buffer. Jika Anda menekan DEL
setelahnya, daftar kandidat lengkap akan ditampilkan lagi. Selanjutnya kunci awalan penyempitan dan kunci pelebaran dapat dikonfigurasi yang dapat ditekan untuk mencapai efek yang sama, lihat variabel konfigurasi consult-narrow-key
dan consult-widen-key
.
Setelah menekan consult-narrow-key
, kemungkinan tombol penyempitan dapat ditampilkan dengan menekan Ch
. Saat menekan Ch
setelah beberapa kunci awalan, prefix-help-command
dipanggil, yang menampilkan jendela bantuan pengikatan kunci secara default. Sebagai alternatif yang lebih ringkas, ada perintah consult-narrow-help
yang dapat diikat ke sebuah kunci, misalnya ?
atau Ch
di consult-narrow-map
, seperti yang ditunjukkan pada contoh konfigurasi. Jika kunci mana yang dipasang, tombol penyempitan secara otomatis ditampilkan di jendela kunci mana setelah menekan consult-narrow-key
.
Consult memiliki dukungan untuk pembuatan daftar kandidat yang tidak sinkron. Fitur ini digunakan untuk perintah pencarian seperti consult-grep
, di mana daftar kecocokan dihasilkan secara dinamis saat pengguna mengetikkan ekspresi reguler. Proses grep dijalankan di latar belakang. Saat memodifikasi ekspresi reguler, proses latar belakang dihentikan dan proses baru dimulai dengan ekspresi reguler yang dimodifikasi.
Kecocokan yang telah ditemukan kemudian dapat dipersempit menggunakan gaya penyelesaian Emacs yang diinstal. Ini bisa menjadi berguna jika Anda menggunakan, misalnya, gaya penyelesaian orderless
.
Pemfilteran dua tingkat ini dimungkinkan dengan memisahkan string masukan. Sebagian dari string masukan diperlakukan sebagai masukan ke grep dan sebagian masukan digunakan untuk pemfilteran. Ada beberapa gaya pemisahan yang tersedia, dikonfigurasikan dalam consult-async-split-styles-alist
: nil
, comma
, semicolon
dan perl
. Gaya pemisahan default dikonfigurasi dengan variabel consult-async-split-style
.
Dengan gaya pemisahan comma
dan semicolon
, kata pertama sebelum koma atau titik koma diteruskan ke grep, string sisanya digunakan untuk pemfilteran. Gaya pemisahan nil
tidak melakukan pemisahan apa pun, seluruh input diteruskan ke grep.
Gaya pemisahan perl
membagi string masukan menjadi karakter tanda baca, menggunakan sintaksis yang mirip dengan ekspresi reguler Perl.
Contoh:
#defun
: Cari “defun” menggunakan grep.#consult embark
: Cari "consult" dan "mulai" menggunakan grep dalam urutan apa pun.#first.*second
: Cari "pertama" diikuti dengan "kedua" menggunakan grep.#(consult|embark)
: Cari “konsultasikan” atau “mulai” menggunakan grep. Perhatikan penggunaan ekspresi reguler gaya Emacs.#defun#consult
: Cari “defun” menggunakan grep, filter dengan kata “consult”./defun/consult
: Dimungkinkan juga untuk menggunakan karakter tanda baca lainnya.#to#
: Pencarian paksa untuk "ke" menggunakan grep, karena pola grep harus lebih panjang dari karakter consult-async-min-input
secara default.#defun -- --invert-match#
: Berikan argumen --invert-match
ke grep. Proses asinkron seperti find
dan grep
membuat buffer log kesalahan _*consult-async*
(perhatikan spasi di depannya), yang berguna untuk pemecahan masalah. Prompt memiliki indikator kecil yang menunjukkan status proses:
:
tanda titik dua yang biasa, sebelum input diberikan.*
dengan peringatan wajah, proses sedang berjalan.:
dengan wajah sukses, sukses, proses keluar dengan kode kesalahan nol.!
dengan tampilan kesalahan, kegagalan, proses keluar dengan kode kesalahan bukan nol.;
dengan tampilan kesalahan, terputus, misalnya jika lebih banyak masukan yang diberikan. Beberapa sumber kandidat sinkron dapat digabungkan. Fitur ini digunakan oleh perintah consult-buffer
untuk menampilkan kandidat seperti buffer dalam satu menu untuk akses cepat. Secara default, consult-buffer
mencakup buffer, bookmark, file terbaru, serta buffer dan file khusus proyek. Daftar sumber dapat dikonfigurasi melalui variabel consult-buffer-sources
. Sumber khusus yang sewenang-wenang dapat ditentukan.
Sebagai contoh, sumber bookmark didefinisikan sebagai berikut:
( defvar consult--source-bookmark
`( :name " Bookmark "
:narrow ?m
:category bookmark
:face consult-bookmark
:history bookmark-history
:items ,# 'bookmark-all-names
:action ,# 'consult--bookmark-action ))
Bidang sumber yang wajib diisi:
:category
Kategori penyelesaian.:items
Daftar string yang akan dipilih atau berfungsi mengembalikan daftar string. Daftar sel kontra tidak didukung.Bidang sumber opsional:
:name
Nama sumber, digunakan untuk penyempitan, judul grup, dan anotasi.:narrow
Mempersempit pasangan karakter atau (character . string)
.:preview-key
Kunci pratinjau atau kunci yang memicu pratinjau.:enabled
Fungsi yang harus mengembalikan t jika sumbernya diaktifkan.:hidden
Ketika t kandidat sumber ini disembunyikan secara default.:face
digunakan untuk menyorot kandidat.:annotate
Fungsi anotasi dipanggil untuk setiap kandidat, mengembalikan string.:history
Nama variabel histori untuk menambahkan kandidat terpilih.:default
Harus t jika item pertama dari sumber adalah nilai default.:action
Fungsi dipanggil dengan kandidat yang dipilih.:new
Fungsi dipanggil dengan nama kandidat baru, hanya jika :require-match
nihil.:state
Konstruktor negara untuk sumbernya, harus mengembalikan fungsi negara. Bidang :state
dan :action
pada sumber memerlukan penjelasan lebih panjang. Fungsi :action
mengambil satu argumen dan hanya dipanggil setelah seleksi dengan kandidat terpilih, jika seleksi belum dibatalkan. Fungsionalitas ini disediakan untuk kenyamanan dan kemudahan definisi sumber. Bidang :state
lebih umum. Fungsi :state
adalah fungsi konstruktor tanpa argumen, yang dapat melakukan beberapa pengaturan yang diperlukan untuk pratinjau. Itu harus mengembalikan penutupan yang mengambil argumen ACTION dan CANDIDATE. Lihat dokumen consult--with-preview
untuk detail lebih lanjut tentang argumen TINDAKAN.
Secara default, consult-buffer
untuk melihat pratinjau buffer, bookmark, dan file. Memuat file atau bookmark terbaru dapat mengakibatkan pengoperasian yang mahal. Namun dimungkinkan untuk mengonfigurasi pratinjau manual sebagai berikut.
(consult-customize
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
:preview-key " M-. " )
Sumber dapat ditambahkan langsung ke daftar consult-buffer-source
untuk kenyamanan. Misalnya, sumber berikut mencantumkan semua buffering Organisasi dan memungkinkan Anda membuat buffer baru.
( 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 )
Seseorang dapat membuat sumber serupa untuk mode utama lainnya. Lihat Konsultasikan wiki untuk mengetahui banyak contoh sumber tambahan. Lihat juga dokumentasi consult-buffer
dan consult--multi
API. Fungsi consult--multi
dapat digunakan untuk membuat perintah multi-sumber baru.
CATATAN : Instal paket embark-consult
dari MELPA, yang menyediakan tindakan Embark khusus Consult dan ekspor buffer Occur.
Memulai adalah paket serbaguna yang menawarkan tindakan bergantung pada konteks, sebanding dengan menu konteks. Lihat manual Embark untuk penjelasan lengkap tentang kemampuannya.
Tindakan adalah perintah yang dapat dijalankan pada kandidat yang dipilih saat ini (atau target dalam terminologi Embark). Saat melengkapi file, misalnya perintah delete-file
ditawarkan. Dengan Embark Anda dapat menjalankan perintah sewenang-wenang pada kandidat yang dipilih saat ini melalui Mx
.
Lebih jauh lagi, Embark menyediakan perintah embark-collect
, yang mengumpulkan kandidat dan menyajikannya dalam buffer pengumpulan Embark, di mana tindakan lebih lanjut dapat diterapkan pada mereka. Fitur terkait adalah perintah embark-export
, yang mengekspor daftar kandidat ke buffer tipe khusus. Misalnya dalam hal penyelesaian file, buffer Dired dibuka.
Dalam konteks Consult, yang paling menarik adalah kemungkinan untuk mengekspor lini yang cocok dari consult-line
, consult-outline
, consult-mark
, dan consult-global-mark
. Baris yang cocok diekspor ke buffer Occur di mana baris tersebut dapat diedit melalui occur-edit-mode
(tekan tombol e
). Demikian pula, Embark mendukung ekspor kecocokan yang ditemukan oleh consult-grep
, consult-ripgrep
dan consult-git-grep
ke buffer Grep, di mana kecocokan di seluruh file dapat diedit, jika paket wgrep diinstal. Ketiga alur kerja ini simetris.
consult-line
-> embark-export
ke buffer occur-mode
-> occur-edit-mode
untuk mengedit kecocokan dalam buffer.consult-grep
-> embark-export
ke buffer grep-mode
-> wgrep
untuk mengedit semua kecocokan.consult-find
-> embark-export
ke buffer dired-mode
-> wdired-change-to-wdired-mode
untuk mengedit.Konsultasikan dapat diinstal dari ELPA atau MELPA melalui manajer paket bawaan Emacs. Alternatifnya, dapat langsung diinstal dari repositori pengembangan melalui manajer paket non-standar lainnya.
Terdapat Consult wiki, dimana contoh konfigurasi tambahan dapat dikontribusikan.
PENTING: Anda disarankan untuk mengaktifkan pengikatan leksikal di konfigurasi Anda. Banyak cuplikan kode terkait Konsultasi memerlukan pengikatan leksikal, karena menggunakan lambda dan penutupan.
Paket Konsultasi hanya menyediakan perintah dan tidak menambahkan ikatan kunci atau mode apa pun. Oleh karena itu paket ini tidak mengganggu tetapi memerlukan sedikit usaha pengaturan. Untuk menggunakan perintah Konsultasi, disarankan untuk menambahkan pengikatan tombol untuk perintah yang sering diakses. Perintah yang jarang digunakan dapat dijalankan melalui Mx
. Jangan ragu untuk hanya mengikat perintah yang Anda anggap berguna untuk alur kerja Anda. Konfigurasi yang ditampilkan di sini bergantung pada makro use-package
, yang merupakan alat praktis untuk mengelola konfigurasi paket.
CATATAN: Ada Consult wiki, tempat Anda dapat menyumbangkan contoh konfigurasi tambahan.
; ; 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 )