Variable: compilation-error-regexp-alist-alist
compilation-error-regexp-alist-alist is a variable defined in
compile.el.gz.
Value
Large value
((cider "^\\(?:[^z-a]*?\\(?1:warning\\), \\(?2:[^z-a]*?\\):\\(?3:[[:digit:]-]+\\)\\(?::\\(?4:[[:digit:]-]+\\)\\)? - \\|\\(?:Syntax error reading source \\|\\(?:\\(?:Syntax\\|Unexpected\\) error \\)[^z-a]*?\\(?:\\(?:compil\\|macroexpand\\)ing \\)[^z-a]*?\\)at [^z-a]*?(\\(?2:[^z-a]*?\\):\\(?3:[[:digit:]-]+\\)\\(?::\\(?4:[[:digit:]-]+\\)\\)?)\\.\\)" 2 3 4
(1))
(dotnet-warning "\\([^
\n]+\\) : warning [A-Z]+[0-9]+:" 1 nil nil 1)
(dotnet-error "\\([^
\n]+\\) : error [A-Z]+[0-9]+:" 1)
(msbuild-warning "^[[:blank:]]*\\(?:[[:digit:]]+>\\)?\\([^(
\n)]+\\)(\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)?): warning [[:alnum:]]+: [^
\n]+\\[\\([^]
\n]+\\)\\]$" csharp--compilation-error-file-resolve 2 3 1 nil
(1 compilation-warning-face)
(4 compilation-warning-face))
(msbuild-error "^[[:blank:]]*\\(?:[[:digit:]]+>\\)?\\([^(
\n)]+\\)(\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)?): error [[:alnum:]]+: [^
\n]+\\[\\([^]
\n]+\\)\\]$" csharp--compilation-error-file-resolve 2 3 2 nil
(1 compilation-error-face)
(4 compilation-error-face))
(xbuild-warning "^[[:blank:]]*\\(?:[[:digit:]]+>\\)?\\([^(
\n)]+\\)(\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)?\\(?:,\\([0-9]+\\)\\)*): warning [[:alnum:]]+: .+$" 1 2 3 1)
(xbuild-error "^[[:blank:]]*\\(?:[[:digit:]]+>\\)?\\([^(
\n)]+\\)(\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)?\\(?:,\\([0-9]+\\)\\)*): error [[:alnum:]]+: .+$" 1 2 3 2)
(dotnet-testfail "[[:blank:]]+Stack Trace:\n[[:blank:]]+at [^\n]+ in \\([^\n]+\\):line \\([0-9]+\\)" 1 2)
(less-css "^\\(?:\\[31m\\)?\\([^\n]*\\|FileError:.*\n\\)\\(?:\\[39m\\[31m\\)? in \\(?:\\[39m\\)?\\([^
\n ]+\\)\\(?:\\[90m\\)?\\(?::\\| on line \\)\\([0-9]+\\)\\(?::\\|, column \\)\\([0-9]+\\):?\\(?:\\[39m\\)?" 2 3 4 nil 1)
(absoft "^\\(?:[Ee]rror on \\|[Ww]arning on\\( \\)\\)?[Ll]ine[ ]+\\([0-9]+\\)[ ]+of[ ]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil
(1))
(ada "\\(warning: .*\\)? at \\([^ \n]+\\):\\([0-9]+\\)$" 2 3 nil
(1))
(aix " in line \\([0-9]+\\) of file \\([^ \n]+[^. \n]\\)\\.? " 2 1)
(ant "^[ ]*\\(?:\\[[^] \n]+\\][ ]*\\)\\{1,2\\}\\(\\(?:[A-Za-z]:\\)?[^: \n]+\\):\\([0-9]+\\):\\(?:\\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\):\\)?\\( warning\\)?" 1
(2 . 4)
(3 . 5)
(6))
(bash "^\\([^: \n ]+\\): line \\([0-9]+\\):" 1 2)
(borland "^\\(?:Error\\|Warnin\\(g\\)\\) \\(?:[FEW][0-9]+ \\)?\\([a-zA-Z]?:?[^:( \n]+\\) \\([0-9]+\\)\\(?:[) ]\\|:[^0-9\n]\\)" 2 3 nil
(1))
(python-tracebacks-and-caml "^[ ]*File \\(\"?\\)\\([^,\" \n <>]+\\)\\1, lines? \\([0-9]+\\)-?\\([0-9]+\\)?\\(?:$\\|,\\(?: characters? \\([0-9]+\\)-?\\([0-9]+\\)?:\\)?\\([ \n]Warning\\(?: [0-9]+\\)?:\\)?\\)" 2
(3 . 4)
(5 . 6)
(7))
(cmake "^CMake \\(?:Error\\|\\(Warning\\)\\) at \\(.*\\):\\([1-9][0-9]*\\) ([^)]+):$" 2 3 nil
(1))
(cmake-info "^ \\(?: \\*\\)?\\(.*\\):\\([1-9][0-9]*\\) ([^)]+)$" 1 2 nil 0)
(comma "^\"\\([^,\" \n ]+\\)\", line \\([0-9]+\\)\\(?:[(. pos]+\\([0-9]+\\))?\\)?[:.,; (-]\\( warning:\\|[-0-9 ]*(W)\\)?" 1 2 3
(4))
(msft "^ *\\([0-9]+>\\)?\\(\\(?:[a-zA-Z]:\\)?[^ :( \n][^:( \n]*\\)(\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)?) ?: \\(?:see declaration\\|\\(?:warnin\\(g\\)\\|[a-z ]+\\) C[0-9]+:\\)" 2 3 4
(5))
(edg-1 "^\\([^ \n]+\\)(\\([0-9]+\\)): \\(?:error\\|warnin\\(g\\)\\|remar\\(k\\)\\)" 1 2 nil
(3 . 4))
(edg-2 "at line \\([0-9]+\\) of \"\\([^ \n]+\\)\"$" 2 1 nil 0)
(epc "^Error [0-9]+ at (\\([0-9]+\\):\\([^)\n]+\\))" 2 1)
(ftnchek "\\(^Warning .*\\)? line[ \n]\\([0-9]+\\)[ \n]\\(?:col \\([0-9]+\\)[ \n]\\)?file \\([^ :;\n]+\\)" 4 2 3
(1))
(gradle-kotlin "^\\(?:\\(w\\)\\|\\([iv]\\)\\|e\\): \\(\\(?:[A-Za-z]:\\)?[^\n:]+\\): (\\([[:digit:]]+\\), \\([[:digit:]]+\\)): " 3 4 5
(1 . 2))
(gradle-android "^ *ERROR:\\(?1:[^\n:]+\\):\\(?2:[[:digit:]]+\\): " 1 2)
(iar "^\"\\(.*\\)\",\\([0-9]+\\)\\s-+\\(?:Error\\|Warnin\\(g\\)\\)\\[[0-9]+\\]:" 1 2 nil
(3))
(ibm "^\\([^( \n ]+\\)(\\([0-9]+\\):\\([0-9]+\\)) : \\(?:warnin\\(g\\)\\|informationa\\(l\\)\\)?" 1 2 3
(4 . 5))
(irix "^[-[:alnum:]_/ ]+: \\(?:\\(?:[sS]evere\\|[eE]rror\\|[wW]arnin\\(g\\)\\|[iI]nf\\(o\\)\\)[0-9 ]*: \\)?\\([^,\" \n ]+\\)\\(?:, line\\|:\\) \\([0-9]+\\):" 3 4 nil
(1 . 2))
(java "^\\(?:[ ]+at \\|==[0-9]+== +\\(?:at\\|b\\(y\\)\\)\\).+(\\([^()\n]+\\):\\([0-9]+\\))$" 2 3 nil
(1))
(javac "^\\(\\(?:[A-Za-z]:\\)?[^\n:]+\\):\\([0-9]+\\): \\(warning: \\)?.*\n.*\n *\\^$" 1 2 current-column
(3))
(jikes-file "^\\(?:Found\\|Issued\\) .* compiling \"\\(.+\\)\":$" 1 nil nil 0)
(maven "^\\(?:\\[\\(?:ERROR\\|\\(?1:WARNING\\)\\|\\(?2:INFO\\)\\)] \\)?\\(?3:[^\n []\\(?:[^\n :]\\| [^\n/-]\\|:[^\n []\\)*\\):\\[\\(?4:[[:digit:]]+\\),\\(?5:[[:digit:]]+\\)] " 3 4 5
(1 . 2))
(jikes-line "^ *\\([0-9]+\\)\\.[ ]+.*\n +\\(<-*>\n\\*\\*\\* \\(?:Error\\|Warnin\\(g\\)\\)\\)" nil 1 nil 2 0
(2
(compilation-face
'(3))))
(clang-include "^In file included from \\([^\n:]+\\):\\([0-9]+\\):$" 1 2 nil 0)
(gcc-include "^\\(?:In file included \\| \\| \\)from \\([0-9]*[^0-9\n]\\(?:[^\n :]\\| [^-/\n]\\|:[^ \n]\\)*?\\):\\([0-9]+\\)\\(?::\\([0-9]+\\)\\)?\\(?:\\([:,]\\|$\\)\\)?" 1 2 3
(nil . 4))
(ruby-Test::Unit "^ [[ ]?\\([^ (].*\\):\\([1-9][0-9]*\\)\\(\\]\\)?:in " 1 2)
(gmake ": \\*\\*\\* \\[\\(\\(.+?\\):\\([0-9]+\\): .+\\)\\]" 2 3 nil 0 1)
(gnu "^\\(?:[[:alpha:]][.[:alnum:]-]+: ?\\| +|\\)?\\(?1:\\(?:[^ \n 0-9]\\|[0-9]+[^\n0-9]\\)\\(?:[^\n :]\\| [^\n/-]\\|:[^\n ]\\)*?\\): ?\\(?2:[0-9]+\\)\\(?:-\\(?4:[0-9]+\\)\\(?:\\.\\(?5:[0-9]+\\)\\)?\\|[.:]\\(?3:[0-9]+\\)\\(?:-\\(?:\\(?4:[0-9]+\\)\\.\\)?\\(?5:[0-9]+\\)\\)?\\)?:\\(?: *\\(?6:\\(?:FutureWarning\\|RuntimeWarning\\|W\\(?::\\|arning\\)\\|warning\\)\\)\\| *\\(?7:\\(?:I\\(?::\\|nfo\\(?:rmation\\(?:al\\)?\\)?\\)\\|Note\\|in\\(?:fo\\(?:rmation\\(?:al\\)?\\)?\\|stantiated from\\)\\|note\\|required from\\)\\|\\[ skipping .+ ]\\)\\| *\\(?:[Ee]rror\\)\\|[0-9]?\\(?:[^\n0-9]\\|$\\)\\|[0-9][0-9][0-9]\\)" 1
(2 . 4)
(3 . 5)
(6 . 7))
(cucumber "\\(?:^\\(?:cucumber\\(?: -p [^[:space:]]+\\)?\\| \\)\\|#\\) \\([^(].*\\):\\([1-9][0-9]*\\)" 1 2)
(lcc "^\\(?:E\\|\\(W\\)\\), \\([^(\n]+\\)(\\([0-9]+\\),[ ]*\\([0-9]+\\)" 2 3 4
(1))
(makepp "^makepp\\(?:\\(?:: warning\\(:\\).*?\\|\\(: Scanning\\|: [LR]e?l?oading makefile\\|: Imported\\|log:.*?\\) \\|: .*?\\)`\\(\\(\\S +?\\)\\(?::\\([0-9]+\\)\\)?\\)['(]\\)" 4 5 nil
(1 . 2)
3
(0
(progn
(save-match-data
(compilation-parse-errors
(match-end 0)
(line-end-position)
`("`\\(\\(\\S +?\\)\\(?::\\([0-9]+\\)\\)?\\)['(]" 2 3 nil ,(cond
((match-end 1)
1)
((match-end 2)
0)
(t 2))
1)))
(end-of-line)
nil)))
(mips-1 " (\\([0-9]+\\)) in \\([^ \n]+\\)" 2 1)
(mips-2 " in \\([^()\n ]+\\)(\\([0-9]+\\))$" 1 2)
(omake "^\\*\\*\\* omake: file \\(.*\\) changed" 1 nil nil nil nil
(0
(progn
(compilation--flush-file-structure
(match-string 1))
nil)))
(oracle "^\\(?:Semantic error\\|Error\\|PCC-[0-9]+:\\).* line \\([0-9]+\\)\\(?:\\(?:,\\| at\\)? column \\([0-9]+\\)\\)?\\(?:,\\| in\\| of\\)? file \\(.*?\\):?$" 3 1 2)
(perl " at \\([^ \n]+\\) line \\([0-9]+\\)\\(?:[,.]\\|$\\| during global destruction\\.$\\)" 1 2)
(php "\\(?:Parse\\|Fatal\\) error: \\(.*\\) in \\(.*\\) on line \\([0-9]+\\)" 2 3 nil nil)
(rxp "^\\(?:Error\\|Warnin\\(g\\)\\):.*\n.* line \\([0-9]+\\) char \\([0-9]+\\) of file://\\(.+\\)" 4 2 3
(1))
(shellcheck "^In \\(.+\\) line \\([0-9]+\\):" 1 2)
(sparc-pascal-file "^\\w\\w\\w \\w\\w\\w +[0-3]?[0-9] +[0-2][0-9]:[0-5][0-9]:[0-5][0-9] [12][09][0-9][0-9] +\\(.*\\):$" 1 nil nil 0)
(sparc-pascal-line "^\\(\\(?:E\\|\\(w\\)\\) +[0-9]+\\) line \\([0-9]+\\) - " nil 3 nil
(2)
nil
(1
(compilation-face
'(2))))
(sparc-pascal-example "^ +\\([0-9]+\\) +.*\n\\(\\(?:e\\|\\(w\\)\\) [0-9]+\\)-+" nil 1 nil
(3)
nil
(2
(compilation-face
'(3))))
(sun ": \\(?:ERROR\\|WARNIN\\(G\\)\\|REMAR\\(K\\)\\) \\(?:[[:alnum:] ]+, \\)?File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?" 3 4 5
(1 . 2))
(sun-ada "^\\([^, \n ]+\\), line \\([0-9]+\\), char \\([0-9]+\\)[:., (-]" 1 2 3)
(watcom "^[ ]*\\(\\(?:[a-zA-Z]:\\)?[^ :( \n][^:( \n]*\\)(\\([0-9]+\\)): ?\\(?:\\(Error! E[0-9]+\\)\\|\\(Warning! W[0-9]+\\)\\):" 1 2 nil
(4))
(4bsd "\\(?:^\\|:: \\|\\S ( \\)\\(/[^ \n ()]+\\)(\\([0-9]+\\))\\(?:: \\(warning:\\)?\\|$\\| ),\\)" 1 2 nil
(3))
(gcov-file "^ *-: *\\(0\\):Source:\\(.+\\)$" 2 1 nil 0 nil)
(gcov-header "^ *-: *\\(0\\):\\(?:Object\\|Graph\\|Data\\|Runs\\|Programs\\):.+$" nil 1 nil 0 nil)
(gcov-nomark "^ *-: *\\([1-9]\\|[0-9]\\{2,\\}\\):.*$" nil 1 nil 0 nil
(0 'default)
(1 compilation-line-face))
(gcov-called-line "^ *\\([0-9]+\\): *\\([0-9]+\\):.*$" nil 2 nil 0 nil
(0 'default)
(1 compilation-info-face)
(2 compilation-line-face))
(gcov-never-called "^ *\\(#####\\): *\\([0-9]+\\):.*$" nil 2 nil 2 nil
(0 'default)
(1 compilation-error-face)
(2 compilation-line-face))
(perl--Pod::Checker "^\\*\\*\\* \\(?:ERROR\\|\\(WARNING\\)\\).* \\(?:at\\|on\\) line \\([0-9]+\\) \\(?:.* \\)?in file \\([^ \n]+\\)" 3 2 nil
(1))
(perl--Test "^# Failed test [0-9]+ in \\([^
\n]+\\) at line \\([0-9]+\\)" 1 2)
(perl--Test2 "^\\(.*NOK.*\\)?# Test [0-9]+ got:.* (\\([^
\n]+\\) at line \\([0-9]+\\)\\( fail #[0-9]+\\)?)" 2 3)
(perl--Test::Harness "^.*NOK.* \\([^
\n]+\\) at line \\([0-9]+\\)" 1 2)
(weblint "^\\([^
\n(]+\\) (\\([0-9]+\\):\\([0-9]+\\)) " 1 2 3)
(guile-file "^In \\(.+\\..+\\):\n" 1 nil nil 0)
(guile-line "^ *\\([0-9]+\\): *\\([0-9]+\\)" nil 1 2)
(typescript-tsc-plain "^\\([^ \n ()][^\n()]*\\)(\\([0-9]+\\),\\([0-9]+\\)): error [0-9A-Z]+: " 1 2 3 2)
(typescript-tsc-pretty "^\\([^ \n ()][^\n()]*\\):\\([0-9]+\\):\\([0-9]+\\) - error [0-9A-Z]+: " 1 2 3 2))
Documentation
Alist of values for compilation-error-regexp-alist.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/compile.el.gz
;; If you make any changes to `compilation-error-regexp-alist-alist',
;; be sure to run the ERT test in test/lisp/progmodes/compile-tests.el.
;; emacs -batch -l compile-tests.el -f ert-run-tests-batch-and-exit
(defvar compilation-error-regexp-alist-alist
(eval-when-compile
`((absoft
"^\\(?:[Ee]rror on \\|[Ww]arning on\\( \\)\\)?[Ll]ine[ \t]+\\([0-9]+\\)[ \t]+\
of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
(ada
"\\(warning: .*\\)? at \\([^ \n]+\\):\\([0-9]+\\)$" 2 3 nil (1))
(aix
" in line \\([0-9]+\\) of file \\([^ \n]+[^. \n]\\)\\.? " 2 1)
;; Checkstyle task may report its own severity level: "[checkstyle] [ERROR] ..."
;; (see AuditEventDefaultFormatter.java in checkstyle sources).
(ant
"^[ \t]*\\(?:\\[[^] \n]+\\][ \t]*\\)\\{1,2\\}\\(\\(?:[A-Za-z]:\\)?[^: \n]+\\):\
\\([0-9]+\\):\\(?:\\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\):\\)?\\( warning\\)?"
1 (2 . 4) (3 . 5) (6))
(bash
"^\\([^: \n\t]+\\): line \\([0-9]+\\):" 1 2)
(borland
"^\\(?:Error\\|Warnin\\(g\\)\\) \\(?:[FEW][0-9]+ \\)?\
\\([a-zA-Z]?:?[^:( \t\n]+\\)\
\\([0-9]+\\)\\(?:[) \t]\\|:[^0-9\n]\\)" 2 3 nil (1))
(python-tracebacks-and-caml
"^[ \t]*File \\(\"?\\)\\([^,\" \n\t<>]+\\)\\1, lines? \\([0-9]+\\)-?\\([0-9]+\\)?\\(?:$\\|,\
\\(?: characters? \\([0-9]+\\)-?\\([0-9]+\\)?:\\)?\\([ \n]Warning\\(?: [0-9]+\\)?:\\)?\\)"
2 (3 . 4) (5 . 6) (7))
(cmake
"^CMake \\(?:Error\\|\\(Warning\\)\\) at \\(.*\\):\\([1-9][0-9]*\\) ([^)]+):$"
2 3 nil (1))
(cmake-info
"^ \\(?: \\*\\)?\\(.*\\):\\([1-9][0-9]*\\) ([^)]+)$"
1 2 nil 0)
(comma
"^\"\\([^,\" \n\t]+\\)\", line \\([0-9]+\\)\
\\(?:[(. pos]+\\([0-9]+\\))?\\)?[:.,; (-]\\( warning:\\|[-0-9 ]*(W)\\)?" 1 2 3 (4))
(msft
;; Must be before edg-1, so that MSVC's longer messages are
;; considered before EDG.
;; The message may be a "warning", "error", or "fatal error" with
;; an error code, or "see declaration of" without an error code.
"^ *\\([0-9]+>\\)?\\(\\(?:[a-zA-Z]:\\)?[^ :(\t\n][^:(\t\n]*\\)(\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)?) ?\
: \\(?:see declaration\\|\\(?:warnin\\(g\\)\\|[a-z ]+\\) C[0-9]+:\\)"
2 3 4 (5))
(edg-1
"^\\([^ \n]+\\)(\\([0-9]+\\)): \\(?:error\\|warnin\\(g\\)\\|remar\\(k\\)\\)"
1 2 nil (3 . 4))
(edg-2
"at line \\([0-9]+\\) of \"\\([^ \n]+\\)\"$"
2 1 nil 0)
(epc
"^Error [0-9]+ at (\\([0-9]+\\):\\([^)\n]+\\))" 2 1)
(ftnchek
"\\(^Warning .*\\)? line[ \n]\\([0-9]+\\)[ \n]\\(?:col \\([0-9]+\\)[ \n]\\)?file \\([^ :;\n]+\\)"
4 2 3 (1))
;; Gradle with kotlin-gradle-plugin (see
;; GradleStyleMessagerRenderer.kt in kotlin sources, see
;; https://youtrack.jetbrains.com/issue/KT-34683).
(gradle-kotlin
,(rx bol
(| (group "w") ; 1: warning
(group (in "iv")) ; 2: info
"e") ; error
": "
(group ; 3: file
(? (in "A-Za-z") ":")
(+ (not (in "\n:"))))
": ("
(group (+ digit)) ; 4: line
", "
(group (+ digit)) ; 5: column
"): ")
3 4 5 (1 . 2))
(gradle-android
,(rx bol (* " ") "ERROR:"
(group-n 1 ; file
(+ (not (in ":\n"))))
":"
(group-n 2 (+ digit)) ; line
": ")
1 2)
(iar
"^\"\\(.*\\)\",\\([0-9]+\\)\\s-+\\(?:Error\\|Warnin\\(g\\)\\)\\[[0-9]+\\]:"
1 2 nil (3))
(ibm
"^\\([^( \n\t]+\\)(\\([0-9]+\\):\\([0-9]+\\)) :\
\\(?:warnin\\(g\\)\\|informationa\\(l\\)\\)?" 1 2 3 (4 . 5))
;; fixme: should be `mips'
(irix
"^[-[:alnum:]_/ ]+: \\(?:\\(?:[sS]evere\\|[eE]rror\\|[wW]arnin\\(g\\)\\|[iI]nf\\(o\\)\\)[0-9 ]*: \\)?\
\\([^,\" \n\t]+\\)\\(?:, line\\|:\\) \\([0-9]+\\):" 3 4 nil (1 . 2))
(java
"^\\(?:[ \t]+at \\|==[0-9]+== +\\(?:at\\|b\\(y\\)\\)\\).+(\\([^()\n]+\\):\\([0-9]+\\))$" 2 3 nil (1))
(javac
,(rx bol
(group ; file
(? (in "A-Za-z") ":")
(+ (not (in "\n:"))))
":"
(group (+ (in "0-9"))) ; line number
": "
(? (group "warning: ")) ; type (optional)
(* nonl) "\n" ; message
(* nonl) "\n" ; source line containing error
(* " ") "^" ; caret line; ^ marks error
eol)
1 2
,#'current-column
(3))
(jikes-file
"^\\(?:Found\\|Issued\\) .* compiling \"\\(.+\\)\":$" 1 nil nil 0)
(maven
;; Maven is a popular free software build tool for Java.
,(rx bol
;; It is unclear whether the initial [type] tag is always present.
(? "["
(or "ERROR" (group-n 1 "WARNING") (group-n 2 "INFO"))
"] ")
(group-n 3 ; File
(not (any "\n ["))
(* (or (not (any "\n :"))
(: " " (not (any "\n/-")))
(: ":" (not (any "\n ["))))))
":["
(group-n 4 (+ digit)) ; Line
","
(group-n 5 (+ digit)) ; Column
"] ")
3 4 5 (1 . 2))
(jikes-line
"^ *\\([0-9]+\\)\\.[ \t]+.*\n +\\(<-*>\n\\*\\*\\* \\(?:Error\\|Warnin\\(g\\)\\)\\)"
nil 1 nil 2 0
(2 (compilation-face '(3))))
(clang-include
,(rx bol "In file included from "
(group (+ (not (any ?\n ?:)))) ?:
(group (+ (any (?0 . ?9)))) ?:
eol)
1 2 nil 0)
(gcc-include
"^\\(?:In file included \\| \\|\t\\)from \
\\([0-9]*[^0-9\n]\\(?:[^\n :]\\| [^-/\n]\\|:[^ \n]\\)*?\\):\
\\([0-9]+\\)\\(?::\\([0-9]+\\)\\)?\\(?:\\([:,]\\|$\\)\\)?"
1 2 3 (nil . 4))
(ruby-Test::Unit
"^ [[ ]?\\([^ (].*\\):\\([1-9][0-9]*\\)\\(\\]\\)?:in " 1 2)
(gmake
;; Set GNU make error messages as INFO level.
;; It starts with the name of the make program which is variable,
;; so don't try to match it.
": \\*\\*\\* \\[\\(\\(.+?\\):\\([0-9]+\\): .+\\)\\]" 2 3 nil 0 1)
(gnu
;; The `gnu' message syntax is
;; [PROGRAM:]FILE:LINE[-ENDLINE]:[COL[-ENDCOL]:] MESSAGE
;; or
;; [PROGRAM:]FILE:LINE[.COL][-ENDLINE[.ENDCOL]]: MESSAGE
,(rx
bol
;; Match an optional program name which is used for
;; non-interactive programs other than compilers (e.g. the
;; "jade:" entry in compilation.txt).
(? (| (: alpha (+ (in ?. ?- alnum)) ":" (? " "))
;; Skip indentation generated by GCC's -fanalyzer.
(: (+ " ") "|")))
;; File name group.
(group-n 1
;; Avoid matching the file name as a program in the pattern
;; above by disallowing file names entirely composed of digits.
;; Do not allow file names beginning with a space.
(| (not (in "0-9" "\n\t "))
(: (+ (in "0-9"))
(not (in "0-9" "\n"))))
;; A file name can be composed of any non-newline char, but
;; rule out some valid but unlikely cases, such as a trailing
;; space or a space followed by a -, or a colon followed by a
;; space.
(*? (| (not (in "\n :"))
(: " " (not (in ?- "/\n")))
(: ":" (not (in " \n"))))))
":" (? " ")
;; Line number group.
(group-n 2 (+ (in "0-9")))
(? (| (: "-"
(group-n 4 (+ (in "0-9"))) ; ending line
(? "." (group-n 5 (+ (in "0-9"))))) ; ending column
(: (in ".:")
(group-n 3 (+ (in "0-9"))) ; starting column
(? "-"
(? (group-n 4 (+ (in "0-9"))) ".") ; ending line
(group-n 5 (+ (in "0-9"))))))) ; ending column
":"
(| (: (* " ")
(group-n 6 (| "FutureWarning"
"RuntimeWarning"
"Warning" "warning"
"W:")))
(: (* " ")
(group-n 7
(| (| "Info" "info"
"Information" "information"
"Informational" "informational"
"I:"
"instantiated from"
"required from"
"Note" "note")
(: "[ skipping " (+ nonl) " ]"))))
(: (* " ")
(| "Error" "error"))
;; Avoid matching time stamps on the form "HH:MM:SS" where
;; MM is interpreted as a line number by trying to rule out
;; messages where the text after the line number starts with
;; a 2-digit number.
(: (? (in "0-9"))
(| (not (in "0-9\n"))
eol))
(: (in "0-9") (in "0-9") (in "0-9"))))
1 (2 . 4) (3 . 5) (6 . 7))
(cucumber
,(rx (| (: bol
(| (: "cucumber" (? " -p " (+ (not space))))
" "))
"#")
" "
(group (not "(") (* nonl)) ; file
":"
(group (in "1-9") (* (in "0-9")))) ; line
1 2)
(lcc
"^\\(?:E\\|\\(W\\)\\), \\([^(\n]+\\)(\\([0-9]+\\),[ \t]*\\([0-9]+\\)"
2 3 4 (1))
(makepp
"^makepp\\(?:\\(?:: warning\\(:\\).*?\\|\\(: Scanning\\|: [LR]e?l?oading makefile\\|: Imported\\|log:.*?\\) \\|: .*?\\)\
`\\(\\(\\S +?\\)\\(?::\\([0-9]+\\)\\)?\\)['(]\\)"
4 5 nil (1 . 2) 3
(0 (progn (save-match-data
(compilation-parse-errors
(match-end 0) (line-end-position)
`("`\\(\\(\\S +?\\)\\(?::\\([0-9]+\\)\\)?\\)['(]"
2 3 nil
,(cond ((match-end 1) 1) ((match-end 2) 0) (t 2))
1)))
(end-of-line)
nil)))
;; Should be lint-1, lint-2 (SysV lint)
(mips-1
" (\\([0-9]+\\)) in \\([^ \n]+\\)" 2 1)
(mips-2
" in \\([^()\n ]+\\)(\\([0-9]+\\))$" 1 2)
(omake
;; "omake -P" reports "file foo changed"
;; (useful if you do "cvs up" and want to see what has changed)
"^\\*\\*\\* omake: file \\(.*\\) changed" 1 nil nil nil nil
;; FIXME-omake: This tries to prevent reusing pre-existing markers
;; for subsequent messages, since those messages's line numbers
;; are about another version of the file.
(0 (progn (compilation--flush-file-structure (match-string 1))
nil)))
(oracle
"^\\(?:Semantic error\\|Error\\|PCC-[0-9]+:\\).* line \\([0-9]+\\)\
\\(?:\\(?:,\\| at\\)? column \\([0-9]+\\)\\)?\
\\(?:,\\| in\\| of\\)? file \\(.*?\\):?$"
3 1 2)
;; "during global destruction": This comes out under "use
;; warnings" in recent perl when breaking circular references
;; during program or thread exit.
(perl
" at \\([^ \n]+\\) line \\([0-9]+\\)\\(?:[,.]\\|$\\| \
during global destruction\\.$\\)" 1 2)
(php
"\\(?:Parse\\|Fatal\\) error: \\(.*\\) in \\(.*\\) on line \\([0-9]+\\)"
2 3 nil nil)
(rxp
"^\\(?:Error\\|Warnin\\(g\\)\\):.*\n.* line \\([0-9]+\\) char\
\\([0-9]+\\) of file://\\(.+\\)"
4 2 3 (1))
(shellcheck
"^In \\(.+\\) line \\([0-9]+\\):" 1 2)
(sparc-pascal-file
"^\\w\\w\\w \\w\\w\\w +[0-3]?[0-9] +[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\
[12][09][0-9][0-9] +\\(.*\\):$"
1 nil nil 0)
(sparc-pascal-line
"^\\(\\(?:E\\|\\(w\\)\\) +[0-9]+\\) line \\([0-9]+\\) - "
nil 3 nil (2) nil (1 (compilation-face '(2))))
(sparc-pascal-example
"^ +\\([0-9]+\\) +.*\n\\(\\(?:e\\|\\(w\\)\\) [0-9]+\\)-+"
nil 1 nil (3) nil (2 (compilation-face '(3))))
(sun
": \\(?:ERROR\\|WARNIN\\(G\\)\\|REMAR\\(K\\)\\) \\(?:[[:alnum:] ]+, \\)?\
File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?"
3 4 5 (1 . 2))
(sun-ada
"^\\([^, \n\t]+\\), line \\([0-9]+\\), char \\([0-9]+\\)[:., (-]" 1 2 3)
(watcom
"^[ \t]*\\(\\(?:[a-zA-Z]:\\)?[^ :(\t\n][^:(\t\n]*\\)(\\([0-9]+\\)): ?\
\\(?:\\(Error! E[0-9]+\\)\\|\\(Warning! W[0-9]+\\)\\):"
1 2 nil (4))
(4bsd
"\\(?:^\\|:: \\|\\S ( \\)\\(/[^ \n\t()]+\\)(\\([0-9]+\\))\
\\(?:: \\(warning:\\)?\\|$\\| ),\\)" 1 2 nil (3))
(gcov-file
"^ *-: *\\(0\\):Source:\\(.+\\)$"
2 1 nil 0 nil)
(gcov-header
"^ *-: *\\(0\\):\\(?:Object\\|Graph\\|Data\\|Runs\\|Programs\\):.+$"
nil 1 nil 0 nil)
;; Underlines over all lines of gcov output are too uncomfortable to read.
;; However, hyperlinks embedded in the lines are useful.
;; So I put default face on the lines; and then put
;; compilation-*-face by manually to eliminate the underlines.
;; The hyperlinks are still effective.
(gcov-nomark
"^ *-: *\\([1-9]\\|[0-9]\\{2,\\}\\):.*$"
nil 1 nil 0 nil
(0 'default)
(1 compilation-line-face))
(gcov-called-line
"^ *\\([0-9]+\\): *\\([0-9]+\\):.*$"
nil 2 nil 0 nil
(0 'default)
(1 compilation-info-face) (2 compilation-line-face))
(gcov-never-called
"^ *\\(#####\\): *\\([0-9]+\\):.*$"
nil 2 nil 2 nil
(0 'default)
(1 compilation-error-face) (2 compilation-line-face))
(perl--Pod::Checker
;; podchecker error messages, per Pod::Checker.
;; The style is from the Pod::Checker::poderror() function, eg.
;; *** ERROR: Spurious text after =cut at line 193 in file foo.pm
;;
;; Plus end_pod() can give "at line EOF" instead of a
;; number, so for that match "on line N" which is the
;; originating spot, eg.
;; *** ERROR: =over on line 37 without closing =back at line EOF in file bar.pm
;;
;; Plus command() can give both "on line N" and "at line N";
;; the latter is desired and is matched because the .* is
;; greedy.
;; *** ERROR: =over on line 1 without closing =back (at head1) at line 3 in file x.pod
;;
"^\\*\\*\\* \\(?:ERROR\\|\\(WARNING\\)\\).* \\(?:at\\|on\\) line \
\\([0-9]+\\) \\(?:.* \\)?in file \\([^ \t\n]+\\)"
3 2 nil (1))
(perl--Test
;; perl Test module error messages.
;; Style per the ok() function "$context", eg.
;; # Failed test 1 in foo.t at line 6
;;
"^# Failed test [0-9]+ in \\([^ \t\r\n]+\\) at line \\([0-9]+\\)"
1 2)
(perl--Test2
;; Or when comparing got/want values, with a "fail #n" if repeated
;; # Test 2 got: "xx" (t-compilation-perl-2.t at line 10)
;; # Test 3 got: "xx" (t-compilation-perl-2.t at line 10 fail #2)
;;
;; And under Test::Harness they're preceded by progress stuff with
;; \r and "NOK",
;; ... NOK 1# Test 1 got: "1234" (t/foo.t at line 46)
;;
"^\\(.*NOK.*\\)?# Test [0-9]+ got:.* (\\([^ \t\r\n]+\\) at line \
\\([0-9]+\\)\\( fail #[0-9]+\\)?)"
2 3)
(perl--Test::Harness
;; perl Test::Harness output, eg.
;; NOK 1# Test 1 got: "1234" (t/foo.t at line 46)
;;
;; Test::Harness is slightly designed for tty output, since
;; it prints CRs to overwrite progress messages, but if you
;; run it in with M-x compile this pattern can at least step
;; through the failures.
;;
"^.*NOK.* \\([^ \t\r\n]+\\) at line \\([0-9]+\\)"
1 2)
(weblint
;; The style comes from HTML::Lint::Error::as_string(), eg.
;; index.html (13:1) Unknown element <fdjsk>
;;
;; The pattern only matches filenames without spaces, since that
;; should be usual and should help reduce the chance of a false
;; match of a message from some unrelated program.
;;
;; This message style is quite close to the "ibm" entry which is
;; for IBM C, though that ibm bit doesn't put a space after the
;; filename.
;;
"^\\([^ \t\r\n(]+\\) (\\([0-9]+\\):\\([0-9]+\\)) "
1 2 3)
;; Guile compilation yields file-headers in the following format:
;;
;; In sourcefile.scm:
;;
;; We need to catch those, but we also need to be aware that Emacs
;; byte-compilation yields compiler headers in similar form of
;; those:
;;
;; In toplevel form:
;; In end of data:
;;
;; We want to catch the Guile file-headers but not the Emacs
;; byte-compilation headers, because that will cause next-error
;; and prev-error to break, because the files "toplevel form" and
;; "end of data" does not exist.
;;
;; To differentiate between these two cases, we require that the
;; file-match must always contain an extension.
;;
;; We should also only treat this as "info", not "error", because
;; we do not know what lines will follow.
(guile-file "^In \\(.+\\..+\\):\n" 1 nil nil 0)
(guile-line "^ *\\([0-9]+\\): *\\([0-9]+\\)" nil 1 2)
;; Typescript compilation prior to tsc version 2.7, "plain" format:
;; greeter.ts(30,12): error TS2339: Property 'foo' does not exist.
(typescript-tsc-plain
,(rx bol
(group (not (in " \t\n()")) ; 1: file
(* (not (in "\n()"))))
"("
(group (+ (in "0-9"))) ; 2: line
","
(group (+ (in "0-9"))) ; 3: column
"): error "
(+ (in "0-9A-Z")) ; error code
": ")
1 2 3 2)
;; Typescript compilation after tsc version 2.7, "pretty" format:
;; src/resources/document.ts:140:22 - error TS2362: something.
(typescript-tsc-pretty
,(rx bol
(group (not (in " \t\n()")) ; 1: file
(* (not (in "\n()"))))
":"
(group (+ (in "0-9"))) ; 2: line
":"
(group (+ (in "0-9"))) ; 3: column
" - error "
(+ (in "0-9A-Z")) ; error code
": ")
1 2 3 2)
))
"Alist of values for `compilation-error-regexp-alist'.")