]> git.lyx.org Git - features.git/commitdiff
Ronen's patch for lfun language set
authorJuergen Spitzmueller <spitz@lyx.org>
Wed, 3 Oct 2012 05:27:36 +0000 (07:27 +0200)
committerJuergen Spitzmueller <spitz@lyx.org>
Wed, 3 Oct 2012 14:36:05 +0000 (16:36 +0200)
This adds an optional 'set' argument to the language lfun and reintroduces toggling.

Additions by me reintroduce the possibility to reset to the document language via 'language reset' or just 'language'
(cherry picked from commit e3e6befc543cec4eec00f9e28865230bf347a5fb)

src/LyXAction.cpp
src/Text3.cpp
src/frontends/qt4/Menus.cpp

index a58fc5e3412fd6f1e237b490afc4d6ea161af278..b143c87c004e53673da17f33e75791f89b37adc3 100644 (file)
@@ -2475,9 +2475,14 @@ void LyXAction::init()
 /*!
  * \var lyx::FuncCode lyx::LFUN_LANGUAGE
  * \li Action: Set language from the current cursor position.
- * \li Syntax: language <LANG>
+ * \li Syntax: language <LANG> [set]
  * \li Params: <LANG>: Requested language. Look in lib/languages for
-                       the list.
+                       the list. "language reset" or "language" (without param)
+                       reset to the document language.
+                  set: If used, the language will be set to the specified
+                       language. Otherwise, the language will be toggled (i.e., if
+                       the current language is LANG, switch to the document language
+                       or the default language, if LANG is the document language).
  * \li Origin: Dekel, 2 Mar 2000
  * \endvar
  */
index dc30d5adedb5128a97980d2ede418e11aae58cfd..50a6d3d12ca0eb91cbfd38a3a1dce8a41948a803 100644 (file)
@@ -1895,12 +1895,19 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        }
 
        case LFUN_LANGUAGE: {
-               Language const * lang = languages.getLanguage(to_utf8(cmd.argument()));
-               if (!lang)
+               string const lang_arg = cmd.getArg(0);
+               bool const reset = (lang_arg.empty() || lang_arg == "reset");
+               Language const * lang =
+                       reset ? reset_language
+                             : languages.getLanguage(lang_arg);
+               // we allow reset_language, which is 0, but only if it
+               // was requested via empty or "reset" arg.
+               if (!lang && !reset)
                        break;
+               bool const toggle = (cmd.getArg(1) != "set");
                selectWordWhenUnderCursor(cur, WHOLE_WORD_STRICT);
                Font font(ignore_font, lang);
-               toggleAndShow(cur, this, font, false);
+               toggleAndShow(cur, this, font, toggle);
                break;
        }
 
@@ -2667,7 +2674,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
 
        case LFUN_LANGUAGE:
                enable = !cur.paragraph().isPassThru();
-               flag.setOnOff(to_utf8(cmd.argument()) == cur.real_current_font.language()->lang());
+               flag.setOnOff(cmd.getArg(0) == cur.real_current_font.language()->lang());
                break;
 
        case LFUN_BREAK_PARAGRAPH:
index 367f14b120959f9a32a3b2cd383d6e32e7370495..a3adbbac58b0c5b56a9e6073cefac31717130a03 100644 (file)
@@ -887,7 +887,7 @@ void MenuDefinition::expandLanguageSelector(Buffer const * buf)
                        }
                }
                MenuItem w(MenuItem::Command, label,
-                       FuncRequest(LFUN_LANGUAGE, (*cit)->lang()));
+                       FuncRequest(LFUN_LANGUAGE, (*cit)->lang() + " set"));
                item.submenu().addWithStatusCheck(w);
        }
        item.submenu().add(MenuItem(MenuItem::Separator));