]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetIndex.cpp
tex2lyx/text.cpp: fix typos
[lyx.git] / src / insets / InsetIndex.cpp
index fe50bf4fea7ccd5b050cbfe7fb2991a8e045c2e7..4bb2d4dfa6a53562c7c330fd944262973dcee5bf 100644 (file)
@@ -65,7 +65,7 @@ void InsetIndex::latex(otexstream & os, OutputParams const & runparams_in) const
        if (buffer().masterBuffer()->params().use_indices && !params_.index.empty()
            && params_.index != "idx") {
                os << "\\sindex[";
-               os << params_.index;
+               os << escape(params_.index);
                os << "]{";
        } else {
                os << "\\index";
@@ -134,15 +134,11 @@ void InsetIndex::latex(otexstream & os, OutputParams const & runparams_in) const
                        // the sorting part are representable in the current
                        // encoding. If not try the LaTeX macro which might
                        // or might not be a good choice, and issue a warning.
-                       docstring spart2;
-                       for (size_t n = 0; n < spart.size(); ++n) {
-                               try {
-                                       spart2 += runparams.encoding->latexChar(spart[n]);
-                               } catch (EncodingException & /* e */) {
+                       pair<docstring, docstring> spart_latexed =
+                               runparams.encoding->latexString(spart, runparams.dryrun);
+                       if (!spart_latexed.second.empty())
                                        LYXERR0("Uncodable character in index entry. Sorting might be wrong!");
-                               }
-                       }
-                       if (spart != spart2 && !runparams.dryrun) {
+                       if (spart != spart_latexed.first && !runparams.dryrun) {
                                // FIXME: warning should be passed to the error dialog
                                frontend::Alert::warning(_("Index sorting failed"),
                                bformat(_("LyX's automatic index sorting algorithm faced\n"
@@ -152,7 +148,7 @@ void InsetIndex::latex(otexstream & os, OutputParams const & runparams_in) const
                        }
                        // remove remaining \'s for the sorting part
                        docstring const ppart =
-                               subst(spart2, from_ascii("\\"), docstring());
+                               subst(spart_latexed.first, from_ascii("\\"), docstring());
                        os << ppart;
                        os << '@';
                }
@@ -244,8 +240,7 @@ bool InsetIndex::getStatus(Cursor & cur, FuncRequest const & cmd,
                                from_utf8(cmd.getArg(1)) == params_.index);
                        return true;
                }
-               flag.setEnabled(true);
-               return true;
+               return InsetCollapsable::getStatus(cur, cmd, flag);
 
        case LFUN_INSET_DIALOG_UPDATE: {
                Buffer const & realbuffer = *buffer().masterBuffer();
@@ -315,7 +310,7 @@ docstring const InsetIndex::buttonLabel(BufferView const & bv) const
 
 void InsetIndex::write(ostream & os) const
 {
-       os << to_utf8(name());
+       os << to_utf8(layoutName());
        params_.write(os);
        InsetCollapsable::write(os);
 }
@@ -357,7 +352,7 @@ void InsetIndex::addToToc(DocIterator const & cpit) const
        DocIterator pit = cpit;
        pit.push_back(CursorSlice(const_cast<InsetIndex &>(*this)));
        docstring str;
-       text().forToc(str, TOC_ENTRY_LENGTH);
+       text().forToc(str, 0);
        buffer().tocBackend().toc("index").push_back(TocItem(pit, 0, str));
        // Proceed with the rest of the inset.
        InsetCollapsable::addToToc(cpit);
@@ -374,9 +369,9 @@ void InsetIndex::validate(LaTeXFeatures & features) const
 }
 
 
-docstring InsetIndex::contextMenuName() const
+string InsetIndex::contextMenuName() const
 {
-       return from_ascii("context-index");
+       return "context-index";
 }
 
 
@@ -430,7 +425,8 @@ ParamInfo const & InsetPrintIndex::findInfo(string const & /* cmdName */)
 {
        static ParamInfo param_info_;
        if (param_info_.empty()) {
-               param_info_.add("type", ParamInfo::LATEX_OPTIONAL);
+               param_info_.add("type", ParamInfo::LATEX_OPTIONAL,
+                        ParamInfo::HANDLING_ESCAPE);
                param_info_.add("name", ParamInfo::LATEX_REQUIRED);
        }
        return param_info_;
@@ -497,6 +493,7 @@ void InsetPrintIndex::doDispatch(Cursor & cur, FuncRequest & cmd)
                        cur.noScreenUpdate();
                        break;
                }
+               cur.recordUndo();
                setParams(p);
                break;
        }
@@ -573,10 +570,10 @@ void InsetPrintIndex::validate(LaTeXFeatures & features) const
 }
 
 
-docstring InsetPrintIndex::contextMenuName() const
+string InsetPrintIndex::contextMenuName() const
 {
        return buffer().masterBuffer()->params().use_indices ?
-               from_ascii("context-indexprint") : docstring();
+               "context-indexprint" : string();
 }
 
 
@@ -663,9 +660,12 @@ struct IndexEntry
 
 bool operator<(IndexEntry const & lhs, IndexEntry const & rhs)
 {
-       return lhs.main < rhs.main
-                       || (lhs.main == rhs.main && lhs.sub < rhs.sub)
-                       || (lhs.main == rhs.main && lhs.sub == rhs.sub && lhs.subsub < rhs.subsub);
+       int comp = compare_no_case(lhs.main, rhs.main);
+       if (comp == 0)
+               comp = compare_no_case(lhs.sub, rhs.sub);
+       if (comp == 0)
+               comp = compare_no_case(lhs.subsub, rhs.subsub);
+       return (comp < 0);
 }
 
 } // anon namespace
