diff --git a/init.lua b/init.lua index 1ff16af..2ef9591 100644 --- a/init.lua +++ b/init.lua @@ -266,7 +266,7 @@ require('lazy').setup({ -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. -- -- For additional information see: https://github.com/folke/lazy.nvim#-structuring-your-plugins - -- { import = 'custom.plugins' }, + { import = 'custom.plugins' }, }, {}) -- [[ Setting options ]] @@ -276,11 +276,12 @@ require('lazy').setup({ -- Set highlight on search vim.o.hlsearch = false --- Make line numbers default +-- Make relative line numbers default vim.wo.number = true +vim.wo.relativenumber = true --- Enable mouse mode -vim.o.mouse = 'a' +-- Disable mouse mode +vim.o.mouse = '' -- Sync clipboard between OS and Neovim. -- Remove this option if you want your OS clipboard to remain independent. @@ -310,6 +311,14 @@ vim.o.completeopt = 'menuone,noselect' -- NOTE: You should make sure your terminal supports this vim.o.termguicolors = true +-- Set foldmethod +-- See `:help foldmethod` +vim.opt.foldmethod = 'expr' +vim.opt.foldexpr = 'v:lua.vim.treesitter.foldexpr()' +vim.opt.foldnestmax = 5 +vim.opt.foldlevel = 1 +vim.opt.foldenable = false + -- [[ Basic Keymaps ]] -- Keymaps for better default experience @@ -423,8 +432,31 @@ vim.keymap.set('n', 'sr', require('telescope.builtin').resume, { desc = vim.defer_fn(function() require('nvim-treesitter.configs').setup { -- Add languages to be installed here that you want installed for treesitter - ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'javascript', 'typescript', 'vimdoc', 'vim', 'bash' }, - + ensure_installed = { + 'css', + 'dockerfile', + 'eex', + 'elixir', + 'erlang', + 'gitcommit', + 'go', + 'heex', + 'html', + 'http', + 'javascript', + 'json', + 'lua', + 'markdown', + 'markdown_inline', + 'python', + 'sql', + 'toml', + 'tsx', + 'typescript', + 'vim', + 'vimdoc', + 'yaml' + }, -- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!) auto_install = false, -- Install languages synchronously (only applied to `ensure_installed`) @@ -568,13 +600,16 @@ require('mason-lspconfig').setup() -- If you want to override the default filetypes that your language server will attach to you can -- define the property 'filetypes' to the map in question. local servers = { - -- clangd = {}, - -- gopls = {}, - -- pyright = {}, - -- rust_analyzer = {}, - -- tsserver = {}, - -- html = { filetypes = { 'html', 'twig', 'hbs'} }, - + elixirls = { + elixirLS = { + dialyzerEnabled = true, + dialyzerFormat = "dialyxir_long", + fetchDeps = false, + mixEnv = "test" + } + }, + gopls = {}, + html = { filetypes = { 'html', 'twig', 'hbs'} }, lua_ls = { Lua = { workspace = { checkThirdParty = false }, @@ -583,6 +618,8 @@ local servers = { -- diagnostics = { disable = { 'missing-fields' } }, }, }, + pyright = {}, + tsserver = {}, } -- Setup neovim lua configuration @@ -601,12 +638,23 @@ mason_lspconfig.setup { mason_lspconfig.setup_handlers { function(server_name) - require('lspconfig')[server_name].setup { + local opts = { capabilities = capabilities, on_attach = on_attach, settings = servers[server_name], filetypes = (servers[server_name] or {}).filetypes, } + if server_name == 'elixirls' then + local version = vim.fn.system('mise current elixir') or '' + local match_version_111 = string.match(version, '^1.11') + local match_version_112 = string.match(version, '^1.12') + if match_version_111 ~= nil then + opts = vim.tbl_extend('keep', opts, { cmd = { vim.fn.expand('$LOCAL_SRC_HOME') .. '/elixir-ls/release/v0.12.0/language_server.sh' } }) + elseif match_version_112 ~= nil then + opts = vim.tbl_extend('keep', opts, { cmd = { vim.fn.expand('$LOCAL_SRC_HOME') .. '/elixir-ls/release/v0.14.6/language_server.sh' } }) + end + end + require('lspconfig')[server_name].setup(opts) end, }