Skip to content

Commit 14a0514

Browse files
committed
feat(nvim): implement restart with temporary session
1 parent 1197185 commit 14a0514

3 files changed

Lines changed: 19 additions & 3 deletions

File tree

nvim/init.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ require("plugin")
66
require("themes")
77
require("python")
88
require("misc")
9+
require("restart")

nvim/lua/mappings.lua

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ g.mapleader = " "
44
-- Remap save
55
map("n", "<Leader>w", ":w<CR>", { desc = "Save file" })
66

7-
-- Restart nvim
8-
map("n", "<leader>R", ":restart<cr>", { desc = "Restart Neovim" })
9-
107
-- Close current buffer
118
map("n", "<leader>q", ":close<cr>", { desc = "Close current window" })
129

nvim/lua/restart.lua

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
-- Restart the current session without saving it by using a temporary session
2+
local tmp_session = vim.fn.stdpath("state") .. "/Restart.vim"
3+
local esc_tmp_session = vim.fn.fnameescape(tmp_session)
4+
5+
function _G.after_restart(orig_session)
6+
vim.cmd("source " .. esc_tmp_session)
7+
vim.v.this_session = orig_session
8+
end
9+
10+
local session_restart = function()
11+
local restart_cmd = [[
12+
mksession! %s | confirm restart lua _G.after_restart(%s)
13+
]]
14+
vim.cmd("silent! write")
15+
vim.cmd(restart_cmd:format(esc_tmp_session, ("%q"):format(vim.v.this_session)))
16+
end
17+
18+
vim.keymap.set("n", "<Leader>R", session_restart, { desc = "Restart" })

0 commit comments

Comments
 (0)