mappings.lua 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. local wk = require("which-key")
  2. local builtin = require("telescope.builtin")
  3. -- local tree = require "nvim-tree.api"
  4. function FormatBuffer(command)
  5. -- Save the current cursor position
  6. local cursor_position = vim.fn.getpos(".")
  7. -- Run the formatter command on the current buffer
  8. vim.cmd(":%! " .. command)
  9. -- Restore the cursor position
  10. vim.fn.setpos(".", cursor_position)
  11. end
  12. function ToggleTree(source)
  13. require("neo-tree.command").execute({
  14. toggle = true,
  15. source = source,
  16. position = "left",
  17. })
  18. end
  19. wk.add({
  20. {
  21. mode = "n",
  22. -- telescope
  23. {
  24. "<leader>ff",
  25. function()
  26. builtin.find_files()
  27. end,
  28. desc = "Find file",
  29. },
  30. {
  31. "<leader>fg",
  32. function()
  33. builtin.live_grep()
  34. end,
  35. desc = "Live grep",
  36. },
  37. {
  38. "<leader>fb",
  39. function()
  40. builtin.buffers()
  41. end,
  42. desc = "List buffers",
  43. },
  44. {
  45. "<leader>fh",
  46. function()
  47. builtin.help_tags()
  48. end,
  49. desc = "Help",
  50. },
  51. {
  52. "<leader>fs",
  53. function()
  54. builtin.lsp_document_symbols()
  55. end,
  56. desc = "Find symbols",
  57. },
  58. {
  59. "zz",
  60. function()
  61. builtin.spell_suggest()
  62. end,
  63. desc = "Suggest spell",
  64. },
  65. -- Centering cursor
  66. { "n", "nzzzv", desc = "Center cursor when n (next) during search" },
  67. { "N", "Nzzzv", desc = "Center cursor when n (next) during search" },
  68. -- tab
  69. { "<tab>", ":BufferLineCycleNext <CR>", desc = "Next tab" },
  70. { "<S-tab>", ":BufferLineCyclePrev<CR>", desc = "Previous tab" },
  71. -- Comment
  72. { "<leader>/", "gcc", desc = "comment toggle", remap = true },
  73. -- Format
  74. {
  75. "<leader>fm",
  76. function()
  77. require("conform").format({ lsp_fallback = true })
  78. end,
  79. desc = "format files",
  80. },
  81. -- nvim-tree
  82. -- { "<C-n>", function() tree.tree.toggle() end, desc = "Toggle file tree" },
  83. {
  84. "<C-n>",
  85. function()
  86. ToggleTree("filesystem")
  87. end,
  88. desc = "Toggle file tree",
  89. },
  90. -- Typst format
  91. {
  92. "<leader>ft",
  93. function()
  94. FormatBuffer("typstfmt")
  95. end,
  96. desc = "Typst formater",
  97. },
  98. -- Lsp
  99. { "K", function() vim.lsp.buf.hover() end, desc = "LSP toggle" },
  100. { "<leader>ca", function() vim.lsp.buf.code_action() end, desc = "LSP code action" },
  101. { "<leader>cd", function() vim.diagnostic.setqflist() end, desc = "LSP code diagnostic" },
  102. },
  103. {
  104. mode = "v",
  105. { "<S-j>", ":m '>+1<CR>gv=gv", desc = "Move selection down" },
  106. { "<S-k>", ":m '<-2<CR>gv=gv", desc = "Move selection up" },
  107. -- Comment
  108. { "<leader>/", "gc", desc = "comment toggle", remap = true },
  109. },
  110. })