+ setColors(col);
+}
+
+
+void Branch::setColors(string const & lmcol, string const & dmcol)
+{
+ if (lmcol.empty() && lmcolor_ == "background" && support::prefixIs(dmcol, "#"))
+ lmcolor_ = X11hexname(inverseRGBColor(rgbFromHexName(dmcol)));
+ else if (!lmcol.empty())
+ lmcolor_ = lmcol;
+ if (dmcol.empty() && dmcolor_ == "background" && support::prefixIs(lmcol, "#"))
+ dmcolor_ = X11hexname(inverseRGBColor(rgbFromHexName(lmcol)));
+ else if (!dmcol.empty())
+ dmcolor_ = dmcol;
+
+ // Update the Color table
+ string lmcolor = lmcolor_;
+ string dmcolor = dmcolor_;
+ if (lmcolor == "none")
+ lmcolor = lcolor.getX11HexName(Color_background);
+ else if (lmcolor.size() != 7 || lmcolor[0] != '#')
+ lmcolor = lcolor.getX11HexName(lcolor.getFromLyXName(lmcolor));
+ if (dmcolor == "none")
+ dmcolor = lcolor.getX11HexName(Color_background, true);
+ else if (dmcolor.size() != 7 || dmcolor[0] != '#')
+ dmcolor = lcolor.getX11HexName(lcolor.getFromLyXName(dmcolor), true);
+
+ // FIXME UNICODE
+ lcolor.setColor("branch" + convert<string>(branch_list_id_)
+ + to_utf8(branch_), lmcolor, dmcolor);
+}
+
+
+namespace {
+
+std::function<bool (Branch const &)> BranchNameIs(docstring const & d)
+{
+ return [d](Branch const & b){ return b.branch() == d; };