History log of /netbsd-current/usr.bin/indent/debug.c
Revision Date Author Comments
# 1.70 27-Jun-2023 rillig

indent: fix 'blank line above first statement in function body'


# 1.69 26-Jun-2023 rillig

indent: implement 'blank line above first statement in function body'


# 1.68 23-Jun-2023 rillig

indent: properly store parser state in debug mode

The stacks in the parser state are allocated now and need to be copied
individually.

The test whether two paren stacks are equal was broken since 2023-06-14
14:11:28.


# 1.67 17-Jun-2023 rillig

indent: miscellaneous cleanups

No binary change.


# 1.66 16-Jun-2023 rillig

indent: merge lexer symbols for type in/outside parentheses


# 1.65 16-Jun-2023 rillig

indent: add debug output for typedef declarations


# 1.64 16-Jun-2023 rillig

indent: don't force a blank line between '}' and preprocessing line


# 1.63 16-Jun-2023 rillig

indent: rename a field of the parser state

The previous name 'comment_in_first_line' was misleading, as it could
mean that there was a comment in the first line of the file.

No functional change.


# 1.62 15-Jun-2023 rillig

indent: rename state variable to be more accurate

No binary change.


# 1.61 14-Jun-2023 rillig

indent: clean up the code, add a few tests


# 1.60 14-Jun-2023 rillig

indent: clean up array indexing for parser symbols

With 'top' pointing to the actual top element, the array was indexed in
the closed range from 0 to top. All other arrays are indexed by the
usual half-open interval from 0 to len.

No functional change.


# 1.59 14-Jun-2023 rillig

indent: allow more than 20 nested parentheses or brackets


# 1.58 14-Jun-2023 rillig

indent: clean up debugging code


# 1.57 14-Jun-2023 rillig

indent: clean up handling of comments

One less moving part in the parser state.

No functional change.


# 1.56 14-Jun-2023 rillig

indent: remove another flag from parser state

When processing a comment, the flag ps.next_col_1 was not used for the
next token, but for a line within a comment. As its scope was limited
to a single comment, there is no need to store it any longer than that

No functional change.


# 1.55 14-Jun-2023 rillig

indent: remove a redundant flag from the parser state

No functional change.


# 1.54 14-Jun-2023 rillig

indent: merge parser symbols for stmt and stmt_list

They were handled in exactly the same way.


# 1.53 10-Jun-2023 rillig

indent: rename misleading variable

The name started with 'line_start', but the value is not always the
value from the beginning of the line.

No functional change.


# 1.52 10-Jun-2023 rillig

indent: fix debug output

When the parser state was first printed, there were unintended diff
markers. Treat the previous lexer symbol like the other parts of the
parser state, as omitting it from the diff output is confusing.


# 1.51 10-Jun-2023 rillig

indent: fix line break between semicolon and brace


# 1.50 10-Jun-2023 rillig

indent: miscellaneous cleanups


# 1.49 10-Jun-2023 rillig

indent: clean up function names, fix blank lines in debug output


# 1.48 10-Jun-2023 rillig

indent: distinguish blank lines from newline characters


# 1.47 10-Jun-2023 rillig

indent: clean up debug output

In diff mode, don't print a diff of the very first parser state, instead
print its full state.

Don't print headings for empty sections of the parser state.


# 1.46 10-Jun-2023 rillig

indent: clean up function and variable names


# 1.45 10-Jun-2023 rillig

indent: explain right-aligned code


# 1.44 10-Jun-2023 rillig

indent: rename and sort variables in parser state

No functional change.


# 1.43 09-Jun-2023 rillig

indent: sync debug information for lexer symbols


# 1.42 09-Jun-2023 rillig

indent: don't treat function call expressions as cast expressions


# 1.41 09-Jun-2023 rillig

indent: when an indentation is ambiguous, indent one level further

The '-eei' mode now applies whenever the indentation from a multi-line
expression could be confused with a following statement.


# 1.40 08-Jun-2023 rillig

indent: remove fragile heuristic for detecting cast expressions

The assumption that in an expression of the form '(a * anything)', the
'*' marks a pointer type was too simple-minded.

For now, fix the obvious cases and leave the others for later. If
needed, they can be worked around using the '-T' option.


# 1.39 07-Jun-2023 rillig

indent: extract the stack of parser symbols to a separate struct

No functional change.


# 1.38 07-Jun-2023 rillig

indent: send all debug output to the same stream


# 1.37 06-Jun-2023 rillig

indent: sort functions in call order

No functional change.


# 1.36 05-Jun-2023 rillig

indent: improve layout of debug output


# 1.35 05-Jun-2023 rillig

indent: sync debug output with parser state


# 1.34 04-Jun-2023 rillig

