On Thu, 28 Jun 2012, Ben Fritz wrote:

On Thursday, June 28, 2012 4:44:19 AM UTC-5, Benjamin R. Haskell wrote:
Are there VimL functions for determining that Vim has marked a word as misspelled? E.g. so the highlighting could be exported in something similar to TOhtml.

I recently installed this, which populates the quickfix list with spelling errors, but I haven't looked at how it works yet:

http://www.vim.org/scripts/script.php?script_id=3844

Thanks. I didn't find the spellbadword() function before, because it's the 53rd item when tab-completing :help spell<Tab>.

Unfortunately, spellbadword() can change the cursor position. But, c'est la vie. I like Ingo's approach:

" pseudocode

" {{{ prevent looping, save the setting and view
let saved_wrapscan = &wrapscan
set nowrapscan

let saved_view = winsaveview()
" }}}

sil! norm! gg0]s   " go to first error

while 1
  let start_pos = getpos('.')

  sil! norm! ]s    " go to next error

  let error_pos = getpos('.')
  let [word, type] = spellbadword()

  if error_pos == start_pos " then, there was no error
    break
  end
endwhile

" {{{ restore setting and view
call winrestview(saved_view)
let &wrapscan = saved_wrapscan
" }}}

In a few places he uses ]s[s (instead of just ]s), but I don't quite understand what it's working around (code comment mentions something about multiple errors on one line).



I have in the TOhtml TODO list, adding guisp highlighting. I'm not exactly sure how I want to accomplish it though. It might be converted to a dotted underline or something of the appropriate color.

CSS3 is adding properties that will make it properly-possible¹. This is one way it will eventually work:

.undercurl {
  text-decoration-line: underline;
  text-decoration-style: wavy;
  text-decoration-color: red;
  /* possibly also: */ text-underline-position: alphabetic;
}

Shorter:

.undercurl {
  text-decoration: red wavy underline;
}

Firefox has vendor-prefixed CSS properties² for some of this already. The following worked for me (in FF) to simulate this Vim:

.SpellBad {
  /* hi SpellBad gui=undercurl guisp=#ff0000 */
  -moz-text-decoration-line: underline;
  -moz-text-decoration-style: wavy;
  -moz-text-decoration-color: #ff0000;
  /* text-decoration: #ff0000 wavy underline; // not yet working, even with 
-moz- */
}

--
Best,
Ben H

¹: text-decoration-style - http://www.w3.org/TR/css3-text/#text-decoration-style

²: http://peter.sh/experiments/vendor-prefixed-css-property-overview/

--
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

Reply via email to