Mercurial > dotfiles
annotate .chezmoitemplates/init.lua @ 747:c0395223c18f
feat: add mapping to search for files
author | zegervdv <zegervdv@me.com> |
---|---|
date | Thu, 12 Jan 2023 10:11:01 +0100 |
parents | cc66c8f2d548 |
children | 300f45100370 |
rev | line source |
---|---|
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1 -- |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2 -- Neovim dotfiles |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
3 -- |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
4 -- |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
5 local execute = vim.api.nvim_command |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
6 local fn = vim.fn |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
7 |
582 | 8 local home = os.getenv 'HOME' |
600
24b0dd06381b
Enable collapsed statements for stylua
Zeger Van de Vannet <zegervdv@me.com>
parents:
599
diff
changeset
|
9 if home == nil then home = os.getenv 'USERPROFILE' end |
579 | 10 |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
11 -- Bootstrap package manager |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
12 local install_path = fn.stdpath 'data' .. '/site/pack/packer/opt/packer.nvim' |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
13 |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
14 if fn.empty(fn.glob(install_path)) > 0 then |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
15 execute('!git clone https://github.com/wbthomason/packer.nvim ' .. install_path) |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
16 end |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
17 |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
18 -- Packer configuration is compiled and only needs to be loaded on changes |
613 | 19 vim.cmd.packadd 'packer.nvim' |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
20 |
649
cc06db32b946
Source local plugins if available
zegervdv <zegervdv@me.com>
parents:
648
diff
changeset
|
21 local local_plugin = function(name) |
cc06db32b946
Source local plugins if available
zegervdv <zegervdv@me.com>
parents:
648
diff
changeset
|
22 local path = home .. '/Projects/' .. name |
cc06db32b946
Source local plugins if available
zegervdv <zegervdv@me.com>
parents:
648
diff
changeset
|
23 if vim.fn.isdirectory(path) > 0 then |
cc06db32b946
Source local plugins if available
zegervdv <zegervdv@me.com>
parents:
648
diff
changeset
|
24 return path |
cc06db32b946
Source local plugins if available
zegervdv <zegervdv@me.com>
parents:
648
diff
changeset
|
25 else |
cc06db32b946
Source local plugins if available
zegervdv <zegervdv@me.com>
parents:
648
diff
changeset
|
26 return 'zegervdv/' .. name |
cc06db32b946
Source local plugins if available
zegervdv <zegervdv@me.com>
parents:
648
diff
changeset
|
27 end |
cc06db32b946
Source local plugins if available
zegervdv <zegervdv@me.com>
parents:
648
diff
changeset
|
28 end |
cc06db32b946
Source local plugins if available
zegervdv <zegervdv@me.com>
parents:
648
diff
changeset
|
29 |
706 | 30 require('packer').startup { |
713
45c34cfecc3e
feat: enable full neodev options in chezmoi folder
zegervdv <zegervdv@me.com>
parents:
706
diff
changeset
|
31 function(use) |
706 | 32 use { 'wbthomason/packer.nvim', opt = true } |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
33 |
706 | 34 -- General plugins |
35 use { 'tpope/vim-sensible' } | |
36 use { 'tpope/vim-repeat' } | |
37 use { 'tpope/vim-rsi' } | |
38 use { 'sgur/vim-editorconfig' } | |
39 use { | |
40 'ojroques/nvim-osc52', | |
41 config = function() | |
42 require('osc52').setup { trim = true } | |
43 local copy = function(lines, _) require('osc52').copy(table.concat(lines, '\n')) end | |
44 local paste = function() return { vim.fn.split(vim.fn.getreg '', '\n'), vim.fn.getregtype '' } end | |
45 vim.g.clipboard = { | |
46 name = 'osc52', | |
47 copy = { ['+'] = copy, ['*'] = copy }, | |
48 paste = { ['+'] = paste, ['*'] = paste }, | |
49 } | |
50 end, | |
51 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
52 |
706 | 53 use { |
54 'tpope/vim-eunuch', | |
55 cmd = { | |
56 'Delete', | |
57 'Unlink', | |
58 'Move', | |
59 'Rename', | |
60 'Mkdir', | |
61 'Chmod', | |
62 'Cfind', | |
63 'Clocate', | |
64 'Lfind', | |
65 'Llocate', | |
66 'SudoEdit', | |
67 'SudoWrite', | |
68 'Wall', | |
69 }, | |
70 } | |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
71 |
706 | 72 -- Smooth scrolling |
73 use { | |
74 'karb94/neoscroll.nvim', | |
75 config = function() require('neoscroll').setup {} end, | |
76 } | |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
77 |
706 | 78 -- Faster lua package loading (until 15436 is merged) |
79 use { | |
80 'lewis6991/impatient.nvim', | |
81 module = { 'impatient' }, | |
82 setup = function() require 'impatient' end, | |
83 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
84 |
706 | 85 -- Library with lua functions |
86 use { 'nvim-lua/plenary.nvim' } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
87 |
706 | 88 -- Spelling/autocorrection |
89 use { 'tpope/vim-abolish' } | |
482 | 90 |
706 | 91 -- Git/VCS |
92 use { 'vim-scripts/gitignore' } | |
93 use { | |
94 'zegervdv/settle.nvim', | |
95 opt = true, | |
96 cmd = { 'SettleInit' }, | |
97 config = function() | |
98 require('settle').setup { | |
99 wrap = true, | |
100 symbol = '▊', | |
101 pre_hook = function() | |
102 -- disable dirvish | |
103 vim.api.nvim_del_keymap('n', '-') | |
104 end, | |
105 } | |
106 end, | |
107 } | |
108 use { 'tpope/vim-git', ft = { 'gitcommit', 'gitrebase' } } | |
109 use { | |
110 local_plugin 'diffview.nvim', | |
715
28900bda2334
feat: enable 4 way diff in diffview
zegervdv <zegervdv@me.com>
parents:
714
diff
changeset
|
111 config = function() |
28900bda2334
feat: enable 4 way diff in diffview
zegervdv <zegervdv@me.com>
parents:
714
diff
changeset
|
112 require('diffview').setup { |
28900bda2334
feat: enable 4 way diff in diffview
zegervdv <zegervdv@me.com>
parents:
714
diff
changeset
|
113 use_icons = false, |
734
485de5dc7ef2
feat: configure fold/folder icons for diffview
zegervdv <zegervdv@me.com>
parents:
733
diff
changeset
|
114 icons = { |
485de5dc7ef2
feat: configure fold/folder icons for diffview
zegervdv <zegervdv@me.com>
parents:
733
diff
changeset
|
115 folder_closed = '+', |
485de5dc7ef2
feat: configure fold/folder icons for diffview
zegervdv <zegervdv@me.com>
parents:
733
diff
changeset
|
116 folder_open = '-', |
485de5dc7ef2
feat: configure fold/folder icons for diffview
zegervdv <zegervdv@me.com>
parents:
733
diff
changeset
|
117 }, |
485de5dc7ef2
feat: configure fold/folder icons for diffview
zegervdv <zegervdv@me.com>
parents:
733
diff
changeset
|
118 signs = { |
485de5dc7ef2
feat: configure fold/folder icons for diffview
zegervdv <zegervdv@me.com>
parents:
733
diff
changeset
|
119 fold_closed = '+', |
485de5dc7ef2
feat: configure fold/folder icons for diffview
zegervdv <zegervdv@me.com>
parents:
733
diff
changeset
|
120 fold_open = '-', |
485de5dc7ef2
feat: configure fold/folder icons for diffview
zegervdv <zegervdv@me.com>
parents:
733
diff
changeset
|
121 done = '✓', |
485de5dc7ef2
feat: configure fold/folder icons for diffview
zegervdv <zegervdv@me.com>
parents:
733
diff
changeset
|
122 }, |
733
1a7ec1a0d2a6
feat: enable chg binary for diffview
zegervdv <zegervdv@me.com>
parents:
732
diff
changeset
|
123 hg_cmd = { 'chg' }, |
715
28900bda2334
feat: enable 4 way diff in diffview
zegervdv <zegervdv@me.com>
parents:
714
diff
changeset
|
124 view = { |
28900bda2334
feat: enable 4 way diff in diffview
zegervdv <zegervdv@me.com>
parents:
714
diff
changeset
|
125 merge_tool = { |
28900bda2334
feat: enable 4 way diff in diffview
zegervdv <zegervdv@me.com>
parents:
714
diff
changeset
|
126 layout = 'diff4_mixed', |
28900bda2334
feat: enable 4 way diff in diffview
zegervdv <zegervdv@me.com>
parents:
714
diff
changeset
|
127 }, |
28900bda2334
feat: enable 4 way diff in diffview
zegervdv <zegervdv@me.com>
parents:
714
diff
changeset
|
128 }, |
28900bda2334
feat: enable 4 way diff in diffview
zegervdv <zegervdv@me.com>
parents:
714
diff
changeset
|
129 } |
731
08beb03b4ee5
feat: add which-key menu for some diffview commands
zegervdv <zegervdv@me.com>
parents:
730
diff
changeset
|
130 local wk = require 'which-key' |
08beb03b4ee5
feat: add which-key menu for some diffview commands
zegervdv <zegervdv@me.com>
parents:
730
diff
changeset
|
131 wk.register { ['<leader>d'] = { name = 'Diffview' } } |
08beb03b4ee5
feat: add which-key menu for some diffview commands
zegervdv <zegervdv@me.com>
parents:
730
diff
changeset
|
132 vim.keymap.set('n', '<leader>do', '<cmd>DiffviewOpen<CR>', { desc = 'Open Diffview' }) |
08beb03b4ee5
feat: add which-key menu for some diffview commands
zegervdv <zegervdv@me.com>
parents:
730
diff
changeset
|
133 vim.keymap.set('n', '<leader>df', '<cmd>DiffviewFileHistory %<CR>', { desc = 'Show history for current file' }) |
734
485de5dc7ef2
feat: configure fold/folder icons for diffview
zegervdv <zegervdv@me.com>
parents:
733
diff
changeset
|
134 vim.keymap.set('n', '<leader>dh', ':DiffviewFileHistory ', { desc = 'Show history' }) |
731
08beb03b4ee5
feat: add which-key menu for some diffview commands
zegervdv <zegervdv@me.com>
parents:
730
diff
changeset
|
135 vim.keymap.set('n', '<leader>dc', '<cmd>DiffviewClose<CR>', { desc = 'Close Diffview window' }) |
715
28900bda2334
feat: enable 4 way diff in diffview
zegervdv <zegervdv@me.com>
parents:
714
diff
changeset
|
136 end, |
706 | 137 } |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
138 |
706 | 139 -- Comments |
140 use { | |
141 'numToStr/Comment.nvim', | |
142 config = function() | |
143 local ft = require 'Comment.ft' | |
144 ft.systemverilog = { '//%s', '/*%s*/' } | |
145 ft.verilog = { '//%s', '/*%s*/' } | |
497
852acbe7ae8e
Use Comment.nvim for more control when commenting
zegervdv <zegervdv@me.com>
parents:
496
diff
changeset
|
146 |
706 | 147 require('Comment').setup { |
148 padding = true, | |
149 sticky = true, | |
150 ignore = '^(%s*)$', | |
151 mappings = { | |
152 basic = true, | |
153 extra = true, | |
154 }, | |
155 } | |
156 end, | |
157 keys = { | |
740
68cb1c4b268c
feat: add descriptions for keymaps
zegervdv <zegervdv@me.com>
parents:
739
diff
changeset
|
158 { 'n', 'gc', 'Comment toggle' }, |
68cb1c4b268c
feat: add descriptions for keymaps
zegervdv <zegervdv@me.com>
parents:
739
diff
changeset
|
159 { 'n', 'gb', 'Comment Block toggle' }, |
68cb1c4b268c
feat: add descriptions for keymaps
zegervdv <zegervdv@me.com>
parents:
739
diff
changeset
|
160 { 'v', 'gc', 'Comment toggle' }, |
68cb1c4b268c
feat: add descriptions for keymaps
zegervdv <zegervdv@me.com>
parents:
739
diff
changeset
|
161 { 'v', 'gb', 'Comment block toggle' }, |
706 | 162 }, |
163 } | |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
164 |
706 | 165 -- Parentheses etc |
166 use { 'kylechui/nvim-surround', config = function() require('nvim-surround').setup() end } | |
167 use { | |
168 'windwp/nvim-autopairs', | |
169 config = function() | |
170 local npairs = require 'nvim-autopairs' | |
171 local Rule = require 'nvim-autopairs.rule' | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
172 |
706 | 173 local cmp = require 'nvim-autopairs.completion.cmp' |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
174 |
706 | 175 require('cmp').event:on('confirm_done', cmp.on_confirm_done()) |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
176 |
706 | 177 npairs.setup { |
178 ignored_next_char = string.gsub([[ [%w%%%'%[%.] ]], '%s+', ''), | |
179 enable_afterquote = false, | |
180 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
181 |
706 | 182 npairs.add_rules { |
183 Rule(' ', ' '):with_pair(function(opts) | |
184 local pair = opts.line:sub(opts.col - 1, opts.col) | |
185 return vim.tbl_contains({ '()', '[]', '{}' }, pair) | |
186 end), | |
187 Rule('( ', ' )') | |
188 :with_pair(function() return false end) | |
189 :with_move(function(opts) return opts.prev_char:match '.%)' ~= nil end) | |
190 :use_key ')', | |
191 Rule('{ ', ' }') | |
192 :with_pair(function() return false end) | |
193 :with_move(function(opts) return opts.prev_char:match '.%}' ~= nil end) | |
194 :use_key '}', | |
195 Rule('[ ', ' ]') | |
196 :with_pair(function() return false end) | |
197 :with_move(function(opts) return opts.prev_char:match '.%]' ~= nil end) | |
198 :use_key ']', | |
199 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
200 |
706 | 201 npairs.get_rule('`'):with_pair(function() return vim.bo.filetype ~= 'systemverilog' end) |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
202 |
706 | 203 npairs.get_rule("'")[1]:with_pair(function() return vim.bo.filetype ~= 'systemverilog' end) |
204 end, | |
205 after = { 'nvim-cmp' }, | |
206 } | |
207 | |
208 -- Moving around within lines | |
209 use { 'wellle/targets.vim', event = 'InsertEnter *' } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
210 |
746
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
211 -- Search |
706 | 212 -- Opening files |
213 use { 'wsdjeg/vim-fetch' } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
214 |
706 | 215 -- session management |
216 use { | |
217 'folke/persistence.nvim', | |
218 event = 'BufReadPre', | |
219 module = 'persistence', | |
220 config = function() require('persistence').setup() end, | |
221 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
222 |
706 | 223 -- Indent lines |
224 use { | |
225 'lukas-reineke/indent-blankline.nvim', | |
226 config = function() | |
227 vim.g.indent_blankline_buftype_exclude = { 'terminal', 'help', 'nofile' } | |
228 vim.g.indent_blankline_show_first_indent_level = false | |
229 vim.g.indent_blankline_char = '│' | |
230 end, | |
231 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
232 |
706 | 233 -- Increment/decrement |
234 use { | |
235 'zegervdv/nrpattern.nvim', | |
236 branch = 'lua', | |
237 requires = 'tpope/vim-repeat', | |
238 config = function() | |
239 local nrpattern = require 'nrpattern' | |
240 local defaults = require 'nrpattern.default' | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
241 |
706 | 242 defaults[{ 'input', 'output' }] = { priority = 12, filetypes = { 'verilog', 'systemverilog' } } |
243 defaults[{ "'1", "'0" }] = { priority = 9, filetypes = { 'verilog', 'systemverilog' } } | |
244 | |
245 nrpattern.setup(defaults) | |
246 end, | |
247 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
248 |
706 | 249 -- Tmux |
250 use { | |
251 'numtostr/navigator.nvim', | |
252 config = function() | |
253 require('Navigator').setup { auto_save = 'current', disable_on_zoom = true } | |
632
ca2687d578d2
Add which-key for lesser used keymaps
zegervdv <zegervdv@me.com>
parents:
631
diff
changeset
|
254 |
706 | 255 local nmap = function(lhs, rhs, opts) return vim.keymap.set('n', lhs, rhs, opts) end |
256 nmap('<c-h>', require('Navigator').left, { silent = true }) | |
257 nmap('<c-j>', require('Navigator').down, { silent = true }) | |
258 nmap('<c-k>', require('Navigator').up, { silent = true }) | |
259 nmap('<c-l>', require('Navigator').right, { silent = true }) | |
260 end, | |
261 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
262 |
706 | 263 -- Keymap help |
264 use { | |
265 'folke/which-key.nvim', | |
266 config = function() | |
267 require('which-key').setup { | |
735
972d55bec218
feat: enable spelling suggestions in which-key
zegervdv <zegervdv@me.com>
parents:
734
diff
changeset
|
268 plugins = { |
972d55bec218
feat: enable spelling suggestions in which-key
zegervdv <zegervdv@me.com>
parents:
734
diff
changeset
|
269 spelling = { |
972d55bec218
feat: enable spelling suggestions in which-key
zegervdv <zegervdv@me.com>
parents:
734
diff
changeset
|
270 enabled = true, |
972d55bec218
feat: enable spelling suggestions in which-key
zegervdv <zegervdv@me.com>
parents:
734
diff
changeset
|
271 suggestions = 20, |
972d55bec218
feat: enable spelling suggestions in which-key
zegervdv <zegervdv@me.com>
parents:
734
diff
changeset
|
272 }, |
972d55bec218
feat: enable spelling suggestions in which-key
zegervdv <zegervdv@me.com>
parents:
734
diff
changeset
|
273 }, |
972d55bec218
feat: enable spelling suggestions in which-key
zegervdv <zegervdv@me.com>
parents:
734
diff
changeset
|
274 triggers = { '<leader>', 'g', '<c-w>', '"', '`', 'z' }, |
706 | 275 } |
276 end, | |
277 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
278 |
706 | 279 -- Completion/snippets/LSP |
280 use { 'neovim/nvim-lspconfig' } | |
281 use { | |
282 'hrsh7th/nvim-cmp', | |
283 requires = { | |
284 'hrsh7th/cmp-buffer', | |
285 'hrsh7th/cmp-nvim-lsp', | |
286 'saadparwaiz1/cmp_luasnip', | |
287 'hrsh7th/cmp-path', | |
288 'hrsh7th/cmp-cmdline', | |
289 'hrsh7th/cmp-nvim-lsp-signature-help', | |
290 }, | |
291 config = function() | |
292 local cmp = require 'cmp' | |
293 local luasnip = require 'luasnip' | |
294 | |
295 local has_words_before = function() | |
296 local line, col = unpack(vim.api.nvim_win_get_cursor(0)) | |
297 return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match '%s' == nil | |
298 end | |
518
784b931c51b7
Enable cmp completion for cmdline
zegervdv <zegervdv@me.com>
parents:
517
diff
changeset
|
299 |
706 | 300 cmp.setup { |
301 snippet = { | |
302 expand = function(args) luasnip.lsp_expand(args.body) end, | |
303 }, | |
304 mapping = { | |
305 ['<C-p>'] = { i = cmp.mapping.select_prev_item() }, | |
306 ['<C-n>'] = { i = cmp.mapping.select_next_item() }, | |
307 ['<C-d>'] = { i = cmp.mapping.scroll_docs(-4) }, | |
308 ['<C-y>'] = { i = cmp.mapping.complete() }, | |
309 ['<C-e>'] = { i = cmp.mapping.close() }, | |
310 ['<CR>'] = { i = cmp.mapping.confirm { behavior = cmp.ConfirmBehavior.Replace } }, | |
311 ['<C-k>'] = { i = cmp.mapping.confirm { behavior = cmp.ConfirmBehavior.Replace } }, | |
312 }, | |
313 sources = { | |
314 { name = 'nvim_lsp' }, | |
315 { name = 'nvim_lsp_signature_help' }, | |
316 { name = 'buffer', keyword_length = 5 }, | |
317 { name = 'luasnip' }, | |
318 { name = 'path' }, | |
319 }, | |
320 experimental = { | |
321 native_menu = false, | |
322 ghost_text = true, | |
323 }, | |
324 } | |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
325 |
706 | 326 cmp.setup.cmdline(':', { |
327 mapping = cmp.mapping.preset.cmdline { | |
328 ['<C-p>'] = { c = cmp.mapping.select_prev_item() }, | |
329 ['<C-n>'] = { c = cmp.mapping.select_next_item() }, | |
330 ['<C-y>'] = { c = cmp.mapping.complete() }, | |
496
8524c1a304a6
Enable tree-sitter highlights for systemverilog
zegervdv <zegervdv@me.com>
parents:
495
diff
changeset
|
331 }, |
706 | 332 sources = cmp.config.sources({ |
333 { name = 'path' }, | |
334 }, { | |
335 { name = 'cmdline', keyword_length = 4 }, | |
336 }), | |
337 }) | |
338 end, | |
339 after = 'luasnip', | |
340 } | |
341 use { | |
342 { | |
343 'nvim-treesitter/nvim-treesitter', | |
344 run = ':TSUpdate', | |
345 config = function() | |
346 require 'nvim-treesitter.highlight' | |
347 | |
348 require('nvim-treesitter.configs').setup { | |
349 ensure_installed = { | |
350 'python', | |
351 'lua', | |
352 'verilog', | |
353 'json', | |
354 'yaml', | |
355 'bash', | |
356 'dockerfile', | |
357 'c', | |
358 'cpp', | |
359 'regex', | |
360 'markdown', | |
361 'rst', | |
362 'beancount', | |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
363 }, |
706 | 364 indent = { |
365 enable = false, | |
366 }, | |
367 highlight = { | |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
368 enable = true, |
706 | 369 disable = { 'systemverilog', 'verilog' }, |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
370 }, |
706 | 371 incremental_selection = { |
500
c6624d04906a
Add treesitter based textobjects
zegervdv <zegervdv@me.com>
parents:
499
diff
changeset
|
372 enable = true, |
c6624d04906a
Add treesitter based textobjects
zegervdv <zegervdv@me.com>
parents:
499
diff
changeset
|
373 keymaps = { |
706 | 374 init_selection = 'gnn', |
375 node_incremental = 'grn', | |
376 scope_incremental = 'grc', | |
377 node_decremental = 'grm', | |
500
c6624d04906a
Add treesitter based textobjects
zegervdv <zegervdv@me.com>
parents:
499
diff
changeset
|
378 }, |
c6624d04906a
Add treesitter based textobjects
zegervdv <zegervdv@me.com>
parents:
499
diff
changeset
|
379 }, |
706 | 380 refactor = { |
381 highlight_definitions = { enable = true }, | |
382 smart_rename = { enable = true, keymaps = { smart_rename = 'gsr' } }, | |
383 navigation = { | |
384 enable = true, | |
385 keymaps = { goto_definition = 'gnd', list_definitions = 'gnD' }, | |
386 }, | |
387 }, | |
388 textobjects = { | |
389 move = { | |
390 enable = true, | |
391 goto_next_start = { [']]'] = '@block.outer' }, | |
392 goto_previous_start = { ['[['] = '@block.outer' }, | |
393 goto_next_end = { [']['] = '@block.outer' }, | |
394 goto_previous_end = { ['[]'] = '@block.outer' }, | |
395 }, | |
396 select = { | |
397 enable = true, | |
398 lookahead = true, | |
399 keymaps = { | |
400 ['af'] = '@function.outer', | |
401 ['if'] = '@function.inner', | |
728
b9c330fc7a79
feat: add treesitter block object
zegervdv <zegervdv@me.com>
parents:
727
diff
changeset
|
402 ['ab'] = '@block.outer', |
b9c330fc7a79
feat: add treesitter block object
zegervdv <zegervdv@me.com>
parents:
727
diff
changeset
|
403 ['ib'] = '@block.inner', |
706 | 404 }, |
405 }, | |
406 }, | |
407 playground = { enable = true, disable = {}, updatetime = 25, persist_queries = false }, | |
408 } | |
409 end, | |
410 }, | |
411 'nvim-treesitter/nvim-treesitter-refactor', | |
412 'nvim-treesitter/nvim-treesitter-textobjects', | |
413 { 'nvim-treesitter/playground', opt = true }, | |
414 } | |
415 use { 'L3MON4D3/luasnip' } | |
416 use { | |
417 'rmagatti/goto-preview', | |
418 config = function() require('goto-preview').setup {} end, | |
419 } | |
420 use { | |
421 'jose-elias-alvarez/null-ls.nvim', | |
422 requires = 'nvim-lua/plenary.nvim', | |
423 } | |
424 use { 'folke/neodev.nvim' } | |
425 use { | |
426 'smjonas/inc-rename.nvim', | |
427 config = function() | |
428 require('inc_rename').setup { | |
429 post_hook = function(result) | |
430 local changed = {} | |
431 for uri, changes in pairs(result.changes or result.documentChanges) do | |
432 local bufnr = vim.uri_to_bufnr(uri) | |
433 for _, edits in ipairs(changes) do | |
434 table.insert(changed, { | |
435 bufnr = bufnr, | |
436 lnum = edits.range.start.line + 1, | |
437 col = edits.range.start.character + 1, | |
438 text = vim.api.nvim_buf_get_lines(bufnr, edits.range.start.line, edits.range.start.line + 1, false)[1], | |
439 }) | |
440 end | |
441 end | |
442 vim.fn.setqflist(changed, 'r') | |
443 end, | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
444 } |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
445 end, |
706 | 446 } |
447 use { | |
718
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
448 local_plugin 'lsp-format-modifications.nvim', |
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
449 requires = { 'nvim-lua/plenary.nvim' }, |
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
450 } |
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
451 use { |
720
6d036fac4dbd
feat: use notifier for messages and lsp progress
zegervdv <zegervdv@me.com>
parents:
719
diff
changeset
|
452 'vigoux/notifier.nvim', |
6d036fac4dbd
feat: use notifier for messages and lsp progress
zegervdv <zegervdv@me.com>
parents:
719
diff
changeset
|
453 config = function() require('notifier').setup { status_width = 70 } end, |
706 | 454 } |
455 use { | |
456 'https://git.sr.ht/~whynothugo/lsp_lines.nvim', | |
457 disable = true, | |
458 config = function() | |
459 require('lsp_lines').setup() | |
460 vim.diagnostic.config { virtual_lines = false, virtual_text = false } | |
461 vim.keymap.set( | |
462 'n', | |
463 'g?', | |
464 function() require('lsp_lines').toggle() end, | |
465 { desc = 'Toggle LSP diagnostic lines' } | |
466 ) | |
467 end, | |
468 } | |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
469 |
706 | 470 use { |
739 | 471 'ThePrimeagen/refactoring.nvim', |
472 after = 'which-key.nvim', | |
473 requires = { | |
474 'nvim-lua/plenary.nvim', | |
475 'nvim-treesitter/nvim-treesitter', | |
476 }, | |
477 config = function() | |
478 local refactoring = require 'refactoring' | |
479 local wk = require 'which-key' | |
480 | |
481 refactoring.setup {} | |
482 | |
483 wk.register { ['<leader>r'] = { name = 'Refactoring' } } | |
484 | |
485 local maps = { | |
486 { mode = 'v', key = 'e', name = 'Extract Function' }, | |
487 { mode = 'v', key = 'f', name = 'Extract Function To File' }, | |
488 { mode = 'v', key = 'v', name = 'Extract Variable' }, | |
489 { mode = 'v', key = 'i', name = 'Inline Variable' }, | |
490 { mode = 'n', key = 'b', name = 'Extract Block' }, | |
491 { mode = 'n', key = 'bf', name = 'Extract Block To File' }, | |
492 { mode = 'n', key = 'i', name = 'Inline Variable' }, | |
493 } | |
494 for _, map in ipairs(maps) do | |
495 vim.keymap.set( | |
496 map.mode, | |
497 '<leader>r' .. map.key, | |
498 function() refactoring.refactor(map.name) end, | |
499 { desc = map.name, silent = true, expr = false } | |
500 ) | |
501 end | |
502 vim.keymap.set( | |
503 'n', | |
504 '<leader>rpp', | |
505 function() refactoring.debug.printf { below = false } end, | |
506 { desc = 'Add debug print statement', silent = true } | |
507 ) | |
508 vim.keymap.set( | |
509 'n', | |
510 '<leader>rpv', | |
511 function() refactoring.debug.print_var { normal = true } end, | |
512 { desc = 'Print variable', silent = true } | |
513 ) | |
514 vim.keymap.set( | |
515 'v', | |
516 '<leader>rpv', | |
517 function() refactoring.debug.print_var() end, | |
518 { desc = 'Print variable', silent = true } | |
519 ) | |
520 vim.keymap.set( | |
521 'n', | |
522 '<leader>rpc', | |
523 function() refactoring.debug.cleanup {} end, | |
524 { desc = 'Clean up debug prints', silent = true } | |
525 ) | |
526 end, | |
527 } | |
528 | |
529 use { | |
744 | 530 'ibhagwan/fzf-lua', |
706 | 531 config = function() |
744 | 532 local fzf = require 'fzf-lua' |
533 fzf.setup { | |
534 winopts = { | |
535 border = 'single', | |
706 | 536 }, |
537 } | |
744 | 538 fzf.register_ui_select() |
746
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
539 |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
540 local grep_opts = function(pattern) |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
541 local utils = require 'fzf-lua.utils' |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
542 local config = require 'fzf-lua.config' |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
543 |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
544 local args = utils.input 'rg opts> ' |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
545 local rg_opts = config.globals.grep.rg_opts .. ' ' .. args |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
546 local opts = config.normalize_opts({ rg_opts = rg_opts }, config.globals.grep) |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
547 |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
548 opts.search = pattern |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
549 fzf.live_grep(opts) |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
550 end |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
551 local get_selected_word = function() |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
552 local start_pos = vim.fn.getpos "'[" |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
553 local end_pos = vim.fn.getpos "']" |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
554 local start_line = math.min(start_pos[2], end_pos[2]) - 1 |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
555 local end_line = math.max(start_pos[2], end_pos[2]) |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
556 local start_col = math.min(start_pos[3], end_pos[3]) |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
557 local end_col = math.max(start_pos[3], end_pos[3]) |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
558 |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
559 local line = vim.api.nvim_buf_get_lines(0, start_line, end_line, true) |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
560 return line[1]:sub(start_col, end_col) |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
561 end |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
562 |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
563 vim.keymap.set({ 'n' }, '<leader>fg', function() grep_opts() end, { desc = 'Live grep prompting for options' }) |
747
c0395223c18f
feat: add mapping to search for files
zegervdv <zegervdv@me.com>
parents:
746
diff
changeset
|
564 vim.keymap.set({ 'n' }, '<leader>ff', function() fzf.files() end, { desc = 'Search for files' }) |
746
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
565 |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
566 function _G.__live_grep(motion) |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
567 local word = get_selected_word() |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
568 fzf.live_grep { search = word } |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
569 end |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
570 |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
571 vim.keymap.set({ 'x', 'n' }, 'gs', function() |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
572 vim.o.operatorfunc = 'v:lua.__live_grep' |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
573 return 'g@' |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
574 end, { expr = true, desc = 'Live grep for word' }) |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
575 |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
576 function _G.__live_grep_opts(motion) |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
577 local word = get_selected_word() |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
578 grep_opts(word) |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
579 end |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
580 |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
581 vim.keymap.set({ 'x', 'n' }, 'gt', function() |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
582 vim.o.operatorfunc = 'v:lua.__live_grep_opts' |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
583 return 'g@' |
cc66c8f2d548
feat: replace vim-grepper with fzf-lua and some mappings
zegervdv <zegervdv@me.com>
parents:
744
diff
changeset
|
584 end, { expr = true, desc = 'Live grep for word with options' }) |
706 | 585 end, |
586 } | |
620 | 587 |
706 | 588 use { 'vimjas/vim-python-pep8-indent', ft = { 'python' } } |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
589 |
706 | 590 use { |
591 'rebelot/heirline.nvim', | |
716
787e0516daa5
feat: add darkmode settings for heirline
zegervdv <zegervdv@me.com>
parents:
715
diff
changeset
|
592 after = { 'espresso-tutti-colori.nvim', 'catppuccin' }, |
706 | 593 config = function() |
594 local utils = require 'heirline.utils' | |
595 local conditions = require 'heirline.conditions' | |
596 | |
716
787e0516daa5
feat: add darkmode settings for heirline
zegervdv <zegervdv@me.com>
parents:
715
diff
changeset
|
597 local colors |
787e0516daa5
feat: add darkmode settings for heirline
zegervdv <zegervdv@me.com>
parents:
715
diff
changeset
|
598 if os.getenv 'DARKMODE' then |
787e0516daa5
feat: add darkmode settings for heirline
zegervdv <zegervdv@me.com>
parents:
715
diff
changeset
|
599 colors = require('catppuccin.palettes').get_palette 'mocha' |
787e0516daa5
feat: add darkmode settings for heirline
zegervdv <zegervdv@me.com>
parents:
715
diff
changeset
|
600 else |
787e0516daa5
feat: add darkmode settings for heirline
zegervdv <zegervdv@me.com>
parents:
715
diff
changeset
|
601 colors = require('tutti-colori.colors').setup() |
787e0516daa5
feat: add darkmode settings for heirline
zegervdv <zegervdv@me.com>
parents:
715
diff
changeset
|
602 end |
706 | 603 colors.diag_warn = utils.get_highlight('DiagnosticSignWarn').fg |
604 colors.diag_error = utils.get_highlight('DiagnosticSignError').fg | |
605
2828b29de182
switch to heirline as status line
zegervdv <zegervdv@me.com>
parents:
604
diff
changeset
|
605 |
706 | 606 require('heirline').load_colors(colors) |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
607 |
706 | 608 local align = { provider = '%=' } |
609 local space = { provider = ' ' } | |
610 local lbound = { provider = '▊ ', hl = { fg = 'blue', bg = 'bg' } } | |
611 local rbound = { provider = ' ▊', hl = { fg = 'blue', bg = 'bg' } } | |
612 | |
613 local FileNameBlock = { | |
614 init = function(self) self.filename = vim.api.nvim_buf_get_name(0) end, | |
615 } | |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
616 |
706 | 617 local FileName = { |
618 provider = function(self) | |
619 local filename = vim.fn.fnamemodify(self.filename, ':.') | |
620 if filename == '' then return '[No Name]' end | |
605
2828b29de182
switch to heirline as status line
zegervdv <zegervdv@me.com>
parents:
604
diff
changeset
|
621 |
706 | 622 if not conditions.width_percent_below(#filename, 0.25) then filename = vim.fn.pathshorten(filename) end |
623 | |
624 return filename | |
625 end, | |
626 hl = { fg = 'blue' }, | |
627 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
628 |
706 | 629 local FileFlags = { |
630 { | |
631 provider = function() | |
632 if vim.bo.modified then return ' [+]' end | |
633 end, | |
634 hl = { fg = 'green' }, | |
635 }, | |
636 { | |
637 provider = function() | |
638 if not vim.bo.modifiable or vim.bo.readonly then return ' RO' end | |
639 end, | |
640 hl = { fg = 'orange' }, | |
641 }, | |
642 } | |
609 | 643 |
706 | 644 FileNameBlock = utils.insert(FileNameBlock, FileName, unpack(FileFlags), { provider = '%<' }) |
645 | |
646 local Ruler = { provider = '%l : %c %P' } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
647 |
706 | 648 local Lsp = { |
649 condition = conditions.lsp_attached, | |
650 update = { 'LspAttach', 'LspDetach' }, | |
605
2828b29de182
switch to heirline as status line
zegervdv <zegervdv@me.com>
parents:
604
diff
changeset
|
651 provider = function() |
706 | 652 local names = {} |
653 for _, server in pairs(vim.lsp.get_active_clients { bufnr = 0 }) do | |
654 table.insert(names, server.name) | |
655 end | |
656 return table.concat(names, ', ') | |
487
0252f9494d64
Remove deferred loading of packer plugins
Zeger Van de Vannet <zegervdv@me.com>
parents:
486
diff
changeset
|
657 end, |
605
2828b29de182
switch to heirline as status line
zegervdv <zegervdv@me.com>
parents:
604
diff
changeset
|
658 hl = { fg = 'green' }, |
706 | 659 } |
605
2828b29de182
switch to heirline as status line
zegervdv <zegervdv@me.com>
parents:
604
diff
changeset
|
660 |
706 | 661 local Diagnostics = { |
662 condition = conditions.has_diagnostics, | |
663 init = function(self) | |
664 self.errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR }) | |
665 self.warnings = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN }) | |
666 end, | |
667 update = { 'DiagnosticChanged', 'BufEnter' }, | |
668 { | |
669 provider = function(self) return self.errors > 0 and self.errors .. ' ' end, | |
670 hl = { fg = 'diag_error' }, | |
671 }, | |
672 { | |
673 provider = function(self) return self.warnings > 0 and self.warnings .. ' ' end, | |
674 }, | |
675 hl = { fg = 'diag_warn' }, | |
676 on_click = { | |
677 callback = function() | |
678 local diagnostics = vim.diagnostic.get(0, { severity = { min = vim.diagnostic.severity.WARN } }) | |
679 vim.fn.setqflist(vim.diagnostic.toqflist(diagnostics)) | |
680 vim.cmd.copen { mods = { split = 'botright' } } | |
681 end, | |
682 name = 'heirline_diagnostics', | |
683 }, | |
684 } | |
605
2828b29de182
switch to heirline as status line
zegervdv <zegervdv@me.com>
parents:
604
diff
changeset
|
685 |
725
624d8036f5ae
feat: add window number to inactive window and a mapping to select it
zegervdv <zegervdv@me.com>
parents:
724
diff
changeset
|
686 local Window = { |
624d8036f5ae
feat: add window number to inactive window and a mapping to select it
zegervdv <zegervdv@me.com>
parents:
724
diff
changeset
|
687 provider = function() return '- ' .. vim.api.nvim_win_get_number(0) .. ' -' end, |
624d8036f5ae
feat: add window number to inactive window and a mapping to select it
zegervdv <zegervdv@me.com>
parents:
724
diff
changeset
|
688 hl = { fg = 'blue' }, |
624d8036f5ae
feat: add window number to inactive window and a mapping to select it
zegervdv <zegervdv@me.com>
parents:
724
diff
changeset
|
689 } |
624d8036f5ae
feat: add window number to inactive window and a mapping to select it
zegervdv <zegervdv@me.com>
parents:
724
diff
changeset
|
690 |
706 | 691 local statusline_default = { lbound, FileNameBlock, align, Diagnostics, Lsp, space, Ruler, rbound } |
692 local statusline_inactive = { | |
693 condition = function() return not conditions.is_active() end, | |
694 lbound, | |
695 FileNameBlock, | |
696 align, | |
725
624d8036f5ae
feat: add window number to inactive window and a mapping to select it
zegervdv <zegervdv@me.com>
parents:
724
diff
changeset
|
697 Window, |
706 | 698 rbound, |
699 } | |
700 local statusline = { | |
701 fallthrough = false, | |
702 hl = { bg = 'bg' }, | |
703 statusline_inactive, | |
704 statusline_default, | |
705 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
706 |
706 | 707 require('heirline').setup(statusline) |
708 end, | |
709 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
710 |
706 | 711 -- File navigation |
712 use { | |
713 'elihunter173/dirbuf.nvim', | |
714 opt = true, | |
715 config = function() | |
716 require('dirbuf').setup { | |
717 hash_padding = 2, | |
718 show_hidden = true, | |
719 } | |
720 end, | |
721 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
722 |
706 | 723 -- Colorscheme |
724 use { | |
725 local_plugin 'espresso-tutti-colori.nvim', | |
737
179f83e1a479
fix: correct colorscheme setting
zegervdv <zegervdv@me.com>
parents:
735
diff
changeset
|
726 disable = os.getenv 'DARKMODE', |
179f83e1a479
fix: correct colorscheme setting
zegervdv <zegervdv@me.com>
parents:
735
diff
changeset
|
727 config = function() |
179f83e1a479
fix: correct colorscheme setting
zegervdv <zegervdv@me.com>
parents:
735
diff
changeset
|
728 require('tutti-colori').setup() |
179f83e1a479
fix: correct colorscheme setting
zegervdv <zegervdv@me.com>
parents:
735
diff
changeset
|
729 require('tutti-colori').load() |
179f83e1a479
fix: correct colorscheme setting
zegervdv <zegervdv@me.com>
parents:
735
diff
changeset
|
730 end, |
714 | 731 } |
732 use { | |
733 'catppuccin/nvim', | |
734 as = 'catppuccin', | |
706 | 735 config = function() |
714 | 736 require('catppuccin').setup { |
737 flavour = 'mocha', | |
738 } | |
706 | 739 end, |
740 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
741 |
706 | 742 -- Terminal |
743 use { | |
744 'akinsho/nvim-toggleterm.lua', | |
745 config = function() | |
746 require('toggleterm').setup { | |
747 size = 15, | |
748 open_mapping = [[<F12>]], | |
749 shade_filetypes = { 'none' }, | |
750 shade_terminals = true, | |
751 persist_size = true, | |
752 direction = 'horizontal', | |
753 } | |
754 end, | |
755 keys = { [[<F12>]] }, | |
756 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
757 |
706 | 758 -- Integration with external tools |
759 use { | |
760 'glacambre/firenvim', | |
761 run = function() vim.fn['firenvim#install'](0) end, | |
762 config = function() | |
763 vim.g.firenvim_config = { | |
764 localSettings = { | |
765 ['.*'] = { | |
766 takeover = 'never', | |
767 }, | |
582 | 768 }, |
706 | 769 } |
770 end, | |
771 } | |
772 end, | |
773 config = { snapshot_path = vim.fn.stdpath 'config' }, | |
774 } | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
775 |
613 | 776 vim.cmd.packadd 'dirbuf.nvim' |
519
d919c1590230
Move dirvish loading to init.lua
zegervdv <zegervdv@me.com>
parents:
518
diff
changeset
|
777 |
714 | 778 if os.getenv 'DARKMODE' then |
779 vim.cmd.colorscheme 'catppuccin' | |
780 else | |
737
179f83e1a479
fix: correct colorscheme setting
zegervdv <zegervdv@me.com>
parents:
735
diff
changeset
|
781 require('tutti-colori').setup() |
714 | 782 vim.cmd.colorscheme 'espresso-tutti-colori' |
783 end | |
784 | |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
785 -- Configuration |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
786 vim.opt.backspace = { 'indent', 'eol', 'start' } -- Backspace everything |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
787 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
788 vim.opt.autoread = true -- Read changed files |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
789 vim.opt.hidden = true -- Allow to move away from modified files |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
790 vim.opt.autowriteall = true -- Write changes when losing focus |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
791 |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
792 -- Visuals |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
793 vim.opt.number = true |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
794 vim.opt.relativenumber = true |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
795 vim.opt.scrolloff = 4 |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
796 vim.opt.showcmd = true -- Show incomplete commands while typing |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
797 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
798 vim.opt.termguicolors = true |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
799 vim.opt.background = 'dark' |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
800 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
801 vim.opt.showmatch = true -- Highligh matching braces |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
802 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
803 vim.opt.wrap = true -- Wrap lines |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
804 vim.opt.wrapmargin = 2 -- Stay 2 chars from side |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
805 vim.opt.textwidth = 79 |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
806 vim.opt.colorcolumn = '81' -- Show indication of 81 chars |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
807 vim.opt.linebreak = true -- Smarter wrapping |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
808 vim.opt.breakindent = true -- Indent wrapped lines to same level |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
809 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
810 vim.opt.fixendofline = true -- Add EOL when missing |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
811 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
812 vim.opt.expandtab = true -- Add spaces when pressing tab |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
813 vim.opt.tabstop = 2 -- Tab is 2 spaces |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
814 vim.opt.shiftwidth = 2 -- Shift per 2 spaces |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
815 vim.opt.shiftround = true -- Round shifts to allign (1 space + tab = 2 spaces) |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
816 |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
817 -- Searching and substitute |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
818 vim.opt.magic = true -- Enable regexes |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
819 vim.opt.hlsearch = true -- Highlight all matches |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
820 vim.opt.incsearch = true -- Show matches while typing |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
821 vim.opt.ignorecase = true |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
822 vim.opt.smartcase = true -- When search pattern contains cases, be case sensitive |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
823 vim.opt.gdefault = true -- Use global flag for substitute: replace all matches on line |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
824 vim.opt.inccommand = 'nosplit' -- Show live replacements directly in text |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
825 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
826 vim.opt.autoindent = true |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
827 vim.opt.cindent = true -- C-syntax based indenting |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
828 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
829 vim.opt.updatetime = 300 -- Faster triggering of CursorHold events |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
830 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
831 vim.opt.errorbells = false -- Don't you beep to me |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
832 vim.opt.title = false -- Don't set the shell title |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
833 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
834 vim.opt.history = 1000 -- Remember last commands |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
835 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
836 vim.opt.wildmenu = true -- Command completion |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
837 vim.opt.wildmode = 'longest:full,full' |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
838 vim.opt.shortmess:append 'c' -- Hide ins-completion messages |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
839 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
840 vim.opt.ttyfast = true -- fast terminal |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
841 vim.opt.lazyredraw = true |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
842 vim.opt.ttimeoutlen = -1 -- Minimum timeout |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
843 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
844 vim.opt.diffopt:append 'iwhite' -- Ignore whitespace in diffs |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
845 vim.opt.diffopt:append 'internal' -- Internal diff engine |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
846 vim.opt.diffopt:append 'algorithm:patience' -- Use patience algorithm |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
847 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
848 vim.opt.tags = { '.git/tags', 'tags' } |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
849 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
850 vim.opt.path:append '**' -- Recursively search current directory |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
851 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
852 vim.opt.formatoptions = { |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
853 c = true, -- Wrap comments |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
854 r = true, -- Continue comments |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
855 o = true, -- Insert comment with o/O |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
856 q = true, -- Format comments with gq |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
857 n = true, -- Indent numbered lists |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
858 [2] = true, -- Indent from 2nd line of paragraph |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
859 [1] = true, -- Don't break before one letter words |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
860 } |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
861 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
862 vim.opt.signcolumn = 'yes' -- Always show signcolumn |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
863 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
864 vim.opt.cursorline = true |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
865 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
866 vim.opt.startofline = false -- When moving try to keep cursor in column |
543
15d6c097f1c9
set nostartofline to keep cursor in same column when scrolling
zegervdv <zegervdv@me.com>
parents:
541
diff
changeset
|
867 |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
868 -- Show certain characters |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
869 vim.opt.list = true |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
870 vim.opt.listchars = { trail = '·', extends = '>', precedes = '<', nbsp = '+', tab = '▸ ' } |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
871 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
872 vim.opt.sessionoptions:remove 'options' -- Remove options from saved sessions (reload from config) |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
873 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
874 vim.opt.completeopt = { 'menu', 'menuone', 'noselect' } |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
875 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
876 vim.opt.splitright = true -- Open new splits to right |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
877 vim.opt.virtualedit = 'block' -- Enable block editting |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
878 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
879 vim.opt.conceallevel = 0 -- Disable conceal |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
880 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
881 vim.opt.pastetoggle = '<F2>' -- Enable paste mode |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
882 |
648
c5ed13440614
Set and optionally create backup and undo dirs
zegervdv <zegervdv@me.com>
parents:
646
diff
changeset
|
883 local optdir = function(path) |
c5ed13440614
Set and optionally create backup and undo dirs
zegervdv <zegervdv@me.com>
parents:
646
diff
changeset
|
884 local Path = require 'plenary.path' |
c5ed13440614
Set and optionally create backup and undo dirs
zegervdv <zegervdv@me.com>
parents:
646
diff
changeset
|
885 local full_path = Path:new(vim.fn.stdpath 'cache' .. '/' .. path) |
c5ed13440614
Set and optionally create backup and undo dirs
zegervdv <zegervdv@me.com>
parents:
646
diff
changeset
|
886 if not full_path:exists() then full_path:mkdir { parents = true } end |
c5ed13440614
Set and optionally create backup and undo dirs
zegervdv <zegervdv@me.com>
parents:
646
diff
changeset
|
887 return full_path .. '//' |
c5ed13440614
Set and optionally create backup and undo dirs
zegervdv <zegervdv@me.com>
parents:
646
diff
changeset
|
888 end |
c5ed13440614
Set and optionally create backup and undo dirs
zegervdv <zegervdv@me.com>
parents:
646
diff
changeset
|
889 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
890 vim.opt.undofile = true -- Persistently remember undos |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
891 vim.opt.undolevels = 1000 |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
892 vim.opt.undodir = optdir 'undo' |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
893 vim.opt.swapfile = false -- Disable swap files |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
894 vim.opt.backup = true -- Keep backups |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
895 vim.opt.backupdir = optdir 'backup' |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
896 |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
897 -- Files to ignore from completion |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
898 vim.opt.wildignore:append { |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
899 '*/tmp/*', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
900 '*.so', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
901 '*.swp', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
902 '*.zip', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
903 '*.o', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
904 '*.bin', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
905 '*.elf', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
906 '*.hex', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
907 '*.eps', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
908 '.git/*', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
909 '*.dup', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
910 '.hg/**', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
911 '*.orig', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
912 '*.*~', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
913 } |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
914 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
915 vim.opt.mouse = { |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
916 n = true, -- Normal mode |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
917 i = true, -- Insert mode |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
918 c = true, -- Commandline mode |
738
d63750fc240f
feat: enable visual selection with mouse
zegervdv <zegervdv@me.com>
parents:
737
diff
changeset
|
919 v = true, -- Visual mode |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
920 } |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
921 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
922 vim.opt.fillchars:append { |
606 | 923 diff = '╱', |
924 } | |
925 | |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
926 vim.opt.jumpoptions:append { 'view' } |
633
9f040a50eac8
add view to jumpoptions to preserve view when mark was set
zegervdv <zegervdv@me.com>
parents:
632
diff
changeset
|
927 |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
928 vim.opt.foldmethod = 'expr' |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
929 vim.opt.foldexpr = 'nvim_treesitter#foldexpr()' |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
930 vim.opt.foldnestmax = 3 |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
931 vim.opt.foldminlines = 1 |
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
932 vim.opt.foldtext = |
463 | 933 [[substitute(getline(v:foldstart),'\\t',repeat('\ ',&tabstop),'g').'...'.trim(getline(v:foldend)) . ' (' . (v:foldend - v:foldstart + 1) . ' lines)']] |
726
2a341028a2c5
fix: use full vim.opt to avoid diagnostic warnings
zegervdv <zegervdv@me.com>
parents:
725
diff
changeset
|
934 vim.opt.foldenable = false |
463 | 935 |
616 | 936 function _G.qftf(info) |
937 local items | |
938 local ret = {} | |
939 if info.quickfix == 1 then | |
940 items = fn.getqflist({ id = info.id, items = 0 }).items | |
941 else | |
942 items = fn.getloclist(info.winid, { id = info.id, items = 0 }).items | |
943 end | |
944 local limit = 31 | |
945 local fnameFmt1, fnameFmt2 = '%-' .. limit .. 's', '…%.' .. (limit - 1) .. 's' | |
946 local validFmt = '%s │%5d:%-3d│%s %s' | |
947 for i = info.start_idx, info.end_idx do | |
948 local e = items[i] | |
949 local fname = '' | |
950 local str | |
951 if e.valid == 1 then | |
952 if e.bufnr > 0 then | |
953 fname = fn.bufname(e.bufnr) | |
954 if fname == '' then | |
955 fname = '[No Name]' | |
956 else | |
957 fname = fname:gsub('^' .. vim.env.HOME, '~') | |
958 end | |
959 -- char in fname may occur more than 1 width, ignore this issue in order to keep performance | |
960 if #fname <= limit then | |
961 fname = fnameFmt1:format(fname) | |
962 else | |
963 fname = fnameFmt2:format(fname:sub(1 - limit)) | |
964 end | |
965 end | |
966 local lnum = e.lnum > 99999 and -1 or e.lnum | |
967 local col = e.col > 999 and -1 or e.col | |
968 local qtype = e.type == '' and '' or ' ' .. e.type:sub(1, 1):upper() | |
969 str = validFmt:format(fname, lnum, col, qtype, e.text) | |
970 else | |
971 str = e.text | |
972 end | |
973 table.insert(ret, str) | |
974 end | |
975 return ret | |
976 end | |
977 | |
978 vim.o.qftf = '{info -> v:lua._G.qftf(info)}' | |
979 | |
520
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
980 -- Clean up terminal codes from strings |
600
24b0dd06381b
Enable collapsed statements for stylua
Zeger Van de Vannet <zegervdv@me.com>
parents:
599
diff
changeset
|
981 local t = function(str) return vim.api.nvim_replace_termcodes(str, true, true, true) end |
520
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
982 |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
983 -- General keymaps |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
984 local map = vim.keymap.set |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
985 |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
986 -- Set leader to space |
639
b6c64ebecc3e
fix: set leader via mapleader option
zegervdv <zegervdv@me.com>
parents:
638
diff
changeset
|
987 vim.g.mapleader = ' ' |
520
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
988 |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
989 -- Move while in insert mode |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
990 map('i', '<C-f>', '<right>') |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
991 |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
992 -- Keep search matches centered |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
993 map('n', 'n', 'nzzzv') |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
994 map('n', 'N', 'Nzzzv') |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
995 |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
996 -- Very magic search patterns |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
997 map({ 'n', 'v' }, '/', '/\\v') |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
998 |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
999 -- Move through long lines as breaks |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1000 map('n', 'j', '(v:count ? "j" : "gj")', { expr = true }) |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1001 map('n', 'k', '(v:count ? "k" : "gk")', { expr = true }) |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1002 |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1003 -- Command line search for commands |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1004 map('c', '<c-n>', '<down>') |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1005 map('c', '<c-p>', '<up>') |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1006 |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1007 -- Clear highlighs |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1008 map('n', '<leader>l', '<cmd>noh<CR>', { silent = true }) |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1009 |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1010 -- Reselect last selection |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1011 map('n', 'gV', '`[v`]') |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1012 |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1013 -- Use backspace as normal in visual mode |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1014 map('v', '<BS>', 'x', { remap = true }) |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1015 |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1016 -- Keep selection when indenting |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1017 local keep_visual_selection = function(cmd) |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1018 return function() |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1019 vim.opt.smartindent = false |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1020 if vim.fn.mode() == 'V' then |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1021 return cmd .. t ':set smartindent<CR>gv' |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1022 else |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1023 return cmd .. t ':set smartindent<CR>' |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1024 end |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1025 end |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1026 end |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1027 map('v', '>', keep_visual_selection '>', { expr = true, silent = true, desc = 'Indent right while keeping selection' }) |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1028 map('v', '<', keep_visual_selection '<', { expr = true, silent = true, desc = 'Indent left while keeping selection' }) |
f845e2eba7e3
Use new keymap lua function to set keymaps
zegervdv <zegervdv@me.com>
parents:
519
diff
changeset
|
1029 |
574
8b04d5ffd210
Clean up unused functions and mappings
zegervdv <zegervdv@me.com>
parents:
570
diff
changeset
|
1030 -- Do not move on * |
8b04d5ffd210
Clean up unused functions and mappings
zegervdv <zegervdv@me.com>
parents:
570
diff
changeset
|
1031 map('n', '*', function() |
8b04d5ffd210
Clean up unused functions and mappings
zegervdv <zegervdv@me.com>
parents:
570
diff
changeset
|
1032 local view = vim.fn.winsaveview() |
613 | 1033 vim.cmd.normal { '*', bang = true } |
574
8b04d5ffd210
Clean up unused functions and mappings
zegervdv <zegervdv@me.com>
parents:
570
diff
changeset
|
1034 vim.fn.winrestview(view) |
599
1def7efdc619
Add trouble.nvim for diagnostics overview
Zeger Van de Vannet <zegervdv@me.com>
parents:
594
diff
changeset
|
1035 end, { |
1def7efdc619
Add trouble.nvim for diagnostics overview
Zeger Van de Vannet <zegervdv@me.com>
parents:
594
diff
changeset
|
1036 silent = true, |
1def7efdc619
Add trouble.nvim for diagnostics overview
Zeger Van de Vannet <zegervdv@me.com>
parents:
594
diff
changeset
|
1037 desc = 'Search word under cursor without moving to first results', |
1def7efdc619
Add trouble.nvim for diagnostics overview
Zeger Van de Vannet <zegervdv@me.com>
parents:
594
diff
changeset
|
1038 }) |
574
8b04d5ffd210
Clean up unused functions and mappings
zegervdv <zegervdv@me.com>
parents:
570
diff
changeset
|
1039 |
627 | 1040 map('x', 'p', [[ p:if v:register == '"'<Bar>let @@=@0<Bar>endif<CR> ]], { silent = true }) |
1041 | |
574
8b04d5ffd210
Clean up unused functions and mappings
zegervdv <zegervdv@me.com>
parents:
570
diff
changeset
|
1042 map('n', '<UP>', ':cprev<CR>', { desc = 'Go to previous error/match' }) |
8b04d5ffd210
Clean up unused functions and mappings
zegervdv <zegervdv@me.com>
parents:
570
diff
changeset
|
1043 map('n', '<DOWN>', ':cnext<CR>', { desc = 'Go to next error/match' }) |
8b04d5ffd210
Clean up unused functions and mappings
zegervdv <zegervdv@me.com>
parents:
570
diff
changeset
|
1044 map('n', '<LEFT>', ':cpf<CR>', { desc = 'Go to previous error/match in previous file' }) |
8b04d5ffd210
Clean up unused functions and mappings
zegervdv <zegervdv@me.com>
parents:
570
diff
changeset
|
1045 map('n', '<RIGHT>', ':cnf<CR>', { desc = 'Go to next error/match in next file' }) |
8b04d5ffd210
Clean up unused functions and mappings
zegervdv <zegervdv@me.com>
parents:
570
diff
changeset
|
1046 |
627 | 1047 map('t', '<C-h>', '<C-\\><C-n><C-w>h') |
1048 map('t', '<C-j>', '<C-\\><C-n><C-w>j') | |
1049 map('t', '<C-k>', '<C-\\><C-n><C-w>k') | |
1050 map('t', '<C-l>', '<C-\\><C-n><C-w>l') | |
1051 | |
1052 map('c', '<CR>', function() | |
1053 local cmdline = vim.fn.getcmdline() | |
1054 if cmdline == 'ls' or cmdline == 'buffers' or cmdline == 'files' then return '<CR>:b' end | |
1055 return '<CR>' | |
1056 end, { expr = true }) | |
1057 | |
732
18a9b8ccddc3
feat: map escape to clean up screen in normal mode
zegervdv <zegervdv@me.com>
parents:
731
diff
changeset
|
1058 -- Clean up screen |
18a9b8ccddc3
feat: map escape to clean up screen in normal mode
zegervdv <zegervdv@me.com>
parents:
731
diff
changeset
|
1059 map('n', '<ESC>', function() |
18a9b8ccddc3
feat: map escape to clean up screen in normal mode
zegervdv <zegervdv@me.com>
parents:
731
diff
changeset
|
1060 vim.cmd.nohlsearch() |
18a9b8ccddc3
feat: map escape to clean up screen in normal mode
zegervdv <zegervdv@me.com>
parents:
731
diff
changeset
|
1061 vim.cmd.cclose() |
18a9b8ccddc3
feat: map escape to clean up screen in normal mode
zegervdv <zegervdv@me.com>
parents:
731
diff
changeset
|
1062 vim.cmd.lclose() |
18a9b8ccddc3
feat: map escape to clean up screen in normal mode
zegervdv <zegervdv@me.com>
parents:
731
diff
changeset
|
1063 end, { desc = 'Clean up screen' }) |
18a9b8ccddc3
feat: map escape to clean up screen in normal mode
zegervdv <zegervdv@me.com>
parents:
731
diff
changeset
|
1064 |
627 | 1065 -- Special highlighting |
1066 vim.cmd.match { 'ErrorMsg', [[ '^\(<\|=\|>\)\{7\}\([^=].\+\)\?$' ]] } | |
1067 | |
489 | 1068 local au = require 'au' |
1069 | |
1070 -- Highlight yanked text | |
600
24b0dd06381b
Enable collapsed statements for stylua
Zeger Van de Vannet <zegervdv@me.com>
parents:
599
diff
changeset
|
1071 au.TextYankPost = function() vim.highlight.on_yank { timeout = 120 } end |
489 | 1072 |
1073 -- Automatic cursorline | |
1074 au.group('cline', { | |
1075 { | |
1076 'WinEnter', | |
1077 '*', | |
620 | 1078 function() |
1079 if vim.bo.buftype ~= 'nofile' then vim.opt_local.cursorline = true end | |
1080 end, | |
489 | 1081 }, |
1082 { | |
1083 'WinLeave', | |
1084 '*', | |
600
24b0dd06381b
Enable collapsed statements for stylua
Zeger Van de Vannet <zegervdv@me.com>
parents:
599
diff
changeset
|
1085 function() vim.opt_local.cursorline = false end, |
489 | 1086 }, |
1087 }) | |
1088 | |
1089 -- Save files on focus lost | |
1090 au.FocusLost = function() | |
613 | 1091 if not vim.o.readonly and vim.api.nvim_buf_get_name(0) ~= '' then vim.cmd.wa() end |
489 | 1092 end |
1093 | |
1094 -- Equalize splits after resizing | |
1095 au.VimResized = [[ exe "normal! \<c-w>=" ]] | |
1096 | |
1097 -- Reload diffs after editing | |
1098 au.BufWritePost = function() | |
613 | 1099 if vim.o.diff then vim.cmd.diffupdate() end |
489 | 1100 end |
1101 | |
691 | 1102 -- Open file at last position |
1103 au.BufReadPost = function() | |
1104 if vim.bo.filetype ~= 'gitcommit' and vim.fn.line '\'"' > 0 and vim.fn.line '\'"' <= vim.fn.line '$' then | |
1105 vim.cmd.normal { 'g`"', bang = true } | |
1106 end | |
1107 end | |
1108 | |
1109 -- Remove netrw buffers | |
1110 au.FileType = { 'netrw', 'setlocal bufhidden=delete' } | |
1111 | |
696
22efd3b888f8
feat: enable spellchecking for select filetypes
zegervdv <zegervdv@me.com>
parents:
691
diff
changeset
|
1112 -- Enable spelling |
22efd3b888f8
feat: enable spellchecking for select filetypes
zegervdv <zegervdv@me.com>
parents:
691
diff
changeset
|
1113 au.FileType = { { 'python', 'systemverilog', 'verilog', 'txt', 'lua' }, function() vim.opt_local.spell = true end } |
22efd3b888f8
feat: enable spellchecking for select filetypes
zegervdv <zegervdv@me.com>
parents:
691
diff
changeset
|
1114 |
627 | 1115 -- Terminal |
1116 au.group('enter_term', { | |
1117 { 'TermOpen', '*', 'startinsert!' }, | |
1118 { | |
1119 'BufEnter', | |
1120 '*', | |
1121 function() | |
1122 if vim.bo.buftype == 'terminal' then vim.cmd.startinsert { bang = true } end | |
1123 end, | |
1124 }, | |
1125 { | |
1126 'BufLeave', | |
1127 '*', | |
1128 function() | |
1129 if vim.bo.buftype == 'terminal' then vim.cmd.stopinsert { bang = true } end | |
1130 end, | |
1131 }, | |
1132 }) | |
1133 | |
691 | 1134 -- Color number categories in reports and logs |
1135 au({ 'BufNewFile', 'BufRead', 'BufEnter' }, { | |
1136 '*.rpt,*.log', | |
1137 function() | |
1138 vim.cmd.syntax { 'match', 'String', [["\v<\d{1,3}>"]] } | |
1139 vim.cmd.syntax { 'match', 'Statement', [["\v<\d{4,6}>"]] } | |
1140 vim.cmd.syntax { 'match', 'Function', [["\v<\d{7,9}>"]] } | |
1141 | |
1142 vim.cmd.syntax { 'match', 'Number', [["\v<0+>"]] } | |
1143 | |
1144 vim.cmd.syntax { 'match', 'Error', [["\v\c^error:"]] } | |
1145 | |
1146 vim.wo.wrap = false | |
1147 end, | |
1148 }) | |
1149 | |
688
6e98364a5a28
chore: convert chezmoi autocmds to lua
zegervdv <zegervdv@me.com>
parents:
665
diff
changeset
|
1150 -- Apply changes in chezmoi managed files |
6e98364a5a28
chore: convert chezmoi autocmds to lua
zegervdv <zegervdv@me.com>
parents:
665
diff
changeset
|
1151 au.group('chezmoi', { |
6e98364a5a28
chore: convert chezmoi autocmds to lua
zegervdv <zegervdv@me.com>
parents:
665
diff
changeset
|
1152 { 'BufWritePost', os.getenv 'HOME' .. '/.local/share/chezmoi/*', 'silent !chezmoi apply --source-path %' }, |
6e98364a5a28
chore: convert chezmoi autocmds to lua
zegervdv <zegervdv@me.com>
parents:
665
diff
changeset
|
1153 { |
6e98364a5a28
chore: convert chezmoi autocmds to lua
zegervdv <zegervdv@me.com>
parents:
665
diff
changeset
|
1154 'BufWritePost', |
6e98364a5a28
chore: convert chezmoi autocmds to lua
zegervdv <zegervdv@me.com>
parents:
665
diff
changeset
|
1155 os.getenv 'HOME' .. '/.local/share/chezmoi/.chezmoitemplates/init.lua', |
6e98364a5a28
chore: convert chezmoi autocmds to lua
zegervdv <zegervdv@me.com>
parents:
665
diff
changeset
|
1156 'silent !chezmoi apply --source-path $HOME/.local/share/chezmoi/dot_config/nvim/init.lua.tmpl', |
6e98364a5a28
chore: convert chezmoi autocmds to lua
zegervdv <zegervdv@me.com>
parents:
665
diff
changeset
|
1157 }, |
6e98364a5a28
chore: convert chezmoi autocmds to lua
zegervdv <zegervdv@me.com>
parents:
665
diff
changeset
|
1158 }) |
6e98364a5a28
chore: convert chezmoi autocmds to lua
zegervdv <zegervdv@me.com>
parents:
665
diff
changeset
|
1159 |
558 | 1160 -- Snippets |
1161 local ls = require 'luasnip' | |
1162 -- Expand snippet or jump to next placeholder | |
1163 vim.keymap.set({ 'i', 's' }, '<c-k>', function() | |
741
aef7dab2b0e5
feat: only jump snippets if inside one
zegervdv <zegervdv@me.com>
parents:
740
diff
changeset
|
1164 if ls.expand_or_locally_jumpable() then ls.expand_or_jump() end |
561
6f07ecae3810
Create Ag command in config step
Zeger Van de Vannet <zegervdv@me.com>
parents:
560
diff
changeset
|
1165 end, { |
6f07ecae3810
Create Ag command in config step
Zeger Van de Vannet <zegervdv@me.com>
parents:
560
diff
changeset
|
1166 silent = true, |
6f07ecae3810
Create Ag command in config step
Zeger Van de Vannet <zegervdv@me.com>
parents:
560
diff
changeset
|
1167 }) |
558 | 1168 |
1169 -- Go back to previous placeholder | |
1170 vim.keymap.set({ 'i', 's' }, '<c-j>', function() | |
600
24b0dd06381b
Enable collapsed statements for stylua
Zeger Van de Vannet <zegervdv@me.com>
parents:
599
diff
changeset
|
1171 if ls.jumpable(-1) then ls.jump(-1) end |
561
6f07ecae3810
Create Ag command in config step
Zeger Van de Vannet <zegervdv@me.com>
parents:
560
diff
changeset
|
1172 end, { |
6f07ecae3810
Create Ag command in config step
Zeger Van de Vannet <zegervdv@me.com>
parents:
560
diff
changeset
|
1173 silent = true, |
6f07ecae3810
Create Ag command in config step
Zeger Van de Vannet <zegervdv@me.com>
parents:
560
diff
changeset
|
1174 }) |
558 | 1175 |
1176 -- Toggle options in snippets | |
1177 vim.keymap.set('i', '<c-l>', function() | |
600
24b0dd06381b
Enable collapsed statements for stylua
Zeger Van de Vannet <zegervdv@me.com>
parents:
599
diff
changeset
|
1178 if ls.choice_active() then ls.change_choice() end |
558 | 1179 end) |
1180 | |
724
e442bbd36b87
feat: copy current file path relative to repo root and line nr to clipboard
zegervdv <zegervdv@me.com>
parents:
722
diff
changeset
|
1181 -- Copy the current file and line number |
e442bbd36b87
feat: copy current file path relative to repo root and line nr to clipboard
zegervdv <zegervdv@me.com>
parents:
722
diff
changeset
|
1182 -- inspired by https://github.com/diegoulloao/nvim-file-location |
e442bbd36b87
feat: copy current file path relative to repo root and line nr to clipboard
zegervdv <zegervdv@me.com>
parents:
722
diff
changeset
|
1183 vim.keymap.set('n', '<leader>cp', function() |
e442bbd36b87
feat: copy current file path relative to repo root and line nr to clipboard
zegervdv <zegervdv@me.com>
parents:
722
diff
changeset
|
1184 local Path = require 'plenary.path' |
e442bbd36b87
feat: copy current file path relative to repo root and line nr to clipboard
zegervdv <zegervdv@me.com>
parents:
722
diff
changeset
|
1185 local current_file = Path:new(vim.fn.expand '%') |
e442bbd36b87
feat: copy current file path relative to repo root and line nr to clipboard
zegervdv <zegervdv@me.com>
parents:
722
diff
changeset
|
1186 local root = |
e442bbd36b87
feat: copy current file path relative to repo root and line nr to clipboard
zegervdv <zegervdv@me.com>
parents:
722
diff
changeset
|
1187 vim.fs.dirname(vim.fs.find({ '.hg', '.git' }, { path = tostring(current_file:parent()), upward = true })[1]) |
e442bbd36b87
feat: copy current file path relative to repo root and line nr to clipboard
zegervdv <zegervdv@me.com>
parents:
722
diff
changeset
|
1188 local current_line = vim.fn.line '.' |
e442bbd36b87
feat: copy current file path relative to repo root and line nr to clipboard
zegervdv <zegervdv@me.com>
parents:
722
diff
changeset
|
1189 require('osc52').copy(current_file:make_relative(root) .. ':' .. current_line) |
e442bbd36b87
feat: copy current file path relative to repo root and line nr to clipboard
zegervdv <zegervdv@me.com>
parents:
722
diff
changeset
|
1190 vim.notify 'Copied file path and line number' |
e442bbd36b87
feat: copy current file path relative to repo root and line nr to clipboard
zegervdv <zegervdv@me.com>
parents:
722
diff
changeset
|
1191 end, { desc = 'Yank current path and line number' }) |
e442bbd36b87
feat: copy current file path relative to repo root and line nr to clipboard
zegervdv <zegervdv@me.com>
parents:
722
diff
changeset
|
1192 |
725
624d8036f5ae
feat: add window number to inactive window and a mapping to select it
zegervdv <zegervdv@me.com>
parents:
724
diff
changeset
|
1193 -- Navigate between open windows |
624d8036f5ae
feat: add window number to inactive window and a mapping to select it
zegervdv <zegervdv@me.com>
parents:
724
diff
changeset
|
1194 for i = 1, 6 do |
624d8036f5ae
feat: add window number to inactive window and a mapping to select it
zegervdv <zegervdv@me.com>
parents:
724
diff
changeset
|
1195 vim.keymap.set('n', '<leader>' .. i, i .. '<c-w>w', { desc = 'Go to window ' .. i }) |
624d8036f5ae
feat: add window number to inactive window and a mapping to select it
zegervdv <zegervdv@me.com>
parents:
724
diff
changeset
|
1196 end |
624d8036f5ae
feat: add window number to inactive window and a mapping to select it
zegervdv <zegervdv@me.com>
parents:
724
diff
changeset
|
1197 |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1198 -- LSP config |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1199 local lsp = require 'lspconfig' |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1200 local null_ls = require 'null-ls' |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1201 |
690
424764c7f51a
feat: disable autoformatting, force null-ls formatting in some cases
zegervdv <zegervdv@me.com>
parents:
688
diff
changeset
|
1202 local lsp_formatting = function(bufnr) |
424764c7f51a
feat: disable autoformatting, force null-ls formatting in some cases
zegervdv <zegervdv@me.com>
parents:
688
diff
changeset
|
1203 vim.lsp.buf.format { |
424764c7f51a
feat: disable autoformatting, force null-ls formatting in some cases
zegervdv <zegervdv@me.com>
parents:
688
diff
changeset
|
1204 filter = function(client) |
424764c7f51a
feat: disable autoformatting, force null-ls formatting in some cases
zegervdv <zegervdv@me.com>
parents:
688
diff
changeset
|
1205 local force_null_ls = { 'lua', 'beancount' } |
424764c7f51a
feat: disable autoformatting, force null-ls formatting in some cases
zegervdv <zegervdv@me.com>
parents:
688
diff
changeset
|
1206 if vim.tbl_contains(force_null_ls, vim.bo.filetype) then return client.name == 'null-ls' end |
424764c7f51a
feat: disable autoformatting, force null-ls formatting in some cases
zegervdv <zegervdv@me.com>
parents:
688
diff
changeset
|
1207 return true |
424764c7f51a
feat: disable autoformatting, force null-ls formatting in some cases
zegervdv <zegervdv@me.com>
parents:
688
diff
changeset
|
1208 end, |
424764c7f51a
feat: disable autoformatting, force null-ls formatting in some cases
zegervdv <zegervdv@me.com>
parents:
688
diff
changeset
|
1209 bufnr = bufnr, |
424764c7f51a
feat: disable autoformatting, force null-ls formatting in some cases
zegervdv <zegervdv@me.com>
parents:
688
diff
changeset
|
1210 } |
424764c7f51a
feat: disable autoformatting, force null-ls formatting in some cases
zegervdv <zegervdv@me.com>
parents:
688
diff
changeset
|
1211 end |
424764c7f51a
feat: disable autoformatting, force null-ls formatting in some cases
zegervdv <zegervdv@me.com>
parents:
688
diff
changeset
|
1212 |
718
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
1213 local on_attach = function(client, bufnr) |
600
24b0dd06381b
Enable collapsed statements for stylua
Zeger Van de Vannet <zegervdv@me.com>
parents:
599
diff
changeset
|
1214 local nmap = function(lhs, rhs, opts) return vim.keymap.set('n', lhs, rhs, opts) end |
462
676d7ef5fecb
Use tagfunc to query LSP for definitions
zegervdv <zegervdv@me.com>
parents:
460
diff
changeset
|
1215 |
722
20256729c355
fix: use current bufnr for formatting
zegervdv <zegervdv@me.com>
parents:
720
diff
changeset
|
1216 local opts = { silent = true, buffer = bufnr } |
20256729c355
fix: use current bufnr for formatting
zegervdv <zegervdv@me.com>
parents:
720
diff
changeset
|
1217 |
20256729c355
fix: use current bufnr for formatting
zegervdv <zegervdv@me.com>
parents:
720
diff
changeset
|
1218 nmap('gp', require('goto-preview').goto_preview_definition, opts) |
20256729c355
fix: use current bufnr for formatting
zegervdv <zegervdv@me.com>
parents:
720
diff
changeset
|
1219 nmap('gP', require('goto-preview').close_all_win, opts) |
462
676d7ef5fecb
Use tagfunc to query LSP for definitions
zegervdv <zegervdv@me.com>
parents:
460
diff
changeset
|
1220 |
722
20256729c355
fix: use current bufnr for formatting
zegervdv <zegervdv@me.com>
parents:
720
diff
changeset
|
1221 nmap('gd', vim.lsp.buf.declaration, opts) |
20256729c355
fix: use current bufnr for formatting
zegervdv <zegervdv@me.com>
parents:
720
diff
changeset
|
1222 nmap('K', vim.lsp.buf.hover, opts) |
20256729c355
fix: use current bufnr for formatting
zegervdv <zegervdv@me.com>
parents:
720
diff
changeset
|
1223 nmap('gD', vim.lsp.buf.implementation, opts) |
20256729c355
fix: use current bufnr for formatting
zegervdv <zegervdv@me.com>
parents:
720
diff
changeset
|
1224 nmap('1gD', vim.lsp.buf.type_definition, opts) |
20256729c355
fix: use current bufnr for formatting
zegervdv <zegervdv@me.com>
parents:
720
diff
changeset
|
1225 nmap('gr', vim.lsp.buf.references, opts) |
20256729c355
fix: use current bufnr for formatting
zegervdv <zegervdv@me.com>
parents:
720
diff
changeset
|
1226 nmap('g0', vim.lsp.buf.document_symbol, opts) |
20256729c355
fix: use current bufnr for formatting
zegervdv <zegervdv@me.com>
parents:
720
diff
changeset
|
1227 nmap('ga', vim.lsp.buf.code_action, opts) |
513 | 1228 |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1229 vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(vim.lsp.handlers.hover, { border = 'single' }) |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1230 vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(vim.lsp.handlers.hover, { border = 'single' }) |
718
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
1231 |
729
58fc7cc955d1
feat: disable sumneko formatting
zegervdv <zegervdv@me.com>
parents:
728
diff
changeset
|
1232 if client.name == 'sumneko_lua' then |
58fc7cc955d1
feat: disable sumneko formatting
zegervdv <zegervdv@me.com>
parents:
728
diff
changeset
|
1233 client.server_capabilities.documentFormattingProvider = false |
58fc7cc955d1
feat: disable sumneko formatting
zegervdv <zegervdv@me.com>
parents:
728
diff
changeset
|
1234 client.server_capabilities.documentRangeFormattingProvider = false |
58fc7cc955d1
feat: disable sumneko formatting
zegervdv <zegervdv@me.com>
parents:
728
diff
changeset
|
1235 end |
58fc7cc955d1
feat: disable sumneko formatting
zegervdv <zegervdv@me.com>
parents:
728
diff
changeset
|
1236 |
718
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
1237 if client.supports_method 'textDocument/rangeFormatting' then |
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
1238 local root = vim.fs.find({ '.git', '.hg' }, { path = client.config.root_dir }) |
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
1239 local vcs = 'git' |
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
1240 if root then vcs = vim.fs.basename(root[1]):sub(2) end |
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
1241 |
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
1242 vim.notify('Enabled modification formatting via ' .. vcs .. ' using ' .. client.name, vim.log.levels.INFO) |
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
1243 local lsp_format_modifications = require 'lsp-format-modifications' |
719
08baa6419e7d
fix: pass vcs config to format-modifications attach function
zegervdv <zegervdv@me.com>
parents:
718
diff
changeset
|
1244 lsp_format_modifications.attach(client, bufnr, { format_on_save = false, vcs = vcs }) |
722
20256729c355
fix: use current bufnr for formatting
zegervdv <zegervdv@me.com>
parents:
720
diff
changeset
|
1245 nmap('<c-p>', function() lsp_format_modifications.format_modifications_current_buffer() end, opts) |
718
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
1246 elseif client.supports_method 'textDocument/formatting' then |
722
20256729c355
fix: use current bufnr for formatting
zegervdv <zegervdv@me.com>
parents:
720
diff
changeset
|
1247 nmap('<c-p>', function() lsp_formatting(bufnr) end, opts) |
718
451632dcb1dd
feat: add lsp-format-modifications
zegervdv <zegervdv@me.com>
parents:
716
diff
changeset
|
1248 end |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1249 end |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1250 |
704
c78a2c1388e9
fix: update cmp-nvim-lsp capabilities config
zegervdv <zegervdv@me.com>
parents:
703
diff
changeset
|
1251 local capabilities = require('cmp_nvim_lsp').default_capabilities() |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1252 capabilities.textDocument.completion.completionItem.snippetSupport = true |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1253 capabilities.textDocument.completion.completionItem.resolveSupport = { |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1254 properties = { |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1255 'documentation', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1256 'detail', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1257 'additionalTextEdits', |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1258 }, |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1259 } |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1260 |
532
e932c2076dba
Add esbonio language server for sphinx docs
Zeger Van de Vannet <zegervdv@me.com>
parents:
529
diff
changeset
|
1261 local root_dir = require('lspconfig.util').root_pattern('.git', '.hg') |
e932c2076dba
Add esbonio language server for sphinx docs
Zeger Van de Vannet <zegervdv@me.com>
parents:
529
diff
changeset
|
1262 |
e932c2076dba
Add esbonio language server for sphinx docs
Zeger Van de Vannet <zegervdv@me.com>
parents:
529
diff
changeset
|
1263 lsp.pyright.setup { on_attach = on_attach, capabilities = capabilities, root_dir = root_dir } |
646 | 1264 lsp.bashls.setup { on_attach = on_attach, capabilities = capabilities } |
532
e932c2076dba
Add esbonio language server for sphinx docs
Zeger Van de Vannet <zegervdv@me.com>
parents:
529
diff
changeset
|
1265 |
e932c2076dba
Add esbonio language server for sphinx docs
Zeger Van de Vannet <zegervdv@me.com>
parents:
529
diff
changeset
|
1266 lsp.esbonio.setup { |
e932c2076dba
Add esbonio language server for sphinx docs
Zeger Van de Vannet <zegervdv@me.com>
parents:
529
diff
changeset
|
1267 on_attach = on_attach, |
e932c2076dba
Add esbonio language server for sphinx docs
Zeger Van de Vannet <zegervdv@me.com>
parents:
529
diff
changeset
|
1268 capabilities = capabilities, |
e932c2076dba
Add esbonio language server for sphinx docs
Zeger Van de Vannet <zegervdv@me.com>
parents:
529
diff
changeset
|
1269 root_dir = root_dir, |
e932c2076dba
Add esbonio language server for sphinx docs
Zeger Van de Vannet <zegervdv@me.com>
parents:
529
diff
changeset
|
1270 -- Assume esbonio is installed with --user |
579 | 1271 cmd = { home .. '/.local/bin/esbonio' }, |
532
e932c2076dba
Add esbonio language server for sphinx docs
Zeger Van de Vannet <zegervdv@me.com>
parents:
529
diff
changeset
|
1272 } |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1273 |
581 | 1274 lsp.clangd.setup { |
1275 on_attach = on_attach, | |
1276 capabilities = capabilities, | |
1277 root_dir = root_dir, | |
1278 } | |
1279 | |
638 | 1280 local bean_file = os.getenv 'BEAN_FILE' |
1281 if bean_file then | |
1282 lsp.beancount.setup { | |
1283 on_attach = on_attach, | |
1284 capabilities = capabilities, | |
1285 root_dir = root_dir, | |
1286 init_options = { | |
1287 journal_file = bean_file, | |
1288 }, | |
1289 } | |
1290 local helpers = require 'null-ls.helpers' | |
1291 local bean_format = { | |
1292 name = 'bean-format', | |
1293 filetypes = { 'beancount' }, | |
1294 method = null_ls.methods.FORMATTING, | |
1295 generator = helpers.formatter_factory { | |
1296 command = 'bean-format', | |
1297 args = { '-w', '80' }, | |
1298 to_stdin = true, | |
1299 }, | |
1300 } | |
1301 null_ls.register { bean_format } | |
1302 end | |
1303 | |
512
fc7a15e47e72
update null-ls config to remove lspconfig dependency
zegervdv <zegervdv@me.com>
parents:
511
diff
changeset
|
1304 null_ls.setup { |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1305 sources = { |
607
9a7fe4a97873
wrap lines at 100 chars with black
Zeger Van de Vannet <zegervdv@me.com>
parents:
606
diff
changeset
|
1306 null_ls.builtins.formatting.black.with { extra_args = { '--line-length', '100' } }, |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1307 null_ls.builtins.formatting.stylua, |
623
5cceedc51955
Add cbfmt and markdown/rst tree sitters
zegervdv <zegervdv@me.com>
parents:
622
diff
changeset
|
1308 null_ls.builtins.formatting.cbfmt, |
502 | 1309 null_ls.builtins.diagnostics.shellcheck, |
509
80b42722bfa8
Add prettier formatting to null-ls
zegervdv <zegervdv@me.com>
parents:
503
diff
changeset
|
1310 null_ls.builtins.formatting.prettier, |
622 | 1311 null_ls.builtins.code_actions.gitrebase, |
730 | 1312 null_ls.builtins.hover.printenv, |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1313 }, |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1314 on_attach = on_attach, |
512
fc7a15e47e72
update null-ls config to remove lspconfig dependency
zegervdv <zegervdv@me.com>
parents:
511
diff
changeset
|
1315 root_dir = require('null-ls.utils').root_pattern('.hg', '.git', 'stylua.toml'), |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1316 } |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1317 |
713
45c34cfecc3e
feat: enable full neodev options in chezmoi folder
zegervdv <zegervdv@me.com>
parents:
706
diff
changeset
|
1318 require('neodev').setup { |
45c34cfecc3e
feat: enable full neodev options in chezmoi folder
zegervdv <zegervdv@me.com>
parents:
706
diff
changeset
|
1319 override = function(root_dir, options) |
45c34cfecc3e
feat: enable full neodev options in chezmoi folder
zegervdv <zegervdv@me.com>
parents:
706
diff
changeset
|
1320 if require('neodev.util').has_file(root_dir, '~/.local/share/chezmoi') then |
45c34cfecc3e
feat: enable full neodev options in chezmoi folder
zegervdv <zegervdv@me.com>
parents:
706
diff
changeset
|
1321 options.enabled = true |
45c34cfecc3e
feat: enable full neodev options in chezmoi folder
zegervdv <zegervdv@me.com>
parents:
706
diff
changeset
|
1322 options.runtime = true |
45c34cfecc3e
feat: enable full neodev options in chezmoi folder
zegervdv <zegervdv@me.com>
parents:
706
diff
changeset
|
1323 options.types = true |
45c34cfecc3e
feat: enable full neodev options in chezmoi folder
zegervdv <zegervdv@me.com>
parents:
706
diff
changeset
|
1324 options.plugins = true |
45c34cfecc3e
feat: enable full neodev options in chezmoi folder
zegervdv <zegervdv@me.com>
parents:
706
diff
changeset
|
1325 end |
45c34cfecc3e
feat: enable full neodev options in chezmoi folder
zegervdv <zegervdv@me.com>
parents:
706
diff
changeset
|
1326 end, |
45c34cfecc3e
feat: enable full neodev options in chezmoi folder
zegervdv <zegervdv@me.com>
parents:
706
diff
changeset
|
1327 } |
703
50c025a59b95
fix: update lua-dev to neodev config
zegervdv <zegervdv@me.com>
parents:
702
diff
changeset
|
1328 lsp.sumneko_lua.setup { |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1329 lspconfig = { |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1330 cmd = { 'lua-language-server' }, |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1331 on_attach = on_attach, |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1332 capabilities = capabilities, |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1333 settings = { |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1334 Lua = { |
703
50c025a59b95
fix: update lua-dev to neodev config
zegervdv <zegervdv@me.com>
parents:
702
diff
changeset
|
1335 completion = { |
50c025a59b95
fix: update lua-dev to neodev config
zegervdv <zegervdv@me.com>
parents:
702
diff
changeset
|
1336 callSnippet = 'Replace', |
50c025a59b95
fix: update lua-dev to neodev config
zegervdv <zegervdv@me.com>
parents:
702
diff
changeset
|
1337 }, |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1338 }, |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1339 }, |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1340 }, |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1341 } |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1342 |
582 | 1343 local fd_quickfix = function(args) |
1344 local grepprg = vim.opt.grepprg | |
1345 local grepformat = vim.opt.grepformat | |
1346 | |
1347 vim.opt.grepprg = 'fd' | |
1348 vim.opt.grepformat = '%f' | |
613 | 1349 vim.cmd.execute('"silent! grep! ' .. args.args .. '"') |
1350 vim.cmd.copen() | |
582 | 1351 |
1352 vim.opt.grepprg = grepprg | |
1353 vim.opt.grepformat = grepformat | |
1354 end | |
589 | 1355 vim.api.nvim_create_user_command('Cfd', fd_quickfix, { nargs = '+', complete = 'file' }) |
582 | 1356 |
466
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1357 vim.diagnostic.config { |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1358 underline = true, |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1359 update_in_insert = false, |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1360 virtual_text = { severity = { min = vim.diagnostic.severity.WARN }, source = 'always' }, |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1361 severity_sort = true, |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1362 } |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1363 |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1364 vim.fn.sign_define('DiagnosticSignError', { texthl = 'DiagnosticSignError', linehl = '', numhl = '', text = '▎' }) |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1365 vim.fn.sign_define('DiagnosticSignWarn', { |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1366 texthl = 'DiagnosticSignWarn', |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1367 linehl = '', |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1368 numhl = '', |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1369 text = '▎', |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1370 }) |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1371 vim.fn.sign_define('DiagnosticSignInfo', { |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1372 texthl = 'DiagnosticSignInfo', |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1373 linehl = '', |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1374 numhl = '', |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1375 text = '▎', |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1376 }) |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1377 vim.fn.sign_define('DiagnosticSignHint', { texthl = 'DiagnosticSignHint', linehl = '', numhl = '', text = '▎' }) |
899cded39cd3
Update Diagnostic highlighting after api changes
Zeger Van de Vannet <zegervdv@me.com>
parents:
465
diff
changeset
|
1378 |
451
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1379 -- Try importing local config |
d99353d71702
Use common template for windows nvim config
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1380 local ok, localconfig = pcall(require, 'localconfig') |
600
24b0dd06381b
Enable collapsed statements for stylua
Zeger Van de Vannet <zegervdv@me.com>
parents:
599
diff
changeset
|
1381 if ok then localconfig.setup { on_attach = on_attach, capabilities = capabilities } end |