diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index f9118a3..76c97da 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -19,10 +19,12 @@ "nvim-dap": { "branch": "master", "commit": "3bde6f786057fa29d8356559b2ae3a52d9317fba" }, "nvim-dap-ui": { "branch": "master", "commit": "c020f660b02772f9f3d11f599fefad3268628a9e" }, "nvim-lspconfig": { "branch": "master", "commit": "deade69789089c3da15237697156334fb3e943f0" }, - "nvim-treesitter": { "branch": "master", "commit": "f2efc5f35743b8383a1b50f727faae94658506d5" }, + "nvim-treesitter": { "branch": "master", "commit": "b4b94ec387525cb9df4b56eb1a8bf33231a0df47" }, "nvim-web-devicons": { "branch": "master", "commit": "9ab9b0b894b2388a9dbcdee5f00ce72e25d85bf9" }, "plenary.nvim": { "branch": "master", "commit": "bda256fab0eb66a15e8190937e417e6a14ee5d72" }, "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, - "rust-tools.nvim": { "branch": "master", "commit": "71d2cf67b5ed120a0e31b2c8adb210dd2834242f" }, - "telescope.nvim": { "branch": "master", "commit": "276362a8020c6e94c7a76d49aa00d4923b0c02f3" } + "rust-tools.nvim": { "branch": "master", "commit": "0cc8adab23117783a0292a0c8a2fbed1005dc645" }, + "telescope.nvim": { "branch": "master", "commit": "276362a8020c6e94c7a76d49aa00d4923b0c02f3" }, + "tree-sitter-typst": { "branch": "main", "commit": "2e66ef4b798a26f0b82144143711f3f7a9e8ea35" }, + "typst.vim": { "branch": "main", "commit": "5c1a933d6e8178d8d2596165b1709a7605b26d11" } } \ No newline at end of file diff --git a/nvim/lua/configs/lsp.lua b/nvim/lua/configs/lsp.lua deleted file mode 100644 index 0abf666..0000000 --- a/nvim/lua/configs/lsp.lua +++ /dev/null @@ -1,28 +0,0 @@ -return function() - local configs = require("lspconfig") - local capabilities = require('cmp_nvim_lsp').default_capabilities() - - local on_attach = function(client, buf_number) - local buf_opts = { noremap = true, silent = true, buffer = buf_number } - vim.keymap.set('n', 'K', vim.lsp.buf.hover, buf_opts) - end - - configs.lua_ls.setup({ - capabilities = capabilities, - on_attach = on_attach, - settings = { - Lua = { - diagnostics = { - globals = { "vim" } - } - } - }, - }) - - local opts = { on_attach = on_attach, capabilities = capabilities } - - configs.tsserver.setup(opts) - configs.astro.setup(opts) - configs.svelte.setup(opts) -end - diff --git a/nvim/lua/global.lua b/nvim/lua/global.lua index 251d7e4..21a8a20 100644 --- a/nvim/lua/global.lua +++ b/nvim/lua/global.lua @@ -18,6 +18,17 @@ vim.filetype.add({ } }) +-- LSP hotkeys +local cmds_lsp = vim.api.nvim_create_augroup("cmds_lsp", { clear = true }) +vim.api.nvim_create_autocmd("LspAttach", { + group = cmds_lsp, + desc = "LSP actions", + callback = function() + local buf_opts = { noremap = true, silent = true, buffer = true } + vim.keymap.set('n', 'K', vim.lsp.buf.hover, buf_opts) + end +}) + -- Workaround: https://github.com/neovim/neovim/issues/21856 vim.api.nvim_create_autocmd({ "VimLeave" }, { callback = function() diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua index a3a5a71..cafb962 100644 --- a/nvim/lua/plugins.lua +++ b/nvim/lua/plugins.lua @@ -29,8 +29,8 @@ return { "nix", -- haskell "haskell", - -- latex - "latex", "bibtex", + -- literate + "latex", "bibtex", -- "typst", -- misc "gitignore", "diff", "dockerfile", "json", "yaml", "regex", }, @@ -44,10 +44,9 @@ return { vim.treesitter.language.register("markdown", "mdx") end, }, - -- LSP Configs + -- LSP { "neovim/nvim-lspconfig", - config = require "configs/lsp", }, -- Snippet engine { @@ -95,17 +94,42 @@ return { { "williamboman/mason-lspconfig.nvim", config = function() - require("mason-lspconfig").setup({ + local mason = require "mason-lspconfig" + mason.setup({ automatic_installation = true, ensure_installed = { + "lua_ls", -- Lua "rust_analyzer", -- Rust "hls", -- Haskell + "html", -- HTML + "cssls", -- CSS / SCSS "tsserver", -- TypeScript "astro", -- Astro "svelte", -- Svelte - "lua_ls", -- Lua + "pyright", -- Python + "typst_lsp", -- Typst }, }) + + local lsp = require "lspconfig" + local capabilities = require("cmp_nvim_lsp").default_capabilities() + mason.setup_handlers({ + function(server) + lsp[server].setup({ + single_file_support = true, + capabilities = capabilities, + }) + end, + ["lua_ls"] = function() + lsp.lua_ls.setup({ + single_file_support = true, + capabilities = capabilities, + settings = { + Lua = { diagnostics = { globals = { "vim" } } } + }, + }) + end, + }) end, dependencies = { "williamboman/mason.nvim", @@ -141,6 +165,11 @@ return { }, branch = "1.x.x", }, + -- Typst + { + "kaarmu/typst.vim", + ft = "typst", + }, -- File tree { "nvim-neo-tree/neo-tree.nvim",