Clang Intellisense C++ comments

Sysprogs forums Forums VisualGDB Clang Intellisense C++ comments

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #29328
    curtis.hendrix
    Participant

    Clang Intellisense auto-formatter does not play nice with C++ comments that are on the same line as code and have a space in between the code and comment.

    This is with VisualGDB Version 5.5 (Preview 7, build 3666)

    For example this code will remain the same after the auto-formatter is run with Clang Intellisense turned on:

    if (uart_rx_byte_count == 0)// For the first byte received, the start byte must be 0x89

    Note there is no space between the code and comment.

    However, this line will always get a space added by the auto-formatter when it is run:

    if (uart_rx_byte_count == 0) // For the first byte received, the start byte must be 0x89

    The line will become something like this after the auto-formater is run enough times:

    if (uart_rx_byte_count == 0)                                   // For the first byte received, the start byte must be 0x89

    In addition, the autoformatter will automatically double indent any blocks where there is a space and a comment before the braces.  For example, this:

    if (uart_rx_byte_count == 0) // For the first byte received, the start byte must be 0x89
    {
      if (data != 0x89) //Some comment
      {
        return;
      }
    }

    will become this:

    if (uart_rx_byte_count == 0) // For the first byte received, the start byte must be 0x89
      {
        if (data != 0x89) //Some comment
          {
            return;
          }
      }

    HOWEVER, this:

    if (uart_rx_byte_count == 0)// For the first byte received, the start byte must be 0x89
    {
      if (data != 0x89)//Some comment
      {
        return;
      }
    }

    will remain the same.  Note how there is not a space in between the closing parenthesis and the start of the comment.

    This only happens with c++ comments (those that start with “//”).  C-style comments (“/**/”) do not cause this behavior.

    #29329
    support
    Keymaster

    Hi,

    The recent version of VisualGDB would use the clang-format engine to format the code (including the comments). Clang-format could be tuned in numerous of ways by editing the .clang-format files (VisualGDB provides a graphical editor for them). Please see this page for an explanation how clang-format is integrated into VisualGDB and this page for an overview of clang-format options.

    #29345
    curtis.hendrix
    Participant

    If the “Format” button is not shown, the currently open file is not handled by Clang-format and its formatting can be configured via Tools->Options->Text Editor->C/C++ (VisualGDB)->Formatting.

    I don’t have the “Format” button, so the settings in Tools->Options…->Formatting should be getting applied.  I’ve attached a screenshot of the settings.  I don’t see where to disable automatically adding a space between code and comment every time the autoformatter is run, or how to disable double indenting when there’s a space in between comment and code for a control block.

    I did find a work-around by enabling “Clang-format (advanced)”.

    Attachments:
    You must be logged in to view attached files.
    #29348
    support
    Keymaster

    Hi,

    Good to know you have found a workaround.

    As the clang-format integration works very well in most scenarios, we no longer add new settings to the legacy formatting engine and advise using clang-format if you would like to tweak parameters that are not available in the legacy engine.

Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.