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