Skip to content

Commit

Permalink
feat: add global var for if session exists in cwd
Browse files Browse the repository at this point in the history
  • Loading branch information
olimorris committed Nov 18, 2023
1 parent d90f9ad commit 0ea44f1
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 5 deletions.
19 changes: 14 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ require('telescope').setup({

## :rocket: Usage

**Default commands**
### Commands

The plugin comes with a number of commands:

Expand All @@ -114,7 +114,7 @@ The plugin comes with a number of commands:
- `:SessionLoadFromFile` - Load a session from a given path
- `:SessionDelete` - Delete the current session

**Telescope**
### Telescope extension

The Telescope extension may be opened via `:Telescope persisted`.

Expand All @@ -123,12 +123,13 @@ Once opened, the available keymaps are:
- `<CR>` - Source the session file
- `<C-d>` - Delete the session file

**Global variables**
### Global variables

The plugin sets global variables which can be utilised in your configuration:

- `vim.g.persisting` - This is set to `true` when a session is started and `false` when a session is stopped
- `vim.g.persisted_loaded_session` - The file path to the currently loaded session
- `vim.g.persisting` - (bool) Determines if the plugin is active for the current session
- `vim.g.persisted_exists` - (bool) Determines if a session exists for the current working directory
- `vim.g.persisted_loaded_session` - (string) The file path to the current session

## :wrench: Configuration

Expand Down Expand Up @@ -349,6 +350,14 @@ The session data available differs depending on the events that are hooked into.

The plugin contains an extension for [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) which allows the user to list all of the saved session files and source them via `:Telescope persisted`.

### Global variables

The plugin makes a number of global variables available for users to hook into during the lifecycle of their Neovim session:

- `vim.g.persisting` - (bool) Determines if the plugin is active for the current session
- `vim.g.persisted_exists` - (bool) Determines if a session exists for the current working directory
- `vim.g.persisted_loaded_session` - (string) The name of the active session

## :page_with_curl: License

[MIT](https://github.com/olimorris/persisted.nvim/blob/main/LICENSE)
10 changes: 10 additions & 0 deletions lua/persisted/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,22 @@ local function get_current()
return config.options.save_dir .. name .. M.get_branch() .. ".vim"
end

---Determine if a session for the current wording directory, exists
---@return boolean
function M.session_exists()
return vim.fn.filereadable(get_current()) ~= 0
end

---Setup the plugin
---@param opts? table
---@return nil
function M.setup(opts)
config.setup(opts)

if M.session_exists() then
vim.g.persisted_exists = true
end

if
config.options.autosave
and (allow_dir() and not ignore_dir() and vim.g.persisting == nil)
Expand Down

0 comments on commit 0ea44f1

Please sign in to comment.