From cb49ba5c9adf1f813547d1b1f7cea9402d06c255 Mon Sep 17 00:00:00 2001 From: Simon Lasbrugnas Date: Sun, 26 Nov 2023 03:42:10 +0100 Subject: [PATCH] feat(lazy)!: Rewrite config with lazy.nvim --- after/plugin/base16.lua | 18 --- after/plugin/colors.lua | 6 - after/plugin/conform.lua | 3 - after/plugin/fugitive.lua | 29 ----- after/plugin/gitsigns.lua | 50 -------- after/plugin/indent-blankline.lua | 19 --- after/plugin/lualine.lua | 6 - after/plugin/mini.lua | 3 - after/plugin/neoai.lua | 90 -------------- after/plugin/nvim-tree.lua | 68 ----------- after/plugin/refactoring.lua | 11 -- after/plugin/telescope.lua | 28 ----- after/plugin/toggleterm.lua | 4 - after/plugin/treesitter.lua | 26 ---- after/plugin/trouble.lua | 9 -- after/plugin/undotree.lua | 2 - after/plugin/zenmode.lua | 28 ----- init.lua | 5 +- lazy-lock.json | 31 +++++ lua/config/autocmds.lua | 5 + lua/config/keymaps.lua | 30 +++++ lua/{default/set.lua => config/options.lua} | 15 +-- lua/core/lazy.lua | 21 ++++ lua/default/init.lua | 33 ------ lua/default/packer.lua | 111 ------------------ lua/default/remap.lua | 68 ----------- lua/plugins/coding.lua | 67 +++++++++++ lua/plugins/editor.lua | 19 +++ lua/plugins/fleet.lua | 4 + lua/plugins/git.lua | 59 ++++++++++ lua/plugins/lsp.lua | 30 +++++ .../lsp.lua => lua/plugins/lsp/config.lua | 92 ++++++--------- lua/plugins/lsp/keymaps.lua | 21 ++++ lua/plugins/telescope.lua | 30 +++++ lua/plugins/treesitter.lua | 63 ++++++++++ 35 files changed, 429 insertions(+), 675 deletions(-) delete mode 100644 after/plugin/base16.lua delete mode 100644 after/plugin/colors.lua delete mode 100644 after/plugin/conform.lua delete mode 100644 after/plugin/fugitive.lua delete mode 100644 after/plugin/gitsigns.lua delete mode 100644 after/plugin/indent-blankline.lua delete mode 100644 after/plugin/lualine.lua delete mode 100644 after/plugin/mini.lua delete mode 100644 after/plugin/neoai.lua delete mode 100644 after/plugin/nvim-tree.lua delete mode 100644 after/plugin/refactoring.lua delete mode 100644 after/plugin/telescope.lua delete mode 100644 after/plugin/toggleterm.lua delete mode 100644 after/plugin/treesitter.lua delete mode 100644 after/plugin/trouble.lua delete mode 100644 after/plugin/undotree.lua delete mode 100644 after/plugin/zenmode.lua create mode 100644 lazy-lock.json create mode 100644 lua/config/autocmds.lua create mode 100644 lua/config/keymaps.lua rename lua/{default/set.lua => config/options.lua} (71%) create mode 100644 lua/core/lazy.lua delete mode 100644 lua/default/init.lua delete mode 100644 lua/default/packer.lua delete mode 100755 lua/default/remap.lua create mode 100644 lua/plugins/coding.lua create mode 100644 lua/plugins/editor.lua create mode 100644 lua/plugins/fleet.lua create mode 100644 lua/plugins/git.lua create mode 100644 lua/plugins/lsp.lua rename after/plugin/lsp.lua => lua/plugins/lsp/config.lua (50%) create mode 100644 lua/plugins/lsp/keymaps.lua create mode 100644 lua/plugins/telescope.lua create mode 100644 lua/plugins/treesitter.lua diff --git a/after/plugin/base16.lua b/after/plugin/base16.lua deleted file mode 100644 index f06d11d..0000000 --- a/after/plugin/base16.lua +++ /dev/null @@ -1,18 +0,0 @@ --- Base 16 fleet theme (kinda) --- require('base16-colorscheme').setup({ --- base00 = '#181818', base01 = '#292929', base02 = '#292929', base03 = '#6D6D6D', --- base04 = '#535353', base05 = '#d6d6dd', base06 = '#292929', base07 = '#292929', --- base08 = '#d6d6dd', base09 = '#e5c995', base0A = '#70cdb7', base0B = '#d898d8', --- base0C = '#d898d8', base0D = '#e5c995', base0E = '#70cdb7', base0F = '#d6d6dd', --- }) - --- require('base16-colorscheme').setup() --- require('base16-colorscheme').with_config({ --- telescope = true, --- indentblankline = true, --- notify = true, --- ts_rainbow = true, --- cmp = true, --- illuminate = true, --- }) --- diff --git a/after/plugin/colors.lua b/after/plugin/colors.lua deleted file mode 100644 index 41f2f42..0000000 --- a/after/plugin/colors.lua +++ /dev/null @@ -1,6 +0,0 @@ -function ColorMyPencils(color) - color = color or "fleet" - vim.cmd.colorscheme(color) -end - -ColorMyPencils() diff --git a/after/plugin/conform.lua b/after/plugin/conform.lua deleted file mode 100644 index ed4ed1b..0000000 --- a/after/plugin/conform.lua +++ /dev/null @@ -1,3 +0,0 @@ -require("conform").setup{ - javascript = { { "prettierd", "prettier" } }, -} diff --git a/after/plugin/fugitive.lua b/after/plugin/fugitive.lua deleted file mode 100644 index 38b68ff..0000000 --- a/after/plugin/fugitive.lua +++ /dev/null @@ -1,29 +0,0 @@ -vim.keymap.set("n", "gs", vim.cmd.Git) - -local default_Fugitive = vim.api.nvim_create_augroup("default_Fugitive", {}) - -local autocmd = vim.api.nvim_create_autocmd -autocmd("BufWinEnter", { - group = default_Fugitive, - pattern = "*", - callback = function() - if vim.bo.ft ~= "fugitive" then - return - end - - local bufnr = vim.api.nvim_get_current_buf() - local opts = {buffer = bufnr, remap = false} - vim.keymap.set("n", "gp", function() - vim.cmd.Git('push') - end, opts) - - -- rebase always - vim.keymap.set("n", "gP", function() - vim.cmd.Git({'pull', '--rebase'}) - end, opts) - - -- NOTE: It allows me to easily set the branch i am pushing and any tracking - -- needed if i did not set the branch up correctly - vim.keymap.set("n", "gt", ":Git push -u origin ", opts); - end, -}) diff --git a/after/plugin/gitsigns.lua b/after/plugin/gitsigns.lua deleted file mode 100644 index 7785670..0000000 --- a/after/plugin/gitsigns.lua +++ /dev/null @@ -1,50 +0,0 @@ -require('gitsigns').setup{ - signs = { - add = { text = '▏' }, - change = { text = '▏' }, - delete = { text = '_' }, - topdelete = { text = '‾' }, - changedelete = { text = '~' }, - untracked = { text = '┆' }, - }, - 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) - map('n', 'hr', gs.reset_hunk) - map('v', 'hs', function() gs.stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end) - map('v', 'hr', function() gs.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end) - map('n', 'hS', gs.stage_buffer) - map('n', 'hu', gs.undo_stage_hunk) - map('n', 'hR', gs.reset_buffer) - map('n', 'hp', gs.preview_hunk) - map('n', 'hb', function() gs.blame_line{full=true} end) - map('n', 'tb', gs.toggle_current_line_blame) - map('n', 'hd', gs.diffthis) - map('n', 'hD', function() gs.diffthis('~') end) - map('n', 'td', gs.toggle_deleted) - - -- Text object - map({'o', 'x'}, 'ih', ':Gitsigns select_hunk') - end -} diff --git a/after/plugin/indent-blankline.lua b/after/plugin/indent-blankline.lua deleted file mode 100644 index e58bb8a..0000000 --- a/after/plugin/indent-blankline.lua +++ /dev/null @@ -1,19 +0,0 @@ -require "ibl".setup { - scope = { - enabled = true, - highlight = "Label", - show_start = false, - show_end = false, - include = { - node_type = { - lua = { "table_constructor" }, - }, - }, - }, - indent = { - char = "▏", - }, - exclude = { - buftypes = { "terminal", "nofile" }, - }, -} diff --git a/after/plugin/lualine.lua b/after/plugin/lualine.lua deleted file mode 100644 index 25a664e..0000000 --- a/after/plugin/lualine.lua +++ /dev/null @@ -1,6 +0,0 @@ --- require('lualine').setup{ --- options = { --- theme = 'base16', --- icons_enabled = true, --- }, --- } diff --git a/after/plugin/mini.lua b/after/plugin/mini.lua deleted file mode 100644 index ad36e8c..0000000 --- a/after/plugin/mini.lua +++ /dev/null @@ -1,3 +0,0 @@ -require('mini.comment').setup() -require('mini.surround').setup() -require('mini.clue').setup() diff --git a/after/plugin/neoai.lua b/after/plugin/neoai.lua deleted file mode 100644 index f68c002..0000000 --- a/after/plugin/neoai.lua +++ /dev/null @@ -1,90 +0,0 @@ -require('neoai').setup({ - models = { - { - name = "openai", - model = "gpt-3.5-turbo-1106", -- "gpt-4-1106-preview", - params = nil, - }, - }, - open_ai = { - api_key = { - get = function() - local key = vim.fn.system("pass show openai/api_key") - key = string.gsub(key, "\n", "") - return key - end, - }, - }, - prompts = { - context_prompt = function(context) - return context - end, - }, - shortcuts = { - { - name = "textify", - key = "as", - desc = "fix text with AI", - use_context = true, - prompt = [[ - Please rewrite the text to make it more readable, clear, - concise, and fix any grammatical, punctuation, or spelling - errors - ]], - modes = { "v" }, - strip_function = nil, - }, - { - name = "gitcommit", - key = "ag", - desc = "generate git commit message", - use_context = false, - prompt = function() - return [[ - With specifications from conventionalcommits.org, - the commit message should be formatted as follows: - [optional scope]: - - [optional body] - - [optional footer(s)] - Here are some examples of commit messages: - ========================================= - feat: holiday-themed devcard - - Our DevCard now features a holiday theme for both Halloween and Christmas! - This also includes a link pointing to Chris' article on how to embed it on your GitHub Profile. - - DD-267 #done - ========================================= - build(extension): version 3.8.0 - ========================================= - chore!: drop Node 6 from testing matrix - - BREAKING CHANGE: dropping Node 6 which hits end of life in April - ========================================= - ci: use pulumi common new kubernetes helpers - ========================================= - Using the following git diff in order to generate - a consise and clear git commit message: - ]] .. vim.fn.system("git diff --cached --ignore-space-at-eol") - end, - modes = { "n" }, - strip_function = nil, - }, - }, -}) - --- Keybindings -vim.keymap.set("n", "at", "NeoAIToggle", - {silent = true, noremap = true} -) -vim.keymap.set("n", "ai", ":NeoAIInject YOUR MAY ONLY PROVIDE ONLY THE CODE SNIPPET AND WITHOUT THE CODE BLOCK", - {silent = true, noremap = true} -) -vim.keymap.set("v", "ac", "'<,'>NeoAIContextiPlease explain shortly", - {silent = true, noremap = true} -) -vim.keymap.set("n", "ap", "put clet @c=''", - {silent = true, noremap = true} -) diff --git a/after/plugin/nvim-tree.lua b/after/plugin/nvim-tree.lua deleted file mode 100644 index e2a141b..0000000 --- a/after/plugin/nvim-tree.lua +++ /dev/null @@ -1,68 +0,0 @@ -require("nvim-tree").setup({ - sort_by = "case_sensitive", - view = { width = 40, }, - filters = { - git_ignored = false, - dotfiles = false, - }, - actions = { - open_file = { - quit_on_open = true, - }, - }, - renderer = { - group_empty = true, - icons = { - web_devicons = { - file = { - enable = true, - color = true, - }, - folder = { - enable = false, - color = true, - }, - }, - git_placement = "before", - modified_placement = "after", - diagnostics_placement = "signcolumn", - bookmarks_placement = "signcolumn", - padding = " ", - symlink_arrow = " ➛ ", - show = { - file = true, - folder = true, - folder_arrow = true, - git = true, - modified = true, - diagnostics = true, - bookmarks = true, - }, - glyphs = { - default = "", - symlink = "", - bookmark = "󰆤", - modified = "●", - folder = { - arrow_closed = "", - arrow_open = "", - default = "", - open = "", - empty = "", - empty_open = "", - symlink = "", - symlink_open = "", - }, - git = { - unstaged = "✗", - staged = "✓", - unmerged = "", - renamed = "➜", - untracked = "★", - deleted = "", - ignored = "◌", - }, - }, - }, - }, -}) diff --git a/after/plugin/refactoring.lua b/after/plugin/refactoring.lua deleted file mode 100644 index 7cc7adc..0000000 --- a/after/plugin/refactoring.lua +++ /dev/null @@ -1,11 +0,0 @@ -require('refactoring').setup() - -vim.keymap.set("x", "re", ":Refactor extract ") -vim.keymap.set("x", "rf", ":Refactor extract_to_file ") - -vim.keymap.set("x", "rv", ":Refactor extract_var ") - -vim.keymap.set({ "n", "x" }, "ri", ":Refactor inline_var") - -vim.keymap.set("n", "rb", ":Refactor extract_block") -vim.keymap.set("n", "rbf", ":Refactor extract_block_to_file") diff --git a/after/plugin/telescope.lua b/after/plugin/telescope.lua deleted file mode 100644 index 74189f1..0000000 --- a/after/plugin/telescope.lua +++ /dev/null @@ -1,28 +0,0 @@ -local builtin = require('telescope.builtin') - --- Function to check if the current directory is a git directory -local function is_git_directory() - return vim.fn.system('git rev-parse --is-inside-work-tree') == 1 -end - --- Custom function that calls git_files if in a git directory, otherwise find_files -local function custom_git_files() - if is_git_directory() then - builtin.git_files() - else - builtin.find_files() - end -end - --- Keybindings -vim.keymap.set('n', 'pf', function() - builtin.find_files({ no_ignore = true, hidden = true }) -end) -vim.keymap.set('n', '', custom_git_files, {}) -vim.keymap.set('n', 'ps', function() builtin.live_grep() end) -vim.keymap.set('n', 'vh', builtin.help_tags, {}) -vim.keymap.set('n', 'fa', function() builtin.find_files({ follow = true, no_ignore = true, hidden = true }) end) -vim.keymap.set('n', 'fb', function() builtin.buffers() end) -vim.keymap.set('n', 'fc', function() builtin.git_commits() end) -vim.keymap.set('n', 'gt', function() builtin.git_status() end) -vim.keymap.set('n', 'gg', function() builtin.colorscheme({ enable_preview = true }) end) diff --git a/after/plugin/toggleterm.lua b/after/plugin/toggleterm.lua deleted file mode 100644 index 4f95110..0000000 --- a/after/plugin/toggleterm.lua +++ /dev/null @@ -1,4 +0,0 @@ -require("toggleterm").setup() - --- floating terminal -vim.keymap.set("n", "\\", "ToggleTerm direction=float") diff --git a/after/plugin/treesitter.lua b/after/plugin/treesitter.lua deleted file mode 100644 index 4e5f70b..0000000 --- a/after/plugin/treesitter.lua +++ /dev/null @@ -1,26 +0,0 @@ -require'nvim-treesitter.configs'.setup { - indent = { - enable = true - }, - -- A list of parser names, or "all" - ensure_installed = { "vimdoc", "javascript", "typescript", "c", "lua", "rust" }, - - -- Install parsers synchronously (only applied to `ensure_installed`) - sync_install = false, - - -- Automatically install missing parsers when entering buffer - -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally - auto_install = true, - - highlight = { - -- `false` will disable the whole extension - enable = true, - - -- 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 = { "php", "twig" } - }, -} - diff --git a/after/plugin/trouble.lua b/after/plugin/trouble.lua deleted file mode 100644 index 740ca8f..0000000 --- a/after/plugin/trouble.lua +++ /dev/null @@ -1,9 +0,0 @@ -vim.keymap.set("n", "xq", "TroubleToggle quickfix", - {silent = true, noremap = true} -) -vim.keymap.set("n", "xd", "TroubleToggle document_diagnostics", - {silent = true, noremap = true} -) -vim.keymap.set("n", "xt", "TroubleToggle telescope", - {silent = true, noremap = true} -) diff --git a/after/plugin/undotree.lua b/after/plugin/undotree.lua deleted file mode 100644 index 97bb7ab..0000000 --- a/after/plugin/undotree.lua +++ /dev/null @@ -1,2 +0,0 @@ -vim.keymap.set("n", "u", vim.cmd.UndotreeToggle) - diff --git a/after/plugin/zenmode.lua b/after/plugin/zenmode.lua deleted file mode 100644 index b699f3e..0000000 --- a/after/plugin/zenmode.lua +++ /dev/null @@ -1,28 +0,0 @@ - -vim.keymap.set("n", "zz", function() - require("zen-mode").setup { - window = { - width = 90, - options = { } - }, - } - require("zen-mode").toggle() - vim.wo.wrap = false - vim.wo.number = true - vim.wo.rnu = true -end) - - -vim.keymap.set("n", "zZ", function() - require("zen-mode").setup { - window = { - width = 80, - options = { } - }, - } - require("zen-mode").toggle() - vim.wo.wrap = false - vim.wo.number = false - vim.wo.rnu = false - vim.opt.colorcolumn = "0" -end) diff --git a/init.lua b/init.lua index 2229d79..b7dae8a 100644 --- a/init.lua +++ b/init.lua @@ -1 +1,4 @@ -require("default") +require("config.options") +require("config.keymaps") +require("config.autocmds") +require("core.lazy") diff --git a/lazy-lock.json b/lazy-lock.json new file mode 100644 index 0000000..6e032ef --- /dev/null +++ b/lazy-lock.json @@ -0,0 +1,31 @@ +{ + "Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" }, + "LuaSnip": { "branch": "master", "commit": "df58ee1664cfda71479cd2bbd56114f56599eba6" }, + "cellular-automaton.nvim": { "branch": "main", "commit": "b7d056dab963b5d3f2c560d92937cb51db61cb5b" }, + "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, + "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, + "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, + "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, + "copilot.vim": { "branch": "release", "commit": "2c31989063b145830d5f0bea8ab529d2aef2427b" }, + "fleet-theme-nvim": { "branch": "master", "commit": "3d2dfd88583a4fa2c73d8244229490e6d021ceb2" }, + "gitsigns.nvim": { "branch": "main", "commit": "5fc573f2d2a49aec74dd6dc977e8b137429d1897" }, + "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" }, + "lsp-zero.nvim": { "branch": "v3.x", "commit": "8a9ee4e11a3e23101d1d1d11aaac3159ad925cc9" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "a5476087db0a20c05bd1163e1cd4a29b795e73a7" }, + "mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" }, + "neodev.nvim": { "branch": "main", "commit": "f972d7e6cd21b691199565cfe3e6487e774a4e8f" }, + "nvim-cmp": { "branch": "main", "commit": "0b751f6beef40fd47375eaf53d3057e0bfa317e4" }, + "nvim-lspconfig": { "branch": "master", "commit": "553c4e0e667167640c5398573f6f3a488ff8047a" }, + "nvim-treesitter": { "branch": "master", "commit": "d8a71826a20dfc9ed3d8a43e28a00611a302b456" }, + "nvim-treesitter-context": { "branch": "master", "commit": "bf4d15ee4e96ff5201f16a4ed14443670662eb90" }, + "nvim-ts-autotag": { "branch": "main", "commit": "6be1192965df35f94b8ea6d323354f7dc7a557e4" }, + "nvim-web-devicons": { "branch": "master", "commit": "cdbcca210cf3655aa9b31ebf2422763ecd85ee5c" }, + "plenary.nvim": { "branch": "master", "commit": "366b0837486f60ae0e7550c15de8ff66d057c4cd" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" }, + "telescope.nvim": { "branch": "master", "commit": "18774ec7929c8a8003a91e9e1f69f6c32258bbfe" }, + "vim-fetch": { "branch": "master", "commit": "bbb75c3172f766d1a62832df0ec7674c69a560ad" }, + "vim-fugitive": { "branch": "master", "commit": "46eaf8918b347906789df296143117774e827616" }, + "vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" }, + "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" } +} \ No newline at end of file diff --git a/lua/config/autocmds.lua b/lua/config/autocmds.lua new file mode 100644 index 0000000..5d4ab99 --- /dev/null +++ b/lua/config/autocmds.lua @@ -0,0 +1,5 @@ +vim.api.nvim_create_autocmd({"BufWritePre"}, { + group = vim.api.nvim_create_augroup("Default", {}), + pattern = "*", + command = [[%s/\s\+$//e]], +}) diff --git a/lua/config/keymaps.lua b/lua/config/keymaps.lua new file mode 100644 index 0000000..7965beb --- /dev/null +++ b/lua/config/keymaps.lua @@ -0,0 +1,30 @@ +vim.g.mapleader = " " + +vim.keymap.set("n", "e", ":Ex") +vim.keymap.set("i", "", "") + +-- Keep things centered +vim.keymap.set("n", "n", "nzz") +vim.keymap.set("n", "N", "Nzz") +vim.keymap.set("n", "", "zz") +vim.keymap.set("n", "", "zz") +vim.keymap.set("n", "", "cnextzz") +vim.keymap.set("n", "", "cprevzz") + +-- Copy to system clipboard +vim.keymap.set({"n", "v"}, "y", [["+y]]) + +-- Escape terminal mode +vim.keymap.set("t", "", "") + +vim.keymap.set("n", "bd", "bd") + +-- Thanks to Mr. Primeagen +vim.keymap.set({"n", "v"}, "", "silent !tmux neww tmux-sessionizer") +vim.keymap.set("n", "s", [[:%s/\<\>//gI]]) +vim.keymap.set("v", "J", ":m '>+1gv=gv") +vim.keymap.set("v", "K", ":m '<-2gv=gv") + +-- Typing too fast... +vim.keymap.set("n", "q:", ":q") + diff --git a/lua/default/set.lua b/lua/config/options.lua similarity index 71% rename from lua/default/set.lua rename to lua/config/options.lua index c7f4279..43b5cc0 100644 --- a/lua/default/set.lua +++ b/lua/config/options.lua @@ -1,15 +1,10 @@ --- disable netrw -vim.g.loaded_netrw = 1 -vim.g.loaded_netrwPlugin = 1 - -vim.opt.nu = true +vim.opt.number = true vim.opt.relativenumber = true vim.opt.tabstop = 4 vim.opt.softtabstop = 4 vim.opt.shiftwidth = 4 vim.opt.expandtab = true - vim.opt.smartindent = true vim.opt.wrap = false @@ -26,7 +21,9 @@ vim.opt.termguicolors = true vim.opt.scrolloff = 8 vim.opt.sidescrolloff = 16 -vim.opt.signcolumn = "yes" -vim.opt.isfname:append("@-@") -vim.opt.updatetime = 50 +vim.opt.updatetime = 100 + +vim.g.netrw_browse_split = 0 +vim.g.netrw_banner = 0 +vim.g.netrw_winsize = 25 diff --git a/lua/core/lazy.lua b/lua/core/lazy.lua new file mode 100644 index 0000000..5d5f25f --- /dev/null +++ b/lua/core/lazy.lua @@ -0,0 +1,21 @@ +-- Boostrap Lazy.nvim +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ + { import = "plugins" }, +}, { + install = { + colorscheme = { "fleet" }, + }, +}) diff --git a/lua/default/init.lua b/lua/default/init.lua deleted file mode 100644 index ae02b81..0000000 --- a/lua/default/init.lua +++ /dev/null @@ -1,33 +0,0 @@ -require("default.set") -require("default.remap") - -local augroup = vim.api.nvim_create_augroup -local default_group = augroup('Default', {}) - -local autocmd = vim.api.nvim_create_autocmd -local yank_group = augroup('HighlightYank', {}) - -function R(name) - require("plenary.reload").reload_module(name) -end - -autocmd('TextYankPost', { - group = yank_group, - pattern = '*', - callback = function() - vim.highlight.on_yank({ - higroup = 'IncSearch', - timeout = 40, - }) - end, -}) - -autocmd({"BufWritePre"}, { - group = default_group, - pattern = "*", - command = [[%s/\s\+$//e]], -}) - -vim.g.netrw_browse_split = 0 -vim.g.netrw_banner = 0 -vim.g.netrw_winsize = 25 diff --git a/lua/default/packer.lua b/lua/default/packer.lua deleted file mode 100644 index d0837f9..0000000 --- a/lua/default/packer.lua +++ /dev/null @@ -1,111 +0,0 @@ -vim.cmd.packadd("packer.nvim") - -return require("packer").startup(function(use) - -- Packer can manage itself - use "wbthomason/packer.nvim" - - -- gF but better (and real) - use "wsdjeg/vim-fetch" - - -- terminal in neovim which already exists but is pretty bad and this one is better - use { "akinsho/toggleterm.nvim", tag = '*' } - - -- find everything, maybe too much - use { - "nvim-telescope/telescope.nvim", - requires = { { "nvim-lua/plenary.nvim" } } - } - - -- easy mode - use("stevearc/conform.nvim") - use("rafamadriz/friendly-snippets") - use({ 'echasnovski/mini.nvim', branch = 'stable' }) - use("ThePrimeagen/refactoring.nvim") - - -- theme stuff - -- use { - -- 'nvim-lualine/lualine.nvim', - -- requires = { - -- 'nvim-tree/nvim-web-devicons', - -- 'RRethy/nvim-base16', - -- } - -- } - -- use("RRethy/nvim-base16") - use("markvincze/panda-vim") - use("rebelot/kanagawa.nvim") - use("felipeagc/fleet-theme-nvim") - use("lukas-reineke/indent-blankline.nvim") - - -- do I need this ? - use({ - "folke/trouble.nvim", - config = function() - require("trouble").setup { - icons = true, - } - end - }) - - -- I'm not a netrw fan - use { - 'nvim-tree/nvim-tree.lua', - requires = { - 'nvim-tree/nvim-web-devicons', - }, - } - - use { - "nvim-treesitter/nvim-treesitter", - run = function() - local ts_update = require("nvim-treesitter.install").update({ with_sync = true }) - ts_update() - end - } - use("nvim-treesitter/nvim-treesitter-context"); - use("nvim-treesitter/playground") - - -- versionning - use("mbbill/undotree") - use("tpope/vim-fugitive") - use("lewis6991/gitsigns.nvim") - - -- important - use("folke/zen-mode.nvim") - use("eandrju/cellular-automaton.nvim") - - -- AI stuff - use("github/copilot.vim") - use { - "Bryley/neoai.nvim", - requires = { - "MunifTanjim/nui.nvim", - } - } - - -- making neovim actually usable - use { - "VonHeikemen/lsp-zero.nvim", - branch = 'v1.x', - requires = { - -- LSP Support - { "neovim/nvim-lspconfig" }, - { "williamboman/mason.nvim" }, - { "williamboman/mason-lspconfig.nvim" }, - - -- Autocompletion - { "hrsh7th/nvim-cmp" }, - { "hrsh7th/cmp-buffer" }, - { "hrsh7th/cmp-path" }, - { "saadparwaiz1/cmp_luasnip" }, - { "hrsh7th/cmp-nvim-lsp" }, - { "hrsh7th/cmp-nvim-lua" }, - - -- Snippets - { "L3MON4D3/LuaSnip" }, - { "rafamadriz/friendly-snippets" }, - - -- Colors - { "folke/lsp-colors.nvim" }, - } - } -end) diff --git a/lua/default/remap.lua b/lua/default/remap.lua deleted file mode 100755 index aaf6623..0000000 --- a/lua/default/remap.lua +++ /dev/null @@ -1,68 +0,0 @@ -vim.g.mapleader = " " -vim.keymap.set("n", "e", ":NvimTreeFindFileToggle") - -vim.keymap.set("v", "J", ":m '>+1gv=gv") -vim.keymap.set("v", "K", ":m '<-2gv=gv") - -vim.keymap.set("n", "J", "mzJ`z") -vim.keymap.set("n", "", "zz") -vim.keymap.set("n", "", "zz") -vim.keymap.set("n", "n", "nzzzv") -vim.keymap.set("n", "N", "Nzzzv") - -vim.keymap.set("x", "p", [["_dP]]) - -vim.keymap.set({"n", "v"}, "y", [["+y]]) -vim.keymap.set("n", "Y", [["+Y]]) - -vim.keymap.set({"n", "v"}, "d", [["_d]]) - -vim.keymap.set("i", "", "") - -vim.keymap.set("n", "Q", "") -vim.keymap.set("n", "", "silent !tmux neww tmux-sessionizer") -vim.keymap.set("n", "ff", vim.lsp.buf.format) - -vim.keymap.set("n", "", "cnextzz") -vim.keymap.set("n", "", "cprevzz") -vim.keymap.set("n", "j", "lnextzz") -vim.keymap.set("n", "k", "lprevzz") - -vim.keymap.set("n", "s", [[:%s/\<\>//gI]]) -vim.keymap.set("n", "x", "!chmod +x %", { silent = true }) - -vim.keymap.set("n", "", function() - vim.cmd("so") -end) - --- get out of terminal mode -vim.keymap.set("t", "", "") - --- tab stuff -vim.keymap.set("n", "tn", function() - vim.cmd("tabn") -end, {}) -vim.keymap.set("n", "", function() - vim.cmd("tabn") -end, {}) -vim.keymap.set("n", "tp", function() - vim.cmd("tabp") -end, {}) -vim.keymap.set("n", "tc", function() - vim.cmd("tabc") -end, {}) -vim.keymap.set("n", "tt", function() - vim.cmd("tabnew") -end, {}) - --- buffer stuff -vim.keymap.set("n", "bd", function() - vim.cmd("bd") -end, {}) -vim.keymap.set("n", "bn", function() - vim.cmd("bn") -end, {}) -vim.keymap.set("n", "bp", function() - vim.cmd("bp") -end, {}) - diff --git a/lua/plugins/coding.lua b/lua/plugins/coding.lua new file mode 100644 index 0000000..594cad5 --- /dev/null +++ b/lua/plugins/coding.lua @@ -0,0 +1,67 @@ +return { + -- Autocomplete + { + "hrsh7th/nvim-cmp", + version = false, + event = "InsertEnter", + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + }, + opts = function() + local cmp = require("cmp") + local defaults = require("cmp.config.default")() + local cmp_format = require("lsp-zero").cmp_format() + return { + completion = { + completeopt = "menu,menuone,noinsert", + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), + [""] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + [""] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + [""] = function(fallback) + cmp.abort() + fallback() + end, + }), + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "path" }, + }, { + { name = "buffer" }, + }), + sorting = defaults.sorting, + formatting = cmp_format, + } + end, + config = function(_, opts) + require("cmp").setup(opts) + end, + }, + -- Copilot + { 'github/copilot.vim' }, + -- Comment + { + 'numToStr/Comment.nvim', + opts = { + -- add any options here + }, + lazy = false, + config = function () + require("Comment").setup() + end + }, + { "L3MON4D3/LuaSnip", event = "InsertEnter", }, + -- Surround + { 'tpope/vim-surround', event = "BufRead", }, +} diff --git a/lua/plugins/editor.lua b/lua/plugins/editor.lua new file mode 100644 index 0000000..edededa --- /dev/null +++ b/lua/plugins/editor.lua @@ -0,0 +1,19 @@ +return { + { + "folke/which-key.nvim", + event = "VeryLazy", + opts = { }, + keys = { + { 'wk', 'WhichKey', desc = 'Show key mappings' }, + }, + }, + { 'wsdjeg/vim-fetch', event = "VeryLazy" }, + { 'nvim-tree/nvim-web-devicons' }, + { + 'eandrju/cellular-automaton.nvim', + event = "VeryLazy", + keys = { + { 'mr', 'CellularAutomaton make_it_rain', desc = 'Make it rain' }, + }, + }, +} diff --git a/lua/plugins/fleet.lua b/lua/plugins/fleet.lua new file mode 100644 index 0000000..f474d89 --- /dev/null +++ b/lua/plugins/fleet.lua @@ -0,0 +1,4 @@ +return { + "felipeagc/fleet-theme-nvim", + config = function() vim.cmd("colorscheme fleet") end +} diff --git a/lua/plugins/git.lua b/lua/plugins/git.lua new file mode 100644 index 0000000..d273789 --- /dev/null +++ b/lua/plugins/git.lua @@ -0,0 +1,59 @@ +return { + -- Fugitive + { + "tpope/vim-fugitive", + event = { "BufReadPost", "BufNewFile", "BufWritePre" }, + config = function() + local function map(mode, l, r, desc) + vim.keymap.set(mode, l, r, { silent = true, noremap = true, desc = desc }) + end + + map("n", "gs", "Git", "Git Status") + map("n", "gd", "Gvdiffsplit!", "Git Diff") + map("n", "gbl", "Git blame", "Git Blame") + map("n", "gc", "Git commit", "Git Commit") + map("n", "gC", "Git commit --amend", "Git Commit Amend") + map("n", "gp", "Git push", "Git Push") + map("n", "gS", "Git push --set-upstream origin $(git rev-parse --abbrev-ref HEAD)", "Git Push Set Upstream") + map("n", "gbs", "Git bisect start", "Git Bisect Start") + map("n", "gbg", "Git bisect good", "Git Bisect Good") + map("n", "gbb", "Git bisect bad", "Git Bisect Bad") + map("n", "gbr", "Git bisect reset", "Git Bisect Reset") + end + }, + -- Gitsigns + { + "lewis6991/gitsigns.nvim", + event = { "BufReadPost", "BufNewFile", "BufWritePre", "VeryLazy" }, + opts = { + signs = { + add = { text = "▎" }, + change = { text = "▎" }, + delete = { text = "" }, + topdelete = { text = "" }, + changedelete = { text = "▎" }, + untracked = { text = "▎" }, + }, + on_attach = function(buffer) + local gs = package.loaded.gitsigns + + local function map(mode, l, r, desc) + vim.keymap.set(mode, l, r, { buffer = buffer, desc = desc }) + end + + map("n", "]h", gs.next_hunk, "Next Hunk") + map("n", "[h", gs.prev_hunk, "Prev Hunk") + map({ "n", "v" }, "ghs", "Gitsigns stage_hunk", "Stage Hunk") + map({ "n", "v" }, "ghr", "Gitsigns reset_hunk", "Reset Hunk") + map("n", "ghS", gs.stage_buffer, "Stage Buffer") + map("n", "ghu", gs.undo_stage_hunk, "Undo Stage Hunk") + map("n", "ghR", gs.reset_buffer, "Reset Buffer") + map("n", "ghp", gs.preview_hunk, "Preview Hunk") + map("n", "ghb", function() gs.blame_line({ full = true }) end, "Blame Line") + map("n", "ghd", gs.diffthis, "Diff This") + map("n", "ghD", function() gs.diffthis("~") end, "Diff This ~") + map({ "o", "x" }, "ih", ":Gitsigns select_hunk", "GitSigns Select Hunk") + end, + }, + }, +} diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua new file mode 100644 index 0000000..ee18fc8 --- /dev/null +++ b/lua/plugins/lsp.lua @@ -0,0 +1,30 @@ +return { + -- LSP + { + "VonHeikemen/lsp-zero.nvim", + config = function() + require("plugins.lsp.config") + end, + dependencies = { + { "neovim/nvim-lspconfig" }, + { "williamboman/mason-lspconfig.nvim" }, + { "folke/neodev.nvim" }, + { "hrsh7th/nvim-cmp" }, + { "hrsh7th/cmp-buffer" }, + { "hrsh7th/cmp-path" }, + { "saadparwaiz1/cmp_luasnip" }, + { "hrsh7th/cmp-nvim-lsp" }, + { "hrsh7th/cmp-nvim-lua" }, + } + }, + -- Mason + { + "williamboman/mason.nvim", + cmd = "Mason", + keys = { { "cm", "Mason", desc = "Mason" } }, + build = ":MasonUpdate", + config = function (_, opts) + require("mason").setup(opts) + end + } +} diff --git a/after/plugin/lsp.lua b/lua/plugins/lsp/config.lua similarity index 50% rename from after/plugin/lsp.lua rename to lua/plugins/lsp/config.lua index 6fa3007..8e9cbff 100644 --- a/after/plugin/lsp.lua +++ b/lua/plugins/lsp/config.lua @@ -1,67 +1,41 @@ -local lsp = require("lsp-zero") +local lsp_zero = require('lsp-zero') local lspconfig = require('lspconfig') -local home = vim.fn.expand('$HOME') --- Activate intelephense because I paid for it, yes -lspconfig.intelephense.setup { - cmd = { "intelephense", "--stdio" }, +lspconfig.lua_ls.setup({ settings = { - intelephense = { - licenceKeyPath = home .. '/intelephense/license.txt' - } - } -} - -lsp.preset("recommended") - -lsp.ensure_installed({ - 'tsserver', - 'rust_analyzer', + Lua = { + diagnostics = { + globals = { 'vim' }, + }, + }, + }, }) --- Fix Undefined global 'vim' -lsp.nvim_workspace() - - -local cmp = require('cmp') -local cmp_select = { behavior = cmp.SelectBehavior.Select } -local cmp_mappings = lsp.defaults.cmp_mappings({ - [''] = cmp.mapping.select_prev_item(cmp_select), - [''] = cmp.mapping.select_next_item(cmp_select), - [''] = cmp.mapping.confirm({ select = true }), - [""] = cmp.mapping.complete(), +lsp_zero.set_sign_icons({ + error = '✘', + warn = '▲', + hint = '⚑', + info = '' }) -cmp_mappings[''] = nil -cmp_mappings[''] = nil - -lsp.setup_nvim_cmp({ - mapping = cmp_mappings +vim.diagnostic.config({ + virtual_text = false, + severity_sort = true, + float = { + style = 'minimal', + border = 'none', + source = 'always', + header = '', + prefix = '', + }, }) -lsp.set_preferences({ - suggest_lsp_servers = true, - sign_icons = { - error = 'E', - warn = 'W', - hint = 'H', - info = 'I' - } -}) - -lsp.on_attach(function(client, bufnr) +lsp_zero.on_attach(function(_, bufnr) local opts = { buffer = bufnr, remap = false } + lsp_zero.default_keymaps({buffer = bufnr}) - -- Format on save - -- vim.api.nvim_create_autocmd("BufWritePost", { - -- callback = function() - -- vim.lsp.buf.format() - -- end - -- }) - - -- Eslint auto fix on save vim.api.nvim_create_autocmd('BufWritePre', { - pattern = { '*.tsx', '*.ts', '*.jsx', '*.js', '*.vue', '*.cjs', '*.mjs', '*.json', '*.css', '*.scss', '*.less', '*.yml' }, + pattern = { '*.tsx', '*.ts', '*.jsx', '*.js', '*.vue', '*.cjs', '*.mjs', '*.json', '*.css', '*.scss', '*.less', '*.yml', '*.svelte' }, command = 'silent! EslintFixAll', group = vim.api.nvim_create_augroup('EslintAutocmdsFormatting', {}), }) @@ -80,7 +54,19 @@ lsp.on_attach(function(client, bufnr) vim.keymap.set("n", "D", function() vim.lsp.buf.type_definition() end, opts) end) -lsp.setup() +require('mason-lspconfig').setup({ + handlers = { + lsp_zero.default_setup, + }, + ensure_installed = { + 'lua_ls', + 'html', + 'eslint', + 'gopls', + 'rust_analyzer', + 'zls', + }, +}) vim.diagnostic.config({ virtual_text = true diff --git a/lua/plugins/lsp/keymaps.lua b/lua/plugins/lsp/keymaps.lua new file mode 100644 index 0000000..7e0532e --- /dev/null +++ b/lua/plugins/lsp/keymaps.lua @@ -0,0 +1,21 @@ +vim.keymap.set('n', 'do', vim.diagnostic.open_float) +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next) +vim.keymap.set('n', 'q', vim.diagnostic.setloclist) +vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) +vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) +vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) +vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) +vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts) +vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, opts) +vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts) +vim.keymap.set('n', 'wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) +end, opts) +vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts) +vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts) +vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts) +vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) +vim.keymap.set('n', '', function() + vim.lsp.buf.format { async = true } +end, opts) diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua new file mode 100644 index 0000000..c53170d --- /dev/null +++ b/lua/plugins/telescope.lua @@ -0,0 +1,30 @@ +return { + 'nvim-telescope/telescope.nvim', + cmd = "Telescope", + version = false, + dependencies = { + { 'nvim-telescope/telescope-fzf-native.nvim', build = 'make' }, + { 'nvim-lua/plenary.nvim' }, + }, + extensions = { + fzf = { + fuzzy = true, -- false will only do exact matching + override_generic_sorter = true, -- override the generic sorter + override_file_sorter = true, -- override the file sorter + case_mode = "smart_case", -- or "ignore_case" or "respect_case" + } + }, + keys = { + { '', "Telescope find_files", desc = 'Find files' }, + { 'ps', "Telescope live_grep", desc = 'Live Grep' }, + { 'vh', "Telescope help_tags", desc = 'Help Tags' }, + { + 'fa', + function() require("telescope.builtin").find_files({ follow = true, no_ignore = true, hidden = true }) end, + desc = 'Find all files' + }, + { 'fb', "Telescope buffers", desc = 'Find buffer' }, + { 'fc', "Telescope git_commits", desc = 'Find commits' }, + { 'fg', "Telescope git_status", desc = 'Find git status' }, + }, +} diff --git a/lua/plugins/treesitter.lua b/lua/plugins/treesitter.lua new file mode 100644 index 0000000..bb4ecae --- /dev/null +++ b/lua/plugins/treesitter.lua @@ -0,0 +1,63 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + version = false, + build = ":TSUpdate", + event = { "BufReadPost", "BufWritePost", "BufNewFile", "VeryLazy" }, + init = function(plugin) + require("lazy.core.loader").add_to_rtp(plugin) + require("nvim-treesitter.query_predicates") + end, + cmd = { "TSUpdateSync", "TSUpdate", "TSInstall" }, + keys = { + { "", desc = "Increment selection" }, + { "", desc = "Decrement selection", mode = "x" }, + }, + opts = { + highlight = { + enable = true, + additional_vim_regex_highlighting = { "php", "twig" }, + }, + auto_install = true, + indent = { enable = true }, + ensure_installed = { "lua", "vim", "vimdoc", "typescript", "javascript", "go", "c", "cpp", "rust", "zig", "html", "css" }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = "", + node_incremental = "", + scope_incremental = false, + node_decremental = "", + }, + }, + }, + config = function(_, opts) + require("nvim-treesitter.configs").setup(opts) + end, + }, + + -- Show context of the current function + { + "nvim-treesitter/nvim-treesitter-context", + event = { "BufReadPost", "BufWritePost", "BufNewFile" }, + enabled = true, + opts = { mode = "cursor", max_lines = 3 }, + keys = { + { + "ut", + function() + local tsc = require("treesitter-context") + tsc.toggle() + end, + desc = "Toggle Treesitter Context", + }, + }, + }, + + -- Automatically add closing tags for HTML and JSX + { + "windwp/nvim-ts-autotag", + event = { "BufReadPost", "BufWritePost", "BufNewFile" }, + opts = {}, + }, +}