tpope / vim-obsession

obsession.vim: continuously updated session files
http://www.vim.org/scripts/script.php?script_id=4472
1.76k stars 70 forks source link

Suggestion: Capture at least some options #8

Open tssm opened 11 years ago

tssm commented 11 years ago

Hi Tim:

Don't capture options and maps. Options are sometimes mutilated and maps just interfere with updating plugins.

I agree about mappings, but I think It would be pretty useful to save path and tags, and even allow to pass them as options to :Obsession, that way every session could be more like an IDE project, but ala Vim. What do you think?

tpope commented 11 years ago

The initial reason for disabling options was because path and tags were getting truncated to 4096 characters. That's what I mean by "mangling."

Beyond that, I don't understand your use case. Are you setting 'path' and 'tags' interactively? Mine are just set from autocommands so they're always correct.

tssm commented 11 years ago

Usually I create a session by project, so I set path to its root, and tags to tag files only related to that project, and save the session. That way, I can open a "project" and :find will look recursively only among its files, same thing for Ctrl+]...

Do you use autocommands by file type or something similar?

tpope commented 11 years ago

I do, with a lot of help from plugins. In JVM projects I use classpath.vim, for example, while Ruby projects get handled by some combination of vim-ruby, rails.vim, and bundler.vim.

I do think using the project root is a good fallback for miscellaneous projects. And I have some ideas for how to achieve that automatically. But it'll probably be a few months before I have anything to show.

tssm commented 11 years ago

CtrlP (which is over kill for me) uses directories like .git or .svn to determine the project's root. I think that is a nice solution for options like path or tags. What do you think?

tpope commented 11 years ago

I think that's a pretty good heuristic, and probably not too hard to automate. One place this doesn't work so well is libraries installed by a package manager. CtrlP has burned me on Ruby Gems a lot.

blueyed commented 10 years ago

The vim-session plugin has an option g:session_persist_globals to define a list of globals that should get persisted (FWIW, it also executes sessionoptions-=options unconditionally).

benknoble commented 5 years ago

One other "set" of options to consider are those relevant to :compiler (makeprg and errorformat). I recently noticed this was not being unsaved and it slows me down to have to remember to invoked compiler when I restore the session.

I don't want to run compiler in ftplugins/autocommands for various reasons, as I think it should be determined per-project, not per filetype, so I'd love to see Obsession support this use-case.

bart9h commented 2 years ago

I also have the need to persist makeprg.