IntelliJ Idea:Scala 案例类成员的冒号对齐?
Posted
技术标签:
【中文标题】IntelliJ Idea:Scala 案例类成员的冒号对齐?【英文标题】:IntelliJ Idea: Align on Colon for Scala Case Class Members? 【发布时间】:2016-06-29 19:42:00 【问题描述】:有没有办法阻止 Idea 重新格式化多行案例类成员?
预期结果 (冒号的位置不是那么重要,但是类型注释的对齐会很好)
case class ApiError(
timestamp : LocalDateTime,
status : Int,
code : Option[String],
message : String
)
我在 Scala 的代码样式设置中花了一些时间,并且一直坚持使用这样的代码样式:
case class ApiError(
timestamp: LocalDateTime,
status: Int,
code: Option[String],
message: String
)
我可以用@formatter:off
把代码弄得乱七八糟,但如果有更好的方法那就太好了。
【问题讨论】:
旁注:考虑一下您是否真的想要这个。一旦您将代码格式化为这样,并且添加了一个名称比其他成员长的新成员,您将看到 VCS 历史记录中的所有行都发生了变化——即使实际上只有一个成员加入。为什么要使一行的格式如此依赖于其他不相关的行? - 最重要的是,您确定您的代码只能使用固定宽度的字体正确查看。再说一遍,为什么?您所需的格式可以让您更轻松地了解用于成员的类型,但更难查看哪个成员具有哪种类型。 @Madoc 我同意与 VC 结合的缺点。目前,视觉上的整理(当然,这是非常主观的)证明了我的理由(我在过去的两个 JS 项目中以类似的方式做到了这一点,并开始喜欢它构建代码的方式)。准确地说,我不一定希望 Idea 将其作为自动格式化选项提供,而是作为 重新格式化时保留类型的设置。 当然,这只是一个意见。就个人而言,我转向了 Scala 代码的自动代码格式化。对于 Java 代码,我仍然保持打开状态。 【参考方案1】:我的 IntelliJ IDEA 版本是 Ultimate 2019.3
步骤 1. 首选项 -> 编辑器 -> 代码样式 -> Scala
步骤 2. Wrapping and Braces -> 方法声明参数,然后 检查“在多行声明中对齐参数类型”
我尝试了有问题的示例,它是
case class ApiError(
timestamp: LocalDateTime,
status : Int,
code : Option[String],
message : String
)
如果取消勾选“多行对齐”,则与预期结果一致。
case class ApiError(
timestamp: LocalDateTime,
status : Int,
code : Option[String],
message : String
)
【讨论】:
【参考方案2】:就像 Madoc 评论的那样,这些格式在添加新行时可能会导致巨大的变化。此外,虽然在小情况下相当不错,但它无法扩展,而且我们似乎是在表格中编程......
【讨论】:
以上是关于IntelliJ Idea:Scala 案例类成员的冒号对齐?的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ Idea 中用于 Scala 的模块 SDK
在Intellij IDEA搭建Scala开发环境,以及使用Intellij IDEA开发Scala程序
用maven来创建scala和java项目代码环境(图文详解)(Intellij IDEA(Ultimate版本)Intellij IDEA(Community版本)和Scala IDEA for