Dogbert
Dogbert

Reputation: 222118

Manually enable undodir, when needed

I have enabled undodir, to keep track of changes I make even after I close my vim session.

I sometimes want to edit a file, make some changes, save it, then return to the original file of that session. (This might be one of the possible use cases)

If I had undodir disabled, I could simply keep hitting u until it showed me a message.

So I want undodir to be disabled in undo/redo by default, and I should have a command to enable it when needed.

All changes to the file must be tracked in either states, at all times.

Is this possible?

Upvotes: 1

Views: 534

Answers (1)

eckes
eckes

Reputation: 67047

As far as I understand the documentation, only setting undodir does nothing unless undofile is set to true.

So, I assume that you want to activate undofile for certain files.

First thing that comes in mind is a modeline in order to set undofile to true for certain files. But unfortunately, this doesn't work.

The issue, however, is present on the vim developer mailing list and there was a fix provided in January: http://comments.gmane.org/gmane.editors.vim.devel/32896. This fix could be present in current sources; so if you'd like to try, grab the latest vim sources, build it and check if you could use a modeline for setting udf

Until there's an official version containing that fix, you could get around your issue using undofile.vim. Excerpt of it's description:

If you want 'undofile' only for certain files, you will notice that 'undofile' cannot be set in a modeline, or once the buffer is loaded (because an existing undo file will not be loaded then). Bram suggests to use a BufReadPre autocmd which sets 'undofile' before the buffer is loaded. This script does the steps for you.

Upvotes: 2

Related Questions