One icon indicating copy to clipboard operation
One copied to clipboard

🕴🏾 Our pre-commit/clang-format config is not great 🕴🏾

Open BaseMax opened this issue 4 years ago • 4 comments

As you see in some file for example lexer.test.c file I want to implement items of tokens in several lines.. https://github.com/One-Language/One/blob/master/test/lexer.test.c#L82

for example:

lexer_tests[lexer_tests_count++] = (LexerTest){"1\r\n    2\n3\n4", {token_make(TOKEN_VALUE_NUMBER), token_make(TOKEN_SKIP_WHITESPACE_LINE), token_make(TOKEN_VALUE_NUMBER), token_make(TOKEN_SKIP_WHITESPACE_LINE), token_make(TOKEN_VALUE_NUMBER), token_make(TOKEN_SKIP_WHITESPACE_LINE), token_make(TOKEN_VALUE_NUMBER), token_make(TOKEN_EOF)}, 7};

This is VERY BAD and not readable, we want some better syntax format.

This is much better:

lexer_tests[lexer_tests_count++] = (LexerTest){"1\r\n    2\n3\n4", {
	token_make(TOKEN_VALUE_NUMBER),
	token_make(TOKEN_SKIP_WHITESPACE_LINE),
	token_make(TOKEN_VALUE_NUMBER),
	token_make(TOKEN_SKIP_WHITESPACE_LINE),
	token_make(TOKEN_VALUE_NUMBER),
	token_make(TOKEN_SKIP_WHITESPACE_LINE),
	token_make(TOKEN_VALUE_NUMBER),
	token_make(TOKEN_EOF)
}, 7};

BaseMax avatar Aug 02 '21 23:08 BaseMax

This is our clang-format config: https://github.com/One-Language/One/blob/master/.clang-format

We can take a look at other c/c++ projects to see what clang-config these use...

BaseMax avatar Aug 02 '21 23:08 BaseMax

https://stackoverflow.com/questions/33258159/how-to-make-clang-format-skip-sections-of-c-code

@BaseMax

jbampton avatar Aug 14 '21 08:08 jbampton

Good trick

// clang-format off
.....
.....
.....
// clang-format on

BaseMax avatar Sep 03 '21 06:09 BaseMax

Do we need any other custom Clang Format settings ?

jbampton avatar Jul 28 '22 12:07 jbampton