私はemacsから始めていますが、elispについてはあまり知りません。本当にほとんど何もありません。
grepの代わりにackを使用したいと思います。
これらは私がemacs内からackを使用するために従った指示です: http ://www.rooijan.za.net/?q = ack_el
このelファイルで使用されている出力形式が気に入らないので、出力を。の出力にしたいと思いますack --group
。
だから私は変更しました:
(read-string "Ack arguments: " "-i" nil "-i" nil)
に:
(read-string "Ack arguments: " "-i --group" nil "-i --group" nil)
ここまでは順調ですね。しかし、これにより、出力バッファーの行でclick-press_enterを実行できなくなりました。元の動作では、コンパイルモードを使用して、選択した行にジャンプできるようにしました。
ack-modeに正規表現を追加する必要があると考えました。ack-modeは次のように定義されます。
(define-compilation-mode ack-mode "Ack"
"Specialization of compilation-mode for use with ack."
nil)
[0-9]+:
また、出力バガーのすべての行に含まれている正規表現(行番号)であるため、エラーとして検出される正規表現も追加したいと思います。
上記を変更して正規表現を追加しようとしましたdefine-compilation-mode
が、惨めに失敗しました。
ack
行をクリックさせての出力バッファを作成するにはどうすればよいですか?
---編集、私も試しました:---
(defvar ack-regexp-alist
'(("[0-9]+:"
2 3))
"Alist that specifies how to match rows in ack output.")
(setq compilation-error-regexp-alist
(append compilation-error-regexp-alist
ack-regexp-alist))
私はそれをどこかで盗み、自分のニーズに適応しようとしました。運がない。
---編集、Ivanの提案後の結果---
ack.elが更新されて次のものが含まれるようになりました。
(defvar ack-regexp-alist
'(("^[0-9]+:" ;; match the line number
nil ;; the file is not found on this line, so assume that it's the same as before
0 ;; The line is the 0'th subexpression (the whole thing)
)
("^[^: ]+$" ;; match a file -- this could be better
0 ;; The file is the 0'th subexpression
))
"Alist that specifies how to match rows in ack output.")
(setq compilation-error-regexp-alist
(append compilation-error-regexp-alist
ack-regexp-alist))
(define-compilation-mode ack-mode "Ack"
"Specialization of compilation-mode for use with ack."
nil)
compilation-error-regext-alist
次に、変数をチェックして、値を取得します。
(absoft ada aix ant bash borland caml comma edg-1 edg-2 epc ftnchek iar ibm irix java jikes-file jikes-line gnu gcc-include lcc makepp mips-1 mips-2 msft oracle perl rxp sparc-pascal-file sparc-pascal-line sparc-pascal-example sun sun-ada 4bsd gcov-file gcov-header gcov-nomark gcov-called-line gcov-never-called
("^[0-9]+:" nil 0)
("^[^: ]+$" 0))
変数の形式が非常に奇妙だと思いませんか?私は(まだ)elispを知らないので、多分それはそのように正しいでしょう。
*ack*バッファにはまだリンクや色がありません。