diff --git a/lazy-lock.json b/lazy-lock.json index 61554e0..5a85b51 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -6,20 +6,27 @@ "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, + "conform.nvim": { "branch": "master", "commit": "ad2b5ecd907128ed1b66b1cf4bed57902ef836ee" }, "friendly-snippets": { "branch": "main", "commit": "53d3df271d031c405255e99410628c26a8f0d2b0" }, "gitsigns.nvim": { "branch": "main", "commit": "d195f0c35ced5174d3ecce1c4c8ebb3b5bc23fa9" }, "indent-blankline.nvim": { "branch": "master", "commit": "5da5546947f3125dfd6aa85ab21074dc83f776d5" }, "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" }, "lspkind.nvim": { "branch": "master", "commit": "7f26cf5e27e2bd910ce0ea00c514da2bf97423b8" }, "lualine.nvim": { "branch": "master", "commit": "566b7036f717f3d676362742630518a47f132fff" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "56e435e09f8729af2d41973e81a0db440f8fe9c9" }, + "mason-tool-installer.nvim": { "branch": "main", "commit": "8b70e7f1e0a4119c1234c3bde4a01c241cabcc74" }, + "mason.nvim": { "branch": "main", "commit": "a09da6ac634926a299dd439da08bdb547a8ca011" }, "nvim-autopairs": { "branch": "master", "commit": "9fd41181693dd4106b3e414a822bb6569924de81" }, "nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" }, - "nvim-tree.lua": { "branch": "master", "commit": "50f30bcd8c62ac4a83d133d738f268279f2c2ce2" }, - "nvim-treesitter": { "branch": "master", "commit": "7d0b4756aba3b220d38ec0443c6cc10944060dd7" }, - "nvim-web-devicons": { "branch": "master", "commit": "43aa2ddf476012a2155f5f969ee55ab17174da7a" }, + "nvim-lint": { "branch": "master", "commit": "3ffa176628fe49e74f47992757016b7371a9b86b" }, + "nvim-lspconfig": { "branch": "master", "commit": "0d9e870d01894c592d7ea93cfe0fa451916d9a7f" }, + "nvim-tree.lua": { "branch": "master", "commit": "96a783fbd606a458bcce2ef8041240a8b94510ce" }, + "nvim-treesitter": { "branch": "master", "commit": "e49f1e8ef3e8450a8446cb1f2bbb53c919f60b6d" }, + "nvim-web-devicons": { "branch": "master", "commit": "808627b8d412b2a6b6fc6eed816fec3557198b01" }, "onedark.nvim": { "branch": "master", "commit": "c5476a091b0f1b4e853db91c91ff941f848a1cdd" }, "plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" }, "rainbow-delimiters.nvim": { "branch": "master", "commit": "a249476e451673f7811852d93109dff19311ee39" }, + "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" }, "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" } } \ No newline at end of file diff --git a/lua/config/bufferline.lua b/lua/config/bufferline.lua index bae77cb..ab64b88 100644 --- a/lua/config/bufferline.lua +++ b/lua/config/bufferline.lua @@ -1,15 +1,15 @@ --- Ensure plugin is avaiable local ok, bufferline = pcall(require, "bufferline") if not ok then - return + return end --- Plugin options -opts = { - options = { - -- mode = "tabs", - separator_style = "slant", - }, +local opts = { + options = { + -- mode = "tabs", + separator_style = "slant", + }, } --- Load plugin @@ -17,8 +17,8 @@ bufferline.setup(opts) --- Override keymaps local km = vim.keymap.set -km("n", "", ":BufferLineCycleNext") -km("n", "", ":BufferLineCyclePrev") +km("n", "", ":BufferLineCycleNext") +km("n", "", ":BufferLineCyclePrev") km("n", "bn", ":BufferLineMoveNext") km("n", "bp", ":BufferLineMovePrev") km("n", "bc", ":BufferLinePickClose") diff --git a/lua/config/init.lua b/lua/config/init.lua index f858a1a..239e2fe 100644 --- a/lua/config/init.lua +++ b/lua/config/init.lua @@ -11,3 +11,8 @@ require("config/rainbow-delimiters") require("config/telescope") require("config/which-key") require("config/nvim-cmp") +require("config/mason") +require("config/lsp/signs") +require("config/lsp/bash") +require("config/lsp/lua") +require("config/lsp/web") diff --git a/lua/config/lsp/attach.lua b/lua/config/lsp/attach.lua new file mode 100644 index 0000000..6040730 --- /dev/null +++ b/lua/config/lsp/attach.lua @@ -0,0 +1,43 @@ +return function() + local km = vim.keymap.set + local opts = {} + + opts.desc = "show documentation under cursor" + km("n", "lK", vim.lsp.buf.hover, opts) + + opts.desc = "show LSP References" + km("n", "lR", ":Telescope lsp_references", opts) + + opts.desc = "go to declaration" + km("n", "lD", "vim.lsp.buf.declaration", opts) + + opts.desc = "show LSP definition" + km("n", "ld", ":Telescope lsp_definitions", opts) + + opts.desc = "Show LSP implementations" + km("n", "li", ":Telescope lsp_implementations", opts) + + opts.desc = "Show LSP type definitions" + km("n", "lt", ":Telescope lsp_type_definitions", opts) + + opts.desc = "See available code actions" + km({ "n", "v" }, "lc", vim.lsp.buf.code_action, opts) + + opts.desc = "Smart rename" + km("n", "ln", vim.lsp.buf.rename, opts) + + opts.desc = "Show buffer diagnostics" + km("n", "lE", ":Telescope diagnostics bufnr=0", opts) + + opts.desc = "Show line diagnostics" + km("n", "le", vim.diagnostic.open_float, opts) + + opts.desc = "Go to previous diagnostic" + km("n", "lp", vim.diagnostic.goto_prev, opts) + + opts.desc = "Go to next diagnostic" + km("n", "ln", vim.diagnostic.goto_next, opts) + + opts.desc = "Restart LSP" + km("n", "ls", ":LspRestart", opts) +end diff --git a/lua/config/lsp/bash.lua b/lua/config/lsp/bash.lua new file mode 100644 index 0000000..bbdcc76 --- /dev/null +++ b/lua/config/lsp/bash.lua @@ -0,0 +1,57 @@ +local ok, mason_lspconfig, mason_tool_installer, lspconfig, conform, lint = pcall(function() + return require("mason-lspconfig"), + require("mason-tool-installer"), + require("lspconfig"), + require("conform"), + require("lint") +end) + +if not ok then + return +end + +mason_lspconfig.setup({ + ensure_installed = { "bashls" }, +}) + +lspconfig.bashls.setup({ + capabilities = require("config/lsp/capabilities"), + on_attach = require("config/lsp/attach"), +}) + +mason_tool_installer.setup({ + ensure_installed = { "shellcheck" }, +}) + +conform.setup({ + formatters_by_ft = { + sh = { "shellcheck" }, + }, + format_on_save = { + async = false, + timeout_ms = 500, + lsp_fallback = true, + }, +}) + +vim.keymap.set({ "n", "v" }, "lf", function() + conform.format({ + async = false, + timeout_ms = 500, + lsp_fallback = true, + }) +end, { desc = "Format" }) + +lint.linters_by_ft = { + lua = { "shellcheck" }, +} + +vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, { + callback = function() + lint.try_lint() + end, +}) + +vim.keymap.set("n", "ll", function() + lint.try_lint() +end, { desc = "Lint" }) diff --git a/lua/config/lsp/capabilities.lua b/lua/config/lsp/capabilities.lua new file mode 100644 index 0000000..d993313 --- /dev/null +++ b/lua/config/lsp/capabilities.lua @@ -0,0 +1,6 @@ +local ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") +if not ok then + return +end + +return cmp_nvim_lsp.default_capabilities() diff --git a/lua/config/lsp/lua.lua b/lua/config/lsp/lua.lua new file mode 100644 index 0000000..46ba35b --- /dev/null +++ b/lua/config/lsp/lua.lua @@ -0,0 +1,73 @@ +local ok, mason_lspconfig, mason_tool_installer, lspconfig, conform, lint = pcall(function() + return require("mason-lspconfig"), + require("mason-tool-installer"), + require("lspconfig"), + require("conform"), + require("lint") +end) + +if not ok then + return +end + +mason_lspconfig.setup({ + ensure_installed = { "lua_ls" }, +}) + +mason_tool_installer.setup({ + ensure_installed = { "stylua", "luacheck" }, +}) + +lspconfig.lua_ls.setup({ + -- capabilities = cmp_nvim_lsp.default_capabilities() + capabilities = require("config/lsp/capabilities"), + on_attach = require("config/lsp/attach"), + settings = { -- custom settings for lua + Lua = { + -- make the language server recognize "vim" global + diagnostics = { + globals = { "vim" }, + }, + workspace = { + -- make language server aware of runtime files + library = { + [vim.fn.expand("$VIMRUNTIME/lua")] = true, + [vim.fn.stdpath("config") .. "/lua"] = true, + }, + }, + }, + }, +}) + +conform.setup({ + formatters_by_ft = { + lua = { "stylua" }, + }, + format_on_save = { + async = false, + timeout_ms = 500, + lsp_fallback = true, + }, +}) + +vim.keymap.set({ "n", "v" }, "lf", function() + conform.format({ + async = false, + timeout_ms = 500, + lsp_fallback = true, + }) +end, { desc = "Format" }) + +lint.linters_by_ft = { + lua = { "luacheck" }, +} + +vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, { + callback = function() + lint.try_lint() + end, +}) + +vim.keymap.set("n", "ll", function() + lint.try_lint() +end, { desc = "Lint" }) diff --git a/lua/config/lsp/signs.lua b/lua/config/lsp/signs.lua new file mode 100644 index 0000000..1ace494 --- /dev/null +++ b/lua/config/lsp/signs.lua @@ -0,0 +1,6 @@ +local signs = { Error = " ", Warn = " ", Hint = "󰠠 ", Info = " " } + +for type, icon in pairs(signs) do + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) +end diff --git a/lua/config/lsp/web.lua b/lua/config/lsp/web.lua new file mode 100644 index 0000000..0f06f85 --- /dev/null +++ b/lua/config/lsp/web.lua @@ -0,0 +1,83 @@ +local ok, mason_lspconfig, mason_tool_installer, lspconfig, conform, lint = pcall(function() + return require("mason-lspconfig"), + require("mason-tool-installer"), + require("lspconfig"), + require("conform"), + require("lint") +end) + +if not ok then + return +end + +mason_lspconfig.setup({ + ensure_installed = { + "tsserver", + "html", + "emmet_ls", + "cssls", + }, +}) + +lspconfig.tsserver.setup({ + capabilities = require("config/lsp/capabilities"), + on_attach = require("config/lsp/attach"), +}) + +lspconfig.html.setup({ + capabilities = require("config/lsp/capabilities"), + on_attach = require("config/lsp/attach"), +}) + +lspconfig.emmet_ls.setup({ + capabilities = require("config/lsp/capabilities"), + on_attach = require("config/lsp/attach"), +}) + +lspconfig.cssls.setup({ + capabilities = require("config/lsp/capabilities"), + on_attach = require("config/lsp/attach"), +}) + +mason_tool_installer.setup({ + ensure_installed = { + "prettierd", + "prettier", + "eslint_d", + }, +}) + +conform.setup({ + formatters_by_ft = { + javascript = { { "prettierd", "prettier" } }, + json = { { "prettierd", "prettier" } }, + }, + format_on_save = { + async = false, + timeout_ms = 500, + lsp_fallback = true, + }, +}) + +vim.keymap.set({ "n", "v" }, "lf", function() + conform.format({ + async = false, + timeout_ms = 500, + lsp_fallback = true, + }) +end, { desc = "Format" }) + +lint.linters_by_ft = { + javascript = { "eslint_d" }, + json = { "eslint_d" }, +} + +vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, { + callback = function() + lint.try_lint() + end, +}) + +vim.keymap.set("n", "ll", function() + lint.try_lint() +end, { desc = "Lint" }) diff --git a/lua/config/lualine.lua b/lua/config/lualine.lua index ee936f1..dfdd5be 100644 --- a/lua/config/lualine.lua +++ b/lua/config/lualine.lua @@ -1,28 +1,28 @@ --- Ensure plugin is avaiable local ok, lualine, lazy_status = pcall(function() - return require("lualine"), require("lazy.status") + return require("lualine"), require("lazy.status") end) if not ok then - return + return end --- Plugin options -opts = { - options = { - theme = "onedark", - }, - sections = { - lualine_x = { - { - lazy_status.updates, - cond = lazy_status.has_updates, - color = { fg = "#ff9e64" }, - }, - { "encoding" }, - { "fileformat" }, - { "filetype" }, - }, - }, +local opts = { + options = { + theme = "onedark", + }, + sections = { + lualine_x = { + { + lazy_status.updates, + cond = lazy_status.has_updates, + color = { fg = "#ff9e64" }, + }, + { "encoding" }, + { "fileformat" }, + { "filetype" }, + }, + }, } --- Load plugin diff --git a/lua/config/mason.lua b/lua/config/mason.lua new file mode 100644 index 0000000..1fd9b31 --- /dev/null +++ b/lua/config/mason.lua @@ -0,0 +1,19 @@ +--- Ensure plugin is installed +local ok, mason = pcall(require, "mason") +if not ok then + return +end + +--- Plugin options +local opts = { + ui = { + icons = { + package_installed = "✓", + package_pending = "➜", + package_uninstalled = "✗", + }, + }, +} + +--- Load plugin +mason.setup(opts) diff --git a/lua/config/nvim-cmp.lua b/lua/config/nvim-cmp.lua index eea50d7..a3741ce 100644 --- a/lua/config/nvim-cmp.lua +++ b/lua/config/nvim-cmp.lua @@ -1,43 +1,43 @@ --- Ensure plugins are installed local ok, cmp, luasnip, lspkind = pcall(function() - return require("cmp"), - require("luasnip"), - require("lspkind") + return require("cmp"), require("luasnip"), require("lspkind") end) if not ok then - return + return end --- loads vscode style snippets from installed plugins (e.g. friendly-snippets) require("luasnip.loaders.from_vscode").lazy_load() -opts = { - completion = { - completeopt = "menu,menuone,preview,noselect", - }, - snippet = { -- configure how nvim-cmp interacts with snippet engine - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - mapping = cmp.mapping.preset.insert({ - [""] = cmp.mapping.complete(), -- show completion suggestions - [""] = cmp.mapping.abort(), -- close completion window - [""] = cmp.mapping.confirm({ select = false }), - }), - -- sources for autocompletion - sources = cmp.config.sources({ - { name = "nvim_lsp" }, - { name = "luasnip" }, -- snippets - { name = "buffer" }, -- text within current buffer - { name = "path" }, -- file system paths - }), - -- configure lspkind for vs-code like pictograms in completion menu - formatting = { - format = lspkind.cmp_format({ - maxwidth = 50, - ellipsis_char = "...", - }), - },v +local opts = { + completion = { + completeopt = "menu,menuone,preview,noselect", + }, + snippet = { -- configure how nvim-cmp interacts with snippet engine + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.complete(), -- show completion suggestions + [""] = cmp.mapping.abort(), -- close completion window + [""] = cmp.mapping.confirm({ select = false }), + }), + -- sources for autocompletion + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "luasnip" }, -- snippets + { name = "buffer" }, -- text within current buffer + { name = "path" }, -- file system paths + }), + -- configure lspkind for vs-code like pictograms in completion menu + formatting = { + format = lspkind.cmp_format({ + maxwidth = 50, + ellipsis_char = "...", + }), + }, } + +cmp.setup(opts) diff --git a/lua/config/nvim-tree.lua b/lua/config/nvim-tree.lua index 9fa8d8e..1c3792e 100644 --- a/lua/config/nvim-tree.lua +++ b/lua/config/nvim-tree.lua @@ -1,7 +1,7 @@ --- Ensure plugin is avaiable local ok, nvimtree = pcall(require, "nvim-tree") if not ok then - return + return end --- Unload netrw @@ -10,29 +10,32 @@ vim.g.loaded_netrwPlugin = 1 --- Plugin options local opts = { - sort = { - -- sorter = "case_sensitive", - }, - view = { - width = 30, - }, - renderer = { - group_empty = true, - indent_markers = { - enable = true, - }, - icons = { - glyphs = { - folder = { - arrow_closed = "", -- arrow when folder is closed - arrow_open = "", -- arrow when folder is open - }, - }, - }, - }, - filters = { - dotfiles = false, - }, + sort = { + -- sorter = "case_sensitive", + }, + view = { + width = 30, + }, + renderer = { + group_empty = true, + indent_markers = { + enable = true, + }, + icons = { + glyphs = { + folder = { + arrow_closed = "", -- arrow when folder is closed + arrow_open = "", -- arrow when folder is open + }, + }, + }, + }, + filters = { + dotfiles = false, + }, + diagnostics = { + enable = true, + }, } --- Load plugin @@ -40,8 +43,8 @@ nvimtree.setup(opts) --- Override keymap local km = vim.keymap.set -km('n', '', ':NvimTreeFocus') -km('n', 'ee', ':NvimTreeToggle') -km('n', 'ef', ':NvimTreeFindFileToggle') -km('n', 'ec', ':NvimTreeCollapse') -km('n', 'er', ':NvimTreeRefresh') +km("n", "", ":NvimTreeFocus") +km("n", "ee", ":NvimTreeToggle") +km("n", "ef", ":NvimTreeFindFileToggle") +km("n", "ec", ":NvimTreeCollapse") +km("n", "er", ":NvimTreeRefresh") diff --git a/lua/config/nvim-treesitter.lua b/lua/config/nvim-treesitter.lua index 693c336..55c94e3 100644 --- a/lua/config/nvim-treesitter.lua +++ b/lua/config/nvim-treesitter.lua @@ -1,27 +1,27 @@ --- Ensure plugin is avaiable local ok, treesitter = pcall(require, "nvim-treesitter.configs") if not ok then - return + return end --- Plugin options -opts = { - highlight = { - enable = true, - }, - autotag = { - enable = true, - }, - auto_install = true, - incremental_selection = { - enable = true, - keymaps = { - init_selection = "ss", - node_incremental = false, - scope_incremental = false, - node_decremental = false, - }, - }, +local opts = { + highlight = { + enable = true, + }, + autotag = { + enable = true, + }, + auto_install = true, + incremental_selection = { + enable = true, + keymaps = { + init_selection = "ss", + node_incremental = false, + scope_incremental = false, + node_decremental = false, + }, + }, } --- Load plugin diff --git a/lua/config/rainbow-delimiters.lua b/lua/config/rainbow-delimiters.lua index 9d2b281..7b05de1 100644 --- a/lua/config/rainbow-delimiters.lua +++ b/lua/config/rainbow-delimiters.lua @@ -19,10 +19,10 @@ vim.g.rainbow_delimiters = { highlight = { 'RainbowDelimiterYellow', 'RainbowDelimiterBlue', - 'RainbowDelimiterOrange', - 'RainbowDelimiterGreen', + -- 'RainbowDelimiterGreen', 'RainbowDelimiterViolet', - 'RainbowDelimiterCyan', + -- 'RainbowDelimiterCyan', + -- 'RainbowDelimiterOrange', 'RainbowDelimiterRed', }, } diff --git a/lua/config/telescope.lua b/lua/config/telescope.lua index afcff0e..04d68ae 100644 --- a/lua/config/telescope.lua +++ b/lua/config/telescope.lua @@ -1,12 +1,33 @@ --- Ensute telescope is installed -local ok, telescope = pcall(require, "telescope.builtin") +local ok, telescope, builtin = pcall(function() + return require("telescope"), require("telescope.builtin") +end) + if not ok then - return + return end +--- Pluggin options +local opts = { + extensions = { + ["ui-select"] = { + require("telescope.themes").get_dropdown({}), + }, + }, +} + +--- Load pluggin +telescope.setup(opts) +telescope.load_extension("ui-select") + --- Override keymaps +opts = {} local km = vim.keymap.set -km("n", "ff", telescope.find_files, {desc = "find files"}) -km("n", "fg", telescope.live_grep, {desc = "live grep"}) -km("n", "fb", telescope.buffers, {desc = "buffers"}) -km("n", "fh", telescope.help_tags, {desc = "help tags"}) +opts.desc = "find files" +km("n", "ff", builtin.find_files, opts) +opts.desc = "live grep" +km("n", "fg", builtin.live_grep, opts) +opts.desc = "buffers" +km("n", "fb", builtin.buffers, opts) +opts.desc = "help tags" +km("n", "fh", builtin.help_tags, opts) diff --git a/lua/config/which-key.lua b/lua/config/which-key.lua index a8c155b..76a0891 100644 --- a/lua/config/which-key.lua +++ b/lua/config/which-key.lua @@ -1,7 +1,7 @@ --- Ensure plugin is avaiable local ok, wichkey = pcall(require, "which-key") if not ok then - return + return end --- Global options @@ -10,17 +10,29 @@ vim.o.timeoutlen = 300 --- Add description to leader group wichkey.register({ - n = { - name = "NoHighLight", - }, - e = { - name = "NvimTree", - }, - f = { - name = "Telescope" - }, + n = { + name = "NoHighLight", + }, + e = { + name = "NvimTree", + }, + f = { + name = "Telescope", + }, + l = { + name = "Lsp", + }, + s = { + name = "Treesitter", + }, + b = { + name = "Bufferline", + }, + t = { + name = "Table", + }, }, { prefix = "" }) --- Override keymap local km = vim.keymap.set -km('n', '', ':WhichKey', { desc = "Which-key" }) +km("n", "", ":WhichKey", { desc = "Which-key" }) diff --git a/lua/core/init.lua b/lua/core/init.lua index 552f196..6ea36b2 100644 --- a/lua/core/init.lua +++ b/lua/core/init.lua @@ -1,2 +1 @@ -require("core.keymap") require("core.options") diff --git a/lua/core/keymap.lua b/lua/core/keymap.lua deleted file mode 100644 index e69de29..0000000 diff --git a/lua/plugins/mason.lua b/lua/plugins/mason.lua new file mode 100644 index 0000000..5b99617 --- /dev/null +++ b/lua/plugins/mason.lua @@ -0,0 +1,21 @@ +return { + "williamboman/mason.nvim", + dependencies = { + "williamboman/mason-lspconfig.nvim", + "WhoIsSethDaniel/mason-tool-installer.nvim", + { + "neovim/nvim-lspconfig", + event = { "BufReadPre", "BufNewFile" }, + dependencies = { + { + "stevearc/conform.nvim", + event = { "BufReadPre", "BufNewFile" }, + }, + { + "mfussenegger/nvim-lint", + event = { "BufReadPre", "BufNewFile" }, + }, + }, + }, + }, +} diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua index 19560b6..3082ad2 100644 --- a/lua/plugins/telescope.lua +++ b/lua/plugins/telescope.lua @@ -1,4 +1,8 @@ return { - 'nvim-telescope/telescope.nvim', tag = '0.1.5', - dependencies = { 'nvim-lua/plenary.nvim' }, + "nvim-telescope/telescope.nvim", + tag = "0.1.5", + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-telescope/telescope-ui-select.nvim", + }, }