Não next-error
rola o buffer de erros de compilação, para que o erro atual seja exibido como a primeira linha da janela?
Caso contrário, ele não coloca o cursor na linha de erro atual? Se houver, e se o cursor não estiver visível o suficiente para você, considere usar hl-line-mode
para destacar a linha atual. Ou considere usar a biblioteca crosshairs
para destacar a linha atual e a coluna atual.
Atualize após o seu comentário
Eu pensei que você estava invocando next-error
no buffer *compilation*
. Se você fizer isso, a linha será rolada para o topo, como descrevi.
Mas se você estiver chamando o next-error
buffer externo *compilation*
, precisará usar next-error-hook
, no buffer*compilation*
, a linha ou a franja atual ou o que for, da maneira que desejar.
Aqui está um exemplo rápido e sujo:
(defun foo ()
"..."
(with-current-buffer next-error-last-buffer
(hl-line-mode 1)))
(add-hook 'next-error-hook 'foo)
(Claro, você realmente só precisa de ligar hl-line-mode
uma vez em que buffer. Fazê-lo como mostrado acima é um exagero, mas não faz mal. Você pode pensar que você poderia apenas adicionar foo
ao grep-mode-hook
ou compilation-mode-hook
. Mas quando esses ganchos são invocados existe não next-error-last-buffer
.)
Nota:
Existem duas opções de usuário que controlam as maneiras de indicar a ocorrência no buffer de origem (não no buffer de compilação): next-error-highlight
e next-error-highlight-no-select
. Eles oferecem as mesmas possibilidades, mas são usados por comandos diferentes. As possibilidades incluem usar uma seta de franja ou destacar a partida por um certo tempo.
Mas não existe essa opção controlando a indicação da ocorrência atual no buffer *compilation*
. Portanto, o Emacs oferece duas opções (onde provavelmente seria suficiente) para o buffer de origem, mas nenhuma opção para o buffer de compilação.
Você pode considerar a apresentação de uma solicitação de melhoria, para obter uma opção semelhante para a compilação (incluindo grep) buffer: M-x report-emacs-bug
. Usar um gancho com sua própria função para realizar o realce é bom, mas não deve ser necessário.
E se você quiser apenas alterar o indicador de franja, você pode fazer isso (use o bitmap de franja desejado, em vez de filled-rectangle
- consulte (elisp) Bitmaps de franja para obter uma lista dos predefinidos):
(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)
Atualização # 2:
Acabei de descobrir que, se você desligar a margem esquerda, verá o comportamento que descrevi no início: a janela é rolada para colocar o erro atual no topo. Então essa é outra possibilidade. (É o comportamento que vejo na minha configuração, pois não mostro margem.)
Há um erro neste comportamento, que acabei de relatar ( # 20829 ). O que conta (atualmente, até que o bug seja corrigido) é se a margem esquerda está aparecendo na janela selecionada quando você faz C-x `
( next-error
). (Atualmente) não é suficiente que a janela que mostra o buffer de compilação não mostre a margem esquerda.