Cari melalui nilai-nilai semua variabel di Emacs

9

Saya ingin mencari variabel mana yang mengandung nilai tertentu.

Apakah ada cara untuk melakukan pencarian regex melalui nilai-nilai setiap variabel di Emacs?

izkon
sumber

Jawaban:

12

Apakah apropos-valuemelakukan apa yang Anda cari?

(apropos-value PATTERN &optional DO-ALL)

Show all symbols whose value’s printed representation matches PATTERN.
PATTERN can be a word, a list of words (separated by spaces),
or a regexp (using some regexp special characters).  If it is a word,
search for matches for that word as a substring.  If it is a list of words,
search for matches for any two (or more) of those words.
genhack
sumber
3

Perintah Iciclesicicle-apropos-value meningkatkan perintah vanilla apropos-value, dengan membiarkan Anda secara bersamaan mencocokkan nama variabel dan nilai terhadap regexps (atau substring atau pola lainnya). Anda tidak perlu mencocokkan keduanya, tetapi Anda dapat mencocokkan keduanya.

Dan (seperti dengan semua penyelesaian Icicles) Anda dapat mencocokkan nama atau nilai atau keduanya secara progresif , yaitu, menggunakan beberapa pola secara bertahap. Ini sangat penting untuk kasus di mana, seperti yang Anda katakan, Anda cocok dengan semua variabel di Emacs, untuk memulai. Artinya, Anda tidak peduli untuk mencocokkan dengan nama; Anda hanya ingin mencocokkan nilai.

Untuk mencocokkan nama dan nilai, gunakan saja C-M-juntuk mengakhiri pola nama dan memulai pola nilai. Jadi untuk mencocokkan hanya nilai, Anda mulai dengan C-M-jdan kemudian ketik pola nilai, karena pola nama kosong.

Misalnya, untuk melihat semua variabel yang nilainya saat ini cocok nil( S-TABmenunjukkan kecocokan):

M-x icicle-apropos-value RET

SYMBOL C-M-j VALUE: C-M-j nil S-TAB

Untuk melihat semua variabel yang nilainya saat ini cocok dengan regexp .*plist:

SYMBOL C-M-j VALUE: C-M-j .*plist S-TAB

Variabel yang cocok dan nilainya ditampilkan dalam buffer *Completions*, sebagai kandidat penyelesaian. Anda dapat siklus antara kandidat, membuat masing-masing saat ini pada gilirannya, menggunakan tombol vertikal-panah: <down> <down> <down>....

Baris doc-string pertama untuk kandidat penyelesaian saat ini ditunjukkan pada mode-line *Completions*.

Anda bisa mendapatkan deskripsi lengkap (yaitu, C-h v) dari kandidat saat ini dengan menggunakan kunci bantuan di atasnya: C-M-mouse-2atau C-M-RET. Untuk melihat bantuan pada masing-masing kandidat secara bergantian, siklus menggunakan tombol panah dengan C-M-(misalnya, ulangi C-M-<down>).

Lihat Value-Aware Variable-Apropos Multi-Command .

C-h f icicle-apropos-value mengatakan ini:

icicle-apropos-valueadalah fungsi Lisp interaktif yang dikompilasi di icicles-cmd1.el.

Hal ini terikat untuk menu-bar help-menu apropos icicles icicle-apropos-value, menu-bar help-menu apropos apropos-var-value, menu-bar help-menu search-documentation find-option-by-value.

(icicle-apropos-value)

Pilih variabel, fungsi, atau deskripsi simbol lainnya.

Ini mirip dengan perintah vanilla apropos-value, tetapi Anda dapat mencocokkan dengan nama variabel dan nilai yang dicetak pada saat yang sama.

Secara default, setiap kandidat penyelesaian terdiri dari beberapa penyelesaian yang terdiri dari nama variabel plus nilainya. Mereka dipisahkan oleh icicle-list-join-string( "^G^J", secara default).

Dengan arg awalan, kandidat adalah berbagai jenis simbol:

  • <0: fungsi dan defnya (tetapi def byte-yang dikompilasi dilewati)
  • > 0: simbol dan daftar mereka
  • = 0: variabel dan nilainya, fungsi dan definisi mereka, dan simbol lainnya dan daftar mereka

  • plain ( C-u): menggunakan set kandidat yang dihitung terakhir (dalam cache )

Anda dapat menggunakan C-$selama penyelesaian untuk beralih memfilter domain kandidat awal sesuai dengan argumen awalan, sebagai berikut:

  • tidak ada: hanya opsi pengguna (+ nilai)
  • <0: hanya perintah (+ definisi)
  • > 0: hanya wajah (+ daftar)
  • = 0: hanya opsi (+ nilai), perintah (+ def), wajah (+ daftar)

Lihat juga:

  • icicle-apropos-vars-w-val-satisfying, icicle-describe-vars-w-val-satisfying- nilai memenuhi predikat
  • icicle-plist - mirip dengan perintah ini dengan arg awalan positif
  • icicle-vardoc, icicle-fundoc, icicle-doc- nama pertandingan & doc
  • icicle-apropos-options-of-type, icicle-describe-option-of-type- cocokkan nama & jenis defcustom

Karena Anda akan sering menggunakan perintah ini dalam konteks yang menghasilkan banyak, banyak kandidat penyelesaian, berikut ini dinonaktifkan secara default untuk perintah ini:

  • Mode lengkap. Anda dapat beralih menggunakan ini M-i M-#.
  • Sel-sel es bertambah. Anda dapat menggunakan siklus ini M-i #.

Baca input, lalu panggil icicle-doc-actionuntuk menindaklanjutinya.

Selesai input-kandidat dan siklus tersedia. Saat bersepeda, kunci-kunci ini dengan awalan C-aktif:

C-mouse-2, C-return- Bertindak pada kandidat penyelesaian saja saat ini C-down, C-wheel-down- Pindah ke kandidat penyelesaian selanjutnya dan bertindak C-up, C-wheel-up- Pindah ke kandidat penyelesaian sebelumnya dan bertindak C-next - Pindah ke kandidat penyelesaian-apropos berikutnya dan bertindak C-prior- Pindah ke kandidat penyelesaian-penyelesaian apropos sebelumnya dan bertindak C-end - Pindah ke berikutnya kandidat dan tindakan prefix-completion C-home - Pindah ke kandidat dan tindakan prefix-completion sebelumnya C-! - Bertindak pada semua kandidat, berturut-turut (hati-hati!)

Ketika tindakan kandidat dan siklus digabungkan (misalnya C-next), opsi pengguna icicle-act-before-cycle-flagmenentukan mana yang terjadi terlebih dahulu.

Dengan awalan C-M-bukan C-, kunci yang sama ( C-M-mouse-2, C-M-RET, C-M-down, dan sebagainya) memberikan bantuan tentang calon.

Gunakan mouse-2,, RETatau S-RETuntuk akhirnya memilih kandidat, atau C-guntuk keluar.

Drew
sumber