next-error
現在のエラーがウィンドウの最初の行として表示されるように、compilation-errorsバッファーをスクロールしませんか?
そうでなければ、少なくとも現在のエラー行にカーソルを置いていませんか?表示され、カーソルが十分に見えない場合は、を使用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
注意:
そこヒットを示すための方法を制御する2つのユーザーオプションあるソースバッファ内(ないコンパイルバッファでは):next-error-highlight
とnext-error-highlight-no-select
。それらは同じ可能性を提供しますが、異なるコマンドで使用されます。可能性としては、フリンジ矢印を使用したり、一致を特定の時間ハイライトしたりすることが挙げられます。
しかし、バッファ内の現在のヒットの表示を制御するそのようなオプションはありません*compilation*
。したがって、Emacsはソースバッファーに2つのオプション(おそらく1つで十分です)を提供しますが、コンパイルバッファーにはオプションを提供しません。
コンパイル(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
)。(現時点では)コンパイルバッファーを表示するウィンドウに左フリンジが表示されないだけでは不十分です。