Mode minor apa yang mencetak paren pembuka di area gema?

10

Ini adalah fitur yang sangat bagus, tetapi hanya ditampilkan saat memasukkan paren, bukan ketika mengubah ke posisi kursor. Apakah ada perintah interaktif yang bisa saya panggil untuk menampilkan ini? Bisakah saya mengonfigurasinya untuk muncul pada pergerakan kursor?

masukkan deskripsi gambar di sini

wdkrnls
sumber

Jawaban:

6

Pesan itu dicetak ketika awal sexp tidak terlihat di jendela; jika tidak, paren pembuka disorot sementara.

Perilaku ini diimplementasikan dalam simple.eldan tidak terkait dengan mode minor apa pun. Itu diimplementasikan menggunakan pengait yang berjalan ketika karakter dimasukkan.

Berkedip aktual / pesan berasal dari perintah blink-matching-open, yang dapat Anda sebut sendiri. Misalnya, Anda dapat memulai penghitung waktu idle yang akan memanggil perintah ini setiap kali Anda berhenti sebentar pada paren penutup. Ini adalah cara kerja built-in show-paren-mode.

(defvar match-paren--idle-timer nil)
(defvar match-paren--delay 0.5)
(setq match-paren--idle-timer (run-with-idle-timer match-paren--delay t #'blink-matching-open))
glukas
sumber
Saya ingin ini juga, tetapi bagaimana saya membuatnya tidak sementara? Yaitu saya ingin pesan tetap di minibuffer sampai kursor dipindahkan.
Faheem Mitha
4

Anda dapat menggunakan M-x blink-matching-open RETuntuk menampilkan pesan jika Anda tepat setelah paren. Untuk melakukannya lebih "sambil jalan" Anda mungkin ingin mencoba M-x show-paren-mode, itu sebenarnya tidak memberi Anda pesan ini.

Kalau tidak, Anda bisa menggunakan sesuatu seperti

(add-hook 'post-command-hook
          (lambda ()
            (if (and (not (bobp))
                     (eq ?\) (char-syntax (char-before))))
                (blink-matching-open))))
Stefan
sumber