mappings.lua 5.6 KB

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