Forráskód Böngészése

feat(quit): make sure to ask before discarding changes (#2554)

Abouzar Parvan 3 éve
szülő
commit
e1d32ca42e
2 módosított fájl, 20 hozzáadás és 1 törlés
  1. 1 1
      lua/lvim/core/which-key.lua
  2. 19 0
      lua/lvim/utils/functions.lua

+ 1 - 1
lua/lvim/core/which-key.lua

@@ -82,7 +82,7 @@ M.config = function()
     mappings = {
       [";"] = { "<cmd>Alpha<CR>", "Dashboard" },
       ["w"] = { "<cmd>w!<CR>", "Save" },
-      ["q"] = { "<cmd>q!<CR>", "Quit" },
+      ["q"] = { "<cmd>lua require('lvim.utils.functions').smart_quit()<CR>", "Quit" },
       ["/"] = { "<cmd>lua require('Comment.api').toggle_current_linewise()<CR>", "Comment" },
       ["c"] = { "<cmd>BufferKill<CR>", "Close Buffer" },
       ["f"] = { require("lvim.core.telescope.custom-finders").find_project_files, "Find File" },

+ 19 - 0
lua/lvim/utils/functions.lua

@@ -0,0 +1,19 @@
+local M = {}
+
+function M.smart_quit()
+  local bufnr = vim.api.nvim_get_current_buf()
+  local modified = vim.api.nvim_buf_get_option(bufnr, "modified")
+  if modified then
+    vim.ui.input({
+      prompt = "You have unsaved changes. Quit anyway? (y/n) ",
+    }, function(input)
+      if input == "y" then
+        vim.cmd "q!"
+      end
+    end)
+  else
+    vim.cmd "q!"
+  end
+end
+
+return M