]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.cpp
Implement support for font options
[lyx.git] / src / Buffer.cpp
index 3b954407d933e1cc554c8278c0419b26e3272481..0882c3d3c31402b5a0a552ea2c394890322c01f2 100644 (file)
@@ -403,6 +403,12 @@ public:
        /// has been externally modified? Can be reset by the user.
        mutable bool externally_modified_;
 
+       ///Binding LaTeX lines with buffer positions.
+       //Common routine for LaTeX and Reference errors listing.
+        void traverseErrors(TeXErrors::Errors::const_iterator err,
+               TeXErrors::Errors::const_iterator end,
+               ErrorList & errorList) const;
+
 private:
        /// So we can force access via the accessors.
        mutable Buffer const * parent_buffer;
@@ -920,6 +926,9 @@ int Buffer::readHeader(Lexer & lex)
        params().headsep.erase();
        params().footskip.erase();
        params().columnsep.erase();
+       params().font_roman_opts.erase();
+       params().font_sans_opts.erase();
+       params().font_typewriter_opts.erase();
        params().fonts_cjk.erase();
        params().listings_params.clear();
        params().clearLayoutModules();
@@ -943,6 +952,7 @@ int Buffer::readHeader(Lexer & lex)
        params().biblatex_bibstyle.erase();
        params().biblatex_citestyle.erase();
        params().multibib.erase();
+       params().lineno_opts.clear();
 
        for (int i = 0; i < 4; ++i) {
                params().user_defined_bullet(i) = ITEMIZE_DEFAULTS[i];
@@ -1924,7 +1934,8 @@ Buffer::ExportStatus Buffer::writeLaTeXSource(otexstream & os,
                                        os << "\\catcode`\\%=11"
                                              "\\def\\%{%}\\catcode`\\%=14\n";
                                }
-                               bool const detokenize = !isAscii(from_utf8(docdir));
+                               bool const detokenize = !isAscii(from_utf8(docdir))
+                                               || contains(docdir, '~');
                                bool const quote = contains(docdir, ' ');
                                os << "\\makeatletter\n"
                                   << "\\def\\input@path{{";
@@ -4896,26 +4907,26 @@ Buffer::ReadStatus Buffer::loadThisLyXFile(FileName const & fn)
 }
 
 
-void Buffer::bufferErrors(TeXErrors const & terr, ErrorList & errorList) const
+void Buffer::Impl::traverseErrors(TeXErrors::Errors::const_iterator err, TeXErrors::Errors::const_iterator end, ErrorList & errorList) const
 {
-       for (auto const & err : terr) {
+       for (; err != end; ++err) {
                TexRow::TextEntry start = TexRow::text_none, end = TexRow::text_none;
-               int errorRow = err.error_in_line;
+               int errorRow = err->error_in_line;
                Buffer const * buf = 0;
-               Impl const * p = d;
-               if (err.child_name.empty())
+               Impl const * p = this;
+               if (err->child_name.empty())
                        tie(start, end) = p->texrow.getEntriesFromRow(errorRow);
                else {
                        // The error occurred in a child
-                       for (Buffer const * child : getDescendents()) {
+                       for (Buffer const * child : owner_->getDescendents()) {
                                string const child_name =
                                        DocFileName(changeExtension(child->absFileName(), "tex")).
                                        mangledFileName();
-                               if (err.child_name != child_name)
+                               if (err->child_name != child_name)
                                        continue;
                                tie(start, end) = child->d->texrow.getEntriesFromRow(errorRow);
                                if (!TexRow::isNone(start)) {
-                                       buf = d->cloned_buffer_
+                                       buf = this->cloned_buffer_
                                                ? child->d->cloned_buffer_->d->owner_
                                                : child->d->owner_;
                                        p = child->d;
@@ -4923,12 +4934,30 @@ void Buffer::bufferErrors(TeXErrors const & terr, ErrorList & errorList) const
                                }
                        }
                }
-               errorList.push_back(ErrorItem(err.error_desc, err.error_text,
+               errorList.push_back(ErrorItem(err->error_desc, err->error_text,
                                              start, end, buf));
        }
 }
 
 
+void Buffer::bufferErrors(TeXErrors const & terr, ErrorList & errorList) const
+{
+       TeXErrors::Errors::const_iterator err = terr.begin();
+       TeXErrors::Errors::const_iterator end = terr.end();
+
+       d->traverseErrors(err, end, errorList);
+}
+
+
+void Buffer::bufferRefs(TeXErrors const & terr, ErrorList & errorList) const
+{
+       TeXErrors::Errors::const_iterator err = terr.begin_ref();
+       TeXErrors::Errors::const_iterator end = terr.end_ref();
+
+       d->traverseErrors(err, end, errorList);
+}
+
+
 void Buffer::updateBuffer(UpdateScope scope, UpdateType utype) const
 {
        LBUFERR(!text().paragraphs().empty());