]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.cpp
fix merged build
[lyx.git] / src / Buffer.cpp
index 361f3d9e68c3547500a1aa81960e53ec51a1d6a6..94f46af094bb7b2b7cd3878eb17b03541a20f7cc 100644 (file)
@@ -42,6 +42,7 @@
 #include "Lexer.h"
 #include "LyXAction.h"
 #include "LyX.h"
+#include "LyXFunc.h"
 #include "LyXRC.h"
 #include "LyXVC.h"
 #include "output_docbook.h"
@@ -1709,6 +1710,10 @@ bool Buffer::getStatus(FuncRequest const & cmd, FuncStatus & flag)
                        // if no Buffer is present, then of course we won't be called!
                        break;
 
+               case LFUN_BUFFER_LANGUAGE:
+                       enable = !isReadonly();
+                       break;
+
                default:
                        return false;
        }
@@ -1737,6 +1742,7 @@ void Buffer::dispatch(FuncRequest const & func, DispatchResult & dr)
        string const argument = to_utf8(func.argument());
        // We'll set this back to false if need be.
        bool dispatched = true;
+       undo().beginUndoGroup();
 
        switch (func.action) {
        case LFUN_BUFFER_TOGGLE_READ_ONLY:
@@ -2045,11 +2051,22 @@ void Buffer::dispatch(FuncRequest const & func, DispatchResult & dr)
                break;
        }
 
+       case LFUN_BUFFER_LANGUAGE: {
+               Language const * oldL = params().language;
+               Language const * newL = languages.getLanguage(argument);
+               if (!newL || oldL == newL)
+                       break;
+               if (oldL->rightToLeft() == newL->rightToLeft() && !isMultiLingual())
+                       changeLanguage(oldL, newL);
+               break;
+       }
+
        default:
                dispatched = false;
                break;
        }
        dr.dispatched(dispatched);
+       undo().endUndoGroup();
 }