/*!
* \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
*/
}
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;
}
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:
}
}
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));