-'q' => [ '--stdin|SEARCH_TERMS...', 'search for messages matching terms', qw(
- save-as=s output|mfolder|o=s format|f=s dedupe|d=s threads|t augment|a
- sort|s=s reverse|r offset=i remote! local! external! pretty
- include|I=s@ exclude=s@ only=s@ jobs|j=s globoff|g stdin|
- import-remote!
- alert=s@ mua=s no-torsocks torsocks=s verbose|v+ quiet|q C=s@),
- PublicInbox::LeiQuery::curl_opt(), opt_dash('limit|n=i', '[0-9]+') ],
-
-'show' => [ 'MID|OID', 'show a given object (Message-ID or object ID)',
- qw(type=s solve! format|f=s dedupe|d=s threads|t remote local! C=s@),
- pass_through('git show') ],
+'q' => [ '--stdin|SEARCH_TERMS...', 'search for messages matching terms',
+ 'stdin|', # /|\z/ must be first for lone dash
+ @lxs_opt,
+ qw(save output|mfolder|o=s format|f=s dedupe|d=s threads|t+
+ sort|s=s reverse|r offset=i pretty jobs|j=s globoff|g augment|a
+ import-before! lock=s@ rsyncable alert=s@ mua=s verbose|v+
+ color! mail-sync!), @c_opt, opt_dash('limit|n=i', '[0-9]+') ],
+
+'up' => [ 'OUTPUT|--all', 'update saved search',
+ qw(jobs|j=s lock=s@ alert=s@ mua=s verbose|v+ all:s), @c_opt ],
+
+'lcat' => [ '--stdin|MSGID_OR_URL..', 'display local copy of message(s)',
+ 'stdin|', # /|\z/ must be first for lone dash
+ # some of these options are ridiculous for lcat
+ @lxs_opt, qw(output|mfolder|o=s format|f=s dedupe|d=s threads|t+
+ sort|s=s reverse|r offset=i jobs|j=s globoff|g augment|a
+ import-before! lock=s@ rsyncable alert=s@ mua=s verbose|v+
+ color!), @c_opt, opt_dash('limit|n=i', '[0-9]+') ],
+
+'blob' => [ 'OID', 'show a git blob, reconstructing from mail if necessary',
+ qw(git-dir=s@ cwd! verbose|v+ mail! oid-a|A=s path-a|a=s path-b|b=s),
+ @lxs_opt, @c_opt ],
+
+'rediff' => [ '[--stdin|LOCATION...]',
+ 'regenerate a diff with different options',
+ qw(git-dir=s@ cwd! verbose|v+ color:s no-color),
+ @diff_opt, @lxs_opt, @c_opt ],