On 27.10.23 12:29, Eelco Chaudron wrote:
>
> On 26 Oct 2023, at 14:34, Jakob Meng wrote:
>
>> On 26.10.23 14:21, Robin Jarry wrote:
>>> 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.
>> Oh, nice! IIUC this is actually covered by the EditorConfig spec [0]:
>>
>> "All found EditorConfig files are searched for sections with section names 
>> matching the given filename."
>>
>> and
>>
>> "Files are read top to bottom and the most recent rules found take 
>> precedence. If multiple EditorConfig files have matching sections, the rules 
>> from the closer EditorConfig file are read last, so pairs in closer files 
>> take precedence."
>>
>> and
>>
>> "For any pair, a value of unset removes the effect of that pair, even if it 
>> has been set before. For example, add indent_size = unset to undefine the 
>> indent_size pair (and use editor defaults)."
>>
>> The latter would not make sense if you could not inherit properties from 
>> other sections.
>>
>> [0] https://spec.editorconfig.org/
> So I guess we can expect a new rev. Will mark this as changes requested for 
> now.

Updated patch is out:

https://patchwork.ozlabs.org/project/openvswitch/patch/20231027121040.26751-1-jm...@redhat.com/

Only change is that properties get inherited as discussed above.

>
>>>>> 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