emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/transient 291b86e66d: manual: Document inapt-if* slots


From: Jonas Bernoulli
Subject: [elpa] externals/transient 291b86e66d: manual: Document inapt-if* slots
Date: Fri, 15 Nov 2024 15:44:16 -0500 (EST)

branch: externals/transient
commit 291b86e66de3d7b73384f8751050acbdd2187ddb
Author: Jonas Bernoulli <jonas@bernoul.li>
Commit: Jonas Bernoulli <jonas@bernoul.li>

    manual: Document inapt-if* slots
---
 docs/transient.org  | 40 +++++++++++++++++++++++++++++-----------
 docs/transient.texi | 50 +++++++++++++++++++++++++++++++++++++++-----------
 lisp/transient.el   |  4 ++--
 3 files changed, 70 insertions(+), 24 deletions(-)

diff --git a/docs/transient.org b/docs/transient.org
index ed88cf910b..ef4c23ce05 100644
--- a/docs/transient.org
+++ b/docs/transient.org
@@ -981,9 +981,9 @@ constructor of that class.
 
 - Likewise ~:level~ is equivalent to {{{var(LEVEL)}}}.
 
-- Other important keywords include the ~:if...~ keywords.  These
-  keywords control whether the group is available in a certain
-  situation.
+- Other important keywords include the ~:if...~ and ~:inapt-if...~
+  keywords.  These keywords control whether the group is available
+  in a certain situation.
 
   For example, one group of the ~magit-rebase~ transient uses ~:if
   magit-rebase-in-progress-p~, which contains the suffixes that are
@@ -1733,10 +1733,10 @@ object should not affect later invocations.
 
   The ~:info~ keyword argument replaces the ~:description~ keyword used for
   other suffix classes.  Other keyword arguments that you might want to
-  set, include ~:face~, predicate keywords (such as ~:if~), and ~:format~.
-  By default the value of ~:format~ includes ~%k~, which for this class is
-  replaced with the empty string or spaces, if keys are being padded in
-  the containing group.
+  set, include ~:face~, predicate keywords (such as ~:if~ and ~:inapt-if~),
+  and ~:format~.  By default the value of ~:format~ includes ~%k~, which for
+  this class is replaced with the empty string or spaces, if keys are
+  being padded in the containing group.
 
 Magit defines additional classes, which can serve as examples for the
 fancy things you can do without modifying Transient.  Some of these
@@ -2087,10 +2087,14 @@ They are defined here anyway to allow sharing certain 
methods.
 
 ** Predicate Slots
 
-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.
+Suffix and group objects share two sets of predicate slots that
+control whether a group or suffix should be available depending on
+some state.  Only one slot from each set can be used at the same
+time.  It is undefined which slot is honored if you use more than
+one.
+
+Predicates from the first group control whether the suffix is present
+in the menu at all.
 
 - ~if~ Enable if predicate returns non-~nil~.
 - ~if-not~ Enable if predicate returns ~nil~.
@@ -2101,6 +2105,20 @@ what happens if you use more than one.
 - ~if-derived~ Enable if major-mode derives from value.
 - ~if-not-derived~ Enable if major-mode does not derive from value.
 
+Predicates from the second group control whether the suffix can be
+invoked.  The suffix is shown in the menu regardless, but when it
+is considered "inapt", then it is grayed out to indicated that it
+currently cannot be invoked.
+
+- ~inapt-if~ Inapt if predicate returns non-~nil~.
+- ~inapt-if-not~ Inapt if predicate returns ~nil~.
+- ~inapt-if-non-nil~ Inapt if variable's value is non-~nil~.
+- ~inapt-if-nil~ Inapt if variable's value is ~nil~.
+- ~inapt-if-mode~ Inapt if major-mode matches value.
+- ~inapt-if-not-mode~ Inapt if major-mode does not match value.
+- ~inapt-if-derived~ Inapt if major-mode derives from value.
+- ~inapt-if-not-derived~ Inapt 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]].
diff --git a/docs/transient.texi b/docs/transient.texi
index 5432f7cbef..8aa4b9e75f 100644
--- a/docs/transient.texi
+++ b/docs/transient.texi
@@ -1168,9 +1168,9 @@ consistency, or @var{DESCRIPTION} otherwise, because it 
looks better.
 Likewise @code{:level} is equivalent to @var{LEVEL}.
 
 @item
