From fd05af3c868b1fe8bd4abc047d15a33d4d7f7fe4 Mon Sep 17 00:00:00 2001 From: Daniele Pintore Date: Tue, 20 Feb 2024 11:48:34 +0100 Subject: [PATCH] Added nvim configs --- .config/nvim/.gitignore | 1 + .config/nvim/README.me | 1 + .config/nvim/after/plugin/codefmt.lua | 1 + .config/nvim/after/plugin/colorscheme.lua | 9 +++ .config/nvim/after/plugin/copilot.lua | 2 + .config/nvim/after/plugin/fugitive.lua | 1 + .config/nvim/after/plugin/harpoon.lua | 11 +++ .config/nvim/after/plugin/lsp.lua | 89 +++++++++++++++++++++++ .config/nvim/after/plugin/telescope.lua | 6 ++ .config/nvim/after/plugin/treesitter.lua | 26 +++++++ .config/nvim/after/plugin/undotree.lua | 1 + .config/nvim/init.lua | 1 + .config/nvim/lua/configs/init.lua | 4 + .config/nvim/lua/configs/packer.lua | 89 +++++++++++++++++++++++ .config/nvim/lua/configs/remap.lua | 60 +++++++++++++++ .config/nvim/lua/configs/set.lua | 28 +++++++ .config/nvim/lua/configs/templates.lua | 4 + .config/nvim/templates/vue.template | 8 ++ 18 files changed, 342 insertions(+) create mode 100644 .config/nvim/.gitignore create mode 100644 .config/nvim/README.me create mode 100644 .config/nvim/after/plugin/codefmt.lua create mode 100644 .config/nvim/after/plugin/colorscheme.lua create mode 100644 .config/nvim/after/plugin/copilot.lua create mode 100644 .config/nvim/after/plugin/fugitive.lua create mode 100644 .config/nvim/after/plugin/harpoon.lua create mode 100644 .config/nvim/after/plugin/lsp.lua create mode 100644 .config/nvim/after/plugin/telescope.lua create mode 100644 .config/nvim/after/plugin/treesitter.lua create mode 100644 .config/nvim/after/plugin/undotree.lua create mode 100644 .config/nvim/init.lua create mode 100644 .config/nvim/lua/configs/init.lua create mode 100644 .config/nvim/lua/configs/packer.lua create mode 100644 .config/nvim/lua/configs/remap.lua create mode 100644 .config/nvim/lua/configs/set.lua create mode 100644 .config/nvim/lua/configs/templates.lua create mode 100644 .config/nvim/templates/vue.template diff --git a/.config/nvim/.gitignore b/.config/nvim/.gitignore new file mode 100644 index 0000000..6d635cb --- /dev/null +++ b/.config/nvim/.gitignore @@ -0,0 +1 @@ +/plugin diff --git a/.config/nvim/README.me b/.config/nvim/README.me new file mode 100644 index 0000000..18acf28 --- /dev/null +++ b/.config/nvim/README.me @@ -0,0 +1 @@ +Remember to install packer to download all the plugins diff --git a/.config/nvim/after/plugin/codefmt.lua b/.config/nvim/after/plugin/codefmt.lua new file mode 100644 index 0000000..7d6a8c7 --- /dev/null +++ b/.config/nvim/after/plugin/codefmt.lua @@ -0,0 +1 @@ +vim.cmd(':Glaive codefmt prettier_executable="/home/daniele/.local/share/nvim/mason/bin/prettier"') diff --git a/.config/nvim/after/plugin/colorscheme.lua b/.config/nvim/after/plugin/colorscheme.lua new file mode 100644 index 0000000..93e2da7 --- /dev/null +++ b/.config/nvim/after/plugin/colorscheme.lua @@ -0,0 +1,9 @@ +function ActivateColorScheme(color) + color = color or "catppuccin-mocha" + vim.cmd.colorscheme(color) + + vim.api.nvim_set_hl(0, "Normal", { bg = "none" }) + vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" }) +end + +ActivateColorScheme() diff --git a/.config/nvim/after/plugin/copilot.lua b/.config/nvim/after/plugin/copilot.lua new file mode 100644 index 0000000..fe3f203 --- /dev/null +++ b/.config/nvim/after/plugin/copilot.lua @@ -0,0 +1,2 @@ +-- Disable copilot by default +vim.cmd(":Copilot disable") diff --git a/.config/nvim/after/plugin/fugitive.lua b/.config/nvim/after/plugin/fugitive.lua new file mode 100644 index 0000000..73b78b8 --- /dev/null +++ b/.config/nvim/after/plugin/fugitive.lua @@ -0,0 +1 @@ +vim.keymap.set("n", "gs", vim.cmd.Git); diff --git a/.config/nvim/after/plugin/harpoon.lua b/.config/nvim/after/plugin/harpoon.lua new file mode 100644 index 0000000..cc1c341 --- /dev/null +++ b/.config/nvim/after/plugin/harpoon.lua @@ -0,0 +1,11 @@ +local mark = require("harpoon.mark") +local ui = require("harpoon.ui") + +vim.keymap.set("n", "a", mark.add_file) +vim.keymap.set("n", "", ui.toggle_quick_menu) + +vim.keymap.set("n", "", function() ui.nav_file(1) end) +vim.keymap.set("n", "", function() ui.nav_file(2) end) +vim.keymap.set("n", "", function() ui.nav_file(3) end) +-- Conflicts with find git files -- vim.keymap.set("n", "", function() ui.nav_file(4) end) + diff --git a/.config/nvim/after/plugin/lsp.lua b/.config/nvim/after/plugin/lsp.lua new file mode 100644 index 0000000..4e6677f --- /dev/null +++ b/.config/nvim/after/plugin/lsp.lua @@ -0,0 +1,89 @@ +-- custom lsp per project +require("neoconf").setup({ + -- override any of the default settings here + plugins = { + -- configures lsp clients with settings in the following order: + -- - lua settings passed in lspconfig setup + -- - global json settings + -- - local json settings + lspconfig = { + enabled = true, + }, + -- configures jsonls to get completion in .nvim.settings.json files + jsonls = { + enabled = true, + -- only show completion in json settings for configured lsp servers + configured_servers_only = false, + }, + -- configures lua_ls to get completion of lspconfig server settings + lua_ls = { + -- by default, lua_ls annotations are only enabled in your neovim config directory + enabled_for_neovim_config = true, + -- explicitely enable adding annotations. Mostly relevant to put in your local .nvim.settings.json file + enabled = false, + }, + }, +}) + +local lsp = require('lsp-zero') + +lsp.on_attach(function(client, bufnr) + -- see :help lsp-zero-keybindings + -- to learn the available actions + lsp.default_keymaps({buffer = bufnr}) +end) + +lsp.extend_cmp() +require('mason').setup({}) +require('mason-lspconfig').setup({ + -- Replace the language servers listed here + -- with the ones you want to install + ensure_installed = {'eslint', 'tsserver', 'rust_analyzer', 'lua_ls', 'clangd', + 'volar', 'pylsp'}, + -- handlers = { + -- lsp.default_setup, + -- lua_ls = function() + -- -- (Optional) Configure lua language server for neovim + -- require('lspconfig').lua_ls.setup(lsp.nvim_lua_ls()) + -- end, + -- }, +}) + +require('mason-lspconfig').setup_handlers({ + function(server_name) + local server_config = {} + if require("neoconf").get(server_name .. ".disable") then + return + end + if server_name == "volar" then + server_config.filetypes = { 'vue', 'typescript', 'javascript' } + end + require('lspconfig')[server_name].setup(server_config) + end, +}) + +local cmp = require('cmp') +local cmp_action = require('lsp-zero').cmp_action() + +cmp.setup({ + mapping = { + -- `Enter` key to confirm completion + [''] = cmp.mapping.confirm({select = false}), + + -- Alt+Space to trigger completion menu + [''] = cmp.mapping.complete(), + + -- Tab to change item in completion menu + [''] = cmp_action.tab_complete(), + -- Shift+Tab goes to the previus item in the completion menu + [''] = cmp_action.select_prev_or_fallback(), + + -- Navigate between documentation + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.scroll_docs(-4), + } +}) + +lsp.set_preferences({ + sign_icons = {} +}) diff --git a/.config/nvim/after/plugin/telescope.lua b/.config/nvim/after/plugin/telescope.lua new file mode 100644 index 0000000..4806008 --- /dev/null +++ b/.config/nvim/after/plugin/telescope.lua @@ -0,0 +1,6 @@ +local builtin = require('telescope.builtin') +vim.keymap.set('n', 'pf', builtin.find_files, {}) +vim.keymap.set('n', '', builtin.git_files, {}) +vim.keymap.set('n', 'ps', function() + builtin.grep_string({ search = vim.fn.input("Grep > ") }); +end) diff --git a/.config/nvim/after/plugin/treesitter.lua b/.config/nvim/after/plugin/treesitter.lua new file mode 100644 index 0000000..fc1e6eb --- /dev/null +++ b/.config/nvim/after/plugin/treesitter.lua @@ -0,0 +1,26 @@ +require'nvim-treesitter.configs'.setup { + -- A list of parser names, or "all" (the five listed parsers should always be installed) + ensure_installed = {"javascript", "typescript", "rust", "c", "lua", "vim", "vimdoc", "query" }, + + -- 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, + + -- List of parsers to ignore installing (for "all") + -- ignore_install = { "javascript" }, + + ---- If you need to change the installation directory of the parsers (see -> Advanced Setup) + -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")! + + highlight = { + 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 = false, + }, +} diff --git a/.config/nvim/after/plugin/undotree.lua b/.config/nvim/after/plugin/undotree.lua new file mode 100644 index 0000000..8732728 --- /dev/null +++ b/.config/nvim/after/plugin/undotree.lua @@ -0,0 +1 @@ +vim.keymap.set("n", "u", vim.cmd.UndotreeToggle) diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..30b7e22 --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1 @@ +require("configs") diff --git a/.config/nvim/lua/configs/init.lua b/.config/nvim/lua/configs/init.lua new file mode 100644 index 0000000..5a8ca8c --- /dev/null +++ b/.config/nvim/lua/configs/init.lua @@ -0,0 +1,4 @@ +require("configs.remap") +require("configs.packer") +require("configs.set") +require("configs.templates") diff --git a/.config/nvim/lua/configs/packer.lua b/.config/nvim/lua/configs/packer.lua new file mode 100644 index 0000000..3376562 --- /dev/null +++ b/.config/nvim/lua/configs/packer.lua @@ -0,0 +1,89 @@ +-- This file can be loaded by calling `lua require('plugins')` from your init.vim + +-- Only required if you have packer configured as `opt` +vim.cmd [[packadd packer.nvim]] + +return require('packer').startup(function(use) + -- Packer can manage itself + use 'wbthomason/packer.nvim' + + use { + 'nvim-telescope/telescope.nvim', tag = '0.1.2', + -- or , branch = '0.1.x', + requires = { {'nvim-lua/plenary.nvim'} } + } + + use ({ "catppuccin/nvim", as = "catppuccin", + config = function() + require('catppuccin').setup({ + term_colors = false, + transparent_background = true, + styles = { + comments = {}, + conditionals = {}, + loops = {}, + functions = {}, + keywords = {}, + strings = {}, + variables = {}, + numbers = {}, + booleans = {}, + properties = {}, + types = {}, + }, + + --[[color_overrides = { + mocha = { + base = "#000000", + mantle = "#000000", + crust = "#000000", + }, + } ]]-- + }) + vim.cmd('colorscheme catppuccin') + + end + }) + + use { + 'nvim-treesitter/nvim-treesitter', + run = ':TSUpdate' + } + + use("ThePrimeagen/harpoon") + + use("mbbill/undotree") + + use("tpope/vim-fugitive") + + use { + 'VonHeikemen/lsp-zero.nvim', + branch = 'dev-v3', + requires = { + --- Uncomment these if you want to manage LSP servers from neovim + {'williamboman/mason.nvim'}, + {'williamboman/mason-lspconfig.nvim'}, + --- + + -- LSP Support + {'neovim/nvim-lspconfig'}, + -- Autocompletion + {'hrsh7th/nvim-cmp'}, + {'hrsh7th/cmp-nvim-lsp'}, + {'L3MON4D3/LuaSnip'}, + } + } + + -- Github copilot + use("github/copilot.vim") + + -- For navigation between vim and tmux + use("christoomey/vim-tmux-navigator") + + -- Per project custom lsp config + use("folke/neoconf.nvim") + + use("google/vim-maktaba") + use("google/vim-codefmt") + use("google/vim-glaive") +end) diff --git a/.config/nvim/lua/configs/remap.lua b/.config/nvim/lua/configs/remap.lua new file mode 100644 index 0000000..bcfb19d --- /dev/null +++ b/.config/nvim/lua/configs/remap.lua @@ -0,0 +1,60 @@ +vim.g.mapleader = " " +vim.keymap.set("n", "pv", vim.cmd.Ex) + +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") + +-- greatest remap ever +vim.keymap.set("x", "p", [["_dP]]) + +-- next greatest remap ever : asbjornHaland +vim.keymap.set({"n", "v"}, "y", [["+y]]) +vim.keymap.set("n", "Y", [["+Y]]) + +vim.keymap.set({"n", "v"}, "d", [["_d]]) + +-- This is going to get me cancelled +vim.keymap.set("i", "", "") + +vim.keymap.set("n", "Q", "") +vim.keymap.set("n", "", "silent !tmux neww tmux-sessionizer") +vim.keymap.set("n", "f", vim.lsp.buf.format) +vim.keymap.set("n", "qf", vim.lsp.buf.code_action) +vim.keymap.set("n", "r", "e!") + +vim.keymap.set("n", "", "cnextzz") +vim.keymap.set("n", "", "cprevzz") +vim.keymap.set("n", "k", "lnextzz") +vim.keymap.set("n", "j", "lprevzz") + +vim.keymap.set("n", "s", [[:%s/\<\>//gI]]) +vim.keymap.set("n", "x", "!chmod +x %", { silent = true }) + +vim.keymap.set("n", "vpp", "e ~/.dotfiles/nvim/.config/nvim/lua/theprimeagen/packer.lua"); +vim.keymap.set("n", "mr", "CellularAutomaton make_it_rain"); + +vim.keymap.set("n", "", function() + vim.cmd("so") +end) + +-- Redo by pressing r in normal mode +vim.keymap.set("n", "r", "") + +-- Indent whole file with codefmt +vim.keymap.set("n", "i", "FormatCode") + +-- Fast save +vim.keymap.set("n", "w", "w") +vim.keymap.set("n", "q", "q") + +-- Copilot accept with C-j +vim.g.copilot_no_tab_map = true +vim.api.nvim_set_keymap("i", "", 'copilot#Accept("")', { silent = true, expr = true }) + + diff --git a/.config/nvim/lua/configs/set.lua b/.config/nvim/lua/configs/set.lua new file mode 100644 index 0000000..a94f2a2 --- /dev/null +++ b/.config/nvim/lua/configs/set.lua @@ -0,0 +1,28 @@ +vim.opt.nu = true +vim.opt.relativenumber = true + +vim.opt.tabstop = 2 +vim.opt.softtabstop = 2 +vim.opt.shiftwidth = 2 + +vim.opt.smartindent = true + +vim.opt.wrap = false + +vim.opt.swapfile = false +vim.opt.backup = false +vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir" +vim.opt.undofile = true + +vim.opt.hlsearch = false +vim.opt.incsearch = true + +vim.opt.termguicolors = true + +vim.opt.scrolloff = 8 +vim.opt.signcolumn = "yes" +vim.opt.isfname:append("@-@") + +vim.opt.updatetime = 50 + +vim.opt.colorcolumn = "80" diff --git a/.config/nvim/lua/configs/templates.lua b/.config/nvim/lua/configs/templates.lua new file mode 100644 index 0000000..517e85c --- /dev/null +++ b/.config/nvim/lua/configs/templates.lua @@ -0,0 +1,4 @@ +vim.api.nvim_create_autocmd('BufNewFile', { + pattern = "*.vue", + command = "0r ~/.config/nvim/templates/vue.template" +}) diff --git a/.config/nvim/templates/vue.template b/.config/nvim/templates/vue.template new file mode 100644 index 0000000..c3057bd --- /dev/null +++ b/.config/nvim/templates/vue.template @@ -0,0 +1,8 @@ + + + + +