🌱 tiny neovim plugin keeping your session safe
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: init

robin 56cbaa6e

+98
+1
README.md
··· 1 + remembers where you left off
+67
plugin/nivvie.lua
··· 1 + if vim.g.loaded_session then 2 + return 3 + end 4 + 5 + vim.g.loaded_session = true 6 + 7 + local session = {} 8 + 9 + function session.get_uri() 10 + return string.gsub(vim.fn.getcwd(), "[^a-zA-Z0-9_.-]", function(s) 11 + return "<" .. vim.fn.char2nr(s) 12 + end) 13 + end 14 + 15 + local sessiondir = vim.g.sessiondir or vim.fs.joinpath(vim.fn.stdpath("state"), "sessions") 16 + 17 + function session.get_path() 18 + return vim.fs.joinpath(sessiondir, session.get_uri() .. ".vim") 19 + end 20 + 21 + function session.save() 22 + local session_file = session.get_path() 23 + 24 + vim.fn.mkdir(sessiondir, "p") 25 + 26 + vim.api.nvim_cmd({ 27 + cmd = "mksession", 28 + bang = true, 29 + args = { session_file }, 30 + }, {}) 31 + end 32 + 33 + function session.clean() 34 + vim.iter(ipairs(vim.api.nvim_list_bufs())):each(function(_, bufnr) 35 + if vim.bo[bufnr].buftype ~= "" then 36 + vim.api.nvim_buf_delete(bufnr, { force = true }) 37 + end 38 + end) 39 + end 40 + 41 + function session.load() 42 + local path = session.get_path() 43 + if vim.uv.fs_stat(path) then 44 + vim.api.nvim_cmd({ 45 + cmd = "source", 46 + args = { path }, 47 + }, {}) 48 + vim.api.nvim_exec_autocmds("SessionLoadPost", {}) 49 + end 50 + end 51 + 52 + local group = vim.api.nvim_create_augroup("nivvie", { clear = true }) 53 + 54 + vim.api.nvim_create_autocmd({ "VimLeavePre" }, { 55 + group = group, 56 + callback = function() 57 + session.clean() 58 + session.save() 59 + end, 60 + }) 61 + 62 + if vim.fn.argc() > 0 then 63 + return 64 + end 65 + vim.schedule(function() 66 + session.load() 67 + end)
+4
selene.toml
··· 1 + std = 'vim' 2 + 3 + [lints] 4 + mixed_table = 'allow'
+5
stylua.toml
··· 1 + column_width = 80 2 + indent_type = "Spaces" 3 + indent_width = 2 4 + quote_style = "AutoPreferSingle" 5 + call_parentheses = "None"
+21
vim.toml
··· 1 + [selene] 2 + base = "lua51" 3 + name = "vim" 4 + 5 + [vim] 6 + any = true 7 + 8 + [jit] 9 + any = true 10 + 11 + [assert] 12 + any = true 13 + 14 + [describe] 15 + any = true 16 + 17 + [it] 18 + any = true 19 + 20 + [before_each.args] 21 + any = true