Tidak next-error
menggulir buffer kompilasi-kesalahan, sehingga kesalahan saat ini ditampilkan sebagai baris pertama jendela?
Jika tidak, bukankah itu setidaknya menempatkan kursor pada baris kesalahan saat ini? Jika ya, dan jika kursor tidak cukup terlihat untuk Anda, coba gunakan hl-line-mode
untuk menyorot garis saat ini. Atau pertimbangkan untuk menggunakan perpustakaan crosshairs
untuk menyorot baris saat ini dan kolom saat ini.
Perbarui setelah komentar Anda
Saya pikir Anda meminta next-error
buffer *compilation*
. Jika Anda melakukan itu, maka baris akan digulir ke atas, seperti yang saya jelaskan.
Tetapi jika Anda menggunakan next-error
buffer luar *compilation*
maka Anda perlu menggunakan next-error-hook
, dalam buffer*compilation*
, menyorot garis saat ini atau pinggiran atau apa pun, dengan cara apa pun yang Anda suka.
Ini adalah contoh cepat dan kotor:
(defun foo ()
"..."
(with-current-buffer next-error-last-buffer
(hl-line-mode 1)))
(add-hook 'next-error-hook 'foo)
(Tentu saja, Anda benar-benar hanya perlu mengaktifkan hl-line-mode
sekali dalam buffer yang. Melakukan hal itu seperti yang ditunjukkan di atas adalah berlebihan, tapi tidak ada salahnya. Anda mungkin berpikir bahwa Anda hanya bisa menambahkan foo
untuk grep-mode-hook
atau compilation-mode-hook
. Tapi ketika mereka kait dipanggil ada tidak next-error-last-buffer
.)
catatan:
Ada dua opsi pengguna yang mengontrol cara untuk menunjukkan klik di buffer sumber (bukan di buffer kompilasi): next-error-highlight
dan next-error-highlight-no-select
. Mereka menawarkan kemungkinan yang sama, tetapi mereka digunakan oleh perintah yang berbeda. Kemungkinannya termasuk menggunakan panah pinggiran atau menyoroti pertandingan untuk waktu tertentu.
Tetapi tidak ada opsi untuk mengendalikan indikasi hit saat ini dalam buffer *compilation*
. Jadi Emacs menawarkan dua opsi (di mana satu mungkin akan cukup) untuk buffer sumber tetapi tidak ada opsi untuk buffer kompilasi.
Anda mungkin mempertimbangkan pengajuan permintaan tambahan, untuk mendapatkan pilihan yang sama untuk kompilasi (termasuk grep) penyangga: M-x report-emacs-bug
. Menggunakan kait dengan fungsi Anda sendiri untuk melakukan penyorotan adalah OK, tetapi seharusnya tidak perlu.
Dan jika Anda hanya ingin mengubah indikator pinggiran, Anda dapat melakukan ini (gunakan bitmap pinggiran apa pun yang Anda inginkan, alih-alih filled-rectangle
- lihat (elisp) Fringe Bitmaps untuk daftar yang sudah ditentukan sebelumnya):
(defun bar ()
(with-current-buffer next-error-last-buffer
(unless (eq 'filled-rectangle (cdr (assq 'overlay-arrow fringe-indicator-alist)))
(setq fringe-indicator-alist
(cons '(overlay-arrow . filled-rectangle) fringe-indicator-alist)))))
(add-hook 'next-error-hook 'bar)
Perbarui # 2:
Saya baru saja menemukan bahwa jika Anda mematikan menampilkan pinggiran kiri maka Anda akan melihat perilaku yang saya jelaskan di awal: jendela digulir untuk menempatkan kesalahan saat ini di bagian atas. Jadi itu kemungkinan lain. (Ini adalah perilaku yang saya lihat di pengaturan saya, karena saya tidak menunjukkan pinggiran.)
Ada bug dalam perilaku ini, yang baru saja saya laporkan ( # 20829 ). Yang penting (saat ini, sampai bug diperbaiki) adalah apakah pinggiran kiri ditampilkan di jendela yang dipilih saat Anda melakukannya C-x `
( next-error
). Ini (saat ini) tidak cukup bahwa jendela yang menunjukkan buffer kompilasi tidak menunjukkan pinggiran kiri.