From 9b5c910e22483b0a0447229fabbf2eefac4eb7a7 Mon Sep 17 00:00:00 2001 From: Jordan Holt Date: Sun, 26 Jun 2022 23:13:35 +0100 Subject: [PATCH] Migrate nvim config to Lua --- .config/nvim/init.lua | 4 + .config/nvim/init.vim | 119 ------------------------- .config/nvim/lua/config/core.lua | 35 ++++++++ .config/nvim/lua/config/keymap.lua | 35 ++++++++ .config/nvim/lua/config/plugins.lua | 80 +++++++++++++++++ .config/nvim/lua/config/treesitter.lua | 51 +++++++++++ .gitignore | 1 + 7 files changed, 206 insertions(+), 119 deletions(-) create mode 100644 .config/nvim/init.lua delete mode 100644 .config/nvim/init.vim create mode 100644 .config/nvim/lua/config/core.lua create mode 100644 .config/nvim/lua/config/keymap.lua create mode 100644 .config/nvim/lua/config/plugins.lua create mode 100644 .config/nvim/lua/config/treesitter.lua diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..1d3ad80 --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,4 @@ +require("config.core") +require("config.keymap") +require("config.plugins") + diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim deleted file mode 100644 index 442689b..0000000 --- a/.config/nvim/init.vim +++ /dev/null @@ -1,119 +0,0 @@ -set breakindent -set clipboard=unnamedplus -set encoding=utf-8 -set expandtab -set hidden -set ignorecase -set listchars=tab:▸\ ,eol:¬ -set nocompatible -set nohlsearch -set noshowmode -set relativenumber -set shiftwidth=2 -set smartcase -set smarttab -set softtabstop=2 -set synmaxcol=150 -set tabstop=4 -set undofile -set wildmenu - -for folder in ['backup', 'swap', 'undo'] - if !isdirectory($XDG_CACHE_HOME . '/nvim/' . folder) - call mkdir($XDG_CACHE_HOME . '/nvim/' . folder, 'p') - endif -endfor - -set backupdir=$XDG_CACHE_HOME/nvim/backup// -set directory=$XDG_CACHE_HOME/nvim/swap// -set undodir=$XDG_CACHE_HOME/nvim/undo// - -filetype plugin on -scriptencoding utf-8 -syntax on - -" General key mappings - map - map - map - map - - no k - no j - no h - no l - - let mapleader = "," - - " Visually select the text that was last edited/pasted - nmap gV `[v`] - - no ; : - -augroup General - au! - autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o - autocmd bufwritepost init.vim source $MYVIMRC -augroup END - -call has('python3') - -if empty(glob($XDG_CONFIG_HOME . '/nvim/autoload/plug.vim')) - silent !curl -fLo $XDG_CONFIG_HOME/nvim/autoload/plug.vim --create-dirs - \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim - - silent !pip3 install pynvim - - augroup Plug - au! - autocmd VimEnter * PlugInstall - - " Bubble single lines with vim-unimpaired - nmap [e - nmap ]e - - " Bubble multiple lines with vim-unimpaired - vmap [egv - vmap ]egv - - autocmd BufReadPost fugitive://* set bufhidden=delete - augroup END -endif - -call plug#begin($XDG_DATA_HOME . '/nvim/plugged') - -Plug '/usr/bin/fzf' - nnoremap p :call fzf#run({ 'sink': 'e' }) - -Plug 'dyng/ctrlsf.vim' -Plug 'godlygeek/tabular' -Plug 'itchyny/lightline.vim' -Plug 'junegunn/goyo.vim' -Plug 'junegunn/limelight.vim' - let g:limelight_conceal_ctermfg = 'gray' - autocmd! User GoyoEnter Limelight - autocmd! User GoyoLeave Limelight! - -Plug 'kana/vim-textobj-user' -Plug 'markonm/traces.vim' -Plug 'mbbill/undotree' - nn u :UndotreeToggle :UndotreeFocus - -Plug 'mg979/vim-visual-multi', {'branch': 'master'} -Plug 'neoclide/coc.nvim', {'branch': 'release'} -Plug 'preservim/nerdtree' - nnoremap n :NERDTreeFocus - -Plug 'rstacruz/vim-closer' -Plug 'sheerun/vim-polyglot' -Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets' -Plug 'terryma/vim-expand-region' -Plug 'tommcdo/vim-exchange' -Plug 'tpope/vim-abolish' -Plug 'tpope/vim-commentary' -Plug 'tpope/vim-fugitive' -Plug 'tpope/vim-repeat' -Plug 'tpope/vim-surround' -Plug 'tpope/vim-unimpaired' - -call plug#end() diff --git a/.config/nvim/lua/config/core.lua b/.config/nvim/lua/config/core.lua new file mode 100644 index 0000000..9df143e --- /dev/null +++ b/.config/nvim/lua/config/core.lua @@ -0,0 +1,35 @@ +local o = vim.opt +local wo = vim.wo +local bo = vim.bo + +-- Global dirs +local cachedir = os.getenv("XDG_CACHE_HOME") +o.backupdir = cachedir .. "/nvim/backup/" +o.directory = cachedir .. "/nvim/swap/" +o.undodir = cachedir .. "/nvim/undo/" + +-- Global +o.breakindent = true +o.clipboard = "unnamedplus" +o.compatible = false +o.encoding = "utf-8" +o.expandtab = true +o.hidden = true +o.hlsearch = false +o.ignorecase = true +o.laststatus = 2 +o.listchars = { eol = '↲', tab = '▸ ', trail = '·' } +o.relativenumber = true +o.shiftwidth = 2 +o.showmode = false +o.smartcase = true +o.smarttab = true +o.softtabstop = 2 +o.synmaxcol = 150 +o.tabstop = 4 +o.undofile = true +o.wildmenu = true + +-- Window + +-- Buffer diff --git a/.config/nvim/lua/config/keymap.lua b/.config/nvim/lua/config/keymap.lua new file mode 100644 index 0000000..f27bd3d --- /dev/null +++ b/.config/nvim/lua/config/keymap.lua @@ -0,0 +1,35 @@ +local keymap = vim.keymap.set +local opts = { silent = true } + +vim.g.mapleader = "," + +-- Modes +-- Normal = "n", +-- Insert = "i", +-- Visual = "v", +-- Visual Block = "x", +-- Term = "t", +-- Command = "c" + +keymap("n", "", "", opts) +keymap("n", "", "", opts) +keymap("n", "", "", opts) +keymap("n", "", "", opts) + +keymap("n", "", "h", { noremap = true }) +keymap("n", "", "j", { noremap = true }) +keymap("n", "", "k", { noremap = true }) +keymap("n", "", "l", { noremap = true }) + +keymap("n", "gV", "`[v`]", opts) + +keymap("n", ";", ":", { noremap = true }) + +-- Bubble single lines with vim-unimpaired +keymap("n", "", "[e", opts) +keymap("n", "", "]e", opts) + +-- Bubble multiple lines with vim-unimpaired +keymap("v", "", "[egv", opts) +keymap("v", "", "]egv", opts) + diff --git a/.config/nvim/lua/config/plugins.lua b/.config/nvim/lua/config/plugins.lua new file mode 100644 index 0000000..ee1fa31 --- /dev/null +++ b/.config/nvim/lua/config/plugins.lua @@ -0,0 +1,80 @@ +local fn = vim.fn + +local install_path = fn.stdpath "data" .. "/site/pack/packer/start/packer.nvim" +if fn.empty(fn.glob(install_path)) > 0 then + PACKER_BOOTSTRAP = fn.system { + "git", + "clone", + "--depth", + "1", + "https://github.com/wbthomason/packer.nvim", + install_path, + } + print "Installing packer close and reopen Neovim..." + vim.cmd [[packadd packer.nvim]] +end + +vim.cmd [[ + augroup packer_user_config + autocmd! + autocmd BufWritePost plugins.lua source | PackerSync + augroup end +]] + +local status_ok, packer = pcall(require, "packer") +if not status_ok then + return +end + +packer.init { + display = { + open_fn = function() + return require("packer.util").float { border = "rounded" } + end, + }, +} + +return packer.startup(function(use) + -- Utilities + use { "wbthomason/packer.nvim", opt = true } + use { "mbbill/undotree" } + use { "nvim-lua/plenary.nvim" } + use { "nvim-telescope/telescope.nvim" } + use { + "nvim-treesitter/nvim-treesitter", + event = "BufEnter", + run = ":TSUpdate", + config = [[require('config.treesitter')]] + } + use { "tpope/vim-fugitive", event = "User InGitRepo" } + + -- Editing + use { "godlygeek/tabular" } + use { "kana/vim-textobj-user" } + use { "mg979/vim-visual-multi", branch = "master" } + use { "terryma/vim-expand-region" } + use { "tommcdo/vim-exchange", event = "VimEnter" } + use { "tpope/vim-abolish" } + use { "tpope/vim-commentary", event = "VimEnter" } + use { "tpope/vim-repeat", event = "VimEnter" } + use { "tpope/vim-surround", event = "VimEnter" } + use { "windwp/nvim-autopairs" } + + -- UI + use { "junegunn/goyo.vim" } + use { "junegunn/limelight.vim" } + use { "markonm/traces.vim" } + + -- Searching + use { "dyng/ctrlsf.vim" } + + -- LSP + use { "neovim/nvim-lspconfig" } + use { "williamboman/nvim-lsp-installer" } + use { "jose-elias-alvarez/null-ls.nvim" } + + if PACKER_BOOTSTRAP then + require("packer").sync() + end +end) + diff --git a/.config/nvim/lua/config/treesitter.lua b/.config/nvim/lua/config/treesitter.lua new file mode 100644 index 0000000..63b6dde --- /dev/null +++ b/.config/nvim/lua/config/treesitter.lua @@ -0,0 +1,51 @@ +require("nvim-treesitter.configs").setup({ + ensure_installed = { + "bash", + "c", + "cmake", + "cpp", + "css", + "dockerfile", + "glsl", + "graphql", + "haskell", + "http", + "html", + "java", + "javascript", + "jsdoc", + "json", + "json5", + "latex", + "lua", + "markdown", + "ninja", + "nix", + "org", + "perl", + "php", + "pug", + "python", + "regex", + "rst", + "ruby", + "rust", + "scala", + "scss", + "toml", + "tsx", + "typescript", + "vim", + "yaml", + "zig" + }, + ignore_install = {}, + highlight = { + enable = true, + disable = {}, + }, + indent = { + enable = true, + } +}) + diff --git a/.gitignore b/.gitignore index c51360f..6dccebd 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ .config/configstore .config/dconf .config/nvim/autoload/ +.config/nvim/plugin/ .config/pulse/ .config/zsh/.zcompdump