I’m using this vim plugin for coffeescript and I want to keep all my source files in /src/ even though the compiled files may live elsewhere, like / or /public/js.
I know I can have vim autosave to the current directory using the following (in .vimrc):
autocmd BufWritePost *.coffee silent CoffeeMake!
But I can’t figure out how to change that on a per-file basis. I’m trying to do something like this:
:autocmd BufWritePost server.coffee silent CoffeeMake! -o ../server.js
But nothing happens when I do that (when I save my coffee file): no new files are created, and no errors are thrown.
I’d also love it if I could specify a placeholder for the file name, like this (no clue if this is even close to being right):
:autocmd BufWritePost @%.coffee silent CoffeeMake! -o ../@%.js
Can anyone help me make this work the way I want?
EDIT: Coffee expects the -o param to just be the directory (not the file), so the final solution should be something like
:autocmd BufWritePost *.coffee silent execute 'CoffeeMake! -o '.expand('<afile>:p:h').'/../'
… if you wanted it in the root of your web app.
Try the following command.
The name of the file that matched an auto-command can be determined
using the
<afile>cmdline-special variable. To extract its value inan expression, use the
expand()function. Additional modifiers allowto extract the full path or remove the file extension (see
:help expand()).