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.

Regards,
Gary

-- 
-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_use/20201218100618.GA23529%40phoenix.

Reply via email to