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
). 컴파일 버퍼를 표시하는 창에 왼쪽 프린지가 표시되지 않는 것만으로는 충분하지 않습니다.