diff --git a/lua/pcode/plugins/_treesitter.lua b/lua/pcode/plugins/_treesitter.lua index 335be0e..dd80401 100644 --- a/lua/pcode/plugins/_treesitter.lua +++ b/lua/pcode/plugins/_treesitter.lua @@ -1,47 +1,50 @@ return { - { "nvim-lua/plenary.nvim", event = "VeryLazy" }, - { - "nvim-treesitter/nvim-treesitter", - event = { "BufRead", "VeryLazy" }, - version = false, - build = ":TSUpdate", - lazy = true, - cmd = { - "TSInstall", - "TSInstallInfo", - "TSInstallSync", - "TSUpdate", - "TSUpdateSync", - "TSUninstall", - "TSUninstallInfo", - "TSInstallFromGrammar", - }, - opts = function() - return { - highlight = { enable = true }, - indent = { enable = true }, - ensure_installed = { "lua", "luadoc", "printf", "vim", "vimdoc" }, - incremental_selection = { - enable = true, - }, - autopairs = { - enable = true, - }, - } - end, - config = function(_, opts) - if type(opts.ensure_installed) == "table" then - ---@type table - local added = {} - opts.ensure_installed = vim.tbl_filter(function(lang) - if added[lang] then - return false - end - added[lang] = true - return true - end, opts.ensure_installed) - end - require("nvim-treesitter.configs").setup(opts) - end, - }, + { "nvim-lua/plenary.nvim", event = "VeryLazy" }, + { + "nvim-treesitter/nvim-treesitter", + event = { "BufRead", "VeryLazy" }, + version = false, + build = ":TSUpdate", + lazy = true, + cmd = { + "TSInstall", + -- "TSInstallInfo", + "TSInstallSync", + "TSUpdate", + "TSUpdateSync", + "TSUninstall", + "TSUninstallInfo", + "TSInstallFromGrammar", + }, + opts = function() + return { + highlight = { enable = true }, + indent = { enable = true }, + ensure_installed = { "lua", "luadoc", "printf", "vim", "vimdoc" }, + incremental_selection = { + enable = true, + }, + autopairs = { + enable = true, + }, + } + end, + config = function(_, opts) + if type(opts.ensure_installed) == "table" then + ---@type table + local added = {} + opts.ensure_installed = vim.tbl_filter(function(lang) + if added[lang] then + return false + end + added[lang] = true + return true + end, opts.ensure_installed) + end + require("nvim-treesitter.configs").setup(opts) + vim.api.nvim_create_user_command("TSInstallInfo", function() + vim.cmd("Telescope treesitter_info") + end, {}) + end, + }, } diff --git a/lua/pcode/user/keymaps.lua b/lua/pcode/user/keymaps.lua index 39f8c5f..a260663 100644 --- a/lua/pcode/user/keymaps.lua +++ b/lua/pcode/user/keymaps.lua @@ -91,3 +91,80 @@ keymap("n", "", "terminal live-server", opts) -- close current buffer keymap("n", "", "lua require('auto-bufferline.configs.utils').bufremove()", opts) + +-- vim.keymap.set("n", "ti", function() +-- local api = vim.api +-- local parser_configs = require("nvim-treesitter.parsers").get_parser_configs() +-- local parsers = vim.tbl_keys(parser_configs) +-- table.sort(parsers) +-- +-- local choices = {} +-- local lookup = {} +-- +-- for _, parser in ipairs(parsers) do +-- local is_installed = #api.nvim_get_runtime_file("parser/" .. parser .. ".so", false) > 0 +-- +-- local label = (is_installed and "[✓] " or "[✗] ") .. parser +-- table.insert(choices, label) +-- lookup[label] = parser +-- end +-- +-- vim.ui.select(choices, { +-- prompt = "Treesitter ([✓]= installed, [✗] = not installed)", +-- }, function(choice) +-- if choice then +-- local parser_name = lookup[choice] +-- if parser_name then +-- vim.cmd("TSInstall " .. parser_name) +-- end +-- end +-- end) +-- end, { desc = "Install Treesitter" }) +-- +-- vim.keymap.set("n", "tu", function() +-- local parsers = require("nvim-treesitter.info").installed_parsers() +-- table.sort(parsers) +-- local choices = {} +-- local lookup = {} +-- +-- for _, parser in ipairs(parsers) do +-- local label = "[✓] " .. parser +-- table.insert(choices, label) +-- lookup[label] = parser +-- end +-- +-- vim.ui.select(choices, { +-- prompt = "Uninstall Treesitter", +-- }, function(choice) +-- if choice then +-- local parser_name = lookup[choice] +-- if parser_name then +-- vim.cmd("TSUninstall " .. parser_name) +-- end +-- end +-- end) +-- end, { desc = "Uninstall Treesitter" }) + +vim.api.nvim_create_user_command("TSIsInstalled", function() + local parsers = require("nvim-treesitter.info").installed_parsers() + table.sort(parsers) + local choices = {} + local lookup = {} + + for _, parser in ipairs(parsers) do + local label = "[✓] " .. parser + table.insert(choices, label) + lookup[label] = parser + end + + vim.ui.select(choices, { + prompt = "Uninstall Treesitter", + }, function(choice) + if choice then + local parser_name = lookup[choice] + if parser_name then + vim.cmd("TSUninstall " .. parser_name) + end + end + end) +end, {})