どのようにgrepの出力を整列するのですか?

私はファイルセットと wgrep (書き込み可能なgrepバッファ)を編集するために grep-mode を使用します。バッファは通常次のようになります。

enter image description here

私はこのようなビューを変更する方法を探したい:

enter image description here

wgrep and compile-goto-error should work as usual.

Upd。これは wgrep compile-goto-error で動作します。 regexpのための追加スペースが必要です:

(setcar (car grep-regexp-alist)
        "^\\(.+?\\)\\(:[ \t]*\\)\\([1-9][0-9]*\\)[ \t]*\\2")

wgrep-default-line-header-regexp には既に追加のスペースが必要でした。

2
これは "私のためにパッケージを書く"のように聞こえる。
追加された 著者 MojoFilter,
私はなぜこれが欲しいのか分かりませんが、誰かが役に立つ答えを出すのを助けるかもしれません。個人的には、grepの出力を見ることさえありません。私は next-error を使い続け、ファイルそのものを見ています。
追加された 著者 Michael Bar-Sinai,
私は、 grep-regexp-alist wgrep-default-line-header-regexp の設定と align-regexp コード>。たぶん、誰かがすでにそういったことをしていたのかもしれない。私は少しそれに固執した。
追加された 著者 lillq,
インプレース編集( dired wdired-mode のような)のために wgrep (書き込み可能なgrepバッファ)が使用されているからです。
追加された 著者 lillq,

1 答え

ここに完全な解決策があります:

(setcar (car grep-regexp-alist)
        "^\\(.+?\\)\\(:[ \t]*\\)\\([1-9][0-9]*\\)[ \t]*\\2")

(defun eab/grep-align ()
  (interactive)
  (read-only-mode -1)
  (toggle-truncate-lines 1)
  (save-excursion
    (beginning-of-buffer)
    (compilation-next-error 1)
    (call-interactively 'set-mark-command)
    (end-of-buffer)
    (backward-paragraph)
    (align-regexp (region-beginning) (region-end) "\\(:[0-9]+\\)\\(\\):" 2 1 t))
  (read-only-mode 1))

(defun eab/wgrep-change-to-wgrep-mode ()
  (interactive)
  (eab/grep-align)
  (call-interactively 'wgrep-change-to-wgrep-mode))
3
追加された