Hi,

The following code makes vim crash sometimes.

fun! MakeVimCrash()
    redir => lets
    silent let
    redir END
endf
call MakeVimCrash()

It doesn't crash always. Sometimes I have to call the function twice.

I now ran a few more tests. It appears that vim is more likely to crash
when loading more plugins. When I remove plugins, I can call the
function more often. I'm not able to pin it down this problem to one
specific plugin though.

BTW, this is part of the following function:

fun! ResetOption(name)
    if empty(a:name)
        redir => lets
        silent let
        redir END
        let options = split(lets, "\n")
        call filter(options, 'v:val =~ ''^[^_]\+_default\s''')
        call map(options, 'matchstr(v:val, ''^[^_]\+\ze_default\s'')')
        call filter(options, 'exists("&".v:val)')
    else
        let options = split(a:name, '\W\+')
    endif
    for name in options
        let name0 = 'g:'. name .'_default'
        if exists(name0)
            exec 'let &'. name .' = '. name0
        endif
    endfor
endf
command! -nargs=* ResetOption :call ResetOption(<q-args>)

Use it like this (eg to deal with misbehaving plugins changing global
options):

let g:tabstop_default = 4
let &tabstop = g:tabstop_default

let &tabstop = 8
ResetOption

Unfortunately :set doesn't provide a way to (re)set user-defined default
values, it seems.

Regards,
Thomas.




Reply via email to