Thread: Re: feature-request: remember work-dir
Cream is a free, easy-to-use configuration of the Vim text editor
Brought to you by:
digitect
From: Steve H. <dig...@mi...> - 2004-06-16 21:34:10
|
From: Falk Pauser, Jun 16, 2004 9:17 AM > > hi, > > > I'm an old UltraEdit user myself (back in the days of 5.x). When I > > switched to Vim, this was one of the things I missed. There's an > > easy way to get this functionality: > > > > " Set cwd to the directory of the current buffer autocmd BufEnter > > * cd %:p:h > > i tried it, but it only works when accessing files via ":file ". > trying to open files using the "open"-dialog starts in the last used > directory. > > maybe there's also a solution get exactly the same behavior using > the "open" dialog instead if ":file xyz"? Try replacing the function Cream_file_open() in cream-lib.vim with the one below. Work? Steve Hall [ dig...@mi... ] _____________________________________________________________________ function! Cream_file_open(...) " open file using dialog " * optional argument is file to be opened (without dialog) " * disallow opening in Calendar window " * disallow opening in Opsplorer window " window management (not from a special) if Cream_buffer_isspecial(bufnr("%")) call Cream_TryAnotherWindow() endif " if argument passed if a:0 == 0 " open dialog "browse confirm edit let myfile = browse(0, "Select file", fnamemodify(bufname('%'), ':p:h'), '') else let myfile = a:1 " make sure we can edit! if filewritable(myfile) == 2 call confirm( \ "Can not edit a directory!\n" . \ "\n", "&Ok", 1, "Info") return endif if filereadable(myfile) == 0 call confirm( \ "Error: File does not exist!\n" . \ "\n", "&Ok", 1, "Error") return endif if filewritable(myfile) == 0 let n = confirm( \ "Warning!\n\n" . \ "File is not writable (read-only, permissions, etc.). Open anyway?\n" . \ "\n", "&Ok\n&Cancel", 1, "Warning") if n != 1 return endif endif endif " escape spaces let myfile = escape(myfile, ' ') " open in current window execute "edit " . myfile endfunction |
From: Falk P. <pa...@gm...> - 2004-06-16 22:27:47
|
Hi Steve, > Try replacing the function Cream_file_open() in cream-lib.vim with > the one below. Work? > > Steve Hall [ dig...@mi... ] > > _____________________________________________________________________ > function! Cream_file_open(...) > " open file using dialog > " * optional argument is file to be opened (without dialog) > " * disallow opening in Calendar window > " * disallow opening in Opsplorer window > > " window management (not from a special) > if Cream_buffer_isspecial(bufnr("%")) > call Cream_TryAnotherWindow() > endif > > " if argument passed > if a:0 == 0 > " open dialog > "browse confirm edit > let myfile = browse(0, "Select file", fnamemodify(bufname('%'), ':p:h'), '') > else > let myfile = a:1 > " make sure we can edit! > if filewritable(myfile) == 2 > call confirm( > \ "Can not edit a directory!\n" . > \ "\n", "&Ok", 1, "Info") > return > endif > if filereadable(myfile) == 0 > call confirm( > \ "Error: File does not exist!\n" . > \ "\n", "&Ok", 1, "Error") > return > endif > if filewritable(myfile) == 0 > let n = confirm( > \ "Warning!\n\n" . > \ "File is not writable (read-only, permissions, etc.). Open anyway?\n" . > \ "\n", "&Ok\n&Cancel", 1, "Warning") > if n != 1 > return > endif > endif > > endif > > " escape spaces > let myfile = escape(myfile, ' ') > > " open in current window > execute "edit " . myfile > > endfunction This works great - thank you! I'd consider this a major improvement as this missing "remember-workdir"-feature really annoyed me a lot! ;) -- Falk |