Skip to content

Commit 81f5fe9

Browse files
committed
Implement name validators for validating identifiers and keywords
1 parent bedc50e commit 81f5fe9

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
### Fixed
66

77
- Fix project opening not working as expected in IntelliJ 2023 builds.
8+
- Fix name validation when renaming symbols.
9+
10+
## Changed
11+
12+
- Do not apply spell checking inspection for RuneScript keywords.
813

914
## [1.6.0] - 2024-08-30
1015

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package io.runescript.plugin.ide.refactoring
2+
3+
import com.intellij.lang.refactoring.NamesValidator
4+
import com.intellij.openapi.project.Project
5+
import io.runescript.plugin.ide.config.RsConfig
6+
7+
class RsNamesValidator : NamesValidator {
8+
private val keywords = hashSetOf<String>(
9+
"if",
10+
"else",
11+
"while",
12+
"case",
13+
"default",
14+
"return",
15+
"calc",
16+
"return",
17+
"true",
18+
"false",
19+
"null",
20+
*RsConfig.getPrimitiveTypes().map { "def_$it" }.toTypedArray(),
21+
*RsConfig.getPrimitiveTypes().map { "switch_$it" }.toTypedArray(),
22+
*RsConfig.getPrimitiveTypes().map { "${it}array" }.toTypedArray(),
23+
)
24+
25+
override fun isKeyword(name: String, project: Project?): Boolean {
26+
return keywords.contains(name)
27+
}
28+
29+
override fun isIdentifier(name: String, project: Project?): Boolean {
30+
return name.matches(Regex("[a-zA-Z0-9_+.:]+"))
31+
}
32+
}

src/main/resources/META-INF/plugin.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,12 @@
3434
<lang.findUsagesProvider language="RuneScriptSymbol" implementationClass="io.runescript.plugin.ide.usages.RsFindUsagesProvider"/>
3535
<readWriteAccessDetector id="runescript" implementation="io.runescript.plugin.ide.usages.RsReadWriteAccessDetector"/>
3636
<lang.refactoringSupport language="RuneScript" implementationClass="io.runescript.plugin.ide.refactoring.RsRefactoringSupportProvider"/>
37+
38+
<!-- Rename Handler -->
3739
<renameHandler implementation="io.runescript.plugin.ide.refactoring.RsMemberInplaceRenameHandler"/>
40+
<lang.namesValidator language="RuneScript" implementationClass="io.runescript.plugin.ide.refactoring.RsNamesValidator"/>
41+
<lang.namesValidator language="RuneScriptSymbol" implementationClass="io.runescript.plugin.ide.refactoring.RsNamesValidator"/>
42+
3843
<lang.quoteHandler language="RuneScript" implementationClass="io.runescript.plugin.ide.RsQuoteHandler"/>
3944
<lang.braceMatcher language="RuneScript" implementationClass="io.runescript.plugin.ide.RsBraceMatcher"/>
4045
<lang.commenter language="RuneScript" implementationClass="io.runescript.plugin.ide.RsCommenter"/>

0 commit comments

Comments
 (0)