diff mercurial/config.py @ 45800:0883413e09bc

config: move message about leading spaces in config to config.py When the config parser raises a ParseError, it uses the line that failed to parse as the error message. It doesn't currently tell the user anything about why it failed to parse. b13b99d39a46 (config: highlight parse error caused by leading spaces (issue3214), 2014-03-16) added a checked based on the error *message* having leading spaces. That has worked fine because only the config parser uses the line itself as error message (I think the revset and fileset parsers use more user-friendly proper messages). It still feels like a hack. Let's make the config parser give a useful message about leading whitespace instead. We should ideally follow up with more useful messages for other parse errors in config files. Differential Revision: https://phab.mercurial-scm.org/D9241
author Martin von Zweigbergk <martinvonz@google.com>
date Thu, 22 Oct 2020 10:57:11 -0700
parents 668af67bfd18
children 9dc1351d0b5f
line wrap: on
line diff
--- a/mercurial/config.py	Thu Oct 22 09:58:05 2020 -0700
+++ b/mercurial/config.py	Thu Oct 22 10:57:11 2020 -0700
@@ -200,7 +200,10 @@
                 self._unset.append((section, name))
                 continue
 
-            raise error.ParseError(l.rstrip(), (b"%s:%d" % (src, line)))
+            message = l.rstrip()
+            if l.startswith(b' '):
+                message = b"unexpected leading whitespace: %s" % message
+            raise error.ParseError(message, (b"%s:%d" % (src, line)))
 
     def read(self, path, fp=None, sections=None, remap=None):
         if not fp: