mappings.lua 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. local wk = require("which-key")
  2. local telescope = require("telescope.builtin")
  3. local gitsigns = require("gitsigns")
  4. -- local tree = require "nvim-tree.api"
  5. function FormatBuffer()
  6. -- Save the current cursor position
  7. local cursor_position = vim.fn.getpos(".")
  8. local command = "fmt"
  9. -- -- Run the formatter command on the current buffer
  10. vim.cmd(":%! " .. command)
  11. -- Restore the cursor position
  12. vim.fn.setpos(".", cursor_position)
  13. -- local current_file = vim.fn.expand("%:p")
  14. -- local cmd = string.format("typstyle -i %s", current_file)
  15. -- vim.fn.jobstart(cmd, {
  16. -- on_exit = function(_, exit_code)
  17. -- if exit_code == 0 then
  18. -- print("TypestStyle completed successfully")
  19. -- -- vim.cmd('edit!') -- Reload the buffer
  20. -- vim.fn.setpos(".", cursor_position)
  21. -- else
  22. -- print("TypestStyle failed with exit code: " .. exit_code)
  23. -- end
  24. -- end,
  25. -- })
  26. end
  27. function ToggleTree(source)
  28. require("neo-tree.command").execute({
  29. toggle = true,
  30. source = source,
  31. position = "left",
  32. })
  33. end
  34. wk.add({
  35. {
  36. mode = "n",
  37. -- telescope
  38. {
  39. "<leader>ff",
  40. function()
  41. telescope.find_files()
  42. end,
  43. desc = "Find file",
  44. },
  45. {
  46. "<leader>fg",
  47. function()
  48. telescope.live_grep()
  49. end,
  50. desc = "Live grep",
  51. },
  52. {
  53. "<leader>fb",
  54. function()
  55. telescope.buffers()
  56. end,
  57. desc = "List buffers",
  58. },
  59. {
  60. "<leader>fh",
  61. function()
  62. telescope.help_tags()
  63. end,
  64. desc = "Help",
  65. },
  66. {
  67. "<leader>fs",
  68. function()
  69. telescope.lsp_document_symbols()
  70. end,
  71. desc = "Find symbols",
  72. },
  73. {
  74. "zz",
  75. function()
  76. telescope.spell_suggest()
  77. end,
  78. desc = "Suggest spell",
  79. },
  80. {
  81. "zr",
  82. function()
  83. vim.lsp.buf.rename()
  84. end,
  85. desc = "Rename symbol",
  86. },
  87. {
  88. "<leader>ft",
  89. function()
  90. FormatBuffer()
  91. end,
  92. desc = "Typst fmt",
  93. },
  94. -- Centering cursor
  95. { "n", "nzzzv", desc = "Center cursor when n (next) during search" },
  96. { "N", "Nzzzv", desc = "Center cursor when n (next) during search" },
  97. -- tab
  98. { "<tab>", ":BufferLineCycleNext <CR>", desc = "Next tab" },
  99. { "<S-tab>", ":BufferLineCyclePrev<CR>", desc = "Previous tab" },
  100. -- Comment
  101. { "<leader>/", "gcc", desc = "comment toggle", remap = true },
  102. -- Format
  103. {
  104. "<leader>fm",
  105. function()
  106. require("conform").format({ lsp_fallback = true })
  107. end,
  108. desc = "format files",
  109. },
  110. -- nvim-tree
  111. -- { "<C-n>", function() tree.tree.toggle() end, desc = "Toggle file tree" },
  112. {
  113. "<C-n>",
  114. function()
  115. -- ToggleTree("filesystem")
  116. -- require("edgy").toggle("left")
  117. require("edgy-group").open_group_offset("left", 1)
  118. end,
  119. desc = "Toggle left panel",
  120. },
  121. {
  122. "<leader>el",
  123. function()
  124. require("trouble").open({
  125. mode = "lsp_document_symbols",
  126. focus = false,
  127. win = { position = "right" },
  128. })
  129. end,
  130. },
  131. {
  132. "<leader>uh",
  133. function()
  134. require("edgy").toggle("left")
  135. end,
  136. desc = "left",
  137. },
  138. -- Lsp
  139. {
  140. "K",
  141. function()
  142. vim.lsp.buf.hover()
  143. end,
  144. desc = "LSP toggle",
  145. },
  146. {
  147. "<leader>ca",
  148. function()
  149. vim.lsp.buf.code_action()
  150. end,
  151. desc = "LSP code action",
  152. },
  153. {
  154. "<leader>cd",
  155. "<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
  156. desc = "LSP code diagnostic",
  157. },
  158. -- Gitsigns
  159. {
  160. "<leader>nc",
  161. function()
  162. gitsigns.nav_hunk("next")
  163. end,
  164. desc = "Next change",
  165. },
  166. {
  167. "<leader>pc",
  168. function()
  169. gitsigns.nav_hunk("prev")
  170. end,
  171. desc = "Previous change",
  172. },
  173. -- increment/decrement numbers
  174. { "<leader>+", "<C-a>", desc = "Increment number" }, -- increment
  175. { "<leader>-", "<C-x>", desc = "Decrement number" }, -- decrement
  176. { "<leader>to", "<cmd>tabnew<CR>", desc = "Open new tab" }, -- open new tab
  177. { "<leader>tx", "<cmd>tabclose<CR>", desc = "Close current tab" }, -- close current tab
  178. { "<leader>tn", "<cmd>tabn<CR>", desc = "Go to next tab" }, -- go to next tab
  179. { "<leader>tp", "<cmd>tabp<CR>", desc = "Go to previous tab" }, -- go to previous tab
  180. { "<leader>tf", "<cmd>tabnew %<CR>", desc = "Open current buffer in new tab" }, -- move current buffer to new tab
  181. {
  182. "<ESC>",
  183. ":noh<CR>",
  184. desc = "clears search highlights",
  185. noremap = true,
  186. silent = true,
  187. },
  188. {
  189. "<leader>ib",
  190. function()
  191. print(vim.bo.filetype)
  192. end,
  193. desc = "Print the filetype of current buffer",
  194. },
  195. -- { "<leader>uh", function() require("edgy").select("left") end, desc = "focus left" },
  196. },
  197. {
  198. mode = "v",
  199. { "<S-j>", ":m '>+1<CR>gv=gv", desc = "Move selection down" },
  200. { "<S-k>", ":m '<-2<CR>gv=gv", desc = "Move selection up" },
  201. -- Comment
  202. { "<leader>/", "gc", desc = "comment toggle", remap = true },
  203. {
  204. "<ESC>",
  205. ":noh<CR>",
  206. desc = "clears search highlights",
  207. noremap = true,
  208. silent = true,
  209. },
  210. },
  211. })