Mercurial > vim
diff runtime/menu.vim @ 2293:e0fabd886db6 vim73
Fix bug: spell menu moved cursor, causing Copy not to work. Spell replacement
didn't work in 'compatible' mode.
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Sat, 10 Jul 2010 16:36:59 +0200 |
parents | c6f1aa1e9f32 |
children | f177a6431514 |
line wrap: on
line diff
--- a/runtime/menu.vim +++ b/runtime/menu.vim @@ -901,7 +901,6 @@ if has("spell") let [w, a] = spellbadword() if col('.') > curcol " don't use word after the cursor let w = '' - call cursor(0, curcol) " put the cursor back where it was endif if w != '' if a == 'caps' @@ -909,12 +908,13 @@ if has("spell") else let s:suglist = spellsuggest(w, 10) endif - if len(s:suglist) <= 0 - call cursor(0, curcol) " put the cursor back where it was - else + if len(s:suglist) > 0 let s:changeitem = 'change\ "' . escape(w, ' .'). '"\ to' let s:fromword = w let pri = 1 + " set 'cpo' to include the <CR> + let cpo_save = &cpo + set cpo&vim for sug in s:suglist exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .') \ . ' :call <SID>SpellReplace(' . pri . ')<CR>' @@ -928,12 +928,16 @@ if has("spell") exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>' anoremenu 1.8 PopUp.-SpellSep- : + let &cpo = cpo_save endif endif + call cursor(0, curcol) " put the cursor back where it was endfunc func! <SID>SpellReplace(n) let l = getline('.') + " Move the cursor to the start of the word. + call spellbadword() call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1] \ . strpart(l, col('.') + len(s:fromword) - 1)) endfunc