- redir => out
- silent digraphs
- redir END
- redraw
- let digraphs = {}
- for line in split(out, '\n')
- for entry in split(line, " \\d\\+\\zs\\s\\+")
- let nr = matchstr(entry, '\d\+$')
- if nr ==# '10' && len(digraphs) <= 1
- let nr = 0
- endif
- if !has_key(digraphs, nr)
- let digraphs[nr] = []
- endif
- let digraphs[nr] += [matchstr(entry, '^..')]
+ if !exists('s:digraphs')
+ redir => out
+ silent digraphs
+ redir END
+ redraw
+ let s:digraphs = {}
+ for line in split(out, '\n')
+ for entry in split(line, " \\d\\+\\zs\\s*")
+ let nr = matchstr(entry, '\d\+$')
+ if nr ==# '10' && len(s:digraphs) <= 1
+ let nr = 0
+ endif
+ if !has_key(s:digraphs, nr)
+ let s:digraphs[nr] = []
+ endif
+ let s:digraphs[nr] += [matchstr(entry, '^..')]
+ endfor