-- Leader vim.g.mapleader = ";" vim.g.maplocalleader = "," -- These need to happend before we load plugins -- Load Plugins require("plugins") -- Config for Nord, which I usually use -- vim.g.nord_italic = false -- vim.g.nord_bold = false -- vim.opt.background = "light" vim.opt.background = "dark" vim.cmd[[colorscheme nord]] -- Formatting and vim config vim.opt.expandtab = true vim.opt.tabstop = 4 vim.opt.shiftwidth = 4 --vim.opt.termguicolors = true vim.opt.cursorcolumn = true vim.opt.cursorline = true vim.opt.hidden = true vim.opt.colorcolumn = "120" vim.opt.spelllang = "en_us" vim.opt.number = false vim.opt.relativenumber = false -- I don't like word wrapping vim.opt.wrap = false -- Show whitespace as dots vim.opt.lcs = vim.opt.lcs + "space:ยท" vim.opt.list = true vim.opt.textwidth = 88 -- Force OSC-52 vim.g.clipboard = { name = 'OSC 52', copy = { ['+'] = require('vim.ui.clipboard.osc52').copy('+'), ['*'] = require('vim.ui.clipboard.osc52').copy('*'), }, paste = { ['+'] = require('vim.ui.clipboard.osc52').paste('+'), ['*'] = require('vim.ui.clipboard.osc52').paste('*'), }, } -- CTags vim.opt.tags = vim.opt.tags + vim.fn.expand("~/.local/tmp/ctags") + vim.fn.expand("~/repos/gerbil/src/TAGS") -- Conjure -- Gerbil Scheme local set_gerbil = function() vim.g["conjure#client#scheme#stdio#command"] = "gxi" vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "%d*> " vim.g["conjure#client#scheme#stdio#value_prefix_pattern"] = false end set_gerbil() vim.api.nvim_create_user_command("ConjureGerbil", set_gerbil, {}) -- Chibi-scheme local set_chibi = function() vim.g["conjure#client#scheme#stdio#command"] = "chibi-scheme -R" vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "=> $?" vim.g["conjure#client#scheme#stdio#value_prefix_pattern"] = true end vim.api.nvim_create_user_command("ConjureChibi", set_chibi, {}) -- Chicken Scheme local set_chicken = function() vim.g["conjure#client#scheme#stdio#command"] = "csi -quiet -:c" vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "\n-#;%d-> " vim.g["conjure#client#scheme#stdio#value_prefix_pattern"] = true end vim.api.nvim_create_user_command("ConjureChicken", set_chicken, {}) -- KEYMAPS local keymap = vim.keymap.set local noremap = { noremap = true } local silentnoremap = { noremap = true, silent = true } -- Easier breaking from edit modes keymap("n", ";;", "", noremap) keymap("v", ";;", "", noremap) keymap("i", ";;", "", noremap) keymap("t", "", "", noremap) -- Tab Navigation keymap("n", "tn", "tabnew", noremap) keymap("n", "tc", "tabclose", noremap) keymap("n", "", "tabnext", noremap) keymap("n", "tt", "tabnext", noremap) -- buffer navigation keymap("n", "h", "h", noremap) keymap("n", "j", "j", noremap) keymap("n", "k", "k", noremap) keymap("n", "l", "l", noremap) keymap("n", "bn", "bnext", noremap) keymap("n", "bp", "bprev", noremap) -- close buffer and put previous into current window keymap("n", "bq", "bp bd #", noremap) -- list buffers keymap("n", "bl", "ls", noremap) -- splits keymap("n", "vs", "vsplit", noremap) keymap("n", "ss", "split", noremap) keymap("n", "hs", "split", noremap) -- Toggle Line Numbers keymap("n", "n", "set number! number?", silentnoremap) keymap("n", "N", "set relativenumber! relativenumber?", silentnoremap) -- Edit this file keymap("n", "ec", "e $MYVIMRC", silentnoremap) keymap("n", "sc", "source $MYVIMRC", silentnoremap) -- Clear highlights keymap("n", "", "noh", silentnoremap) -- Telescope shortcuts keymap("n", "ff", "Telescope find_files", silentnoremap) keymap("n", "fg", "Telescope live_grep", silentnoremap) keymap("n", "fb", "Telescope buffers", silentnoremap) keymap("n", "", "Telescope buffers", silentnoremap) keymap("n", "fh", "Telescope help_tags", silentnoremap) -- Remap arrow keys for page navigation keymap("n", "", "", silentnoremap) keymap("n", "", "", silentnoremap) keymap("n", "", "zh", silentnoremap) keymap("n", "", "zl", silentnoremap) -- Telescope keymap({ "n", "i", "v" }, "", "Telescope", silentnoremap) -- LSP Documentation viewer keymap("n", "K", "lua vim.lsp.buf.hover()", silentnoremap) -- Lf keymap("n", "L", "Lf", silentnoremap) -- Neogit keymap("n", "g", "Neogit", silentnoremap) -- Autoformat! vim.api.nvim_create_user_command("Format", function(args) local range = nil if args.count ~= -1 then local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] range = { start = { args.line1, 0 }, ["end"] = { args.line2, end_line:len() }, } end require("conform").format({ async = true, lsp_format = "fallback", range = range }) end, { range = true }) keymap("n", "", "Format", silentnoremap) -- Python Specific vim.g.python3_host_prog = vim.fn.expand("~/.envs/nvim/bin/python3") -- ######################## -- # Require other configs # -- ######################## -- LSP require("lsp") if vim.uv.fs_stat(vim.fn.stdpath("config") .. "/lua/local.lua") then require("local") end