Make Compilation mode recognize Lua errors
Emacs comes with built-in support for the Lua programming language in the form of the Lua mode and now also the Lua Tree-sitter mode. This patch further improves Lua support in Emacs by making the Compilation mode recognize Lua errors and stack traces. * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist): Add regexps to aid Lua development, namely the 'lua' regexp that matches Lua errors and the 'lua-stack' regexp that matches Lua stack frames. (Bug#60830) * etc/compilation.txt (Lua): Add an example of a Lua error message with a stack trace. * test/lisp/progmodes/compile-tests.el (compile-tests--test-regexps-data): (compile-test-error-regexps): Test the new 'lua' and 'lua-stack' regexps added to the 'compilation-error-regexp-alist-alist'.
This commit is contained in:
parent
3d41239524
commit
cd0eb055fd
4 changed files with 55 additions and 2 deletions
5
etc/NEWS
5
etc/NEWS
|
@ -452,6 +452,11 @@ This is because it partly acts by modifying other rules which may
|
|||
occasionally be surprising. It can be re-enabled by adding 'omake' to
|
||||
'compilation-error-regexp-alist'.
|
||||
|
||||
*** Lua errors and stack traces are now recognized.
|
||||
Compilation mode now recognizes Lua language errors and stack traces.
|
||||
Every Lua error is recognized as a compilation error, and every Lua
|
||||
stack frame is recognized as a compilation info.
|
||||
|
||||
** Project
|
||||
|
||||
+++
|
||||
|
|
|
@ -344,6 +344,19 @@ In /home/janneke/vc/guile/examples/gud-break.scm:
|
|||
1033: 0 [stderr "~a:hello world\n" (# # #)]
|
||||
|
||||
|
||||
* Lua 5.1, 5.2, 5.3, 5.4, and LuaJIT 2.1
|
||||
|
||||
/usr/bin/lua: database.lua:31: assertion failed!
|
||||
stack traceback:
|
||||
[C]: in function 'assert'
|
||||
database.lua:31: in field 'statement'
|
||||
database.lua:42: in field 'table'
|
||||
database.lua:55: in field 'row'
|
||||
database.lua:63: in field 'value'
|
||||
io.lua: in main chunk
|
||||
[C]: in ?
|
||||
|
||||
|
||||
* Lucid Compiler, lcc 3.x
|
||||
|
||||
symbol: lcc
|
||||
|
|
|
@ -362,6 +362,14 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
|
|||
(ruby-Test::Unit
|
||||
"^ [[ ]?\\([^ (].*\\):\\([1-9][0-9]*\\)\\(\\]\\)?:in " 1 2)
|
||||
|
||||
;; Tested with Lua 5.1, 5.2, 5.3, 5.4, and LuaJIT 2.1.
|
||||
(lua
|
||||
"^[^\n\t]+?: \\([^\n\t]+?\\):\\([0-9]+?\\): .+\nstack traceback:\n\t"
|
||||
1 2 nil 2 1)
|
||||
(lua-stack
|
||||
"^\t\\(?:\\[C\\]:\\|\\([^\n\t]+?\\):\\(?:\\([0-9]+?\\):\\)?\\) in "
|
||||
1 2 nil 0 1)
|
||||
|
||||
(gmake
|
||||
;; Set GNU make error messages as INFO level.
|
||||
;; It starts with the name of the make program which is variable,
|
||||
|
|
|
@ -206,6 +206,33 @@
|
|||
1 0 31 "/usr/include/c++/3.3/backward/iostream.h")
|
||||
(gcc-include " from test_clt.cc:1:"
|
||||
1 nil 1 "test_clt.cc")
|
||||
;; Lua
|
||||
(lua "lua: database.lua:10: assertion failed!\nstack traceback:\n\t"
|
||||
6 nil 10 "database.lua")
|
||||
(lua "lua 5.4: database 2.lua:10: assertion failed!\nstack traceback:\n\t"
|
||||
10 nil 10 "database 2.lua")
|
||||
(lua "/usr/local/bin/lua: core/database.lua:20: assertion failed!\nstack traceback:\n\t"
|
||||
21 nil 20 "core/database.lua")
|
||||
(lua "C:\\Lua\\Lua.exe: Core\\Database.lua:20: assertion failed!\nstack traceback:\n\t"
|
||||
17 nil 20 "Core\\Database.lua")
|
||||
(lua "lua: /tmp/database.lua:20: assertion failed!\nstack traceback:\n\t"
|
||||
6 nil 20 "/tmp/database.lua")
|
||||
(lua "Lua.exe: C:\\Temp\\Database.lua:20: assertion failed!\nstack traceback:\n\t"
|
||||
10 nil 20 "C:\\Temp\\Database.lua")
|
||||
(lua-stack " database.lua: in field 'statement'"
|
||||
2 nil nil "database.lua" 0)
|
||||
(lua-stack " database.lua:10: in field 'statement'"
|
||||
2 nil 10 "database.lua" 0)
|
||||
(lua-stack " core/database.lua:20: in field 'statement'"
|
||||
2 nil 20 "core/database.lua" 0)
|
||||
(lua-stack " database 2.lua: in field 'statement'"
|
||||
2 nil nil "database 2.lua" 0)
|
||||
(lua-stack " Core\\Database.lua:20: in field 'statement'"
|
||||
2 nil 20 "Core\\Database.lua" 0)
|
||||
(lua-stack " /tmp/database.lua: in field 'statement'"
|
||||
2 nil nil "/tmp/database.lua" 0)
|
||||
(lua-stack " C:\\Core\\Database.lua: in field 'statement'"
|
||||
2 nil nil "C:\\Core\\Database.lua" 0)
|
||||
;; gmake
|
||||
(gmake "make: *** [Makefile:20: all] Error 2" 12 nil 20 "Makefile" 0)
|
||||
(gmake "make[4]: *** [sub/make.mk:19: all] Error 127" 15 nil 19
|
||||
|
@ -507,9 +534,9 @@ The test data is in `compile-tests--test-regexps-data'."
|
|||
1 15 5 "alpha.c")))
|
||||
(compile--test-error-line test))
|
||||
|
||||
(should (eq compilation-num-errors-found 100))
|
||||
(should (eq compilation-num-errors-found 106))
|
||||
(should (eq compilation-num-warnings-found 35))
|
||||
(should (eq compilation-num-infos-found 28)))))
|
||||
(should (eq compilation-num-infos-found 35)))))
|
||||
|
||||
(ert-deftest compile-test-grep-regexps ()
|
||||
"Test the `grep-regexp-alist' regexps.
|
||||
|
|
Loading…
Add table
Reference in a new issue