From b238b57409bafca155d90bd690e9eab4c0f986c8 Mon Sep 17 00:00:00 2001 From: Michael Yockey Date: Thu, 29 Feb 2024 09:30:15 -0500 Subject: [PATCH] feat: Neovim config --- install.zsh | 1 + nvim/.config/nvim/after/plugin/colors.lua | 6 +++ nvim/.config/nvim/after/plugin/lsp.lua | 48 +++++++++++++++++++ nvim/.config/nvim/after/plugin/telescope.lua | 6 +++ nvim/.config/nvim/after/plugin/treesitter.lua | 21 ++++++++ nvim/.config/nvim/after/plugin/undotree.lua | 1 + nvim/.config/nvim/init.lua | 1 + nvim/.config/nvim/lua/yock/init.lua | 3 ++ nvim/.config/nvim/lua/yock/pckr.lua | 41 ++++++++++++++++ nvim/.config/nvim/lua/yock/remap.lua | 14 ++++++ nvim/.config/nvim/lua/yock/set.lua | 26 ++++++++++ 11 files changed, 168 insertions(+) create mode 100644 nvim/.config/nvim/after/plugin/colors.lua create mode 100644 nvim/.config/nvim/after/plugin/lsp.lua create mode 100644 nvim/.config/nvim/after/plugin/telescope.lua create mode 100644 nvim/.config/nvim/after/plugin/treesitter.lua create mode 100644 nvim/.config/nvim/after/plugin/undotree.lua create mode 100644 nvim/.config/nvim/init.lua create mode 100644 nvim/.config/nvim/lua/yock/init.lua create mode 100644 nvim/.config/nvim/lua/yock/pckr.lua create mode 100644 nvim/.config/nvim/lua/yock/remap.lua create mode 100644 nvim/.config/nvim/lua/yock/set.lua diff --git a/install.zsh b/install.zsh index 4b1bb15..184b3c8 100755 --- a/install.zsh +++ b/install.zsh @@ -23,3 +23,4 @@ popd echo "Linking files" stow --dotfiles -t ~ zsh stow --dotfiles -t ~ ruby +stow --dotfiles -t ~ nvim diff --git a/nvim/.config/nvim/after/plugin/colors.lua b/nvim/.config/nvim/after/plugin/colors.lua new file mode 100644 index 0000000..3e9e9cf --- /dev/null +++ b/nvim/.config/nvim/after/plugin/colors.lua @@ -0,0 +1,6 @@ +function ColorMyPencils(color) + color = color or 'flexoki-light' + vim.cmd.colorscheme(color) +end + +ColorMyPencils() diff --git a/nvim/.config/nvim/after/plugin/lsp.lua b/nvim/.config/nvim/after/plugin/lsp.lua new file mode 100644 index 0000000..28b30da --- /dev/null +++ b/nvim/.config/nvim/after/plugin/lsp.lua @@ -0,0 +1,48 @@ +local lsp = require('lsp-zero') +local mason = require('mason') +local mason_lspconfig = require('mason-lspconfig') + +mason.setup({}) +mason_lspconfig.setup({ + ensure_installed = { + 'ruby_ls', + 'tsserver', + 'lua_ls', + }, + handlers = { + lsp.default_setup, + lua_ls = function() + require('lspconfig').lua_ls.setup({ + settings = { + Lua = { + diagnostics = { + globals = { + 'vim', + 'require', + } + } + } + } + }) + end, + }, +}) + +lsp.on_attach(function(_client, bufnr) + local opts = { buffer = bufnr, remap = false } + + lsp.default_keymaps(opts) + + 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', 'vws', function() vim.lsp.buf.workspace_symbol() end, opts) + vim.keymap.set('n', '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', 'vca', function() vim.lsp.buf.code_action() end, opts) + vim.keymap.set('n', 'vrr', function() vim.lsp.buf.references() end, opts) + vim.keymap.set('n', 'vrn', function() vim.lsp.buf.rename() end, opts) + vim.keymap.set('n', '', function() vim.lsp.buf.signature_help() end, opts) +end) + +lsp.setup() diff --git a/nvim/.config/nvim/after/plugin/telescope.lua b/nvim/.config/nvim/after/plugin/telescope.lua new file mode 100644 index 0000000..4806008 --- /dev/null +++ b/nvim/.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/nvim/.config/nvim/after/plugin/treesitter.lua b/nvim/.config/nvim/after/plugin/treesitter.lua new file mode 100644 index 0000000..583ecdc --- /dev/null +++ b/nvim/.config/nvim/after/plugin/treesitter.lua @@ -0,0 +1,21 @@ +require'nvim-treesitter.configs'.setup { + -- A list of parser names, or "all" (the five listed parsers should always be installed) + ensure_installed = { "lua", "ruby", "javascript", "typescript" }, + + -- 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 = { + 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/.config/nvim/after/plugin/undotree.lua b/nvim/.config/nvim/after/plugin/undotree.lua new file mode 100644 index 0000000..b6b9276 --- /dev/null +++ b/nvim/.config/nvim/after/plugin/undotree.lua @@ -0,0 +1 @@ +vim.keymap.set("n", "u", vim.cmd.UndotreeToggle) diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua new file mode 100644 index 0000000..99a23af --- /dev/null +++ b/nvim/.config/nvim/init.lua @@ -0,0 +1 @@ +require('yock') diff --git a/nvim/.config/nvim/lua/yock/init.lua b/nvim/.config/nvim/lua/yock/init.lua new file mode 100644 index 0000000..f590372 --- /dev/null +++ b/nvim/.config/nvim/lua/yock/init.lua @@ -0,0 +1,3 @@ +require('yock.pckr') +require('yock.remap') +require('yock.set') diff --git a/nvim/.config/nvim/lua/yock/pckr.lua b/nvim/.config/nvim/lua/yock/pckr.lua new file mode 100644 index 0000000..7679598 --- /dev/null +++ b/nvim/.config/nvim/lua/yock/pckr.lua @@ -0,0 +1,41 @@ +local function bootstrap_pckr() + local pckr_path = vim.fn.stdpath('data') .. 'pckr/pckr.nvim' + + if not vim.loop.fs_stat(pckr_path) then + vim.fn.system({ + 'git', + 'clone', + '--filter=blob:none', + 'https://github.com/lewis6991/pckr.nvim', + pckr_path + }) + end + + vim.opt.rtp:prepend(pckr_path) +end + +bootstrap_pckr() + +require('pckr').add{ + { 'nvim-telescope/telescope.nvim', requires = { 'nvim-lua/plenary.nvim' } }, + { 'kepano/flexoki-neovim' }, + { 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' }, + { 'mbbill/undotree' }, + { + 'VonHeikemen/lsp-zero.nvim', + requires = { + { 'neovim/nvim-lspconfig' }, + { 'williamboman/mason.nvim' }, + { 'williamboman/mason-lspconfig.nvim' }, + { 'hrsh7th/nvim-cmp' }, + { 'hrsh7th/cmp-nvim-lsp' }, + { 'L3MON4D3/LuaSnip' }, + { 'hrsh7th/cmp-path' }, + { 'hrsh7th/cmp-nvim-lua' }, + { 'hrsh7th/cmp-buffer' }, + { 'rafamadriz/friendly-snippets' }, + { 'saadparwaiz1/cmp_luasnip' }, + }, + }, + { 'zbirenbaum/copilot-cmp', requires = { 'github/copilot.lua' } }, +} diff --git a/nvim/.config/nvim/lua/yock/remap.lua b/nvim/.config/nvim/lua/yock/remap.lua new file mode 100644 index 0000000..df3a20d --- /dev/null +++ b/nvim/.config/nvim/lua/yock/remap.lua @@ -0,0 +1,14 @@ +vim.keymap.set("n", "pv", vim.cmd.Ex) + +-- Move highlights +vim.keymap.set('v', 'J', ":m '>+1gv=gv") +vim.keymap.set('v', 'K', ":m '<-2gv=gv") + +-- Paste over without copying what is under +vim.keymap.set('x', 'p', "\"_dP") + +-- Copy to system clipboard +vim.keymap.set('n', 'y', "\"+y") +vim.keymap.set('v', 'y', "\"+y") +vim.keymap.set('n', 'Y', "\"+Y") + diff --git a/nvim/.config/nvim/lua/yock/set.lua b/nvim/.config/nvim/lua/yock/set.lua new file mode 100644 index 0000000..c6120e0 --- /dev/null +++ b/nvim/.config/nvim/lua/yock/set.lua @@ -0,0 +1,26 @@ +vim.opt.nu = true + +vim.opt.tabstop = 2 +vim.opt.softtabstop = 2 +vim.shiftwidth = 2 +vim.opt.expandtab = true +vim.opt.smartindent = true + +vim.opt.wrap = false + +vim.opt.swapfile = false +vim.opt.backup = false +vim.opt.undodir = os.getenv('HOME') .. '/.nvim/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.colorcolumn = '120' + +vim.g.mapleader = '\\'