]> git.lyx.org Git - features.git/commitdiff
Still addressing #6560: instead of cloning the BufferParams, which might cause
authorTommaso Cucinotta <tommaso@lyx.org>
Sun, 8 May 2011 23:51:44 +0000 (23:51 +0000)
committerTommaso Cucinotta <tommaso@lyx.org>
Sun, 8 May 2011 23:51:44 +0000 (23:51 +0000)
a number of unforeseen issues (like the inheritance of the default master, as
pointed out in http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg168225.html),
now we simply set the language into the search & replace buffers.

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

src/BufferParams.cpp
src/BufferParams.h
src/frontends/qt4/FindAndReplace.cpp

index c52255a130d9a69bb848befe0346484a3ebe1443..d27f001102bca83f4c2a8eda7077cb78912645ba 100644 (file)
@@ -2087,6 +2087,18 @@ void BufferParams::readLocalLayout(Lexer & lex)
 }
 
 
+bool BufferParams::setLanguage(string const & lang)
+{
+       Language const *new_language = languages.getLanguage(lang);
+       if (!new_language) {
+               // Language lang was not found
+               return false;
+       }
+       language = new_language;
+       return true;
+}
+
+
 void BufferParams::readLanguage(Lexer & lex)
 {
        if (!lex.next()) return;
@@ -2094,8 +2106,7 @@ void BufferParams::readLanguage(Lexer & lex)
        string const tmptok = lex.getString();
 
        // check if tmptok is part of tex_babel in tex-defs.h
-       language = languages.getLanguage(tmptok);
-       if (!language) {
+       if (!setLanguage(tmptok)) {
                // Language tmptok was not found
                language = default_language;
                lyxerr << "Warning: Setting language `"
index ee2b22a248a91df9f65d4273ca69847ad749de1c..96747d51f32985343da1b41e0a3d97c15aff9228 100644 (file)
@@ -414,6 +414,10 @@ public:
        /// use refstyle? or prettyref?
        bool use_refstyle;
 
+       /// Return true if language could be set to lang,
+       /// otherwise return false and do not change language
+       bool setLanguage(std::string const & lang);
+
 private:
        ///
        void readPreamble(Lexer &);
index 104ec0ccf0a77ef068eebfe919e9180c253cec01..793479768423cfcd46781a2a3257805744138f98 100644 (file)
@@ -45,20 +45,6 @@ namespace lyx {
 namespace frontend {
 
 
-/// Apply to buf the parameters supplied through bp
-static void ApplyParams(Buffer &buf, BufferParams const & bp) {
-       ostringstream ss;
-       ss << "\\begin_header\n";
-       bp.writeFile(ss);
-       ss << "\\end_header\n";
-       istringstream iss(ss.str());
-       Lexer lex;
-       lex.setStream(iss);
-       int unknown_tokens = buf.readHeader(lex);
-       LASSERT(unknown_tokens == 0, /* */);
-}
-
-
 FindAndReplaceWidget::FindAndReplaceWidget(GuiView & view)
        : QTabWidget(&view), view_(view)
 {
@@ -489,18 +475,17 @@ void FindAndReplaceWidget::showEvent(QShowEvent * /* ev */)
        if (bv) {
                Buffer & doc_buf = bv->buffer();
                BufferParams & doc_bp = doc_buf.params();
+               string const & lang = doc_bp.language->lang();
                Buffer & find_buf = find_work_area_->bufferView().buffer();
                LYXERR(Debug::FIND, "Applying document params to find buffer");
-               ApplyParams(find_buf, doc_bp);
+               find_buf.params().setLanguage(lang);
                Buffer & replace_buf = replace_work_area_->bufferView().buffer();
                LYXERR(Debug::FIND, "Applying document params to replace buffer");
-               ApplyParams(replace_buf, doc_bp);
+               replace_buf.params().setLanguage(lang);
 
-               string lang = doc_bp.language->lang();
                LYXERR(Debug::FIND, "Setting current editing language to " << lang << endl);
-               FuncRequest cmd(LFUN_LANGUAGE, lang);
-               find_buf.text().dispatch(find_work_area_->bufferView().cursor(), cmd);
-               replace_buf.text().dispatch(replace_work_area_->bufferView().cursor(), cmd);
+               find_work_area_->bufferView().cursor().current_font.setLanguage(doc_bp.language);
+               replace_work_area_->bufferView().cursor().current_font.setLanguage(doc_bp.language);
        }
 
        find_work_area_->installEventFilter(this);