]> git.lyx.org Git - features.git/commitdiff
* Thesaurus.cpp:
authorJürgen Spitzmüller <spitz@lyx.org>
Wed, 10 Feb 2010 10:24:10 +0000 (10:24 +0000)
committerJürgen Spitzmüller <spitz@lyx.org>
Wed, 10 Feb 2010 10:24:10 +0000 (10:24 +0000)
* docstring.{cpp,h}:
- move conversion functions to_iconv_encoding and from_iconv_encoding
  from Thesaurus to docstring.

* HunspellChecker.cpp:
- use correct encoding for string conversion.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33407 a592a061-630c-0410-9148-cb99ea01b6c8

src/HunspellChecker.cpp
src/Thesaurus.cpp
src/support/docstring.cpp
src/support/docstring.h

index 8c47fdb070cc17ebfe15eb425058b7ab13e66d1f..e85338ddd4a169d1afbd4172d977d04baded6a31 100644 (file)
@@ -183,11 +183,14 @@ SpellChecker::Result HunspellChecker::check(WordLangTuple const & wl)
        if (d->isIgnored(wl))
                return OK;
 
-       string const word_to_check = to_utf8(wl.word());
        Hunspell * h = d->speller(wl.lang()->code());
        if (!h)
                return OK;
        int info;
+
+       string const encoding = h->get_dic_encoding();
+       string const word_to_check = to_iconv_encoding(wl.word(), encoding);
+       
        if (h->spell(word_to_check.c_str(), &info))
                return OK;
 
@@ -224,16 +227,17 @@ void HunspellChecker::suggest(WordLangTuple const & wl,
        docstring_list & suggestions)
 {
        suggestions.clear();
-       string const word_to_check = to_utf8(wl.word());
        Hunspell * h = d->speller(wl.lang()->code());
        if (!h)
                return;
+       string const encoding = h->get_dic_encoding();
+       string const word_to_check = to_iconv_encoding(wl.word(), encoding);
        char ** suggestion_list;
        int const suggestion_number = h->suggest(&suggestion_list, word_to_check.c_str());
        if (suggestion_number <= 0)
                return;
        for (int i = 0; i != suggestion_number; ++i)
-               suggestions.push_back(from_utf8(suggestion_list[i]));
+               suggestions.push_back(from_iconv_encoding(suggestion_list[i], encoding));
        h->free_list(&suggestion_list, suggestion_number);
 }
 
index f3814baaf7adc4bf246f4ca3c52ea715589063c9..a0f15150f4f33ec11b976ef356fec140e82bd444 100644 (file)
@@ -21,7 +21,6 @@
 #include "support/gettext.h"
 #include "support/lstrings.h"
 #include "support/os.h"
-#include "support/unicode.h"
 
 #include "support/mythes/mythes.hxx"
 
@@ -38,21 +37,6 @@ namespace lyx {
 
 namespace {
 
-string const to_iconv_encoding(docstring const & s, string const & encoding)
-{
-       std::vector<char> const encoded =
-               ucs4_to_eightbit(s.data(), s.length(), encoding);
-       return string(encoded.begin(), encoded.end());
-}
-
-
-docstring const from_iconv_encoding(string const & s, string const & encoding)
-{
-       std::vector<char_type> const ucs4 =
-               eightbit_to_ucs4(s.data(), s.length(), encoding);
-       return docstring(ucs4.begin(), ucs4.end());
-}
-
 typedef std::map<docstring, MyThes *> Thesauri;
 
 } // namespace anon
index b3417f7f26cd6a889a5e7d73f2a566eae4ccaf7b..86deda1d869de654064c2a38c661d47c08c93a48 100644 (file)
@@ -152,6 +152,22 @@ string const to_filesystem8bit(docstring const & s)
 }
 
 
+string const to_iconv_encoding(docstring const & s, string const & encoding)
+{
+       std::vector<char> const encoded =
+               ucs4_to_eightbit(s.data(), s.length(), encoding);
+       return string(encoded.begin(), encoded.end());
+}
+
+
+docstring const from_iconv_encoding(string const & s, string const & encoding)
+{
+       std::vector<char_type> const ucs4 =
+               eightbit_to_ucs4(s.data(), s.length(), encoding);
+       return docstring(ucs4.begin(), ucs4.end());
+}
+
+
 docstring const normalize_c(docstring const & s)
 {
        return qstring_to_ucs4(toqstr(s).normalized(QString::NormalizationForm_C));
index 22dd2ffa4cf3c61cc08c1a1c6cf78b7caa7957f1..5eea0111a3a6f06bd450344d28e99fc7ccdd2dec 100644 (file)
@@ -57,6 +57,14 @@ docstring const from_filesystem8bit(std::string const & s);
 /// convert \p s from ucs4 to the encoding of the file system.
 std::string const to_filesystem8bit(docstring const & s);
 
+/// convert \p s from ucs4 to the \p encoding.
+std::string const to_iconv_encoding(docstring const & s,
+                                   std::string const & encoding);
+
+/// convert \p s from \p encoding to ucs4.
+docstring const from_iconv_encoding(std::string const & s,
+                                   std::string const & encoding);
+
 /// normalize \p s to precomposed form c
 docstring const normalize_c(docstring const & s);