Check misspelled words reported by aspell against the user dictionaries

so that the current document's ignored words are not returned back to
the spell checker.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@29703 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
wlux 2010-02-22 20:34:45 +00:00
parent 5b80e81b15
commit 5277f2a90d
2 changed files with 24 additions and 3 deletions

View file

@ -1,3 +1,10 @@
2010-02-22 Wolfgang Lux <wolfgang.lux@gmail.com>
* Tools/GSspell.m (-spellServer:findMisspelledWord...): Check
misspelled words reported by aspell against the user dictionaries
so that the current document's ignored words are not returned back
to the spell checker.
2010-02-21 Fred Kiefer <FredKiefer@gmx.de> 2010-02-21 Fred Kiefer <FredKiefer@gmx.de>
* Headers/Additions/GNUstepGUI/GSDisplayServer.h: * Headers/Additions/GNUstepGUI/GSDisplayServer.h:

View file

@ -284,6 +284,8 @@ findMisspelledWordInString: (NSString *)stringToCheck
const char *p; const char *p;
AspellToken token; AspellToken token;
AspellDocumentChecker *checker; AspellDocumentChecker *checker;
NSRange r;
NSString *word;
int length; int length;
if (countOnly) if (countOnly)
@ -300,11 +302,23 @@ findMisspelledWordInString: (NSString *)stringToCheck
checker = [self documentCheckerForLanguage: language]; checker = [self documentCheckerForLanguage: language];
aspell_document_checker_process(checker, p, length); aspell_document_checker_process(checker, p, length);
token = aspell_document_checker_next_misspelling(checker);
return NSMakeRange(uniLength((unsigned char *)p, token.offset), /* Even though we add learned words to aspell's user dictionary, we must
uniLength((unsigned char *)p + token.offset, token.len)); ask the server for words in its user dictionaries so that words that
the user has ignored won't be returned as misspelled. */
do
{
token = aspell_document_checker_next_misspelling(checker);
if (token.len == 0)
return NSMakeRange(NSNotFound, 0);
r = NSMakeRange(uniLength((unsigned char *)p, token.offset),
uniLength((unsigned char *)p + token.offset, token.len));
word = [stringToCheck substringWithRange: r];
}
while ([sender isWordInUserDictionaries: word caseSensitive: YES]);
return r;
} }
- (NSArray *) spellServer: (NSSpellServer *)sender - (NSArray *) spellServer: (NSSpellServer *)sender