Skip to content

Commit

Permalink
Add save action for auto formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
kiritsuku committed Sep 2, 2014
1 parent 1121689 commit 6b2b358
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.scalaide.core.internal.extensions.saveactions

import org.scalaide.core.text.Document
import org.scalaide.extensions.DocumentSupport
import org.scalaide.extensions.saveactions.AutoFormatting

object AutoFormattingCreator {
def create(doc: Document): AutoFormatting =
new AutoFormatting {
override val document = doc
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.scalaide.extensions
package saveactions

import org.scalaide.core.ScalaPlugin
import org.scalaide.core.internal.formatter.FormatterPreferences
import org.scalaide.core.text.Replace

import scalariform.formatter.ScalaFormatter

object AutoFormattingSetting extends SaveActionSetting(
id = ExtensionSetting.fullyQualifiedName[AutoFormatting],
name = "Auto formatting",
description = "Formats the entire document based on the configuration options in \"Scala > Editor > Formatter\".",
codeExample = """|class C {
| def f = {
| val a=0
| val b =5
| a +b
| }
|}
|""".stripMargin
)

trait AutoFormatting extends SaveAction with DocumentSupport {

def setting = AutoFormattingSetting

def perform() = {
val formatted = ScalaFormatter.format(
document.text,
FormatterPreferences.getPreferences(ScalaPlugin.prefStore))
Seq(Replace(0, document.length, formatted))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,15 @@ import org.eclipse.jface.text.IDocument
import org.eclipse.jface.text.IRegion
import org.scalaide.core.ScalaPlugin
import org.scalaide.core.internal.extensions.saveactions.AddNewLineAtEndOfFileCreator
import org.scalaide.core.internal.extensions.saveactions.AutoFormattingCreator
import org.scalaide.core.internal.extensions.saveactions.RemoveTrailingWhitespaceCreator
import org.scalaide.core.internal.text.TextDocument
import org.scalaide.core.text.TextChange
import org.scalaide.extensions.CompilerSupport
import org.scalaide.extensions.SaveActionSetting
import org.scalaide.extensions.ScalaIdeExtension
import org.scalaide.extensions.saveactions.AddNewLineAtEndOfFileSetting
import org.scalaide.extensions.saveactions.AutoFormattingSetting
import org.scalaide.extensions.saveactions.RemoveTrailingWhitespaceSetting
import org.scalaide.logging.HasLogger
import org.scalaide.util.internal.eclipse.EditorUtils
Expand All @@ -24,7 +26,8 @@ object SaveActionExtensions {

val saveActionSettings: Seq[SaveActionSetting] = Seq(
RemoveTrailingWhitespaceSetting,
AddNewLineAtEndOfFileSetting
AddNewLineAtEndOfFileSetting,
AutoFormattingSetting
)
}

Expand Down Expand Up @@ -80,7 +83,8 @@ trait SaveActionExtensions extends HasLogger {
val doc = new TextDocument(udoc)
val extensions = Seq(
RemoveTrailingWhitespaceCreator.create(doc),
AddNewLineAtEndOfFileCreator.create(doc)
AddNewLineAtEndOfFileCreator.create(doc),
AutoFormattingCreator.create(doc)
)
val enabledExtensions = findEnabledExtensions(extensions)

Expand Down

0 comments on commit 6b2b358

Please sign in to comment.