diff options
author | Yigit Sever | 2023-08-18 23:42:39 +0300 |
---|---|---|
committer | Yigit Sever | 2023-08-18 23:42:39 +0300 |
commit | 387e08c52d9752bc839c71119f140ba8435c3d70 (patch) | |
tree | 3bb20c0e58ccf1e65ced4cfdfb6459e226a24672 /.config/nvim/lua/plugins | |
parent | 14c14cfcc9aeb4bada6d2429162ded2917f26a94 (diff) | |
download | dotfiles-387e08c52d9752bc839c71119f140ba8435c3d70.tar.gz dotfiles-387e08c52d9752bc839c71119f140ba8435c3d70.tar.bz2 dotfiles-387e08c52d9752bc839c71119f140ba8435c3d70.zip |
nvim: switch to lazy.nvim
revert this as whole, if you miss the good old days
Diffstat (limited to '.config/nvim/lua/plugins')
-rw-r--r-- | .config/nvim/lua/plugins/barbar.lua | 77 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/cmp.lua | 114 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/colorscheme.lua | 45 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/cutlass.lua | 51 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/dashboard.lua | 36 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/devicons.lua | 25 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/git.lua | 95 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/indent-blankline.lua | 14 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/latex.lua | 16 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/lsp.lua | 236 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/lualine.lua | 84 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/misc.lua | 83 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/nvim-tree.lua | 40 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/telescope.lua | 45 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/tpope.lua | 11 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/treesitter.lua | 73 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/trouble.lua | 14 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/turkish-deasciifier.lua | 24 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/vimwiki.lua | 28 | ||||
-rw-r--r-- | .config/nvim/lua/plugins/which-key.lua | 14 |
20 files changed, 1125 insertions, 0 deletions
diff --git a/.config/nvim/lua/plugins/barbar.lua b/.config/nvim/lua/plugins/barbar.lua new file mode 100644 index 0000000..7b6c69d --- /dev/null +++ b/.config/nvim/lua/plugins/barbar.lua | |||
@@ -0,0 +1,77 @@ | |||
1 | return { | ||
2 | { | ||
3 | "romgrk/barbar.nvim", | ||
4 | dependencies = { | ||
5 | 'lewis6991/gitsigns.nvim', | ||
6 | "nvim-tree/nvim-web-devicons" | ||
7 | }, | ||
8 | init = function() | ||
9 | vim.g.barbar_auto_setup = false -- disable auto-setup | ||
10 | local map = require("helpers.keys").map | ||
11 | |||
12 | -- move to previous/next | ||
13 | map('n', '<A-,>', '<Cmd>BufferPrevious<CR>', "switch to previous buffer") | ||
14 | map('n', '<A-.>', '<Cmd>BufferNext<CR>', "switch to next buffer") | ||
15 | |||
16 | -- re-order to previous/next | ||
17 | map('n', '<A-e>', '<Cmd>BufferMovePrevious<CR>', "move buffer back") | ||
18 | map('n', '<A-i>', '<Cmd>BufferMoveNext<CR>', "move buffer forward") | ||
19 | |||
20 | -- goto buffer in position... | ||
21 | map('n', '<A-1>', '<Cmd>BufferGoto 1<CR>') | ||
22 | map('n', '<A-2>', '<Cmd>BufferGoto 2<CR>') | ||
23 | map('n', '<A-3>', '<Cmd>BufferGoto 3<CR>') | ||
24 | map('n', '<A-4>', '<Cmd>BufferGoto 4<CR>') | ||
25 | map('n', '<A-5>', '<Cmd>BufferGoto 5<CR>') | ||
26 | map('n', '<A-6>', '<Cmd>BufferGoto 6<CR>') | ||
27 | map('n', '<A-7>', '<Cmd>BufferGoto 7<CR>') | ||
28 | map('n', '<A-8>', '<Cmd>BufferGoto 8<CR>') | ||
29 | map('n', '<A-9>', '<Cmd>BufferGoto 9<CR>') | ||
30 | map('n', '<A-0>', '<Cmd>BufferLast<CR>') | ||
31 | |||
32 | -- pin/unpin buffer | ||
33 | map('n', '<A-p>', '<Cmd>BufferPin<CR>', "pin buffer") | ||
34 | -- close buffer | ||
35 | map('n', '<A-c>', '<Cmd>BufferClose<CR>', "close buffer") | ||
36 | -- magic buffer-picking mode | ||
37 | map('n', '<leader>dg', '<Cmd>BufferPick<CR>', "buffer picking mode") | ||
38 | -- sort automatically by... | ||
39 | map('n', '<Leader>db', '<Cmd>BufferOrderByBufferNumber<CR>', "sort buffers by number") | ||
40 | map('n', '<Leader>dd', '<Cmd>BufferOrderByDirectory<CR>', "sort buffers by directory") | ||
41 | map('n', '<Leader>dl', '<Cmd>BufferOrderByLanguage<CR>', "sort buffers by language") | ||
42 | map('n', '<Leader>dw', '<Cmd>BufferOrderByWindowNumber<CR>', "sort buffers by window number") | ||
43 | end, | ||
44 | opts = { | ||
45 | animation = false, | ||
46 | auto_hide = true, | ||
47 | tabpages = true, | ||
48 | closable = true, | ||
49 | clickable = false, | ||
50 | icons = { | ||
51 | diagnostics = { | ||
52 | [vim.diagnostic.severity.ERROR] = {enabled = true, icon = '❌'}, | ||
53 | [vim.diagnostic.severity.WARN] = {enabled = false}, | ||
54 | [vim.diagnostic.severity.INFO] = {enabled = false}, | ||
55 | [vim.diagnostic.severity.HINT] = {enabled = true}, | ||
56 | }, | ||
57 | filetype = { | ||
58 | custom_colors = false, | ||
59 | enabled = true, | ||
60 | }, | ||
61 | separator = { left = '▎', right = ''}, | ||
62 | modified = { button = ''}, | ||
63 | pinned = { button = '', filename = true, separator = { right = ''}}, | ||
64 | }, | ||
65 | |||
66 | insert_at_end = false, | ||
67 | insert_at_start = false, | ||
68 | |||
69 | maximum_padding = 1, | ||
70 | minimum_padding = 1, | ||
71 | maximum_length = 30, | ||
72 | semantic_letters = true, | ||
73 | letters = 'arstneoidhqwfpluy;zxcvkmARSTNEOIDHQWFPLUYZXCVKM', | ||
74 | no_name_title = nil, | ||
75 | }, | ||
76 | }, | ||
77 | } | ||
diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua new file mode 100644 index 0000000..78ff9a9 --- /dev/null +++ b/.config/nvim/lua/plugins/cmp.lua | |||
@@ -0,0 +1,114 @@ | |||
1 | -- autocompletion | ||
2 | return { | ||
3 | { | ||
4 | "hrsh7th/nvim-cmp", | ||
5 | event = "InsertEnter", | ||
6 | dependencies = { | ||
7 | "hrsh7th/cmp-nvim-lsp", | ||
8 | "hrsh7th/cmp-nvim-lua", | ||
9 | "hrsh7th/cmp-buffer", | ||
10 | "hrsh7th/cmp-path", | ||
11 | "L3MON4D3/LuaSnip", | ||
12 | "saadparwaiz1/cmp_luasnip", | ||
13 | "rafamadriz/friendly-snippets", | ||
14 | }, | ||
15 | config = function() | ||
16 | local cmp = require("cmp") | ||
17 | local luasnip = require("luasnip") | ||
18 | |||
19 | require("luasnip/loaders/from_vscode").lazy_load() | ||
20 | |||
21 | local kind_icons = { | ||
22 | Text = "", | ||
23 | Method = "m", | ||
24 | Function = "", | ||
25 | Constructor = "", | ||
26 | Field = "", | ||
27 | Variable = "", | ||
28 | Class = "", | ||
29 | Interface = "", | ||
30 | Module = "", | ||
31 | Property = "", | ||
32 | Unit = "", | ||
33 | Value = "", | ||
34 | Enum = "", | ||
35 | Keyword = "", | ||
36 | Snippet = "", | ||
37 | Color = "", | ||
38 | File = "", | ||
39 | Reference = "", | ||
40 | Folder = "", | ||
41 | EnumMember = "", | ||
42 | Constant = "", | ||
43 | Struct = "", | ||
44 | Event = "", | ||
45 | Operator = "", | ||
46 | TypeParameter = "", | ||
47 | } | ||
48 | |||
49 | cmp.setup({ | ||
50 | enabled = true, | ||
51 | snippet = { | ||
52 | expand = function(args) | ||
53 | luasnip.lsp_expand(args.body) | ||
54 | end, | ||
55 | }, | ||
56 | mapping = cmp.mapping.preset.insert({ | ||
57 | ["<C-k>"] = cmp.mapping.select_prev_item(), | ||
58 | ["<C-j>"] = cmp.mapping.select_next_item(), | ||
59 | ["<C-d>"] = cmp.mapping.scroll_docs(-4), | ||
60 | ["<C-f>"] = cmp.mapping.scroll_docs(4), | ||
61 | ["<CR>"] = cmp.mapping.confirm({ | ||
62 | behavior = cmp.ConfirmBehavior.Replace, | ||
63 | select = false, | ||
64 | }), | ||
65 | ["<Tab>"] = cmp.mapping(function(fallback) | ||
66 | if cmp.visible() then | ||
67 | cmp.select_next_item() | ||
68 | elseif luasnip.expand_or_jumpable() then | ||
69 | luasnip.expand_or_jump() | ||
70 | else | ||
71 | fallback() | ||
72 | end | ||
73 | end, { "i", "s" }), | ||
74 | ["<S-Tab>"] = cmp.mapping(function(fallback) | ||
75 | if cmp.visible() then | ||
76 | cmp.select_prev_item() | ||
77 | elseif luasnip.jumpable(-1) then | ||
78 | luasnip.jump(-1) | ||
79 | else | ||
80 | fallback() | ||
81 | end | ||
82 | end, { "i", "s" }), | ||
83 | }), | ||
84 | formatting = { | ||
85 | fields = { "kind", "abbr", "menu" }, | ||
86 | format = function(entry, vim_item) | ||
87 | -- kind icons | ||
88 | vim_item.kind = string.format("%s", kind_icons[vim_item.kind]) | ||
89 | vim_item.menu = ({ | ||
90 | nvim_lsp = "[lsp]", | ||
91 | luasnip = "[snippet]", | ||
92 | buffer = "[buffer]", | ||
93 | path = "[path]", | ||
94 | })[entry.source.name] | ||
95 | return vim_item | ||
96 | end, | ||
97 | }, | ||
98 | sources = { | ||
99 | { name = "nvim_lsp" }, | ||
100 | { name = "luasnip" }, | ||
101 | { name = "buffer" }, | ||
102 | { name = "path" }, | ||
103 | }, | ||
104 | }) | ||
105 | |||
106 | -- If you want insert `(` after select function or method item | ||
107 | local cmp_autopairs = require('nvim-autopairs.completion.cmp') | ||
108 | cmp.event:on( | ||
109 | 'confirm_done', | ||
110 | cmp_autopairs.on_confirm_done() | ||
111 | ) | ||
112 | end, | ||
113 | }, | ||
114 | } | ||
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua new file mode 100644 index 0000000..969d304 --- /dev/null +++ b/.config/nvim/lua/plugins/colorscheme.lua | |||
@@ -0,0 +1,45 @@ | |||
1 | return { | ||
2 | { | ||
3 | "catppuccin/nvim", | ||
4 | name = "catppuccin", | ||
5 | lazy = false, | ||
6 | priority = 1000, | ||
7 | config = function() | ||
8 | require("catppuccin").setup({ | ||
9 | flavour = "mocha", -- latte, frappe, macchiato, mocha | ||
10 | background = { | ||
11 | light = "latte", | ||
12 | dark = "mocha", | ||
13 | }, | ||
14 | transparent_background = false, | ||
15 | term_colors = false, | ||
16 | no_italic = true, -- force no italic | ||
17 | no_bold = false, -- force no bold | ||
18 | integrations = { | ||
19 | barbar = true, | ||
20 | cmp = true, | ||
21 | fidget = true, | ||
22 | gitsigns = true, | ||
23 | leap = true, | ||
24 | nvimtree = true, | ||
25 | telescope = true, | ||
26 | treesitter = true, | ||
27 | vimwiki = true, | ||
28 | }, | ||
29 | native_lsp = { | ||
30 | enabled = true, | ||
31 | underlines = { | ||
32 | errors = { "underline" }, | ||
33 | hints = { "underline" }, | ||
34 | warnings = { "underline" }, | ||
35 | information = { "underline" }, | ||
36 | }, | ||
37 | }, | ||
38 | indent_blankline = { | ||
39 | enabled = true, | ||
40 | }, | ||
41 | }) | ||
42 | vim.cmd("colorscheme catppuccin") | ||
43 | end, | ||
44 | }, | ||
45 | } | ||
diff --git a/.config/nvim/lua/plugins/cutlass.lua b/.config/nvim/lua/plugins/cutlass.lua new file mode 100644 index 0000000..0b8ef52 --- /dev/null +++ b/.config/nvim/lua/plugins/cutlass.lua | |||
@@ -0,0 +1,51 @@ | |||
1 | return { | ||
2 | { | ||
3 | 'svermeulen/vim-cutlass', | ||
4 | }, | ||
5 | { | ||
6 | 'svermeulen/vim-subversive', | ||
7 | config = function() | ||
8 | local map = require("helpers.keys").map | ||
9 | |||
10 | -- substitute from yank | ||
11 | map('n', '<Leader>ys', '<plug>(SubversiveSubstitute)', "substitute from yank") | ||
12 | map('n', '<Leader>yss', '<plug>(SubversiveSubstituteLine)', "substitute from yank, line") | ||
13 | map('n', '<Leader>yS', '<plug>(SubversiveSubstituteToEndOfLine)', "substitute from yank, eol") | ||
14 | |||
15 | -- substitute over range | ||
16 | map( { 'n', 'x' }, '<Leader>s', '<plug>(SubversiveSubstituteRange)', "start substitude over range") | ||
17 | map('n', '<Leader>ss', '<plug>(SubversiveSubstituteWordRange)', "start substitude over range") | ||
18 | end | ||
19 | }, | ||
20 | { | ||
21 | 'svermeulen/vim-yoink', | ||
22 | config = function() | ||
23 | vim.g.yoinkIncludeDeleteOperations = 1 | ||
24 | |||
25 | -- fix the Target STRING not available | ||
26 | vim.g.clipboard = { | ||
27 | name = 'xsel_override', | ||
28 | copy = { | ||
29 | ['+'] = 'xsel --input --clipboard', | ||
30 | ['*'] = 'xsel --input --primary', | ||
31 | }, | ||
32 | paste = { | ||
33 | ['+'] = 'xsel --output --clipboard', | ||
34 | ['*'] = 'xsel --output --primary', | ||
35 | }, | ||
36 | cache_enabled = 1, | ||
37 | } | ||
38 | |||
39 | local map = require("helpers.keys").map | ||
40 | |||
41 | -- yoink paste | ||
42 | map('n', 'p', '<Plug>(YoinkPaste_p)') | ||
43 | map('n', 'P', '<Plug>(YoinkPaste_P)') | ||
44 | |||
45 | -- iterate over yank list | ||
46 | map('n', '<c-n>', '<Plug>(YoinkPostPasteSwapBack)') | ||
47 | map('n', '<c-p>', '<Plug>(YoinkPostPasteSwapForward)') | ||
48 | |||
49 | end, | ||
50 | } | ||
51 | } | ||
diff --git a/.config/nvim/lua/plugins/dashboard.lua b/.config/nvim/lua/plugins/dashboard.lua new file mode 100644 index 0000000..074d3f5 --- /dev/null +++ b/.config/nvim/lua/plugins/dashboard.lua | |||
@@ -0,0 +1,36 @@ | |||
1 | return { | ||
2 | { | ||
3 | 'glepnir/dashboard-nvim', | ||
4 | event = 'VimEnter', | ||
5 | config = function() | ||
6 | require('dashboard').setup { | ||
7 | theme = 'hyper', | ||
8 | change_to_vcs_root = true, | ||
9 | config = { | ||
10 | week_header = { | ||
11 | enable = true, | ||
12 | }, | ||
13 | shortcut = { | ||
14 | { | ||
15 | desc = ' Update', group = '@property', action = 'Lazy update', key = 'u', | ||
16 | }, | ||
17 | { | ||
18 | icon = ' ', | ||
19 | icon_hl = '@variable', | ||
20 | desc = 'Files', | ||
21 | group = 'Label', | ||
22 | action = 'Telescope find_files', | ||
23 | key = 'f', | ||
24 | }, | ||
25 | }, | ||
26 | }, | ||
27 | |||
28 | } | ||
29 | end, | ||
30 | dependencies = { | ||
31 | { | ||
32 | 'nvim-tree/nvim-web-devicons' | ||
33 | } | ||
34 | } | ||
35 | } | ||
36 | } | ||
diff --git a/.config/nvim/lua/plugins/devicons.lua b/.config/nvim/lua/plugins/devicons.lua new file mode 100644 index 0000000..712ecc6 --- /dev/null +++ b/.config/nvim/lua/plugins/devicons.lua | |||
@@ -0,0 +1,25 @@ | |||
1 | return { | ||
2 | { | ||
3 | "nvim-tree/nvim-web-devicons", | ||
4 | opts = { | ||
5 | override = { | ||
6 | wiki = { | ||
7 | icon = "", | ||
8 | color = "#D7827E", | ||
9 | name = "vimwiki" | ||
10 | }, | ||
11 | rem = { | ||
12 | icon = " ", | ||
13 | color = "#B4637A", | ||
14 | name = "remind" | ||
15 | }, | ||
16 | mail = { | ||
17 | icon = " ", | ||
18 | color = "#907AA9", | ||
19 | name = "mail" | ||
20 | }, | ||
21 | }, | ||
22 | default = true | ||
23 | }, | ||
24 | }, | ||
25 | } | ||
diff --git a/.config/nvim/lua/plugins/git.lua b/.config/nvim/lua/plugins/git.lua new file mode 100644 index 0000000..0e4d7f5 --- /dev/null +++ b/.config/nvim/lua/plugins/git.lua | |||
@@ -0,0 +1,95 @@ | |||
1 | return { | ||
2 | { | ||
3 | "lewis6991/gitsigns.nvim", | ||
4 | opts = { | ||
5 | signs = { | ||
6 | add = { text = '│' }, | ||
7 | change = { text = '│' }, | ||
8 | delete = { text = '_' }, | ||
9 | topdelete = { text = '‾' }, | ||
10 | changedelete = { text = '~' }, | ||
11 | untracked = { text = '┆' }, | ||
12 | }, | ||
13 | signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` | ||
14 | numhl = false, -- Toggle with `:Gitsigns toggle_numhl` | ||
15 | linehl = false, -- Toggle with `:Gitsigns toggle_linehl` | ||
16 | word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` | ||
17 | watch_gitdir = { | ||
18 | follow_files = true | ||
19 | }, | ||
20 | attach_to_untracked = true, | ||
21 | current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` | ||
22 | current_line_blame_opts = { | ||
23 | virt_text = true, | ||
24 | virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align' | ||
25 | delay = 1000, | ||
26 | ignore_whitespace = false, | ||
27 | }, | ||
28 | current_line_blame_formatter = '<author>, <author_time:%Y-%m-%d> - <summary>', | ||
29 | sign_priority = 6, | ||
30 | update_debounce = 100, | ||
31 | status_formatter = nil, -- Use default | ||
32 | max_file_length = 40000, -- Disable if file is longer than this (in lines) | ||
33 | preview_config = { | ||
34 | -- Options passed to nvim_open_win | ||
35 | border = 'single', | ||
36 | style = 'minimal', | ||
37 | relative = 'cursor', | ||
38 | row = 0, | ||
39 | col = 1 | ||
40 | }, | ||
41 | yadm = { | ||
42 | enable = true | ||
43 | }, | ||
44 | |||
45 | on_attach = function(bufnr) | ||
46 | local gs = package.loaded.gitsigns | ||
47 | |||
48 | local function map(mode, l, r, desc, opts) | ||
49 | opts = opts or {} | ||
50 | opts.buffer = bufnr | ||
51 | opts.desc = desc | ||
52 | vim.keymap.set(mode, l, r, opts) | ||
53 | end | ||
54 | |||
55 | -- navigation | ||
56 | map('n', ']c', function() | ||
57 | if vim.wo.diff then return ']c' end | ||
58 | vim.schedule(function() gs.next_hunk() end) | ||
59 | return '<Ignore>' | ||
60 | end, "jump to next hunk", { expr = true }) | ||
61 | |||
62 | map('n', '[c', function() | ||
63 | if vim.wo.diff then return '[c' end | ||
64 | vim.schedule(function() gs.prev_hunk() end) | ||
65 | return '<Ignore>' | ||
66 | end, "jump to previous hunk", { expr = true }) | ||
67 | |||
68 | -- Actions | ||
69 | map('n', '<leader>hs', gs.stage_hunk, "stage hunk") | ||
70 | map('n', '<leader>hr', gs.reset_hunk, "reset hunk") | ||
71 | map('v', '<leader>hs', function() gs.stage_hunk { vim.fn.line('.'), vim.fn.line('v') } end, | ||
72 | "stage selection") | ||
73 | map('v', '<leader>hr', function() gs.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end, | ||
74 | "reset selection") | ||
75 | map('n', '<leader>hS', gs.stage_buffer, "stage buffer") | ||
76 | map('n', '<leader>hu', gs.undo_stage_hunk, "undo stage hunk") | ||
77 | map('n', '<leader>hR', gs.reset_buffer, "undo reset buffer") | ||
78 | map('n', '<leader>hp', gs.preview_hunk, "preview hunk") | ||
79 | map('n', '<leader>hb', function() gs.blame_line { full = true } end, "blame line") | ||
80 | map('n', '<leader>tb', gs.toggle_current_line_blame, "toggle current line blame") | ||
81 | map('n', '<leader>hd', gs.diffthis, "diff this") | ||
82 | map('n', '<leader>hD', function() gs.diffthis('~') end, "diff whole buffer") | ||
83 | map('n', '<leader>td', gs.toggle_deleted, "toggle deleted") | ||
84 | |||
85 | -- Text object | ||
86 | map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>', "select hunk") | ||
87 | end | ||
88 | |||
89 | }, | ||
90 | }, | ||
91 | { | ||
92 | "tpope/vim-fugitive", | ||
93 | cmd = { 'Git', 'Gstatus', 'Gblame', 'Gpush', 'Gpull' }, | ||
94 | }, | ||
95 | } | ||
diff --git a/.config/nvim/lua/plugins/indent-blankline.lua b/.config/nvim/lua/plugins/indent-blankline.lua new file mode 100644 index 0000000..42e5c62 --- /dev/null +++ b/.config/nvim/lua/plugins/indent-blankline.lua | |||
@@ -0,0 +1,14 @@ | |||
1 | return { | ||
2 | { | ||
3 | "lukas-reineke/indent-blankline.nvim", | ||
4 | init = function() | ||
5 | vim.opt.list = true | ||
6 | end, | ||
7 | config = { | ||
8 | show_current_context = true, | ||
9 | char = "┊", | ||
10 | buftype_exclude = {"terminal"}, | ||
11 | filetype_exclude = {"dashboard", "help", "man"} | ||
12 | }, | ||
13 | }, | ||
14 | } | ||
diff --git a/.config/nvim/lua/plugins/latex.lua b/.config/nvim/lua/plugins/latex.lua new file mode 100644 index 0000000..8582c6f --- /dev/null +++ b/.config/nvim/lua/plugins/latex.lua | |||
@@ -0,0 +1,16 @@ | |||
1 | return { | ||
2 | { | ||
3 | "lervag/vimtex", | ||
4 | ft = { 'tex', 'latex', 'plaintext' }, | ||
5 | init = function() | ||
6 | vim.g.vimtex_view_method = 'zathura' | ||
7 | vim.g.vimtex_quickfix_mode = 0 | ||
8 | vim.g.vimtex_quickfix_ignore_filters = {"Underfull", "Overfull"} | ||
9 | vim.g.vimtex_compiler_latexmk = { | ||
10 | options = { | ||
11 | "-pdf", '-shell-escape', '-verbose', '-file-line-error', '-synctex=1', '-interaction=nonstopmode' | ||
12 | } | ||
13 | } | ||
14 | end, | ||
15 | }, | ||
16 | } | ||
diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua new file mode 100644 index 0000000..d03d9af --- /dev/null +++ b/.config/nvim/lua/plugins/lsp.lua | |||
@@ -0,0 +1,236 @@ | |||
1 | return { | ||
2 | { | ||
3 | "neovim/nvim-lspconfig", | ||
4 | dependencies = { | ||
5 | "williamboman/mason.nvim", | ||
6 | "williamboman/mason-lspconfig.nvim", | ||
7 | "j-hui/fidget.nvim", | ||
8 | "folke/neodev.nvim", | ||
9 | "RRethy/vim-illuminate", | ||
10 | "hrsh7th/cmp-nvim-lsp", | ||
11 | }, | ||
12 | config = function() | ||
13 | local map = require("helpers.keys").map | ||
14 | |||
15 | map('n', '<leader>e', vim.diagnostic.open_float, "lsp: open diagnostics float") | ||
16 | map('n', '[d', vim.diagnostic.goto_prev, "lsp: goto previous diagnostic") | ||
17 | map('n', ']d', vim.diagnostic.goto_next, "lsp: goto next diagnostic") | ||
18 | |||
19 | -- set up mason before anything else | ||
20 | require("mason").setup() | ||
21 | require("mason-lspconfig").setup({ | ||
22 | ensure_installed = { | ||
23 | "lua_ls", | ||
24 | "pylsp", | ||
25 | }, | ||
26 | automatic_installation = true, | ||
27 | }) | ||
28 | |||
29 | -- quick access via keymap | ||
30 | require("helpers.keys").map("n", "<leader>M", "<cmd>Mason<cr>", "show mason") | ||
31 | |||
32 | -- neodev setup before lsp config | ||
33 | require("neodev").setup() | ||
34 | |||
35 | -- set up cool signs for diagnostics | ||
36 | local signs = { Error = " ", Warn = "", Hint = "", Info = "" } | ||
37 | for type, icon in pairs(signs) do | ||
38 | local hl = "DiagnosticSign" .. type | ||
39 | vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) | ||
40 | end | ||
41 | |||
42 | -- Diagnostic config | ||
43 | local config = { | ||
44 | virtual_text = false, | ||
45 | signs = { | ||
46 | active = signs, | ||
47 | }, | ||
48 | update_in_insert = true, | ||
49 | underline = true, | ||
50 | severity_sort = true, | ||
51 | float = { | ||
52 | focusable = true, | ||
53 | style = "minimal", | ||
54 | border = "rounded", | ||
55 | source = "always", | ||
56 | header = "", | ||
57 | prefix = "", | ||
58 | }, | ||
59 | } | ||
60 | vim.diagnostic.config(config) | ||
61 | |||
62 | -- this function gets run when an lsp connects to a particular buffer. | ||
63 | local on_attach = function(client, bufnr) | ||
64 | map = require("helpers.keys").lsp_map | ||
65 | |||
66 | map("<leader>lr", vim.lsp.buf.rename, bufnr, "lsp: rename symbol") | ||
67 | map("<leader>la", vim.lsp.buf.code_action, bufnr, "lsp: code action") | ||
68 | map("<leader>ld", vim.lsp.buf.type_definition, bufnr, "lsp: type definition") | ||
69 | map("<leader>ls", require("telescope.builtin").lsp_document_symbols, bufnr, "lsp: document symbols") | ||
70 | |||
71 | map("gd", vim.lsp.buf.definition, bufnr, "lsp: goto definition") | ||
72 | map("gD", vim.lsp.buf.declaration, bufnr, "lsp: goto declaration") | ||
73 | map("gr", require("telescope.builtin").lsp_references, bufnr, "lsp: goto references") | ||
74 | map("gI", vim.lsp.buf.implementation, bufnr, "lsp: goto implementation") | ||
75 | map("K", vim.lsp.buf.hover, bufnr, "lsp: hover documentation") | ||
76 | map("<c-k>", vim.lsp.buf.signature_help, bufnr, "lsp: signature help") | ||
77 | |||
78 | -- Create a command `:Format` local to the LSP buffer | ||
79 | vim.api.nvim_buf_create_user_command(bufnr, "Format", function(_) | ||
80 | vim.lsp.buf.format() | ||
81 | end, { desc = "lsp: format current buffer" }) | ||
82 | |||
83 | map("<leader>fm", "<cmd>Format<cr>", bufnr, "lsp: format current buffer") | ||
84 | |||
85 | -- Attach and configure vim-illuminate | ||
86 | -- apparently this is deprecated | ||
87 | -- https://github.com/RRethy/vim-illuminate/issues/111 | ||
88 | require("illuminate").on_attach(client) | ||
89 | end | ||
90 | |||
91 | -- nvim-cmp supports additional completion capabilities, so broadcast that to servers | ||
92 | local capabilities = vim.lsp.protocol.make_client_capabilities() | ||
93 | capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) | ||
94 | |||
95 | -- lua | ||
96 | require("lspconfig")["lua_ls"].setup({ | ||
97 | on_attach = on_attach, | ||
98 | capabilities = capabilities, | ||
99 | settings = { | ||
100 | Lua = { | ||
101 | completion = { | ||
102 | callSnippet = "Replace", | ||
103 | }, | ||
104 | diagnostics = { | ||
105 | globals = { "vim" }, | ||
106 | }, | ||
107 | workspace = { | ||
108 | library = { | ||
109 | [vim.fn.expand("$VIMRUNTIME/lua")] = true, | ||
110 | [vim.fn.stdpath("config") .. "/lua"] = true, | ||
111 | }, | ||
112 | }, | ||
113 | }, | ||
114 | }, | ||
115 | }) | ||
116 | |||
117 | -- python | ||
118 | require("lspconfig")["pylsp"].setup({ | ||
119 | on_attach = on_attach, | ||
120 | capabilities = capabilities, | ||
121 | settings = { | ||
122 | pylsp = { | ||
123 | plugins = { | ||
124 | flake8 = { | ||
125 | enabled = true, | ||
126 | maxLineLength = 88, -- black's line length | ||
127 | }, | ||
128 | -- disable plugins overlapping with flake8 | ||
129 | pycodestyle = { | ||
130 | enabled = false, | ||
131 | }, | ||
132 | mccabe = { | ||
133 | enabled = false, | ||
134 | }, | ||
135 | pyflakes = { | ||
136 | enabled = false, | ||
137 | }, | ||
138 | -- use black as the formatter | ||
139 | autopep8 = { | ||
140 | enabled = false, | ||
141 | }, | ||
142 | }, | ||
143 | }, | ||
144 | }, | ||
145 | }) | ||
146 | |||
147 | -- efm | ||
148 | require("lspconfig")["efm"].setup({ | ||
149 | on_attach = on_attach, | ||
150 | filetypes = { 'sh' }, | ||
151 | capabilities = capabilities | ||
152 | }) | ||
153 | |||
154 | -- ltex | ||
155 | require("lspconfig")["ltex"].setup({ | ||
156 | capabilities = capabilities, | ||
157 | on_attach = function(client, bufnr) | ||
158 | on_attach(client, bufnr) | ||
159 | require("ltex_extra").setup { | ||
160 | load_langs = { "en-GB" }, | ||
161 | init_check = true, | ||
162 | log_level = "none", | ||
163 | } | ||
164 | end, | ||
165 | settings = { | ||
166 | ltex = { | ||
167 | -- my settings here | ||
168 | } | ||
169 | } | ||
170 | }) | ||
171 | |||
172 | -- rust-tools | ||
173 | local rust_opts = { | ||
174 | tools = { | ||
175 | runnables = { | ||
176 | use_telescope = true, | ||
177 | }, | ||
178 | inlay_hints = { | ||
179 | auto = true, | ||
180 | show_parameter_hints = true, | ||
181 | parameter_hints_prefix = "↸ ", | ||
182 | other_hints_prefix = "❱ ", | ||
183 | }, | ||
184 | }, | ||
185 | |||
186 | -- all the opts to send to nvim-lspconfig | ||
187 | -- these override the defaults set by rust-tools.nvim | ||
188 | -- see https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md#rust_analyzer | ||
189 | server = { | ||
190 | on_attach = on_attach, | ||
191 | settings = { | ||
192 | -- to enable rust-analyzer settings visit: | ||
193 | -- https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/generated_config.adoc | ||
194 | ["rust-analyzer"] = { | ||
195 | -- enable clippy on save | ||
196 | checkOnSave = { | ||
197 | command = "clippy", | ||
198 | }, | ||
199 | }, | ||
200 | }, | ||
201 | }, | ||
202 | } | ||
203 | |||
204 | require('rust-tools').setup(rust_opts) | ||
205 | end, | ||
206 | }, | ||
207 | { | ||
208 | "barreiroleo/ltex-extra.nvim", | ||
209 | event = "LspAttach", | ||
210 | }, | ||
211 | { | ||
212 | "j-hui/fidget.nvim", | ||
213 | tag = "legacy", | ||
214 | event = "LspAttach", | ||
215 | opts = { | ||
216 | text = { | ||
217 | spinner = "triangle", | ||
218 | commenced = "started", -- message shown when task starts | ||
219 | completed = "done", -- message shown when task completes | ||
220 | }, | ||
221 | }, | ||
222 | }, | ||
223 | { | ||
224 | "simrat39/rust-tools.nvim", | ||
225 | event = "LspAttach", | ||
226 | }, | ||
227 | -- { | ||
228 | -- "RRethy/vim-illuminate", | ||
229 | -- opts = { | ||
230 | -- filetypes_denylist = { | ||
231 | -- 'NvimTree', | ||
232 | -- 'fugitive', | ||
233 | -- }, | ||
234 | -- }, | ||
235 | -- }, | ||
236 | } | ||
diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua new file mode 100644 index 0000000..c528b69 --- /dev/null +++ b/.config/nvim/lua/plugins/lualine.lua | |||
@@ -0,0 +1,84 @@ | |||
1 | return { | ||
2 | "nvim-lualine/lualine.nvim", | ||
3 | dependencies = { | ||
4 | "nvim-tree/nvim-web-devicons" | ||
5 | }, | ||
6 | config = function() | ||
7 | local function lualine_spell() | ||
8 | if vim.wo.spell then | ||
9 | return "spell" | ||
10 | else | ||
11 | return | ||
12 | end | ||
13 | end | ||
14 | |||
15 | local conditions = { | ||
16 | spell_on = function () | ||
17 | return vim.wo.spell | ||
18 | end, | ||
19 | filetype_is_tex = function() | ||
20 | return vim.bo.filetype == "tex" | ||
21 | end | ||
22 | } | ||
23 | |||
24 | -- https://www.reddit.com/r/neovim/comments/u2uc4p/your_lualine_custom_features/i4muvp6/ | ||
25 | -- override 'encoding': don't display if encoding is utf-8. | ||
26 | local encoding = function() | ||
27 | local ret, _ = vim.bo.fenc:gsub("^utf%-8$", "") | ||
28 | return ret | ||
29 | end | ||
30 | |||
31 | -- fileformat: don't display if &ff is unix. | ||
32 | local fileformat = function() | ||
33 | local ret, _ = vim.bo.fileformat:gsub("^unix$", "") | ||
34 | return ret | ||
35 | end | ||
36 | |||
37 | require("lualine").setup({ | ||
38 | options = { | ||
39 | icons_enabled = true, | ||
40 | theme = "catppuccin", | ||
41 | section_separators = { left = '', right = '' }, | ||
42 | component_separators = { left = '', right = '' }, | ||
43 | }, | ||
44 | sections = { | ||
45 | lualine_a = {{'mode', fmt = string.lower}}, | ||
46 | lualine_b = {'branch', | ||
47 | { | ||
48 | 'diff', | ||
49 | diff_color= { | ||
50 | added = { fg = 'LightGreen' }, | ||
51 | modified = { fg = 'LightBlue' }, | ||
52 | removed = { fg = 'LightRed' }, | ||
53 | } | ||
54 | }, | ||
55 | { | ||
56 | lualine_spell, | ||
57 | cond = conditions.spell_on, | ||
58 | }}, | ||
59 | lualine_c = {'filename'}, | ||
60 | lualine_x = {encoding, fileformat, 'filetype'}, | ||
61 | lualine_y = {'progress'}, | ||
62 | lualine_z = { | ||
63 | 'location', { | ||
64 | 'diagnostics', | ||
65 | sources = {'nvim_diagnostic'}, | ||
66 | sections = {'error', 'warn', 'info', 'hint'}, | ||
67 | symbols = {error = 'e', warn = 'w', info = 'i', hint = 'h'} | ||
68 | } | ||
69 | } | ||
70 | }, | ||
71 | inactive_sections = { | ||
72 | lualine_a = {}, | ||
73 | lualine_b = {}, | ||
74 | lualine_c = {'filename'}, | ||
75 | lualine_x = {}, | ||
76 | lualine_y = {}, | ||
77 | lualine_z = {} | ||
78 | }, | ||
79 | tabline = {}, | ||
80 | extensions = {} | ||
81 | |||
82 | }) | ||
83 | end, | ||
84 | } | ||
diff --git a/.config/nvim/lua/plugins/misc.lua b/.config/nvim/lua/plugins/misc.lua new file mode 100644 index 0000000..f99051e --- /dev/null +++ b/.config/nvim/lua/plugins/misc.lua | |||
@@ -0,0 +1,83 @@ | |||
1 | return { | ||
2 | { | ||
3 | "numToStr/Comment.nvim", | ||
4 | lazy = false, | ||
5 | opts = {}, | ||
6 | }, | ||
7 | { | ||
8 | "godlygeek/tabular", | ||
9 | lazy = false, | ||
10 | }, | ||
11 | { | ||
12 | "matze/vim-move" | ||
13 | }, | ||
14 | { | ||
15 | "ggandor/leap.nvim", | ||
16 | lazy = false, | ||
17 | init = function() | ||
18 | local map = require("helpers.keys").map | ||
19 | |||
20 | map({ "n", "v" }, '`', '<Plug>(leap-forward)', "leap forward") | ||
21 | map({ "n", "v" }, '<Leader>`', '<Plug>(leap-backward)', "leap backward") | ||
22 | end, | ||
23 | opts = { | ||
24 | case_insensitive = true, | ||
25 | substitute_chars = { ['\r'] = '¬' } | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "wellle/targets.vim" | ||
30 | }, | ||
31 | { | ||
32 | "monaqa/dial.nvim", | ||
33 | init = function() | ||
34 | local augend = require("dial.augend") | ||
35 | require("dial.config").augends:register_group { | ||
36 | -- default augends used when no group name is specified | ||
37 | default = { | ||
38 | augend.integer.alias.decimal, -- nonnegative decimal number (0, 1, 2, 3, ...) | ||
39 | augend.integer.alias.hex, -- nonnegative hex number (0x01, 0x1a1f, etc.) | ||
40 | augend.date.alias["%Y/%m/%d"], -- date (2022/02/19, etc.) | ||
41 | augend.date.alias["%Y-%m-%d"], | ||
42 | augend.semver.alias.semver, | ||
43 | augend.constant.new { | ||
44 | elements = { "and", "or" }, | ||
45 | word = true, -- if false, "sand" is incremented into "sor", "doctor" into "doctand", etc. | ||
46 | cyclic = true, -- "or" is incremented into "and". | ||
47 | }, | ||
48 | augend.constant.new { | ||
49 | elements = { "&&", "||" }, | ||
50 | word = false, | ||
51 | cyclic = true, | ||
52 | }, | ||
53 | }, | ||
54 | } | ||
55 | local map = require("helpers.keys").map | ||
56 | map("n", "<C-a>", require("dial.map").inc_normal(), "dial: increment") | ||
57 | map("n", "<C-x>", require("dial.map").dec_normal(), "dial: decrement") | ||
58 | map("v", "<C-a>", require("dial.map").inc_visual(), "dial: visual increment") | ||
59 | map("v", "<C-x>", require("dial.map").dec_visual(), "dial: visual decrement") | ||
60 | end, | ||
61 | }, | ||
62 | { | ||
63 | "kylechui/nvim-surround", | ||
64 | version = "*", -- Use for stability; omit to use `main` branch for the latest features | ||
65 | event = "VeryLazy", | ||
66 | config = function() | ||
67 | require("nvim-surround").setup({}) | ||
68 | end | ||
69 | }, | ||
70 | { | ||
71 | "windwp/nvim-autopairs", | ||
72 | event = "InsertEnter", | ||
73 | opts = { | ||
74 | disable_filetype = { "TelescopePrompt" }, | ||
75 | }, | ||
76 | init = function() | ||
77 | local Rule = require('nvim-autopairs.rule') | ||
78 | local npairs = require('nvim-autopairs') | ||
79 | |||
80 | npairs.add_rule(Rule('%"', '%"', "remind")) | ||
81 | end | ||
82 | }, | ||
83 | } | ||
diff --git a/.config/nvim/lua/plugins/nvim-tree.lua b/.config/nvim/lua/plugins/nvim-tree.lua new file mode 100644 index 0000000..a2d4532 --- /dev/null +++ b/.config/nvim/lua/plugins/nvim-tree.lua | |||
@@ -0,0 +1,40 @@ | |||
1 | return { | ||
2 | { | ||
3 | "nvim-tree/nvim-tree.lua", | ||
4 | lazy = false, | ||
5 | dependencies = { | ||
6 | "nvim-tree/nvim-web-devicons", | ||
7 | }, | ||
8 | opts = { | ||
9 | sort_by = "case_sensitive", | ||
10 | diagnostics = { | ||
11 | enable = false, | ||
12 | icons = { | ||
13 | hint = "❔", | ||
14 | info = "❕", | ||
15 | warning = "❗", | ||
16 | error = "❌", | ||
17 | } | ||
18 | }, | ||
19 | view = { | ||
20 | adaptive_size = true, | ||
21 | }, | ||
22 | renderer = { | ||
23 | group_empty = true, | ||
24 | }, | ||
25 | filters = { | ||
26 | dotfiles = true, | ||
27 | }, | ||
28 | }, | ||
29 | init = function() | ||
30 | vim.g.loaded_netrw = 1 | ||
31 | vim.g.loaded_netrwPlugin = 1 | ||
32 | |||
33 | local map = require("helpers.keys").map | ||
34 | |||
35 | map("n", "vt", "<cmd>NvimTreeToggle<cr>") | ||
36 | map("n", "vr", "<cmd>NvimTreeRefresh<cr>") | ||
37 | map("n", "vs", "<cmd>NvimTreeFindFile<cr>") | ||
38 | end, | ||
39 | }, | ||
40 | } | ||
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..ecea32b --- /dev/null +++ b/.config/nvim/lua/plugins/telescope.lua | |||
@@ -0,0 +1,45 @@ | |||
1 | return { | ||
2 | { | ||
3 | "nvim-telescope/telescope.nvim", | ||
4 | dependencies = { | ||
5 | "nvim-lua/plenary.nvim", | ||
6 | { | ||
7 | "nvim-telescope/telescope-fzf-native.nvim", | ||
8 | build = "make", | ||
9 | cond = vim.fn.executable("make") == 1 | ||
10 | }, | ||
11 | }, | ||
12 | config = function() | ||
13 | require('telescope').setup({ | ||
14 | extensions = { | ||
15 | fzf = { | ||
16 | fuzzy = true, -- false will only do exact matching | ||
17 | override_generic_sorter = true, | ||
18 | override_file_sorter = true, | ||
19 | case_mode = "smart_case", | ||
20 | } | ||
21 | } | ||
22 | }) | ||
23 | -- Enable telescope fzf native, if installed | ||
24 | pcall(require("telescope").load_extension, "fzf") | ||
25 | |||
26 | local map = require("helpers.keys").map | ||
27 | |||
28 | map("n", "<leader>fr", require("telescope.builtin").oldfiles, "recently opened") | ||
29 | map("n", "<leader><space>", require("telescope.builtin").buffers, "open buffers") | ||
30 | map("n", "<leader>/", function() | ||
31 | -- You can pass additional configuration to telescope to change theme, layout, etc. | ||
32 | require("telescope.builtin").current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({ | ||
33 | winblend = 10, | ||
34 | previewer = false, | ||
35 | })) | ||
36 | end, "search in current buffer") | ||
37 | |||
38 | map("n", "<leader>sf", require("telescope.builtin").find_files, "files") | ||
39 | map("n", "<leader>sh", require("telescope.builtin").help_tags, "help") | ||
40 | map("n", "<leader>sw", require("telescope.builtin").grep_string, "current word") | ||
41 | map("n", "<leader>sg", require("telescope.builtin").live_grep, "grep") | ||
42 | map("n", "<leader>sd", require("telescope.builtin").diagnostics, "diagnostics") | ||
43 | end, | ||
44 | }, | ||
45 | } | ||
diff --git a/.config/nvim/lua/plugins/tpope.lua b/.config/nvim/lua/plugins/tpope.lua new file mode 100644 index 0000000..5396303 --- /dev/null +++ b/.config/nvim/lua/plugins/tpope.lua | |||
@@ -0,0 +1,11 @@ | |||
1 | return { | ||
2 | { | ||
3 | "tpope/vim-repeat" | ||
4 | }, | ||
5 | { | ||
6 | "tpope/vim-unimpaired" | ||
7 | }, | ||
8 | { | ||
9 | "tpope/vim-characterize" | ||
10 | }, | ||
11 | } | ||
diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..c454b48 --- /dev/null +++ b/.config/nvim/lua/plugins/treesitter.lua | |||
@@ -0,0 +1,73 @@ | |||
1 | return { | ||
2 | { | ||
3 | "nvim-treesitter/nvim-treesitter", | ||
4 | build = function() | ||
5 | pcall(require("nvim-treesitter.install").update({ with_sync = true })) | ||
6 | end, | ||
7 | dependencies = { | ||
8 | "nvim-treesitter/nvim-treesitter-textobjects", | ||
9 | }, | ||
10 | config = function() | ||
11 | require("nvim-treesitter.configs").setup({ | ||
12 | ensure_installed = { "bash", "bibtex", "c", "cpp", "css", "fish", "http", "latex", "lua", "python", "rust", "vim" }, | ||
13 | ignore_install = { }, | ||
14 | auto_install = true, | ||
15 | sync_install = false, | ||
16 | highlight = { | ||
17 | enable = true, | ||
18 | disable = { "latex" }, | ||
19 | additional_vim_regex_highlighting = false, | ||
20 | }, | ||
21 | indent = { | ||
22 | enable = true, | ||
23 | disable = { "python" } | ||
24 | }, | ||
25 | incremental_selection = { | ||
26 | enable = true, | ||
27 | keymaps = { | ||
28 | init_selection = "gnn", | ||
29 | node_incremental = "grn", | ||
30 | scope_incremental = "grc", | ||
31 | node_decremental = "grm", | ||
32 | }, | ||
33 | }, | ||
34 | textobjects = { | ||
35 | select = { | ||
36 | enable = true, | ||
37 | lookahead = true, -- automatically jump forward to textobj, similar to targets.vim | ||
38 | keymaps = { | ||
39 | -- you can use the capture groups defined in textobjects.scm | ||
40 | ["aa"] = "@parameter.outer", | ||
41 | ["ia"] = "@parameter.inner", | ||
42 | ["af"] = "@function.outer", | ||
43 | ["if"] = "@function.inner", | ||
44 | ["ac"] = "@class.outer", | ||
45 | ["ic"] = "@class.inner", | ||
46 | }, | ||
47 | }, | ||
48 | move = { | ||
49 | enable = true, | ||
50 | set_jumps = true, -- whether to set jumps in the jumplist | ||
51 | goto_next_start = { | ||
52 | ["]m"] = "@function.outer", | ||
53 | ["]]"] = "@class.outer", | ||
54 | }, | ||
55 | goto_next_end = { | ||
56 | ["]M"] = "@function.outer", | ||
57 | ["]["] = "@class.outer", | ||
58 | }, | ||
59 | goto_previous_start = { | ||
60 | ["[m"] = "@function.outer", | ||
61 | ["[["] = "@class.outer", | ||
62 | }, | ||
63 | goto_previous_end = { | ||
64 | ["[M"] = "@function.outer", | ||
65 | ["[]"] = "@class.outer", | ||
66 | }, | ||
67 | }, | ||
68 | }, | ||
69 | modules = { }, | ||
70 | }) | ||
71 | end, | ||
72 | }, | ||
73 | } | ||
diff --git a/.config/nvim/lua/plugins/trouble.lua b/.config/nvim/lua/plugins/trouble.lua new file mode 100644 index 0000000..6d72bd9 --- /dev/null +++ b/.config/nvim/lua/plugins/trouble.lua | |||
@@ -0,0 +1,14 @@ | |||
1 | return { | ||
2 | "folke/trouble.nvim", | ||
3 | dependencies = { "nvim-tree/nvim-web-devicons" }, | ||
4 | opts = {}, | ||
5 | config = function() | ||
6 | local map = require("helpers.keys").map | ||
7 | map("n", "<leader>xx", function() require("trouble").open() end, "trouble: open") | ||
8 | map("n", "<leader>xw", function() require("trouble").open("workspace_diagnostics") end, "trouble: open workspace diagnostics") | ||
9 | map("n", "<leader>xd", function() require("trouble").open("document_diagnostics") end, "trouble: open document diagnostics") | ||
10 | map("n", "<leader>xq", function() require("trouble").open("quickfix") end, "trouble: open quickfix") | ||
11 | map("n", "<leader>xl", function() require("trouble").open("loclist") end, "trouble: open loclist") | ||
12 | map("n", "gR", function() require("trouble").open("lsp_references") end, "trouble: open lsp references") | ||
13 | end, | ||
14 | } | ||
diff --git a/.config/nvim/lua/plugins/turkish-deasciifier.lua b/.config/nvim/lua/plugins/turkish-deasciifier.lua new file mode 100644 index 0000000..c39a35d --- /dev/null +++ b/.config/nvim/lua/plugins/turkish-deasciifier.lua | |||
@@ -0,0 +1,24 @@ | |||
1 | return { | ||
2 | { | ||
3 | "yigitsever/turkish-deasciifier.vim", | ||
4 | init = function() | ||
5 | local map = require("helpers.keys").map | ||
6 | |||
7 | -- brute force deasciify everything | ||
8 | map({ "n", "x" }, "<leader>tc", "TurkishDeasciifyForce()", "force turkish characters", | ||
9 | { expr = true }) | ||
10 | map("n", "<leader>tctc", "TurkishDeasciifyForce() .. '_'", "force turkish characters eol", | ||
11 | { expr = true }) | ||
12 | |||
13 | -- use turkish-mode to selectively deasciify | ||
14 | map({ "n", "x" }, "<Leader>tr", "TurkishDeasciify()", "infer turkish characters", { expr = true }) | ||
15 | map("n", "<Leader>trtr", "TurkishDeasciify() .. '_'", "infer turkish characters eol", | ||
16 | { expr = true }) | ||
17 | |||
18 | -- ascii everything | ||
19 | map({ "n", "x" }, "<Leader>rt", "TurkishAsciify()", "remove turkish characters", { expr = true }) | ||
20 | map("n", "<Leader>rtrt", "TurkishAsciify() .. '_'", "remove turkish characters eol", | ||
21 | { expr = true }) | ||
22 | end, | ||
23 | } | ||
24 | } | ||
diff --git a/.config/nvim/lua/plugins/vimwiki.lua b/.config/nvim/lua/plugins/vimwiki.lua new file mode 100644 index 0000000..11d4c2b --- /dev/null +++ b/.config/nvim/lua/plugins/vimwiki.lua | |||
@@ -0,0 +1,28 @@ | |||
1 | return { | ||
2 | { | ||
3 | "vimwiki/vimwiki", | ||
4 | init = function () | ||
5 | vim.g.vimwiki_list = { | ||
6 | { | ||
7 | path = '/home/yigit/nextcloud/personal_wiki/text', | ||
8 | path_html = '/home/yigit/nextcloud/personal_wiki/html', | ||
9 | auto_generate_tags = 1, | ||
10 | automatic_nested_syntaxes = 1, | ||
11 | template_path = '/home/yigit/nextcloud/personal_wiki/templates', | ||
12 | template_default = 'default_template', | ||
13 | template_ext = '.html', | ||
14 | auto_export = 1, | ||
15 | auto_tags = 1 | ||
16 | } | ||
17 | } | ||
18 | vim.g.vimwiki_hl_headers = 1 | ||
19 | |||
20 | local map = require("helpers.keys").map | ||
21 | |||
22 | --toggle checkmarks | ||
23 | map('n', '<leader>v', '<Plug>VimwikiToggleListItem', "vimwiki: toggle checkmark") | ||
24 | -- add/increase header level | ||
25 | map('n', '<leader>a', '<Plug>VimwikiAddHeaderLevel', "vimwiki: add header level") | ||
26 | end, | ||
27 | }, | ||
28 | } | ||
diff --git a/.config/nvim/lua/plugins/which-key.lua b/.config/nvim/lua/plugins/which-key.lua new file mode 100644 index 0000000..21048b9 --- /dev/null +++ b/.config/nvim/lua/plugins/which-key.lua | |||
@@ -0,0 +1,14 @@ | |||
1 | return { | ||
2 | { | ||
3 | "folke/which-key.nvim", | ||
4 | event = "VeryLazy", | ||
5 | init = function() | ||
6 | vim.o.timeout = true | ||
7 | vim.o.timeoutlen = 500 | ||
8 | end, | ||
9 | config = function() | ||
10 | local wk = require("which-key") | ||
11 | wk.setup() | ||
12 | end, | ||
13 | } | ||
14 | } | ||