]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetListingsParams.cpp
Merge branch 'master' into biblatex2
[lyx.git] / src / insets / InsetListingsParams.cpp
index a24d43fb0c40eb876910f63f0f66eba6e4e30c8f..f37566138f86635502bf162ccba3290dc709a0b1 100644 (file)
@@ -35,6 +35,7 @@ enum param_type {
        TRUEFALSE, // accept 'true' or 'false'
        INTEGER, // accept an integer
        LENGTH,  // accept a latex length
+       SKIP,    // accept a skip or a length
        ONEOF,  // accept one of a few values
        SUBSETOF // accept a string composed of given characters
 };
@@ -93,6 +94,9 @@ private:
 };
 
 
+char const * allowed_skips = "\\smallskipamount,\\medskipamount,\\bigskipamount";
+
+
 docstring ListingsParam::validate(string const & par) const
 {
        bool unclosed = false;
@@ -163,6 +167,20 @@ docstring ListingsParam::validate(string const & par) const
                        return _("Unbalanced braces!");
                return docstring();
 
+       case SKIP:
+               if (par2.empty() && !onoff_) {
+                       if (!hint_.empty())
+                               return hint_;
+                       else
+                               return bformat(_("Please specify a LaTeX length expression or a skip amount (%1$s)"),
+                                              from_ascii(subst(allowed_skips, ",", ", ")));
+               }
+               if (!isValidLength(par2) && tokenPos(allowed_skips, ',', par2) == -1)
+                       return _("Not a valid LaTeX length expression or skip amount.");
+               if (unclosed)
+                       return _("Unbalanced braces!");
+               return docstring();
+
        case ONEOF: {
                if (par2.empty() && !onoff_) {
                        if (!hint_.empty())
@@ -205,6 +223,8 @@ docstring ListingsParam::validate(string const & par) const
                        return bformat(_("Try one of %1$s."), from_utf8(info_));
                else
                        return bformat(_("I guess you mean %1$s."), from_utf8(matching_names));
+               // this stifles a warning but upsets coverity
+               // coverity[UNREACHABLE]
                return docstring();
        }
        case SUBSETOF:
@@ -296,11 +316,11 @@ ParValidator::ParValidator()
        all_params_["floatplacement"] =
                ListingsParam("tbp", false, SUBSETOF, "tbp", empty_hint);
        all_params_["aboveskip"] =
-               ListingsParam("\\medskipamount", false, LENGTH, "", empty_hint);
+               ListingsParam("\\medskipamount", false, SKIP, "", empty_hint);
        all_params_["belowskip"] =
-               ListingsParam("\\medskipamount", false, LENGTH, "", empty_hint);
+               ListingsParam("\\medskipamount", false, SKIP, "", empty_hint);
        all_params_["lineskip"] =
-               ListingsParam("", false, LENGTH, "", empty_hint);
+               ListingsParam("", false, SKIP, "", empty_hint);
        all_params_["boxpos"] =
                ListingsParam("", false, SUBSETOF, "bct", empty_hint);
        all_params_["print"] =
@@ -423,9 +443,9 @@ ParValidator::ParValidator()
        all_params_["captionpos"] =
                ListingsParam("", false, SUBSETOF, "tb", empty_hint);
        all_params_["abovecaptionskip"] =
-               ListingsParam("", false, LENGTH, "", empty_hint);
+               ListingsParam("", false, SKIP, "", empty_hint);
        all_params_["belowcaptionskip"] =
-               ListingsParam("", false, LENGTH, "", empty_hint);
+               ListingsParam("", false, SKIP, "", empty_hint);
        all_params_["linewidth"] =
                ListingsParam("", false, LENGTH, "", empty_hint);
        all_params_["xleftmargin"] =
@@ -667,6 +687,8 @@ docstring ParValidator::validate(string const & name,
                        return bformat(_("Parameters starting with '%1$s': %2$s"),
                                                                from_utf8(name), from_utf8(matching_names));
        }
+       // this stifles a warning but upsets coverity
+       // coverity[UNREACHABLE]
        return docstring();
 }