tags:

views:

108

answers:

1

I have a makefile that looks like:

default:
  lua blah.lua

Now, in Vim, I type ":make".

There's an error in my Lua code; it gives a file name + line number. I would like Vim to jump to the right file/line. How do I make this happen?

+4  A: 

You can set the error-format string to recognise the lua interpreter's output. For example, add this to your .vimrc file:

autocmd BufRead *.lua setlocal efm=%s:\ %f:%l:%m

That assumes the errors in your version of Lua look like this:

lua: blah.lua:2: '=' expected near 'var'

Bonus tip: rather than use a makefile, you can use the makeprg setting:

autocmd BufRead *.lua setlocal makeprg=lua\ %

That will run the current file through lua when you type :make.

rq
Nice. Thanks! I understand the %f:%l part. Care to explain how "%.%#" matches "lua" ?
anon
`%.%#` is the error format equivalent to a `.*` in a regular regex. IOW it matches anything at all (e.g. /usr/bin/lua). Bit of a hack maybe, but gets the job done!
rq
is there a way to make it say "lua: " instead of "%.%#" ? that seems more intuitive/clearer for me, but I don't know how to express taht in the error-format
anon
I've changed the %.%# thing to just %s, which matches any string (RTFM FTW!), but to hardcode it for just lua, you'd use `autocmd BufRead *.lua setlocal efm=lua:\ %f:%l:%m`
rq