diff --git a/init.lua b/init.lua index 86c4cfa..2f5d9e8 100644 --- a/init.lua +++ b/init.lua @@ -5,9 +5,6 @@ require "misc-utils" require "top-bufferline" require "statusline" --- lsp stuff -require "nvim-lspconfig" - local cmd = vim.cmd local g = vim.g diff --git a/lua/nvim-lspconfig.lua b/lua/nvim-lspconfig.lua index 4cc3828..a303565 100644 --- a/lua/nvim-lspconfig.lua +++ b/lua/nvim-lspconfig.lua @@ -1,90 +1,94 @@ -function on_attach(client, bufnr) - local function buf_set_keymap(...) - vim.api.nvim_buf_set_keymap(bufnr, ...) - end - local function buf_set_option(...) - vim.api.nvim_buf_set_option(bufnr, ...) +local M = {} + +M.config = function() + function on_attach(client, bufnr) + local function buf_set_keymap(...) + vim.api.nvim_buf_set_keymap(bufnr, ...) + end + local function buf_set_option(...) + vim.api.nvim_buf_set_option(bufnr, ...) + end + + buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc") + + -- Mappings. + local opts = {noremap = true, silent = true} + + buf_set_keymap("n", "gD", "lua vim.lsp.buf.declaration()", opts) + buf_set_keymap("n", "gd", "lua vim.lsp.buf.definition()", opts) + buf_set_keymap("n", "K", "lua vim.lsp.buf.hover()", opts) + buf_set_keymap("n", "gi", "lua vim.lsp.buf.implementation()", opts) + buf_set_keymap("n", "", "lua vim.lsp.buf.signature_help()", opts) + buf_set_keymap("n", "wa", "lua vim.lsp.buf.add_workspace_folder()", opts) + buf_set_keymap("n", "wr", "lua vim.lsp.buf.remove_workspace_folder()", opts) + buf_set_keymap("n", "wl", "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", opts) + buf_set_keymap("n", "D", "lua vim.lsp.buf.type_definition()", opts) + buf_set_keymap("n", "rn", "lua vim.lsp.buf.rename()", opts) + buf_set_keymap("n", "gr", "lua vim.lsp.buf.references()", opts) + buf_set_keymap("n", "e", "lua vim.lsp.diagnostic.show_line_diagnostics()", opts) + buf_set_keymap("n", "[d", "lua vim.lsp.diagnostic.goto_prev()", opts) + buf_set_keymap("n", "]d", "lua vim.lsp.diagnostic.goto_next()", opts) + buf_set_keymap("n", "q", "lua vim.lsp.diagnostic.set_loclist()", opts) + + -- Set some keybinds conditional on server capabilities + if client.resolved_capabilities.document_formatting then + buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) + elseif client.resolved_capabilities.document_range_formatting then + buf_set_keymap("n", "f", "lua vim.lsp.buf.range_formatting()", opts) + end end - buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc") + -- lspInstall + lspconfig stuff - -- Mappings. - local opts = {noremap = true, silent = true} + local function setup_servers() + require "lspinstall".setup() - buf_set_keymap("n", "gD", "lua vim.lsp.buf.declaration()", opts) - buf_set_keymap("n", "gd", "lua vim.lsp.buf.definition()", opts) - buf_set_keymap("n", "K", "lua vim.lsp.buf.hover()", opts) - buf_set_keymap("n", "gi", "lua vim.lsp.buf.implementation()", opts) - buf_set_keymap("n", "", "lua vim.lsp.buf.signature_help()", opts) - buf_set_keymap("n", "wa", "lua vim.lsp.buf.add_workspace_folder()", opts) - buf_set_keymap("n", "wr", "lua vim.lsp.buf.remove_workspace_folder()", opts) - buf_set_keymap("n", "wl", "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", opts) - buf_set_keymap("n", "D", "lua vim.lsp.buf.type_definition()", opts) - buf_set_keymap("n", "rn", "lua vim.lsp.buf.rename()", opts) - buf_set_keymap("n", "gr", "lua vim.lsp.buf.references()", opts) - buf_set_keymap("n", "e", "lua vim.lsp.diagnostic.show_line_diagnostics()", opts) - buf_set_keymap("n", "[d", "lua vim.lsp.diagnostic.goto_prev()", opts) - buf_set_keymap("n", "]d", "lua vim.lsp.diagnostic.goto_next()", opts) - buf_set_keymap("n", "q", "lua vim.lsp.diagnostic.set_loclist()", opts) + local lspconf = require("lspconfig") + local servers = require "lspinstall".installed_servers() - -- Set some keybinds conditional on server capabilities - if client.resolved_capabilities.document_formatting then - buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) - elseif client.resolved_capabilities.document_range_formatting then - buf_set_keymap("n", "f", "lua vim.lsp.buf.range_formatting()", opts) - end -end - --- lspInstall + lspconfig stuff - -local function setup_servers() - require "lspinstall".setup() - - local lspconf = require("lspconfig") - local servers = require "lspinstall".installed_servers() - - for _, lang in pairs(servers) do - if lang ~= "lua" then - lspconf[lang].setup { - on_attach = on_attach, - root_dir = vim.loop.cwd - } - elseif lang == "lua" then - lspconf[lang].setup { - root_dir = function() - return vim.loop.cwd() - end, - settings = { - Lua = { - diagnostics = { - globals = {"vim"} - }, - workspace = { - library = { - [vim.fn.expand("$VIMRUNTIME/lua")] = true, - [vim.fn.expand("$VIMRUNTIME/lua/vim/lsp")] = true + for _, lang in pairs(servers) do + if lang ~= "lua" then + lspconf[lang].setup { + on_attach = on_attach, + root_dir = vim.loop.cwd + } + elseif lang == "lua" then + lspconf[lang].setup { + root_dir = vim.loop.cwd, + settings = { + Lua = { + diagnostics = { + globals = {"vim"} + }, + workspace = { + library = { + [vim.fn.expand("$VIMRUNTIME/lua")] = true, + [vim.fn.expand("$VIMRUNTIME/lua/vim/lsp")] = true + } + }, + telemetry = { + enable = false } - }, - telemetry = { - enable = false } } } - } + end end end + + setup_servers() + + -- Automatically reload after `:LspInstall ` so we don't have to restart neovim + require "lspinstall".post_install_hook = function() + setup_servers() -- reload installed servers + vim.cmd("bufdo e") -- triggers FileType autocmd that starts the server + end + + -- replace the default lsp diagnostic letters with prettier symbols + vim.fn.sign_define("LspDiagnosticsSignError", {text = "", numhl = "LspDiagnosticsDefaultError"}) + vim.fn.sign_define("LspDiagnosticsSignWarning", {text = "", numhl = "LspDiagnosticsDefaultWarning"}) + vim.fn.sign_define("LspDiagnosticsSignInformation", {text = "", numhl = "LspDiagnosticsDefaultInformation"}) + vim.fn.sign_define("LspDiagnosticsSignHint", {text = "", numhl = "LspDiagnosticsDefaultHint"}) end -setup_servers() - --- Automatically reload after `:LspInstall ` so we don't have to restart neovim -require "lspinstall".post_install_hook = function() - setup_servers() -- reload installed servers - vim.cmd("bufdo e") -- this triggers the FileType autocmd that starts the server -end - --- replace the default lsp diagnostic letters with prettier symbols -vim.fn.sign_define("LspDiagnosticsSignError", {text = "", numhl = "LspDiagnosticsDefaultError"}) -vim.fn.sign_define("LspDiagnosticsSignWarning", {text = "", numhl = "LspDiagnosticsDefaultWarning"}) -vim.fn.sign_define("LspDiagnosticsSignInformation", {text = "", numhl = "LspDiagnosticsDefaultInformation"}) -vim.fn.sign_define("LspDiagnosticsSignHint", {text = "", numhl = "LspDiagnosticsDefaultHint"}) +return M diff --git a/lua/pluginList.lua b/lua/pluginList.lua index e7eff44..37a2cce 100644 --- a/lua/pluginList.lua +++ b/lua/pluginList.lua @@ -5,9 +5,11 @@ return packer.startup( function() use "wbthomason/packer.nvim" + use "akinsho/nvim-bufferline.lua" + use "glepnir/galaxyline.nvim" + -- color related stuff use "siduck76/nvim-base16.lua" - use { "norcalli/nvim-colorizer.lua", event = "BufRead", @@ -16,7 +18,7 @@ return packer.startup( end } - -- lang stuff + -- language related plugins use { "nvim-treesitter/nvim-treesitter", event = "BufRead", @@ -25,7 +27,23 @@ return packer.startup( end } - use "neovim/nvim-lspconfig" + use { + "neovim/nvim-lspconfig", + event = "BufRead", + config = function() + require("nvim-lspconfig").config() + end + } + + use "kabouzeid/nvim-lspinstall" + + use { + "onsails/lspkind-nvim", + event = "BufRead", + config = function() + require("lspkind").init() + end + } -- load compe in insert mode only use { @@ -36,53 +54,12 @@ return packer.startup( end } - use { - "onsails/lspkind-nvim", - event = "BufRead", - config = function() - require("lspkind").init() - end - } - use { "sbdchd/neoformat", cmd = "Neoformat" } use "nvim-lua/plenary.nvim" - use "kabouzeid/nvim-lspinstall" - - use { - "lewis6991/gitsigns.nvim", - event = "BufRead", - config = function() - require("gitsigns-nvim").config() - end - } - - use "akinsho/nvim-bufferline.lua" - use "glepnir/galaxyline.nvim" - - use { - "windwp/nvim-autopairs", - event = "InsertEnter", - config = function() - require("nvim-autopairs").setup() - end - } - - use { - "andymass/vim-matchup", - event = "CursorMoved" - } - - use { - "terrortylor/nvim-comment", - cmd = "CommentToggle", - config = function() - require("nvim_comment").setup() - end - } -- snippet support use { @@ -105,7 +82,36 @@ return packer.startup( use "nvim-telescope/telescope-media-files.nvim" use "nvim-lua/popup.nvim" - -- misc + -- misc plugins + use { + "lewis6991/gitsigns.nvim", + event = "BufRead", + config = function() + require("gitsigns-nvim").config() + end + } + + use { + "windwp/nvim-autopairs", + event = "InsertEnter", + config = function() + require("nvim-autopairs").setup() + end + } + + use { + "andymass/vim-matchup", + event = "CursorMoved" + } + + use { + "terrortylor/nvim-comment", + cmd = "CommentToggle", + config = function() + require("nvim_comment").setup() + end + } + use { "glepnir/dashboard-nvim", cmd = {