mercurial/cmdutil.py
changeset 35644 7a0a90d63a8c
parent 35643 668c5a527eff
child 35645 b6b7855c79aa
--- a/mercurial/cmdutil.py	Tue Jan 02 17:00:48 2018 +0900
+++ b/mercurial/cmdutil.py	Tue Jan 02 17:13:18 2018 +0900
@@ -41,6 +41,7 @@
     registrar,
     revlog,
     revset,
+    revsetlang,
     scmutil,
     smartset,
     templatekw,
@@ -2347,13 +2348,13 @@
     '_fdescendants':    ('_firstdescendants(%(val)s)', None),
     '_matchfiles':      ('_matchfiles(%(val)s)', None),
     'date':             ('date(%(val)r)', None),
-    'branch':           ('branch(%(val)r)', ' or '),
-    '_patslog':         ('filelog(%(val)r)', ' or '),
-    '_patsfollow':      ('follow(%(val)r)', ' or '),
-    '_patsfollowfirst': ('_followfirst(%(val)r)', ' or '),
-    'keyword':          ('keyword(%(val)r)', ' or '),
-    'prune':            ('not ancestors(%(val)r)', ' and '),
-    'user':             ('user(%(val)r)', ' or '),
+    'branch':           ('branch(%(val)r)', '%lr'),
+    '_patslog':         ('filelog(%(val)r)', '%lr'),
+    '_patsfollow':      ('follow(%(val)r)', '%lr'),
+    '_patsfollowfirst': ('_followfirst(%(val)r)', '%lr'),
+    'keyword':          ('keyword(%(val)r)', '%lr'),
+    'prune':            ('ancestors(%(val)r)', 'not %lr'),
+    'user':             ('user(%(val)r)', '%lr'),
 }
 
 def _makelogrevset(repo, pats, opts, revs):
@@ -2473,14 +2474,15 @@
             continue
         if op not in _opt2logrevset:
             continue
-        revop, andor = _opt2logrevset[op]
+        revop, listop = _opt2logrevset[op]
         if '%(val)' not in revop:
             expr.append(revop)
         else:
-            if not isinstance(val, list):
+            if not listop:
                 e = revop % {'val': val}
             else:
-                e = '(' + andor.join((revop % {'val': v}) for v in val) + ')'
+                e = [revop % {'val': v} for v in val]
+                e = revsetlang.formatspec(listop, e)
             expr.append(e)
 
     if expr: