From 37afe78942cafc11aadfa81e485c37ea34300d5c Mon Sep 17 00:00:00 2001 From: Michael Bradley Date: Sat, 5 Apr 2025 20:11:54 -0400 Subject: [PATCH] First draft at going back to nvim --- bombadil.toml | 2 +- lvim/config.lua | 161 ------------------------------------ nvim/init.lua | 2 + nvim/lua/config/lazy.lua | 37 +++++++++ nvim/lua/config/vimopts.lua | 7 ++ nvim/lua/plugins.lua | 32 +++++++ scripts/env_vars.sh | 1 - vim/vimrc | 6 +- zsh/.zshrc | 3 +- 9 files changed, 82 insertions(+), 169 deletions(-) delete mode 100644 lvim/config.lua create mode 100644 nvim/init.lua create mode 100644 nvim/lua/config/lazy.lua create mode 100644 nvim/lua/config/vimopts.lua create mode 100644 nvim/lua/plugins.lua diff --git a/bombadil.toml b/bombadil.toml index 9810c71..5098c09 100644 --- a/bombadil.toml +++ b/bombadil.toml @@ -38,7 +38,7 @@ gtk3 = { source = "gtk/gtk-3.0", target = ".config/gtk-3.0" } hypr = { source = "hypr", target = ".config/hypr" } kitty = { source = "kitty", target = ".config/kitty" } lsd = { source = "lsd", target = ".config/lsd" } -lvim = { source = "lvim/config.lua", target = ".config/lvim/config.lua" } +nvim = { source = "nvim", target = ".config/nvim" } rofi = { source = "rofi", target = ".config/rofi" } steam = { source = "steam/steam_dev.cfg", target = ".steam/steam/steam_dev.cfg" } swaylock = { source = "swaylock", target = ".config/swaylock" } diff --git a/lvim/config.lua b/lvim/config.lua deleted file mode 100644 index 524048d..0000000 --- a/lvim/config.lua +++ /dev/null @@ -1,161 +0,0 @@ ---[[ - THESE ARE EXAMPLE CONFIGS FEEL FREE TO CHANGE TO WHATEVER YOU WANT - `lvim` is the global options object -]] - -lvim.transparent_window = true -lvim.plugins = { - { "catppuccin/nvim" }, - { "gpanders/editorconfig.nvim" }, - { - "windwp/nvim-ts-autotag", - config = function() - require("nvim-ts-autotag").setup() - end, - }, - { "mrjones2014/nvim-ts-rainbow" }, - { - "romgrk/nvim-treesitter-context", - config = function() - require("treesitter-context").setup { - enable = true, -- Enable this plugin (Can be enabled/disabled later via commands) - throttle = true, -- Throttles plugin updates (may improve performance) - max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit. - patterns = { -- Match patterns for TS nodes. These get wrapped to match at word boundaries. - -- For all filetypes - -- Note that setting an entry here replaces all other patterns for this entry. - -- By setting the 'default' entry below, you can control which nodes you want to - -- appear in the context window. - default = { - 'class', - 'function', - 'method', - }, - }, - } - end - }, - { - "ray-x/lsp_signature.nvim", - event = "BufRead", - config = function() require "lsp_signature".on_attach() end, - }, - { - "folke/todo-comments.nvim", - event = "BufRead", - config = function() - require("todo-comments").setup() - end, - }, - { "f-person/git-blame.nvim" }, -} - --- vim options ---vim.opt.shiftwidth = 2 ---vim.opt.tabstop = 2 -vim.opt.relativenumber = true -vim.opt.clipboard = "unnamedplus" -vim.opt.wrap = true -vim.opt.spell = true -vim.opt.spelllang = "en" - --- general -lvim.log.level = "info" -lvim.format_on_save = { - enabled = true, - pattern = "*.lua", - timeout = 1000, -} --- to disable icons and use a minimalist setup, uncomment the following --- lvim.use_icons = false - --- keymappings -lvim.leader = "space" --- add your own keymapping -lvim.keys.normal_mode[""] = ":w" - --- lvim.keys.normal_mode[""] = ":BufferLineCycleNext" --- lvim.keys.normal_mode[""] = ":BufferLineCyclePrev" - --- -- Use which-key to add extra bindings with the leader-key prefix --- lvim.builtin.which_key.mappings["W"] = { "noautocmd w", "Save without formatting" } --- lvim.builtin.which_key.mappings["P"] = { "Telescope projects", "Projects" } - --- -- Change theme settings --- lvim.colorscheme = "lunar" - --- After changing plugin config exit and reopen LunarVim, Run :PackerSync -lvim.builtin.alpha.active = true -lvim.builtin.alpha.mode = "dashboard" -lvim.builtin.terminal.active = true -lvim.builtin.nvimtree.setup.view.side = "left" -lvim.builtin.nvimtree.setup.renderer.icons.show.git = true - --- Automatically install missing parsers when entering buffer -lvim.builtin.treesitter.auto_install = true -lvim.builtin.treesitter.rainbow.enable = true - --- lvim.builtin.treesitter.ignore_install = { "haskell" } - --- -- generic LSP settings - --- --- disable automatic installation of servers --- lvim.lsp.installer.setup.automatic_installation = false - --- ---configure a server manually. IMPORTANT: Requires `:LvimCacheReset` to take effect --- ---see the full default list `:lua =lvim.lsp.automatic_configuration.skipped_servers` --- vim.list_extend(lvim.lsp.automatic_configuration.skipped_servers, { "pyright" }) --- local opts = {} -- check the lspconfig documentation for a list of all possible options --- require("lvim.lsp.manager").setup("pyright", opts) - --- ---remove a server from the skipped list, e.g. eslint, or emmet_ls. IMPORTANT: Requires `:LvimCacheReset` to take effect --- ---`:LvimInfo` lists which server(s) are skipped for the current filetype --- lvim.lsp.automatic_configuration.skipped_servers = vim.tbl_filter(function(server) --- return server ~= "emmet_ls" --- end, lvim.lsp.automatic_configuration.skipped_servers) - --- -- you can set a custom on_attach function that will be used for all the language servers --- -- See --- lvim.lsp.on_attach_callback = function(client, bufnr) --- local function buf_set_option(...) --- vim.api.nvim_buf_set_option(bufnr, ...) --- end --- --Enable completion triggered by --- buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc") --- end - --- -- linters and formatters --- local formatters = require "lvim.lsp.null-ls.formatters" --- formatters.setup { --- { command = "stylua" }, --- { --- command = "prettier", --- extra_args = { "--print-width", "100" }, --- filetypes = { "typescript", "typescriptreact" }, --- }, --- } --- local linters = require "lvim.lsp.null-ls.linters" --- linters.setup { --- { command = "flake8", filetypes = { "python" } }, --- { --- command = "shellcheck", --- args = { "--severity", "warning" }, --- }, --- } - --- -- Additional Plugins --- lvim.plugins = { --- { --- "folke/trouble.nvim", --- cmd = "TroubleToggle", --- }, --- } - --- -- Autocommands (`:help autocmd`) --- vim.api.nvim_create_autocmd("FileType", { --- pattern = "zsh", --- callback = function() --- -- let treesitter use bash highlight for zsh files as well --- require("nvim-treesitter.highlight").attach(0, "bash") --- end, --- }) diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..bbb808a --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,2 @@ +require("config.vimopts") +require("config.lazy") diff --git a/nvim/lua/config/lazy.lua b/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..cea0695 --- /dev/null +++ b/nvim/lua/config/lazy.lua @@ -0,0 +1,37 @@ +-- Modified from https://lazy.folke.io/installation + +-- Bootstrap lazy.nvim +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +-- Make sure to setup `mapleader` and `maplocalleader` before +-- loading lazy.nvim so that mappings are correct. +-- This is also a good place to setup other settings (vim.opt) +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +-- Setup lazy.nvim +require("lazy").setup({ + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + -- install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, +}) diff --git a/nvim/lua/config/vimopts.lua b/nvim/lua/config/vimopts.lua new file mode 100644 index 0000000..c814847 --- /dev/null +++ b/nvim/lua/config/vimopts.lua @@ -0,0 +1,7 @@ +vim.opt.shiftwidth = 4 +vim.opt.tabstop = 4 +vim.opt.relativenumber = true +vim.opt.clipboard = "unnamedplus" +vim.opt.wrap = true +vim.opt.spell = true +vim.opt.spelllang = "en" diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua new file mode 100644 index 0000000..4e182d7 --- /dev/null +++ b/nvim/lua/plugins.lua @@ -0,0 +1,32 @@ +return { + "gpanders/editorconfig.nvim", + "mhartington/formatter.nvim", + "f-person/git-blame.nvim", + { + "williamboman/mason.nvim", + config = function() + require("mason").setup() + end + }, + { + "catppuccin/nvim", + name = "catppuccin", + priority = 1000, + config = function() + require("catppuccin").setup({ + flavour = "mocha", + transparent_background = true, + }) + vim.cmd.colorscheme "catppuccin" + end + }, + "mfussenegger/nvim-dap", + "mfussenegger/nvim-lint", + "neovim/nvim-lspconfig", + "nvim-treesitter/nvim-treesitter", + "nvim-treesitter/nvim-treesitter-context", + { + "folke/todo-comments.nvim", + dependencies = { "nvim-lua/plenary.nvim" } + }, +} diff --git a/scripts/env_vars.sh b/scripts/env_vars.sh index 8cd740c..63dd663 100644 --- a/scripts/env_vars.sh +++ b/scripts/env_vars.sh @@ -13,7 +13,6 @@ export RECOLL_CONFDIR="$XDG_CONFIG_HOME/recoll" export HISTFILE="$XDG_STATE_HOME/zsh/history" export ZSH="$XDG_DATA_HOME/oh-my-zsh" export RANDFILE="$XDG_CACHE_HOME/.rnd" -export VIMINIT='let $MYVIMRC = !has("nvim") ? "$XDG_CONFIG_HOME/vim/vimrc" : "$XDG_CONFIG_HOME/nvim/init.vim" | so $MYVIMRC' alias wget='wget --hsts-file="$XDG_DATA_HOME/wget-hsts"' export W3M_DIR="$XDG_DATA_HOME/w3m" export NUGET_PACKAGES="$XDG_CACHE_HOME/NuGetPackages" diff --git a/vim/vimrc b/vim/vimrc index fd6da46..198f6df 100644 --- a/vim/vimrc +++ b/vim/vimrc @@ -15,10 +15,8 @@ set viewdir=$XDG_STATE_HOME/vim/view | call mkdir(&viewdir, 'p') if !has('nvim') | set viminfofile=$XDG_STATE_HOME/vim/viminfo | endif -set number -set nocompatible +set relativenumber filetype on syntax on -set cursorline -set cursorcolumn +set shiftwidth=4 set tabstop=4 diff --git a/zsh/.zshrc b/zsh/.zshrc index a58d9c2..17cd483 100755 --- a/zsh/.zshrc +++ b/zsh/.zshrc @@ -97,11 +97,10 @@ help() { "$@" --help 2>&1 | bat --plain --language=help } -alias n="nvim" if [[ "$TERM" == "linux" ]] ; then export EDITOR="vim" else - export EDITOR="lvim" + export EDITOR="nvim" fi alias v="$EDITOR" alias sv="sudo vim"