summaryrefslogtreecommitdiffstats
path: root/.config/nvim/lua/plugin_settings.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/plugin_settings.lua')
-rw-r--r--.config/nvim/lua/plugin_settings.lua722
1 files changed, 0 insertions, 722 deletions
diff --git a/.config/nvim/lua/plugin_settings.lua b/.config/nvim/lua/plugin_settings.lua
deleted file mode 100644
index 351592d..0000000
--- a/.config/nvim/lua/plugin_settings.lua
+++ /dev/null
@@ -1,722 +0,0 @@
1-- ┌─────────────────────────────────────┐
2-- │ ▜ ▐ ▐ ▗ │
3-- │▛▀▖▐ ▌ ▌▞▀▌▗▖▖▞▀▘▞▀▖▜▀ ▜▀ ▄ ▛▀▖▞▀▌▞▀▘│
4-- │▙▄▘▐ ▌ ▌▚▄▌▘▝ ▝▀▖▛▀ ▐ ▖▐ ▖▐ ▌ ▌▚▄▌▝▀▖│
5-- │▌ ▘▝▀▘▗▄▘ ▀▀ ▝▀▘ ▀ ▀ ▀▘▘ ▘▗▄▘▀▀ │
6-- └─────────────────────────────────────┘
7
8local g = vim.g -- global for let options
9local opt = vim.opt -- convenient :set
10local cmd = vim.cmd -- vim commands
11
12-- vimwiki {{{ --
13g.vimwiki_list = {
14 {
15 path = '/home/yigit/nextcloud/personal_wiki/text',
16 path_html = '/home/yigit/nextcloud/personal_wiki/html',
17 auto_generate_tags = 1,
18 automatic_nested_syntaxes = 1,
19 template_path = '/home/yigit/nextcloud/personal_wiki/templates',
20 template_default = 'default_template',
21 template_ext = '.html',
22 auto_export = 1,
23 auto_tags = 1
24 }
25}
26
27g.vimwiki_global_ext = 0
28g.vimwiki_hl_headers = 1
29-- }}} vimwiki --
30
31-- lualine {{{ --
32
33local function lualine_spell()
34 if vim.wo.spell then
35 return "spell"
36 else
37 return
38 end
39end
40
41local conditions = {
42 spell_on = function ()
43 return vim.wo.spell
44 end,
45 filetype_is_tex = function()
46 return vim.bo.filetype == "tex"
47 end
48}
49
50-- https://www.reddit.com/r/neovim/comments/u2uc4p/your_lualine_custom_features/i4muvp6/
51-- override 'encoding': don't display if encoding is utf-8.
52local encoding = function()
53 local ret, _ = (vim.bo.fenc).gsub("^utf%-8$", "")
54 return ret
55end
56
57-- fileformat: don't display if &ff is unix.
58local fileformat = function()
59 local ret, _ = vim.bo.fileformat.gsub("^unix$", "")
60 return ret
61end
62
63require'lualine'.setup {
64 options = {
65 icons_enabled = true,
66 theme = "catppuccin",
67 section_separators = { left = '', right = '' },
68 component_separators = { left = '', right = '' },
69 },
70 sections = {
71 lualine_a = {{'mode', fmt = string.lower}},
72 lualine_b = {'branch',
73 {
74 'diff',
75 diff_color= {
76 -- Same color values as the general color option can be used here.
77 added = { fg = 'LightGreen' },
78 modified = { fg = 'LightBlue' }, -- Changes the diff's modified color
79 removed = { fg = 'LightRed' }, -- Changes the diff's removed color you
80 }
81 },
82 {
83 lualine_spell,
84 cond = conditions.spell_on,
85 }},
86 lualine_c = {'filename'},
87 lualine_x = {encoding, fileformat, 'filetype'},
88 lualine_y = {'progress'},
89 lualine_z = {
90 'location', {
91 'diagnostics',
92 sources = {'nvim_diagnostic'},
93 sections = {'error', 'warn', 'info', 'hint'},
94 symbols = {error = 'e', warn = 'w', info = 'i', hint = 'h'}
95 }
96 }
97 },
98 inactive_sections = {
99 lualine_a = {},
100 lualine_b = {},
101 lualine_c = {'filename'},
102 lualine_x = {},
103 lualine_y = {},
104 lualine_z = {}
105 },
106 tabline = {},
107 extensions = {}
108}
109
110-- }}} lualine --
111
112-- cutlass suite {{{ --
113
114-- cutlass/yoink/subverse suite
115g.yoinkIncludeDeleteOperations = 1
116
117-- fix the Target STRING not available
118g.clipboard = {
119 name = 'xsel_override',
120 copy = {
121 ['+'] = 'xsel --input --clipboard',
122 ['*'] = 'xsel --input --primary',
123 },
124 paste = {
125 ['+'] = 'xsel --output --clipboard',
126 ['*'] = 'xsel --output --primary',
127 },
128 cache_enabled = 1,
129}
130
131-- }}} cutlass suite --
132
133-- UltiSnips {{{ --
134g.UltiSnipsEditSplit = "vertical"
135-- ctrl + l expands the snippet, c + j/k navigates placeholders
136g.UltiSnipsExpandTrigger = "<tab>"
137g.UltiSnipsEnableSnipMate = "1"
138g.UltiSnipsSnippetDirectories = {"my_snippets", "UltiSnips"}
139-- }}} UltiSnips --
140
141-- vimtex {{{ --
142g.vimtex_view_method = 'zathura'
143g.vimtex_quickfix_mode = 0
144g.vimtex_quickfix_ignore_filters = {"Underfull", "Overfull"}
145
146g.vimtex_compiler_latexmk = {
147 options = {
148 "-pdf", '-shell-escape', '-verbose', '-file-line-error', '-synctex=1', '-interaction=nonstopmode'
149 }
150}
151
152-- }}} vimtex --
153
154-- devicons {{{ --
155require'nvim-web-devicons'.setup {
156 override = {
157 wiki = {
158 icon = "󰂺",
159 color = "#D7827E",
160 name = "vimwiki"
161 },
162 rem = {
163 icon = "",
164 color = "#B4637A",
165 name = "remind"
166 },
167 mail = {
168 icon = "󰇰",
169 color = "#907AA9",
170 name = "mail"
171 },
172 };
173
174 default = true
175}
176-- }}} devicons --
177
178-- vim-slime {{{ --
179g.slime_target = "tmux"
180g.slime_paste_file = "$HOME/.slime_paste"
181g.slime_default_config = {socket_name = vim.call("get", vim.call("split", vim.env.TMUX, ','), "0"), target_pane = "{last}"}
182-- }}} vim-slime --
183
184-- gutentags {{{ --
185g.gutentags_enabled = 1
186g.gutentags_add_default_project_roots = 0
187g.gutentags_project_root = {'Makefile', '.git'}
188g.gutentags_exclude_filetypes = {'gitcommit', 'gitconfig', 'gitrebase', 'gitsendemail', 'git'}
189g.gutentags_generate_on_new = 1
190g.gutentags_generate_on_missing = 1
191g.gutentags_generate_on_write = 1
192g.gutentags_generate_on_empty_buffer = 0
193g.gutentags_ctags_exclude = {
194 '*.git', '*.svn', '*.hg',
195 'cache', 'build', 'dist', 'bin', 'node_modules', 'bower_components',
196 '*-lock.json', '*.lock',
197 '*.min.*',
198 '*.bak',
199 '*.zip',
200 '*.pyc',
201 '*.class',
202 '*.sln',
203 '*.csproj', '*.csproj.user',
204 '*.tmp',
205 '*.cache',
206 '*.vscode',
207 '*.pdb',
208 '*.exe', '*.dll', '*.bin',
209 '*.mp3', '*.ogg', '*.flac',
210 '*.swp', '*.swo',
211 '.DS_Store', '*.plist',
212 '*.bmp', '*.gif', '*.ico', '*.jpg', '*.png', '*.svg',
213 '*.rar', '*.zip', '*.tar', '*.tar.gz', '*.tar.xz', '*.tar.bz2',
214 '*.pdf', '*.doc', '*.docx', '*.ppt', '*.pptx', '*.xls',
215}
216-- }}} gutentags --
217
218-- telescope {{{ --
219require('telescope').setup {
220 extensions = {
221 fzf = {
222 fuzzy = true, -- false will only do exact matching
223 override_generic_sorter = true, -- override the generic sorter
224 override_file_sorter = true, -- override the file sorter
225 case_mode = "smart_case", -- or "ignore_case" or "respect_case"
226 -- the default case_mode is "smart_case"
227 }
228 }
229}
230
231require('telescope').load_extension('fzf')
232-- }}} telescope --
233
234-- dashboard {{{ --
235
236require('dashboard').setup {
237 theme = 'hyper',
238 config = {
239 week_header = {
240 enable = true,
241 },
242 shortcut = {
243 { desc = ' Update', group = '@property', action = 'PackerSync', key = 'u' },
244 {
245 icon = ' ',
246 icon_hl = '@variable',
247 desc = 'Files',
248 group = 'Label',
249 action = 'Telescope find_files',
250 key = 'f',
251 },
252 },
253 },
254}
255
256-- }}} dashboard --
257
258-- treesitter {{{ --
259
260require 'nvim-treesitter.configs'.setup {
261 ensure_installed = "all",
262 auto_install = true,
263 highlight = {
264 enable = true,
265 disable = { "latex" },
266 additional_vim_regex_highlighting = false,
267 },
268 incremental_selection = {
269 enable = true,
270 keymaps = {
271 init_selection = "gnn",
272 node_incremental = "grn",
273 scope_incremental = "grc",
274 node_decremental = "grm",
275 },
276 },
277 indent = {
278 enable = true
279 }
280}
281-- }}} treesitter --
282
283-- nvim-cmp {{{ --
284local cmp = require'cmp'
285
286cmp.setup({
287 snippet = {
288 expand = function(args)
289 vim.fn["UltiSnips#Anon"](args.body)
290 end,
291 },
292 window = {
293 completion = cmp.config.window.bordered(),
294 documentation = cmp.config.window.bordered(),
295 },
296 mapping = cmp.mapping.preset.insert({
297 ['<C-b>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }),
298 ['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }),
299 ['<C-c>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }),
300 ['<C-e>'] = cmp.mapping({
301 i = cmp.mapping.abort(),
302 c = cmp.mapping.close(),
303 }),
304 ['<C-l>'] = cmp.mapping.confirm({ select = true }),
305 }),
306 sources = cmp.config.sources({
307 { name = 'nvim_lsp' },
308 { name = 'ultisnips' },
309 }, {
310 { name = 'buffer' },
311 { name = 'path' },
312 })
313})
314
315-- }}} nvim-cmp --
316
317-- nvim-lspconfig {{{ --
318local nvim_lsp = require('lspconfig')
319
320-- Mappings.
321local opts = { noremap=true, silent=true }
322vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, opts)
323vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
324vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
325vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, opts)
326
327local on_attach = function(client, bufnr)
328 -- enable completion triggered by <c-x><c-o>
329 vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
330
331 -- see `:help vim.lsp.*` for documentation on any of the below functions
332 local bufopts = { noremap=true, silent=true, buffer=bufnr }
333 vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
334 vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
335 vim.keymap.set('n', 'vh', vim.lsp.buf.hover, bufopts)
336 vim.keymap.set('n', 'gh', vim.lsp.buf.implementation, bufopts)
337 vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
338 vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, bufopts)
339 vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
340 vim.keymap.set('n', '<leader>wl', function()
341 print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
342 end, bufopts)
343 vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, bufopts)
344 vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, bufopts)
345 vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, bufopts)
346 vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
347 vim.keymap.set('n', '<leader>fm', function() vim.lsp.buf.format { async = true } end, bufopts)
348end
349
350-- bring in cmp_nvim_lsp
351local capabilities = require('cmp_nvim_lsp').default_capabilities()
352
353local servers = { 'jedi_language_server', 'texlab', 'clangd', 'denols' }
354for _, lsp in ipairs(servers) do
355 nvim_lsp[lsp].setup {
356 on_attach = on_attach,
357 capabilities = capabilities
358 }
359end
360
361nvim_lsp['efm'].setup {
362 on_attach = on_attach,
363 filetypes = { 'sh' },
364 capabilities = capabilities
365}
366
367nvim_lsp.ltex.setup {
368 capabilities = capabilities,
369 on_attach = function(client, bufnr)
370 on_attach(client, bufnr)
371 require("ltex_extra").setup {
372 load_langs = { "en-GB" },
373 init_check = true,
374 path = "/home/yigit/.local/share/nvim/ltex",
375 log_level = "none",
376 }
377 end,
378 settings = {
379 ltex = {
380 -- my settings here
381 }
382 }
383}
384
385-- rust-tools {{{ --
386
387-- Configure LSP through rust-tools.nvim plugin.
388-- rust-tools will configure and enable certain LSP features for us.
389-- See https://github.com/simrat39/rust-tools.nvim#configuration
390local rust_opts = {
391 tools = {
392 runnables = {
393 use_telescope = true,
394 },
395 inlay_hints = {
396 auto = true,
397 show_parameter_hints = true,
398 parameter_hints_prefix = "↸ ",
399 other_hints_prefix = "❱ ",
400 },
401 },
402
403 -- all the opts to send to nvim-lspconfig
404 -- these override the defaults set by rust-tools.nvim
405 -- see https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md#rust_analyzer
406 server = {
407 -- on_attach is a callback called when the language server attachs to the buffer
408 on_attach = on_attach,
409 settings = {
410 -- to enable rust-analyzer settings visit:
411 -- https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/generated_config.adoc
412 ["rust-analyzer"] = {
413 -- enable clippy on save
414 checkOnSave = {
415 command = "clippy",
416 },
417 },
418 },
419 },
420}
421
422require('rust-tools').setup(rust_opts)
423
424-- }}} rust-tools --
425
426-- }}} nvim-lsp --
427
428-- indent-blankline {{{ --
429vim.opt.list = true
430
431require("indent_blankline").setup {
432 show_current_context = true,
433 char = "┊",
434 buftype_exclude = {"terminal"},
435 filetype_exclude = {"dashboard", "help", "man"}
436}
437-- }}} indent-blankline --
438
439-- nvim-autopairs {{{ --
440
441require('nvim-autopairs').setup({
442 disable_filetype = { "TelescopePrompt" },
443})
444
445local cmp_autopairs = require('nvim-autopairs.completion.cmp')
446local cmp = require('cmp')
447cmp.event:on( 'confirm_done', cmp_autopairs.on_confirm_done())
448
449local Rule = require('nvim-autopairs.rule')
450local npairs = require('nvim-autopairs')
451
452npairs.add_rule(Rule('%"','%"',"remind"))
453npairs.add_rule(Rule('/*','*/',"c"))
454
455-- }}} nvim-autopairs --
456
457-- nvim-colorizer {{{ --
458require 'colorizer'.setup()
459-- }}} nvim-colorizer --
460
461-- gitsigns.nvim {{{ --
462
463require('gitsigns').setup {
464 signs = {
465 add = { text = '│' },
466 change = { text = '│' },
467 delete = { text = '_' },
468 topdelete = { text = '‾' },
469 changedelete = { text = '~' },
470 untracked = { text = '┆' },
471 },
472 signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
473 numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
474 linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
475 word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
476 watch_gitdir = {
477 follow_files = true
478 },
479 attach_to_untracked = true,
480 current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
481 current_line_blame_opts = {
482 virt_text = true,
483 virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
484 delay = 1000,
485 ignore_whitespace = false,
486 },
487 current_line_blame_formatter = '<author>, <author_time:%Y-%m-%d> - <summary>',
488 sign_priority = 6,
489 update_debounce = 100,
490 status_formatter = nil, -- Use default
491 max_file_length = 40000, -- Disable if file is longer than this (in lines)
492 preview_config = {
493 -- Options passed to nvim_open_win
494 border = 'single',
495 style = 'minimal',
496 relative = 'cursor',
497 row = 0,
498 col = 1
499 },
500 yadm = {
501 enable = true
502 },
503
504 on_attach = function(bufnr)
505 local gs = package.loaded.gitsigns
506
507 local function map(mode, l, r, opts)
508 opts = opts or {}
509 opts.buffer = bufnr
510 vim.keymap.set(mode, l, r, opts)
511 end
512
513 -- Navigation
514 map('n', ']c', function()
515 if vim.wo.diff then return ']c' end
516 vim.schedule(function() gs.next_hunk() end)
517 return '<Ignore>'
518 end, {expr=true})
519
520 map('n', '[c', function()
521 if vim.wo.diff then return '[c' end
522 vim.schedule(function() gs.prev_hunk() end)
523 return '<Ignore>'
524 end, {expr=true})
525
526 -- Actions
527 map('n', '<leader>hs', gs.stage_hunk)
528 map('n', '<leader>hr', gs.reset_hunk)
529 map('v', '<leader>hs', function() gs.stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end)
530 map('v', '<leader>hr', function() gs.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end)
531 map('n', '<leader>hS', gs.stage_buffer)
532 map('n', '<leader>hu', gs.undo_stage_hunk)
533 map('n', '<leader>hR', gs.reset_buffer)
534 map('n', '<leader>hp', gs.preview_hunk)
535 map('n', '<leader>hb', function() gs.blame_line{full=true} end)
536 map('n', '<leader>tb', gs.toggle_current_line_blame)
537 map('n', '<leader>hd', gs.diffthis)
538 map('n', '<leader>hD', function() gs.diffthis('~') end)
539 map('n', '<leader>td', gs.toggle_deleted)
540
541 -- Text object
542 map({'o', 'x'}, 'ih', ':<C-U>Gitsigns select_hunk<CR>')
543 end
544}
545
546-- }}} gitsigns.nvim --
547
548-- Comment.nvim {{{ --
549require('Comment').setup()
550-- }}} Comment.nvim --
551
552-- catppuccin {{{ --
553require("catppuccin").setup({
554 flavour = "mocha", -- latte, frappe, macchiato, mocha
555 background = { -- :h background
556 light = "latte",
557 dark = "mocha",
558 },
559 transparent_background = false,
560 term_colors = false,
561 no_italic = true, -- force no italic
562 no_bold = false, -- force no bold
563 integrations = {
564 barbar = true,
565 cmp = true,
566 fidget = true,
567 gitsigns = true,
568 leap = true,
569 nvimtree = true,
570 telescope = true,
571 treesitter = true,
572 vimwiki = true,
573 },
574 native_lsp = {
575 enabled = true,
576 underlines = {
577 errors = { "underline" },
578 hints = { "underline" },
579 warnings = { "underline" },
580 information = { "underline" },
581 },
582
583 },
584 indent_blankline = {
585 enabled = true,
586 },
587})
588
589-- setup must be called before loading
590vim.cmd.colorscheme "catppuccin"
591
592-- }}} catppuccin --
593
594-- dial.nvim {{{ --
595
596local augend = require("dial.augend")
597require("dial.config").augends:register_group{
598 -- default augends used when no group name is specified
599 default = {
600 augend.integer.alias.decimal, -- nonnegative decimal number (0, 1, 2, 3, ...)
601 augend.integer.alias.hex, -- nonnegative hex number (0x01, 0x1a1f, etc.)
602 augend.date.alias["%Y/%m/%d"], -- date (2022/02/19, etc.)
603 augend.date.alias["%Y-%m-%d"],
604 augend.semver.alias.semver,
605 augend.constant.new{
606 elements = {"and", "or"},
607 word = true, -- if false, "sand" is incremented into "sor", "doctor" into "doctand", etc.
608 cyclic = true, -- "or" is incremented into "and".
609 },
610 augend.constant.new{
611 elements = {"&&", "||"},
612 word = false,
613 cyclic = true,
614 },
615 },
616}
617
618-- }}} dial.nvim --
619
620-- leap.nvim {{{ --
621require('leap').setup {
622 case_insensitive = true,
623 substitute_chars = { ['\r'] = '¬' }
624}
625
626-- }}} leap.nvim --
627
628-- fidget.nvim {{{ --
629require("fidget").setup{
630-- https://github.com/j-hui/fidget.nvim/blob/main/doc/fidget.md
631 text = {
632 spinner = "triangle",
633 commenced = "started", -- message shown when task starts
634 completed = "done", -- message shown when task completes
635 },
636}
637-- }}} fidget.nvim --
638
639-- nvim-tree {{{ --
640
641require("nvim-tree").setup({
642 sort_by = "case_sensitive",
643 diagnostics = {
644 enable = false,
645 icons = {
646 hint = "❔",
647 info = "❕",
648 warning = "❗",
649 error = "❌",
650 }
651 },
652 view = {
653 adaptive_size = true,
654 },
655 renderer = {
656 group_empty = true,
657 },
658 filters = {
659 dotfiles = true,
660 },
661})
662
663-- }}} nvim-tree --
664
665-- barbar.nvim {{{ --
666
667vim.g.barbar_auto_setup = false -- disable auto-setup
668
669require'barbar'.setup {
670 animation = false,
671 auto_hide = true,
672 tabpages = true,
673 closable = true,
674 clickable = false,
675 icons = {
676 diagnostics = {
677 -- `vim.diagnostic.severity`
678 [vim.diagnostic.severity.ERROR] = {enabled = true, icon = '❌'},
679 [vim.diagnostic.severity.WARN] = {enabled = false},
680 [vim.diagnostic.severity.INFO] = {enabled = false},
681 [vim.diagnostic.severity.HINT] = {enabled = true},
682 },
683 filetype = {
684 custom_colors = false,
685 enabled = true,
686 },
687 separator = { left = '▎', right = ''},
688 modified = { button = '•'},
689 pinned = { button = '車', filename = true, separator = { right = ''}},
690 },
691
692 insert_at_end = false,
693 insert_at_start = false,
694
695 maximum_padding = 1,
696 minimum_padding = 1,
697 maximum_length = 30,
698 semantic_letters = true,
699 letters = 'arstneoidhqwfpluy;zxcvkmARSTNEOIDHQWFPLUYZXCVKM',
700 no_name_title = nil,
701}
702
703local nvim_tree_events = require('nvim-tree.events')
704local bufferline_api = require('bufferline.api')
705
706local function get_tree_size()
707 return require'nvim-tree.view'.View.width
708end
709
710nvim_tree_events.subscribe('TreeOpen', function()
711 bufferline_api.set_offset(get_tree_size())
712end)
713
714nvim_tree_events.subscribe('Resize', function()
715 bufferline_api.set_offset(get_tree_size())
716end)
717
718nvim_tree_events.subscribe('TreeClose', function()
719 bufferline_api.set_offset(0)
720end)
721
722-- }}} barbar.nvim --