diff options
Diffstat (limited to 'vim/lua')
| -rw-r--r-- | vim/lua/chadrc.lua | 47 | ||||
| -rw-r--r-- | vim/lua/configs/conform.lua | 15 | ||||
| -rw-r--r-- | vim/lua/configs/lazy.lua | 47 | ||||
| -rw-r--r-- | vim/lua/configs/lspconfig.lua | 23 | ||||
| -rw-r--r-- | vim/lua/configs/telescope.lua | 48 | ||||
| -rw-r--r-- | vim/lua/configs/treesitter.lua | 62 | ||||
| -rw-r--r-- | vim/lua/mappings.lua | 170 | ||||
| -rw-r--r-- | vim/lua/options.lua | 20 | ||||
| -rw-r--r-- | vim/lua/plugins/init.lua | 218 |
9 files changed, 650 insertions, 0 deletions
diff --git a/vim/lua/chadrc.lua b/vim/lua/chadrc.lua new file mode 100644 index 0000000..aa0d78c --- /dev/null +++ b/vim/lua/chadrc.lua | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | -- This file needs to have same structure as nvconfig.lua | ||
| 2 | -- https://github.com/NvChad/NvChad/blob/v2.5/lua/nvconfig.lua | ||
| 3 | |||
| 4 | ---@type ChadrcConfig | ||
| 5 | local M = {} | ||
| 6 | |||
| 7 | M.ui = { | ||
| 8 | theme = "onedark", | ||
| 9 | |||
| 10 | -- hl_override = { | ||
| 11 | -- Comment = { italic = true }, | ||
| 12 | -- ["@comment"] = { italic = true }, | ||
| 13 | -- }, | ||
| 14 | tabufline = { | ||
| 15 | enabled = true, | ||
| 16 | }, | ||
| 17 | } | ||
| 18 | |||
| 19 | -- For tabufline | ||
| 20 | if M.ui.tabufline.enabled then | ||
| 21 | vim.keymap.set("n", "<C-c>", function() | ||
| 22 | local bufnrs = vim.tbl_filter(function(b) | ||
| 23 | if 1 ~= vim.fn.buflisted(b) then | ||
| 24 | return false | ||
| 25 | else | ||
| 26 | return true | ||
| 27 | end | ||
| 28 | end, vim.api.nvim_list_bufs()) | ||
| 29 | if #bufnrs == 1 then | ||
| 30 | vim.cmd("silent quit!") | ||
| 31 | else | ||
| 32 | require("nvchad.tabufline").close_buffer() | ||
| 33 | end | ||
| 34 | end, { desc = "buffer close" }) | ||
| 35 | for i = 1, 9, 1 do | ||
| 36 | vim.keymap.set("n", string.format("<A-%s>", i), function() | ||
| 37 | vim.api.nvim_set_current_buf(vim.t.bufs[i]) | ||
| 38 | end) | ||
| 39 | end | ||
| 40 | vim.keymap.set("n", "<A-h>", function() require("nvchad.tabufline").move_buf(-1) end) | ||
| 41 | vim.keymap.set("n", "<A-l>", function() require("nvchad.tabufline").move_buf(1) end) | ||
| 42 | vim.keymap.set("n", "<A-H>", function() vim.cmd("tabprevious") end) | ||
| 43 | vim.keymap.set("n", "<A-L>", function() vim.cmd("tabnext") end) | ||
| 44 | end | ||
| 45 | |||
| 46 | |||
| 47 | return M | ||
diff --git a/vim/lua/configs/conform.lua b/vim/lua/configs/conform.lua new file mode 100644 index 0000000..a000447 --- /dev/null +++ b/vim/lua/configs/conform.lua | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | local options = { | ||
| 2 | formatters_by_ft = { | ||
| 3 | lua = { "stylua" }, | ||
| 4 | -- css = { "prettier" }, | ||
| 5 | -- html = { "prettier" }, | ||
| 6 | }, | ||
| 7 | |||
| 8 | -- format_on_save = { | ||
| 9 | -- -- These options will be passed to conform.format() | ||
| 10 | -- timeout_ms = 500, | ||
| 11 | -- lsp_fallback = true, | ||
| 12 | -- }, | ||
| 13 | } | ||
| 14 | |||
| 15 | require("conform").setup(options) | ||
diff --git a/vim/lua/configs/lazy.lua b/vim/lua/configs/lazy.lua new file mode 100644 index 0000000..cd170bd --- /dev/null +++ b/vim/lua/configs/lazy.lua | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | return { | ||
| 2 | defaults = { lazy = true }, | ||
| 3 | install = { colorscheme = { "nvchad" } }, | ||
| 4 | |||
| 5 | ui = { | ||
| 6 | icons = { | ||
| 7 | ft = "", | ||
| 8 | lazy = " ", | ||
| 9 | loaded = "", | ||
| 10 | not_loaded = "", | ||
| 11 | }, | ||
| 12 | }, | ||
| 13 | |||
| 14 | performance = { | ||
| 15 | rtp = { | ||
| 16 | disabled_plugins = { | ||
| 17 | "2html_plugin", | ||
| 18 | "tohtml", | ||
| 19 | "getscript", | ||
| 20 | "getscriptPlugin", | ||
| 21 | "gzip", | ||
| 22 | "logipat", | ||
| 23 | "netrw", | ||
| 24 | "netrwPlugin", | ||
| 25 | "netrwSettings", | ||
| 26 | "netrwFileHandlers", | ||
| 27 | "matchit", | ||
| 28 | "tar", | ||
| 29 | "tarPlugin", | ||
| 30 | "rrhelper", | ||
| 31 | "spellfile_plugin", | ||
| 32 | "vimball", | ||
| 33 | "vimballPlugin", | ||
| 34 | "zip", | ||
| 35 | "zipPlugin", | ||
| 36 | "tutor", | ||
| 37 | "rplugin", | ||
| 38 | "syntax", | ||
| 39 | "synmenu", | ||
| 40 | "optwin", | ||
| 41 | "compiler", | ||
| 42 | "bugreport", | ||
| 43 | "ftplugin", | ||
| 44 | }, | ||
| 45 | }, | ||
| 46 | }, | ||
| 47 | } | ||
diff --git a/vim/lua/configs/lspconfig.lua b/vim/lua/configs/lspconfig.lua new file mode 100644 index 0000000..a73657a --- /dev/null +++ b/vim/lua/configs/lspconfig.lua | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | -- EXAMPLE | ||
| 2 | local on_attach = require("nvchad.configs.lspconfig").on_attach | ||
| 3 | local on_init = require("nvchad.configs.lspconfig").on_init | ||
| 4 | local capabilities = require("nvchad.configs.lspconfig").capabilities | ||
| 5 | |||
| 6 | local lspconfig = require "lspconfig" | ||
| 7 | local servers = { "html", "cssls" } | ||
| 8 | |||
| 9 | -- lsps with default config | ||
| 10 | for _, lsp in ipairs(servers) do | ||
| 11 | lspconfig[lsp].setup { | ||
| 12 | on_attach = on_attach, | ||
| 13 | on_init = on_init, | ||
| 14 | capabilities = capabilities, | ||
| 15 | } | ||
| 16 | end | ||
| 17 | |||
| 18 | -- typescript | ||
| 19 | lspconfig.tsserver.setup { | ||
| 20 | on_attach = on_attach, | ||
| 21 | on_init = on_init, | ||
| 22 | capabilities = capabilities, | ||
| 23 | } | ||
diff --git a/vim/lua/configs/telescope.lua b/vim/lua/configs/telescope.lua new file mode 100644 index 0000000..73c64e5 --- /dev/null +++ b/vim/lua/configs/telescope.lua | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | return { | ||
| 2 | defaults = { | ||
| 3 | mappings = { | ||
| 4 | i = { | ||
| 5 | -- ["<c-j>"] = "move_selection_next", | ||
| 6 | -- ["<c-k>"] = "move_selection_previous", | ||
| 7 | ["<C-w>"] = require("telescope.actions.layout").toggle_preview, | ||
| 8 | ["<C-u>"] = false, | ||
| 9 | }, | ||
| 10 | }, | ||
| 11 | layout_config = { | ||
| 12 | horizontal = { | ||
| 13 | prompt_position = "bottom", | ||
| 14 | }, | ||
| 15 | vertical = { height = 0.8 }, | ||
| 16 | -- other layout configuration here | ||
| 17 | preview_cutoff = 0, | ||
| 18 | }, | ||
| 19 | }, | ||
| 20 | pickers = { | ||
| 21 | buffers = { | ||
| 22 | show_all_buffers = true, | ||
| 23 | sort_lastused = true, | ||
| 24 | theme = "dropdown", | ||
| 25 | previewer = false, | ||
| 26 | mappings = { | ||
| 27 | i = { | ||
| 28 | ["<c-d>"] = "delete_buffer", | ||
| 29 | }, | ||
| 30 | n = { | ||
| 31 | ["<c-d>"] = "delete_buffer", | ||
| 32 | } | ||
| 33 | } | ||
| 34 | }, | ||
| 35 | |||
| 36 | }, | ||
| 37 | extensions_list = {}, | ||
| 38 | extensions = { | ||
| 39 | aerial = { | ||
| 40 | -- Display symbols as <root>.<parent>.<symbol> | ||
| 41 | show_nesting = { | ||
| 42 | ["_"] = false, -- This key will be the default | ||
| 43 | json = true, -- You can set the option for specific filetypes | ||
| 44 | yaml = true, | ||
| 45 | }, | ||
| 46 | }, | ||
| 47 | }, | ||
| 48 | } | ||
diff --git a/vim/lua/configs/treesitter.lua b/vim/lua/configs/treesitter.lua new file mode 100644 index 0000000..8375d5b --- /dev/null +++ b/vim/lua/configs/treesitter.lua | |||
| @@ -0,0 +1,62 @@ | |||
| 1 | return { | ||
| 2 | -- Add languages to be installed here that you want installed for treesitter | ||
| 3 | ensure_installed = { 'bash', 'c', 'html', 'css', 'lua', 'python', 'rust', 'tsx', 'typescript', 'vimdoc', 'vim' }, | ||
| 4 | |||
| 5 | -- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!) | ||
| 6 | auto_install = true, | ||
| 7 | |||
| 8 | -- highlight = { enable = true }, | ||
| 9 | incremental_selection = { | ||
| 10 | enable = true, | ||
| 11 | keymaps = { | ||
| 12 | init_selection = '<c-space>', | ||
| 13 | node_incremental = '<c-space>', | ||
| 14 | scope_incremental = '<c-s>', | ||
| 15 | node_decremental = '<M-space>', | ||
| 16 | }, | ||
| 17 | }, | ||
| 18 | textobjects = { | ||
| 19 | select = { | ||
| 20 | enable = true, | ||
| 21 | lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim | ||
| 22 | keymaps = { | ||
| 23 | -- You can use the capture groups defined in textobjects.scm | ||
| 24 | ['aa'] = '@parameter.outer', | ||
| 25 | ['ia'] = '@parameter.inner', | ||
| 26 | ['af'] = '@function.outer', | ||
| 27 | ['if'] = '@function.inner', | ||
| 28 | ['ac'] = '@class.outer', | ||
| 29 | ['ic'] = '@class.inner', | ||
| 30 | }, | ||
| 31 | }, | ||
| 32 | move = { | ||
| 33 | enable = true, | ||
| 34 | set_jumps = true, -- whether to set jumps in the jumplist | ||
| 35 | goto_next_start = { | ||
| 36 | [']f'] = '@function.outer', | ||
| 37 | [']c'] = '@class.outer', | ||
| 38 | }, | ||
| 39 | goto_next_end = { | ||
| 40 | [']F'] = '@function.outer', | ||
| 41 | [']C'] = '@class.outer', | ||
| 42 | }, | ||
| 43 | goto_previous_start = { | ||
| 44 | ['[f'] = '@function.outer', | ||
| 45 | ['[c'] = '@class.outer', | ||
| 46 | }, | ||
| 47 | goto_previous_end = { | ||
| 48 | ['[F'] = '@function.outer', | ||
| 49 | ['[C'] = '@class.outer', | ||
| 50 | }, | ||
| 51 | }, | ||
| 52 | swap = { | ||
| 53 | enable = true, | ||
| 54 | swap_next = { | ||
| 55 | ['<leader>a'] = '@parameter.inner', | ||
| 56 | }, | ||
| 57 | swap_previous = { | ||
| 58 | ['<leader>A'] = '@parameter.inner', | ||
| 59 | }, | ||
| 60 | }, | ||
| 61 | }, | ||
| 62 | } | ||
diff --git a/vim/lua/mappings.lua b/vim/lua/mappings.lua new file mode 100644 index 0000000..f6ef8c4 --- /dev/null +++ b/vim/lua/mappings.lua | |||
| @@ -0,0 +1,170 @@ | |||
| 1 | -- require "nvchad.mappings" | ||
| 2 | |||
| 3 | -- add yours here | ||
| 4 | |||
| 5 | local map = vim.keymap.set | ||
| 6 | |||
| 7 | map("i", "jk", "<ESC>") | ||
| 8 | vim.cmd("command! W execute 'SudaWrite %'") | ||
| 9 | |||
| 10 | -- map({ "n", "i", "v" }, "<C-s>", "<cmd> w <cr>") | ||
| 11 | |||
| 12 | map("n", "<Esc>", "<cmd>noh<CR>", { desc = "general clear highlights" }) | ||
| 13 | |||
| 14 | -- map("n", "<C-c>", "<cmd>%y+<CR>", { desc = "file copy whole" }) | ||
| 15 | |||
| 16 | -- map("n", "<leader>n", "<cmd>set nu!<CR>", { desc = "toggle line number" }) | ||
| 17 | -- map("n", "<leader>rn", "<cmd>set rnu!<CR>", { desc = "toggle relative number" }) | ||
| 18 | map("n", "<leader>ch", "<cmd>NvCheatsheet<CR>", { desc = "toggle nvcheatsheet" }) | ||
| 19 | |||
| 20 | map("n", "<leader>F", function() | ||
| 21 | require("conform").format { lsp_fallback = true } | ||
| 22 | end, { desc = "format files" }) | ||
| 23 | |||
| 24 | -- global lsp mappings | ||
| 25 | map("n", "<leader>ds", vim.diagnostic.setloclist, { desc = "lsp diagnostic loclist" }) | ||
| 26 | |||
| 27 | -- tabufline | ||
| 28 | map("n", "<tab>", function() | ||
| 29 | require("nvchad.tabufline").next() | ||
| 30 | end, { desc = "buffer goto next" }) | ||
| 31 | |||
| 32 | map("n", "<S-tab>", function() | ||
| 33 | require("nvchad.tabufline").prev() | ||
| 34 | end, { desc = "buffer goto prev" }) | ||
| 35 | |||
| 36 | map("n", "<leader>x", function() | ||
| 37 | require("nvchad.tabufline").close_buffer() | ||
| 38 | end, { desc = "buffer close" }) | ||
| 39 | |||
| 40 | -- Comment | ||
| 41 | map("n", "<leader>/", "gcc", { desc = "comment toggle", remap = true }) | ||
| 42 | map("v", "<leader>/", "gc", { desc = "comment toggle", remap = true }) | ||
| 43 | |||
| 44 | -- nvimtree | ||
| 45 | map("n", "<C-n>", "<cmd>NvimTreeToggle<CR>", { desc = "nvimtree toggle window" }) | ||
| 46 | map("n", "<leader>nf", "<cmd>NvimTreeFocus<CR>", { desc = "nvimtree focus window" }) | ||
| 47 | |||
| 48 | -- telescope | ||
| 49 | map("n", "<leader>f", "<cmd>Telescope oldfiles<CR>", { desc = "telescope find oldfiles" }) | ||
| 50 | map("n", "<leader>b", "<cmd>Telescope buffers<CR>", { desc = "telescope find buffers" }) | ||
| 51 | map("n", "<leader>/", "<cmd>Telescope current_buffer_fuzzy_find<CR>", { desc = "telescope find in current buffer" }) | ||
| 52 | map("n", "<leader>sf", "<cmd>Telescope find_files<cr>", { desc = "telescope find files" }) | ||
| 53 | map("n", "<leader>sF", "<cmd>Telescope find_files follow=true no_ignore=true hidden=true<CR>", | ||
| 54 | { desc = "telescope find all files" }) | ||
| 55 | map("n", "<leader>sg", "<cmd>Telescope live_grep<CR>", { desc = "telescope live grep" }) | ||
| 56 | |||
| 57 | map("n", "<leader>gf", "<cmd>Telescope git_files<CR>", { desc = "telescope git files" }) | ||
| 58 | map("n", "<leader>sH", "<cmd>Telescope help_tags<CR>", { desc = "telescope help page" }) | ||
| 59 | map("n", "<leader>tt", ":Telescope ", { desc = "telescope help page" }) | ||
| 60 | map('n', '<leader>sk', "<cmd>Telescope keymaps<CR>", { desc = 'telescope keymaps' }) | ||
| 61 | map("n", "<leader>pt", "<cmd>Telescope terms<CR>", { desc = "telescope pick hidden term" }) | ||
| 62 | |||
| 63 | vim.keymap.set('n', '<leader>ss', function() | ||
| 64 | local current_filetype = vim.bo.filetype | ||
| 65 | local cwd = os.getenv("HOME") .. '/snippets/' .. current_filetype | ||
| 66 | require('telescope.builtin').find_files { | ||
| 67 | prompt_title = 'Select a snippet for ' .. current_filetype, | ||
| 68 | cwd = cwd, | ||
| 69 | attach_mappings = function(prompt_bufnr, map) | ||
| 70 | local insert_selected_snippet = function() | ||
| 71 | local file = require('telescope.actions.state').get_selected_entry()[1] | ||
| 72 | local snippet_content = vim.fn.readfile(cwd .. "/" .. file) | ||
| 73 | require('telescope.actions').close(prompt_bufnr) | ||
| 74 | vim.api.nvim_put(snippet_content, '', false, true) | ||
| 75 | end | ||
| 76 | |||
| 77 | map('i', '<CR>', insert_selected_snippet) | ||
| 78 | map('n', '<CR>', insert_selected_snippet) | ||
| 79 | |||
| 80 | return true | ||
| 81 | end, | ||
| 82 | } | ||
| 83 | end, { desc = '[S]earch [S]nippets' }) | ||
| 84 | |||
| 85 | vim.keymap.set('n', '<leader>sn', function() | ||
| 86 | vim.ui.input({ prompt = 'Snippet Name: ' }, function(snippet_path) | ||
| 87 | local current_filetype | ||
| 88 | local snippet | ||
| 89 | if string.find(snippet_path, "/") then | ||
| 90 | current_filetype = string.match(snippet_path, "^(.-)/") | ||
| 91 | snippet = string.match(snippet_path, "/(.-)$") | ||
| 92 | else | ||
| 93 | current_filetype = vim.bo.filetype | ||
| 94 | snippet = snippet_path | ||
| 95 | end | ||
| 96 | local dir = os.getenv("HOME") .. '/snippets/' .. current_filetype | ||
| 97 | local path = dir .. '/' .. snippet | ||
| 98 | vim.cmd("!mkdir -p" .. dir) | ||
| 99 | vim.cmd("e " .. path) | ||
| 100 | vim.cmd("set filetype=" .. current_filetype) | ||
| 101 | vim.cmd("set filetype?") | ||
| 102 | end) | ||
| 103 | end, { desc = "Create a new snippet" }) | ||
| 104 | |||
| 105 | |||
| 106 | -- map("n", "<leader>ma", "<cmd>Telescope marks<CR>", { desc = "telescope find marks" }) | ||
| 107 | -- map("n", "<leader>cm", "<cmd>Telescope git_commits<CR>", { desc = "telescope git commits" }) | ||
| 108 | -- map("n", "<leader>gt", "<cmd>Telescope git_status<CR>", { desc = "telescope git status" }) | ||
| 109 | -- map("n", "<leader>th", "<cmd>Telescope themes<CR>", { desc = "telescope nvchad themes" }) | ||
| 110 | |||
| 111 | -- terminal | ||
| 112 | -- map("t", "<C-x>", "<C-\\><C-N>", { desc = "terminal escape terminal mode" }) | ||
| 113 | |||
| 114 | -- new terminals | ||
| 115 | map("n", "<leader><leader>h", function() require("nvchad.term").new { pos = "sp" } end, | ||
| 116 | { desc = "terminal new horizontal term" }) | ||
| 117 | map("n", "<leader>v", function() require("nvchad.term").new { pos = "vsp" } end, | ||
| 118 | { desc = "terminal new vertical window" }) | ||
| 119 | -- toggleable | ||
| 120 | map({ "n", "t" }, "<A-v>", function() require("nvchad.term").toggle { pos = "vsp", id = "vtoggleTerm" } end, | ||
| 121 | { desc = "terminal toggleable vertical term" }) | ||
| 122 | map({ "n", "t" }, "<A-t>", function() require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm" } end, | ||
| 123 | { desc = "terminal new horizontal term" }) | ||
| 124 | map({ "n", "t" }, "<A-i>", function() require("nvchad.term").toggle { pos = "float", id = "floatTerm" } end, | ||
| 125 | { desc = "terminal toggle floating term" }) | ||
| 126 | |||
| 127 | -- whichkey | ||
| 128 | map("n", "<leader>wK", "<cmd>WhichKey <CR>", { desc = "whichkey all keymaps" }) | ||
| 129 | |||
| 130 | map("n", "<leader>wk", function() | ||
| 131 | vim.cmd("WhichKey " .. vim.fn.input "WhichKey: ") | ||
| 132 | end, { desc = "whichkey query lookup" }) | ||
| 133 | |||
| 134 | -- blankline | ||
| 135 | map("n", "<leader>cc", function() | ||
| 136 | local config = { scope = {} } | ||
| 137 | config.scope.exclude = { language = {}, node_type = {} } | ||
| 138 | config.scope.include = { node_type = {} } | ||
| 139 | local node = require("ibl.scope").get(vim.api.nvim_get_current_buf(), config) | ||
| 140 | |||
| 141 | if node then | ||
| 142 | local start_row, _, end_row, _ = node:range() | ||
| 143 | if start_row ~= end_row then | ||
| 144 | vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start_row + 1, 0 }) | ||
| 145 | vim.api.nvim_feedkeys("_", "n", true) | ||
| 146 | end | ||
| 147 | end | ||
| 148 | end, { desc = "blankline jump to current context" }) | ||
| 149 | |||
| 150 | -- [[ Configure Obsidian.nvim ]] | ||
| 151 | map('n', "<leader>oo", ':Obsidian') | ||
| 152 | map('n', "<leader>ot", ':ObsidianTags<CR>') | ||
| 153 | map('n', "<leader>os", ':ObsidianSearch<CR>') | ||
| 154 | map('n', "<leader>oq", ':ObsidianQuickSwitch<CR>') | ||
| 155 | map('v', "<leader>on", ':ObsidianLinkNew<CR>') | ||
| 156 | |||
| 157 | -- vim.cmd("let g:mkdp_browser = 'surf'") | ||
| 158 | vim.cmd("let g:mkdp_browser = 'firefox'") | ||
| 159 | vim.g.mkdp_preview_options = { | ||
| 160 | mkit = { breaks = true }, | ||
| 161 | toc = { | ||
| 162 | containerClass = "toc", | ||
| 163 | format = 'function format(x, htmlencode) { return `<span>${htmlencode(x)}</span>`; }', | ||
| 164 | callback = "console.log('foo')", | ||
| 165 | } | ||
| 166 | } | ||
| 167 | |||
| 168 | -- [ Configure Hop ] | ||
| 169 | vim.keymap.set('n', "<space>", ':HopWord<CR>') | ||
| 170 | vim.keymap.set('n', '<C-.>', ':HopChar1<CR>') | ||
diff --git a/vim/lua/options.lua b/vim/lua/options.lua new file mode 100644 index 0000000..f9e6e7e --- /dev/null +++ b/vim/lua/options.lua | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | require "nvchad.options" | ||
| 2 | |||
| 3 | -- add yours here! | ||
| 4 | |||
| 5 | local o = vim.o | ||
| 6 | |||
| 7 | -- To enable cursorline! | ||
| 8 | o.cursorlineopt ='both' | ||
| 9 | |||
| 10 | -- Let cursor be line in insert mode | ||
| 11 | o.guicursor = "n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20" | ||
| 12 | |||
| 13 | -- Enable break indent | ||
| 14 | o.breakindent = true | ||
| 15 | |||
| 16 | -- To have a better completion experience | ||
| 17 | o.completeopt = 'menuone,noselect' | ||
| 18 | |||
| 19 | -- NOTE: You should make sure your terminal supports this | ||
| 20 | o.termguicolors = true | ||
diff --git a/vim/lua/plugins/init.lua b/vim/lua/plugins/init.lua new file mode 100644 index 0000000..132f1a2 --- /dev/null +++ b/vim/lua/plugins/init.lua | |||
| @@ -0,0 +1,218 @@ | |||
| 1 | return { | ||
| 2 | |||
| 3 | -- Detect tabstop and shiftwidth automatically | ||
| 4 | 'tpope/vim-sleuth', | ||
| 5 | |||
| 6 | -- Use sudo in command mode | ||
| 7 | { | ||
| 8 | 'lambdalisue/suda.vim', | ||
| 9 | cmd = { "SudaWrite" }, | ||
| 10 | }, | ||
| 11 | |||
| 12 | -- For focus mode | ||
| 13 | { | ||
| 14 | "Pocco81/true-zen.nvim", | ||
| 15 | cmd = { "TZAtaraxis", "TZMinimalist" }, | ||
| 16 | }, | ||
| 17 | |||
| 18 | -- hop.nvim: For quick jump | ||
| 19 | { | ||
| 20 | 'smoka7/hop.nvim', | ||
| 21 | lazy = false, | ||
| 22 | version = "*", | ||
| 23 | opts = { | ||
| 24 | keys = 'etovxqpdygfblzhckisuran' | ||
| 25 | }, | ||
| 26 | config = function() | ||
| 27 | require("hop").setup() | ||
| 28 | end | ||
| 29 | }, | ||
| 30 | |||
| 31 | { | ||
| 32 | "stevearc/conform.nvim", | ||
| 33 | -- event = 'BufWritePre', -- uncomment for format on save | ||
| 34 | config = function() | ||
| 35 | require "configs.conform" | ||
| 36 | end, | ||
| 37 | }, | ||
| 38 | |||
| 39 | { | ||
| 40 | -- Add indentation guides even on blank lines | ||
| 41 | 'lukas-reineke/indent-blankline.nvim', | ||
| 42 | -- See `:help ibl` | ||
| 43 | enabled = false, | ||
| 44 | main = "ibl", | ||
| 45 | opts = { | ||
| 46 | indent = { char = "┊" }, | ||
| 47 | whitespace = { highlight = { "Whitespace", "NonText" } }, | ||
| 48 | }, | ||
| 49 | }, | ||
| 50 | |||
| 51 | { | ||
| 52 | 'lewis6991/gitsigns.nvim', | ||
| 53 | opts = { | ||
| 54 | -- See `:help gitsigns.txt` | ||
| 55 | signs = { | ||
| 56 | add = { text = '+' }, | ||
| 57 | change = { text = '~' }, | ||
| 58 | delete = { text = '_' }, | ||
| 59 | topdelete = { text = '‾' }, | ||
| 60 | changedelete = { text = '~' }, | ||
| 61 | }, | ||
| 62 | on_attach = function(bufnr) | ||
| 63 | vim.keymap.set('n', '<leader>gp', require('gitsigns').prev_hunk, | ||
| 64 | { buffer = bufnr, desc = '[G]o to [P]revious Hunk' }) | ||
| 65 | vim.keymap.set('n', '<leader>gn', require('gitsigns').next_hunk, { buffer = bufnr, desc = '[G]o to [N]ext Hunk' }) | ||
| 66 | vim.keymap.set('n', '<leader>ph', require('gitsigns').preview_hunk, { buffer = bufnr, desc = '[P]review [H]unk' }) | ||
| 67 | vim.keymap.set('n', '<leader>hd', require('gitsigns').diffthis, { buffer = bufnr, desc = '[h]unk [d]iff' }) | ||
| 68 | vim.keymap.set('n', '<leader>hD', function() require('gitsigns').diffthis('~') end, | ||
| 69 | { buffer = bufnr, desc = '[h]unk [d]iff for ~' }) | ||
| 70 | vim.keymap.set('v', 'hr', ":Gitsigns reset_hunk<CR>", { buffer = bufnr, desc = '[h]unk [r]eset' }) | ||
| 71 | end, | ||
| 72 | }, | ||
| 73 | }, | ||
| 74 | |||
| 75 | { | ||
| 76 | "epwalsh/obsidian.nvim", | ||
| 77 | version = "*", -- recommended, use latest release instead of latest commit | ||
| 78 | lazy = true, | ||
| 79 | ft = "markdown", | ||
| 80 | -- Replace the above line with this if you only want to load obsidian.nvim for markdown files in your vault: | ||
| 81 | -- event = { | ||
| 82 | -- -- If you want to use the home shortcut '~' here you need to call 'vim.fn.expand'. | ||
| 83 | -- -- E.g. "BufReadPre " .. vim.fn.expand "~" .. "/my-vault/**.md" | ||
| 84 | -- "BufReadPre path/to/my-vault/**.md", | ||
| 85 | -- "BufNewFile path/to/my-vault/**.md", | ||
| 86 | -- }, | ||
| 87 | dependencies = { | ||
| 88 | -- Required. | ||
| 89 | "nvim-lua/plenary.nvim", | ||
| 90 | }, | ||
| 91 | opts = { | ||
| 92 | workspaces = { | ||
| 93 | { | ||
| 94 | name = "log", | ||
| 95 | path = "~/log", | ||
| 96 | }, | ||
| 97 | }, | ||
| 98 | completion = { | ||
| 99 | -- Set to false to disable completion. | ||
| 100 | nvim_cmp = true, | ||
| 101 | -- Trigger completion at 2 chars. | ||
| 102 | min_chars = 2, | ||
| 103 | }, | ||
| 104 | mapping = { | ||
| 105 | -- Toggle check-boxes. | ||
| 106 | ["<leader>oc"] = { | ||
| 107 | action = function() | ||
| 108 | return require("obsidian").util.toggle_checkbox() | ||
| 109 | end, | ||
| 110 | opts = { buffer = true }, | ||
| 111 | }, | ||
| 112 | -- Smart action depending on context, either follow link or toggle checkbox. | ||
| 113 | ["<cr>"] = { | ||
| 114 | action = function() | ||
| 115 | return require("obsidian").util.smart_action() | ||
| 116 | end, | ||
| 117 | opts = { buffer = true, expr = true }, | ||
| 118 | } | ||
| 119 | }, | ||
| 120 | -- see below for full list of options 👇 | ||
| 121 | note_id_func = function(title) | ||
| 122 | return title | ||
| 123 | -- Create note IDs in a Zettelkasten format with a timestamp and a suffix. | ||
| 124 | -- In this case a note with the title 'My new note' will be given an ID that looks | ||
| 125 | -- like '1657296016-my-new-note', and therefore the file name '1657296016-my-new-note.md' | ||
| 126 | -- local suffix = "" | ||
| 127 | -- title = title:gsub(" ", "-"):gsub("[^A-Za-z0-9-]", ""):lower() | ||
| 128 | -- if title ~= nil and title ~= "" then | ||
| 129 | -- -- If title is given, transform it into valid file name. | ||
| 130 | -- suffix = "-" .. title | ||
| 131 | -- else | ||
| 132 | -- -- If title is nil, just add 4 random uppercase letters to the suffix. | ||
| 133 | -- for _ = 1, 4 do | ||
| 134 | -- suffix = suffix .. string.char(math.random(65, 90)) | ||
| 135 | -- end | ||
| 136 | -- suffix = "-" .. title | ||
| 137 | -- end | ||
| 138 | -- return tostring(os.time()) .. suffix | ||
| 139 | end, | ||
| 140 | }, | ||
| 141 | }, | ||
| 142 | |||
| 143 | { | ||
| 144 | "iamcco/markdown-preview.nvim", | ||
| 145 | cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, | ||
| 146 | ft = { "markdown" }, | ||
| 147 | build = function() vim.fn["mkdp#util#install"]() end, | ||
| 148 | }, | ||
| 149 | |||
| 150 | { | ||
| 151 | "nvim-telescope/telescope.nvim", | ||
| 152 | opts = function() | ||
| 153 | return require "configs.telescope" | ||
| 154 | end, | ||
| 155 | }, | ||
| 156 | |||
| 157 | { | ||
| 158 | "nvim-treesitter/nvim-treesitter", | ||
| 159 | dependencies = { | ||
| 160 | 'nvim-treesitter/nvim-treesitter-textobjects', | ||
| 161 | }, | ||
| 162 | opts = function() | ||
| 163 | return require "configs.treesitter" | ||
| 164 | end, | ||
| 165 | }, | ||
| 166 | |||
| 167 | { | ||
| 168 | 'stevearc/aerial.nvim', | ||
| 169 | lazy = false, | ||
| 170 | event = { "BufReadPost", "BufWritePost", "BufNewFile" }, | ||
| 171 | opts = { | ||
| 172 | on_attach = function(bufnr) | ||
| 173 | -- Jump forwards/backwards with '{' and '}' | ||
| 174 | vim.keymap.set("n", "{", "<cmd>AerialPrev<CR>", { buffer = bufnr }) | ||
| 175 | vim.keymap.set("n", "}", "<cmd>AerialNext<CR>", { buffer = bufnr }) | ||
| 176 | vim.keymap.set("n", "<leader><leader>a", "<cmd>Telescope aerial<CR>") | ||
| 177 | vim.keymap.set("n", "<leader><leader>A", "<cmd>AerialToggle!left<CR>") | ||
| 178 | end, | ||
| 179 | }, | ||
| 180 | -- Optional dependencies | ||
| 181 | dependencies = { | ||
| 182 | "nvim-treesitter/nvim-treesitter", | ||
| 183 | "nvim-tree/nvim-web-devicons" | ||
| 184 | }, | ||
| 185 | }, | ||
| 186 | |||
| 187 | -- { | ||
| 188 | -- 'numToStr/Comment.nvim', | ||
| 189 | -- lazy = true, | ||
| 190 | -- opts = { | ||
| 191 | -- opleader = { | ||
| 192 | -- ---Line-comment keymap | ||
| 193 | -- line = '<C-/>', | ||
| 194 | -- ---Block-comment keymap | ||
| 195 | -- block = 'gb', | ||
| 196 | -- }, | ||
| 197 | -- } | ||
| 198 | -- }, | ||
| 199 | |||
| 200 | -- These are some examples, uncomment them if you want to see them work! | ||
| 201 | -- { | ||
| 202 | -- "neovim/nvim-lspconfig", | ||
| 203 | -- config = function() | ||
| 204 | -- require("nvchad.configs.lspconfig").defaults() | ||
| 205 | -- require "configs.lspconfig" | ||
| 206 | -- end, | ||
| 207 | -- }, | ||
| 208 | -- | ||
| 209 | -- { | ||
| 210 | -- "williamboman/mason.nvim", | ||
| 211 | -- opts = { | ||
| 212 | -- ensure_installed = { | ||
| 213 | -- "lua-language-server", "stylua", | ||
| 214 | -- "html-lsp", "css-lsp" , "prettier" | ||
| 215 | -- }, | ||
| 216 | -- }, | ||
| 217 | -- }, | ||
| 218 | } | ||