Skip to content

Commit 4029477

Browse files
Changelog
- up plugin version - modify CHANGELOG.md - modify README.md - add completion for user-defined variables and functions
1 parent 9598b7b commit 4029477

File tree

7 files changed

+124
-2
lines changed

7 files changed

+124
-2
lines changed

CHANGELOG.md

+11
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@
22

33
## [Unreleased]
44

5+
## [0.0.3]
6+
### Added
7+
- Added Ride file creation from lookup
8+
- Added reference contributor for functions in one file
9+
- Added find usages for functions in one file
10+
- Added completion for user-defined functions
11+
- Added completion for user-defined variables
12+
13+
### Fixed
14+
- Language grammar errors
15+
516
## [0.0.2]
617
### Added
718
- Built-in structures, types and functions completion

README.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,12 @@ Features:<br>
1111
<ul>
1212
<li>Syntax validation</li>
1313
<li>Keyword completion</li>
14-
<li>Syntax highlighting and color schemes</li>
1514
<li>Built-in structures, types and functions completion</li>
15+
<li>User-defined functions completion</li>
16+
<li>User-defined variables completion</li>
17+
<li>Syntax highlighting and color schemes</li>
18+
<li>Ride file creation from lookup</li>
19+
<li>Code navigation</li>
1620
</ul>
1721
<!-- Plugin description end -->
1822

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ kotlin.code.style=official
22
# plugin
33
pluginGroup=com.wavesplatform
44
pluginName=rideplugin
5-
pluginVersion=0.0.2
5+
pluginVersion=0.0.3
66
# Gradle Releases -> https://github.com/gradle/gradle/releases
77
gradleVersion = 7.5.1
88
# platform
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.wavesplatform.rideplugin.completion
2+
3+
import com.intellij.codeInsight.completion.*
4+
import com.intellij.codeInsight.lookup.LookupElementBuilder
5+
import com.intellij.icons.AllIcons
6+
import com.intellij.openapi.project.DumbAware
7+
import com.intellij.psi.util.PsiTreeUtil
8+
import com.intellij.util.ProcessingContext
9+
import com.wavesplatform.rideplugin.icons.RideIcons
10+
import com.wavesplatform.rideplugin.psi.RideFunctionDefinition
11+
12+
class RideFunctionsCompletionContributor : CompletionContributor(), DumbAware {
13+
init {
14+
val provider = object : CompletionProvider<CompletionParameters>() {
15+
override fun addCompletions(
16+
parameters: CompletionParameters,
17+
context: ProcessingContext,
18+
result: CompletionResultSet
19+
) {
20+
21+
val declaredFunctions = PsiTreeUtil
22+
.findChildrenOfType(
23+
parameters.originalPosition?.containingFile,
24+
RideFunctionDefinition::class.java
25+
).map { it.text }
26+
27+
declaredFunctions
28+
.asSequence()
29+
.map { "$it()" }
30+
.map(LookupElementBuilder::create)
31+
.map {
32+
it.withInsertHandler { context, item ->
33+
val start = context.startOffset
34+
val end = context.selectionEndOffset
35+
context.editor.caretModel.moveToOffset(end - 1)
36+
}
37+
}
38+
.map {
39+
it.withIcon(RideIcons.FUNCTION)
40+
.withTypeIconRightAligned(true)
41+
}
42+
.map(result::addElement)
43+
.toList()
44+
}
45+
}
46+
extend(
47+
CompletionType.BASIC,
48+
RidePatterns.InvocationPattern.functionCallPattern(),
49+
provider
50+
)
51+
}
52+
}

src/main/kotlin/com/wavesplatform/rideplugin/completion/RidePatterns.kt

+7
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,13 @@ object RidePatterns {
9393
}
9494
}
9595

96+
object RefPattern {
97+
@JvmStatic
98+
fun varRefPattern(): PsiElementPattern.Capture<PsiElement> {
99+
return psiElement().inside(RideAll::class.java)
100+
}
101+
}
102+
96103
object InvocationPattern {
97104
@JvmStatic
98105
fun structCreationPattern(): PsiElementPattern.Capture<PsiElement> {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.wavesplatform.rideplugin.completion
2+
3+
import com.intellij.codeInsight.completion.*
4+
import com.intellij.codeInsight.lookup.LookupElementBuilder
5+
import com.intellij.openapi.project.DumbAware
6+
import com.intellij.psi.util.PsiTreeUtil
7+
import com.intellij.util.ProcessingContext
8+
import com.wavesplatform.rideplugin.icons.RideIcons
9+
import com.wavesplatform.rideplugin.psi.RideVarDefinition
10+
11+
class RideVarCompletionContributor : CompletionContributor(), DumbAware {
12+
init {
13+
val provider = object : CompletionProvider<CompletionParameters>() {
14+
override fun addCompletions(
15+
parameters: CompletionParameters,
16+
context: ProcessingContext,
17+
result: CompletionResultSet
18+
) {
19+
val declaredVariables = PsiTreeUtil
20+
.findChildrenOfType(
21+
parameters.originalPosition?.containingFile,
22+
RideVarDefinition::class.java
23+
).map { it.text }
24+
25+
declaredVariables
26+
.asSequence()
27+
.map(LookupElementBuilder::create)
28+
.map {
29+
it.withInsertHandler { context, _ ->
30+
val end = context.selectionEndOffset
31+
context.editor.caretModel.moveToOffset(end - 1)
32+
}
33+
}
34+
.map(result::addElement)
35+
.toList()
36+
}
37+
}
38+
extend(
39+
CompletionType.BASIC,
40+
RidePatterns.RefPattern.varRefPattern(),
41+
provider
42+
)
43+
}
44+
}

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

+4
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@
3535
implementationClass="com.wavesplatform.rideplugin.completion.RideStructCreationCompletionContributor"/>
3636
<completion.contributor language="RIDE"
3737
implementationClass="com.wavesplatform.rideplugin.completion.RideBuildInFunctionsCompletionContributor"/>
38+
<completion.contributor language="RIDE"
39+
implementationClass="com.wavesplatform.rideplugin.completion.RideFunctionsCompletionContributor"/>
40+
<completion.contributor language="RIDE"
41+
implementationClass="com.wavesplatform.rideplugin.completion.RideVarCompletionContributor"/>
3842
<lang.braceMatcher language="RIDE"
3943
implementationClass="com.wavesplatform.rideplugin.editor.RideBraceMatcher"/>
4044
<annotator language="RIDE"

0 commit comments

Comments
 (0)