1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
--
-- 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("*"),
},
}
-- 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")
|