Scala,Sublime Text 3 - 当跟随文本时,停止关闭大括号

时间:2015-03-20 02:41:45

标签: scala sublimetext3

每当我在Scala中键入多块代码构造(例如if..else..for..yield..)时,如果我在第一个结束大括号之后写文本而没有先填写正文,Sublime&#34 ;有益"缩进大括号。当我在同一行中写入多个右括号/括号/括号时,也会发生这种情况。例子:

if (condition) {

  } else {

  }

for {

  } yield {

  }

list.map(x => {

  })

如何强制关闭大括号保持不变?

1 个答案:

答案 0 :(得分:4)

我觉得你的痛苦在这里,但我多年来只是忍受这种行为。当然,直到现在。我仔细研究了用户和语言偏好,把事情搞砸了,直到没有任何东西离开。那时我意识到它不是导致问题的首选项或语言文件中的内容,而是不是那里。由于许多其他语言具有相同的if / else语法,我尝试了许多if / else语句。 C,C ++和Java没有这个问题,但C#做到了。遗失了什么? 缩进规则。

我刚刚从Java包中复制了缩进规则,因为它在语法上非常相似,并将扩展名更改为scala。我正在研究linux,所以我不确定其他操作系统应该是什么样的路径,但我想在${HOME}之后会有类似的。

$ {HOME} /.config / sublime-text-3 / Packages / Scala / Indentation Rules.tmPreferences

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>name</key>
    <string>Indentation Rules</string>
    <key>scope</key>
    <string>source.scala - comment</string>
    <key>settings</key>
    <dict>
        <key>decreaseIndentPattern</key>
        <string>^(.*\*/)?\s*\}.*$|^\s*(public|private|protected):\s*$</string>
        <key>increaseIndentPattern</key>
        <string>^.*\{[^}"']*$|^\s*(public|private|protected):\s*$</string>

        <key>bracketIndentNextLinePattern</key>
        <string>(?x)
        ^ \s* \b(if|while|else)\b [^;]* $
        | ^ \s* \b(for)\b .* $
        </string>

    </dict>
    <key>uuid</key>
    <string>20E93106-18CF-4BA3-9DA3-8F0C955DB774</string>
</dict>
</plist>

(如果您的配置保存在其他地方,则为your-subl-config-folder-here../Packages/Scala/Indentation Rules.tmPreferencesPackages目录的结构应该相同。)

您很可能必须在sublime Scala目录中创建Packages目录。对于Sublime Text 2,解决方案完全相同,除了包含所有语言文件的Scala目录已经存在。我已经尝试了所有我能想到的语法,但似乎没有任何错误。但是,这可能需要进行一些调整。