Comb adalah solusi LISP Emacs asli untuk mencari, menelusuri, dan membuat anotasi kejadian ekspresi reguler dalam file. Antarmuka interaktif memungkinkan untuk melakukan klasifikasi lengkap dari semua hasil untuk mengesampingkan positif palsu dan mencocokkan kecocokan yang tepat selama audit kode.
M-x package-install RET comb
M-x package-install-file RET /path/to/comb/
( add-to-list 'load-path " /path/to/comb/ " )
( require 'comb )Ini adalah panduan cepat dari beberapa fitur sisir. Untuk melakukan pencarian:
Pindah ke direktori root dari repositori yang ingin Anda audit;
Jalankan Mx comb ;
tekan c untuk memasuki mode konfigurasi;
Isi bidang yang diinginkan dan akhirnya melakukan pencarian.
Jika ada beberapa hasil yang harus ditelusuri maka buffer *Comb* ditampilkan, dari sini dimungkinkan untuk membubarkan hasil ( ! ) Dan mengubah status mereka menjadi disetujui ( a / A ), ditolak ( r / R ) atau ragu -ragu ( u / U , default).
Tindakan di atas bekerja pada hasil saat ini yang dapat dipindahkan ke yang berikutnya ( n ) atau sebelumnya ( p ), dengan melakukan hal itu buffer *Comb* diperbarui untuk menampilkan file yang berisi hasilnya, yang sekarang disorot. Hanya hasil yang cocok dengan filter status (bersepeda dengan f ) dan filter catatan RegExp (diatur dengan F ) ditampilkan. Selain itu, t menelurkan buffer yang berisi daftar hasil yang saat ini ditampilkan, ini memungkinkan untuk mencari cuplikan dan melompat ke hasil pada titik.
Akhirnya dimungkinkan untuk menyimpan sesi saat ini untuk s dan memuatnya kembali untuk melanjutkan audit ( l ).
Lihat Bantuan ( h ) untuk daftar semua fitur dan inti.
Pola yang digunakan oleh sisir adalah RegExps yang beraroma Emacs (lihat simpul info (elisp) Regular Expressions ). Utilitas Mx regexp-builder dapat digunakan untuk secara interaktif mencoba RegExps sebelum melakukan pencarian, pastikan untuk menggunakan sintaks yang tepat ( Cc TAB string ) dan tinggalkan di sekitarnya " .
Comb juga menerima daftar callback yang dapat digunakan untuk menghasilkan hasil pencarian tambahan, misalnya, berasal dari alat sering eksternal. Fungsi-fungsi ini dieksekusi dengan default-directory yang ditetapkan ke direktori root dan buffer saat ini yang diatur ke file yang saat ini diproses, mereka menerima jalur relatif sebagai argumen dan harus mengembalikan daftar rentang dalam formulir (BEGIN . END) .
Berikut adalah contoh panggilan balik:
( defun my-callback ( filename )
" Match only the first occurrence of 'qwerty'. "
( when ( re-search-forward " qwerty " nil t )
( list ( cons ( match-beginning 0 ) ( match-end 0 ))))) Kesalahan dalam eksekusi callback tidak fatal, mereka baru saja dilaporkan dalam *Messages* buffer.
Beberapa wajah dan opsi dapat dikonfigurasi, lihat grup kustomisasi comb ( Mx customize-group RET comb ).
Selain itu, semua inti ke dalam buffer *Comb* dapat diubah dengan mengubah comb-keymap keymap. Misalnya, untuk menggunakan panah untuk menavigasi hasil penggunaan:
( define-key comb-keymap ( kbd " <left> " ) 'comb-prev )
( define-key comb-keymap ( kbd " <right> " ) 'comb-next )Ini tidak membuat bintal keybindings asli. Mungkin lebih mudah untuk sepenuhnya mengganti keymap sebagai gantinya untuk menghindari tabrakan dengan mode yang ada:
( setq comb-keymap ( make-sparse-keymap ))
( define-key comb-keymap ( kbd " x " ) 'comb-quit )
( define-key comb-keymap ( kbd " ? " ) 'comb-help )
( define-key comb-keymap ( kbd " <left> " ) 'comb-prev )
( define-key comb-keymap ( kbd " <right> " ) 'comb-next )
; ; ... Lihat Alist comb-default-keybindings untuk mendapatkan fungsi yang digunakan oleh binding keybinding default.