[cfe-dev] odd character limit while string formatting

Daniel Jasper djasper at google.com
Thu Dec 11 10:10:55 PST 2014


Do you think you could contribute that to the current extension? I don't
think it is a good idea to create a second one. The source code is in
<cfe>/tools/clang-format-vs.

On Thu, Dec 11, 2014 at 5:28 PM, Arvind Dalvi <arvind.dalvi at outlook.com>
wrote:

> I could not see an option to format the document on “save”.
>
> On 11-Dec-2014, at 8:47 pm, Daniel Jasper <djasper at google.com> wrote:
>
> What's wrong with the extension that we already have (follow the link from
> "Visual Studio" on http://clang.llvm.org/docs/ClangFormat.html)?
>
> On Thu, Dec 11, 2014 at 4:11 PM, Arvind Dalvi <arvind.dalvi at outlook.com>
> wrote:
>
>>  Thanks Daniel for explaining the workings.
>>
>> One side note...I created a VS2013 (community edition) extension that
>> uses clang-format.exe to format C++ and C# documents on request or during
>> save operation. I have been using it for a week now and it works as
>> expected. Can I submit my extension to clang community ?
>>
>> P.S.
>> It is based off on AStyle extension source.
>>
>> ------------------------------
>> Date: Mon, 1 Dec 2014 07:54:15 +0100
>> Subject: Re: [cfe-dev] odd character limit while string formatting
>> From: djasper at google.com
>> To: arvind.dalvi at outlook.com
>> CC: rcsaba at gmail.com; cfe-dev at cs.uiuc.edu
>>
>>
>> clang-format works penalty-based. It considers both versions of this
>> format (wrapping or not wrapping after the "(") correct. It prefers not to
>> wrap, i.e. keep "&czString" on the same line. However, it also prefers
>> not to automatically split string literals and that has a higher penalty.
>> The reason is that it is more likely that the author has split or not split
>> the string literal in a way that is preferable knowing the string's
>> content. So the two short strings actually fit on a line if the line is
>> wrapped before "&czString". For the second statement, however, the
>> string needs to be split either way, as the string would not fit onto a
>> line by itself anyway. Thus, clang-format can wrap it in a way to prefer
>> keeping "&czString" on the same line.
>>
>> To work around this, you can manually break the strings the way you think
>> they should be broken or reduce the penalty for breaking string literals (PenaltyBreakString
>> - http://clang.llvm.org/docs/ClangFormatStyleOptions.html). The latter
>> might lead to "interesting" behavior in some cases, though.
>>
>> The content of the string literal is 63 characters plus quotes plus "L"
>> plus closing parentheses plus semicolon makes 68 characters. Assuming the
>> 12 character indent from your first snippet is correct that put the string
>> right up onto the 80 column limit. Adding a single character means that
>> clang-format hast to line-wrap the string.
>>
>> On Sat, Nov 29, 2014 at 2:39 PM, Arvind Dalvi <arvind.dalvi at outlook.com>
>> wrote:
>>
>> Hi Csaba,
>>
>> Yes, it was a single string which was then broken by formatting.
>>
>> Original:
>> RtlInitUnicodeString(&czString, L
>> "I am going to type a string that will be 63 characters only..\n");
>>
>> I have not tried with lesser characters.
>>
>> And one more thing, is there a way to format entire document while saving
>> it ?
>>
>> Thanks,
>> Arvind
>>
>> ------------------------------
>> Date: Sat, 29 Nov 2014 13:17:42 +0100
>>
>> Subject: Re: [cfe-dev] odd character limit while string formatting
>> From: rcsaba at gmail.com
>> To: arvind.dalvi at outlook.com
>> CC: cfe-dev at cs.uiuc.edu
>>
>> Hi Arvind,
>>
>> Are you saying that in all three cases, the original string was in one
>> piece? (you didn't show us the originals).
>>
>> Have you tried with other lengths?
>>
>> Csaba
>>
>> On Sat, Nov 29, 2014 at 3:02 AM, Arvind Dalvi <arvind.dalvi at outlook.com>
>> wrote:
>>
>> Hi Csaba,
>>
>> I agree. But my concern is the way formatting is done. If you look at the
>> 2nd sample, the formatting looks correct where it has broken the string in
>> to two and aligned it. Whereas in the case of 1st and 3rd it has not.
>>
>> Thanks,
>> Arvind
>>
>> ------------------------------
>> Date: Fri, 28 Nov 2014 18:59:40 +0100
>> Subject: Re: [cfe-dev] odd character limit while string formatting
>> From: rcsaba at gmail.com
>> To: arvind.dalvi at outlook.com
>> CC: cfe-dev at cs.uiuc.edu
>>
>>
>> Hi Avind,
>>
>> The name of RtlInitUnicodeString is 20 characters long. That, plus a 63
>> character string will not fit into 80 characters, which is probably set as
>> the maximum line length.
>>
>>
>> On Fri, Nov 28, 2014 at 1:13 PM, Arvind Dalvi <arvind.dalvi at outlook.com>
>> wrote:
>>
>> I am assuming this list caters to clang-format tool too. If not, do let
>> me know the concerned list.
>>
>> Today I downloaded the clang-format plugin for Visual Studio and realized
>> that when a function call contains 63-character string, the formatting of
>> the function call changes. If you look at the samples below, you would find
>> that 2nd function call got formatted correctly, whereas the 1st and last
>> pulled the parameters down. Is this expected ? If not, any setting that i
>> can set to get the 2nd format applied to the 1st and to the last call ?
>>
>> RtlInitUnicodeString(
>>             &czString,
>>             L"I am going to type a string that will be 63 characters only..\n");
>>
>> RtlInitUnicodeString(&czString, L"I am going to type a string that "
>>                                 L"will be 64 characters only...\n");
>>
>> RtlInitAnsiString(
>>     azString,
>>     L"I am going to type a string that will be 63 characters only..\n");
>>
>>
>> Csaba
>>
>> --
>> GCS a+ e++ d- C++ ULS$ L+$ !E- W++ P+++$ w++$ tv+ b++ DI D++ 5++
>> The Tao of math: The numbers you can count are not the real numbers.
>> Life is complex, with real and imaginary parts.
>> "Ok, it boots. Which means it must be bug-free and perfect. " -- Linus
>> Torvalds
>> "People disagree with me. I just ignore them." -- Linus Torvalds
>>
>>
>>
>>
>> --
>> GCS a+ e++ d- C++ ULS$ L+$ !E- W++ P+++$ w++$ tv+ b++ DI D++ 5++
>> The Tao of math: The numbers you can count are not the real numbers.
>> Life is complex, with real and imaginary parts.
>> "Ok, it boots. Which means it must be bug-free and perfect. " -- Linus
>> Torvalds
>> "People disagree with me. I just ignore them." -- Linus Torvalds
>>
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20141211/8839e9ab/attachment.html>


More information about the cfe-dev mailing list