diff options
author | Matthew Lemon <y@yulqen.org> | 2023-04-07 18:06:20 +0100 |
---|---|---|
committer | Matthew Lemon <y@yulqen.org> | 2023-04-07 18:06:20 +0100 |
commit | 6ad9ebb4d05d0f5de73a76b81464db2b673251d0 (patch) | |
tree | 382c545829302449478f0a31c1b2c815c5b446af /nvim/after | |
parent | 8074753daaad059e407dbb0dae05206ef5f510a3 (diff) |
Adds first neovim config for several years
I copied ThePrimeagen setting up neovim based on his repository at
https://github.com/ThePrimeagen/init.lua. The video itself is at
https://www.youtube.com/watch?v=w7i4amO_zaE.
I tried following each step based on the video, but I for some reason
autocomplete did not work properly after a while. So I cloned his repo
and adapted it to some extent to make it more in line with what I need.
This is an early state, but autocomplete works. There is much to do to
mirror my vimrc, if I am going to go down that route.
Diffstat (limited to 'nvim/after')
-rw-r--r-- | nvim/after/plugin/colors.lua | 14 | ||||
-rw-r--r-- | nvim/after/plugin/fugitive.lua | 1 | ||||
-rw-r--r-- | nvim/after/plugin/harpoon.lua | 12 | ||||
-rw-r--r-- | nvim/after/plugin/lsp.lua | 67 | ||||
-rw-r--r-- | nvim/after/plugin/telescope.lua | 8 | ||||
-rw-r--r-- | nvim/after/plugin/treesitter.lua | 23 | ||||
-rw-r--r-- | nvim/after/plugin/trouble.lua | 3 | ||||
-rw-r--r-- | nvim/after/plugin/undotree.lua | 2 | ||||
-rw-r--r-- | nvim/after/plugin/zenmode.lua | 30 |
9 files changed, 160 insertions, 0 deletions
diff --git a/nvim/after/plugin/colors.lua b/nvim/after/plugin/colors.lua new file mode 100644 index 0000000..fe97b1b --- /dev/null +++ b/nvim/after/plugin/colors.lua @@ -0,0 +1,14 @@ +require('rose-pine').setup({ + disable_background = true +}) + +function ColorMyPencils(color) + color = color or "rose-pine" + vim.cmd.colorscheme(color) + + vim.api.nvim_set_hl(0, "Normal", { bg = "none" }) + vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" }) + +end + +ColorMyPencils() diff --git a/nvim/after/plugin/fugitive.lua b/nvim/after/plugin/fugitive.lua new file mode 100644 index 0000000..80c9070 --- /dev/null +++ b/nvim/after/plugin/fugitive.lua @@ -0,0 +1 @@ +vim.keymap.set("n", "<leader>gs", vim.cmd.Git) diff --git a/nvim/after/plugin/harpoon.lua b/nvim/after/plugin/harpoon.lua new file mode 100644 index 0000000..4a6ba87 --- /dev/null +++ b/nvim/after/plugin/harpoon.lua @@ -0,0 +1,12 @@ +local mark = require("harpoon.mark") +local ui = require("harpoon.ui") + +vim.keymap.set("n", "<leader>a", mark.add_file) +vim.keymap.set("n", "<C-e>", ui.toggle_quick_menu) + +vim.keymap.set("n", "<C-h>", function() ui.nav_file(1) end) +vim.keymap.set("n", "<C-t>", function() ui.nav_file(2) end) +vim.keymap.set("n", "<C-n>", function() ui.nav_file(3) end) +vim.keymap.set("n", "<C-s>", function() ui.nav_file(4) end) + + diff --git a/nvim/after/plugin/lsp.lua b/nvim/after/plugin/lsp.lua new file mode 100644 index 0000000..e644f74 --- /dev/null +++ b/nvim/after/plugin/lsp.lua @@ -0,0 +1,67 @@ +local lsp = require("lsp-zero") + +lsp.preset("recommended") + +lsp.ensure_installed({ + 'pyright', 'lua_ls' +}) + +-- Fix Undefined global 'vim' +lsp.configure('lua_ls', { + settings = { + Lua = { + diagnostics = { + globals = { 'vim' } + } + } + } +}) + + +local cmp = require('cmp') +local cmp_select = {behavior = cmp.SelectBehavior.Select} +local cmp_mappings = lsp.defaults.cmp_mappings({ + ['<C-p>'] = cmp.mapping.select_prev_item(cmp_select), + ['<C-n>'] = cmp.mapping.select_next_item(cmp_select), + ['<C-y>'] = cmp.mapping.confirm({ select = true }), + ["<C-Space>"] = cmp.mapping.complete(), +}) + +cmp_mappings['<Tab>'] = nil +cmp_mappings['<S-Tab>'] = nil + +lsp.setup_nvim_cmp({ + mapping = cmp_mappings +}) + +lsp.set_preferences({ + suggest_lsp_servers = false, + sign_icons = { + error = 'E', + warn = 'W', + hint = 'H', + info = 'I' + } +}) + +lsp.on_attach(function(client, bufnr) + local opts = {buffer = bufnr, remap = false} + + vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) + vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts) + vim.keymap.set("n", "<leader>vws", function() vim.lsp.buf.workspace_symbol() end, opts) + vim.keymap.set("n", "<leader>vd", function() vim.diagnostic.open_float() end, opts) + vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, opts) + vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, opts) + vim.keymap.set("n", "<leader>vca", function() vim.lsp.buf.code_action() end, opts) + vim.keymap.set("n", "<leader>vrr", function() vim.lsp.buf.references() end, opts) + vim.keymap.set("n", "<leader>vrn", function() vim.lsp.buf.rename() end, opts) + vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, opts) +end) + +lsp.setup() + +vim.diagnostic.config({ + virtual_text = true +}) + diff --git a/nvim/after/plugin/telescope.lua b/nvim/after/plugin/telescope.lua new file mode 100644 index 0000000..29f5a62 --- /dev/null +++ b/nvim/after/plugin/telescope.lua @@ -0,0 +1,8 @@ +local builtin = require('telescope.builtin') +vim.keymap.set('n', '<leader>pf', builtin.find_files, {}) +vim.keymap.set('n', '<C-p>', builtin.git_files, {}) +vim.keymap.set('n', '<leader>ps', function() + builtin.grep_string({ search = vim.fn.input("Grep > ") }) +end) +vim.keymap.set('n', '<leader>vh', builtin.help_tags, {}) + diff --git a/nvim/after/plugin/treesitter.lua b/nvim/after/plugin/treesitter.lua new file mode 100644 index 0000000..69adc98 --- /dev/null +++ b/nvim/after/plugin/treesitter.lua @@ -0,0 +1,23 @@ +require'nvim-treesitter.configs'.setup { + -- A list of parser names, or "all" + ensure_installed = { "python", "bash", "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 = false, + }, +} + diff --git a/nvim/after/plugin/trouble.lua b/nvim/after/plugin/trouble.lua new file mode 100644 index 0000000..cf1256a --- /dev/null +++ b/nvim/after/plugin/trouble.lua @@ -0,0 +1,3 @@ +vim.keymap.set("n", "<leader>xq", "<cmd>TroubleToggle quickfix<cr>", + {silent = true, noremap = true} +) diff --git a/nvim/after/plugin/undotree.lua b/nvim/after/plugin/undotree.lua new file mode 100644 index 0000000..97bb7ab --- /dev/null +++ b/nvim/after/plugin/undotree.lua @@ -0,0 +1,2 @@ +vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle) + diff --git a/nvim/after/plugin/zenmode.lua b/nvim/after/plugin/zenmode.lua new file mode 100644 index 0000000..753fbf8 --- /dev/null +++ b/nvim/after/plugin/zenmode.lua @@ -0,0 +1,30 @@ + +vim.keymap.set("n", "<leader>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 + ColorMyPencils() +end) + + +vim.keymap.set("n", "<leader>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" + ColorMyPencils() +end) |