Skip to content

Commit

Permalink
refactorings to formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
henryhchchc committed Feb 20, 2024
1 parent da6dc0f commit 3aca373
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 30 deletions.
4 changes: 2 additions & 2 deletions server/src/main/kotlin/org/javacs/kt/Configuration.kt
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ data class InlayHintsConfiguration(
var chainedHints: Boolean = false
)

data class KtFmtConfiguration(
data class KtfmtConfiguration(
var style: String = "google",
var indent: Int = 4,
var maxWidth: Int = 100,
Expand All @@ -67,7 +67,7 @@ data class KtFmtConfiguration(

data class FormattingConfiguration(
var formatter: String = "ktfmt",
var ktFmt: KtFmtConfiguration = KtFmtConfiguration()
var ktfmt: KtfmtConfiguration = KtfmtConfiguration()
)

fun getStoragePath(params: InitializeParams): Path? {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ class KotlinWorkspaceService(
formatting.formatter = it
}
get("ktfmt")?.asJsonObject?.apply {
val ktfmt = formatting.ktFmt
val ktfmt = formatting.ktfmt
get("style")?.asString?.let { ktfmt.style = it }
get("indent")?.asInt?.let { ktfmt.indent = it }
get("maxWidth")?.asInt?.let { ktfmt.maxWidth = it }
Expand Down
23 changes: 0 additions & 23 deletions server/src/main/kotlin/org/javacs/kt/formatting/Formatter.kt
Original file line number Diff line number Diff line change
@@ -1,31 +1,8 @@
package org.javacs.kt.formatting

import org.javacs.kt.Configuration
import org.javacs.kt.FormattingConfiguration
import org.eclipse.lsp4j.FormattingOptions as LspFromattingOptions

private const val DEFAULT_INDENT = 4

class FormattingService(private val config: FormattingConfiguration) {

private val formatter: Formatter get() = when (config.formatter) {
"ktfmt" -> KtFmtFormatter(config.ktFmt)
"none" -> NopFormatter
else -> KtFmtFormatter(config.ktFmt)
}

fun formatKotlinCode(
code: String,
options: LspFromattingOptions = LspFromattingOptions(DEFAULT_INDENT, true)
): String = this.formatter.format(code, options)
}


interface Formatter {
fun format(code: String, options: LspFromattingOptions): String
}

object NopFormatter : Formatter {
override fun format(code: String, options: LspFromattingOptions): String = code
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.javacs.kt.formatting

import org.javacs.kt.Configuration
import org.javacs.kt.FormattingConfiguration
import org.eclipse.lsp4j.FormattingOptions as LspFromattingOptions

private const val DEFAULT_INDENT = 4

class FormattingService(private val config: FormattingConfiguration) {

private val formatter: Formatter get() = when (config.formatter) {
"ktfmt" -> KtfmtFormatter(config.ktfmt)
"none" -> NopFormatter
else -> KtfmtFormatter(config.ktfmt)
}

fun formatKotlinCode(
code: String,
options: LspFromattingOptions = LspFromattingOptions(DEFAULT_INDENT, true)
): String = this.formatter.format(code, options)
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package org.javacs.kt.formatting

import org.javacs.kt.KtFmtConfiguration
import com.facebook.ktfmt.format.Formatter as KtFmt
import org.javacs.kt.KtfmtConfiguration
import com.facebook.ktfmt.format.Formatter as Ktfmt
import com.facebook.ktfmt.format.FormattingOptions as KtfmtOptions
import org.eclipse.lsp4j.FormattingOptions as LspFormattingOptions

class KtFmtFormatter(private val config: KtFmtConfiguration) : Formatter {
class KtfmtFormatter(private val config: KtfmtConfiguration) : Formatter {
override fun format(
code: String,
options: LspFormattingOptions,
Expand All @@ -16,7 +16,7 @@ class KtFmtFormatter(private val config: KtFmtConfiguration) : Formatter {
"dropbox" -> KtfmtOptions.Style.DROPBOX
else -> KtfmtOptions.Style.GOOGLE
}
return KtFmt.format(KtfmtOptions(
return Ktfmt.format(KtfmtOptions(
style = style,
maxWidth = config.maxWidth,
blockIndent = options.tabSize.takeUnless { it == 0 } ?: config.indent,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.javacs.kt.formatting

import org.eclipse.lsp4j.FormattingOptions as LspFormattingOptions

object NopFormatter : Formatter {
override fun format(code: String, options: LspFormattingOptions): String = code
}

0 comments on commit 3aca373

Please sign in to comment.