<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/63241>63241</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Clang-format fails to correctly format doxygen comments with \ as keyword starters
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          larshg
      </td>
    </tr>
</table>

<pre>
    Hey

If I run clang format on ie:
```
  /** \brief Convert a PCLPointCloud2 binary data blob into a pcl::PointCloud<T> object using a field_map.
    * \param[in] msg the PCLPointCloud2 binary blob (note that the binary point data in msg.data will not be used!)
    * \param[out] cloud the resultant pcl::PointCloud<T>
    * \param[in] field_map a MsgFieldMap object
 * \param[in] msg_data pointer to binary blob data, used instead of msg.data
    *
    * \note Use fromPCLPointCloud2 (PCLPointCloud2, PointCloud<T>) instead, except if you have a binary blob of I just want to test so this doesn't get moved around.
    * point data that you do not want to copy into a pcl::PCLPointCloud2 in order to use fromPCLPointCloud2.
    */
```
its formatted into:
```

 /** \brief Convert a PCLPointCloud2 binary data blob into a pcl::PointCloud<T> object
   * using a field_map. \param[in] msg the PCLPointCloud2 binary blob (note that the
   * binary point data in msg.data will not be used!) \param[out] cloud the resultant
   * pcl::PointCloud<T> \param[in] field_map a MsgFieldMap object \param[in] msg_data
   * pointer to binary blob data, used instead of msg.data
 *
   * \note Use fromPCLPointCloud2 (PCLPointCloud2, PointCloud<T>) instead, except if you
   * have a binary blob of I just want to test so this doesn't get moved around. point
   * data that you do not want to copy into a pcl::PCLPointCloud2 in order to use
   * fromPCLPointCloud2.
   */
```

but if @ is used instead of \ :
```
  /** @brief Convert a PCLPointCloud2 binary data blob into a pcl::PointCloud<T> object using a field_map.
    * @param[in] msg the PCLPointCloud2 binary blob (note that the binary point data in msg.data will not be used!)
    * @param[out] cloud the resultant pcl::PointCloud<T>
 * @param[in] field_map a MsgFieldMap object
    * @param[in] msg_data pointer to binary blob data, used instead of msg.data
    *
    * @note Use fromPCLPointCloud2 (PCLPointCloud2, PointCloud<T>) instead, except if you have a binary blob of I just want to test so this doesn't get moved around.
    * point data that you do not want to copy into a pcl::PCLPointCloud2 in order to use fromPCLPointCloud2.
 */
```

Its formatted correctly like this:
```
  /** @brief Convert a PCLPointCloud2 binary data blob into a pcl::PointCloud<T> object
   * using a field_map.
   * @param[in] msg the PCLPointCloud2 binary blob (note that the binary point data in
   * msg.data will not be used!)
   * @param[out] cloud the resultant pcl::PointCloud<T>
   * @param[in] field_map a MsgFieldMap object
   * @param[in] msg_data pointer to binary blob data, used instead of msg.data
   *
   * @note Use fromPCLPointCloud2 (PCLPointCloud2, PointCloud<T>) instead, except if you
 * have a binary blob of I just want to test so this doesn't get moved around. point
   * data that you do not want to copy into a pcl::PCLPointCloud2 in order to use
   * fromPCLPointCloud2.
 */
```

Is this intentional - can we do some setting that makes it work with \ and @ - I think unfortunately both versions has been used.
Thanks, Lars

Ref: https://github.com/PointCloudLibrary/pcl/pull/5724
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsV9Fu4jgU_RrzclUUbALlIQ8dumgrdaTRavZ55CQ3iQfHRvZNGf5-ZZO2ZCiU3WlnVquVKmiw43POvT4-svRe1QYxY-kHlt6OZEeNdZmWzjf1KLflLvsddyy5ZcnN_vOugjtwnYFCS1NDZV0rCawBhUz0c9gs6f_iIwDjK8ZvGL8Bli5zp7CCpTUP6AgkfFref7LK0FLbruSQKyPdDkpJEnJtc1CGLEjYFDoAiJvnyUwsPzPxG9j8KxYEnVemBgmVQl1-aeVm_IgfGETsjXSyZekHZVh6C62vgRo8wSCCM35tLCFQIynO7Qc3Yf6epDJhoXH8f6u0BmMJcoTOY8n4hPHFSRq2o8CjCLhxdYe-0yQNnZH7iqgn9SDho69X4fGj3PRF6l8-VY4vUUUUhw7IDmoRxhhfRmGgjCeUJdjqSf2A2BHLWMY_PULlbPtdxRm_Hv4SYI6F88UjbBjHbwVuCFQFO9tBIx8Q5ICvDVv1a-cJtqGiZIHQE3gL1CgPpUVvGJ8T1EjQ2gcsQTrbmfK7fXPQ67gNAlxpY5sfFy7sZne8UYcilQHryn1ZuxfrMMQNpnnJTop8bzuKfSB7ynhPzf4J7nuiHnCOnfgm5htg_BMjXua9AcwZ4X_TeqcNNwT8IfMdOu-nGG-A9qYm3FdisP5be3Cw-Dk_nrHj_jPvYkHYNAHlj5rE0iVclI7T5Nel4zT5V6TjM40fSccXFV0UjWfK8W7pOE3-T8eL0_FVL94NArKwzmFBegdarTGK-8VWfCUqh-f3e7lygHKpQ9_QoCfkXWjR93XoUYi-tz8PDq3_aIS-blq_VxM6Z0hZIzVcQSENbDHQ9LZF8EgU7BL5t3KNHhTB1ro1bBU1MWelKWMMX8FdWNGsoTOVddQZSah3kFtq4AGdV9Z4aKSHHNHETdGT_dxIs_ahSffS-UOSf2DFxA00RJt4iITTYlUrarp8XNiW8dWz9HuVO-l2jK9CJflq0-nwlc75dFRmolyIhRxhNpldz6ZiIoQYNVmSXhez-VwUeS6mRSVmWKR5VRTFXM6EmKcjlfGEi2Q2SfgkuU7FeJ6W82RWyEUicCFyyaYJtlLpsdYP7di6eqS87zCbCT6djLTMUft42efc4BbiIOM83P1dFt65yrvas2milSf_vAop0pgtw53_qr_zV1Jpv981jydsP1Lab7saDRS2bdGQP2iOhzXuttaV4Ek6QudHndPZmYoGCv3X1cbZeAzwVSTuGV9FYX8FAAD__2kvSng">