diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/nvim/nvim/config/nvim.ln/lua/lsp/handlers.lua b/nvim/nvim/config/nvim.ln/lua/lsp/handlers.lua index 668e042..ebd3292 100644 --- a/nvim/nvim/config/nvim.ln/lua/lsp/handlers.lua +++ b/nvim/nvim/config/nvim.ln/lua/lsp/handlers.lua @@ -54,6 +54,7 @@ local lsp_keymaps = function(bufnr) ["l"] = { r = { 'lua vim.lsp.buf.rename()', "Rename" }, a = { 'lua vim.lsp.buf.code_action()', "Code action" }, + l = { 'lua vim.lsp.codelens.run()', "Run code lens" }, f = { 'lua vim.lsp.buf.formatting()', "Format" }, } }, { @@ -61,9 +62,14 @@ local lsp_keymaps = function(bufnr) }) end +local lsp_codelens = function() + -- vim.cmd [[ autocmd BufEnter,CursorHold,InsertLeave lua vim.lsp.codelens.refresh() ]] +end + M.on_attach = function(client, bufnr) lsp_keymaps(bufnr) lsp_highlight_document(client) + lsp_codelens() end local capabilities = vim.lsp.protocol.make_client_capabilities() diff --git a/nvim/nvim/config/nvim.ln/lua/lsp/init.lua b/nvim/nvim/config/nvim.ln/lua/lsp/init.lua index fdc9a1a..09d489f 100644 --- a/nvim/nvim/config/nvim.ln/lua/lsp/init.lua +++ b/nvim/nvim/config/nvim.ln/lua/lsp/init.lua @@ -2,4 +2,5 @@ require "lsp.lsp-install" require("lsp.handlers").setup() require "lsp.cmp" require "lsp.signature" +require "lsp.metals" diff --git a/nvim/nvim/config/nvim.ln/lua/lsp/metals.lua b/nvim/nvim/config/nvim.ln/lua/lsp/metals.lua new file mode 100644 index 0000000..5bfd1cf --- /dev/null +++ b/nvim/nvim/config/nvim.ln/lua/lsp/metals.lua @@ -0,0 +1,32 @@ +local ok, metals = pcall(require, "metals") +if not ok then + return +end + +-- NOTE: You may or may not want java included here. You will need it if you want basic Java support +-- but it may also conflict if you are using something like nvim-jdtls which also works on a java filetype +-- autocmd. +vim.cmd [[ + augroup lsp + au! + au FileType java,scala,sbt lua require("metals").initialize_or_attach(metals_config) + augroup end +]] + +metals_config = metals.bare_config() + +-- Example of settings +metals_config.settings = { + showImplicitArguments = true, +} +metals_config.on_attach = function(client, bufnr) + metals.setup_dap() + require "lsp.handlers".on_attach(client, bufnr) +end + +local tok, telescope = pcall(require, "telescope") +if not tok then + return +end +telescope.load_extension('metals') + diff --git a/nvim/nvim/config/nvim.ln/lua/plugins.lua b/nvim/nvim/config/nvim.ln/lua/plugins.lua index 778b18f..32f250e 100644 --- a/nvim/nvim/config/nvim.ln/lua/plugins.lua +++ b/nvim/nvim/config/nvim.ln/lua/plugins.lua @@ -79,6 +79,7 @@ return packer.startup(function(use) 'williamboman/nvim-lsp-installer', } use "Hoffs/omnisharp-extended-lsp.nvim" + use({'scalameta/nvim-metals', requires = { "nvim-lua/plenary.nvim" }}) use "b0o/schemastore.nvim" use { "hrsh7th/cmp-nvim-lsp",