Чи не next-error
прокручує буфер помилок компіляції, так що поточна помилка відображається як перший рядок вікна?
Якщо ні, то не принаймні кладе курсор у поточну лінію помилки? Якщо це так, і якщо курсор недостатньо видимий для вас, спробуйте hl-line-mode
виділити поточний рядок. Або розглянути можливість використання бібліотеки crosshairs
для виділення поточного рядка та поточного стовпця.
Оновіть після Вашого коментаря
Я думав, ти викликаєш next-error
у буфер *compilation*
. Якщо ви це зробите, то рядок прокручується до верху, як я описав.
Але якщо ви викликаєте next-error
зовнішній буфер, *compilation*
тоді вам потрібно використовувати, next-error-hook
щоб у буфері*compilation*
виділити поточну лінію чи бахрому чи будь-що іншим способом.
Ось швидкий і брудний приклад:
(defun foo ()
"..."
(with-current-buffer next-error-last-buffer
(hl-line-mode 1)))
(add-hook 'next-error-hook 'foo)
(Звичайно, ви на самому справі потрібно всього лише включити hl-line-mode
один раз в цьому буфері. Роблячи це , як показано вище , є зайвим, але це не боляче. Ви можете подумати , що ви могли б просто додати foo
до grep-mode-hook
або compilation-mode-hook
. Але коли ці гачки викликаються там ні next-error-last-buffer
.)
Примітка:
Є два параметри користувача, які керують способами вказівки звернення у вихідний буфер (а не в буфер компіляції): next-error-highlight
і next-error-highlight-no-select
. Вони пропонують однакові можливості, але їх використовують різні команди. Можливості включають використання стрілки бахроми або виділення матчу протягом певного часу.
Але немає такої опції, що контролює індикацію поточного звернення в буфері *compilation*
. Таким чином, Emacs пропонує два варіанти (де, мабуть, буде достатньо) для вихідного буфера, але немає можливості для буфера компіляції.
Ви могли б розглянути питання про подання запиту на покращувати, щоб отримати подібний варіант для компіляції (включаючи Grep) буфер: M-x report-emacs-bug
. Використовувати гачок із власною функцією для підсвічування, це добре, але це не повинно бути необхідним.
І якщо ви просто хочете змінити індикатор бахроми, ви можете це зробити (використовуйте будь-яку растрову бахрому бахроми, замість filled-rectangle
- дивіться (elisp) Растрові бірки для списку попередньо визначених):
(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)
Оновлення №2:
Я щойно виявив, що якщо ви вимкнете показ лівої бахроми, ви побачите поведінку, яку я описав на початку: вікно прокручується, щоб покласти поточну помилку вгорі. Тож це ще одна можливість. (Це поведінка, яку я бачу в налаштуваннях, оскільки я не показую бахрому.)
У цій поведінці є помилка, про яку я щойно повідомляв ( # 20829 ). Що враховується (наразі, поки помилка не виправлена), чи з’являється ліва бахрома у вибраному вікні, коли ви це робите C-x `
( next-error
). Наразі недостатньо, щоб у вікні, що відображає буфер компіляції, не було лівої межі.