this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 175 lines 7.0 kB view raw
1local function qflist_is_open() 2 local is_open = false 3 for _, win in ipairs(vim.fn.getwininfo()) do 4 if win.quickfix == 1 then 5 is_open = true 6 break 7 end 8 end 9 return is_open 10end 11 12local function toggle_qf_list() 13 if qflist_is_open() then 14 vim.cmd("cclose") 15 else 16 vim.cmd("copen") 17 end 18end 19 20-- movement 21vim.keymap.set("n", "<C-h>", "<C-w>h") 22vim.keymap.set("n", "<C-j>", "<C-w>j") 23vim.keymap.set("n", "<C-k>", "<C-w>k") 24vim.keymap.set("n", "<C-l>", "<C-w>l") 25vim.keymap.set("n", "<M-l>", "5zl") 26vim.keymap.set("n", "<M-h>", "5zh") 27vim.keymap.set("n", "H", ":bp<cr>") 28vim.keymap.set("n", "L", ":bn<cr>") 29 30vim.keymap.set("n", "E", "<cmd>Neotree toggle reveal position=current<cr>") 31vim.keymap.set("n", "<leader>e", "<cmd>Neotree toggle reveal position=left<cr>") 32 33-- buffers 34vim.keymap.set("n", "<leader>BD", "<cmd>bufdo bd<cr>") 35vim.keymap.set("n", "<leader>BT", "<cmd>!trash %<cr>") 36-- Prevents the pane from being removed when closing a buffer 37vim.keymap.set("n", "<leader>d", "<cmd>bp<bar>sp<bar>bn<bar>bd<cr>") 38vim.keymap.set("n", "<leader>D", "<cmd>bp<bar>sp<bar>bn<bar>bd!<cr>") 39vim.keymap.set("n", "<leader>v/", "<cmd>vsp<cr>") 40vim.keymap.set("n", "<leader>v?", "<cmd>sp<cr>") 41 42-- tabs 43vim.keymap.set("n", "<C-t>", "<cmd>tabnext<cr>") 44vim.keymap.set("n", "<C-S-t>", "<cmd>tabprev<cr>") 45vim.keymap.set("n", "<leader>tn", "<cmd>tabnew<cr>") 46vim.keymap.set("n", "<leader>td", "<cmd>tabclose<cr>") 47 48-- comments 49vim.keymap.set("n", "<leader>/", "<cmd>CommentToggle<cr>") 50vim.keymap.set("v", "<leader>/", ":'<,'>CommentToggle<cr>") 51 52 53-- telescope 54vim.keymap.set("n", 55 "<leader>f", 56 "<cmd>Telescope find_files find_command=rg,--ignore,--hidden,--files,--iglob=!.git sort_mru=true<cr>" 57) 58vim.keymap.set("n", "<leader>b", "<cmd>Telescope buffers<cr>") 59vim.keymap.set("n", "<leader>sp", "<cmd>Telescope live_grep<cr>") 60vim.keymap.set("n", "<leader>sh", "<cmd>Telescope help_tags<cr>") 61vim.keymap.set("n", "<leader>sc", "<cmd>Telescope commands<cr>") 62 63vim.keymap.set("n", "<leader>h", "<cmd>noh<cr>") 64 65vim.keymap.set("n", "<leader>M", "<cmd>messages<cr>") 66 67vim.keymap.set("n", "<leader>T", ":term ") 68 69vim.keymap.set("n", "<leader>m", function() 70 vim.diagnostic.setqflist({ open = true, focus = true }) 71end) 72vim.keymap.set("n", "<leader>cc", toggle_qf_list) 73vim.keymap.set("n", "<leader>cn", "<cmd>cnext<cr>") 74vim.keymap.set("n", "<leader>cp", "<cmd>cprev<cr>") 75 76-- write/quit 77vim.keymap.set("n", "<leader>w", "<cmd>w<cr>") 78vim.keymap.set("n", "<leader>X", "<cmd>x<cr>") 79vim.keymap.set("n", "<leader>q", "<cmd>q<cr>") 80vim.keymap.set("n", "<leader>Q", "<cmd>qa<cr>") 81 82-- lsp 83vim.keymap.set("n", "[d", "<cmd>lua vim.diagnostic.goto_prev()<cr>") 84vim.keymap.set("n", "]d", "<cmd>lua vim.diagnostic.goto_next()<cr>") 85vim.keymap.set("n", "K", "<cmd>lua vim.lsp.buf.hover()<cr>") 86vim.keymap.set("n", "gs", "<cmd>Telescope lsp_document_symbols<cr>") 87vim.keymap.set("n", "gS", "<cmd>Telescope lsp_dynamic_workspace_symbols<cr>") 88vim.keymap.set("n", "gD", "<cmd>lua vim.lsp.buf.declaration()<cr>") 89vim.keymap.set("n", "gd", "<cmd>lua vim.lsp.buf.definition()<cr>") 90vim.keymap.set("n", "gi", "<cmd>lua vim.lsp.buf.implementation()<cr>") 91vim.keymap.set("n", "gr", "<cmd>lua vim.lsp.buf.references()<cr>") 92vim.keymap.set("n", "g.", "<cmd>lua vim.lsp.buf.code_action()<cr>") 93vim.keymap.set("n", "<leader>R", "<cmd>lua vim.lsp.buf.rename()<cr>") 94vim.keymap.set("n", "<leader>F", "<cmd>Format<CR>") 95 96-- trouble 97vim.keymap.set("n", "<leader>xx", "<cmd>Trouble diagnostics toggle<cr>", { desc = "Diagnostics (Trouble)" }) 98vim.keymap.set("n", "<leader>xX", "<cmd>Trouble diagnostics toggle filter.buf=0<cr>", 99 { desc = "Buffer Diagnostics (Trouble)" }) 100vim.keymap.set("n", "<leader>cs", "<cmd>Trouble symbols_float toggle<cr>", 101 { desc = "Symbols (Trouble)" }) 102vim.keymap.set("n", "<leader>cS", "<cmd>Trouble symbols toggle<cr>", 103 { desc = "Symbols (Trouble)" }) 104vim.keymap.set("n", "<leader>cl", "<cmd>Trouble lsp toggle focus=false<cr>", 105 { desc = "LSP Definitions / references / ... (Trouble)" }) 106vim.keymap.set("n", "<leader>xL", "<cmd>Trouble loclist toggle<cr>", { desc = "Location List (Trouble)" }) 107vim.keymap.set("n", "<leader>xQ", "<cmd>Trouble qflist toggle<cr>", { desc = "Quickfix List (Trouble)" }) 108 109-- git 110vim.keymap.set("n", "[g", "<cmd>Gitsigns prev_hunk<cr>") 111vim.keymap.set("n", "]g", "<cmd>Gitsigns next_hunk<cr>") 112vim.keymap.set("n", "<leader>gg", "<cmd>LazyGit<cr>") 113vim.keymap.set("n", "<leader>gs", "<cmd>Telescope git_status<cr>") 114vim.keymap.set("n", "<leader>gd", "<cmd>Gitsigns diffthis vertical=true HEAD<cr>") 115vim.keymap.set("n", "<leader>Gd", ":Gitsigns diffthis vertical=true ") 116vim.keymap.set("n", "<leader>GD", ":DiffviewOpen ") 117vim.keymap.set("n", "<leader>gh", "<cmd>DiffviewFileHistory %<cr>") 118vim.keymap.set("n", "<leader>gH", "<cmd>DiffviewFileHistory<cr>") 119vim.keymap.set("n", "<leader>gb", "<cmd>Gitsigns toggle_current_line_blame<cr>") 120 121vim.keymap.set("n", "<leader>Z", "<cmd>Goyo<cr>") 122 123vim.keymap.set("v", "<leader>gl", function() 124 require("gitlinker").get_buf_range_url("n", { 125 action_callback = require("gitlinker.actions").copy_to_clipboard 126 }) 127end, { silent = true }) 128 129vim.keymap.set("v", "<leader>gl", function() 130 require("gitlinker").get_buf_range_url("v", { 131 action_callback = require("gitlinker.actions").copy_to_clipboard 132 }) 133end, { silent = true }) 134 135vim.keymap.set("n", "<leader>y", function() 136 local filepath = vim.fn.expand('%:.') 137 local line = vim.fn.line('.') 138 local ref = filepath .. ':' .. line 139 vim.fn.system('pbcopy', ref) 140 vim.notify('Copied: ' .. ref, vim.log.levels.INFO) 141end, { desc = "Copy filepath:line to clipboard" }) 142 143-- claude edit 144vim.api.nvim_create_user_command("Claude", function(opts) 145 vim.ui.input({ prompt = "Claude: " }, function(input) 146 if not input or input == "" then return end 147 local ref = string.format("@%s:%d-%d", vim.fn.expand("%:."), opts.line1, opts.line2) 148 local prompt = string.format("%s (in %s)", input, ref) 149 vim.cmd(vim.o.columns >= 160 and "botright vnew" or "botright new") 150 vim.fn.jobstart({ "claude", "--permission-mode", "acceptEdits", prompt }, { term = true }) 151 end) 152end, { range = true }) 153vim.keymap.set({ "n", "v" }, "<leader>C", ":Claude<cr>", { desc = "Claude edit" }) 154 155vim.keymap.set("n", "<leader>PP", "<cmd>Lazy<cr>") 156 157vim.keymap.set("n", "<leader>LC", "<cmd>ConfigLocalEdit<cr>") 158 159-- personal notes shortcuts 160vim.keymap.set("n", "<leader>sn", function() 161 -- create a new note file under `.sethetter/notes/$(timestamp).md` and open it 162 local timestamp = os.date("%Y%m%d%H%M%S") 163 vim.fn.system("mkdir -p .sethetter/notes/") 164 vim.cmd("edit .sethetter/notes/" .. timestamp .. ".md") 165end, { desc = "New personal note" }) 166 167vim.keymap.set("n", "<leader>st", "<cmd>e .sethetter/TODO.md<cr>", { desc = "Open personal TODO list" }) 168 169vim.keymap.set("n", "<leader>sN", function() 170 require("telescope.builtin").find_files({ 171 cwd = ".sethetter/notes", 172 prompt_title = "Notes", 173 previewer = true, 174 }) 175end, { desc = "Browse notes" })