Jakob Meng, Oct 26, 2023 at 14:17:
On 26.10.23 13:52, Robin Jarry wrote:
> , Oct 26, 2023 at 13:07:
>> From: Jakob Meng <c...@jakobmeng.de>
>>
>> Wildcard sections [*] and [**] are unsafe because properties cannot be
>> applied safely to any filetype in general. For example, IDEs like
>> Visual Studio Code and KDevelop store configuration files in subfolders
>> like .vscode or .kdev4. Properties from wildcard sections also apply to
>> those files which is not safe in general.
>> Another example are patches created with 'git format-patch' which can
>> contain trailing whitespaces. When editing a patch, e.g. to fix a typo
>> in the title, trailing whitespaces should not be removed.
>>
>> Property trim_trailing_whitespace should not be defined at all because
>> it is interpreted differently by editors. Some wipe whitespaces from
>> the whole file, others remove them from edited lines only and a few
>> change their behavior between releases [0]. Limiting the property to a
>> subset of files like *.c/*.h will not mitigate the issue:
>>
>> Multiple definitions of a whitespace exist. Unicode considers a form
>> feed (0x0C) to be a whitespace [1]. QChar::isSpace() [2] from Qt
>> follows this definition, causing the Kate editor identify a form feed
>> as a trailing whitespace and removing it from sources [3]. This breaks
>> patches when editors remove form feeds and thus causing broken patches
>> which cannot be applied cleanly.
>>
>> Removing trim_trailing_whitespace will be a minor inconvienence, in
>> particular because utilities/checkpatch.py and thus 0-day Robot will
>> prevent trailing whitespaces for our definition of a whitespace.
>>
>> [0] 
https://github.com/KDE/ktexteditor/commit/94b328fc64e543d91930845d2a96ce08d3043295
>> [1] https://en.wikipedia.org/wiki/Whitespace_character
>> [2] 
https://github.com/qt/qtbase/blob/5628600a07295db6ed6683e97fafb0c45ddea505/src/corelib/text/qchar.h#L554
>> [3] 
https://github.com/KDE/ktexteditor/blob/10210ec1dd06afa1e7b19a4fff722a8a23719161/src/document/katedocument.cpp#L5643
>>
>> Fixes: 07f6d6a0cb51 ("Add editorconfig file.")
>>
>> Signed-off-by: Jakob Meng <c...@jakobmeng.de>
>> ---
>>  .editorconfig | 34 +++++++++++++++++++++++++++++-----
>>  1 file changed, 29 insertions(+), 5 deletions(-)
>>
>> diff --git a/.editorconfig b/.editorconfig
>> index 685c72750..aebcf3a72 100644
>> --- a/.editorconfig
>> +++ b/.editorconfig
>> @@ -2,47 +2,71 @@
>>  
>>  root = true
>>  
>> -[*]
>> -end_of_line = lf
>> -insert_final_newline = true
>> -trim_trailing_whitespace = true
>> -charset = utf-8
>
> Hi Jakob,
>
> I think you could keep these two options:
>
> end_of_line = lf
> charset = utf-8
>

You cannot decide this in general for all possible filetypes across all possible dev platforms. Again, those properties in [*] would also apply to non-ovs-owned files inside the source tree, e.g. created by IDEs. Unsafe. Please don't.

Ok fair enough.

> And probably adding insert_final_newline = true is not necessary. > checkpatch should complain if the final newline is missing.

I left it in .editorconfig because it is not causing trouble. But I can remove it, if you want.

I don't think it is important you can leave it or remove it.

However I just realized that you could simply copy the settings in the [*.{c,h}] section as other sections will inherit from it unless they override something.

> Your patch should only remove insert_final_newline and > trim_trailing_whitespace from the default section.


>
>> +# No wildcard sections [*] and [**] because properties cannot be
>> +# applied safely to any filetype in general.
>> +
>> +# Property trim_trailing_whitespace should not be defined at all
>> +# because it is interpreted differently by editors.
>>  
>>  [*.{c,h}]
>> +charset = utf-8
>> +end_of_line = lf
>>  indent_style = space
>>  indent_size = 4
>> +insert_final_newline = true
>>  max_line_length = 79
>>  
>>  [include/linux/**.h]
>> +charset = utf-8
>> +end_of_line = lf
>>  indent_style = tab
>>  indent_size = tab
>> +insert_final_newline = true
>>  tab_width = 8
>>  
>>  [include/sparse/rte_*.h]
>> +charset = utf-8
>> +end_of_line = lf
>>  indent_style = tab
>> +insert_final_newline = true
>>  tab_width = 8
>>  
>>  [include/windows/getopt.h]
>> +charset = utf-8
>> +end_of_line = lf
>>  indent_style = tab
>>  indent_size = tab
>> +insert_final_newline = true
>>  tab_width = 8
>>  
>>  [include/windows/netinet/{icmp6,ip6}.h]
>> +charset = utf-8
>> +end_of_line = lf
>>  indent_style = tab
>>  indent_size = tab
>> +insert_final_newline = true
>>  tab_width = 8
>>  
>>  [lib/getopt_long.c]
>> +charset = utf-8
>> +end_of_line = lf
>>  indent_style = tab
>>  indent_size = tab
>> +insert_final_newline = true
>>  tab_width = 8
>>  
>>  [lib/sflow*.{c,h}]
>> +charset = utf-8
>> +end_of_line = lf
>>  indent_style = tab
>>  indent_size = tab
>> +insert_final_newline = true
>>  tab_width = 8
>>  
>>  [lib/strsep.c]
>> +charset = utf-8
>> +end_of_line = lf
>>  indent_style = tab
>>  indent_size = tab
>> +insert_final_newline = true
>>  tab_width = 8
>> -- 
>> 2.39.2
>
>
>

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to