From 88aff46b8e50092c4d2573846b45a1ae29123e77 Mon Sep 17 00:00:00 2001 From: ant <> Date: Tue, 15 Aug 2023 19:10:32 +0200 Subject: [PATCH] Update config --- init.lua | 2 +- lua/configs/treesitter.lua | 12 +++++ lua/mappings.lua | 10 ++++ lua/plugins.lua | 102 ++++++++++++++++++++++++++++++++++++- 4 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 lua/configs/treesitter.lua diff --git a/init.lua b/init.lua index c3c6d34..9d0c670 100644 --- a/init.lua +++ b/init.lua @@ -49,6 +49,6 @@ local plugins = require("plugins") require("lazy").setup(plugins) vim.cmd.colorscheme "catppuccin" -opt.background = "dark" +opt.background = "light" require("mappings") diff --git a/lua/configs/treesitter.lua b/lua/configs/treesitter.lua new file mode 100644 index 0000000..f3c1a79 --- /dev/null +++ b/lua/configs/treesitter.lua @@ -0,0 +1,12 @@ +local parser_config = require "nvim-treesitter.parsers".get_parser_configs() +-- parser_config.nim = { +-- install_info = { +-- url = "~/git/tree-sitter-nim", -- local path or git repo +-- files = {"src/parser.c", "src/scanner.cc"}, -- note that some parsers also require src/scanner.c or src/scanner.cc +-- -- optional entries: +-- branch = "main", -- default branch in case of git repo if different from master +-- -- generate_requires_npm = false, -- if stand-alone parser without npm dependencies +-- -- requires_generate_from_grammar = false, -- if folder contains pre-generated src/parser.c +-- }, +-- filetype = "nim", -- if filetype does not match the parser name +-- } diff --git a/lua/mappings.lua b/lua/mappings.lua index 0ec2390..f0dfcb4 100644 --- a/lua/mappings.lua +++ b/lua/mappings.lua @@ -15,6 +15,16 @@ vim.keymap.set( " Telescope find_files follow=true no_ignore=true hidden=true " ) vim.keymap.set('n', 'ft', MiniFiles.open, { desc = "Open file tree" }) +-- vim.api.nvim_set_keymap('v', 'f', 'SnipRun', {silent = true}) +-- vim.api.nvim_set_keymap('n', 'f', 'SnipRunOperator', {silent = true}) +-- vim.api.nvim_set_keymap('n', 'ff', 'SnipRun', {silent = true}) +vim.keymap.set('n', 'rr', ":SnipRun", { desc = "Run line" }) +vim.keymap.set('v', 'r', ":SnipRun", { desc = "Run selection" }) + +vim.keymap.set({'n', 'v', 'o'}, '', require('tree-climber').goto_parent) +vim.keymap.set({'n', 'v', 'o'}, '', require('tree-climber').goto_child) +vim.keymap.set({'n', 'v', 'o'}, '', require('tree-climber').goto_next) +vim.keymap.set({'n', 'v', 'o'}, '', require('tree-climber').goto_prev) -- Global mappings. diff --git a/lua/plugins.lua b/lua/plugins.lua index 27f9531..1e05f48 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -10,6 +10,7 @@ local plugins = { enable = true, }, } + require('configs.treesitter') end, }, { @@ -221,8 +222,107 @@ local plugins = { }, { "lewis6991/gitsigns.nvim", - config = function() require('gitsigns').setup() end, + config = function() + require('gitsigns').setup({ + on_attach = function(bufnr) + local gs = package.loaded.gitsigns + + local function map(mode, l, r, opts) + opts = opts or {} + opts.buffer = bufnr + vim.keymap.set(mode, l, r, opts) + end + + -- Navigation + map('n', ']c', function() + if vim.wo.diff then return ']c' end + vim.schedule(function() gs.next_hunk() end) + return '' + end, { expr = true }) + + map('n', '[c', function() + if vim.wo.diff then return '[c' end + vim.schedule(function() gs.prev_hunk() end) + return '' + end, { expr = true }) + + -- Actions + map('n', 'hs', gs.stage_hunk, { desc = "Stage hunk" }) + map('n', 'hr', gs.reset_hunk, { desc = "Reset hunk" }) + map('v', 'hs', function() + gs.stage_hunk { vim.fn.line( + '.' + ), vim.fn.line('v') } + end, + { desc = "Stage hunk" }) + map( + 'v', + 'hr', + function() gs.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end, + { desc = "Reset hunk" } + ) + map('n', 'hS', gs.stage_buffer, { desc = "Stage buffer" }) + map('n', 'hu', gs.undo_stage_hunk, { desc = "Undo stage hunk" }) + map('n', 'hR', gs.reset_buffer, { desc = "Reset buffer" }) + map('n', 'hp', gs.preview_hunk, { desc = "Preview hunk" }) + map( + 'n', + 'hb', + function() gs.blame_line { full = true } end, + { desc = "Blame line" } + ) + map( + 'n', + 'tb', + gs.toggle_current_line_blame, + { desc = "Toggle current line blame" } + ) + map('n', 'hd', gs.diffthis, { desc = "Diff this" }) + map('n', 'hD', function() gs.diffthis('~') end, { desc = "Diff this (ignore whitespace)" }) + map('n', 'td', gs.toggle_deleted, { desc = "Toggle deleted" }) + + -- Text object + map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk', { desc = "Select hunk" }) + end + }) + end, }, + { + "sustech-data/wildfire.nvim", + event = "VeryLazy", + dependencies = { "nvim-treesitter/nvim-treesitter" }, + config = function() + require("wildfire").setup() + end, + }, + { "lukas-reineke/indent-blankline.nvim" }, + { + 'michaelb/sniprun', + -- run = 'sh ./install.sh', + config = function() + require('sniprun').setup() + end, + }, + { + "kylechui/nvim-surround", + version = "*", -- Use for stability; omit to use `main` branch for the latest features + event = "VeryLazy", + config = function() + require("nvim-surround").setup({ + -- Configuration here, or leave empty to use defaults + }) + end + }, + { "drybalka/tree-climber.nvim" }, + { + "NeogitOrg/neogit", + dependencies = { + "nvim-lua/plenary.nvim", -- required + "nvim-telescope/telescope.nvim", -- optional + "sindrets/diffview.nvim", -- optional + }, + config = true + } } return plugins