Commit Graph

133 Commits (88f5508d46fa21ab5d27d1699652d1a70e33d48c)

Author SHA1 Message Date
Christopher Speck 7944b9afe3
refactor: update logic for autoload or starting sessions (#104)
* Update logic for autoload or starting sessions.

The logic to prevent autoloading/starting sessions when any arguments
are supplied to neovim is to prevent session management from kicking in
when editing a single file.

This updates the logic to allow a single argument passed to neovim as
long as the argument is an existing directory. When neovim is launched
in this way it behaves the same as opening neovim with no arguments but
has changed the working directory.

This results in consistent behavior of the autoloading/starting of
sessions when passing a directory argument to start neovim.

See: https://github.com/olimorris/persisted.nvim/discussions/93

* Fix comment, make comparisons more direct

* Update functions to be directory-aware

The main functionality in `init.lua` assumes using current working
directory in most cases. This refactors these functions to allow passing
in a directory instead.

The default behavior is to now use the current directory unless neovim
was started with a single directory argument, using that instead.

This also special-cases `.` as `vim.fn.expand()` does not resolve that
to the current working directory.
2023-12-21 11:15:05 +00:00
olimorris 66d540f949 refactor!: do not append `main` to non-git repo sessions
https://github.com/olimorris/persisted.nvim/discussions/103
2023-12-20 12:47:51 +00:00
olimorris bcdada28d2 fix: prevent double running of git command
Should improve loading times significantly
2023-12-18 23:22:10 +00:00
olimorris 3ebc5d77ae refactor: `override` to `force` for SessionSave 2023-11-18 16:07:38 +00:00
olimorris 0ea44f1586 feat: add global var for if session exists in cwd 2023-11-18 15:38:16 +00:00
olimorris d90f9adb04 fix: #96 improve startup time
For those who do not use the git branching feature, this may improve their Neovim startup time significantly
2023-11-16 09:50:09 +00:00
Rafael Bodill 315cd1a8a5
fix: unnecessary shell commands when autosave off (#85)
* fix: unnecessary shell commands when autosave off

Problem:    Shell programs aren't able to detect nvim exit.

Solution:   Avoid running shell-commands unnecessarily on exit.

Programs that spawn nvim in-order to edit a file are unable to detect
nvim exit cleanly because of a race-condition that happens in
`VimLeavePre` and `get_current()` which runs shell commands during exit
even when `autosave` is off.

For example, using nvim nightly, run persisted.nvim with:

```lua
opts.should_autosave = function()
	-- Do not autosave if git commit/rebase session.
	return vim.env.GIT_EXEC_PATH == nil
end
```

And run `EDITOR=nvim git commit` from shell; git will fail waiting for
nvim to exit cleanly.

* fix: global variable in lowercase initial
2023-08-11 14:07:50 +01:00
olimorris 2de1fe69e7 feat: add event for `PersistedToggled` 2023-08-11 10:33:54 +01:00
olimorris c1c4bbff8a feat: add global variable for last loaded session 2023-07-26 16:17:42 +01:00
olimorris 06946ed12d feat: allow session to be saved from telescope 2023-07-25 21:12:30 +01:00
olimorris b03c863731 Revert "fix: prevent autoloading when there are extra command line arguments passed to nvim (#76)"
This reverts commit 975cd4cd06.
2023-06-30 05:09:55 +01:00
Beartama 975cd4cd06
fix: prevent autoloading when there are extra command line arguments passed to nvim (#76)
When nvim is used as a man pager with `export MANPAGER='nvim +Man! '`, with autoload set to true, persisted.nvim still autoloads the current directory which is not desirable
2023-06-27 17:07:11 -07:00
olimorris 2e6946c1ad refactor: clean up `mks` command 2023-06-02 10:22:04 +01:00
Oli 304a3c5551
feat: load the session from the main branch if no branch session (#66) 2023-04-24 17:44:57 +01:00
olimorris e053ff3348 fix: #61 `SessionSave` command 2023-03-13 19:45:24 +00:00
olimorris 7d91c60135 fix: #60 autosave ignoring vim.fn.argc 2023-03-09 09:57:27 +00:00
olimorris 0a6be5db0e refactor: remove deprecations 2023-03-09 09:41:22 +00:00
olimorris 88f27dcab2 fix: PersistedSavePre called when autosave = false 2023-02-28 23:21:54 +00:00
olimorris bcd99ed00c chore: rename functions 2023-02-28 22:28:44 +00:00
Demaro Stanberry 433e6d6808
fix: improve displayed session names
* fix: sanitize string before passing to `string.gsub(...)`

fix: improve displayed paths on windows os

* chore: improve scripting for review
2023-02-28 20:55:55 +00:00
olimorris e3647c1087 refactor: clean up session loading 2023-02-28 18:54:33 +00:00
Oli 03f11b519f
fix: autosaving (#56)
* fix: autosaving

* chore: newline

* feat: allow autosave override
2023-02-28 17:28:45 +00:00
olimorris 4c960a99d7 feat: add data to state change and delete events 2023-02-25 10:39:41 +00:00
olimorris 4866194140 feat: add additional events 2023-02-23 20:44:47 +00:00
olimorris 383b5ba6b5 feat: delete a session in a schedule.wrap func 2023-02-23 20:44:26 +00:00
olimorris fc3df75cd5 refactor!: #51 replace callbacks with user events 2023-02-22 20:24:27 +00:00
olimorris 65c5c07bf9 chore: remove redundant param 2023-02-22 18:11:01 +00:00
Oli 774e4d70e9
fix: #46 autoload sessions 2023-02-22 15:02:33 +00:00
Oli dfbd039fe1
feat: load session by path (#48) (#47)
* feat: load session by path

* chore: change order of commands

* tests: fix

* docs: tweak readme wording
2023-02-21 21:09:01 +00:00
olimorris f99ad40198 refactor: move commands to vim file 2023-02-21 16:01:27 +00:00
olimorris 43805b40a6 refactor: autocmds 2023-02-21 15:47:56 +00:00
olimorris e39170f571 refactor!: change default branch separator 2022-11-02 17:38:41 +00:00
Cedric M'Passi 2e61c9fb92
fix: check for nil opts in setup 2022-10-27 08:18:14 +01:00
olimorris 5347c83ee4 refactor!: warn of future branch_separator change 2022-10-26 17:41:44 +01:00
olimorris cf3b9a45fe chore: formatting 2022-10-26 17:39:28 +01:00
olimorris 2105556a1a chore: rename autocmd group 2022-10-26 17:24:18 +01:00
olimorris df231232c7 fix: #38 reinstate on_autoload_no_session 2022-10-26 17:14:40 +01:00
olimorris 5c5c4ae949 fix: autocmd namings 2022-10-26 13:55:16 +01:00
olimorris 226db9219f fix: clear diagnostics 2022-10-26 13:49:43 +01:00
olimorris 26d82d6876 refactor: use neovim autocmd api 2022-10-26 13:41:13 +01:00
ADoyle 80c898a6c9
fix: #34 support width = { val, min, max } and show branch
- Use telescope builtin resolver to calculate width.
- The branch is missing. Fixed.
- If session file stores without git branch, `session.branch` should be nil. And do not show branch in list.
- `make test` will fail because plenary.nvim is old.

close #34
2022-10-25 13:44:54 +01:00
Connor Robertson 38b36fc5fd
feat: allow session name to be fixed on load
* Add follow_cwd option to allow fixing session name on load

* Update readme to reflect new follow_cwd command and explain use

* Add tests for follow_cwd

* Update README.md

* Adjust wording in README for follow_cwd to clarify use case

Co-authored-by: Oli M <olimorris@users.noreply.github.com>
2022-10-14 10:08:12 +01:00
olimorris df435cee43 feat: #31 should_autosave callback 2022-10-07 12:46:58 +01:00
Latif Sulistyo b54b72dbde
feat: add `silent` config option 2022-09-13 08:28:36 +01:00
Mat Jones 321ba42367
feat: #27 add `on_autoload_no_session` hook
* Add `on_autoload_no_session` hook

* Update README.md
2022-08-23 22:02:30 +01:00
HumblePresent e994852d86
feat: add configurable git branch separator string (#25) 2022-08-22 21:36:22 +01:00
olimorris 2379b3dfe8 test: fix branch test 2022-08-22 21:33:16 +01:00
HumblePresent 17ee9ed4e0
fix: #21 accurately detect git-enabled parent directories 2022-08-15 07:58:37 +01:00
olimorris b70eb5317d feat: add before_source callback 2022-08-13 10:53:59 +01:00
olimorris 9be6183f96 fix: after_source callback 2022-08-13 10:38:02 +01:00
olimorris 7d3f977ae5 feat: #7 remove .vim extension in telescope 2022-07-13 09:27:46 +01:00
olimorris 0ad729ee38 fix: #15 callbacks being incorrectly detected 2022-06-30 19:53:28 +01:00
olimorris 8e1da8a3d6 refactor: #7 remove branch in telescope results
For users who not use git branching (majority) this is redundant. For users who have lots of '_' in their file path, this becomes messy. Cleaner to just remove it as the user can determine the branch from the filename anyway
2022-06-30 17:49:01 +01:00
olimorris 6c21af37d0 chore: formattig 2022-06-25 22:54:44 +01:00
olimorris 4e5b8b4a10 refactor: move load session to utils 2022-06-25 22:48:09 +01:00
olimorris 0c3c133a7f fix: #14 index a nil value while calling Telescope persisted 2022-06-25 14:45:35 +01:00
olimorris 3a5f182086 refactor: improved git branching 2022-06-25 14:07:00 +01:00
olimorris d093a835ef fix: #13 get last session saved 2022-06-25 13:06:51 +01:00
olimorris bf27016643 fix: #12 shift autoloading to the nvim event loop
A big shoutout to @simonmclean for this pull request. Previously we autoloaded a session file as soon as Neovim opened. The problem with this is that key plugins like LSP and Treesitter may not have been initialised. This would lead to syntax highlighting issues or LSPs not attaching to buffers in the session. Pushing this to Neovim's event loop via vim.schedule allows us to sensibly load the session after these key plugins. Fixing the tests was a little cumbersome as we needed to use plenary's async library but once figured out, we have some lovely robust async tests
2022-06-07 12:55:20 -07:00
olimorris 66f4405794 fix: vim.schedule causing issues with autoloading 2022-06-07 09:43:51 -07:00
Simon McLean 473c90bbb6
Wrap auto load in vim.schedule
I'm experiencing a bug whereby if I enable autoloading, I don't get any syntax highlighting on startup (until I trigger it with `:e` for example). I had the same issue with `persistence.nvim` (I made an auto command to get the same functionality). For both plugins, wrapping the call to `load` in `vim.schedule` solved the problem.

I don't really know enough about the inner workings of Neovim to explain this though.
2022-06-06 17:38:23 +01:00
olimorris b778a4ebc4 feat: #11 after_source callback 2022-05-05 11:41:57 +01:00
olimorris 13dacbc880 fix: #11 lsp and autoload issue 2022-05-04 16:33:26 +01:00
olimorris 32610c4de6 fix: #11 lsp not working with autoload 2022-05-03 21:51:16 +01:00
olimorris 5b3525ad5e refactor: #7 improve telescope support 2022-04-24 12:58:11 +01:00
olimorris 2345ac0682 refactor: change config option dir to save_dir 2022-04-22 12:45:30 +01:00
olimorris 5ad5f88e4b feat: custom autocmd for saving a session 2022-04-22 12:37:27 +01:00
olimorris 48ecaa7c6e feat: #5 improve auto save/load pattern match 2022-04-20 09:19:56 +01:00
olimorris a156dd33c3 feat: #7 initial Telescope support 2022-04-19 22:21:06 +01:00
olimorris ba5f0ab091 fix: #8 autoload when neovim opened with arguments 2022-04-19 13:29:07 +01:00
olimorris 23151e4db6 fix: #6 error getting correct git branch 2022-04-05 22:48:02 +01:00
olimorris 6cefecd2bb fix: #4 use vim.o.sessionoptions 2022-04-04 22:59:36 +01:00
olimorris 0669d29f22 feat: allow/ignore dirs for save/load
This addresses #1 and allows the user to specify directories which the plugin will automatically save or load from. Alternatively, specify directories for which this behaviour will be ignored
2022-03-07 18:58:37 +00:00
olimorris b2e4162c74 feat: auto-load sessions addresses #3 2022-03-07 17:22:39 +00:00
olimorris 00fe043e8d feat: add command to save session 2022-03-07 13:06:58 +00:00
olimorris 0f642be4fa feat: add commands 2022-03-05 15:22:26 +00:00
olimorris ac24493128 feat: add before and after callbacks 2022-03-05 15:22:13 +00:00
olimorris 831caa7261 feat: delete current session
Mirroring the great pull request on persistence.nvim by @edementyev
2022-03-03 21:16:19 +00:00
olimorris 336909e742 chore: formatting with stylua 2022-03-03 21:15:37 +00:00
olimorris 8c3bc1791d feat: add toggle function 2022-01-21 16:38:00 +00:00
olimorris cbb601eaec chore: format code 2022-01-21 11:09:49 +00:00
olimorris e513dcd16c feat: add option to disable autosave
As per: https://github.com/folke/persistence.nvim/pull/4

Think is a useful feature to have as users may wish to manually trigger the saving of sessions
2022-01-20 15:24:31 +00:00
olimorris 9fd0958a19 chore: rename to persisted 2022-01-20 14:23:51 +00:00