Skip to content

Commit a090d63

Browse files
committed
Refactor mappings from table to tree structure for categories
Replaced the old table-based settings component with a tree-based structure to support category grouping for mappings. Updated relevant components, including adding category management in mappings and enabling tree-based editing, adding, and removal of mappings. Modified data model and configuration logic to handle categories effectively.
1 parent 1e646a0 commit a090d63

File tree

5 files changed

+211
-94
lines changed

5 files changed

+211
-94
lines changed

src/main/kotlin/dev/meanmail/prettifypython/FoldingBuilder.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ class PrettifyFoldingBuilder : FoldingBuilder {
3636
val text = node.text
3737

3838
val settings = PrettifySettings.getInstance()
39-
val replacement = settings.mappings
40-
.find { it.first == text }
41-
?.second
39+
val replacement = settings.getState().mappings
40+
.find { it.from == text }
41+
?.to
4242

4343
if (replacement == null || (text == "**" && node.psi.parent !is PyBinaryExpression)) {
4444
return emptyList()

src/main/kotlin/dev/meanmail/prettifypython/settings/MappingEntry.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ import kotlinx.serialization.Serializable
55
@Serializable
66
data class MappingEntry(
77
val from: String = "",
8-
val to: String = ""
8+
val to: String = "",
9+
val category: String = ""
910
)

src/main/kotlin/dev/meanmail/prettifypython/settings/PrettifySettings.kt

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ class PrettifySettings : PersistentStateComponent<PrettifySettings.State> {
1616

1717
@Serializable
1818
data class State(
19-
var mappings: List<MappingEntry> = DEFAULT_MAPPINGS
19+
var mappings: List<MappingEntry> = DEFAULT_MAPPINGS,
20+
var categories: Set<String> = DEFAULT_CATEGORIES
2021
)
2122

2223
private var myState = State()
@@ -30,26 +31,40 @@ class PrettifySettings : PersistentStateComponent<PrettifySettings.State> {
3031
var mappings: List<Pair<String, String>>
3132
get() = myState.mappings.map { Pair(it.from, it.to) }
3233
set(value) {
33-
myState.mappings = value.map { MappingEntry(it.first, it.second) }
34+
val oldCategories = myState.mappings.map { it.category }
35+
myState.mappings = value.zip(oldCategories) { pair, category ->
36+
MappingEntry(pair.first, pair.second, category)
37+
}
3438
}
3539

40+
var categories: Set<String>
41+
get() = myState.categories
42+
set(value) {
43+
myState.categories = value
44+
}
45+
46+
fun getDefaultMappings(): List<MappingEntry> {
47+
return DEFAULT_MAPPINGS
48+
}
49+
3650
fun resetToDefaults() {
37-
mappings = DEFAULT_MAPPINGS_PAIRS
51+
myState.mappings = getDefaultMappings()
52+
myState.categories = myState.mappings.map { it.category }.toSet()
3853
}
3954

4055
companion object {
4156
fun getInstance(): PrettifySettings =
4257
ApplicationManager.getApplication().getService(PrettifySettings::class.java)
4358

4459
private val DEFAULT_MAPPINGS = listOf(
45-
MappingEntry(">=", ""),
46-
MappingEntry("<=", ""),
47-
MappingEntry("!=", ""),
48-
MappingEntry("->", ""),
49-
MappingEntry("lambda", "λ"),
50-
MappingEntry("**", "^")
60+
MappingEntry(">=", "", "Comparison"),
61+
MappingEntry("<=", "", "Comparison"),
62+
MappingEntry("!=", "", "Comparison"),
63+
MappingEntry("->", "", "Arrow"),
64+
MappingEntry("lambda", "λ", "Keyword"),
65+
MappingEntry("**", "^", "Operator")
5166
)
5267

53-
private val DEFAULT_MAPPINGS_PAIRS = DEFAULT_MAPPINGS.map { Pair(it.from, it.to) }
68+
private val DEFAULT_CATEGORIES = DEFAULT_MAPPINGS.map { it.category }.toSet()
5469
}
5570
}

0 commit comments

Comments
 (0)