This is an sbt plugin that generates a quickfix file that can be used with Vim.
Inspired by Alois Cochard's blog post on setting up quickfix using a bash wrapper around sbt..
Add this to your
addSbtPlugin("com.dscleaver.sbt" % "sbt-quickfix" % "0.4.1")
Note: this plugin was built for sbt 0.13 use version 0.3.1 for sbt 0.12
If your vim is setup to use Pathogen, then the vim-sbt plugin can be installed with this command:
sbt installVimPlugin #'sbt install-vim-plugin' for older versions of sbt...
This command will replace the plugin files whenever it is run, so it is recommended when upgrading versions of the plugin.
Using the files in Vim
After a compile or test, assuming there was an error, a quickfix file will be created that Vim can use.
If your copy of Vim was compiled with +clientserver and you've enabled the
vim-enable-server flag in your SBT project (default is
true), then this plugin will automatically load the quickfix file into Vim once it's been created.
If you don't have +clientserver enabled in Vim, or you have disabled the
vim-enable-server feature of the plugin, then you can use a Vim mapping to load the file. By default the mapping is
<leader>ff, but you can change this if you wish.
By default the plugin will install to
~/.vim/bundle. This plugin base directory can be added to your global config (e.g.
~/.sbt/0.13/global.sbt) as follows:
QuickFixKeys.pluginBaseDirectory := file("intended/directory")
You can disable the vim-enable-server flag in the global.sbt as follows:
QuickFixKeys.vimEnableServer := false
The initial version of this plugin required that you add the following lines to your
set errorformat=%E\ %#[error]\ %#%f:%l:\ %m,%-Z\ %#[error]\ %p^,%-C\ %#[error]\ %m set errorformat+=,%W\ %#[warn]\ %#%f:%l:\ %m,%-Z\ %#[warn]\ %p^,%-C\ %#[warn]\ %m set errorformat+=,%-G%.%# noremap <silent> <Leader>ff :cf target/quickfix/sbt.quickfix<CR> noremap <silent> <Leader>fn :cn<CR>
These lines should be removed from `~/.vimrc'
Items that I want to look into in the future:
- Possibly reformat log output for easier consumption
- Add ctags generation possibly turning this into a full vim plugin
- Allow vim server name to be overridden by system property