summaryrefslogtreecommitdiff
path: root/mac/.config/LunarVim/lua/lvim/core/treesitter.lua
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-08-23 12:42:37 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-08-23 12:42:37 +0900
commit07d294425a98ee5d1e22d03e2b24ae2c76e487c0 (patch)
treea6818f0d64438c5fdb88b00a35d944f80c056213 /mac/.config/LunarVim/lua/lvim/core/treesitter.lua
parent6fc28cdb3529ca8ee864cb5c41674cb0a4af72a1 (diff)
updates
Diffstat (limited to 'mac/.config/LunarVim/lua/lvim/core/treesitter.lua')
-rw-r--r--mac/.config/LunarVim/lua/lvim/core/treesitter.lua135
1 files changed, 135 insertions, 0 deletions
diff --git a/mac/.config/LunarVim/lua/lvim/core/treesitter.lua b/mac/.config/LunarVim/lua/lvim/core/treesitter.lua
new file mode 100644
index 0000000..bdb127c
--- /dev/null
+++ b/mac/.config/LunarVim/lua/lvim/core/treesitter.lua
@@ -0,0 +1,135 @@
+local M = {}
+local Log = require "lvim.core.log"
+
+function M.config()
+ lvim.builtin.treesitter = {
+ on_config_done = nil,
+
+ -- A list of parser names, or "all"
+ ensure_installed = { "comment", "markdown_inline", "regex" },
+
+ -- List of parsers to ignore installing (for "all")
+ ignore_install = {},
+
+ -- A directory to install the parsers into.
+ -- By default parsers are installed to either the package dir, or the "site" dir.
+ -- If a custom path is used (not nil) it must be added to the runtimepath.
+ parser_install_dir = nil,
+
+ -- Install parsers synchronously (only applied to `ensure_installed`)
+ sync_install = false,
+
+ -- Automatically install missing parsers when entering buffer
+ auto_install = true,
+
+ matchup = {
+ enable = false, -- mandatory, false will disable the whole extension
+ -- disable = { "c", "ruby" }, -- optional, list of language that will be disabled
+ },
+ highlight = {
+ enable = true, -- false will disable the whole extension
+ additional_vim_regex_highlighting = false,
+ disable = function(lang, buf)
+ if vim.tbl_contains({ "latex" }, lang) then
+ return true
+ end
+
+ local status_ok, big_file_detected = pcall(vim.api.nvim_buf_get_var, buf, "bigfile_disable_treesitter")
+ return status_ok and big_file_detected
+ end,
+ },
+ context_commentstring = {
+ enable = true,
+ enable_autocmd = false,
+ config = {
+ -- Languages that have a single comment style
+ typescript = "// %s",
+ css = "/* %s */",
+ scss = "/* %s */",
+ html = "<!-- %s -->",
+ svelte = "<!-- %s -->",
+ vue = "<!-- %s -->",
+ json = "",
+ },
+ },
+ indent = { enable = true, disable = { "yaml", "python" } },
+ autotag = { enable = false },
+ textobjects = {
+ swap = {
+ enable = false,
+ -- swap_next = textobj_swap_keymaps,
+ },
+ -- move = textobj_move_keymaps,
+ select = {
+ enable = false,
+ -- keymaps = textobj_sel_keymaps,
+ },
+ },
+ textsubjects = {
+ enable = false,
+ keymaps = { ["."] = "textsubjects-smart", [";"] = "textsubjects-big" },
+ },
+ playground = {
+ enable = false,
+ disable = {},
+ updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code
+ persist_queries = false, -- Whether the query persists across vim sessions
+ keybindings = {
+ toggle_query_editor = "o",
+ toggle_hl_groups = "i",
+ toggle_injected_languages = "t",
+ toggle_anonymous_nodes = "a",
+ toggle_language_display = "I",
+ focus_language = "f",
+ unfocus_language = "F",
+ update = "R",
+ goto_node = "<cr>",
+ show_help = "?",
+ },
+ },
+ rainbow = {
+ enable = false,
+ extended_mode = true, -- Highlight also non-parentheses delimiters, boolean or table: lang -> boolean
+ max_file_lines = 1000, -- Do not enable for files with more than 1000 lines, int
+ },
+ }
+end
+
+function M.setup()
+ -- avoid running in headless mode since it's harder to detect failures
+ if #vim.api.nvim_list_uis() == 0 then
+ Log:debug "headless mode detected, skipping running setup for treesitter"
+ return
+ end
+
+ local ts_status_ok, treesitter_configs = pcall(require, "nvim-treesitter.configs")
+ if not ts_status_ok then
+ Log:error "Failed to load nvim-treesitter.configs"
+ return
+ end
+
+ local status_ok, ts_context_commentstring = pcall(require, "ts_context_commentstring")
+ if not status_ok then
+ Log:error "Failed to load ts_context_commentstring"
+ return
+ end
+
+ local opts = vim.deepcopy(lvim.builtin.treesitter)
+
+ -- handle deprecated API, https://github.com/JoosepAlviste/nvim-ts-context-commentstring/issues/82
+ ts_context_commentstring.setup(opts.context_commentstring)
+ opts.context_commentstring = nil
+
+ treesitter_configs.setup(opts)
+
+ if lvim.builtin.treesitter.on_config_done then
+ lvim.builtin.treesitter.on_config_done(treesitter_configs)
+ end
+
+ -- handle deprecated API, https://github.com/windwp/nvim-autopairs/pull/324
+ local ts_utils = require "nvim-treesitter.ts_utils"
+ ts_utils.is_in_node_range = vim.treesitter.is_in_node_range
+ ts_utils.get_node_range = vim.treesitter.get_node_range
+end
+
+return M