c++ - 自动将带有大量括号((()))的C++代码格式化为多行(更易于阅读)

标签 c++ visual-studio-2015 visual-studio-2017

有时,我想将一行代码重新格式化为多行代码以提高可读性。

例如:-

pushBuffer( MouseEvent(globalVar()->timestamp,getButtonCode(in1,in2),PRESS));

可能被格式化为:-

pushBuffer(
    MouseEvent(
        globalVar()->timestamp,
        getButtonCode(
            in1,
            in2
        ),
        PRESS
    )
);

问题:如何在 Visual Studio 2015 中自动完成?热键?

最接近的特征是ctrl+K ctrl+F (格式选择)它只能格式化缩进,但不会将代码拆分成这样的多行。

编辑:
在我看来,博洛夫的回答将引导我找到正确的解决方案。谢谢!
但是,正如 bolov 提到的,这不是一个完整的解决方案;可能需要自定义脚本。
我正在相关的 Visual Studio's Site 中调查有关该脚本的更多信息.

编辑(2019 年 4 月):
原来的问题没有解决。
此外,template<> 问题更加严重.

我也希望像这样(或类似的)分割线:-

template<
    class T,
    class B=T::F<
        W
    > 
>

最佳答案

Clang format是一个很好的工具,它有一个 Visual Studio extension .默认快捷键是CTRLR,CTRLF

它是高度可定制的,但通常它不会拆分行,除非它超过列限制。

以下是它可以做什么的一些示例(我将名称加长以便超过列数限制):

pushBuffer_long_name(
    MouseEvent_long_name(globalVar_long_name()->timestamp_long_name,
                         getButtonCode_long_name(in1, in2), PRESS_long_name));

我认为如果不能将所有参数都放在一行中,可以选择将每个参数放在单独的一行中。您将不得不使用它。

关于c++ - 自动将带有大量括号((()))的C++代码格式化为多行(更易于阅读),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41847373/

相关文章:

c++ - C++结构语法 "a : b"是什么意思

c++ - 将闭包作为“类方法指针”?

c++ - wxWidgets绘制顺时针椭圆弧

c++ - 以编程方式在Excel中制作图表

visual-studio - 是否有 Visual Studio 2015 调试步骤跳过?

c++ - Visual Studio 2015 D4024 & LNK1181

sql-server - SSDT 安装程序缺少先决条件 : SQL Server 2016 System CLR Types

c# - 我可以在 Visual Studio 解决方案中列出所有*不可用*项目吗?

c++ - 不是 VS2017 中的编译时常量表达式

visual-studio - 当 <Compile> 和 <EmbeddedResource> 之外的文件被更改时,如何避免 Visual Studio 增量构建不运行?