@@ -730,13 +730,11 @@ docstring InsetPrintIndex::xhtml(XHTMLStream &, OutputParams const & op) const
                                // close last entry or entries, depending.
                                if (level == 3) {
                                        // close this sub-sub-entry
-                                       xs << html::EndTag("li");
-                                       xs.cr();
+                                       xs << html::EndTag("li") << html::CR();
                                        // is this another sub-sub-entry within the same sub-entry?
                                        if (!eit->same_sub(last)) {
                                                // close this level
-                                               xs << html::EndTag("ul");
-                                               xs.cr();
+                                               xs << html::EndTag("ul") << html::CR();
                                                level = 2;
                                        }
                                }
@@ -747,13 +745,11 @@ docstring InsetPrintIndex::xhtml(XHTMLStream &, OutputParams const & op) const
                                // sub-entry. In that case, we do not want to close anything.
                                if (level == 2 && !eit->same_sub(last)) {
                                        // close sub-entry 
-                                       xs << html::EndTag("li");
-                                       xs.cr();
+                                       xs << html::EndTag("li") << html::CR();
                                        // is this another sub-entry with the same main entry?
                                        if (!eit->same_main(last)) {
                                                // close this level
-                                               xs << html::EndTag("ul");
-                                               xs.cr();
+                                               xs << html::EndTag("ul") << html::CR();
                                                level = 1;
                                        }
                                }
@@ -762,8 +758,7 @@ docstring InsetPrintIndex::xhtml(XHTMLStream &, OutputParams const & op) const
                                // close the entry.
                                if (level == 1 && !eit->same_main(last)) {
                                        // close entry
-                                       xs << html::EndTag("li");
-                                       xs.cr();
+                                       xs << html::EndTag("li") << html::CR();
                                }
                        }
 
@@ -809,8 +804,8 @@ docstring InsetPrintIndex::xhtml(XHTMLStream &, OutputParams const & op) const
                                           << XHTMLStream::ESCAPE_NONE << sub;
                                if (!subsub.empty()) {
                                        // it's actually a subsubentry, so we need to start that list
-                                       xs.cr();
-                                       xs << html::StartTag("ul", "class='subsubentry'") 
+                                       xs << html::CR()
+                                          << html::StartTag("ul", "class='subsubentry'") 
                                           << html::StartTag("li", "class='subsubentry'") 
                                           << XHTMLStream::ESCAPE_NONE << subsub;
                                        level = 3;
@@ -830,15 +825,15 @@ docstring InsetPrintIndex::xhtml(XHTMLStream &, OutputParams const & op) const
                                        xs << html::StartTag("li", "class='main'") << main;
                                if (!sub.empty()) {
                                        // there's a sub-entry, too
-                                       xs.cr();
-                                       xs << html::StartTag("ul", "class='subentry'") 
+                                       xs << html::CR()
+                                          << html::StartTag("ul", "class='subentry'") 
                                           << html::StartTag("li", "class='subentry'") 
                                           << XHTMLStream::ESCAPE_NONE << sub;
                                        level = 2;
                                        if (!subsub.empty()) {
                                                // and a sub-sub-entry
-                                               xs.cr();
-                                               xs << html::StartTag("ul", "class='subsubentry'") 
+                                               xs << html::CR()
+                                                  << html::StartTag("ul", "class='subsubentry'") 
                                                   << html::StartTag("li", "class='subsubentry'") 
                                                   << XHTMLStream::ESCAPE_NONE << subsub;
                                                level = 3;
@@ -855,12 +850,10 @@ docstring InsetPrintIndex::xhtml(XHTMLStream &, OutputParams const & op) const
        }
        // now we have to close all the open levels
        while (level > 0) {
-               xs << html::EndTag("li") << html::EndTag("ul");
-               xs.cr();
+               xs << html::EndTag("li") << html::EndTag("ul") << html::CR();
                --level;
        }
-       xs << html::EndTag("div");
-       xs.cr();
+       xs << html::EndTag("div") << html::CR();
        return ods.str();
 }