indent: remove read pointer from buffers that don't need it

The only buffer that needs a read pointer is the current input line in
'inp'.

No functional change.


# 1.33 04-Jun-2023 rillig

indent: track the kind of '{' on the parser stack


# 1.32 04-Jun-2023 rillig

indent: fix debug output of the parser symbol stack

Even though the stack always contains a stmt_list as first element,
print it nevertheless to avoid confusion about starting at index 1, and
to provide the full picture.


# 1.31 04-Jun-2023 rillig

indent: rename struct field, for better symmetry

No binary change outside debug mode.


# 1.30 04-Jun-2023 rillig

lint: use separate lexer symbols for 'case' and 'default'

It's not strictly necessary since these tokens behave in the same way,
still, the code is more straight-forward when there are separate tokens.


# 1.29 04-Jun-2023 rillig

indent: classify 'inline' as a modifier rather than a word


# 1.28 04-Jun-2023 rillig

indent: use separate lexer symbols for the different kinds of ':'


# 1.27 04-Jun-2023 rillig

indent: handle the indentation of 'case' in a simpler way


# 1.26 04-Jun-2023 rillig

indent: separate code for handling parentheses and brackets

Handling parentheses is more complicated than for brackets.


# 1.25 02-Jun-2023 rillig

indent: clean up

Only print the 'token' buffer in debug mode if it is interesting, group
the blocks in handling of '(' tokens by topic, remove obsolete comment
from test.


# 1.24 02-Jun-2023 rillig

indent: fix formatting of declarations with preprocessing lines


# 1.23 23-May-2023 rillig

indent: fix indentation of struct declarations


# 1.22 23-May-2023 rillig

indent: split debug output into paragraphs

The paragraphs separate the different processing steps: getting a token
from the lexer, processing the token, updating the parser state, sending
a finished line to the output.


# 1.21 23-May-2023 rillig

indent: fix spacing in declarations in for loops


# 1.20 22-May-2023 rillig

indent: implement suppressing optional blank lines


# 1.19 20-May-2023 rillig

indent: extract the output state from the parser state

The parser state depends on the preprocessing lines, the output state
shouldn't.


# 1.18 20-May-2023 rillig

indent: implement blank line above block comment


# 1.17 20-May-2023 rillig

indent: implement blank line after function body


# 1.16 20-May-2023 rillig

indent: implement blank lines around conditional compilation


# 1.15 20-May-2023 rillig

indent: add debug logging for brace indentation

No functional change outside debug mode, as the initialization of
di_stack[0] was redundant.


# 1.14 18-May-2023 rillig

indent: manually wrap overly long lines

No functional change.


# 1.13 18-May-2023 rillig

indent: switch to standard code style

Taken from share/misc/indent.pro.

Indent does not wrap code to fit into the line width, it only does so
for comments. The 'INDENT OFF' sections and too long lines will be
addressed in a follow-up commit.

No functional change.


# 1.12 17-May-2023 rillig

indent: fix indentation in preprocessor line

No binary change.


# 1.11 16-May-2023 rillig

indent: allow comments in column 1 to be formatted


# 1.10 16-May-2023 rillig

indent: remove support for form feed characters inside a line

Form feeds are occasionally used to split code into pages, and this use
is still supported. Having a form feed in the middle of a line is
exotic.


# 1.9 15-May-2023 rillig

indent: clean up detection of whether parentheses form a cast

No functional change.


# 1.8 15-May-2023 rillig

indent: indent multi-line conditions

No functional change.


# 1.7 15-May-2023 rillig

indent: document feature toggle for debugging output


# 1.6 15-May-2023 rillig

indent: move debugging code to separate file

No functional change.


# 1.5 15-May-2023 rillig

indent: clean up memory and buffer management

Remove the need to explicitly initialize the buffers. To avoid
subtracting null pointers or comparing them using '<', migrate the
buffers from the (start, end) form to the (start, len) form. This form
also avoids inconsistencies in whether 'buf.e == buf.s' or 'buf.s ==
buf.e' is used.

Make buffer.st const, to avoid accidental modification of the buffer's
content.

Replace '*buf.e++ = ch' with buf_add_char, to avoid having to keep track
how much unwritten space is left in the buffer. Remove all safety
margins, that is, no more unchecked access to buf.st[-1] or appending
using '*buf.e++'.

Fix line number counting in lex_word for words that contain line breaks.

No functional change.


# 1.4 13-May-2023 rillig

indent: implement 'blank after declarations'


# 1.3 13-May-2023 rillig

indent: use enum instead of magic numbers for tracking declarations

No functional change.


# 1.2 13-May-2023 rillig

indent: add debug logging for enum token classification


# 1.1 13-May-2023 rillig

indent: move debugging code to separate file

No functional change.