if (!parameters.empty())
os << "[" << parameters << "]";
if (use_minted)
- os << '{' << language << '}';
+ os << '{' << ascii_lowercase(language) << '}';
os << '{' << incfile << '}';
if (use_minted && isfloat) {
if (!caption.empty())
os << "\\mintinline";
if (!param_string.empty())
os << "[" << from_utf8(param_string) << "]";
- os << "{" << minted_language << "}";
+ os << "{" << ascii_lowercase(minted_language) << "}";
} else {
os << "\\lstinline";
if (!param_string.empty())
os << breakln << "\\begin{minted}";
if (!param_string.empty())
os << "[" << param_string << "]";
- os << "{" << minted_language << "}\n"
+ os << "{" << ascii_lowercase(minted_language) << "}\n"
<< code << breakln << "\\end{minted}\n";
if (isfloat) {
if (!caption.str.empty())
"[97]VRML\nXML\nXSLT";
+/// Return language allowed in the GUI without dialect and proper casing
+string const languageonly(string const & lang)
+{
+ string const locase = ascii_lowercase(trim(lang, "{}"));
+ string const all_languages = ascii_lowercase(allowed_languages) + "\n";
+ string language = (lang.at(0) == '[') ? locase + "\n"
+ : string("]") + locase + "\n";
+ size_t i = all_languages.find(language);
+ if (i == string::npos && lang.at(0) != '[') {
+ language[0] = '\n';
+ i = all_languages.find(language);
+ }
+ if (i == string::npos)
+ return lang;
+ if (all_languages.at(i) == '[')
+ i = all_languages.find(']', i);
+ if (i == string::npos)
+ return lang;
+ size_t j = all_languages.find('\n', i + 1);
+ if (j == string::npos)
+ return lang;
+ return string(allowed_languages).substr(i + 1, j - i - 1);
+}
+
+
/// ListingsParam Validator.
/// This class is aimed to be a singleton which is instantiated in
/// \c InsetListingsParams::addParam().
void InsetListingsParams::addParam(string const & key,
- string const & value, bool replace)
+ string const & val, bool replace)
{
if (key.empty())
return;
+ string const value = (minted() && key == "language") ? languageonly(val)
+ : val;
// duplicate parameters!
string keyname = key;
if (!replace && hasParam(key))