On 8/21/06, Bob Hiestand <[EMAIL PROTECTED]> wrote:
On 8/21/06, Jürgen Krämer <[EMAIL PROTECTED]> wrote: > > Hi, > > Yakov Lerner wrote: > > > > Now that my attempt to write unnamed buffer under > > name /tmp/N failed, I want to autoname empty buffer. > > My first attempt does not work. Autoevent is ot invoked. > > > > function! TempName() > > let x=1 > > while filereadable("/tmp/".x) > > let x = x + 1 > > endwhile > > return "/tmp/".x > > endfun > > > > au BufNew * if(expand('<afile>') == '') | call input("AAA") | endif > > au BufNew * if(expand('<afile>') == '') | exe "file ".TempName() | endif > > I checked it with this autocommand > > au! BufNew * > \ if expand('<afile>') == '' | > \ exe 'file ' . input('Enter file name: ') | > \ else | > \ echomsg 'File already has a name' | > \ endif > > It seems to be triggered, but when the 'file' command is executed, VIM > is still in the original buffer thus renaming this one instead of the > new one. One way to circumvent this problem I can think of is to use the > BufNew event to store the new file name in a variable and to use this > variable in a BufEnter event. The following code should do this, but it > is untested: > > au! BufNew * > \ if expand('<afile>') == '' | > \ let new_file_name = input('Enter file name: ') | > \ else | > \ echomsg 'File already has a name' | > \ endif > > au! BufEnter * > \ if expand('<afile>') == '' && exists('new_file_name') | > \ exe 'file ' . new_file_name | > \ unlet new_file_name | > \ endif > > Regards, > JürgenWhy not change to the new buffer? Something like: :au BufAdd * if expand('<afile>')==''|execute 'buffer' expand('<abuf>')|execute 'file' tempname()|endif
This is nice, but. This works for :new (I tried BufNew), but still does not work for that empty buffer #1 that is created when vim is invoked without commandline arguments. I want it to work for the initial empty buffer, too. Yakov
