diff options
Diffstat (limited to 'mac/.config')
| -rw-r--r-- | mac/.config/TheSiahxyz/lua/TheSiahxyz/plugins/textobject.lua | 283 | ||||
| -rw-r--r-- | mac/.config/TheSiahxyz/lua/TheSiahxyz/plugins/treesitter.lua | 78 | ||||
| -rw-r--r-- | mac/.config/git/config | 4 |
3 files changed, 187 insertions, 178 deletions
diff --git a/mac/.config/TheSiahxyz/lua/TheSiahxyz/plugins/textobject.lua b/mac/.config/TheSiahxyz/lua/TheSiahxyz/plugins/textobject.lua index fbce0c7..b82eac6 100644 --- a/mac/.config/TheSiahxyz/lua/TheSiahxyz/plugins/textobject.lua +++ b/mac/.config/TheSiahxyz/lua/TheSiahxyz/plugins/textobject.lua @@ -1,140 +1,173 @@ return { - -- "nvim-treesitter/nvim-treesitter-textobjects", - -- dependencies = { - -- { "nvim-treesitter", build = ":TSUpdate" }, - -- { "nvim-treesitter/nvim-treesitter" }, - -- { - -- "chrisgrieser/nvim-various-textobjs", - -- event = "UIEnter", - -- opts = { - -- keymaps = { - -- useDefaults = true, - -- }, - -- }, - -- }, - -- }, - -- init = function() - -- local wk = require("which-key") - -- wk.add({ - -- { - -- mode = { "n", "v", "x" }, - -- { "g>", group = "Swap next" }, - -- { "g<", group = "Swap prev" }, - -- { "<leader>]", group = "Next" }, - -- { "<leader>[", group = "Prev" }, - -- }, - -- }) - -- end, - -- config = function() - -- require("nvim-treesitter.configs").setup({ - -- textobjects = { - -- select = { - -- enable = true, + "nvim-treesitter/nvim-treesitter-textobjects", + branch = "main", + dependencies = { + { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" }, + { + "chrisgrieser/nvim-various-textobjs", + event = "UIEnter", + opts = { + keymaps = { + useDefaults = true, + }, + }, + }, + }, + init = function() + -- Disable entire built-in ftplugin mappings to avoid conflicts. + -- See https://github.com/neovim/neovim/tree/master/runtime/ftplugin for built-in ftplugins. + vim.g.no_plugin_maps = true - -- -- Automatically jump forward to textobj, similar to targets.vim - -- lookahead = true, + -- Or, disable per filetype (add as you like) + -- vim.g.no_python_maps = true + -- vim.g.no_ruby_maps = true + -- vim.g.no_rust_maps = true + -- vim.g.no_go_maps = true - -- keymaps = { - -- -- You can use the capture groups defined in textobjects.scm - -- ["a="] = { query = "@assignment.outer", desc = "Select outer part of an assignment" }, - -- ["i="] = { query = "@assignment.inner", desc = "Select inner part of an assignment" }, - -- ["h="] = { query = "@assignment.lhs", desc = "Select left hand side of an assignment" }, - -- ["l="] = { query = "@assignment.rhs", desc = "Select right hand side of an assignment" }, + local wk = require("which-key") + wk.add({ + { + mode = { "n", "v", "x" }, + { "g>", group = "Swap next" }, + { "g<", group = "Swap prev" }, + { "<leader>]", group = "Next" }, + { "<leader>[", group = "Prev" }, + }, + }) + end, + config = function() + require("nvim-treesitter-textobjects").setup({ + select = { + -- Automatically jump forward to textobj, similar to targets.vim + lookahead = true, + -- You can choose the select mode (default is charwise 'v') + -- + -- Can also be a function which gets passed a table with the keys + -- * query_string: eg '@function.inner' + -- * method: eg 'v' or 'o' + -- and should return the mode ('v', 'V', or '<c-v>') or a table + -- mapping query_strings to modes. + selection_modes = { + ["@parameter.outer"] = "v", -- charwise + ["@function.outer"] = "V", -- linewise + ["@class.outer"] = "<c-v>", -- blockwise + }, + -- If you set this to `true` (default is `false`) then any textobject is + -- extended to include preceding or succeeding whitespace. Succeeding + -- whitespace has priority in order to act similarly to eg the built-in + -- `ap`. + -- + -- Can also be a function which gets passed a table with the keys + -- * query_string: eg '@function.inner' + -- * selection_mode: eg 'v' + -- and should return true of false + include_surrounding_whitespace = false, + }, + move = { + -- whether to set jumps in the jumplist + set_jumps = true, + }, + }) - -- -- works for javascript/typescript files (custom capture I created in after/queries/ecma/textobjects.scm) - -- ["a:"] = { query = "@property.outer", desc = "Select outer part of an object property" }, - -- ["i:"] = { query = "@property.inner", desc = "Select inner part of an object property" }, - -- ["h:"] = { query = "@property.lhs", desc = "Select left part of an object property" }, - -- ["l:"] = { query = "@property.rhs", desc = "Select right part of an object property" }, + -- keymaps + -- You can use the capture groups defined in `textobjects.scm` + vim.keymap.set({ "x", "o" }, "am", function() + require("nvim-treesitter-textobjects.select").select_textobject("@function.outer", "textobjects") + end) + vim.keymap.set({ "x", "o" }, "im", function() + require("nvim-treesitter-textobjects.select").select_textobject("@function.inner", "textobjects") + end) + vim.keymap.set({ "x", "o" }, "ac", function() + require("nvim-treesitter-textobjects.select").select_textobject("@class.outer", "textobjects") + end) + vim.keymap.set({ "x", "o" }, "ic", function() + require("nvim-treesitter-textobjects.select").select_textobject("@class.inner", "textobjects") + end) + -- You can also use captures from other query groups like `locals.scm` + vim.keymap.set({ "x", "o" }, "as", function() + require("nvim-treesitter-textobjects.select").select_textobject("@local.scope", "locals") + end) + -- keymaps + vim.keymap.set("n", "<leader>a", function() + require("nvim-treesitter-textobjects.swap").swap_next("@parameter.inner") + end) + vim.keymap.set("n", "<leader>A", function() + require("nvim-treesitter-textobjects.swap").swap_previous("@parameter.outer") + end) + -- You can use the capture groups defined in `textobjects.scm` + vim.keymap.set({ "n", "x", "o" }, "]m", function() + require("nvim-treesitter-textobjects.move").goto_next_start("@function.outer", "textobjects") + end) + vim.keymap.set({ "n", "x", "o" }, "]]", function() + require("nvim-treesitter-textobjects.move").goto_next_start("@class.outer", "textobjects") + end) + -- You can also pass a list to group multiple queries. + vim.keymap.set({ "n", "x", "o" }, "]o", function() + move.goto_next_start({ "@loop.inner", "@loop.outer" }, "textobjects") + end) + -- You can also use captures from other query groups like `locals.scm` or `folds.scm` + vim.keymap.set({ "n", "x", "o" }, "]s", function() + require("nvim-treesitter-textobjects.move").goto_next_start("@local.scope", "locals") + end) + vim.keymap.set({ "n", "x", "o" }, "]z", function() + require("nvim-treesitter-textobjects.move").goto_next_start("@fold", "folds") + end) - -- ["aa"] = { query = "@parameter.outer", desc = "Select outer part of a parameter/argument" }, - -- ["ia"] = { query = "@parameter.inner", desc = "Select inner part of a parameter/argument" }, + vim.keymap.set({ "n", "x", "o" }, "]M", function() + require("nvim-treesitter-textobjects.move").goto_next_end("@function.outer", "textobjects") + end) + vim.keymap.set({ "n", "x", "o" }, "][", function() + require("nvim-treesitter-textobjects.move").goto_next_end("@class.outer", "textobjects") + end) - -- ["an"] = { query = "@conditional.outer", desc = "Select outer part of a conditional" }, - -- ["in"] = { query = "@conditional.inner", desc = "Select inner part of a conditional" }, + vim.keymap.set({ "n", "x", "o" }, "[m", function() + require("nvim-treesitter-textobjects.move").goto_previous_start("@function.outer", "textobjects") + end) + vim.keymap.set({ "n", "x", "o" }, "[[", function() + require("nvim-treesitter-textobjects.move").goto_previous_start("@class.outer", "textobjects") + end) - -- ["ap"] = { query = "@loop.outer", desc = "Select outer part of a loop" }, - -- ["ip"] = { query = "@loop.inner", desc = "Select inner part of a loop" }, + vim.keymap.set({ "n", "x", "o" }, "[M", function() + require("nvim-treesitter-textobjects.move").goto_previous_end("@function.outer", "textobjects") + end) + vim.keymap.set({ "n", "x", "o" }, "[]", function() + require("nvim-treesitter-textobjects.move").goto_previous_end("@class.outer", "textobjects") + end) - -- ["af"] = { query = "@call.outer", desc = "Select outer part of a function call" }, - -- ["if"] = { query = "@call.inner", desc = "Select inner part of a function call" }, + -- Go to either the start or the end, whichever is closer. + -- Use if you want more granular movements + vim.keymap.set({ "n", "x", "o" }, "]d", function() + require("nvim-treesitter-textobjects.move").goto_next("@conditional.outer", "textobjects") + end) + vim.keymap.set({ "n", "x", "o" }, "[d", function() + require("nvim-treesitter-textobjects.move").goto_previous("@conditional.outer", "textobjects") + end) - -- ["am"] = { - -- query = "@function.outer", - -- desc = "Select outer part of a method/function definition", - -- }, - -- ["im"] = { - -- query = "@function.inner", - -- desc = "Select inner part of a method/function definition", - -- }, + local ts_repeat_move = require("nvim-treesitter-textobjects.repeatable_move") - -- ["ac"] = { query = "@class.outer", desc = "Select outer part of a class" }, - -- ["ic"] = { query = "@class.inner", desc = "Select inner part of a class" }, - -- }, - -- }, - -- swap = { - -- enable = true, - -- swap_next = { - -- ["g>a"] = { query = "@parameter.inner", desc = "swap parameters/argument with next" }, - -- ["g>:"] = { query = "@property.outer", desc = "swap object property with next" }, - -- ["g>m"] = { query = "@function.outer", desc = "swap function with next" }, - -- }, - -- swap_previous = { - -- ["g<a"] = { query = "@parameter.inner", desc = "swap parameters/argument with prev" }, - -- ["g<:"] = { query = "@property.outer", desc = "swap object property with prev" }, - -- ["g<m"] = { query = "@function.outer", desc = "swap function with previous" }, - -- }, - -- }, - -- move = { - -- enable = true, - -- set_jumps = true, -- whether to set jumps in the jumplist - -- goto_next_start = { - -- ["]f"] = { query = "@call.outer", desc = "Next function call start" }, - -- ["]m"] = { query = "@function.outer", desc = "Next method/function def start" }, - -- ["]c"] = { query = "@class.outer", desc = "Next class start" }, - -- ["]="] = { query = "@conditional.outer", desc = "Next conditional start" }, - -- ["]l"] = { query = "@loop.outer", desc = "Next loop start" }, + -- Repeat movement with ; and , + -- ensure ; goes forward and , goes backward regardless of the last direction + vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move_next) + vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_previous) - -- -- You can pass a query group to use query from `queries/<lang>/<query_group>.scm file in your runtime path. - -- -- Below example nvim-treesitter's `locals.scm` and `folds.scm`. They also provide highlights.scm and indent.scm. - -- ["]-"] = { query = "@scope", query_group = "locals", desc = "Next scope" }, - -- ["]z"] = { query = "@fold", query_group = "folds", desc = "Next fold" }, - -- }, - -- goto_next_end = { - -- ["]F"] = { query = "@call.outer", desc = "Next function call end" }, - -- ["]M"] = { query = "@function.outer", desc = "Next method/function def end" }, - -- ["]C"] = { query = "@class.outer", desc = "Next class end" }, - -- ["]+"] = { query = "@conditional.outer", desc = "Next conditional end" }, - -- ["]L"] = { query = "@loop.outer", desc = "Next loop end" }, - -- }, - -- goto_previous_start = { - -- ["[f"] = { query = "@call.outer", desc = "Prev function call start" }, - -- ["[m"] = { query = "@function.outer", desc = "Prev method/function def start" }, - -- ["[c"] = { query = "@class.outer", desc = "Prev class start" }, - -- ["[="] = { query = "@conditional.outer", desc = "Prev conditional start" }, - -- ["[l"] = { query = "@loop.outer", desc = "Prev loop start" }, - -- }, - -- goto_previous_end = { - -- ["[F"] = { query = "@call.outer", desc = "Prev function call end" }, - -- ["[M"] = { query = "@function.outer", desc = "Prev method/function def end" }, - -- ["[C"] = { query = "@class.outer", desc = "Prev class end" }, - -- ["[+"] = { query = "@conditional.outer", desc = "Prev conditional end" }, - -- ["[L"] = { query = "@loop.outer", desc = "Prev loop end" }, - -- }, - -- }, - -- }, - -- }) + -- vim way: ; goes to the direction you were moving. + -- vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move) + -- vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_opposite) - -- local ts_repeat_move = require("nvim-treesitter.textobjects.repeatable_move") + -- Optionally, make builtin f, F, t, T also repeatable with ; and , + vim.keymap.set({ "n", "x", "o" }, "f", ts_repeat_move.builtin_f_expr, { expr = true }) + vim.keymap.set({ "n", "x", "o" }, "F", ts_repeat_move.builtin_F_expr, { expr = true }) + vim.keymap.set({ "n", "x", "o" }, "t", ts_repeat_move.builtin_t_expr, { expr = true }) + vim.keymap.set({ "n", "x", "o" }, "T", ts_repeat_move.builtin_T_expr, { expr = true }) - -- -- vim way: ; goes to the direction you were moving. - -- vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move) - -- vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_opposite) + -- This repeats the last query with always previous direction and to the start of the range. + vim.keymap.set({ "n", "x", "o" }, "<home>", function() + ts_repeat_move.repeat_last_move({ forward = false, start = true }) + end) - -- -- Optionally, make builtin f, F, t, T also repeatable with ; and , - -- vim.keymap.set({ "n", "x", "o" }, "f", ts_repeat_move.builtin_f_expr, { expr = true }) - -- vim.keymap.set({ "n", "x", "o" }, "F", ts_repeat_move.builtin_F_expr, { expr = true }) - -- vim.keymap.set({ "n", "x", "o" }, "t", ts_repeat_move.builtin_t_expr, { expr = true }) - -- vim.keymap.set({ "n", "x", "o" }, "T", ts_repeat_move.builtin_T_expr, { expr = true }) - -- end, + -- This repeats the last query with always next direction and to the end of the range. + vim.keymap.set({ "n", "x", "o" }, "<end>", function() + ts_repeat_move.repeat_last_move({ forward = true, start = false }) + end) + end, } diff --git a/mac/.config/TheSiahxyz/lua/TheSiahxyz/plugins/treesitter.lua b/mac/.config/TheSiahxyz/lua/TheSiahxyz/plugins/treesitter.lua index 7ca4ae9..7a9639c 100644 --- a/mac/.config/TheSiahxyz/lua/TheSiahxyz/plugins/treesitter.lua +++ b/mac/.config/TheSiahxyz/lua/TheSiahxyz/plugins/treesitter.lua @@ -1,62 +1,38 @@ return { "nvim-treesitter/nvim-treesitter", + lazy = false, build = ":TSUpdate", dependencies = { "nvim-treesitter/nvim-treesitter-textobjects" }, config = function() require("nvim-treesitter").setup({ - -- A list of parser names, or "all" - ensure_installed = { - "bash", - "c", - "cpp", - "dockerfile", - "html", - "java", - "json5", - "latex", - "lua", - "markdown", - "markdown_inline", - "python", - "sql", - "vim", - "vimdoc", - }, - - -- Install parsers synchronously (only applied to `ensure_installed`) - sync_install = true, - - -- Automatically install missing parsers when entering buffer - -- Recommendation: set to false if you don"t have `tree-sitter` CLI installed locally - auto_install = true, - - -- List of parsers to ignore installing (or "all") - ignore_install = {}, - - highlight = { - -- `false` will disable the whole extension - enable = true, - disable = { "csv" }, - -- Setting this to true will run `:h syntax` and tree-sitter at the same time. - -- Set this to `true` if you depend on "syntax" being enabled (like for indentation). - -- Using this option may slow down your editor, and you may see some duplicate highlights. - -- Instead of true it can also be a list of languages - additional_vim_regex_highlighting = { "markdown" }, - }, + install_dir = vim.fn.stdpath("data") .. "/treesitter", }) - - -- local treesitter_parser_config = require("nvim-treesitter.parsers").get_parser_configs() - -- treesitter_parser_config.templ = { - -- install_info = { - -- url = "https://github.com/vrischmann/tree-sitter-templ.git", - -- files = { "src/parser.c", "src/scanner.c" }, - -- branch = "master", - -- }, - -- } - -- - -- vim.treesitter.language.register("templ", "templ") end, keys = { - { "<leader>T", ":TSUpdate<cr>", desc = "Update treesitter" }, + { "<leader>TU", ":TSUpdate<cr>", desc = "Update treesitter" }, + { + "<leader>TI", + function() + require("nvim-treesitter").install({ + "bash", + "c", + "cpp", + "dockerfile", + "html", + "java", + "javascript", + "json5", + "latex", + "lua", + "markdown", + "markdown_inline", + "python", + "sql", + "vim", + "vimdoc", + }) + end, + desc = "Update treesitter", + }, }, } diff --git a/mac/.config/git/config b/mac/.config/git/config index 0324918..29c8585 100644 --- a/mac/.config/git/config +++ b/mac/.config/git/config @@ -10,6 +10,8 @@ branch = bold magenta changed = yellow untracked = blue +[commit] + gpgSign = false [credential] helper = cache helper = store @@ -84,5 +86,3 @@ name = TheSiahxyz email = 164138827+TheSiahxyz@users.noreply.github.com signingkey = 67BE7AD056C803BA -[commit] - gpgsign = true |
