Thanks a lot (also to Jürgen)
On Fri, 18 Dec 2020 02:06:18 -0800
Gary Johnson <garyjohn@spocom.com> wrote:
> On 2020-12-18, Manfred Lotz wrote:
> > I have a simple scratch buffer functionity in scratch.vim like
> > follows
> > 
> > if exists('g:loaded_scratch')
> >     finish
> > endif
> > let g:loaded_scratch = 1
> > 
> > let g:scratchbuf_no = 1
> > 
> > function! ScratchEdit(cmd)
> >     exe a:cmd '[Scratch' . g:scratchbuf_no . ']'
> >     let g:scratchbuf_no += 1
> > 
> >     setlocal buflisted
> >     setlocal noswapfile
> >     setlocal buftype=nofile
> >     setlocal bufhidden=hide
> >     setlocal foldcolumn=0
> >     setlocal nonumber
> > endfunction
> > 
> > command! -bar -nargs=* Scratch call ScratchEdit('edit')
> > 
> > (if above could/should be improved any advice is welcome)
> > 
> > 
> > Sometimes when issueing :Scratch I get
> > 
> > E77: Too many files
> > 
> > Then after some minutes when switching buffers (but not having
> > closed any buffer) I can do :Scratch without any errors.
> > 
> > Any ideas how to find out what the cause is?  
> 
> The problem is that your edit command,
> 
>     exe a:cmd '[Scratch' . g:scratchbuf_no . ']'
> 
> expands to this, when g:scratchbuf_no is 1, for example:
> 
>     edit [Scratch1]
> 
> Vim looks for a file matching the glob "[Scratch1]", which is
> a single character in the set "S c r a t c h 1".  If the glob
> doesn't match any files, the buffer name "[Scratch1]" is used.  If
> the glob matches one file, that file is opened.  If you happen to
> have more than one file with a single-character name from that set,
> then that glob will match more that one file and you will get E77.
> 
> You can fix that problem by escaping the brackets like this:
> 
>     exe a:cmd '\[Scratch' . g:scratchbuf_no . '\]'
> 
> Some years ago I wrote a similar function to create a scratchpad
> buffer with a name enclosed in brackets with results similar to
> yours.  I was very confused until the "Aha!" moment.
> 
Your explanations hit the nail on the head. 
I tested it by creating two files S and r and E77 showed up! Your
suggestion (no surprise) fixed it.
Thanks again.
-- 
Best, Manfred
-- 
-- 
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
--- 
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/vim_use/20201218192448.16cb67cf%40hogwart.
No comments:
Post a Comment