Patchwork [4,of,4] i18n: format warning of hggettext in standard compiler error style

login
register
mail settings
Submitter Katsunori FUJIWARA
Date Aug. 2, 2018, 5:21 p.m.
Message ID <7748d224f147c8d8d499.1533230512@blacknile>
Download mbox | patch
Permalink /patch/33115/
State Accepted
Headers show

Comments

Katsunori FUJIWARA - Aug. 2, 2018, 5:21 p.m.
# HG changeset patch
# User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
# Date 1528689615 -32400
#      Mon Jun 11 13:00:15 2018 +0900
# Node ID 7748d224f147c8d8d4990f6e8b2a1ce865283c26
# Parent  ddfbcd8d9351fb699d08482d2ced0e6cc42ea319
# Available At https://bitbucket.org/foozy/mercurial-wip
#              hg pull https://bitbucket.org/foozy/mercurial-wip -r 7748d224f147
# EXP-Topic refactor-update-pot
i18n: format warning of hggettext in standard compiler error style

Now, hggettext specific warning messages are formatted in:

    FILENAME:LINENO:MESSAGE

This allows editors to jump into corresponded line easily.

Patch

diff --git a/i18n/hggettext b/i18n/hggettext
--- a/i18n/hggettext
+++ b/i18n/hggettext
@@ -63,7 +63,7 @@  def poentry(path, lineno, s):
 
 doctestre = re.compile(r'^ +>>> ', re.MULTILINE)
 
-def offset(src, doc, name, default):
+def offset(src, doc, name, lineno, default):
     """Compute offset or issue a warning on stdout."""
     # remove doctest part, in order to avoid backslash mismatching
     m = doctestre.search(doc)
@@ -76,8 +76,9 @@  def offset(src, doc, name, default):
         # This can happen if the docstring contains unnecessary escape
         # sequences such as \" in a triple-quoted string. The problem
         # is that \" is turned into " and so doc wont appear in src.
-        sys.stderr.write("warning: unknown offset in %s, assuming %d lines\n"
-                         % (name, default))
+        sys.stderr.write("%s:%d:warning:"
+                         " unknown docstr offset, assuming %d lines\n"
+                         % (name, lineno, default))
         return default
     else:
         return src.count('\n', 0, end)
@@ -106,7 +107,7 @@  def docstrings(path):
     if not path.startswith('mercurial/') and mod.__doc__:
         with open(path) as fobj:
             src = fobj.read()
-        lineno = 1 + offset(src, mod.__doc__, path, 7)
+        lineno = 1 + offset(src, mod.__doc__, path, 1, 7)
         print(poentry(path, lineno, mod.__doc__))
 
     functions = list(getattr(mod, 'i18nfunctions', []))
@@ -129,7 +130,6 @@  def docstrings(path):
             actualpath = '%s%s.py' % (funcmod.__name__.replace('.', '/'), extra)
 
             src = inspect.getsource(func)
-            name = "%s.%s" % (actualpath, func.__name__)
             lineno = inspect.getsourcelines(func)[1]
             doc = docobj.__doc__
             origdoc = getattr(docobj, '_origdoc', '')
@@ -137,9 +137,9 @@  def docstrings(path):
                 doc = doc.rstrip()
                 origdoc = origdoc.rstrip()
             if origdoc:
-                lineno += offset(src, origdoc, name, 1)
+                lineno += offset(src, origdoc, actualpath, lineno, 1)
             else:
-                lineno += offset(src, doc, name, 1)
+                lineno += offset(src, doc, actualpath, lineno, 1)
             print(poentry(actualpath, lineno, doc))