.config/nvim/lua/config/commands.lua

changeset 1155
fcec334dfe7a
parent 1095
226221dc1d6b
child 1156
0a7162df160d
--- a/.config/nvim/lua/config/commands.lua
+++ b/.config/nvim/lua/config/commands.lua
@@ -1,6 +1,24 @@
 local command = vim.api.nvim_create_user_command
 local cmd, fn = vim.cmd, vim.fn
 
+require("config.util").calias({
+  -- replace default:
+  grep = "Grep",
+
+  -- typos:
+  Q = "q",
+  Qa = "qa",
+  W = "w",
+  gcd = "Gcd",
+  hgcd = "Hgcd",
+
+  -- Make the ! versions default to stay in one window + buffer:
+  doc = "ViewDoc!",
+  help = "ViewDocHelp!",
+  man = "ViewDocMan!",
+  perldoc = "ViewDocPerl!",
+})
+
 command("Hgcd", function()
   local root = fn.systemlist("hg root 2>/dev/null")[1]
   if vim.v.shell_error == 0 then
@@ -29,20 +47,22 @@ command("Grep", function(ctx)
   cmd.cfirst()
 end, { nargs = "*", complete = "file" })
 
-require("config.util").calias({
-  -- replace default:
-  grep = "Grep",
-
-  -- typos:
-  Q = "q",
-  Qa = "qa",
-  W = "w",
-  gcd = "Gcd",
-  hgcd = "Hgcd",
-
-  -- Make the ! versions default to stay in one window + buffer:
-  doc = "ViewDoc!",
-  help = "ViewDocHelp!",
-  man = "ViewDocMan!",
-  perldoc = "ViewDocPerl!",
-})
+-- Remove buffers for files that are gone, old, or netrw dirs
+command("PruneSession", function()
+  local bufs = vim.api.nvim_list_bufs()
+  for _, bufnr in ipairs(bufs) do
+    local name = vim.api.nvim_buf_get_name(bufnr)
+    if name then
+      local type = vim.fn.getftype(name)
+      if type == "" or type == "dir"
+        or (os.time() - vim.fn.getftime(name)) > 2592000
+      then
+        vim.print("pruned: " .. name)
+        vim.cmd.bwipeout(bufnr)
+      end
+    end
+  end
+  if not vim.api.nvim_buf_get_name(0) then
+    vim.cmd.bprev()
+  end
+end, {})

mercurial