-Other important keywords include the @code{:if...} keywords.  These
-keywords control whether the group is available in a certain
-situation.
+Other important keywords include the @code{:if...} and @code{:inapt-if...}
+keywords.  These keywords control whether the group is available
+in a certain situation.
 
 For example, one group of the @code{magit-rebase} transient uses @code{:if
   magit-rebase-in-progress-p}, which contains the suffixes that are
@@ -1980,10 +1980,10 @@ suffix specifications take this form:
 
 The @code{:info} keyword argument replaces the @code{:description} keyword 
used for
 other suffix classes.  Other keyword arguments that you might want to
-set, include @code{:face}, predicate keywords (such as @code{:if}), and 
@code{:format}.
-By default the value of @code{:format} includes @code{%k}, which for this 
class is
-replaced with the empty string or spaces, if keys are being padded in
-the containing group.
+set, include @code{:face}, predicate keywords (such as @code{:if} and 
@code{:inapt-if}),
+and @code{:format}.  By default the value of @code{:format} includes 
@code{%k}, which for
+this class is replaced with the empty string or spaces, if keys are
+being padded in the containing group.
 @end itemize
 
 Magit defines additional classes, which can serve as examples for the
@@ -2390,10 +2390,14 @@ E.g., 
@code{\\(--\\(topo\\|author-date\\|date\\)-order\\)}.
 @node Predicate Slots
 @section Predicate Slots
 
-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.
+Suffix and group objects share two sets of predicate slots that
+control whether a group or suffix should be available depending on
+some state.  Only one slot from each set can be used at the same
+time.  It is undefined which slot is honored if you use more than
+one.
+
+Predicates from the first group control whether the suffix is present
+in the menu at all.
 
 @itemize
 @item
@@ -2414,6 +2418,30 @@ what happens if you use more than one.
 @code{if-not-derived} Enable if major-mode does not derive from value.
 @end itemize
 
+Predicates from the second group control whether the suffix can be
+invoked.  The suffix is shown in the menu regardless, but when it
+is considered "inapt", then it is grayed out to indicated that it
+currently cannot be invoked.
+
+@itemize
+@item
+@code{inapt-if} Inapt if predicate returns non-@code{nil}.
+@item
+@code{inapt-if-not} Inapt if predicate returns @code{nil}.
+@item
+@code{inapt-if-non-nil} Inapt if variable's value is non-@code{nil}.
+@item
+@code{inapt-if-nil} Inapt if variable's value is @code{nil}.
+@item
+@code{inapt-if-mode} Inapt if major-mode matches value.
+@item
+@code{inapt-if-not-mode} Inapt if major-mode does not match value.
+@item
+@code{inapt-if-derived} Inapt if major-mode derives from value.
+@item
+@code{inapt-if-not-derived} Inapt if major-mode does not derive from value.
+@end itemize
+
 By default these predicates run when the prefix command is invoked,
 but this can be changes, using the @code{refresh-suffixes} prefix slot.
 See @ref{Prefix Slots}.
diff --git a/lisp/transient.el b/lisp/transient.el
index 6d0ff406b8..33e4799fce 100644
--- a/lisp/transient.el
+++ b/lisp/transient.el
@@ -766,8 +766,8 @@ the prototype is stored in the clone's `prototype' slot.")
     :documentation "Inapt if major-mode does not derive from value."))
   "Abstract superclass for group and suffix classes.
 
-It is undefined what happens if more than one `if*' predicate
-slot is non-nil."
+It is undefined which predicates are used if more than one `if*'
+predicate slots or more than one `inapt-if*' slots are non-nil."
   :abstract t)
 
 (defclass transient-suffix (transient-child)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]