diff --git a/.config/nvim/lua/maps.lua b/.config/nvim/lua/maps.lua index e675aee..a6afe95 100644 --- a/.config/nvim/lua/maps.lua +++ b/.config/nvim/lua/maps.lua @@ -3,33 +3,78 @@ -- 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", "tb", - function() require("telescope.builtin").buffers() end) + function() require("telescope").extensions.file_browser.file_browser() end, + { desc = "Open file browser" } +) +vim.keymap.set("n", "t/", + 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", "th", + function() require("telescope.builtin").help_tags() end, + { desc = "Search through help" } +) 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) +vim.keymap.set("n", "s", + function() require("astronomy").toggle_variant() end, + { desc = "Switch between dark and light colorscheme" } +) -- snippets vim.keymap.set({ "i", "s" }, "", "luasnip-next-choice") 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]", diff --git a/.config/nvim/lua/plugin/packer.lua b/.config/nvim/lua/plugin/packer.lua index b1afd3b..781d35e 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 }, }) @@ -51,7 +54,12 @@ return require("packer").startup(function() config = function() require("plugin.treesitter") end } - -- fuzzy finder + use { -- Additional text objects via treesitter + 'nvim-treesitter/nvim-treesitter-textobjects', + after = 'nvim-treesitter', + } + + -- telescope use { "nvim-telescope/telescope.nvim", requires = { @@ -61,8 +69,16 @@ 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 } -- LSP 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 + }, + }, + }, + }, +} 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", + }, + }, + }, + }, } 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"