diff options
Diffstat (limited to 'nvim')
63 files changed, 604 insertions, 672 deletions
diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua index d3ebf8f..765c55a 100644 --- a/nvim/.config/nvim/init.lua +++ b/nvim/.config/nvim/init.lua @@ -1,6 +1,12 @@ vim.g.mapleader = " " vim.g.maplocalleader = " " +require("keymaps") +require("autocmds") +require("options") +require("terminal") +require("lsp") + local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim" if not vim.uv.fs_stat(lazypath) then vim.fn.system { @@ -17,8 +23,8 @@ end ---@diagnostic disable-next-line: undefined-field vim.opt.rtp:prepend(lazypath) --- Set up lazy, and load my `lua/custom/plugins/` folder -require("lazy").setup({ import = "custom/plugins" }, { +-- Set up lazy, and load my `lua/plugins/` folder +require("lazy").setup({ import = "plugins" }, { change_detection = { notify = false, }, diff --git a/nvim/.config/nvim/lsp/bashls.lua b/nvim/.config/nvim/lsp/bashls.lua new file mode 100644 index 0000000..ff1e16d --- /dev/null +++ b/nvim/.config/nvim/lsp/bashls.lua @@ -0,0 +1,4 @@ +return { + cmd = { 'bash-language-server', 'start' }, + filetypes = { 'bash', 'sh', 'zsh' } +} diff --git a/nvim/.config/nvim/lsp/clangd.lua b/nvim/.config/nvim/lsp/clangd.lua new file mode 100644 index 0000000..ca25f94 --- /dev/null +++ b/nvim/.config/nvim/lsp/clangd.lua @@ -0,0 +1,5 @@ +return { + cmd = { 'clangd', '--background-index' }, + root_markers = { 'compile_commands.json', 'compile_flags.txt', '.clangd', 'build/' }, + filetypes = { 'c', 'cpp' }, +} diff --git a/nvim/.config/nvim/lsp/lua_ls.lua b/nvim/.config/nvim/lsp/lua_ls.lua new file mode 100644 index 0000000..3ea54d9 --- /dev/null +++ b/nvim/.config/nvim/lsp/lua_ls.lua @@ -0,0 +1,20 @@ +return { + cmd = { 'lua-language-server' }, + root_makers = { + '.luarc.json', + '.luarc.jsonc', + '.luacheckrc', + '.stylua.toml', + 'stylua.toml', + 'selene.toml', + 'selene.yml', + }, + filetypes = { 'lua' }, + settings = { + Lua = { + runtime = { + version = 'LuaJIT', + } + } + } +} diff --git a/nvim/.config/nvim/plugin/autocmds.lua b/nvim/.config/nvim/lua/autocmds.lua index 6349fb8..a14bd32 100644 --- a/nvim/.config/nvim/plugin/autocmds.lua +++ b/nvim/.config/nvim/lua/autocmds.lua @@ -43,6 +43,7 @@ vim.api.nvim_create_autocmd({ "InsertLeave", "WinEnter" }, { end end, }) + vim.api.nvim_create_autocmd({ "InsertEnter", "WinLeave" }, { group = augroup "auto_cursorline_hide", callback = function() diff --git a/nvim/.config/nvim/lua/custom/autopairs.lua b/nvim/.config/nvim/lua/custom/autopairs.lua deleted file mode 100644 index 00c7812..0000000 --- a/nvim/.config/nvim/lua/custom/autopairs.lua +++ /dev/null @@ -1,5 +0,0 @@ -require("nvim-autopairs").setup {} --- Automatically add `(` after selecting a function or method -local cmp_autopairs = require "nvim-autopairs.completion.cmp" -local cmp = require "cmp" -cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done()) diff --git a/nvim/.config/nvim/lua/custom/cmake.lua b/nvim/.config/nvim/lua/custom/cmake.lua deleted file mode 100644 index bef1fc7..0000000 --- a/nvim/.config/nvim/lua/custom/cmake.lua +++ /dev/null @@ -1 +0,0 @@ -require("cmake").setup { cmake = { parallel_jobs = #vim.uv.cpu_info() } } diff --git a/nvim/.config/nvim/lua/custom/cmp.lua b/nvim/.config/nvim/lua/custom/cmp.lua deleted file mode 100644 index 5cbb2e8..0000000 --- a/nvim/.config/nvim/lua/custom/cmp.lua +++ /dev/null @@ -1,69 +0,0 @@ -vim.opt.completeopt = { "menu", "menuone", "noselect" } -vim.opt.shortmess:append "c" - -local lspkind = require "lspkind" -lspkind.init {} - -local luasnip = require "luasnip" -luasnip.config.setup {} -require("luasnip.loaders.from_vscode").lazy_load() - -local cmp = require "cmp" - -cmp.setup { - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - completion = { completeopt = "menu,menuone,noinsert" }, - mapping = cmp.mapping.preset.insert { - -- ["<C-n>"] = cmp.mapping.select_next_item { behavior = cmp.SelectBehavior.Insert }, - -- ["<C-p>"] = cmp.mapping.select_prev_item { behavior = cmp.SelectBehavior.Insert }, - ["<C-y>"] = cmp.mapping( - cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Insert, - select = true, - }, - { "i", "c" } - ), - ["<C-b>"] = cmp.mapping.scroll_docs(-4), - ["<C-f>"] = cmp.mapping.scroll_docs(4), - -- ["<C-y>"] = cmp.mapping.confirm { select = true }, - -- -- Will move you to the right of each of the snippet's expansion locations. - ["<C-l>"] = cmp.mapping(function() - if luasnip.expand_or_locally_jumpable() then - luasnip.expand_or_jump() - end - end, { "i", "s" }), - -- Will move you to the left of each of the snippet's expansion locations. - ["<C-h>"] = cmp.mapping(function() - if luasnip.locally_jumpable(-1) then - luasnip.jump(-1) - end - end, { "i", "s" }), - }, - sources = { - { name = "nvim_lsp" }, - { name = "luasnip" }, - { name = "path" }, - { name = "buffer" }, - }, -} - --- Setup up vim-dadbod -cmp.setup.filetype({ "sql" }, { - sources = { - { name = "vim-dadbod-completion" }, - { name = "buffer" }, - }, -}) - -luasnip.config.set_config { - history = false, - updateevents = "TextChanged,TextChangedI", -} - -for _, ft_path in ipairs(vim.api.nvim_get_runtime_file("lua/custom/snippets/*.lua", true)) do - loadfile(ft_path)() -end diff --git a/nvim/.config/nvim/lua/custom/gitsigns.lua b/nvim/.config/nvim/lua/custom/gitsigns.lua deleted file mode 100644 index 2a12ebb..0000000 --- a/nvim/.config/nvim/lua/custom/gitsigns.lua +++ /dev/null @@ -1,60 +0,0 @@ -local gitsigns = require "gitsigns" - -local on_attach = function(bufnr) - 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 - vim.cmd.normal { "]c", bang = true } - else - gitsigns.nav_hunk "next" - end - end) - - map("n", "[c", function() - if vim.wo.diff then - vim.cmd.normal { "[c", bang = true } - else - gitsigns.nav_hunk "prev" - end - end) - - -- Actions - map("n", "<leader>gs", gitsigns.stage_hunk, { desc = "Stage hunk" }) - map("n", "<leader>gr", gitsigns.reset_hunk, { desc = "Reset hunk" }) - map("v", "<leader>gs", function() - gitsigns.stage_hunk { vim.fn.line ".", vim.fn.line "v" } - end, { desc = "Stage hunk" }) - map("v", "<leader>gr", function() - gitsigns.reset_hunk { vim.fn.line ".", vim.fn.line "v" } - end, { desc = "Reset hunk" }) - map("n", "<leader>gS", gitsigns.stage_buffer, { desc = "Stage buffer" }) - map("n", "<leader>gu", gitsigns.undo_stage_hunk, { desc = "Undo stage hunk" }) - map("n", "<leader>gR", gitsigns.reset_buffer, { desc = "Reset buffer" }) - map("n", "<leader>gp", gitsigns.preview_hunk, { desc = "Preview hunk" }) - map("n", "<leader>gb", function() - gitsigns.blame_line { full = true } - end, { desc = "Blame line" }) - map("n", "<leader>Tb", gitsigns.toggle_current_line_blame, { desc = "Toggle blame line" }) - map("n", "<leader>Td", gitsigns.toggle_deleted, { desc = "Toggle deleted" }) - map("n", "<leader>gd", gitsigns.diffthis, { desc = "Diff this" }) - map("n", "<leader>gD", function() - gitsigns.diffthis "~" - end, { desc = "Diff this ~" }) -end - -gitsigns.setup { - signs = { - add = { text = "+" }, - change = { text = "~" }, - delete = { text = "_" }, - topdelete = { text = "‾" }, - changedelete = { text = "~" }, - }, - on_attach = on_attach, -} diff --git a/nvim/.config/nvim/lua/custom/harpoon.lua b/nvim/.config/nvim/lua/custom/harpoon.lua deleted file mode 100644 index 06a20d7..0000000 --- a/nvim/.config/nvim/lua/custom/harpoon.lua +++ /dev/null @@ -1,25 +0,0 @@ -local harpoon = require "harpoon" -harpoon:setup() - -vim.keymap.set("n", "<leader>a", function() - harpoon:list():add() -end) - -vim.keymap.set("n", "<leader><leader>", function() - harpoon.ui:toggle_quick_menu(harpoon:list()) -end) - -vim.keymap.set("n", "<c-n>", function() - require("harpoon"):list():next() -end) - -vim.keymap.set("n", "<c-p>", function() - require("harpoon"):list():prev() -end) - --- Set <space>1..<space>5 be my shortcuts to moving to the files -for _, idx in ipairs { 1, 2, 3, 4, 5 } do - vim.keymap.set("n", string.format("<leader>%d", idx), function() - harpoon:list():select(idx) - end) -end diff --git a/nvim/.config/nvim/lua/custom/init.lua b/nvim/.config/nvim/lua/custom/init.lua deleted file mode 100644 index 9e39d84..0000000 --- a/nvim/.config/nvim/lua/custom/init.lua +++ /dev/null @@ -1,5 +0,0 @@ -require("chell.globals") -require("chell.options") -require("chell.keymaps") -require("chell.autocmds") -require("chell.lazy") diff --git a/nvim/.config/nvim/lua/custom/leap.lua b/nvim/.config/nvim/lua/custom/leap.lua deleted file mode 100644 index 5f25e50..0000000 --- a/nvim/.config/nvim/lua/custom/leap.lua +++ /dev/null @@ -1,3 +0,0 @@ -vim.keymap.set("n", "s", "<Plug>(leap)", { desc = "Leap" }) -vim.keymap.set("n", "S", "<Plug>(leap-from-window)", { desc = "Leap other window" }) -require("leap").setup { safe_labels = {} } diff --git a/nvim/.config/nvim/lua/custom/lsp.lua b/nvim/.config/nvim/lua/custom/lsp.lua deleted file mode 100644 index 47ca1d3..0000000 --- a/nvim/.config/nvim/lua/custom/lsp.lua +++ /dev/null @@ -1,113 +0,0 @@ ---TODO: make it prettier - -require("neodev").setup { - library = { - plugins = { "nvim-dap-ui" }, - types = true, - }, -} - -local capabilities = nil -if pcall(require, "cmp_nvim_lsp") then - capabilities = require("cmp_nvim_lsp").default_capabilities() -end - -local lspconfig = require "lspconfig" - -local servers = { - bashls = true, - gopls = true, - lua_ls = true, - rust_analyzer = true, - - jsonls = { - settings = { - json = { - schemas = require("schemastore").json.schemas(), - validate = { enable = true }, - }, - }, - }, - - yamlls = { - settings = { - yaml = { - schemaStore = { - enable = false, - url = "", - }, - schemas = require("schemastore").yaml.schemas(), - }, - }, - }, - - clangd = { - init_options = { clangdFileStatus = true }, - }, -} - -for name, config in pairs(servers) do - if config == true then - config = {} - end - config = vim.tbl_deep_extend("force", {}, { - capabilities = capabilities, - }, config) - - lspconfig[name].setup(config) -end - -local disable_semantic_tokens = { - lua = true, -} - -vim.api.nvim_create_autocmd("LspAttach", { - callback = function(args) - local bufnr = args.buf - local client = assert(vim.lsp.get_client_by_id(args.data.client_id), "must have valid client") - local builtin = require "telescope.builtin" - - vim.opt_local.omnifunc = "v:lua.vim.lsp.omnifunc" - vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = 0 }) - vim.keymap.set("n", "gr", vim.lsp.buf.references, { buffer = 0 }) - vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { buffer = 0 }) - vim.keymap.set("n", "gT", vim.lsp.buf.type_definition, { buffer = 0 }) - vim.keymap.set("n", "<leader>lr", vim.lsp.buf.rename, { buffer = 0 }) - vim.keymap.set("n", "<leader>la", vim.lsp.buf.code_action, { buffer = 0 }) - vim.keymap.set("n", "<leader>ls", builtin.lsp_document_symbols, { desc = "[D]ocument [S]ymbols" }) - vim.keymap.set("n", "<leader>lw", builtin.lsp_dynamic_workspace_symbols, { desc = "[W]orkspace Symbols" }) - -- nmap("gd", builtin.lsp_definitions, { desc = "[G]oto [D]efinition" }) - -- nmap("gr", builtin.lsp_references, { desc = "[G]oto [R]eferences" }) - -- nmap("gI", builtin.lsp_implementations, { desc = "[G]oto [I]mplementation" }) - - local filetype = vim.bo[bufnr].filetype - if disable_semantic_tokens[filetype] then - client.server_capabilities.semanticTokensProvider = nil - end - - if client and client.server_capabilities.inlayHintProvider and vim.lsp.inlay_hint then - vim.keymap.set("n", "<leader>Th", function() - vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) - end, { desc = "[T]oggle Inlay [H]ints" }) - end - end, -}) - --- Autoformatting Setup -require("conform").setup { - formatters_by_ft = { - lua = { "stylua" }, - cpp = { "clang-format" }, - c = { "clang-format" }, - }, -} - -vim.api.nvim_create_autocmd("BufWritePre", { - callback = function(args) - require("conform").format { - bufnr = args.buf, - lsp_fallback = true, - quiet = true, - } - end, -}) diff --git a/nvim/.config/nvim/lua/custom/mini.lua b/nvim/.config/nvim/lua/custom/mini.lua deleted file mode 100644 index e69de29..0000000 --- a/nvim/.config/nvim/lua/custom/mini.lua +++ /dev/null diff --git a/nvim/.config/nvim/lua/custom/plugins/autopairs.lua b/nvim/.config/nvim/lua/custom/plugins/autopairs.lua deleted file mode 100644 index 170b337..0000000 --- a/nvim/.config/nvim/lua/custom/plugins/autopairs.lua +++ /dev/null @@ -1,9 +0,0 @@ -return { - "windwp/nvim-autopairs", - event = "InsertEnter", - -- Optional dependency - dependencies = { "hrsh7th/nvim-cmp" }, - config = function() - require "custom.autopairs" - end, -} diff --git a/nvim/.config/nvim/lua/custom/plugins/cmake.lua b/nvim/.config/nvim/lua/custom/plugins/cmake.lua deleted file mode 100644 index 8bd0207..0000000 --- a/nvim/.config/nvim/lua/custom/plugins/cmake.lua +++ /dev/null @@ -1,17 +0,0 @@ -if vim.loop.os_uname().sysname ~= "Darwin" then - return { - "daniilrozanov/cmake.nvim", - lazy = false, - config = function() - require "custom.cmake" - end, - } -else - return { - dir = "~/repositories/cmake.nvim", - lazy = false, - config = function() - require "custom.cmake" - end, - } -end diff --git a/nvim/.config/nvim/lua/custom/plugins/cmp.lua b/nvim/.config/nvim/lua/custom/plugins/cmp.lua deleted file mode 100644 index 83fb5a2..0000000 --- a/nvim/.config/nvim/lua/custom/plugins/cmp.lua +++ /dev/null @@ -1,22 +0,0 @@ -return { - { - "hrsh7th/nvim-cmp", - event = "InsertEnter", - priority = 100, - dependencies = { - "onsails/lspkind.nvim", - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-path", - "hrsh7th/cmp-buffer", - { - "L3MON4D3/LuaSnip", - build = "make install_jsregexp", - dependencies = { "rafamadriz/friendly-snippets" }, - }, - "saadparwaiz1/cmp_luasnip", - }, - config = function() - require "custom.cmp" - end, - }, -} diff --git a/nvim/.config/nvim/lua/custom/plugins/conform.lua b/nvim/.config/nvim/lua/custom/plugins/conform.lua deleted file mode 100644 index 2fcf210..0000000 --- a/nvim/.config/nvim/lua/custom/plugins/conform.lua +++ /dev/null @@ -1,36 +0,0 @@ -return { -- Autoformat - "stevearc/conform.nvim", - lazy = false, - keys = { - { - "<leader>lf", - function() - require("conform").format { async = true, lsp_fallback = true } - end, - mode = "", - desc = "Format buffer", - }, - }, - opts = { - notify_on_error = false, - format_on_save = function(bufnr) - -- Disable "format_on_save lsp_fallback" for languages that don't - -- have a well standardized coding style. You can add additional - -- languages here or re-enable it for the disabled ones. - local disable_filetypes = { c = true, cpp = true } - return { - timeout_ms = 500, - lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype], - } - end, - formatters_by_ft = { - lua = { "stylua" }, - -- Conform can also run multiple formatters sequentially - -- python = { "isort", "black" }, - -- - -- You can use a sub-list to tell conform to run *until* a formatter - -- is found. - -- javascript = { { "prettierd", "prettier" } }, - }, - }, -} diff --git a/nvim/.config/nvim/lua/custom/plugins/gitsigns.lua b/nvim/.config/nvim/lua/custom/plugins/gitsigns.lua deleted file mode 100644 index 3da8ed4..0000000 --- a/nvim/.config/nvim/lua/custom/plugins/gitsigns.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - "lewis6991/gitsigns.nvim", - config = function() - require "custom.gitsigns" - end, -} diff --git a/nvim/.config/nvim/lua/custom/plugins/harpoon.lua b/nvim/.config/nvim/lua/custom/plugins/harpoon.lua deleted file mode 100644 index aa8dae8..0000000 --- a/nvim/.config/nvim/lua/custom/plugins/harpoon.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - "ThePrimeagen/harpoon", - branch = "harpoon2", - dependencies = { "nvim-lua/plenary.nvim" }, - config = function() - require "custom.harpoon" - end, -} diff --git a/nvim/.config/nvim/lua/custom/plugins/leap.lua b/nvim/.config/nvim/lua/custom/plugins/leap.lua deleted file mode 100644 index 5566ecc..0000000 --- a/nvim/.config/nvim/lua/custom/plugins/leap.lua +++ /dev/null @@ -1,7 +0,0 @@ -return { - "ggandor/leap.nvim", - lazy = false, --TODO: lazy - config = function() - require "custom.leap" - end, -} diff --git a/nvim/.config/nvim/lua/custom/plugins/lsp.lua b/nvim/.config/nvim/lua/custom/plugins/lsp.lua deleted file mode 100644 index ac87b84..0000000 --- a/nvim/.config/nvim/lua/custom/plugins/lsp.lua +++ /dev/null @@ -1,22 +0,0 @@ -return { - { - "neovim/nvim-lspconfig", - dependencies = { - "folke/neodev.nvim", - "williamboman/mason.nvim", - "williamboman/mason-lspconfig.nvim", - "WhoIsSethDaniel/mason-tool-installer.nvim", - - { "j-hui/fidget.nvim", opts = {} }, - - -- Autoformatting - "stevearc/conform.nvim", - - -- Schema information - "b0o/SchemaStore.nvim", - }, - config = function() - require "custom.lsp" - end, - }, -} diff --git a/nvim/.config/nvim/lua/custom/plugins/substitude.lua b/nvim/.config/nvim/lua/custom/plugins/substitude.lua deleted file mode 100644 index bb8bd9f..0000000 --- a/nvim/.config/nvim/lua/custom/plugins/substitude.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - "gbprod/substitute.nvim", - config = function() - require "custom.substitude" - end, -} diff --git a/nvim/.config/nvim/lua/custom/plugins/telescope.lua b/nvim/.config/nvim/lua/custom/plugins/telescope.lua deleted file mode 100644 index 00be4c1..0000000 --- a/nvim/.config/nvim/lua/custom/plugins/telescope.lua +++ /dev/null @@ -1,15 +0,0 @@ -return { - "nvim-telescope/telescope.nvim", - event = "VimEnter", - branch = "0.1.x", - dependencies = { - "nvim-lua/plenary.nvim", - { "nvim-telescope/telescope-fzf-native.nvim", build = "make" }, - { "nvim-telescope/telescope-smart-history.nvim" }, - { "nvim-telescope/telescope-ui-select.nvim" }, - { "nvim-tree/nvim-web-devicons" }, - }, - config = function() - require "custom.telescope" - end, -} diff --git a/nvim/.config/nvim/lua/custom/plugins/toggleterm.lua b/nvim/.config/nvim/lua/custom/plugins/toggleterm.lua deleted file mode 100644 index 8775389..0000000 --- a/nvim/.config/nvim/lua/custom/plugins/toggleterm.lua +++ /dev/null @@ -1,7 +0,0 @@ -return { - "akinsho/toggleterm.nvim", - version = "*", - config = function() - require "custom.toggleterm" - end, -} diff --git a/nvim/.config/nvim/lua/custom/plugins/treesitter.lua b/nvim/.config/nvim/lua/custom/plugins/treesitter.lua deleted file mode 100644 index dd37a3a..0000000 --- a/nvim/.config/nvim/lua/custom/plugins/treesitter.lua +++ /dev/null @@ -1,7 +0,0 @@ -return { - "nvim-treesitter/nvim-treesitter", - build = ":TSUpdate", - config = function() - require "custom.treesitter" - end, -} diff --git a/nvim/.config/nvim/lua/custom/plugins/vim-sleuth.lua b/nvim/.config/nvim/lua/custom/plugins/vim-sleuth.lua deleted file mode 100644 index a564707..0000000 --- a/nvim/.config/nvim/lua/custom/plugins/vim-sleuth.lua +++ /dev/null @@ -1 +0,0 @@ -return {} diff --git a/nvim/.config/nvim/lua/custom/substitude.lua b/nvim/.config/nvim/lua/custom/substitude.lua deleted file mode 100644 index e666195..0000000 --- a/nvim/.config/nvim/lua/custom/substitude.lua +++ /dev/null @@ -1,6 +0,0 @@ -require("substitute").setup {} - -vim.keymap.set("n", ",", require("substitute").operator, { noremap = true }) -vim.keymap.set("n", ",,", require("substitute").line, { noremap = true }) --- vim.keymap.set("n", "", require("substitute").eol, { noremap = true }) -vim.keymap.set("x", ",", require("substitute").visual, { noremap = true }) diff --git a/nvim/.config/nvim/lua/custom/telescope.lua b/nvim/.config/nvim/lua/custom/telescope.lua deleted file mode 100644 index 219264b..0000000 --- a/nvim/.config/nvim/lua/custom/telescope.lua +++ /dev/null @@ -1,82 +0,0 @@ --- local data = assert(vim.fn.stdpath "data") --[[@as string]] - -require("telescope").setup { - extensions = { - fzf = {}, - wrap_results = true, - history = { - -- path = vim.fs.joinpath(data, "telescope_history.sqlite3"), - limit = 100, - }, - ["ui-select"] = { - require("telescope.themes").get_dropdown(), - }, - }, - defaults = { - -- configure to use ripgrep - vimgrep_arguments = { - "rg", - "--follow", -- Follow symbolic links - "--hidden", -- Search for hidden files - "--no-heading", -- Don't group matches by each file - "--with-filename", -- Print the file path with the matched lines - "--line-number", -- Show line numbers - "--column", -- Show column numbers - "--smart-case", -- Smart case search - - -- Exclude some patterns from search - "--glob=!**/.git/*", - "--glob=!**/.idea/*", - "--glob=!**/.vscode/*", - "--glob=!**/build/*", - "--glob=!**/dist/*", - "--glob=!**/yarn.lock", - "--glob=!**/package-lock.json", - }, - }, - pickers = { - find_files = { - hidden = true, - -- needed to exclude some files & dirs from general search - -- when not included or specified in .gitignore - find_command = { - "rg", - "--files", - "--hidden", - "--glob=!**/.git/*", - "--glob=!**/.idea/*", - "--glob=!**/.vscode/*", - "--glob=!**/build/*", - "--glob=!**/dist/*", - "--glob=!**/yarn.lock", - "--glob=!**/package-lock.json", - }, - }, - }, -} - -pcall(require("telescope").load_extension, "fzf") -pcall(require("telescope").load_extension, "smart_history") -pcall(require("telescope").load_extension, "rest") -pcall(require("telescope").load_extension, "ui-select") - -local builtin = require "telescope.builtin" - -vim.keymap.set("n", "<leader>fh", builtin.help_tags, { desc = "Search [H]elp" }) -vim.keymap.set("n", "<leader>fk", builtin.keymaps, { desc = "Search [K]eymaps" }) -vim.keymap.set("n", "<leader>ff", builtin.find_files, { desc = "Search [F]iles" }) -vim.keymap.set("n", "<leader>fs", builtin.builtin, { desc = "Search [S]elect Telescope" }) -vim.keymap.set("n", "<leader>fw", builtin.grep_string, { desc = "Search current [W]ord" }) -vim.keymap.set("n", "<leader>fg", builtin.live_grep, { desc = "Search by [G]rep" }) -vim.keymap.set("n", "<leader>fd", builtin.diagnostics, { desc = "Search [D]iagnostics" }) -vim.keymap.set("n", "<leader>fr", builtin.resume, { desc = "Search [R]esume" }) -vim.keymap.set("n", "<leader>f.", builtin.oldfiles, { desc = 'Search Recent Files ("." for repeat)' }) -vim.keymap.set("n", "<leader>fb", builtin.buffers, { desc = "[ ] Find existing buffers" }) -vim.keymap.set("n", "<leader>fn", function() - require("telescope.builtin").find_files { cwd = vim.fn.stdpath "config" } -end, { desc = "Search [N]eovim files" }) - -vim.keymap.set("n", "<leader>fa", function() - ---@diagnostic disable-next-line: param-type-mismatch - builtin.find_files { cwd = vim.fs.joinpath(vim.fn.stdpath "data", "lazy") } -end) diff --git a/nvim/.config/nvim/lua/custom/toggleterm.lua b/nvim/.config/nvim/lua/custom/toggleterm.lua deleted file mode 100644 index 6aafb2f..0000000 --- a/nvim/.config/nvim/lua/custom/toggleterm.lua +++ /dev/null @@ -1,41 +0,0 @@ -require("toggleterm").setup { - size = function(term) - if term.direction == "horizontal" then - return 15 - elseif term.direction == "vertical" then - return vim.o.columns * 0.33 - end - end, -} - -local Terminal = require("toggleterm.terminal").Terminal -local on_open = function(_) - vim.cmd "startinsert!" - -- vim.keymap.set("n", "q", "<cmd>close<CR>", { noremap = true, silent = true, buffer = term.bufnr }) -end -local on_close = function(_) - vim.cmd "startinsert!" -end -if vim.fn.executable "lazygit" then - local lazygit = Terminal:new { - cmd = "lazygit", - dir = "git_dir", - direction = "float", - on_open = on_open, - on_close = on_close, - count = 999, - } - vim.keymap.set("n", "<leader>gg", function() - lazygit:toggle() - end, { desc = "ToggleTerm LazyGit" }) -end - -vim.keymap.set("n", "<leader>tf", function() - Terminal:new({ count = vim.v.count1, on_open = on_open, on_close = on_close }):toggle(nil, "float") -end) -vim.keymap.set("n", "<leader>tv", function() - Terminal:new({ count = vim.v.count1, on_open = on_open, on_close = on_close }):toggle(nil, "vertical") -end) -vim.keymap.set("n", "<leader>th", function() - Terminal:new({ count = vim.v.count1, on_open = on_open, on_close = on_close }):toggle(nil, "horizontal") -end) diff --git a/nvim/.config/nvim/lua/custom/treesitter.lua b/nvim/.config/nvim/lua/custom/treesitter.lua deleted file mode 100644 index 5f8e8fb..0000000 --- a/nvim/.config/nvim/lua/custom/treesitter.lua +++ /dev/null @@ -1,51 +0,0 @@ -local M = {} - -M.setup = function() - local group = vim.api.nvim_create_augroup("custom-treesitter", { clear = true }) - - require("nvim-treesitter.configs").setup { - ensure_installed = { - "bash", - "c", - "diff", - "html", - "lua", - "luadoc", - "json", - "markdown", - "vim", - "vimdoc", - "cpp", - "cmake", - "query", - "http", - "proto", - "xml", - "graphql", - }, - highlight = { enable = true }, - indent = { enable = true }, - } - - local syntax_on = { - -- elixir = true, - -- php = true, - } - - vim.api.nvim_create_autocmd("FileType", { - group = group, - callback = function(args) - local bufnr = args.buf - local ft = vim.bo[bufnr].filetype - pcall(vim.treesitter.start) - - -- if syntax_on[ft] then - -- vim.bo[bufnr].syntax = "on" - -- end - end, - }) -end - -M.setup() - -return M diff --git a/nvim/.config/nvim/plugin/keymaps.lua b/nvim/.config/nvim/lua/keymaps.lua index 48fff51..3d5337e 100644 --- a/nvim/.config/nvim/plugin/keymaps.lua +++ b/nvim/.config/nvim/lua/keymaps.lua @@ -39,10 +39,6 @@ set("n", "<cr>", function() end end, { expr = true }) --- useful for indent text -set("v", ">", ">gv") -set("v", "<", "<gv") - --swap lines set("n", "<c-j>", function() if vim.opt.diff:get() then @@ -58,3 +54,16 @@ set("n", "<c-k>", function() vim.cmd [[m .-2<cr>==]] end end) + +--lsp +set("n", "grt", vim.lsp.buf.type_definition, { desc = "Go to type definition" }) +set("n", "gd", vim.lsp.buf.definition, { buffer = 0 }) +set("n", "gD", vim.lsp.buf.declaration, { buffer = 0 }) +--ui +local toggle = function(obj) + return function() + obj.enable(not obj.is_enabled()) + end +end +set("n", "<leader>uh", toggle(vim.lsp.inlay_hint), { desc = "Toggle inlay hints" }) +set("n", "<leader>ud", toggle(vim.diagnostic), { desc = "Toggle inlay hints" }) diff --git a/nvim/.config/nvim/lua/lsp.lua b/nvim/.config/nvim/lua/lsp.lua new file mode 100644 index 0000000..bbe1a8f --- /dev/null +++ b/nvim/.config/nvim/lua/lsp.lua @@ -0,0 +1,13 @@ +vim.lsp.config('*', { root_makers = { '.git' } }) + +vim.lsp.enable({ 'clangd', 'lua_ls' }) + +--Probably I dont need this :\ +-- vim.api.nvim_create_autocmd('LspAttach', { +-- callback = function(ev) +-- local client = vim.lsp.get_client_by_id(ev.data.client_id) +-- if client:supports_method('textDocument/completion') then +-- vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true }) +-- end +-- end, +-- }) diff --git a/nvim/.config/nvim/plugin/netrw.lua b/nvim/.config/nvim/lua/netrw.lua index e69de29..e69de29 100644 --- a/nvim/.config/nvim/plugin/netrw.lua +++ b/nvim/.config/nvim/lua/netrw.lua diff --git a/nvim/.config/nvim/lua/options.lua b/nvim/.config/nvim/lua/options.lua new file mode 100644 index 0000000..087b599 --- /dev/null +++ b/nvim/.config/nvim/lua/options.lua @@ -0,0 +1,41 @@ +vim.opt.number = true +vim.opt.relativenumber = true + +vim.opt.mouse = "a" + +vim.opt.clipboard = "unnamedplus" -- Sync clipboard between OS and Neovim. + +vim.opt.breakindent = true -- Enable break indent + +vim.opt.undofile = true -- Save undo history + +vim.opt.ignorecase = true -- Case-insensitive searching UNLESS \C or one or more capital letters in the search term +vim.opt.smartcase = true + +vim.opt.signcolumn = "yes" -- Keep signcolumn on by default + +vim.opt.updatetime = 250 -- Decrease update time + +vim.opt.timeoutlen = 300 -- Decrease mapped sequence wait time + +vim.opt.splitright = true -- Configure how new splits should be opened +vim.opt.splitbelow = true + +vim.opt.list = true -- Sets how neovim will display certain whitespace characters in the editor. +vim.opt.listchars = { tab = "» ", trail = "·", nbsp = "␣" } + +-- vim.opt.inccommand = "split" -- Preview substitutions live + +vim.opt.cursorline = true -- Show which line your cursor is on + +vim.opt.scrolloff = 10 -- Minimal number of screen lines to keep above and below the cursor. +vim.opt.sidescrolloff = 5 + +vim.opt.hlsearch = true -- Set highlight on search +vim.opt.incsearch = true + +vim.opt.background = "dark" + +vim.opt.laststatus = 3 + +vim.diagnostic.config({ virtual_text = true, virtual_line = false }) diff --git a/nvim/.config/nvim/lua/plugins/autopairs.lua b/nvim/.config/nvim/lua/plugins/autopairs.lua new file mode 100644 index 0000000..b97128c --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/autopairs.lua @@ -0,0 +1,13 @@ +return { + "windwp/nvim-autopairs", + event = "InsertEnter", + -- Optional dependency + dependencies = { "hrsh7th/nvim-cmp" }, + config = function() + require("nvim-autopairs").setup {} + -- Automatically add `(` after selecting a function or method + local cmp_autopairs = require "nvim-autopairs.completion.cmp" + local cmp = require "cmp" + cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done()) + end, +} diff --git a/nvim/.config/nvim/lua/custom/plugins/bqf.lua b/nvim/.config/nvim/lua/plugins/bqf.lua index 92630a8..92630a8 100644 --- a/nvim/.config/nvim/lua/custom/plugins/bqf.lua +++ b/nvim/.config/nvim/lua/plugins/bqf.lua diff --git a/nvim/.config/nvim/lua/custom/plugins/celluar.lua b/nvim/.config/nvim/lua/plugins/celluar.lua index f90161e..f90161e 100644 --- a/nvim/.config/nvim/lua/custom/plugins/celluar.lua +++ b/nvim/.config/nvim/lua/plugins/celluar.lua diff --git a/nvim/.config/nvim/lua/plugins/cmake.lua b/nvim/.config/nvim/lua/plugins/cmake.lua new file mode 100644 index 0000000..4e8c610 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/cmake.lua @@ -0,0 +1,18 @@ +return {} +-- if vim.loop.os_uname().sysname ~= "Darwin" then +-- return { +-- "daniilrozanov/cmake.nvim", +-- lazy = false, +-- config = function() +-- require "custom.cmake" +-- end, +-- } +-- else +-- return { +-- dir = "~/repositories/cmake.nvim", +-- lazy = false, +-- config = function() +-- require "custom.cmake" +-- end, +-- } +-- end diff --git a/nvim/.config/nvim/lua/plugins/cmp.lua b/nvim/.config/nvim/lua/plugins/cmp.lua new file mode 100644 index 0000000..6c4c89e --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/cmp.lua @@ -0,0 +1,88 @@ +return { + "hrsh7th/nvim-cmp", + event = "InsertEnter", + priority = 100, + dependencies = { + "onsails/lspkind.nvim", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-path", + "hrsh7th/cmp-buffer", + { + "L3MON4D3/LuaSnip", + build = "make install_jsregexp", + dependencies = { "rafamadriz/friendly-snippets" }, + }, + "saadparwaiz1/cmp_luasnip", + }, + config = function() + vim.opt.completeopt = { "menu", "menuone", "noselect" } + vim.opt.shortmess:append "c" + + local lspkind = require "lspkind" + lspkind.init {} + + local luasnip = require "luasnip" + luasnip.config.setup {} + require("luasnip.loaders.from_vscode").lazy_load() + + local cmp = require "cmp" + + cmp.setup { + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + completion = { completeopt = "menu,menuone,noinsert" }, + mapping = cmp.mapping.preset.insert { + -- ["<C-n>"] = cmp.mapping.select_next_item { behavior = cmp.SelectBehavior.Insert }, + -- ["<C-p>"] = cmp.mapping.select_prev_item { behavior = cmp.SelectBehavior.Insert }, + ["<C-y>"] = cmp.mapping( + cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Insert, + select = true, + }, + { "i", "c" } + ), + ["<C-b>"] = cmp.mapping.scroll_docs(-4), + ["<C-f>"] = cmp.mapping.scroll_docs(4), + -- ["<C-y>"] = cmp.mapping.confirm { select = true }, + -- -- Will move you to the right of each of the snippet's expansion locations. + ["<C-l>"] = cmp.mapping(function() + if luasnip.expand_or_locally_jumpable() then + luasnip.expand_or_jump() + end + end, { "i", "s" }), + -- Will move you to the left of each of the snippet's expansion locations. + ["<C-h>"] = cmp.mapping(function() + if luasnip.locally_jumpable(-1) then + luasnip.jump(-1) + end + end, { "i", "s" }), + }, + sources = { + { name = "nvim_lsp" }, + { name = "luasnip" }, + { name = "path" }, + { name = "buffer" }, + }, + } + + -- Setup up vim-dadbod + cmp.setup.filetype({ "sql" }, { + sources = { + { name = "vim-dadbod-completion" }, + { name = "buffer" }, + }, + }) + + luasnip.config.set_config { + history = false, + updateevents = "TextChanged,TextChangedI", + } + + for _, ft_path in ipairs(vim.api.nvim_get_runtime_file("lua/custom/snippets/*.lua", true)) do + loadfile(ft_path)() + end + end, +} diff --git a/nvim/.config/nvim/lua/custom/plugins/comment.lua b/nvim/.config/nvim/lua/plugins/comment.lua index 46f5032..46f5032 100644 --- a/nvim/.config/nvim/lua/custom/plugins/comment.lua +++ b/nvim/.config/nvim/lua/plugins/comment.lua diff --git a/nvim/.config/nvim/lua/plugins/conform.lua b/nvim/.config/nvim/lua/plugins/conform.lua new file mode 100644 index 0000000..5220a84 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/conform.lua @@ -0,0 +1,56 @@ +vim.api.nvim_create_autocmd("BufWritePre", { + callback = function(args) + require("conform").format { + bufnr = args.buf, + lsp_fallback = true, + quiet = true, + } + end, +}) + +return { + "stevearc/conform.nvim", + opts = { + formatters_by_ft = { + lua = { "stylua" }, + cpp = { "clang-format" }, + c = { "clang-format" }, + }, + } +} +-- { +-- config = function() +-- vim.api.nvim_create_autocmd("LspAttach", { +-- callback = function(args) +-- local bufnr = args.buf +-- local client = assert(vim.lsp.get_client_by_id(args.data.client_id), "must have valid client") +-- local builtin = require "telescope.builtin" +-- +-- vim.opt_local.omnifunc = "v:lua.vim.lsp.omnifunc" +-- vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = 0 }) +-- vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { buffer = 0 }) +-- vim.keymap.set("n", "gT", vim.lsp.buf.type_definition, { buffer = 0 }) +-- vim.keymap.set("n", "<leader>ls", builtin.lsp_document_symbols, { desc = "[D]ocument [S]ymbols" }) +-- vim.keymap.set("n", "<leader>lw", builtin.lsp_dynamic_workspace_symbols, { desc = "[W]orkspace Symbols" }) +-- -- nmap("gd", builtin.lsp_definitions, { desc = "[G]oto [D]efinition" }) +-- -- nmap("gr", builtin.lsp_references, { desc = "[G]oto [R]eferences" }) +-- +-- local filetype = vim.bo[bufnr].filetype +-- if disable_semantic_tokens[filetype] then +-- client.server_capabilities.semanticTokensProvider = nil +-- end +-- +-- if client and client.server_capabilities.inlayHintProvider and vim.lsp.inlay_hint then +-- vim.keymap.set("n", "<leader>Th", function() +-- vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) +-- end, { desc = "[T]oggle Inlay [H]ints" }) +-- end +-- end, +-- }) +-- +-- -- Autoformatting Setup +-- require("conform").setup { +-- } +-- +-- end, +-- } diff --git a/nvim/.config/nvim/lua/custom/plugins/dadbod.lua b/nvim/.config/nvim/lua/plugins/dadbod.lua index 8411fa5..8411fa5 100644 --- a/nvim/.config/nvim/lua/custom/plugins/dadbod.lua +++ b/nvim/.config/nvim/lua/plugins/dadbod.lua diff --git a/nvim/.config/nvim/lua/plugins/fidget.lua b/nvim/.config/nvim/lua/plugins/fidget.lua new file mode 100644 index 0000000..2d70394 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/fidget.lua @@ -0,0 +1,6 @@ +return { + "j-hui/fidget.nvim", + opts = { + -- options + }, +} diff --git a/nvim/.config/nvim/lua/plugins/gitsigns.lua b/nvim/.config/nvim/lua/plugins/gitsigns.lua new file mode 100644 index 0000000..8856fae --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/gitsigns.lua @@ -0,0 +1,65 @@ +return { + "lewis6991/gitsigns.nvim", + config = function() + local gitsigns = require "gitsigns" + + local on_attach = function(bufnr) + 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 + vim.cmd.normal { "]c", bang = true } + else + gitsigns.nav_hunk "next" + end + end) + + map("n", "[c", function() + if vim.wo.diff then + vim.cmd.normal { "[c", bang = true } + else + gitsigns.nav_hunk "prev" + end + end) + + -- Actions + map("n", "<leader>gs", gitsigns.stage_hunk, { desc = "Stage hunk" }) + map("n", "<leader>gr", gitsigns.reset_hunk, { desc = "Reset hunk" }) + map("v", "<leader>gs", function() + gitsigns.stage_hunk { vim.fn.line ".", vim.fn.line "v" } + end, { desc = "Stage hunk" }) + map("v", "<leader>gr", function() + gitsigns.reset_hunk { vim.fn.line ".", vim.fn.line "v" } + end, { desc = "Reset hunk" }) + map("n", "<leader>gS", gitsigns.stage_buffer, { desc = "Stage buffer" }) + map("n", "<leader>gu", gitsigns.undo_stage_hunk, { desc = "Undo stage hunk" }) + map("n", "<leader>gR", gitsigns.reset_buffer, { desc = "Reset buffer" }) + map("n", "<leader>gp", gitsigns.preview_hunk, { desc = "Preview hunk" }) + map("n", "<leader>gb", function() + gitsigns.blame_line { full = true } + end, { desc = "Blame line" }) + map("n", "<leader>Tb", gitsigns.toggle_current_line_blame, { desc = "Toggle blame line" }) + map("n", "<leader>Td", gitsigns.toggle_deleted, { desc = "Toggle deleted" }) + map("n", "<leader>gd", gitsigns.diffthis, { desc = "Diff this" }) + map("n", "<leader>gD", function() + gitsigns.diffthis "~" + end, { desc = "Diff this ~" }) + end + + gitsigns.setup { + signs = { + add = { text = "+" }, + change = { text = "~" }, + delete = { text = "_" }, + topdelete = { text = "‾" }, + changedelete = { text = "~" }, + }, + on_attach = on_attach, + } + end, +} diff --git a/nvim/.config/nvim/lua/plugins/harpoon.lua b/nvim/.config/nvim/lua/plugins/harpoon.lua new file mode 100644 index 0000000..a464808 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/harpoon.lua @@ -0,0 +1,32 @@ +return { + "ThePrimeagen/harpoon", + branch = "harpoon2", + dependencies = { "nvim-lua/plenary.nvim" }, + config = function() + local harpoon = require("harpoon") + harpoon:setup() + + vim.keymap.set("n", "<leader>a", function() + harpoon:list():add() + end, { desc = "Add buffer to harpoon" }) + + vim.keymap.set("n", "<leader><leader>", function() + harpoon.ui:toggle_quick_menu(harpoon:list()) + end, { desc = "Toggle harpoon menu" }) + + vim.keymap.set("n", "<c-n>", function() + require("harpoon"):list():next() + end, { desc = "Goto next harpooned" }) + + vim.keymap.set("n", "<c-p>", function() + require("harpoon"):list():prev() + end, { desc = "Goto prev harpooned" }) + + -- Set <space>1..<space>5 be my shortcuts to moving to the files + for _, idx in ipairs { 1, 2, 3, 4, 5 } do + vim.keymap.set("n", string.format("<leader>%d", idx), function() + harpoon:list():select(idx) + end, { desc = string.format("Goto %d harpooned", idx) }) + end + end, +} diff --git a/nvim/.config/nvim/lua/plugins/lazydev.lua b/nvim/.config/nvim/lua/plugins/lazydev.lua new file mode 100644 index 0000000..82739c2 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/lazydev.lua @@ -0,0 +1,10 @@ +return { + "folke/lazydev.nvim", + ft = "lua", -- only load on lua files + opts = { + library = { + -- Load luvit types when the `vim.uv` word is found + { path = "${3rd}/luv/library", words = { "vim%.uv" } }, + }, + }, +} diff --git a/nvim/.config/nvim/lua/plugins/leap.lua b/nvim/.config/nvim/lua/plugins/leap.lua new file mode 100644 index 0000000..649f96e --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/leap.lua @@ -0,0 +1,9 @@ +return { + "ggandor/leap.nvim", + lazy = false, --TODO: lazy + config = function() + vim.keymap.set("n", "s", "<Plug>(leap)", { desc = "Leap" }) + vim.keymap.set("n", "S", "<Plug>(leap-from-window)", { desc = "Leap other window" }) + require("leap").setup { safe_labels = {} } + end, +} diff --git a/nvim/.config/nvim/lua/custom/plugins/lualine.lua b/nvim/.config/nvim/lua/plugins/lualine.lua index 661f7fc..661f7fc 100644 --- a/nvim/.config/nvim/lua/custom/plugins/lualine.lua +++ b/nvim/.config/nvim/lua/plugins/lualine.lua diff --git a/nvim/.config/nvim/lua/custom/plugins/mini.lua b/nvim/.config/nvim/lua/plugins/mini.lua index 654222e..654222e 100644 --- a/nvim/.config/nvim/lua/custom/plugins/mini.lua +++ b/nvim/.config/nvim/lua/plugins/mini.lua diff --git a/nvim/.config/nvim/lua/custom/plugins/neorg.lua b/nvim/.config/nvim/lua/plugins/neorg.lua index 455b80d..455b80d 100644 --- a/nvim/.config/nvim/lua/custom/plugins/neorg.lua +++ b/nvim/.config/nvim/lua/plugins/neorg.lua diff --git a/nvim/.config/nvim/lua/custom/plugins/sort.lua b/nvim/.config/nvim/lua/plugins/sort.lua index f5483e6..f5483e6 100644 --- a/nvim/.config/nvim/lua/custom/plugins/sort.lua +++ b/nvim/.config/nvim/lua/plugins/sort.lua diff --git a/nvim/.config/nvim/lua/plugins/substitude.lua b/nvim/.config/nvim/lua/plugins/substitude.lua new file mode 100644 index 0000000..4e2c02f --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/substitude.lua @@ -0,0 +1,11 @@ +return { + "gbprod/substitute.nvim", + config = function() + require("substitute").setup {} + + vim.keymap.set("n", ",", require("substitute").operator, { noremap = true }) + vim.keymap.set("n", ",,", require("substitute").line, { noremap = true }) + -- vim.keymap.set("n", "", require("substitute").eol, { noremap = true }) + vim.keymap.set("x", ",", require("substitute").visual, { noremap = true }) + end, +} diff --git a/nvim/.config/nvim/lua/custom/plugins/surround.lua b/nvim/.config/nvim/lua/plugins/surround.lua index e3c3c6c..e3c3c6c 100644 --- a/nvim/.config/nvim/lua/custom/plugins/surround.lua +++ b/nvim/.config/nvim/lua/plugins/surround.lua diff --git a/nvim/.config/nvim/lua/plugins/telescope.lua b/nvim/.config/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..a8d6484 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/telescope.lua @@ -0,0 +1,94 @@ +return { + "nvim-telescope/telescope.nvim", + event = "VimEnter", + branch = "0.1.x", + dependencies = { + "nvim-lua/plenary.nvim", + { "nvim-telescope/telescope-fzf-native.nvim", build = "make" }, + { "nvim-telescope/telescope-smart-history.nvim" }, + { "nvim-telescope/telescope-ui-select.nvim" }, + { "nvim-tree/nvim-web-devicons" }, + }, + config = function() + require("telescope").setup { + extensions = { + fzf = {}, + wrap_results = true, + history = { + -- path = vim.fs.joinpath(data, "telescope_history.sqlite3"), + limit = 100, + }, + ["ui-select"] = { + require("telescope.themes").get_dropdown(), + }, + }, + defaults = { + -- configure to use ripgrep + vimgrep_arguments = { + "rg", + "--follow", -- Follow symbolic links + "--hidden", -- Search for hidden files + "--no-heading", -- Don't group matches by each file + "--with-filename", -- Print the file path with the matched lines + "--line-number", -- Show line numbers + "--column", -- Show column numbers + "--smart-case", -- Smart case search + + -- Exclude some patterns from search + "--glob=!**/.git/*", + "--glob=!**/.idea/*", + "--glob=!**/.vscode/*", + "--glob=!**/build/*", + "--glob=!**/dist/*", + "--glob=!**/yarn.lock", + "--glob=!**/package-lock.json", + }, + }, + pickers = { + find_files = { + hidden = true, + -- needed to exclude some files & dirs from general search + -- when not included or specified in .gitignore + find_command = { + "rg", + "--files", + "--hidden", + "--glob=!**/.git/*", + "--glob=!**/.idea/*", + "--glob=!**/.vscode/*", + "--glob=!**/build/*", + "--glob=!**/dist/*", + "--glob=!**/yarn.lock", + "--glob=!**/package-lock.json", + }, + }, + }, + } + + pcall(require("telescope").load_extension, "fzf") + pcall(require("telescope").load_extension, "smart_history") + pcall(require("telescope").load_extension, "rest") + pcall(require("telescope").load_extension, "ui-select") + + local builtin = require "telescope.builtin" + + vim.keymap.set("n", "<leader>fh", builtin.help_tags, { desc = "Search [H]elp" }) + vim.keymap.set("n", "<leader>fk", builtin.keymaps, { desc = "Search [K]eymaps" }) + vim.keymap.set("n", "<leader>ff", builtin.find_files, { desc = "Search [F]iles" }) + vim.keymap.set("n", "<leader>fs", builtin.builtin, { desc = "Search [S]elect Telescope" }) + vim.keymap.set("n", "<leader>fw", builtin.grep_string, { desc = "Search current [W]ord" }) + vim.keymap.set("n", "<leader>fg", builtin.live_grep, { desc = "Search by [G]rep" }) + vim.keymap.set("n", "<leader>fd", builtin.diagnostics, { desc = "Search [D]iagnostics" }) + vim.keymap.set("n", "<leader>fr", builtin.resume, { desc = "Search [R]esume" }) + vim.keymap.set("n", "<leader>f.", builtin.oldfiles, { desc = 'Search Recent Files ("." for repeat)' }) + vim.keymap.set("n", "<leader>fb", builtin.buffers, { desc = "[ ] Find existing buffers" }) + vim.keymap.set("n", "<leader>fn", function() + require("telescope.builtin").find_files { cwd = vim.fn.stdpath "config" } + end, { desc = "Search [N]eovim files" }) + + vim.keymap.set("n", "<leader>fa", function() + ---@diagnostic disable-next-line: param-type-mismatch + builtin.find_files { cwd = vim.fs.joinpath(vim.fn.stdpath "data", "lazy") } + end) + end, +} diff --git a/nvim/.config/nvim/lua/custom/plugins/textcase.lua b/nvim/.config/nvim/lua/plugins/textcase.lua index e335b38..e335b38 100644 --- a/nvim/.config/nvim/lua/custom/plugins/textcase.lua +++ b/nvim/.config/nvim/lua/plugins/textcase.lua diff --git a/nvim/.config/nvim/lua/custom/plugins/themes.lua b/nvim/.config/nvim/lua/plugins/themes.lua index 0f9ca03..0f9ca03 100644 --- a/nvim/.config/nvim/lua/custom/plugins/themes.lua +++ b/nvim/.config/nvim/lua/plugins/themes.lua diff --git a/nvim/.config/nvim/lua/custom/plugins/todo-comments.lua b/nvim/.config/nvim/lua/plugins/todo-comments.lua index 4b46f89..4b46f89 100644 --- a/nvim/.config/nvim/lua/custom/plugins/todo-comments.lua +++ b/nvim/.config/nvim/lua/plugins/todo-comments.lua diff --git a/nvim/.config/nvim/lua/plugins/toggleterm.lua b/nvim/.config/nvim/lua/plugins/toggleterm.lua new file mode 100644 index 0000000..7f20237 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/toggleterm.lua @@ -0,0 +1,47 @@ +return { + "akinsho/toggleterm.nvim", + version = "*", + config = function() + require("toggleterm").setup { + size = function(term) + if term.direction == "horizontal" then + return 15 + elseif term.direction == "vertical" then + return vim.o.columns * 0.33 + end + end, + } + + local Terminal = require("toggleterm.terminal").Terminal + local on_open = function(_) + vim.cmd "startinsert!" + -- vim.keymap.set("n", "q", "<cmd>close<CR>", { noremap = true, silent = true, buffer = term.bufnr }) + end + local on_close = function(_) + vim.cmd "startinsert!" + end + if vim.fn.executable "lazygit" then + local lazygit = Terminal:new { + cmd = "lazygit", + dir = "git_dir", + direction = "float", + on_open = on_open, + on_close = on_close, + count = 999, + } + vim.keymap.set("n", "<leader>gg", function() + lazygit:toggle() + end, { desc = "ToggleTerm LazyGit" }) + end + + vim.keymap.set("n", "<leader>tf", function() + Terminal:new({ count = vim.v.count1, on_open = on_open, on_close = on_close }):toggle(nil, "float") + end) + vim.keymap.set("n", "<leader>tv", function() + Terminal:new({ count = vim.v.count1, on_open = on_open, on_close = on_close }):toggle(nil, "vertical") + end) + vim.keymap.set("n", "<leader>th", function() + Terminal:new({ count = vim.v.count1, on_open = on_open, on_close = on_close }):toggle(nil, "horizontal") + end) + end, +} diff --git a/nvim/.config/nvim/lua/plugins/treesitter.lua b/nvim/.config/nvim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..9e01e7d --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/treesitter.lua @@ -0,0 +1,48 @@ +return { + "nvim-treesitter/nvim-treesitter", + build = ":TSUpdate", + config = function() + local group = vim.api.nvim_create_augroup("custom-treesitter", { clear = true }) + + require("nvim-treesitter.configs").setup { + ensure_installed = { + "bash", + "c", + "diff", + "html", + "lua", + "luadoc", + "json", + "markdown", + "vim", + "vimdoc", + "cpp", + "cmake", + "query", + "http", + "proto", + "xml", + }, + highlight = { enable = true }, + indent = { enable = true }, + } + + local syntax_on = { + -- elixir = true, + -- php = true, + } + + vim.api.nvim_create_autocmd("FileType", { + group = group, + callback = function(args) + local bufnr = args.buf + local ft = vim.bo[bufnr].filetype + pcall(vim.treesitter.start) + + -- if syntax_on[ft] then + -- vim.bo[bufnr].syntax = "on" + -- end + end, + }) + end, +} diff --git a/nvim/.config/nvim/lua/custom/plugins/which-key.lua b/nvim/.config/nvim/lua/plugins/which-key.lua index 42ebe43..42ebe43 100644 --- a/nvim/.config/nvim/lua/custom/plugins/which-key.lua +++ b/nvim/.config/nvim/lua/plugins/which-key.lua diff --git a/nvim/.config/nvim/plugin/terminal.lua b/nvim/.config/nvim/lua/terminal.lua index 0249feb..2327a34 100644 --- a/nvim/.config/nvim/plugin/terminal.lua +++ b/nvim/.config/nvim/lua/terminal.lua @@ -11,4 +11,5 @@ vim.api.nvim_create_autocmd("TermOpen", { }) -- Easily hit escape in terminal mode. -vim.keymap.set("t", "<esc><esc>", "<c-\\><c-n>") +-- vim.keymap.set("t", "<esc><esc>", "<c-\\><c-n>") +vim.keymap.set("t", "<m-q>", "<c-\\><c-n><cmd>quit<cr>") diff --git a/nvim/.config/nvim/plugin/options.lua b/nvim/.config/nvim/plugin/options.lua deleted file mode 100644 index cc3016c..0000000 --- a/nvim/.config/nvim/plugin/options.lua +++ /dev/null @@ -1,41 +0,0 @@ -local opt = vim.opt - -opt.number = true -opt.relativenumber = true - -opt.mouse = "a" - -opt.clipboard = "unnamedplus" -- Sync clipboard between OS and Neovim. - -opt.breakindent = true -- Enable break indent - -opt.undofile = true -- Save undo history - -opt.ignorecase = true -- Case-insensitive searching UNLESS \C or one or more capital letters in the search term -opt.smartcase = true - -opt.signcolumn = "yes" -- Keep signcolumn on by default - -opt.updatetime = 250 -- Decrease update time - -opt.timeoutlen = 300 -- Decrease mapped sequence wait time - -opt.splitright = true -- Configure how new splits should be opened -opt.splitbelow = true - -opt.list = true -- Sets how neovim will display certain whitespace characters in the editor. -opt.listchars = { tab = "» ", trail = "·", nbsp = "␣" } - --- opt.inccommand = "split" -- Preview substitutions live - -opt.cursorline = true -- Show which line your cursor is on - -opt.scrolloff = 10 -- Minimal number of screen lines to keep above and below the cursor. -opt.sidescrolloff = 5 - -opt.hlsearch = true -- Set highlight on search -opt.incsearch = true - -opt.background = "dark" - -opt.laststatus = 3 |