summaryrefslogtreecommitdiff
path: root/vim/.config/nvim/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'vim/.config/nvim/init.lua')
-rw-r--r--vim/.config/nvim/init.lua159
1 files changed, 159 insertions, 0 deletions
diff --git a/vim/.config/nvim/init.lua b/vim/.config/nvim/init.lua
new file mode 100644
index 0000000..3fa4cb9
--- /dev/null
+++ b/vim/.config/nvim/init.lua
@@ -0,0 +1,159 @@
+--
+-- nvim init script by grace
+--
+
+-- Get hostname
+local handle = io.popen("hostname")
+local hostname = handle:read("*a") or ""
+handle:close()
+hostname = hostname:gsub("%s+", "")
+vim.g.hostname = hostname
+if string.match(hostname, "cs.purdue.edu") then
+ vim.g.is_purdue = true
+else
+ vim.g.is_purdue = false
+end
+
+-- add required things to path
+if vim.g.is_purdue then
+ vim.env.PATH = vim.env.PATH .. ':' .. os.getenv("HOME") .. '/clangd/bin:/u/riker/u98/cs240/bin'
+end
+
+require("plugins")
+require("native-lsp")
+require("diagnostics")
+require("remap")
+
+
+if vim.g.is_purdue then
+ require("westwood-lint")
+end
+
+require("standard-lint")
+
+vim.cmd("source ~/.vim/settings.vim")
+
+vim.api.nvim_create_autocmd("BufWritePre", {
+ pattern = "*",
+ callback = function()
+ local save = vim.fn.winsaveview()
+ vim.cmd([[%s/\s\+$//e]])
+ vim.fn.winrestview(save)
+ end,
+})
+
+
+-- File IO can be slow and this might help idk
+if vim.g.is_purdue then
+ vim.cmd("set noundofile") -- i forgor how to do this in lua so i didnt
+end
+
+--
+-- vim.opt.spell = true
+-- vim.opt.spelllang = "en_us"
+--
+
+vim.api.nvim_create_autocmd("FileType", {
+ pattern = "markdown",
+ callback = function()
+ vim.opt_local.textwidth = 80
+ vim.opt_local.formatoptions = "atcqjnl"
+ vim.opt_local.wrap = true
+ vim.opt_local.linebreak = true
+
+ -- Show column guide
+ vim.opt_local.colorcolumn = "80"
+ end,
+})
+
+-- Typst configuration
+vim.api.nvim_create_autocmd("FileType", {
+ pattern = "typst",
+ callback = function()
+ -- Line wrapping settings
+ vim.opt_local.textwidth = 80
+ vim.opt_local.formatoptions = "tcqjnl"
+ vim.opt_local.wrap = true
+ vim.opt_local.linebreak = true
+ -- Show column guide
+ vim.opt_local.colorcolumn = "80"
+
+ -- Toggle 'a' in formatoptions
+ vim.keymap.set("n", "<leader>a", function()
+ local fo = vim.opt_local.formatoptions:get()
+ if fo.a then
+ vim.opt_local.formatoptions:remove("a")
+ print("Auto-formatting disabled")
+ else
+ vim.opt_local.formatoptions:append("a")
+ print("Auto-formatting enabled")
+ end
+ end, { buffer = true, desc = "Toggle auto-formatting" })
+ end,
+})
+-- Setup formatting on LSP attach
+-- vim.api.nvim_create_autocmd("LspAttach", {
+-- callback = function(args)
+-- local client = vim.lsp.get_client_by_id(args.data.client_id)
+--
+-- if client and client.supports_method("textDocument/formatting") then
+-- vim.api.nvim_create_autocmd({ "TextChanged", "TextChangedI" }, {
+-- buffer = args.buf,
+-- callback = function()
+-- vim.lsp.buf.format({
+-- async = true,
+-- bufnr = args.buf,
+-- })
+-- end,
+-- })
+-- end
+-- end,
+-- })
+
+vim.api.nvim_create_autocmd("TermOpen", {
+ pattern = "*",
+ callback = function()
+ vim.opt_local.spell = false
+ end,
+})
+
+vim.o.clipboard = "unnamedplus"
+
+-- 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("*"),
+-- },
+-- }
+vim.g.clipboard = "osc52"
+vim.keymap.set("n", "p", '"+p')
+vim.keymap.set("n", "P", '"+P')
+
+
+-- stupid hacky workaround to make it so i can paste from tmux with OSC52
+-- https://github.com/neovim/neovim/discussions/29350#discussioncomment-10299517
+-- tracking issue about tmux behavior: https://github.com/tmux/tmux/issues/4275
+if vim.env.TMUX ~= nil then
+ local copy = { 'tmux', 'load-buffer', '-w', '-' }
+ local paste = { 'bash', '-c', 'tmux refresh-client -l && sleep 0.05 && tmux save-buffer -' }
+ vim.g.clipboard = {
+ name = 'tmux',
+ copy = {
+ ['+'] = copy,
+ ['*'] = copy,
+ },
+ paste = {
+ ['+'] = paste,
+ ['*'] = paste,
+ },
+ cache_enabled = 0,
+ }
+end
+
+-- https://simondalvai.org/blog/godot-neovim/
+require("godot")