From 16890839d35e9ac270e32934a232b45de9e8544b Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 18 Sep 2019 10:51:05 -0400 Subject: [PATCH] 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 fcd96aeb38..b784ca71ba 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): """