aboutsummaryrefslogtreecommitdiff
path: root/metals.vim
diff options
context:
space:
mode:
authorJuan J. Martinez <jjm@usebox.net>2021-12-03 07:57:20 +0000
committerJuan J. Martinez <jjm@usebox.net>2022-05-29 22:57:30 +0100
commit9ad923900317a45d216e62626c6ef32672771ee6 (patch)
tree0e0334c2b6cba84f523796ff7be3f018258507b2 /metals.vim
parent2fcdae15d7d24fd2601f2a008c15cd6cf400172f (diff)
downloaddotnvim-9ad923900317a45d216e62626c6ef32672771ee6.tar.gz
dotnvim-9ad923900317a45d216e62626c6ef32672771ee6.zip
Using nvim-metals
Diffstat (limited to 'metals.vim')
-rw-r--r--metals.vim57
1 files changed, 57 insertions, 0 deletions
diff --git a/metals.vim b/metals.vim
new file mode 100644
index 0000000..ddb7aca
--- /dev/null
+++ b/metals.vim
@@ -0,0 +1,57 @@
+" nvim-lsp Mappings
+"
+nnoremap <silent> <C-]> <cmd>lua vim.lsp.buf.definition()<CR>
+nnoremap <silent> K <cmd>lua vim.lsp.buf.hover()<CR>
+nnoremap <silent> gi <cmd>lua vim.lsp.buf.implementation()<CR>
+nnoremap <silent> gr <cmd>lua vim.lsp.buf.references()<CR>
+nnoremap <silent> gds <cmd>lua vim.lsp.buf.document_symbol()<CR>
+nnoremap <silent> gws <cmd>lua vim.lsp.buf.workspace_symbol()<CR>
+nnoremap <silent> <leader>rn <cmd>lua vim.lsp.buf.rename()<CR>
+nnoremap <silent> <leader>F <cmd>lua vim.lsp.buf.formatting()<CR>
+nnoremap <silent> <leader>ca <cmd>lua vim.lsp.buf.code_action()<CR>
+nnoremap <silent> <leader>ws <cmd>lua require'metals'.worksheet_hover()<CR>
+nnoremap <silent> <leader>a <cmd>lua require'metals'.open_all_diagnostics()<CR>
+nnoremap <silent> <space>d <cmd>lua vim.lsp.diagnostic.set_loclist()<CR>
+nnoremap <silent> [c <cmd>lua vim.lsp.diagnostic.goto_prev { wrap = false }<CR>
+nnoremap <silent> ]c <cmd>lua vim.lsp.diagnostic.goto_next { wrap = false }<CR>
+
+" nvim-lsp Settings
+"
+" using latest stable
+" let g:metals_server_version = '0.9.8+10-334e402e-SNAPSHOT'
+
+" nvim-metals
+"
+:lua << EOF
+ metals_config = require'metals'.bare_config()
+ metals_config.settings = {
+ showImplicitArguments = true,
+ excludedPackages = {
+ "akka.actor.typed.javadsl",
+ "com.github.swagger.akka.javadsl"
+ }
+ }
+
+ metals_config.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(
+ vim.lsp.diagnostic.on_publish_diagnostics, {
+ virtual_text = {
+ prefix = '',
+ }
+ }
+ )
+EOF
+
+if has('nvim-0.5')
+ augroup lsp
+ au!
+ au FileType scala,sbt lua require('metals').initialize_or_attach(metals_config)
+ augroup end
+endif
+
+" Helpful general settings
+"
+autocmd FileType scala setlocal omnifunc=v:lua.vim.lsp.omnifunc
+
+" Set completeopt to have a better completion experience
+set completeopt=menuone,noinsert,noselect
+