diff --git a/init.lua b/init.lua index 496f45b..c667dc3 100644 --- a/init.lua +++ b/init.lua @@ -91,7 +91,7 @@ vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' -- Set to true if you have a Nerd Font installed -vim.g.have_nerd_font = false +vim.g.have_nerd_font = true -- [[ Setting options ]] -- See `:help vim.opt` @@ -102,10 +102,10 @@ vim.g.have_nerd_font = false vim.opt.number = true -- You can also add relative line numbers, to help with jumping. -- Experiment for yourself to see if you like it! --- vim.opt.relativenumber = true +vim.opt.relativenumber = true -- Enable mouse mode, can be useful for resizing splits for example! -vim.opt.mouse = 'a' +vim.opt.mouse = '' -- Don't show the mode, since it's already in the status line vim.opt.showmode = false @@ -154,6 +154,14 @@ vim.opt.cursorline = true -- Minimal number of screen lines to keep above and below the cursor. vim.opt.scrolloff = 10 +-- Set foldmethod +-- See `:help foldmethod` +vim.opt.foldcolumn = '1' +vim.opt.foldlevel = 99 +vim.opt.foldlevelstart = 99 +vim.opt.foldenable = true +vim.opt.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]] + -- [[ Basic Keymaps ]] -- See `:help vim.keymap.set()` @@ -283,6 +291,7 @@ require('lazy').setup({ require('which-key').register { ['c'] = { name = '[C]ode', _ = 'which_key_ignore' }, ['d'] = { name = '[D]ocument', _ = 'which_key_ignore' }, + ['h'] = { name = 'Git [h]unk', _ = 'which_key_ignore' }, ['r'] = { name = '[R]ename', _ = 'which_key_ignore' }, ['s'] = { name = '[S]earch', _ = 'which_key_ignore' }, ['w'] = { name = '[W]orkspace', _ = 'which_key_ignore' }, @@ -551,6 +560,18 @@ require('lazy').setup({ -- tsserver = {}, -- + elixirls = { + elixirLS = { + dialyzerEnabled = true, + dialyzerFormat = 'dialyxir_long', + fetchDeps = false, + mixEnv = 'test', + }, + }, + gopls = {}, + helm_ls = {}, + html = { filetypes = { 'html', 'twig', 'hbs' } }, + htmx = {}, lua_ls = { -- cmd = {...}, -- filetypes = { ...}, @@ -565,6 +586,10 @@ require('lazy').setup({ }, }, }, + pyright = {}, + templ = {}, + terraformls = {}, + tsserver = {}, } -- Ensure the servers and tools above are installed @@ -591,6 +616,33 @@ require('lazy').setup({ -- by the server configuration above. Useful when disabling -- certain features of an LSP (for example, turning off formatting for tsserver) server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {}) + -- overwrite elixirls for older versions of elixir + -- * elixir 1.11 use version 0.12.0 + -- * elixir 1.12 use verions 0.14.6 + if server_name == 'elixirls' then + local version = vim.fn.system('mise current elixir') or '' + local elixir_servers = { + { version = '^1.11', path = '/elixir-ls/release/v0.12.0/language_server.sh' }, + { version = '^1.12', path = '/elixir-ls/release/v0.14.6/language_server.sh' }, + } + for _, ex_server in ipairs(elixir_servers) do + if string.match(version, ex_server.version) == nil then goto continue end + server = vim.tbl_extend('keep', server, { cmd = { vim.fn.expand('$LOCAL_SRC_HOME') .. ex_server.path } }) + ::continue:: + end + elseif server_name == 'pyright' then + local python_paths = { + { name = 'poetry', cmd = { 'poetry', 'env', 'info', '--executable' }}, + { name = 'system', cmd = { 'which', 'python' }}, + } + for _, py_server in ipairs(python_paths) do + local cmd = vim.system(py_server.cmd, { text = true }):wait() + if (cmd.code > 0) then goto continue end + local python_path = string.gsub(cmd.stdout, '\n', '') + server = vim.tbl_extend('keep', server, { settings = { python = { pythonPath = python_path } } }) + ::continue:: + end + end require('lspconfig')[server_name].setup(server) end, }, @@ -802,7 +854,37 @@ require('lazy').setup({ 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate', opts = { - ensure_installed = { 'bash', 'c', 'html', 'lua', 'luadoc', 'markdown', 'vim', 'vimdoc' }, + ensure_installed = { + 'bash', + 'c', + 'css', + 'dockerfile', + 'eex', + 'elixir', + 'erlang', + 'gitcommit', + 'go', + 'heex', + 'html', + 'http', + 'javascript', + 'json', + 'jsonc', + 'lua', + 'luadoc', + 'markdown', + 'markdown_inline', + 'python', + 'sql', + 'templ', + 'terraform', + 'toml', + 'tsx', + 'typescript', + 'vim', + 'vimdoc', + 'yaml', + }, -- Autoinstall languages that are not installed auto_install = true, highlight = { @@ -839,7 +921,7 @@ require('lazy').setup({ -- Uncomment any of the lines below to enable them (you will need to restart nvim). -- -- require 'kickstart.plugins.debug', - -- require 'kickstart.plugins.indent_line', + require 'kickstart.plugins.indent_line', -- require 'kickstart.plugins.lint', -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` @@ -847,7 +929,7 @@ require('lazy').setup({ -- -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. -- For additional information, see `:help lazy.nvim-lazy.nvim-structuring-your-plugins` - -- { import = 'custom.plugins' }, + { import = 'custom.plugins' }, }, { ui = { -- If you are using a Nerd Font: set icons to an empty table which will use the