Configuration for my NixOS based systems and Home Manager
at master 179 lines 5.9 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-- Config for Nord, which I usually use 8-- vim.g.nord_italic = false 9-- vim.g.nord_bold = false 10local known_hosts = { 11 ["aleister.packetlost.dev"] = "light", 12 ["aleister.local"] = "light", 13 ["accelerator"] = "light" 14} 15local background = known_hosts[vim.loop.os_gethostname()] 16if not background then 17 background = "dark" 18end 19vim.opt.background = background 20--vim.opt.background = "dark" 21 22-- Formatting and vim config 23vim.opt.expandtab = true 24vim.opt.tabstop = 4 25vim.opt.shiftwidth = 4 26--vim.opt.termguicolors = true 27vim.opt.cursorcolumn = true 28vim.opt.cursorline = true 29vim.opt.hidden = true 30vim.opt.colorcolumn = "120" 31vim.opt.spelllang = "en_us" 32vim.opt.number = false 33vim.opt.relativenumber = false 34-- I don't like word wrapping 35vim.opt.wrap = false 36-- Show whitespace as dots 37vim.opt.lcs = vim.opt.lcs + "space:·" 38vim.opt.list = true 39vim.opt.textwidth = 88 40vim.cmd [[ colorscheme alabaster ]] 41 42-- Force OSC-52 43vim.g.clipboard = { 44 name = 'OSC 52', 45 copy = { 46 ['+'] = require('vim.ui.clipboard.osc52').copy('+'), 47 ['*'] = require('vim.ui.clipboard.osc52').copy('*'), 48 }, 49 paste = { 50 ['+'] = require('vim.ui.clipboard.osc52').paste('+'), 51 ['*'] = require('vim.ui.clipboard.osc52').paste('*'), 52 }, 53} 54 55-- CTags 56vim.opt.tags = vim.opt.tags + vim.fn.expand("~/.local/tmp/ctags") + 57 vim.fn.expand("~/repos/gerbil/src/TAGS") 58 59-- Conjure 60 61-- Gerbil Scheme 62local set_gerbil = function() 63 vim.g["conjure#client#scheme#stdio#command"] = "gxi" 64 vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "%d*> " 65 vim.g["conjure#client#scheme#stdio#value_prefix_pattern"] = false 66end 67set_gerbil() 68vim.api.nvim_create_user_command("ConjureGerbil", set_gerbil, {}) 69 70-- Chibi-scheme 71local set_chibi = function() 72 vim.g["conjure#client#scheme#stdio#command"] = "chibi-scheme -R" 73 vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "=> $?" 74 vim.g["conjure#client#scheme#stdio#value_prefix_pattern"] = true 75end 76vim.api.nvim_create_user_command("ConjureChibi", set_chibi, {}) 77-- Chicken Scheme 78local set_chicken = function() 79 vim.g["conjure#client#scheme#stdio#command"] = "csi -quiet -:c" 80 vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "\n-#;%d-> " 81 vim.g["conjure#client#scheme#stdio#value_prefix_pattern"] = true 82end 83vim.api.nvim_create_user_command("ConjureChicken", set_chicken, {}) 84 85-- KEYMAPS 86local keymap = vim.keymap.set 87local noremap = { noremap = true } 88local silentnoremap = { noremap = true, silent = true } 89--Toggle background 90keymap("n", "<leader>bg", function() if vim.o.background == "light" then vim.o.background = "dark" else vim.o.background = "light" end end, noremap) 91-- Easier breaking from edit modes 92keymap("n", ";;", "<Esc>", noremap) 93keymap("v", ";;", "<Esc>", noremap) 94keymap("i", ";;", "<Esc>", noremap) 95keymap("t", "<Esc>", "<C-\\><C-n>", noremap) 96-- Tab Navigation 97keymap("n", "<leader>tn", "<cmd>tabnew<CR>", noremap) 98keymap("n", "<leader>tc", "<cmd>tabclose<CR>", noremap) 99keymap("n", "<leader><tab>", "<cmd>tabnext<CR>", noremap) 100keymap("n", "<leader>tt", "<cmd>tabnext<CR>", noremap) 101 102-- buffer navigation 103keymap("n", "<leader>h", "<C-w>h", noremap) 104keymap("n", "<leader>j", "<C-w>j", noremap) 105keymap("n", "<leader>k", "<C-w>k", noremap) 106keymap("n", "<leader>l", "<C-w>l", noremap) 107keymap("n", "<leader>bn", "<cmd>bnext<CR>", noremap) 108keymap("n", "<leader>bp", "<cmd>bprev<CR>", noremap) 109-- close buffer and put previous into current window 110keymap("n", "<leader>bq", "<cmd>bp <BAR> bd #<CR>", noremap) 111-- list buffers 112keymap("n", "<leader>bl", "<cmd>ls<cr>", noremap) 113-- splits 114keymap("n", "<leader>vs", "<cmd>vsplit<cr>", noremap) 115keymap("n", "<leader>ss", "<cmd>split<cr>", noremap) 116keymap("n", "<leader>hs", "<cmd>split<cr>", noremap) 117 118-- Toggle Line Numbers 119keymap("n", "<leader>n", "<cmd>set number! number?<CR>", silentnoremap) 120keymap("n", "<leader>N", "<cmd>set relativenumber! relativenumber?<CR>", silentnoremap) 121 122-- Edit this file 123keymap("n", "<leader>ec", "<cmd>e $MYVIMRC<CR>", silentnoremap) 124keymap("n", "<leader>sc", "<cmd>source $MYVIMRC<CR>", silentnoremap) 125 126-- Clear highlights 127keymap("n", "<C-c>", "<cmd>noh<CR>", silentnoremap) 128 129-- Telescope shortcuts 130keymap("n", "<leader>ff", "<cmd>Telescope find_files<CR>", silentnoremap) 131keymap("n", "<leader>fg", "<cmd>Telescope live_grep<CR>", silentnoremap) 132keymap("n", "<leader>fb", "<cmd>Telescope buffers<CR>", silentnoremap) 133keymap("n", "<C-p>", "<cmd>Telescope buffers<CR>", silentnoremap) 134keymap("n", "<leader>fh", "<cmd>Telescope help_tags<CR>", silentnoremap) 135 136-- Remap arrow keys for page navigation 137keymap("n", "<Up>", "<C-y>", silentnoremap) 138keymap("n", "<Down>", "<C-e>", silentnoremap) 139keymap("n", "<Left>", "zh", silentnoremap) 140keymap("n", "<Right>", "zl", silentnoremap) 141 142-- Telescope 143keymap({ "n", "i", "v" }, "<C-t>", "<cmd>Telescope<CR>", silentnoremap) 144 145-- LSP Documentation viewer 146keymap("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", silentnoremap) 147 148-- Lf 149keymap("n", "<leader>L", "<cmd>Lf<CR>", silentnoremap) 150 151-- Neogit 152keymap("n", "<leader>g", "<cmd>Neogit<CR>", silentnoremap) 153 154-- Autoformat! 155vim.api.nvim_create_user_command("Format", function(args) 156 local range = nil 157 if args.count ~= -1 then 158 local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] 159 range = { 160 start = { args.line1, 0 }, 161 ["end"] = { args.line2, end_line:len() }, 162 } 163 end 164 require("conform").format({ async = true, lsp_format = "fallback", range = range }) 165end, { range = true }) 166keymap("n", "<C-n>", "<cmd>Format<CR>", silentnoremap) 167 168-- Python Specific 169vim.g.python3_host_prog = vim.fn.expand("~/.envs/nvim/bin/python3") 170 171-- ######################## 172-- # Require other configs # 173-- ######################## 174-- LSP 175require("lsp") 176 177if vim.uv.fs_stat(vim.fn.stdpath("config") .. "/lua/local.lua") then 178 require("local") 179end