[PATCH 2 of 5] ignore: _parsefiles() returns the pattern and line number
Patrick Mezard
pmezard at gmail.com
Sat Sep 15 14:29:50 CDT 2007
# HG changeset patch
# User Patrick Mezard <pmezard at gmail.com>
# Date 1189882147 -7200
# Node ID ac83580a203978458fb36336816de772ef2c2d0a
# Parent 3f5c1f4a9ac4135e1e81a71ee9aff485927f6e9d
ignore: _parsefiles() returns the pattern and line number
diff --git a/mercurial/ignore.py b/mercurial/ignore.py
--- a/mercurial/ignore.py
+++ b/mercurial/ignore.py
@@ -9,7 +9,7 @@ import util
import util
def _parselines(fp):
- for line in fp:
+ for linenum, line in enumerate(fp):
if not line.endswith('\n'):
line += '\n'
escape = False
@@ -19,7 +19,7 @@ def _parselines(fp):
elif line[i] == '#': break
line = line[:i].rstrip()
if line:
- yield line
+ yield linenum + 1, line
def _parsefiles(files, warn):
syntaxes = {'re': 'relre:', 'regexp': 'relre:', 'glob': 'relglob:'}
@@ -29,7 +29,7 @@ def _parsefiles(files, warn):
pats[f] = []
fp = open(f)
syntax = 'relre:'
- for line in _parselines(fp):
+ for linenum, line in _parselines(fp):
if line.startswith('syntax:'):
s = line[7:].strip()
try:
@@ -45,7 +45,7 @@ def _parsefiles(files, warn):
elif line.startswith(s+':'):
pat = rels + line[len(s)+1:]
break
- pats[f].append(pat)
+ pats[f].append((linenum, pat))
except IOError, inst:
if f != files[0]:
warn(_("skipping unreadable ignore file '%s': %s\n") %
@@ -78,6 +78,7 @@ def ignore(root, files, warn):
[allpats.extend(patlist) for patlist in pats.values()]
if not allpats:
return util.never
+ allpats = [pat for (linenum, pat) in allpats]
try:
files, ignorefunc, anypats = (
@@ -85,6 +86,7 @@ def ignore(root, files, warn):
except util.Abort:
# Re-raise an exception where the src is the right file
for f, patlist in pats.items():
+ patlist = [pat for (linenum, pat) in patlist]
files, ignorefunc, anypats = (
util.matcher(root, inc=patlist, src=f))
More information about the Mercurial-devel
mailing list