From 84f11353e62c6a7dcc9721ad3e47b7a2b7a505b4 Mon Sep 17 00:00:00 2001 From: David JULIEN Date: Mon, 26 Dec 2022 18:45:40 +0100 Subject: [PATCH 01/11] [nvim] feat: display packer in a floating window --- .config/nvim/lua/plugin/packer.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.config/nvim/lua/plugin/packer.lua b/.config/nvim/lua/plugin/packer.lua index b1afd3b..54b0989 100644 --- a/.config/nvim/lua/plugin/packer.lua +++ b/.config/nvim/lua/plugin/packer.lua @@ -29,6 +29,9 @@ packer.init({ removed_sym = '- ', -- The symbol for an unused plugin which was removed moved_sym = '→ ', -- The symbol for a plugin which was moved (e.g. from opt to start) header_sym = '━ ', -- The symbol for the header line in packer's display + open_fn = function() + return require('packer.util').float({ border = "single" }) + end, -- Display in a floating window }, }) From 791919d05889db7a02fc8134907b4c8b6b1e6914 Mon Sep 17 00:00:00 2001 From: David JULIEN Date: Mon, 26 Dec 2022 18:49:45 +0100 Subject: [PATCH 02/11] [nvim] feat: change telescope comment in packer.lua --- .config/nvim/lua/plugin/packer.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/nvim/lua/plugin/packer.lua b/.config/nvim/lua/plugin/packer.lua index 54b0989..39252fa 100644 --- a/.config/nvim/lua/plugin/packer.lua +++ b/.config/nvim/lua/plugin/packer.lua @@ -54,7 +54,7 @@ return require("packer").startup(function() config = function() require("plugin.treesitter") end } - -- fuzzy finder + -- telescope use { "nvim-telescope/telescope.nvim", requires = { From 3c7f8a29a70aa679ed7e8c1ae3db0793762c80ca Mon Sep 17 00:00:00 2001 From: David JULIEN Date: Mon, 26 Dec 2022 18:50:57 +0100 Subject: [PATCH 03/11] [nvim] nvim: actually use fzf extension --- .config/nvim/lua/plugin/packer.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.config/nvim/lua/plugin/packer.lua b/.config/nvim/lua/plugin/packer.lua index 39252fa..49e4137 100644 --- a/.config/nvim/lua/plugin/packer.lua +++ b/.config/nvim/lua/plugin/packer.lua @@ -64,8 +64,11 @@ return require("packer").startup(function() { "nvim-telescope/telescope-fzf-native.nvim", run = "make" - } + }, }, + config = function() + require("telescope").load_extension("fzf") + end } -- LSP From a9cb5afdcaa92704252cac4b4687903b30a59b57 Mon Sep 17 00:00:00 2001 From: David JULIEN Date: Mon, 26 Dec 2022 19:04:56 +0100 Subject: [PATCH 04/11] [nvim] feat: add telescope-file-browser extension properly setup Telescope in telescope.lua provide a new keybinding --- .config/nvim/lua/maps.lua | 2 ++ .config/nvim/lua/plugin/packer.lua | 5 +++++ .config/nvim/lua/plugin/telescope.lua | 22 ++++++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 .config/nvim/lua/plugin/telescope.lua diff --git a/.config/nvim/lua/maps.lua b/.config/nvim/lua/maps.lua index e675aee..d0bcbd8 100644 --- a/.config/nvim/lua/maps.lua +++ b/.config/nvim/lua/maps.lua @@ -20,6 +20,8 @@ vim.keymap.set("n", "u", function() require("packer").sync() end) -- telescope vim.keymap.set("n", "tf", function() require("telescope.builtin").find_files() end) +vim.keymap.set("n", "tef", + function() require("telescope").extensions.file_browser.file_browser() end) vim.keymap.set("n", "tb", function() require("telescope.builtin").buffers() end) vim.keymap.set("n", "tg", diff --git a/.config/nvim/lua/plugin/packer.lua b/.config/nvim/lua/plugin/packer.lua index 49e4137..8c53feb 100644 --- a/.config/nvim/lua/plugin/packer.lua +++ b/.config/nvim/lua/plugin/packer.lua @@ -65,9 +65,14 @@ return require("packer").startup(function() "nvim-telescope/telescope-fzf-native.nvim", run = "make" }, + { + "nvim-telescope/telescope-file-browser.nvim", + } }, config = function() + require("telescope") require("telescope").load_extension("fzf") + require("telescope").load_extension("file_browser") end } diff --git a/.config/nvim/lua/plugin/telescope.lua b/.config/nvim/lua/plugin/telescope.lua new file mode 100644 index 0000000..10c1cad --- /dev/null +++ b/.config/nvim/lua/plugin/telescope.lua @@ -0,0 +1,22 @@ +-- Author : swytch +-- Created : Monday Dec. 26, 2022 18:39:16 CET +-- License : GPLv3 +-- Description : treesitter config file + +require("telescope").setup { + extensions = { + file_browser = { + theme = "ivy", + -- disables netrw and use telescope-file-browser in its place + hijack_netrw = true, + mappings = { + ["i"] = { + -- your custom insert mode mappings + }, + ["n"] = { + -- your custom normal mode mappings + }, + }, + }, + }, +} From 4419ce90b13a708435e1d4eb04a03229b8298827 Mon Sep 17 00:00:00 2001 From: David JULIEN Date: Mon, 26 Dec 2022 19:07:58 +0100 Subject: [PATCH 05/11] [system] cleanup: export PATH in the right place --- .config/zsh/.zprofile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.config/zsh/.zprofile b/.config/zsh/.zprofile index a0783b6..aec055e 100644 --- a/.config/zsh/.zprofile +++ b/.config/zsh/.zprofile @@ -1,10 +1,11 @@ #!/bin/zsh # This file is sourced when launching a DM from startx/xinit -# path -export PATH="$(find $HOME/.local/bin -type d | tr '\n' ':' | sed 's/:$//'):$PATH" # environment variables +## path +export PATH="$(find $HOME/.local/bin -type d | tr '\n' ':' | sed 's/:$//'):$PATH" + ## custom paths export DOTFILES="$HOME/.dotfiles.git" export LATEX_RESOURCES="$HOME/documents/latex" From 6d5fa385d24399852dfdfd5d555e5c73dbe75c22 Mon Sep 17 00:00:00 2001 From: David JULIEN Date: Mon, 2 Jan 2023 19:47:28 +0100 Subject: [PATCH 06/11] [nvim] feat: add descriptions to mappings --- .config/nvim/lua/maps.lua | 69 ++++++++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 15 deletions(-) diff --git a/.config/nvim/lua/maps.lua b/.config/nvim/lua/maps.lua index d0bcbd8..c0414ab 100644 --- a/.config/nvim/lua/maps.lua +++ b/.config/nvim/lua/maps.lua @@ -3,35 +3,74 @@ -- License : GPLv3 -- Description : neovim mappings file -vim.keymap.set({ "n", "v" }, "", "", { silent = true }) +vim.keymap.set({ "n", "v" }, "", + "", + { + silent = true, + desc = "leader key" + }) vim.g.mapleader = " " -- Dealing with word wrap -vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", - { expr = true, silent = true }) -vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", - { expr = true, silent = true }) +vim.keymap.set("n", "k", + "v:count == 0 ? 'gk' : 'k'", + { + expr = true, + silent = true, + desc = "Smart up motion" + }) +vim.keymap.set("n", "j", + "v:count == 0 ? 'gj' : 'j'", + { + expr = true, + silent = true, + desc = "Smart down motion" + }) -vim.keymap.set("n", "y", "\"+y") -vim.keymap.set("n", "p", "\"+P") -vim.keymap.set("n", "", "w! | !compiler %") -vim.keymap.set("n", "u", function() require("packer").sync() end) +vim.keymap.set("n", "y", + "\"+y", + { desc = "Yank to clipboard"} +) +vim.keymap.set("n", "p", + "\"+P", + { desc = "Copy from clipboard"} +) +vim.keymap.set("n", "", + "w! | !compiler %", + { desc = "Compile current file using ~/.local/bin/compiler"} +) +vim.keymap.set("n", "u", + function() require("packer").sync() end, + { desc = "Sync packer config and update plugins"} +) -- telescope vim.keymap.set("n", "tf", - function() require("telescope.builtin").find_files() end) + function() require("telescope.builtin").find_files() end, + { desc = "Fuzzy find files" } +) vim.keymap.set("n", "tef", - function() require("telescope").extensions.file_browser.file_browser() end) + function() require("telescope").extensions.file_browser.file_browser() end, + { desc = "Open file browser" } +) vim.keymap.set("n", "tb", - function() require("telescope.builtin").buffers() end) + function() require("telescope.builtin").buffers() end, + { desc = "Grep through buffers" } +) vim.keymap.set("n", "tg", - function() require("telescope.builtin").grep_string() end) + function() require("telescope.builtin").grep_string() end, + { desc = "Grep current word" } +) vim.keymap.set("n", "tl", - function() require("telescope.builtin").live_grep() end) + function() require("telescope.builtin").live_grep() end, + { desc = "Grep interactively" } +) -- colorscheme vim.keymap.set("n", "", - function() require("astronomy").toggle_variant() end) + function() require("astronomy").toggle_variant() end, + { desc = "Switch between dark and light colorscheme" } +) -- snippets vim.keymap.set({ "i", "s" }, "", "luasnip-next-choice") From 4ad4d956745ec6aac50acc42f7be19d0cbfecffd Mon Sep 17 00:00:00 2001 From: David JULIEN Date: Mon, 2 Jan 2023 19:56:23 +0100 Subject: [PATCH 07/11] [nvim] feat: remap telescope functionalities --- .config/nvim/lua/maps.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.config/nvim/lua/maps.lua b/.config/nvim/lua/maps.lua index c0414ab..68de4d6 100644 --- a/.config/nvim/lua/maps.lua +++ b/.config/nvim/lua/maps.lua @@ -49,11 +49,11 @@ vim.keymap.set("n", "tf", function() require("telescope.builtin").find_files() end, { desc = "Fuzzy find files" } ) -vim.keymap.set("n", "tef", +vim.keymap.set("n", "tb", function() require("telescope").extensions.file_browser.file_browser() end, { desc = "Open file browser" } ) -vim.keymap.set("n", "tb", +vim.keymap.set("n", "t/", function() require("telescope.builtin").buffers() end, { desc = "Grep through buffers" } ) From 2445f4dc23d238b4ac0d6038745722f7bb6cecbe Mon Sep 17 00:00:00 2001 From: David JULIEN Date: Mon, 2 Jan 2023 19:56:45 +0100 Subject: [PATCH 08/11] [nvim] feat: add telescope.help_tags() mapping --- .config/nvim/lua/maps.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.config/nvim/lua/maps.lua b/.config/nvim/lua/maps.lua index 68de4d6..0c8e12a 100644 --- a/.config/nvim/lua/maps.lua +++ b/.config/nvim/lua/maps.lua @@ -61,6 +61,10 @@ vim.keymap.set("n", "tg", function() require("telescope.builtin").grep_string() end, { desc = "Grep current word" } ) +vim.keymap.set("n", "th", + function() require("telescope.builtin").help_tags() end, + { desc = "Search through help" } +) vim.keymap.set("n", "tl", function() require("telescope.builtin").live_grep() end, { desc = "Grep interactively" } From 13ddf74c92af8577071519d4f970bd2a3c62a3f3 Mon Sep 17 00:00:00 2001 From: David JULIEN Date: Mon, 2 Jan 2023 20:17:56 +0100 Subject: [PATCH 09/11] [nvim] fix: use as prefix to switch colorscheme --- .config/nvim/lua/maps.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/nvim/lua/maps.lua b/.config/nvim/lua/maps.lua index 0c8e12a..a6afe95 100644 --- a/.config/nvim/lua/maps.lua +++ b/.config/nvim/lua/maps.lua @@ -71,7 +71,7 @@ vim.keymap.set("n", "tl", ) -- colorscheme -vim.keymap.set("n", "", +vim.keymap.set("n", "s", function() require("astronomy").toggle_variant() end, { desc = "Switch between dark and light colorscheme" } ) From b16f48b5b370dcd9eb740dc7899c0ce999d02456 Mon Sep 17 00:00:00 2001 From: David JULIEN Date: Sat, 7 Jan 2023 19:00:42 +0100 Subject: [PATCH 10/11] [nvim] refactor: remove icons from completion --- .config/nvim/lua/plugin/cmp.lua | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/.config/nvim/lua/plugin/cmp.lua b/.config/nvim/lua/plugin/cmp.lua index e53c879..c87d9b5 100644 --- a/.config/nvim/lua/plugin/cmp.lua +++ b/.config/nvim/lua/plugin/cmp.lua @@ -18,33 +18,7 @@ end cmp.event:on( 'confirm_done', cmp_autopairs.on_confirm_done({ map_char = { tex = '' } })) -- Custom item icons -local icons = { - Class = "", - Color = "", - Constant = "µ", - Constructor = "", - Enum = "", - EnumMember = "", - Event = "", - Field = "", - File = "", - Folder = "", - Function = "", - Keyword = "", - Interface = "", - Method = "", - Module = "", - Operator = "", - Property = "", - Reference = "", - Snippet = "", - Struct = "", - Text = "", - TypeParameter = "", - Unit = "", - Value = "", - Variable = "", -} +local icons = { } cmp.setup { completion = { @@ -62,8 +36,6 @@ cmp.setup { }, formatting = { format = function(entry, vim_item) - vim_item.kind = string.format("%s %s", icons[vim_item.kind], - vim_item.kind) vim_item.menu = ({ nvim_lsp = "[lsp]", nvim_lua = "[nvim]", From 8b67005a9d765ff39e7f923514a6bf75eddac98e Mon Sep 17 00:00:00 2001 From: David JULIEN Date: Sat, 7 Jan 2023 19:17:00 +0100 Subject: [PATCH 11/11] [nvim] feat: use textobjects with treesitter --- .config/nvim/lua/plugin/packer.lua | 5 ++ .config/nvim/lua/plugin/treesitter.lua | 104 ++++++++++++++++++++++++- 2 files changed, 107 insertions(+), 2 deletions(-) diff --git a/.config/nvim/lua/plugin/packer.lua b/.config/nvim/lua/plugin/packer.lua index 8c53feb..781d35e 100644 --- a/.config/nvim/lua/plugin/packer.lua +++ b/.config/nvim/lua/plugin/packer.lua @@ -54,6 +54,11 @@ return require("packer").startup(function() config = function() require("plugin.treesitter") end } + use { -- Additional text objects via treesitter + 'nvim-treesitter/nvim-treesitter-textobjects', + after = 'nvim-treesitter', + } + -- telescope use { "nvim-telescope/telescope.nvim", diff --git a/.config/nvim/lua/plugin/treesitter.lua b/.config/nvim/lua/plugin/treesitter.lua index 2b7f3a3..314c6f8 100644 --- a/.config/nvim/lua/plugin/treesitter.lua +++ b/.config/nvim/lua/plugin/treesitter.lua @@ -4,12 +4,112 @@ -- Description : treesitter config file require("nvim-treesitter.configs").setup { - ensure_installed = { "c", "lua", "python", "rust", "bash" }, - ignore_install = { "javascript" }, + ensure_installed = { "c", "lua", "rust", "bash", "vim" }, highlight = { enable = true, }, indent = { enable = true, }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = "", + node_incremental = "", + scope_incremental = "", + node_decremental = "", + }, + }, + textobjects = { + select = { + enable = true, + lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim + keymaps = { + -- use the capture groups defined in textobjects.scm + ["ap"] = { + query = "@parameter.outer", + desc = "Select parameter region" + }, + ["ip"] = { + query = "@parameter.inner", + desc = "Select inner part of a parameter region" + }, + ["af"] = { + query = "@function.outer", + desc = "Select a function block" + }, + ["if"] = { + query = "@function.inner", + desc = "Select inner part of a function" + }, + ["ac"] = { + query = "@class.outer", + desc = "Select a class block" + }, + ["ic"] = { + query = "@class.inner", + desc = "Select inner part of a class" + }, + }, + }, + move = { + enable = true, + set_jumps = true, -- whether to set jumps in the jumplist + goto_next_start = { + ["]m"] = { + query = "@function.outer", + desc = "Jump to next function", + }, + ["])"] = { + query = "@class.outer", + desc = "Jump to next class", + }, + }, + goto_next_end = { + ["]M"] = { + query = "@function.outer", + desc = "Jump after next function", + }, + ["]]"] = { + query = "@class.outer", + desc = "Jump after next class", + }, + }, + goto_previous_start = { + ["[m"] = { + query = "@function.outer", + desc = "Jump to previous function", + }, + ["[)"] = { + query = "@class.outer", + desc = "Jump to previous class", + }, + }, + goto_previous_end = { + ["[M"] = { + query = "@function.outer", + desc = "Jump after previous function", + }, + ["[]"] = { + query = "@class.outer", + desc = "Jump after previous class", + }, + }, + }, + swap = { + enable = true, + swap_next = { + ["a"] = { + query = "@parameter.inner", + desc = "Swap with next parameter", + }, + }, + swap_previous = { + ["A"] = { + query = "@parameter.inner", + desc = "Swap with previous parameter", + }, + }, + }, + }, }