- vector<string> const & possibles = possibleCiteCommands();
- vector<string>::const_iterator const end = possibles.end();
- return find(possibles.begin(), end, cmd) != end;
+ switch (cmd.action()) {
+ // Handle the alias case
+ case LFUN_INSET_MODIFY:
+ if (cmd.getArg(0) == "changetype") {
+ string cmdname = getCmdName();
+ string const alias =
+ buffer().masterParams().getCiteAlias(cmdname);
+ if (!alias.empty())
+ cmdname = alias;
+ if (suffixIs(cmdname, "*"))
+ cmdname = rtrim(cmdname, "*");
+ string const newtype = cmd.getArg(1);
+ status.setEnabled(isCompatibleCommand(newtype));
+ status.setOnOff(newtype == cmdname);
+ }
+ if (cmd.getArg(0) == "toggleparam") {
+ string cmdname = getCmdName();
+ string const alias =
+ buffer().masterParams().getCiteAlias(cmdname);
+ if (!alias.empty())
+ cmdname = alias;
+ vector<CitationStyle> citation_styles =
+ buffer().masterParams().citeStyles();
+ CitationStyle cs = getCitationStyle(buffer().masterParams(),
+ cmdname, citation_styles);
+ if (cmd.getArg(1) == "star") {
+ status.setEnabled(cs.hasStarredVersion);
+ status.setOnOff(suffixIs(cmdname, "*"));
+ }
+ else if (cmd.getArg(1) == "casing") {
+ status.setEnabled(cs.forceUpperCase);
+ status.setOnOff(isUpperCase(cmdname[0]));
+ }
+ }
+ return true;
+ default:
+ return InsetCommand::getStatus(cur, cmd, status);
+ }