diff --git a/after/lsp/intelephense.lua b/after/lsp/intelephense.lua new file mode 100644 index 0000000..1ba948c --- /dev/null +++ b/after/lsp/intelephense.lua @@ -0,0 +1,12 @@ +---@type vim.lsp.Config +return { + root_markers = { "composer.json" }, + ---@type lspconfig.settings.intelephense + settings = { + intelephense = { + environment = { + phpVersion = "8.3.30", + }, + }, + }, +} diff --git a/after/plugin/telescope.lua b/after/plugin/telescope.lua index f98bc65..f2effed 100644 --- a/after/plugin/telescope.lua +++ b/after/plugin/telescope.lua @@ -16,8 +16,3 @@ telescope.setup(options) utils.nmap("ff", builtin.find_files, "Find Files") utils.nmap("fg", builtin.live_grep, "Live Grep") - -utils.nmap("fr", builtin.lsp_references, "LSP References") -utils.nmap("fi", builtin.lsp_implementations, "LSP Implementations") -utils.nmap("fs", builtin.lsp_document_symbols, "LSP Document Symbols") -utils.nmap("fS", builtin.lsp_dynamic_workspace_symbols, "LSP Workspace Symbols") diff --git a/after/plugin/which_key.lua b/after/plugin/which_key.lua new file mode 100644 index 0000000..809998f --- /dev/null +++ b/after/plugin/which_key.lua @@ -0,0 +1,3 @@ +local which_key = require("which-key") + +which_key.setup() diff --git a/init.lua b/init.lua index b813abc..3da74a1 100644 --- a/init.lua +++ b/init.lua @@ -6,6 +6,7 @@ require("lsp") require("completion") require("formatting") require("colorscheme") +require("highlighting") local opt = vim.opt @@ -36,6 +37,7 @@ opt.sidescrolloff = 8 opt.wrap = false opt.colorcolumn = "120" +vim.o.background = "light" vim.cmd("colorscheme rose-pine") -- Splits diff --git a/lua/highlighting.lua b/lua/highlighting.lua new file mode 100644 index 0000000..9342f40 --- /dev/null +++ b/lua/highlighting.lua @@ -0,0 +1,16 @@ +local manager = require("tree-sitter-manager") + +---@type tree-sitter-manager.Config +local options = { + ensure_installed = { + "php", + "html", + "html_tags", + "ecma", + "typescript", + "vue", + "blade", + }, +} + +manager.setup(options) diff --git a/lua/lsp.lua b/lua/lsp.lua index 6fbde5c..dc00bb2 100644 --- a/lua/lsp.lua +++ b/lua/lsp.lua @@ -1,7 +1,42 @@ +local utils = require("utils") require("mason").setup({}) require("mason-lspconfig").setup({ ensure_installed = { "lua_ls", "stylua", + "intelephense", }, }) +local telescope = require("telescope.builtin") + +vim.api.nvim_create_autocmd("LspAttach", { + desc = "LSP Keymaps", + callback = function(args) + local bufnr = args.buf + local options = { buffer = bufnr } + + -- Navigation + utils.nmap("gt", telescope.lsp_type_definitions, "Go to Type Definition", options) + utils.nmap("gd", telescope.lsp_definitions, "Go to Definition", options) + utils.nmap("gD", vim.lsp.buf.declaration, "Go to Declaration", options) + utils.nmap("gi", telescope.lsp_implementations, "Go to Implementation", options) + utils.nmap("gr", telescope.lsp_references, "References", options) + utils.nmap("gs", telescope.lsp_document_symbols, "LSP Document Symbols", options) + utils.nmap("gS", telescope.lsp_dynamic_workspace_symbols, "LSP Workspace Symbols", options) + + -- Info + utils.nmap("gh", vim.lsp.buf.hover, "Hover Docs", options) + utils.nmap("gH", vim.lsp.buf.signature_help, "Signature Help", options) + + -- Refactor + utils.nmap("gn", vim.lsp.buf.rename, "Rename Symbol", options) + utils.nmap("ga", vim.lsp.buf.code_action, "Code Action", options) + utils.nmap("gf", vim.lsp.buf.format, "Format Buffer", options) + + -- Diagnostics + utils.nmap("gl", vim.diagnostic.open_float, "Line Diagnostics", options) + utils.nmap("gk", vim.diagnostic.goto_prev, "Previous Diagnostic", options) + utils.nmap("gj", vim.diagnostic.goto_next, "Next Diagnostic", options) + utils.nmap("gq", vim.diagnostic.setloclist, "Diagnostics to Loclist", options) + end, +}) diff --git a/lua/plugins.lua b/lua/plugins.lua index d26c159..2cb3ed9 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -11,6 +11,9 @@ vim.pack.add({ -- Automatically enable installed language servers { src = "https://github.com/mason-org/mason-lspconfig.nvim" }, + -- Automatically install TreeSitter parsers + { src = "https://github.com/romus204/tree-sitter-manager.nvim" }, + -- All-in-one completions engine { src = "https://github.com/saghen/blink.lib" }, { src = "https://github.com/saghen/blink.cmp" }, @@ -28,6 +31,7 @@ vim.pack.add({ -- Miscellaneous { src = "https://github.com/windwp/nvim-autopairs" }, + { src = "https://github.com/folke/which-key.nvim" }, -- WoW Addon API { src = "https://github.com/Tyrannican/warcraft-api.nvim" }, diff --git a/nvim-pack-lock.json b/nvim-pack-lock.json index b6c87f8..c5d2eb2 100644 --- a/nvim-pack-lock.json +++ b/nvim-pack-lock.json @@ -48,9 +48,17 @@ "rev": "7d324792b7943e4aa16ad007212e6acc6f9fe335", "src": "https://github.com/nvim-telescope/telescope.nvim" }, + "tree-sitter-manager.nvim": { + "rev": "bb66b815aff01e87b2e26be995116be8d2f91474", + "src": "https://github.com/romus204/tree-sitter-manager.nvim" + }, "warcraft-api.nvim": { "rev": "c016bc54ed62bca5058cc3bd7553e429dd8caf37", "src": "https://github.com/Tyrannican/warcraft-api.nvim" + }, + "which-key.nvim": { + "rev": "3aab2147e74890957785941f0c1ad87d0a44c15a", + "src": "https://github.com/folke/which-key.nvim" } } }