summaryrefslogtreecommitdiffstats
path: root/.config/nvim
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim')
-rw-r--r--.config/nvim/after/ftplugin/c.vim6
-rw-r--r--.config/nvim/after/plugin/autocmds.vim17
-rw-r--r--.config/nvim/lua/core/options.lua2
-rw-r--r--.config/nvim/lua/helpers/autocmds.lua127
-rw-r--r--.config/nvim/lua/plugins/conform.lua24
-rw-r--r--.config/nvim/lua/plugins/git.lua6
-rw-r--r--.config/nvim/lua/plugins/lastplace.lua11
-rw-r--r--.config/nvim/lua/plugins/lsp.lua156
-rw-r--r--.config/nvim/lua/plugins/telescope.lua10
-rw-r--r--.config/nvim/lua/plugins/typst.lua10
-rw-r--r--.config/nvim/spell/en.utf-8.add3
11 files changed, 303 insertions, 69 deletions
diff --git a/.config/nvim/after/ftplugin/c.vim b/.config/nvim/after/ftplugin/c.vim
index 25eeecd..41a9917 100644
--- a/.config/nvim/after/ftplugin/c.vim
+++ b/.config/nvim/after/ftplugin/c.vim
@@ -1,4 +1,4 @@
1setlocal tabstop=8 1setlocal tabstop=2
2setlocal softtabstop=8 2setlocal softtabstop=2
3setlocal shiftwidth=8 3setlocal shiftwidth=2
4setlocal noexpandtab 4setlocal noexpandtab
diff --git a/.config/nvim/after/plugin/autocmds.vim b/.config/nvim/after/plugin/autocmds.vim
index 0e7935b..21c7bc4 100644
--- a/.config/nvim/after/plugin/autocmds.vim
+++ b/.config/nvim/after/plugin/autocmds.vim
@@ -1,23 +1,6 @@
1" I don't know how to port this yet 1" I don't know how to port this yet
2autocmd BufRead,BufWrite * if ! &bin | silent! %s/\s\+$//ge | endif 2autocmd BufRead,BufWrite * if ! &bin | silent! %s/\s\+$//ge | endif
3 3
4autocmd BufNewFile,BufRead /tmp/neomutt* set noautoindent filetype=mail wm=0 tw=80
5
6augroup bukugroup
7 au! BufRead,BufNewFile,BufEnter buku-edit-* set filetype=buku
8augroup END
9
10" Restore last position
11autocmd BufReadPost *
12 \ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
13 \ | exe "normal! g`\""
14 \ | endif
15
16augroup pkgbuild
17 autocmd!
18 autocmd BufRead,BufNewFile PKGBUILD set filetype=PKGBUILD
19augroup END
20
21augroup vimwiki 4augroup vimwiki
22 autocmd! 5 autocmd!
23 autocmd BufRead,BufNewFile *.wiki set filetype=vimwiki 6 autocmd BufRead,BufNewFile *.wiki set filetype=vimwiki
diff --git a/.config/nvim/lua/core/options.lua b/.config/nvim/lua/core/options.lua
index 1a45b8f..9962f4f 100644
--- a/.config/nvim/lua/core/options.lua
+++ b/.config/nvim/lua/core/options.lua
@@ -63,6 +63,8 @@ local opts = {
63 -- switch case labels 63 -- switch case labels
64 cinoptions = "l1", 64 cinoptions = "l1",
65 65
66 signcolumn = "yes:1",
67
66} 68}
67 69
68for opt, val in pairs(opts) do 70for opt, val in pairs(opts) do
diff --git a/.config/nvim/lua/helpers/autocmds.lua b/.config/nvim/lua/helpers/autocmds.lua
index 11f4480..7461090 100644
--- a/.config/nvim/lua/helpers/autocmds.lua
+++ b/.config/nvim/lua/helpers/autocmds.lua
@@ -29,3 +29,130 @@ vim.api.nvim_create_autocmd("VimResized", {
29 }, 29 },
30 command = "wincmd =", 30 command = "wincmd =",
31}) 31})
32
33-- https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
34-- Set typst filetype
35vim.api.nvim_create_autocmd(
36 {
37 "BufNewFile",
38 "BufRead",
39 },
40 {
41 group = augroup("typst"),
42 pattern = "*.typ",
43 callback = function()
44 local buf = vim.api.nvim_get_current_buf()
45 vim.api.nvim_set_option_value("filetype", "typst", { buf = buf })
46 vim.api.nvim_set_option_value("shiftwidth", 2, { buf = buf })
47 end
48 }
49)
50
51-- Set PKGBUILD filetype
52vim.api.nvim_create_autocmd(
53 {
54 "BufNewFile",
55 "BufRead",
56 },
57 {
58 group = augroup("pkgbuild"),
59 pattern = "PKGBUILD",
60 callback = function()
61 local buf = vim.api.nvim_get_current_buf()
62 vim.api.nvim_set_option_value("filetype", "PKGBUILD", { buf = buf })
63 end
64 }
65)
66
67-- Set buku-edit filetype
68vim.api.nvim_create_autocmd(
69 {
70 "BufNewFile",
71 "BufRead",
72 },
73 {
74 group = augroup("buku-edit"),
75 pattern = "buku-edit-*",
76 callback = function()
77 local buf = vim.api.nvim_get_current_buf()
78 vim.api.nvim_set_option_value("filetype", "buku", { buf = buf })
79 end
80 }
81)
82
83-- Set mail filetype
84vim.api.nvim_create_autocmd(
85 {
86 "BufNewFile",
87 "BufRead",
88 },
89 {
90 group = augroup("mail"),
91 pattern = "/tmp/neomutt*",
92 callback = function()
93 local buf = vim.api.nvim_get_current_buf()
94 vim.api.nvim_set_option_value("autoindent", false, { buf = buf })
95 vim.api.nvim_set_option_value("filetype", "mail", { buf = buf })
96 vim.api.nvim_set_option_value("wrapmargin", 0, { buf = buf })
97 vim.api.nvim_set_option_value("textwidth", 80, { buf = buf })
98 end
99 }
100)
101
102-- Resize splits if window got resized
103vim.api.nvim_create_autocmd({ "VimResized" }, {
104 group = augroup("resize_splits"),
105 callback = function()
106 local current_tab = vim.fn.tabpagenr()
107 vim.cmd("tabdo wincmd =")
108 vim.cmd("tabnext " .. current_tab)
109 end,
110})
111
112-- close some filetypes with <q>
113vim.api.nvim_create_autocmd("FileType", {
114 group = augroup("close_with_q"),
115 pattern = {
116 "PlenaryTestPopup",
117 "checkhealth",
118 "dbout",
119 "gitsigns-blame",
120 "grug-far",
121 "help",
122 "lspinfo",
123 "neotest-output",
124 "neotest-output-panel",
125 "neotest-summary",
126 "notify",
127 "qf",
128 "snacks_win",
129 "spectre_panel",
130 "startuptime",
131 "tsplayground",
132 },
133 callback = function(event)
134 vim.bo[event.buf].buflisted = false
135 vim.schedule(function()
136 vim.keymap.set("n", "q", function()
137 vim.cmd("close")
138 pcall(vim.api.nvim_buf_delete, event.buf, { force = true })
139 end, {
140 buffer = event.buf,
141 silent = true,
142 desc = "Quit buffer",
143 })
144 end)
145 end,
146})
147
148-- Auto create dir when saving a file, in case some intermediate directory does not exist
149vim.api.nvim_create_autocmd({ "BufWritePre" }, {
150 group = augroup("auto_create_dir"),
151 callback = function(event)
152 if event.match:match("^%w%w+:[\\/][\\/]") then
153 return
154 end
155 local file = vim.uv.fs_realpath(event.match) or event.match
156 vim.fn.mkdir(vim.fn.fnamemodify(file, ":p:h"), "p")
157 end,
158})
diff --git a/.config/nvim/lua/plugins/conform.lua b/.config/nvim/lua/plugins/conform.lua
new file mode 100644
index 0000000..06231dc
--- /dev/null
+++ b/.config/nvim/lua/plugins/conform.lua
@@ -0,0 +1,24 @@
1return {
2 {
3 'stevearc/conform.nvim',
4 opts = {
5 format_on_save = {
6 -- These options will be passed to conform.format()
7 timeout_ms = 500,
8 lsp_format = "fallback",
9 },
10 formatters_by_ft = {
11 lua = { "stylua" },
12 -- Conform will run multiple formatters sequentially
13 -- You can customize some of the format options for the filetype (:help conform.format)
14 rust = { "rustfmt", lsp_format = "fallback" },
15 -- Conform will run the first available formatter
16 javascript = { "prettierd", "prettier", stop_after_first = true },
17 -- latex
18 tex = { "tex-fmt" },
19 -- sql
20 sql = { "sqruff" },
21 },
22 }
23 },
24}
diff --git a/.config/nvim/lua/plugins/git.lua b/.config/nvim/lua/plugins/git.lua
index db1f435..5f1c1e3 100644
--- a/.config/nvim/lua/plugins/git.lua
+++ b/.config/nvim/lua/plugins/git.lua
@@ -99,11 +99,11 @@ return {
99 { 99 {
100 "NeogitOrg/neogit", 100 "NeogitOrg/neogit",
101 dependencies = { 101 dependencies = {
102 "nvim-lua/plenary.nvim", -- required 102 "nvim-lua/plenary.nvim", -- required
103 "sindrets/diffview.nvim", -- optional - Diff integration 103 "sindrets/diffview.nvim", -- optional - Diff integration
104 "nvim-telescope/telescope.nvim", -- optional 104 "nvim-telescope/telescope.nvim", -- optional
105 }, 105 },
106 cmd="Neogit", 106 cmd = "Neogit",
107 config = true 107 config = true
108 } 108 }
109} 109}
diff --git a/.config/nvim/lua/plugins/lastplace.lua b/.config/nvim/lua/plugins/lastplace.lua
new file mode 100644
index 0000000..72e5c7f
--- /dev/null
+++ b/.config/nvim/lua/plugins/lastplace.lua
@@ -0,0 +1,11 @@
1return {
2 {
3 "ethanholz/nvim-lastplace",
4
5 opts = {
6 lastplace_ignore_buftype = { "quickfix", "nofile", "help" },
7 lastplace_ignore_filetype = { "gitcommit", "gitrebase", "svn", "hgcommit" },
8 lastplace_open_folds = true,
9 },
10 }
11}
diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
index 41616de..8bc496c 100644
--- a/.config/nvim/lua/plugins/lsp.lua
+++ b/.config/nvim/lua/plugins/lsp.lua
@@ -12,35 +12,36 @@ return {
12 local map = require("helpers.keys").map 12 local map = require("helpers.keys").map
13 13
14 map('n', '<leader>e', vim.diagnostic.open_float, "lsp: open diagnostics float") 14 map('n', '<leader>e', vim.diagnostic.open_float, "lsp: open diagnostics float")
15 map('n', '[d', vim.diagnostic.goto_prev, "lsp: goto previous diagnostic") 15 map('n', '[d', function() vim.diagnostic.jump({ count = -1, float = true }) end,
16 map('n', ']d', vim.diagnostic.goto_next, "lsp: goto next diagnostic") 16 "lsp: goto previous diagnostic")
17 17 map('n', ']d', function() vim.diagnostic.jump({ count = 1, float = true }) end, "lsp: goto next diagnostic")
18 -- set up cool signs for diagnostics
19 local signs = { Error = " ", Warn = "", Hint = "", Info = "" }
20 for type, icon in pairs(signs) do
21 local hl = "DiagnosticSign" .. type
22 vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
23 end
24 18
25 -- Diagnostic config 19 vim.diagnostic.config({
26 local config = { 20 underline = true,
27 virtual_text = false,
28 signs = { 21 signs = {
29 active = signs, 22 active = true,
23 text = {
24 [vim.diagnostic.severity.ERROR] = "",
25 [vim.diagnostic.severity.WARN] = "",
26 [vim.diagnostic.severity.HINT] = "󰟃",
27 [vim.diagnostic.severity.INFO] = "",
28 },
30 }, 29 },
31 update_in_insert = true, 30 virtual_text = false,
32 underline = true,
33 severity_sort = true,
34 float = { 31 float = {
35 focusable = true,
36 style = "minimal",
37 border = "rounded",
38 source = "always",
39 header = "", 32 header = "",
40 prefix = "", 33 border = "rounded",
34 format = function(diagnostic)
35 return string.format(
36 "%s (%s) [%s]",
37 diagnostic.message,
38 diagnostic.source,
39 diagnostic.code or diagnostic.user_data.lsp.code
40 )
41 end,
41 }, 42 },
42 } 43
43 vim.diagnostic.config(config) 44 })
44 45
45 -- this function gets run when an lsp connects to a particular buffer. 46 -- this function gets run when an lsp connects to a particular buffer.
46 local on_attach = function(_, bufnr) 47 local on_attach = function(_, bufnr)
@@ -72,7 +73,7 @@ return {
72 73
73 -- misc. 74 -- misc.
74 local lspconfig = require('lspconfig') 75 local lspconfig = require('lspconfig')
75 local servers = { 'ts_ls', 'jsonls', 'eslint', 'cssls', 'html', 'vala_ls', 'gopls' } 76 local servers = { 'ts_ls', 'jsonls', 'eslint', 'cssls', 'html', 'vala_ls', 'gopls', 'clangd' }
76 for _, lsp in pairs(servers) do 77 for _, lsp in pairs(servers) do
77 lspconfig[lsp].setup { 78 lspconfig[lsp].setup {
78 on_attach = on_attach, 79 on_attach = on_attach,
@@ -80,6 +81,19 @@ return {
80 } 81 }
81 end 82 end
82 83
84 -- typst/tinymist
85 require("lspconfig")["tinymist"].setup({
86 on_attach = on_attach,
87 capabilities = capabilities,
88 single_file_support = true,
89 root_dir = function()
90 return vim.fn.getcwd()
91 end,
92 settings = {
93 formatterMode = "typstyle",
94 }
95 })
96
83 -- lua 97 -- lua
84 require("lspconfig")["lua_ls"].setup({ 98 require("lspconfig")["lua_ls"].setup({
85 on_attach = on_attach, 99 on_attach = on_attach,
@@ -142,26 +156,7 @@ return {
142 filetypes = { 'sh', 'tex' }, 156 filetypes = { 'sh', 'tex' },
143 }) 157 })
144 158
145 vim.g.rustaceanvim = { 159 require("lspconfig")["harper_ls"].setup {
146 -- Plugin configuration
147 tools = {
148 },
149 -- LSP configuration
150 server = {
151 on_attach = on_attach,
152 vim.lsp.inlay_hint.enable(true),
153 default_settings = {
154 -- rust-analyzer language server configuration
155 ['rust-analyzer'] = {
156 },
157 },
158 },
159 -- DAP configuration
160 dap = {
161 },
162 }
163
164 lspconfig.harper_ls.setup {
165 on_attach = on_attach, 160 on_attach = on_attach,
166 capabilities = capabilities, 161 capabilities = capabilities,
167 settings = { 162 settings = {
@@ -186,12 +181,58 @@ return {
186 } 181 }
187 }, 182 },
188 filetypes = { 183 filetypes = {
189 "markdown", "rust", "typescript", "typescriptreact", "javascript", "python", "c", "cpp", "ruby", "swift", "csharp", "toml", "lua", "gitcommit", "java", "html", "vimwiki" 184 "markdown", "rust", "typescript", "typescriptreact", "javascript", "python", "c", "cpp", "ruby", "swift", "csharp", "toml", "lua", "gitcommit", "java", "html", "vimwiki", "tex"
185 },
186 root_dir = function(fname)
187 return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])
188 end,
189 }
190
191 -- ltex
192 require("lspconfig")["ltex"].setup({
193 capabilities = capabilities,
194 on_attach = function(client, bufnr)
195 on_attach(client, bufnr)
196 require("ltex_extra").setup {
197 load_langs = { "en-GB" },
198 init_check = true,
199 log_level = "warn",
200 }
201 end,
202 filetypes = { "bib", "gitcommit", "markdown", "org", "plaintex", "rst", "rnoweb", "tex", "pandoc", "quarto", "rmd", "context", "mail", "text" },
203 settings = {
204 ltex = {
205 enabled = { "bibtex", "gitcommit", "markdown", "org", "tex", "restructuredtext", "rsweave", "latex", "quarto", "rmd", "context", "mail", "plaintext" }
206 }
190 } 207 }
208 })
209
210 vim.g.rustaceanvim = {
211 -- Plugin configuration
212 tools = {
213 },
214 -- LSP configuration
215 server = {
216 on_attach = on_attach,
217 vim.lsp.inlay_hint.enable(true),
218 default_settings = {
219 -- rust-analyzer language server configuration
220 ['rust-analyzer'] = {
221 },
222 },
223 },
224 -- DAP configuration
225 dap = {
226 },
191 } 227 }
192 end, 228 end,
193 }, 229 },
194 { 230 {
231 "barreiroleo/ltex_extra.nvim",
232 ft = { "markdown", "tex" },
233 dependencies = { "neovim/nvim-lspconfig" },
234 },
235 {
195 "j-hui/fidget.nvim", 236 "j-hui/fidget.nvim",
196 event = "VeryLazy", 237 event = "VeryLazy",
197 opts = { 238 opts = {
@@ -215,9 +256,32 @@ return {
215 }, 256 },
216 { 257 {
217 "folke/lazydev.nvim", 258 "folke/lazydev.nvim",
218 ft = "lua", -- only load on lua files 259 ft = "lua",
219 }, 260 },
220 { 261 {
221 'fatih/vim-go' 262 'fatih/vim-go'
263 },
264 {
265 "danymat/neogen",
266 config = true,
267 opts = {
268 snippet_engine = "luasnip",
269 languages = {
270 python = {
271 template = {
272 annotation_convention = "reST",
273 }
274 }
275 }
276 }
277 },
278 {
279 'marcelofern/vale.nvim',
280 config = function()
281 require("vale").setup({
282 bin = "/usr/bin/vale",
283 vale_config_path = "$HOME/.config/vale/.vale.ini",
284 })
285 end,
222 } 286 }
223} 287}
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
index 40c99a4..24f820d 100644
--- a/.config/nvim/lua/plugins/telescope.lua
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -12,10 +12,16 @@ return {
12 "gbprod/yanky.nvim", 12 "gbprod/yanky.nvim",
13 }, 13 },
14 config = function() 14 config = function()
15 local open_with_trouble = require("trouble.sources.telescope").open
16
15 require('telescope').setup({ 17 require('telescope').setup({
16 defaults = { 18 defaults = {
17 path_display = { "truncate" }, 19 path_display = { "truncate" },
18 prompt_prefix = " ", 20 prompt_prefix = " ",
21 mappings = {
22 i = { ["<leader>xt"] = open_with_trouble },
23 n = { ["<leader>xt"] = open_with_trouble },
24 },
19 }, 25 },
20 extensions = { 26 extensions = {
21 fzf = { 27 fzf = {
@@ -46,6 +52,10 @@ return {
46 map("n", "<leader>sw", require("telescope.builtin").grep_string, "🔭: current word") 52 map("n", "<leader>sw", require("telescope.builtin").grep_string, "🔭: current word")
47 map("n", "<leader>sg", require("telescope.builtin").live_grep, "🔭: live grep") 53 map("n", "<leader>sg", require("telescope.builtin").live_grep, "🔭: live grep")
48 map("n", "<leader>sd", require("telescope.builtin").diagnostics, "🔭: diagnostics") 54 map("n", "<leader>sd", require("telescope.builtin").diagnostics, "🔭: diagnostics")
55 map("n", "<leader>sc", function()
56 require("telescope.builtin").lsp_document_symbols({ symbols = 'function' })
57 end, "🔭: lsp symbols (functions)")
58
49 map("n", "<leader>st", function() 59 map("n", "<leader>st", function()
50 require("telescope.builtin").spell_suggest(require("telescope.themes").get_cursor({ 60 require("telescope.builtin").spell_suggest(require("telescope.themes").get_cursor({
51 prompt_title = "", 61 prompt_title = "",
diff --git a/.config/nvim/lua/plugins/typst.lua b/.config/nvim/lua/plugins/typst.lua
new file mode 100644
index 0000000..c04ea70
--- /dev/null
+++ b/.config/nvim/lua/plugins/typst.lua
@@ -0,0 +1,10 @@
1return {
2 {
3 'chomosuke/typst-preview.nvim',
4 ft = 'typst',
5 version = '1.*',
6 config = function()
7 require 'typst-preview'.setup {}
8 end,
9 }
10}
diff --git a/.config/nvim/spell/en.utf-8.add b/.config/nvim/spell/en.utf-8.add
index 8374b5b..da95938 100644
--- a/.config/nvim/spell/en.utf-8.add
+++ b/.config/nvim/spell/en.utf-8.add
@@ -129,3 +129,6 @@ Wayback
129FarSight 129FarSight
130Zetalytics 130Zetalytics
131VirusTotal 131VirusTotal
132eSLD
133NXDOMAIN
134CrUX