mercurial/fileset.py
changeset 45942 89a2afe31e82
parent 44856 b7808443ed6a
child 46819 d4ba4d51f85f
equal deleted inserted replaced
45941:346af7687c6f 45942:89a2afe31e82
   120 predicate = registrar.filesetpredicate(symbols)
   120 predicate = registrar.filesetpredicate(symbols)
   121 
   121 
   122 
   122 
   123 @predicate(b'modified()', callstatus=True, weight=_WEIGHT_STATUS)
   123 @predicate(b'modified()', callstatus=True, weight=_WEIGHT_STATUS)
   124 def modified(mctx, x):
   124 def modified(mctx, x):
   125     """File that is modified according to :hg:`status`.
   125     """File that is modified according to :hg:`status`."""
   126     """
       
   127     # i18n: "modified" is a keyword
   126     # i18n: "modified" is a keyword
   128     getargs(x, 0, 0, _(b"modified takes no arguments"))
   127     getargs(x, 0, 0, _(b"modified takes no arguments"))
   129     s = set(mctx.status().modified)
   128     s = set(mctx.status().modified)
   130     return mctx.predicate(s.__contains__, predrepr=b'modified')
   129     return mctx.predicate(s.__contains__, predrepr=b'modified')
   131 
   130 
   132 
   131 
   133 @predicate(b'added()', callstatus=True, weight=_WEIGHT_STATUS)
   132 @predicate(b'added()', callstatus=True, weight=_WEIGHT_STATUS)
   134 def added(mctx, x):
   133 def added(mctx, x):
   135     """File that is added according to :hg:`status`.
   134     """File that is added according to :hg:`status`."""
   136     """
       
   137     # i18n: "added" is a keyword
   135     # i18n: "added" is a keyword
   138     getargs(x, 0, 0, _(b"added takes no arguments"))
   136     getargs(x, 0, 0, _(b"added takes no arguments"))
   139     s = set(mctx.status().added)
   137     s = set(mctx.status().added)
   140     return mctx.predicate(s.__contains__, predrepr=b'added')
   138     return mctx.predicate(s.__contains__, predrepr=b'added')
   141 
   139 
   142 
   140 
   143 @predicate(b'removed()', callstatus=True, weight=_WEIGHT_STATUS)
   141 @predicate(b'removed()', callstatus=True, weight=_WEIGHT_STATUS)
   144 def removed(mctx, x):
   142 def removed(mctx, x):
   145     """File that is removed according to :hg:`status`.
   143     """File that is removed according to :hg:`status`."""
   146     """
       
   147     # i18n: "removed" is a keyword
   144     # i18n: "removed" is a keyword
   148     getargs(x, 0, 0, _(b"removed takes no arguments"))
   145     getargs(x, 0, 0, _(b"removed takes no arguments"))
   149     s = set(mctx.status().removed)
   146     s = set(mctx.status().removed)
   150     return mctx.predicate(s.__contains__, predrepr=b'removed')
   147     return mctx.predicate(s.__contains__, predrepr=b'removed')
   151 
   148 
   152 
   149 
   153 @predicate(b'deleted()', callstatus=True, weight=_WEIGHT_STATUS)
   150 @predicate(b'deleted()', callstatus=True, weight=_WEIGHT_STATUS)
   154 def deleted(mctx, x):
   151 def deleted(mctx, x):
   155     """Alias for ``missing()``.
   152     """Alias for ``missing()``."""
   156     """
       
   157     # i18n: "deleted" is a keyword
   153     # i18n: "deleted" is a keyword
   158     getargs(x, 0, 0, _(b"deleted takes no arguments"))
   154     getargs(x, 0, 0, _(b"deleted takes no arguments"))
   159     s = set(mctx.status().deleted)
   155     s = set(mctx.status().deleted)
   160     return mctx.predicate(s.__contains__, predrepr=b'deleted')
   156     return mctx.predicate(s.__contains__, predrepr=b'deleted')
   161 
   157 
   162 
   158 
   163 @predicate(b'missing()', callstatus=True, weight=_WEIGHT_STATUS)
   159 @predicate(b'missing()', callstatus=True, weight=_WEIGHT_STATUS)
   164 def missing(mctx, x):
   160 def missing(mctx, x):
   165     """File that is missing according to :hg:`status`.
   161     """File that is missing according to :hg:`status`."""
   166     """
       
   167     # i18n: "missing" is a keyword
   162     # i18n: "missing" is a keyword
   168     getargs(x, 0, 0, _(b"missing takes no arguments"))
   163     getargs(x, 0, 0, _(b"missing takes no arguments"))
   169     s = set(mctx.status().deleted)
   164     s = set(mctx.status().deleted)
   170     return mctx.predicate(s.__contains__, predrepr=b'deleted')
   165     return mctx.predicate(s.__contains__, predrepr=b'deleted')
   171 
   166 
   188     return mctx.predicate(s.__contains__, predrepr=b'ignored')
   183     return mctx.predicate(s.__contains__, predrepr=b'ignored')
   189 
   184 
   190 
   185 
   191 @predicate(b'clean()', callstatus=True, weight=_WEIGHT_STATUS)
   186 @predicate(b'clean()', callstatus=True, weight=_WEIGHT_STATUS)
   192 def clean(mctx, x):
   187 def clean(mctx, x):
   193     """File that is clean according to :hg:`status`.
   188     """File that is clean according to :hg:`status`."""
   194     """
       
   195     # i18n: "clean" is a keyword
   189     # i18n: "clean" is a keyword
   196     getargs(x, 0, 0, _(b"clean takes no arguments"))
   190     getargs(x, 0, 0, _(b"clean takes no arguments"))
   197     s = set(mctx.status().clean)
   191     s = set(mctx.status().clean)
   198     return mctx.predicate(s.__contains__, predrepr=b'clean')
   192     return mctx.predicate(s.__contains__, predrepr=b'clean')
   199 
   193 
   206     return mctx.predicate(mctx.ctx.__contains__, predrepr=b'tracked')
   200     return mctx.predicate(mctx.ctx.__contains__, predrepr=b'tracked')
   207 
   201 
   208 
   202 
   209 @predicate(b'binary()', weight=_WEIGHT_READ_CONTENTS)
   203 @predicate(b'binary()', weight=_WEIGHT_READ_CONTENTS)
   210 def binary(mctx, x):
   204 def binary(mctx, x):
   211     """File that appears to be binary (contains NUL bytes).
   205     """File that appears to be binary (contains NUL bytes)."""
   212     """
       
   213     # i18n: "binary" is a keyword
   206     # i18n: "binary" is a keyword
   214     getargs(x, 0, 0, _(b"binary takes no arguments"))
   207     getargs(x, 0, 0, _(b"binary takes no arguments"))
   215     return mctx.fpredicate(
   208     return mctx.fpredicate(
   216         lambda fctx: fctx.isbinary(), predrepr=b'binary', cache=True
   209         lambda fctx: fctx.isbinary(), predrepr=b'binary', cache=True
   217     )
   210     )
   218 
   211 
   219 
   212 
   220 @predicate(b'exec()')
   213 @predicate(b'exec()')
   221 def exec_(mctx, x):
   214 def exec_(mctx, x):
   222     """File that is marked as executable.
   215     """File that is marked as executable."""
   223     """
       
   224     # i18n: "exec" is a keyword
   216     # i18n: "exec" is a keyword
   225     getargs(x, 0, 0, _(b"exec takes no arguments"))
   217     getargs(x, 0, 0, _(b"exec takes no arguments"))
   226     ctx = mctx.ctx
   218     ctx = mctx.ctx
   227     return mctx.predicate(lambda f: ctx.flags(f) == b'x', predrepr=b'exec')
   219     return mctx.predicate(lambda f: ctx.flags(f) == b'x', predrepr=b'exec')
   228 
   220 
   229 
   221 
   230 @predicate(b'symlink()')
   222 @predicate(b'symlink()')
   231 def symlink(mctx, x):
   223 def symlink(mctx, x):
   232     """File that is marked as a symlink.
   224     """File that is marked as a symlink."""
   233     """
       
   234     # i18n: "symlink" is a keyword
   225     # i18n: "symlink" is a keyword
   235     getargs(x, 0, 0, _(b"symlink takes no arguments"))
   226     getargs(x, 0, 0, _(b"symlink takes no arguments"))
   236     ctx = mctx.ctx
   227     ctx = mctx.ctx
   237     return mctx.predicate(lambda f: ctx.flags(f) == b'l', predrepr=b'symlink')
   228     return mctx.predicate(lambda f: ctx.flags(f) == b'l', predrepr=b'symlink')
   238 
   229 
   239 
   230 
   240 @predicate(b'resolved()', weight=_WEIGHT_STATUS)
   231 @predicate(b'resolved()', weight=_WEIGHT_STATUS)
   241 def resolved(mctx, x):
   232 def resolved(mctx, x):
   242     """File that is marked resolved according to :hg:`resolve -l`.
   233     """File that is marked resolved according to :hg:`resolve -l`."""
   243     """
       
   244     # i18n: "resolved" is a keyword
   234     # i18n: "resolved" is a keyword
   245     getargs(x, 0, 0, _(b"resolved takes no arguments"))
   235     getargs(x, 0, 0, _(b"resolved takes no arguments"))
   246     if mctx.ctx.rev() is not None:
   236     if mctx.ctx.rev() is not None:
   247         return mctx.never()
   237         return mctx.never()
   248     ms = mergestatemod.mergestate.read(mctx.ctx.repo())
   238     ms = mergestatemod.mergestate.read(mctx.ctx.repo())
   251     )
   241     )
   252 
   242 
   253 
   243 
   254 @predicate(b'unresolved()', weight=_WEIGHT_STATUS)
   244 @predicate(b'unresolved()', weight=_WEIGHT_STATUS)
   255 def unresolved(mctx, x):
   245 def unresolved(mctx, x):
   256     """File that is marked unresolved according to :hg:`resolve -l`.
   246     """File that is marked unresolved according to :hg:`resolve -l`."""
   257     """
       
   258     # i18n: "unresolved" is a keyword
   247     # i18n: "unresolved" is a keyword
   259     getargs(x, 0, 0, _(b"unresolved takes no arguments"))
   248     getargs(x, 0, 0, _(b"unresolved takes no arguments"))
   260     if mctx.ctx.rev() is not None:
   249     if mctx.ctx.rev() is not None:
   261         return mctx.never()
   250         return mctx.never()
   262     ms = mergestatemod.mergestate.read(mctx.ctx.repo())
   251     ms = mergestatemod.mergestate.read(mctx.ctx.repo())
   265     )
   254     )
   266 
   255 
   267 
   256 
   268 @predicate(b'hgignore()', weight=_WEIGHT_STATUS)
   257 @predicate(b'hgignore()', weight=_WEIGHT_STATUS)
   269 def hgignore(mctx, x):
   258 def hgignore(mctx, x):
   270     """File that matches the active .hgignore pattern.
   259     """File that matches the active .hgignore pattern."""
   271     """
       
   272     # i18n: "hgignore" is a keyword
   260     # i18n: "hgignore" is a keyword
   273     getargs(x, 0, 0, _(b"hgignore takes no arguments"))
   261     getargs(x, 0, 0, _(b"hgignore takes no arguments"))
   274     return mctx.ctx.repo().dirstate._ignore
   262     return mctx.ctx.repo().dirstate._ignore
   275 
   263 
   276 
   264 
   286     )
   274     )
   287 
   275 
   288 
   276 
   289 @predicate(b'grep(regex)', weight=_WEIGHT_READ_CONTENTS)
   277 @predicate(b'grep(regex)', weight=_WEIGHT_READ_CONTENTS)
   290 def grep(mctx, x):
   278 def grep(mctx, x):
   291     """File contains the given regular expression.
   279     """File contains the given regular expression."""
   292     """
       
   293     try:
   280     try:
   294         # i18n: "grep" is a keyword
   281         # i18n: "grep" is a keyword
   295         r = re.compile(getstring(x, _(b"grep requires a pattern")))
   282         r = re.compile(getstring(x, _(b"grep requires a pattern")))
   296     except re.error as e:
   283     except re.error as e:
   297         raise error.ParseError(
   284         raise error.ParseError(
   412     return mctx.fpredicate(eolp, predrepr=(b'eol(%r)', enc), cache=True)
   399     return mctx.fpredicate(eolp, predrepr=(b'eol(%r)', enc), cache=True)
   413 
   400 
   414 
   401 
   415 @predicate(b'copied()')
   402 @predicate(b'copied()')
   416 def copied(mctx, x):
   403 def copied(mctx, x):
   417     """File that is recorded as being copied.
   404     """File that is recorded as being copied."""
   418     """
       
   419     # i18n: "copied" is a keyword
   405     # i18n: "copied" is a keyword
   420     getargs(x, 0, 0, _(b"copied takes no arguments"))
   406     getargs(x, 0, 0, _(b"copied takes no arguments"))
   421 
   407 
   422     def copiedp(fctx):
   408     def copiedp(fctx):
   423         p = fctx.parents()
   409         p = fctx.parents()
   474     return getmatch(mc, x)
   460     return getmatch(mc, x)
   475 
   461 
   476 
   462 
   477 @predicate(b'subrepo([pattern])')
   463 @predicate(b'subrepo([pattern])')
   478 def subrepo(mctx, x):
   464 def subrepo(mctx, x):
   479     """Subrepositories whose paths match the given pattern.
   465     """Subrepositories whose paths match the given pattern."""
   480     """
       
   481     # i18n: "subrepo" is a keyword
   466     # i18n: "subrepo" is a keyword
   482     getargs(x, 0, 1, _(b"subrepo takes at most one argument"))
   467     getargs(x, 0, 1, _(b"subrepo takes at most one argument"))
   483     ctx = mctx.ctx
   468     ctx = mctx.ctx
   484     sstate = ctx.substate
   469     sstate = ctx.substate
   485     if x:
   470     if x:
   626     mctx = matchctx(ctx.p1(), ctx, cwd, badfn=badfn)
   611     mctx = matchctx(ctx.p1(), ctx, cwd, badfn=badfn)
   627     return getmatch(mctx, tree)
   612     return getmatch(mctx, tree)
   628 
   613 
   629 
   614 
   630 def loadpredicate(ui, extname, registrarobj):
   615 def loadpredicate(ui, extname, registrarobj):
   631     """Load fileset predicates from specified registrarobj
   616     """Load fileset predicates from specified registrarobj"""
   632     """
       
   633     for name, func in pycompat.iteritems(registrarobj._table):
   617     for name, func in pycompat.iteritems(registrarobj._table):
   634         symbols[name] = func
   618         symbols[name] = func
   635 
   619 
   636 
   620 
   637 # tell hggettext to extract docstrings from these functions:
   621 # tell hggettext to extract docstrings from these functions: