[tor-commits] [tor/master] annotate_ifdef_directives: obey an 80-column line-limit

asn at torproject.org asn at torproject.org
Mon Sep 30 10:45:36 UTC 2019


commit 16890839d35e9ac270e32934a232b45de9e8544b
Author: Nick Mathewson <nickm at torproject.org>
Date:   Wed Sep 18 10:51:05 2019 -0400

    annotate_ifdef_directives: obey an 80-column line-limit
    
    If we would add a comment making a line longer than 80 columns,
    instead truncate the variable portion of the comment until it just
    fits into 80 columns, with an ellipsis.
---
 scripts/maint/annotate_ifdef_directives | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/scripts/maint/annotate_ifdef_directives b/scripts/maint/annotate_ifdef_directives
index fcd96aeb3..b784ca71b 100755
--- a/scripts/maint/annotate_ifdef_directives
+++ b/scripts/maint/annotate_ifdef_directives
@@ -26,14 +26,33 @@ import re
 # Any block with fewer than this many lines does not need annotations.
 LINE_OBVIOUSNESS_LIMIT = 4
 
+# Maximum line width.
+LINE_WIDTH=80
+
 class Problem(Exception):
     pass
 
-def commented_line(fmt, argument):
+def commented_line(fmt, argument, maxwidth=LINE_WIDTH):
     """
-    Return fmt%argument, for use as a commented line.
+    Return fmt%argument, for use as a commented line.  If the line would
+    be longer than maxwidth, truncate argument.
+
+    Requires that fmt%"..." will fit into maxwidth characters.
     """
-    return fmt % argument
+    result = fmt % argument
+    if len(result) <= maxwidth:
+        return result
+    else:
+        # figure out how much we need to truncate by to fit the argument,
+        # plus an ellipsis.
+        ellipsis = "..."
+        result = fmt % (argument + ellipsis)
+        overrun = len(result) - maxwidth
+        truncated_argument = argument[:-overrun] + ellipsis
+
+        result = fmt % truncated_argument
+        assert len(result) <= maxwidth
+        return result
 
 def uncomment(s):
     """





More information about the tor-commits mailing list