Support for restoring neovim sessions

This commit is contained in:
Bruno Sutic 2014-11-09 16:42:53 +01:00
parent 059686ab6c
commit 601366be6d
No known key found for this signature in database
GPG Key ID: 66D96E4F2F7EF26C
4 changed files with 45 additions and 9 deletions

View File

@ -1,6 +1,7 @@
# Changelog # Changelog
### master ### master
- add support for restoring neovim sessions
### v1.4.0, 2014-10-25 ### v1.4.0, 2014-10-25
- plugin now uses strategies when fetching pane full command. Implemented - plugin now uses strategies when fetching pane full command. Implemented

View File

@ -12,7 +12,7 @@ projects.
can be completely restored after a system restart (or when you feel like it). can be completely restored after a system restart (or when you feel like it).
No configuration is required. You should feel like you never quit tmux. No configuration is required. You should feel like you never quit tmux.
It even (optionally) [restores vim sessions](#restoring-vim-sessions)! It even (optionally) [restores vim and neovim sessions](#restoring-vim-and-neovim-sessions)!
### Screencast ### Screencast
@ -44,8 +44,8 @@ This plugin goes to great lengths to save and restore all the details from your
- active pane for each window - active pane for each window
- programs running within a pane! More details in the - programs running within a pane! More details in the
[configuration section](#configuration). [configuration section](#configuration).
- restoring vim sessions (optional). More details in - restoring vim/neovim sessions (optional). More details in
[restoring vim sessions](#restoring-vim-sessions). [restoring vim and neovim sessions](#restoring-vim-and-neovim-sessions).
- restoring bash history (optional, *experimental*). More details in - restoring bash history (optional, *experimental*). More details in
[restoring bash history](#restoring-bash-history-experimental). [restoring bash history](#restoring-bash-history-experimental).
@ -88,7 +88,7 @@ You should now be able to use the plugin.
Configuration is not required, but it enables extra features. Configuration is not required, but it enables extra features.
Only a conservative list of programs is restored by default:<br/> Only a conservative list of programs is restored by default:<br/>
`vi vim emacs man less more tail top htop irssi`. `vi vim nvim emacs man less more tail top htop irssi`.
- Restore additional programs with the setting in `.tmux.conf`: - Restore additional programs with the setting in `.tmux.conf`:
@ -115,15 +115,20 @@ Only a conservative list of programs is restored by default:<br/>
set -g @resurrect-processes ':all:' set -g @resurrect-processes ':all:'
#### Restoring vim sessions #### Restoring vim and neovim sessions
- save vim sessions. I recommend [tpope/vim-obsession](https://github.com/tpope/vim-obsession). - save vim/neovim sessions. I recommend
[tpope/vim-obsession](https://github.com/tpope/vim-obsession) (as almost every
plugin, it works for both vim and neovim).
- in `.tmux.conf`: - in `.tmux.conf`:
# for vim
set -g @resurrect-strategy-vim 'session' set -g @resurrect-strategy-vim 'session'
# for neovim
set -g @resurrect-strategy-nvim 'session'
`tmux-resurrect` will now restore vim sessions if `Sessions.vim` file is `tmux-resurrect` will now restore vim and neovim sessions if `Sessions.vim` file
present. is present.
#### Resurrect save dir #### Resurrect save dir

View File

@ -7,7 +7,7 @@ restore_option="@resurrect-restore"
# default processes that are restored # default processes that are restored
default_proc_list_option="@resurrect-default-processes" default_proc_list_option="@resurrect-default-processes"
default_proc_list='vi vim emacs man less more tail top htop irssi' default_proc_list='vi vim nvim emacs man less more tail top htop irssi'
# User defined processes that are restored # User defined processes that are restored
# 'false' - nothing is restored # 'false' - nothing is restored

30
strategies/nvim_session.sh Executable file
View File

@ -0,0 +1,30 @@
#!/usr/bin/env bash
# "nvim session strategy"
#
# Same as vim strategy, see file 'vim_session.sh'
ORIGINAL_COMMAND="$1"
DIRECTORY="$2"
nvim_session_file_exists() {
[ -e "${DIRECTORY}/Session.vim" ]
}
original_command_contains_session_flag() {
[[ "$ORIGINAL_COMMAND" =~ "-S" ]]
}
main() {
if nvim_session_file_exists; then
echo "nvim -S"
elif original_command_contains_session_flag; then
# Session file does not exist, yet the original nvim command contains
# session flag `-S`. This will cause an error, so we're falling back to
# starting plain nvim.
echo "nvim"
else
echo "$ORIGINAL_COMMAND"
fi
}
main