IMHO there is no need to maintain dual hunspell/OSX spellchecker backends. There are addon OSX spellcheckers for other languages e.g. http://www.mitzpettel.com/software/hspell.php . Writing additional spelling servers is pretty simple so I think the correct approach would be:
1. Getting OSX spelling/grammar checking support working well. 2. If the need arises, wrapping hunspell as an Apple Spelling service and provide it as a separate project users can install. Best regards, Jeremy On Tue, Jun 9, 2009 at 5:32 PM, Paul Wicks <pwick...@gmail.com> wrote: > Crap, sorry to post an incomplete version of this post earlier. > Accidentally hit send before I finished it. Argh... > > Anyway, > > I've been looking at implementing support for the OS X spellchecker on the > Mac build as part of my SoC project and I thought I'd run some thoughts I > had today by the list. > > For the basic design, both hunspell and the os x spellchecker need to be > usable, since hunspell supports more languages than OS X does. The public > interface of the Spellchecker class is fairly small (mainly 2 methods: > SpellCheckWord, AddWord). It seems that mapping these onto the OS X > spellchecker shouldn't be too hard. I originally thought to do something > more elaborate and create seperate spellchecker classes for each platform, > but then realized that I could do it more simply as follows: > > -leave the majority of spellchecker.cc as is. It works and I don't see any > reason to mess with what works. > -for SpellCheckWord, change the call to hunspell_->spell(...) to call a > (new) private method in the SpellChecker class. In this method, add some > code at the beginning that will check if we are on the mac and if the > built-in spellchecker supports the current language and if so checks the > word using it, other wise using hunspell as before. This way, we can leave > the rest of the code alone and still use the SpellCheckWordIterator to grab > individual words out of the string. As for getting the suggestions for a > word, it might make sense to do things a little differently, since there is > no need to create and manage the char** suggestions variable to pass to > hunspell, as NSSpellChecker can give us an easy-to-iterate-through NSArray. > Probably just an #if defined(OS_MACOSX) would suffice here, since the code > here will be wholly different. > -for AddWord, their probably isn't as much of a need to abstract the > hunspell specific code (it's all hunspell code), so just an #if defined( > OS_MACOSX)+language support check would suffice. > -The other public methods all deal with language selection and querying, > which should remain the same, since the OS X spellchecker only supports a > subset of the languages supported by hunspell. (there may need to be a > little bit of code to translate between the codes for supported languages so > that the built-in spellchecker always gets used when it should, but this > should be a relatively simple matter. > -The private method IsValidContraction could call the same new private > method as defined above. > > -This way, the public interface stays the same and the mac folks get to use > their own dictionary. > -The newly added autocorrection code should work just the same as before, > as it relies on SpellCheckWord. > -also, [NSApplication sharedApplication] needs to be called before the the > built in spellchecker is used. I'm not sure of where the best place to put > this call is. > > The upside to doing it this way is that it should be relatively easy to > modify the spellchecking code for any one platform without breaking any > other. > The main downside that I can see for doing it this way is that for > languages that are supported by OS X, we will be keeping a hunspell object > around that we don't need, at least until the language changes to something > hunspell supports and os x doesn't > > There are a few additional features that the OS X spellchecker supports > that need some discussion. > 1. Grammar checker: I know I've seen some talk about adding this to > chromium somewhere. The OS X spellchecker also has support for checking the > grammar of a string (only in 10.5+), so that is something to keep in mind > when that stage is reached. > 2. Spelling Panel: The OS X spellchecker has support for a "Spelling > Panel". Similar to spellchecking in most word processors, this provides a > seperate GUI Panel that allows for checking a whole paragraph in one go. The > main problems here are that this is functionality that is in no way matched > by the Windows or Linux Builds. Additionally, it would require some way of > identifying the source of each word, since the spelling panel allows for the > creation of a list of ignored words, which are unique to a document. In the > case of chromium, a document would correspond to a given textfield, most > likely. The NSSpellChecker API provides a function (uniqueSpellDocumentTag) > to generate tags for this purpose, but a way would have to be found to > generate and match these tags up, which could be complicated (although I > admit that I've not spent a lot of time looking at the code that would need > to be altered to make this aspect of the spelling panel function). > > Any thoughts would be great. Thanks, > > > -Paul Wicks > > > > --~--~---------~--~----~------------~-------~--~----~ Chromium Developers mailing list: chromium-dev@googlegroups.com View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~----------~----~----~----~------~----~------~--~---