]> git.lyx.org Git - features.git/blobdiff - src/Paragraph.cpp
Export ' as ’ in HTML
[features.git] / src / Paragraph.cpp
index 1e9f1fb4da3c0ba130745100b3a4eff6bcf2998a..f2709c8b4c196dc9438e3cc14c853d6b5f7b6240 100644 (file)
@@ -1209,26 +1209,41 @@ void Paragraph::Private::latexSpecialChar(otexstream & os,
 {
        char_type const c = owner_->getUChar(bparams, runparams, i);
 
-       if (style.pass_thru || runparams.pass_thru || (runparams.for_searchAdv != OutputParams::NoSearch)
+       if (style.pass_thru || runparams.pass_thru || runparams.find_effective()
            || contains(style.pass_thru_chars, c)
            || contains(runparams.pass_thru_chars, c)) {
-               if (runparams.for_searchAdv != OutputParams::NoSearch) {
-                       if (c == '\\')
+               if (runparams.find_effective()) {
+                       switch (c) {
+                       case '\\':
                                os << "\\\\";
-                       else if (c == '{')
+                               return;
+                       case '{':
                                os << "\\braceleft ";
-                       else if (c == '}')
+                               return;
+                       case '}':
                                os << "\\braceright ";
-                       else if (c != '\0')
+                               return;
+                       case '$':
+                               os << "\\lyxdollar ";
+                               return;
+                       case '~':
+                               os << "\\lyxtilde ";
+                               return;
+                       case ' ':
+                       case '\0':
+                               break;
+                       default:
                                os.put(c);
+                               return;
+                       }
                }
                else if (c != '\0') {
                        Encoding const * const enc = runparams.encoding;
                        if (enc && !enc->encodable(c))
                                throw EncodingException(c);
                        os.put(c);
+                       return;
                }
-               return;
        }
 
        // TIPA uses its own T3 encoding
@@ -2610,7 +2625,7 @@ void Paragraph::latex(BufferParams const & bparams,
                                                runparams);
                                runningChange = Change(Change::UNCHANGED);
 
-                               os << (isEnvSeparator(i) ? "}]~" : "}] ");
+                               os << ((isEnvSeparator(i) && !runparams.find_effective()) ? "}]~" : "}] ");
                                column +=3;
                        }
                        // For InTitle commands, we have already opened a group
@@ -2640,10 +2655,10 @@ void Paragraph::latex(BufferParams const & bparams,
 
                // Check whether a display math inset follows
                bool output_changes;
-               if (runparams.for_searchAdv == OutputParams::NoSearch)
+               if (!runparams.find_effective())
                        output_changes = bparams.output_changes;
                else
-                       output_changes = ((runparams.for_searchAdv & OutputParams::SearchWithDeleted) != 0);
+                       output_changes = runparams.find_with_deleted();
                if (c == META_INSET
                    && i >= start_pos && (end_pos == -1 || i < end_pos)) {
                        if (isDeleted(i))
@@ -3997,6 +4012,8 @@ docstring Paragraph::simpleLyXHTMLOnePar(Buffer const & buf,
                                               runparams, i);
                        if (c == ' ' && (style.free_spacing || runparams.free_spacing))
                                xs << XMLStream::ESCAPE_NONE << "&nbsp;";
+                       else if (c == '\'')
+                               xs << XMLStream::ESCAPE_NONE << "&#8217;";
                        else
                                xs << c;
                }
@@ -4560,32 +4577,6 @@ void Paragraph::changeCase(BufferParams const & bparams, pos_type pos,
        }
 }
 
-static char_type matchquote(char_type in)
-{
-       switch (in) {
-               case 0x2018:    // Left Single Quotation Mark
-               case 0x2019:    // Right Single Quotation Mark
-               case 0x201a:    // Single Low-9 Quotation Mark
-               case 0x201b:    // Single High-Reversed-9 Quotation Mark 
-               case 0x2039:    // Single Left-Pointing Angle Quotation Mark
-               case 0x203a:    // Single Right-Pointing Angle Quotation Mark
-                       return '\'';
-               case 0x00bb:    // Right-Pointing Double Angle Quotation Mark
-               case 0x00ab:    // Left-Pointing Double Angle Quotation Mark
-               case 0x201e:    // Double Low-9 Quotation Mark 
-               case 0x201c:    // Left Double Quotation Mark 
-               case 0x201d:    // Right Double Quotation Mark 
-               case 0x201f:    // Double High-Reversed-9 Quotation Mark 
-               case 0x2e42:    // Double Low-Reversed-9 Quotation Mark
-               case 0x301e:    // Double Prime Quotation Mark
-               case 0x301d:    // Reversed Double Prime Quotation Mark
-               case 0x301f:    // Low Double Prime Quotation Mark
-                       return '"';
-               default:
-                       return in;
-       }
-}
-
 int Paragraph::find(docstring const & str, bool cs, bool mw,
                pos_type start_pos, bool del) const
 {
@@ -4612,7 +4603,7 @@ int Paragraph::find(docstring const & str, bool cs, bool mw,
                        odocstringstream os;
                        if (inset->lyxCode() == lyx::QUOTE_CODE) {
                                OutputParams op(0);
-                               op.for_searchAdv = OutputParams::SearchQuick;
+                               op.find_set_feature(OutputParams::SearchQuick);
                                inset->plaintext(os, op);
                        }
                        else {
@@ -4622,9 +4613,8 @@ int Paragraph::find(docstring const & str, bool cs, bool mw,
                        if (!insetstring.empty()) {
                                int const insetstringsize = insetstring.length();
                                for (int j = 0; j < insetstringsize && pos < parsize; ++i, ++j) {
-                                       char_type ij = matchquote(insetstring[j]);
-                                       if ((cs && str[i] != ij)
-                                           || (!cs && uppercase(str[i]) != uppercase(ij))) {
+                                       if ((cs && str[i] != insetstring[j])
+                                           || (!cs && uppercase(str[i]) != uppercase(insetstring[j]))) {
                                                nonmatch = true;
                                                break;
                                        }
@@ -4634,7 +4624,7 @@ int Paragraph::find(docstring const & str, bool cs, bool mw,
                }
                if (nonmatch || i == strsize)
                        break;
-               char_type dp = matchquote(d->text_[pos]);
+               char_type dp = d->text_[pos];
                if (cs && str[i] != dp)
                        break;
                if (!cs && uppercase(str[i]) != uppercase(dp))