docs: update readme

main
olimorris 2023-02-23 17:25:05 +00:00
parent 95023557ec
commit f3f1859bbb
1 changed files with 11 additions and 19 deletions

View File

@ -12,7 +12,7 @@
</p> </p>
<p align="center"> <p align="center">
<b>Persisted.nvim</b> is a simple lua plugin for automated session management within Neovim<br> <b>Persisted.nvim</b> is a simple lua plugin for working with sessions in Neovim<br>
Forked from <a href="https://github.com/folke/persistence.nvim">Persistence.nvim</a> as active development had stopped Forked from <a href="https://github.com/folke/persistence.nvim">Persistence.nvim</a> as active development had stopped
</p> </p>
@ -20,8 +20,9 @@ Forked from <a href="https://github.com/folke/persistence.nvim">Persistence.nvim
- Automatically saves the active session under `.local/share/nvim/sessions` on exiting Neovim - Automatically saves the active session under `.local/share/nvim/sessions` on exiting Neovim
- Supports sessions across multiple git branches - Supports sessions across multiple git branches
- Supports auto saving and loading of sessions with allowed/ignored directories - Supports autosaving and autoloading of sessions with allowed/ignored directories
- Simple API to save/stop/restore/delete/list the current session(s) - Simple API to save/stop/restore/delete/list the current session(s)
- Custom events which users can hook into for greater integration
- Telescope extension to work with saved sessions - Telescope extension to work with saved sessions
## :zap: Requirements ## :zap: Requirements
@ -79,12 +80,6 @@ Ensure that the telescope extension is loaded with:
require("telescope").load_extension("persisted") require("telescope").load_extension("persisted")
``` ```
### Lazy loading
The plugin is designed to work with startup screens like [vim-startify](https://github.com/mhinz/vim-startify) or [dashboard](https://github.com/glepnir/dashboard-nvim) out of the box. It will never load a session automatically by default.
However, to lazy load the plugin add the `module = "persisted"` line to Packer or `lazy = true` for Lazy.nvim.
## :rocket: Usage ## :rocket: Usage
**Default commands** **Default commands**
@ -95,13 +90,11 @@ The plugin comes with a number of commands:
- `:SessionStart` - Start recording a session. Useful if `autosave = false` - `:SessionStart` - Start recording a session. Useful if `autosave = false`
- `:SessionStop` - Stop recording a session - `:SessionStop` - Stop recording a session
- `:SessionSave` - Save the current session - `:SessionSave` - Save the current session
- `:SessionLoad` - Load the session for the current directory and current branch if `git_use_branch = true` - `:SessionLoad` - Load the session for the current directory and current branch (if `git_use_branch = true`)
- `:SessionLoadLast` - Load the most recent session - `:SessionLoadLast` - Load the most recent session
- `:SessionLoadFromPath` - Load a session from a given path - `:SessionLoadFromPath` - Load a session from a given path
- `:SessionDelete` - Delete the current session - `:SessionDelete` - Delete the current session
> **Note:** The author only binds `:SessionToggle` to a keymap for simplicity.
**Telescope** **Telescope**
The Telescope extension may be opened via `:Telescope persisted`. The Telescope extension may be opened via `:Telescope persisted`.
@ -138,11 +131,11 @@ require("persisted").setup({
}) })
``` ```
### Session options ### What's saved in the session?
As the plugin uses Vim's `:mksession` command then you may change the `vim.o.sessionoptions` value to determine what to write into the session. Please see `:h sessionoptions` for more information. As the plugin uses Vim's `:mksession` command then you may change the `vim.o.sessionoptions` value to determine what to write into the session. Please see `:h sessionoptions` for more information.
> **Note:** The author uses `vim.o.sessionoptions = "buffers,curdir,folds,winpos,winsize"` > **Note:** The author uses `vim.o.sessionoptions = "buffers,curdir,folds,globals,tabpages,winpos,winsize"`
### Session save location ### Session save location
@ -158,7 +151,7 @@ require("persisted").setup({
### Git branching ### Git branching
One of the plugin's core features is the ability to have multiple sessions files for a given project, by using git branches. To enable git branching: One of the plugin's core features is the ability to have multiple session files for a given project, by using git branches. To enable git branching:
```lua ```lua
require("persisted").setup({ require("persisted").setup({
@ -180,8 +173,7 @@ require("persisted").setup({
Autosaving can be further controlled for certain directories by specifying `allowed_dirs` and `ignored_dirs`. Autosaving can be further controlled for certain directories by specifying `allowed_dirs` and `ignored_dirs`.
There may be occasions when you do not wish to autosave; perhaps when a dashboard or terminal are open. To control this, There may be occasions when you do not wish to autosave; perhaps when a dashboard or a certain buftype is present. To control this, a callback function, `should_autosave`, may be used. This function should return a boolean value.
a callback function, `should_autosave`, may be specified. This function should return a boolean value.
```lua ```lua
require("persisted").setup({ require("persisted").setup({
@ -268,7 +260,7 @@ Specifying `~/.config` will prevent any autosaving and autoloading from that dir
### Events / Callbacks ### Events / Callbacks
The plugin fires events at various points during its lifecycle which users can leverage: The plugin fires events at various points during its lifecycle which users can hook into:
- `PersistedLoadPre` - For _before_ a session is loaded - `PersistedLoadPre` - For _before_ a session is loaded
- `PersistedLoadPost` - For _after_ a session is loaded - `PersistedLoadPost` - For _after_ a session is loaded
@ -305,9 +297,9 @@ vim.api.nvim_create_autocmd({ "User" }, {
}) })
``` ```
The session data available differs depending on the events that are hooked into. For non-telescope events, only the session `name` is available (via `session.data.name`). However for telescope events, the `branch`, `name`, `file_path` and `dir_path` are available. The session data available differs depending on the events that are hooked into. For non-telescope events, only the session's full path is available (via `session.data`). However for telescope events, the `branch`, `name`, `file_path` and `dir_path` are available.
Finaly, if you're using the excellent [Legendary.nvim](https://github.com/mrjones2014/legendary.nvim) plugin, consider the following snippet format: Finally, if you're using the excellent [Legendary.nvim](https://github.com/mrjones2014/legendary.nvim) plugin, consider the following snippet format:
```lua ```lua
{ {