commit 6c3fc4dbeb082204bf5461b937349cd5a5ca52ff Author: aprzn Date: Fri Jul 14 00:33:45 2023 -0400 initial commit diff --git a/configs/nvim/.gitignore b/configs/nvim/.gitignore new file mode 100644 index 0000000..252961b --- /dev/null +++ b/configs/nvim/.gitignore @@ -0,0 +1,2 @@ +colorscheme +lua/local.lua diff --git a/configs/nvim/coc-settings.json b/configs/nvim/coc-settings.json new file mode 100644 index 0000000..9fea980 --- /dev/null +++ b/configs/nvim/coc-settings.json @@ -0,0 +1,3 @@ +{ + "rust-analyzer.checkOnSave.command": "clippy" +} diff --git a/configs/nvim/init.lua b/configs/nvim/init.lua new file mode 100644 index 0000000..95a5634 --- /dev/null +++ b/configs/nvim/init.lua @@ -0,0 +1,5 @@ +require('packages') +require('bindings') +require('autocmds') +require('nvcfg') +require('local') diff --git a/configs/nvim/lua/autocmds.lua b/configs/nvim/lua/autocmds.lua new file mode 100644 index 0000000..4129871 --- /dev/null +++ b/configs/nvim/lua/autocmds.lua @@ -0,0 +1,31 @@ +vim.api.nvim_create_augroup("aprzn", {clear = true}) +vim.api.nvim_create_autocmd("BufWritePost", { + group = "aprzn", + pattern = {"*/.config/nvim/*.lua", "*/.config/nvim/lua/*.lua"}, + command = "source $MYVIMRC" +}) -- reload config file on save + +-- vim.api.nvim_create_autocmd("VimEnter", { +-- group = "aprzn", +-- pattern = {"*"}, +-- command = "NERDTree" +-- }) -- open nerdtree on start + +vim.api.nvim_create_autocmd("CursorHold", { + group = "aprzn", + pattern = {"*"}, + command = "call CocActionAsync('highlight')" +}) -- highlight matching tokens when not moving cursor + +vim.api.nvim_create_autocmd("ColorScheme", { + group = "aprzn", + pattern = {"*"}, + callback = function(ev) + local file = io.open(vim.fn.stdpath('config') .. "/colorscheme", "w") + local cs = ev.match + file:write(cs) + file:close() + end +}) -- save colorscheme + +return false diff --git a/configs/nvim/lua/bindings.lua b/configs/nvim/lua/bindings.lua new file mode 100644 index 0000000..05f72f8 --- /dev/null +++ b/configs/nvim/lua/bindings.lua @@ -0,0 +1,80 @@ +local map = vim.api.nvim_set_keymap +local opts = { noremap = true, silent = true } +vim.g.mapleader = ' ' +map('n', '', '"zdd"zp', opts) -- Move line down +map('n', '', '"zdd"zkP', opts) -- Move line up +map('i', '', '', opts) -- return to normalcy +map('n', '', ':q', opts) -- c-d to close file +map('i', '', 'coc#pum#visible() ? coc#pum#next(1) : "\\"', + {noremap = true, silent = true, expr = true}) -- next item in coc list +map('i', '', 'coc#pum#visible() ? coc#pum#prev(1) : "\\"', + {noremap = true, silent = true, expr = true}) -- prev item in coc list +map('n', '', '(coc-rename)', opts) -- rename +map('n', '', 'TagbarToggle', opts) -- show ctags +vim.keymap.set('n', 'zR', require('ufo').openAllFolds) -- ufo +vim.keymap.set('n', 'zM', require('ufo').closeAllFolds) -- ufo +vim.keymap.set('n', '', function() + vim.g.neovide_scale_factor = vim.g.neovide_scale_factor * 0.9 +end) +vim.keymap.set('n', '', function() + vim.g.neovide_scale_factor = vim.g.neovide_scale_factor * 1.1 +end) + + +vim.g.tagbar_map_showproto = '' -- remove tagbar space bar conflict + + +-- whichkey +local wk = require('whichkey_setup') +wk.config{ + hide_statusline = true, + default_keymap_settings = { + silent=true, + noremap=true, + }, + default_mode='n' +} + +wk.register_keymap('leader', { + s = { + name = '+jump', + d = {'(coc-definition)', 'definition'}, + r = {'(coc-references)', 'references'}, + t = {'(coc-type-definition)', 'type definition'}, + s = {'BLines', 'fzf current buffer'}, + S = {'Lines', 'fzf all buffers'}, + }, + nt = {'NERDTreeToggle', 'nerdtree'}, -- originally nt + rc = {'tabedit $MYVIMRCNERDTree ~/.config/nvim/', 'nvim config'}, -- originally rc + c = { + name = '+appearance', + d = {'set background=dark', 'dark'}, + l = {'set background=light', 'light'}, + }, + e = {'CocDiagnostics', 'errors'}, + h = {'call CocActionAsync("doHover")', 'hover'}, + q = { + name = "+modify", + q = {'(coc-fix-current)', 'quick fix'}, + c = {'(coc-codeaction-selected)', 'code actions'}, + }, + l = { + name = '+latex', + c = {'VimtexCompile', 'toggle compile'}, + }, + b = { + name = '+buffer', + m = {'h', 'left'}, + n = {'j', 'down'}, + e = {'k', 'up'}, + i = {'l', 'right'}, + M = {'H', 'move left'}, + N = {'J', 'move down'}, + E = {'K', 'move up'}, + I = {'L', 'move right'}, + + t = {'Telescope buffers', 'goto fuzzy'}, + }, +}) + +return false diff --git a/configs/nvim/lua/nvcfg.lua b/configs/nvim/lua/nvcfg.lua new file mode 100644 index 0000000..e6f57cd --- /dev/null +++ b/configs/nvim/lua/nvcfg.lua @@ -0,0 +1,31 @@ +vim.opt.expandtab = true -- tabs to spaces +vim.opt.shiftwidth = 2 -- 4 spaces for < and > TODO: change back to 4 +vim.opt.softtabstop = 2 -- 4 spaces in a tab TODO: change back to 4 +vim.opt.number = true -- Show line numbers +vim.opt.relativenumber = true -- Show other line numbers as relative +vim.opt.smartindent = true -- Smart indent +vim.g.airline_powerline_fonts = 1 -- nice icons for airline +vim.g.wrap = false -- don't wrap lines +vim.g.termguicolors = true -- better colors +vim.g.gruvbox_italic = 1 -- gruvbox can use italic font +vim.g.material_style = 'oceanic' -- material theme +vim.g.bf_array_mode = 2 -- cyclic brainfuck memory +vim.g.bf_value_mode = 2 -- cyclic brainfuck values + +-- load colorscheme +local file = io.open(vim.fn.stdpath('config') .. "/colorscheme", "r") +local cs = file:read("l") +file:close() +vim.cmd("colorscheme " .. cs) + +-- ufo +vim.o.foldcolumn = '1' +vim.o.foldlevel = 99 +vim.o.foldlevelstart = 99 +vim.o.foldenable = true +require('ufo').setup() + +-- autoclose +require('autoclose').setup({}) + +return false diff --git a/configs/nvim/lua/packages.lua b/configs/nvim/lua/packages.lua new file mode 100644 index 0000000..6548474 --- /dev/null +++ b/configs/nvim/lua/packages.lua @@ -0,0 +1,53 @@ +vim.opt.termguicolors = true +require('packer').startup(function(use) + use 'wbthomason/packer.nvim' -- Ensure that Packer stays updated + + -- Color Schemes + use { 'dracula/vim', as = 'dracula' } + use 'arcticicestudio/nord-vim' + use 'joshdick/onedark.vim' + use 'morhetz/gruvbox' + use 'sainnhe/everforest' + use 'sainnhe/edge' + use 'edeneast/nightfox.nvim' + use 'catppuccin/vim' + use 'drewtempelmeyer/palenight.vim' + use 'ghifarit53/tokyonight-vim' + use 'hzchirs/vim-material' + + -- Language Support + use { 'neoclide/coc.nvim', branch = 'release' } -- LSPs + use 'preservim/tagbar' -- Ctags + use 'lervag/vimtex' -- LaTeX + use 'sirtaj/vim-openscad' -- OpenSCAD syntax highlighting, etc. + use 'meatballs/vim-xonsh' -- xsh syntax highlighting + use 'vlelo/arduino-helper.nvim' -- Arduino + use 'habamax/vim-godot' -- GDScript + use 'fruit-in/brainfuck-vim' -- brainfuck + use 'mattn/emmet-vim' -- html emmets + use { + 'ModProg/cargo.nvim', + run = 'makers release', + config = function() + require"cargo".setup() + end + } + + use { + 'nvim-telescope/telescope.nvim', tag = '0.1.1', + requires = {{'nvim-lua/plenary.nvim'}} + } + use {'AckslD/nvim-whichkey-setup.lua', requires={ 'liuchengxu/vim-which-key' }} -- keybind helper popup + use 'junegunn/fzf.vim' -- fuzzy finder + use 'tpope/vim-commentary' -- Comment things + use 'preservim/nerdtree' -- NERDTree: File Viewer + use 'vim-airline/vim-airline' -- status bar + use 'm4xshen/autoclose.nvim' -- autoclosing brackets, not sure if I'll keep it + use 'tpope/vim-surround' -- surround text with brackets + use {'kevinhwang91/nvim-ufo', requires = 'kevinhwang91/promise-async'} -- better folding + use 'tpope/vim-fugitive' -- git + + use 'ryanoasis/vim-devicons' -- icons for NERDTree (must be loaded last) +end) + +return false diff --git a/configs/nvim/plugin/packer_compiled.lua b/configs/nvim/plugin/packer_compiled.lua new file mode 100644 index 0000000..f72c344 --- /dev/null +++ b/configs/nvim/plugin/packer_compiled.lua @@ -0,0 +1,279 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + +_G._packer = _G._packer or {} +_G._packer.inside_compile = true + +local time +local profile_info +local should_profile = false +if should_profile then + local hrtime = vim.loop.hrtime + profile_info = {} + time = function(chunk, start) + if start then + profile_info[chunk] = hrtime() + else + profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 + end + end +else + time = function(chunk, start) end +end + +local function save_profiles(threshold) + local sorted_times = {} + for chunk_name, time_taken in pairs(profile_info) do + sorted_times[#sorted_times + 1] = {chunk_name, time_taken} + end + table.sort(sorted_times, function(a, b) return a[2] > b[2] end) + local results = {} + for i, elem in ipairs(sorted_times) do + if not threshold or threshold and elem[2] > threshold then + results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' + end + end + if threshold then + table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)') + end + + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/home/aprzn/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/aprzn/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/aprzn/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/aprzn/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/home/aprzn/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +time([[Luarocks path setup]], false) +time([[try_loadstring definition]], true) +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) + if not success then + vim.schedule(function() + vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) + end) + end + return result +end + +time([[try_loadstring definition]], false) +time([[Defining packer_plugins]], true) +_G.packer_plugins = { + ["arduino-helper.nvim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/arduino-helper.nvim", + url = "https://github.com/vlelo/arduino-helper.nvim" + }, + ["autoclose.nvim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/autoclose.nvim", + url = "https://github.com/m4xshen/autoclose.nvim" + }, + ["brainfuck-vim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/brainfuck-vim", + url = "https://github.com/fruit-in/brainfuck-vim" + }, + ["cargo.nvim"] = { + config = { "\27LJ\2\n3\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\ncargo\frequire\0" }, + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/cargo.nvim", + url = "https://github.com/ModProg/cargo.nvim" + }, + ["coc.nvim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/coc.nvim", + url = "https://github.com/neoclide/coc.nvim" + }, + dracula = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/dracula", + url = "https://github.com/dracula/vim" + }, + edge = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/edge", + url = "https://github.com/sainnhe/edge" + }, + ["emmet-vim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/emmet-vim", + url = "https://github.com/mattn/emmet-vim" + }, + everforest = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/everforest", + url = "https://github.com/sainnhe/everforest" + }, + ["fzf.vim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/fzf.vim", + url = "https://github.com/junegunn/fzf.vim" + }, + gruvbox = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/gruvbox", + url = "https://github.com/morhetz/gruvbox" + }, + nerdtree = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/nerdtree", + url = "https://github.com/preservim/nerdtree" + }, + ["nightfox.nvim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/nightfox.nvim", + url = "https://github.com/edeneast/nightfox.nvim" + }, + ["nord-vim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/nord-vim", + url = "https://github.com/arcticicestudio/nord-vim" + }, + ["nvim-ufo"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/nvim-ufo", + url = "https://github.com/kevinhwang91/nvim-ufo" + }, + ["nvim-whichkey-setup.lua"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/nvim-whichkey-setup.lua", + url = "https://github.com/AckslD/nvim-whichkey-setup.lua" + }, + ["onedark.vim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/onedark.vim", + url = "https://github.com/joshdick/onedark.vim" + }, + ["packer.nvim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/packer.nvim", + url = "https://github.com/wbthomason/packer.nvim" + }, + ["palenight.vim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/palenight.vim", + url = "https://github.com/drewtempelmeyer/palenight.vim" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/plenary.nvim", + url = "https://github.com/nvim-lua/plenary.nvim" + }, + ["promise-async"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/promise-async", + url = "https://github.com/kevinhwang91/promise-async" + }, + tagbar = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/tagbar", + url = "https://github.com/preservim/tagbar" + }, + ["telescope.nvim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/telescope.nvim", + url = "https://github.com/nvim-telescope/telescope.nvim" + }, + ["tokyonight-vim"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/tokyonight-vim", + url = "https://github.com/ghifarit53/tokyonight-vim" + }, + vim = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/vim", + url = "https://github.com/catppuccin/vim" + }, + ["vim-airline"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/vim-airline", + url = "https://github.com/vim-airline/vim-airline" + }, + ["vim-commentary"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/vim-commentary", + url = "https://github.com/tpope/vim-commentary" + }, + ["vim-devicons"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/vim-devicons", + url = "https://github.com/ryanoasis/vim-devicons" + }, + ["vim-fugitive"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/vim-fugitive", + url = "https://github.com/tpope/vim-fugitive" + }, + ["vim-godot"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/vim-godot", + url = "https://github.com/habamax/vim-godot" + }, + ["vim-material"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/vim-material", + url = "https://github.com/hzchirs/vim-material" + }, + ["vim-openscad"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/vim-openscad", + url = "https://github.com/sirtaj/vim-openscad" + }, + ["vim-surround"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/vim-surround", + url = "https://github.com/tpope/vim-surround" + }, + ["vim-which-key"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/vim-which-key", + url = "https://github.com/liuchengxu/vim-which-key" + }, + ["vim-xonsh"] = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/vim-xonsh", + url = "https://github.com/meatballs/vim-xonsh" + }, + vimtex = { + loaded = true, + path = "/home/aprzn/.local/share/nvim/site/pack/packer/start/vimtex", + url = "https://github.com/lervag/vimtex" + } +} + +time([[Defining packer_plugins]], false) +-- Config for: cargo.nvim +time([[Config for cargo.nvim]], true) +try_loadstring("\27LJ\2\n3\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\ncargo\frequire\0", "config", "cargo.nvim") +time([[Config for cargo.nvim]], false) + +_G._packer.inside_compile = false +if _G._packer.needs_bufread == true then + vim.cmd("doautocmd BufRead") +end +_G._packer.needs_bufread = false + +if should_profile then save_profiles() end + +end) + +if not no_errors then + error_msg = error_msg:gsub('"', '\\"') + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end diff --git a/configs/nvim/spell/en.utf-8.add b/configs/nvim/spell/en.utf-8.add new file mode 100644 index 0000000..16e8416 --- /dev/null +++ b/configs/nvim/spell/en.utf-8.add @@ -0,0 +1,3 @@ +EECS +Berman +datasets diff --git a/configs/nvim/spell/en.utf-8.add.spl b/configs/nvim/spell/en.utf-8.add.spl new file mode 100644 index 0000000..2483089 Binary files /dev/null and b/configs/nvim/spell/en.utf-8.add.spl differ diff --git a/link.py b/link.py new file mode 100755 index 0000000..1a42cef --- /dev/null +++ b/link.py @@ -0,0 +1,19 @@ +#!/usr/bin/python3 + +import os + +if __name__ == "__main__": + cfg_dir = os.getenv("XDG_CONFIG_HOME", os.path.expanduser('~/.config/')) + cfgs = os.listdir(cfg_dir) + os.chdir('./configs/') + for filename in os.listdir(): + print(filename, end=':\n') + if filename in cfgs and os.path.islink(f'{cfg_dir}/{filename}'): + print(' previously linked! unlinking...') + os.remove(f'{cfg_dir}/{filename}') + elif filename in cfgs: + print(' file already exists! backing up...'); + os.rename(f'{cfg_dir}/{filename}', f'{cfg_dir}/{filename}.apr_bak') + print(' linking...') + os.symlink(f'{os.getcwd()}/{filename}', f'{cfg_dir}/{filename}') +