#include "InsetERT.h"
-#include "Buffer.h"
-#include "BufferParams.h"
-#include "BufferView.h"
#include "Cursor.h"
-#include "DispatchResult.h"
#include "FuncRequest.h"
#include "FuncStatus.h"
+#include "InsetLayout.h"
#include "Language.h"
-#include "Layout.h"
#include "Lexer.h"
-#include "LyXAction.h"
-#include "OutputParams.h"
#include "xml.h"
#include "ParagraphParameters.h"
#include "Paragraph.h"
-#include <output_docbook.h>
+#include "output_docbook.h"
#include "support/docstream.h"
#include "support/gettext.h"
#include <sstream>
+#include <iostream>
+
using namespace std;
using namespace lyx::support;
// in an ERT, use simple line breaks.
// New line after each paragraph of the ERT, save the last one.
while (true) { // For each paragraph in the ERT...
- auto pars = par->simpleDocBookOnePar(buffer(), runparams, text().outerFont(distance(begin, par)));
+ std::vector<docstring> pars_prepend;
+ std::vector<docstring> pars;
+ std::vector<docstring> pars_append;
+ tie(pars_prepend, pars, pars_append) = par->simpleDocBookOnePar(buffer(), runparams, text().outerFont(distance(begin, par)), 0, false, true);
+
+ for (docstring const & parXML : pars_prepend)
+ xs << XMLStream::ESCAPE_NONE << parXML;
auto p = pars.begin();
while (true) { // For each line of this ERT paragraph...
- os << *p;
+ os << *p;
++p;
if (p != pars.end())
os << "\n";
else
break;
}
+ for (docstring const & parXML : pars_append)
+ xs << XMLStream::ESCAPE_NONE << parXML;
++par;
if (par != end)
// auto lay = getLayout();
// }
- // Output the ERT as a comment with the appropriate escaping.
- xs << XMLStream::ESCAPE_NONE << "<!-- ";
- xs << XMLStream::ESCAPE_COMMENTS << os.str();
- xs << XMLStream::ESCAPE_NONE << " -->";
- xs << xml::CR();
+ // Output the ERT as a comment with the appropriate escaping if the command is not recognised.
+ if (trim(os.str()) == from_ascii("\\textquotesingle")) {
+ xs << "'";
+ } else {
+ xs << XMLStream::ESCAPE_NONE << "<!-- ";
+ xs << XMLStream::ESCAPE_COMMENTS << os.str();
+ xs << XMLStream::ESCAPE_NONE << " -->";
+ }
}
docstring const InsetERT::buttonLabel(BufferView const & bv) const
{
- if (decoration() == InsetLayout::CLASSIC)
- return isOpen(bv) ? _("ERT") : getNewLabel(_("ERT"));
- else
- return getNewLabel(_("ERT"));
+ // U+1F512 LOCK
+ docstring const locked = tempfile_ ? docstring(1, 0x1F512) : docstring();
+ if (decoration() == InsetDecoration::CLASSIC)
+ return locked + (isOpen(bv) ? _("ERT") : getNewLabel(_("ERT")));
+ return locked + getNewLabel(_("ERT"));
}