Suffix and group objects share some predicate slots that control whether a group or suffix should be available depending on some state. Only one of these slots can be used at the same time. It is undefined what happens if you use more than one.
ifEnable if predicate returns non-
if-notEnable if predicate returns
if-non-nilEnable if variable’s value is non-
if-nilEnable if variable’s value is
if-modeEnable if major-mode matches value.
if-not-modeEnable if major-mode does not match value.
if-derivedEnable if major-mode derives from value.
if-not-derivedEnable if major-mode does not derive from value.
By default these predicates run when the prefix command is invoked,
but this can be changes, using the
refresh-suffixes prefix slot.
See Prefix Slots.
One more slot is shared between group and suffix classes,
the slots documented above, it is a predicate, but it is used for a
different purpose. The value has to be an integer between 1
level controls whether a suffix or a group should be
available depending on user preference.
See Enabling and Disabling Suffixes.