On Wed, Sep 12, 2012 at 10:00 PM, Marcin Szamotulski <[email protected]> wrote: > On 08:03 Wed 12 Sep , Ben Fritz wrote: >> On Wednesday, September 12, 2012 8:22:44 AM UTC-5, Karthick wrote: >> > Hello, >> > >> > >> > I would like to modify the value of 'dir' option for a few specific >> > files (e.g: all files in directory ~/Foo/). Had 'dir' been a buffer >> > local option, it would have been a easy thing, >> > au BufEnter ~/Foo/* set dir=newval >> > >> > But 'dir' is global across buffers. Can anyone suggest workarounds? >> > >> > >> > I have tried >> > au BufEnter ~/Foo/* call ChangeDir() >> > au BufLeave ~/Foo/* call RevertDir() >> > >> > function ChangeDir() >> > let b:tmp=&dir >> > set dir=newval >> > endfunction >> > >> > function RevertDir() >> > exe 'set dir=' . b:tmp >> > endfunction >> > >> > ..but BufEnter fires *after* swap file is created. >> > >> > If you want to know why I'm doing this - it is to prevent .swp files >> > being created in my DropBox folder (and retain default behavior in all >> > other cases) >> > >> > -Karthick >> >> I bet you could add BufReadPre to your BufEnter autocmd to get it to trigger >> before swapfile creation. Maybe you'd need to add a BufReadPost to your >> BufLeave event as well, so that the BufEnter doesn't save the wrong dir >> option value. >> >> I'm not sure how to make it work when you create a new file. Possibly >> BufNewFile will work, or you can always create the document outside of Vim >> before editing. >> >> One workaround might be to set 'noswapfile' globally in your .vimrc, and set >> 'swapfile' locally on BufEnter, after setting the correct 'dir' option. >> >> Another workaround, which is probably not worth using, is that if a file is >> loaded with 'readonly' set, Vim doesn't create a swap file until the first >> change. You might be able to take advantage of this. > > What about this idea: > > function! ChangeSwap() > let dir=&dir > set dir=/tmp > set swapfile! > set swapfile! > let &dir=dir > endfunction > > au BufReadPost ../DrobBox/* :call ChangeSwap()
I don't understand the intent here, ChangeSwap() would set all values back to original by the time the function quits? -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php
