[Editor] Enable auto-indentation and change indent size to 3

This commit is contained in:
2021-02-23 13:19:40 +01:00
parent 268094d706
commit 60c3619c98
2 changed files with 27 additions and 0 deletions

View File

@@ -4,6 +4,8 @@ import com.bartlomiejpluta.base.editor.code.highlighting.SyntaxHighlighter
import javafx.beans.property.Property
import javafx.beans.value.ObservableValue
import javafx.concurrent.Task
import javafx.scene.input.KeyCode
import javafx.scene.input.KeyEvent
import javafx.scene.layout.StackPane
import org.fxmisc.flowless.VirtualizedScrollPane
import org.fxmisc.richtext.CodeArea
@@ -39,9 +41,22 @@ class CodeEditor(private val highlighter: ObservableValue<out SyntaxHighlighter>
.subscribe(this::applyHighlighting)
initAutoIndents()
children += VirtualizedScrollPane(editor)
}
private fun initAutoIndents() {
editor.addEventHandler(KeyEvent.KEY_PRESSED) { event ->
if (event.code === KeyCode.ENTER) {
WHITESPACE.find(editor.getParagraph(editor.currentParagraph - 1).segments[0])?.apply {
editor.insertText(editor.caretPosition, value)
}
}
}
}
private fun computeHighlightingAsync(): Task<StyleSpans<Collection<String>>> {
val code = editor.text
@@ -58,4 +73,8 @@ class CodeEditor(private val highlighter: ObservableValue<out SyntaxHighlighter>
}
override fun getUserAgentStylesheet(): String = highlighter.value.stylesheet.base64URL.toExternalForm()
companion object {
private val WHITESPACE = "^\\s+".toRegex()
}
}

View File

@@ -13,7 +13,11 @@ class JavaSyntaxHighlightingStylesheet : Stylesheet() {
val string by cssclass()
val comment by cssclass()
val paragraphBox by cssclass()
val paragraphText by cssclass()
val hasCaret by csspseudoclass()
val tabSize by cssproperty<Int>("-fx-tab-size")
}
init {
@@ -52,5 +56,9 @@ class JavaSyntaxHighlightingStylesheet : Stylesheet() {
paragraphBox and hasCaret {
backgroundColor = multi(c("#f2f9fc"))
}
paragraphText {
tabSize.value = 3
}
}
}