On Sa, 07 Sep 2013, Gary Johnson wrote:

> On 2013-08-12, Gary Johnson wrote:
> > On 2013-08-12, Christian Brabandt wrote:
> 
> > > Oh well, here is an updated version attached. Yes, it is really 
> > > attached...
> > 
> > I'm glad to have the updated patch.  Thank you.  It is working fine
> > so far.  I'll let you know if that changes.
> 
> I just noticed an odd behavior of the spell feature with your patch
> included.  I did not have 'spell' enabled but checked the spelling
> of a word with z=.  The word was not in the list, so I found the
> correct spelling on the web, changed the word in my text, and
> attempted to add it to my spelling list with zg.  Two messages
> appeared:
> 
>     E756: Spell checking is not enabled
>     Word added to ~/.vim/spell/en.utf-8.add
> 
> Since the word was added successfully, it seems that the error
> message should not have appeared.

That is actually a strange behaviour of normal Vim and has nothing to do 
with my patch.

Bram,
problem is, nv_zet calls spell_move_to() function, which errors out, if 
spell checking is not enabled. But if spell checking is not enabled, Vim 
uses find_ident_under_cursor() to get the identifier under the cursor and 
adds this nevertheless to the spellfile.

I think, this can cause vim to add/remove different words to the 
spellfile, depending on the 'spell' setting, but I am not sure, how to 
test (the second patch at least makes Vim mention, which word has been 
added/removed).

Here is a patch, that prevents the spurious E756 error in the case of 'zg/zb'

diff --git a/src/normal.c b/src/normal.c
--- a/src/normal.c
+++ b/src/normal.c
@@ -5247,7 +5247,9 @@
                        pos_T   pos = curwin->w_cursor;
 
                        /* Find bad word under the cursor. */
+                       emsg_off++; /* Avoid E576 error */
                        len = spell_move_to(curwin, FORWARD, TRUE, TRUE, NULL);
+                       emsg_off--;
                        if (len != 0 && curwin->w_cursor.col <= pos.col)
                            ptr = ml_get_pos(&curwin->w_cursor);
                        curwin->w_cursor = pos;

And this patch, explicitly tells the user, what word has been 
removed/added to the spellfile:

diff --git a/src/spell.c b/src/spell.c
--- a/src/spell.c
+++ b/src/spell.c
@@ -9479,7 +9479,7 @@
                        if (undo)
                        {
                            home_replace(NULL, fname, NameBuff, MAXPATHL, TRUE);
-                           smsg((char_u *)_("Word removed from %s"), NameBuff);
+                           smsg((char_u *)_("Word '%s' removed from %s"), 
word, NameBuff);
                        }
                    }
                    fseek(fd, fpos_next, SEEK_SET);
@@ -9525,7 +9525,7 @@
            fclose(fd);
 
            home_replace(NULL, fname, NameBuff, MAXPATHL, TRUE);
-           smsg((char_u *)_("Word added to %s"), NameBuff);
+           smsg((char_u *)_("Word '%s' added to %s"), word, NameBuff);
        }
     }

regards,
Christian
-- 
Man muß alt geworden sein, also gelebt haben, um zu erkennen, wie kurz
das Leben ist.
                -- Arthur Schopenhauer (Aphorismen zur Lebensweisheit)

-- 
-- 
You received this message from the "vim_dev" 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_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Raspunde prin e-mail lui