Configuration for my NixOS based systems and Home Manager
at othinus 241 lines 6.7 kB view raw
1-- Leader 2vim.g.mapleader = ";" 3vim.g.maplocalleader = "," 4-- These need to happend before we load plugins 5-- Load Plugins 6require("plugins") 7-- Color Scheme 8vim.cmd.colorscheme "catppuccin" 9--vim.cmd([[colorscheme kanagawa]]) 10-- Config for Nord, which I usually use 11--vim.g.nord_italic = false 12--vim.g.nord_bold = false 13--vim.opt.background = "light" 14vim.opt.background = "dark" 15 16 17-- Formatting and vim config 18vim.opt.expandtab = true 19vim.opt.tabstop = 4 20vim.opt.shiftwidth = 4 21vim.opt.termguicolors = true 22vim.opt.cursorcolumn = true 23vim.opt.cursorline = true 24vim.opt.hidden = true 25vim.opt.colorcolumn = "120" 26vim.opt.spelllang = "en_us" 27vim.opt.number = false 28vim.opt.relativenumber = false 29-- I don't like word wrapping 30vim.opt.wrap = false 31vim.opt.mouse = vim.opt.mouse - "a" 32-- TODO: revisit this 33vim.opt.foldlevelstart = 20 34vim.opt.conceallevel = 3 35-- Show whitespace as dots 36vim.opt.lcs = vim.opt.lcs + "space:·" 37vim.opt.list = true 38vim.opt.textwidth = 88 39 40-- No sexp wrapping parens 41vim.g.sexp_enable_insert_mode_mappings = 1 42 43-- LuaLine Config 44require("lualine").setup( 45 { 46 options = { 47 icons_enabled = true, 48 theme = "auto" 49 } 50 } 51) 52 53-- CTags 54vim.opt.tags = vim.opt.tags + vim.fn.expand("~/.local/tmp/ctags") + vim.fn.expand("~/repos/gerbil/src/TAGS") 55 56-- Conjure 57 58-- Gerbil Scheme 59local set_gerbil = function() 60 vim.g["conjure#client#scheme#stdio#command"] = "gxi" 61 vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "%d*> " 62 vim.g["conjure#client#scheme#stdio#value_prefix_pattern"] = false 63end 64set_gerbil() 65vim.api.nvim_create_user_command("ConjureGerbil", set_gerbil, {}) 66 67 68 69-- Chibi-scheme 70local set_chibi = function() 71 vim.g["conjure#client#scheme#stdio#command"] = "chibi-scheme -R" 72 vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "=> $?" 73 vim.g["conjure#client#scheme#stdio#value_prefix_pattern"] = true 74end 75vim.api.nvim_create_user_command("ConjureChibi", set_chibi, {}) 76-- Chicken Scheme 77local set_chicken = function() 78 vim.g["conjure#client#scheme#stdio#command"] = "csi -quiet -:c" 79 vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "\n-#;%d-> " 80 vim.g["conjure#client#scheme#stdio#value_prefix_pattern"] = true 81end 82vim.api.nvim_create_user_command("ConjureChicken", set_chicken, {}) 83 84-- Neoformat 85vim.g.neoformat_run_all_formatters = 1 86vim.g.neoformat_enabled_python = {"black", "docformatter", "isort"} 87vim.g.neoformat_python_black = { 88 exe = "ruff", 89 stdin = 1, 90 args = {'format', '-q', '-'} 91} 92 93-- KEYMAPS 94 95local keymap = vim.api.nvim_set_keymap 96local noremap = {noremap = true} 97local silentnoremap = {noremap = true, silent = true} 98-- Easier breaking from edit modes 99keymap("n", ";;", "<Esc>", noremap) 100keymap("v", ";;", "<Esc>", noremap) 101keymap("i", ";;", "<Esc>", noremap) 102keymap("t", "<Esc>", "<C-\\><C-n>", noremap) 103-- Tab Navigation 104keymap("n", "<leader>tn", "<cmd>tabnew<CR>", noremap) 105keymap("n", "<leader>tc", "<cmd>tabclose<CR>", noremap) 106keymap("n", "<leader><tab>", "<cmd>tabnext<CR>", noremap) 107keymap("n", "<leader>tt", "<cmd>tabnext<CR>", noremap) 108 109-- buffer navigation 110keymap("n", "<leader>h", "<C-w>h", noremap) 111keymap("n", "<leader>j", "<C-w>j", noremap) 112keymap("n", "<leader>k", "<C-w>k", noremap) 113keymap("n", "<leader>l", "<C-w>l", noremap) 114keymap("n", "<leader>bn", "<cmd>bnext<CR>", noremap) 115keymap("n", "<leader>bp", "<cmd>bprev<CR>", noremap) 116-- close buffer and put previous into current window 117keymap("n", "<leader>bq", "<cmd>bp <BAR> bd #<CR>", noremap) 118-- list buffers 119keymap("n", "<leader>bl", "<cmd>ls<cr>", noremap) 120-- splits 121keymap("n", "<leader>vs", "<cmd>vsplit<cr>", noremap) 122keymap("n", "<leader>ss", "<cmd>split<cr>", noremap) 123keymap("n", "<leader>hs", "<cmd>split<cr>", noremap) 124 125-- Toggle Line Numbers 126keymap("n", "<leader>n", "<cmd>set number! number?<CR>", silentnoremap) 127 128-- Edit this file 129keymap("n", "<leader>ec", "<cmd>e $MYVIMRC<CR>", silentnoremap) 130keymap("n", "<leader>sc", "<cmd>source $MYVIMRC<CR>", silentnoremap) 131 132-- Clear highlights 133keymap("n", "<C-c>", "<cmd>noh<CR>", silentnoremap) 134 135-- Telescope shortcuts 136keymap("n", "<leader>ff", "<cmd>Telescope find_files<CR>", silentnoremap) 137keymap("n", "<leader>fg", "<cmd>Telescope live_grep<CR>", silentnoremap) 138keymap("n", "<leader>fb", "<cmd>Telescope buffers<CR>", silentnoremap) 139keymap("n", "<C-p>", "<cmd>Telescope buffers<CR>", silentnoremap) 140keymap("n", "<leader>fh", "<cmd>Telescope help_tags<CR>", silentnoremap) 141 142-- Remap arrow keys for page navigation 143keymap("n", "<Up>", "<C-y>", silentnoremap) 144keymap("n", "<Down>", "<C-e>", silentnoremap) 145keymap("n", "<Left>", "zh", silentnoremap) 146keymap("n", "<Right>", "zl", silentnoremap) 147 148-- LSP Documentation viewer 149keymap("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", silentnoremap) 150 151-- Autoformat! 152keymap("n", "<C-n>", "<cmd>Neoformat<cr>", silentnoremap) 153 154-- Python Specific 155vim.g.python3_host_prog = vim.fn.expand("~/.envs/nvim/bin/python3") 156 157-- Set up Treesitter 158require("nvim-treesitter.configs").setup( 159 { 160 highlight = { 161 enable = true, 162 disable = {} 163 }, 164 indent = { 165 enable = false, 166 disable = {} 167 }, 168 ensure_installed = { 169 "c", 170 "cpp", 171 "capnp", 172 "cmake", 173 "bash", 174 "dockerfile", 175 "diff", 176 "devicetree", 177 "dot", 178 "ebnf", 179 "elixir", 180 "erlang", 181 "clojure", 182 "fortran", 183 "go", 184 "gomod", 185 "gosum", 186 "graphql", 187 "git_config", 188 "git_rebase", 189 "gitcommit", 190 "gitignore", 191 "gleam", 192 "julia", 193 "fish", 194 "toml", 195 "haskell", 196 "hare", 197 "http", 198 "html", 199 "ini", 200 "json", 201 "jq", 202 "latex", 203 "llvm", 204 "mermaid", 205 "make", 206 "meson", 207 "ninja", 208 "yaml", 209 "python", 210 "proto", 211 "racket", 212 "rst", 213 "scala", 214 "html", 215 "tsx", 216 "rust", 217 "scheme", 218 "fennel", 219 "lua", 220 "markdown", 221 "markdown_inline", 222 "sql", 223 "thrift", 224 "typescript", 225 "verilog", 226 "vim", 227 "zig", 228 "uxntal" 229 } 230 } 231) 232 233-- Set up Which Key? 234require("which-key").setup({}) 235-- ######################## 236--# Require other configs # 237-- ######################## 238-- LSP 239require("lsp") 240-- Completion 241require("completion")