diff options
author | Stephen Warren <swarren@nvidia.com> | 2015-03-25 11:51:56 -0600 |
---|---|---|
committer | Stephen Warren <swarren@nvidia.com> | 2015-03-25 12:02:51 -0600 |
commit | f69acc27558b8104cf17baa0799cb4447d6d6df8 (patch) | |
tree | 6bfb32175c6ef8a0092ee6426ac26aa2816dacd6 | |
parent | 64444eff656e0efc3a5cbce1bd853a79727e4d16 (diff) | |
download | tegra-pinmux-scripts-f69acc27558b8104cf17baa0799cb4447d6d6df8.tar.gz |
Fix some TAB alignment issues
append_aligned_tabs_indent_with_tabs() was converting TABs to spaces to
simplify calculation of line length, assuming the only TABs were at the
beginning of the line, and hence were all exactly 8 characters wide. In
some scenarios, TABs were also embedded within the line, which caused
incorrect calculations. Solve this by explicitly evaluating TAB widths
character by character, rather than taking shortcuts.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
-rwxr-xr-x | board-to-uboot.py | 2 | ||||
-rwxr-xr-x | soc-to-kernel-pinctrl-driver.py | 4 | ||||
-rw-r--r-- | tegra_pmx_utils.py | 26 |
3 files changed, 21 insertions, 11 deletions
diff --git a/board-to-uboot.py b/board-to-uboot.py index f337b63..8c5f11f 100755 --- a/board-to-uboot.py +++ b/board-to-uboot.py @@ -117,7 +117,7 @@ if board.soc.soc_pins_have_ior: .ioreset = PMUX_PIN_IO_RESET_DEFAULT, ''' -s = append_aligned_tabs_indent_with_tabs(s) +s = append_aligned_tabs_indent_with_tabs(s, 0) print(s) print('''\ diff --git a/soc-to-kernel-pinctrl-driver.py b/soc-to-kernel-pinctrl-driver.py index f7743e0..46547b1 100755 --- a/soc-to-kernel-pinctrl-driver.py +++ b/soc-to-kernel-pinctrl-driver.py @@ -302,7 +302,7 @@ else: .drv_reg = -1, ''' -s = append_aligned_tabs_indent_with_tabs(s) +s = append_aligned_tabs_indent_with_tabs(s, 72) print(s) print('''\ @@ -372,7 +372,7 @@ s += '''\ .drvtype_bit = %(drvtype_bit_val)s ''' % globals() -s = append_aligned_tabs_indent_with_tabs(s) +s = append_aligned_tabs_indent_with_tabs(s, 72) print(s) print('''\ diff --git a/tegra_pmx_utils.py b/tegra_pmx_utils.py index ece3c16..2551282 100644 --- a/tegra_pmx_utils.py +++ b/tegra_pmx_utils.py @@ -74,21 +74,31 @@ def gen_wrapped_c_macro_header(macro, params): s += '\n' return s -def append_aligned_tabs_indent_with_tabs(s): +def len_evaluating_tabs(s): + l = 0 + for c in s: + if c == '\t': + l = (l + 8) & ~7 + else: + l += 1 + return l + +def append_aligned_tabs_indent_with_tabs(s, min_slashpos): lines = s.split('\n') if lines[-1].strip() == '': del lines[-1] + # This is intended to translate leading spaces to TABs, so that callers + # don't have to work out the right number of TABs to use. It also would + # affect intra-line space, but there is none in practice so far. for i, l in enumerate(lines): - lines[i] = l.replace('\t', ' ') + lines[i] = l.replace(' ', '\t') max_len = 0 for l in lines: - max_len = max(max_len, len(l)) - tabpos = (max_len + 7) // 8 + max_len = max(max_len, len_evaluating_tabs(l)) + max_len = max(max_len, min_slashpos) + tabpos = (max_len + 7) & ~7 for i, l in enumerate(lines): - remaining = 72 - len(l) - lines[i] += gen_tab_padding_to(len(l) + 1, 73) + '\\' - for i, l in enumerate(lines): - lines[i] = l.replace(' ', '\t') + lines[i] += gen_tab_padding_to(len_evaluating_tabs(l) + 1, tabpos + 1) + '\\' return '\n'.join(lines) def yn_to_boolean(s): |