Skip to content

Commit 989aade

Browse files
committed
[ #87 ] enhance highlighter and navigation
1 parent ed8e50c commit 989aade

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

src/org/ice1000/julia/lang/editing/julia-annotator.kt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,12 @@ $JULIA_DOC_SURROUNDING
208208
}
209209
JuliaSymbolKind.FunctionParameter -> holder.createInfoAnnotation(element, null)
210210
.textAttributes = JuliaHighlighter.FUNCTION_PARAMETER
211-
JuliaSymbolKind.TypeName -> holder.createInfoAnnotation(element, null)
212-
.textAttributes = JuliaHighlighter.TYPE_NAME
211+
JuliaSymbolKind.TypeName -> {
212+
if (element.isAbstractTypeRef) holder.createInfoAnnotation(element, null)
213+
.textAttributes = JuliaHighlighter.ABSTRACT_TYPE_NAME
214+
holder.createInfoAnnotation(element, null)
215+
.textAttributes = JuliaHighlighter.TYPE_NAME
216+
}
213217
JuliaSymbolKind.KeywordParameterName -> holder.createInfoAnnotation(element, null)
214218
.textAttributes = JuliaHighlighter.KEYWORD_ARGUMENT
215219
else -> {
@@ -220,8 +224,12 @@ $JULIA_DOC_SURROUNDING
220224
.textAttributes = JuliaHighlighter.CONST_NAME
221225
element.isTypeNameRef -> holder.createInfoAnnotation(element, null)
222226
.textAttributes = JuliaHighlighter.TYPE_NAME
223-
element.isAbstractTypeRef -> holder.createInfoAnnotation(element, null)
224-
.textAttributes = JuliaHighlighter.ABSTRACT_TYPE_NAME
227+
element.isSuperTypeExpr -> {
228+
val attr = if (element.isAbstractTypeRef) JuliaHighlighter.ABSTRACT_TYPE_NAME
229+
else JuliaHighlighter.TYPE_NAME
230+
holder.createInfoAnnotation(element, null)
231+
.textAttributes = attr
232+
}
225233
element.isModuleNameRef -> holder.createInfoAnnotation(element, null)
226234
.textAttributes = JuliaHighlighter.MODULE_NAME
227235
element.isQuoteCall -> holder.createInfoAnnotation(element.parent

src/org/ice1000/julia/lang/psi/julia-navigation.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ class JuliaGotoDeclarationHandler : GotoDeclarationHandler {
6363
JuliaSymbolKind.ApplyFunctionName -> {
6464
if (juliaSymbol.text in IGNORED) return null
6565
val executor = Executors.newCachedThreadPool()
66-
var result: Array<PsiElement>? = null
66+
val result: MutableCollection<PsiElement> = arrayListOf()
6767
val future = executor.submit {
6868
try {
69-
ReadAction.compute<Array<PsiElement>?, Throwable> {
69+
ReadAction.compute<Unit, Throwable> {
7070
project.languageServer.searchFunctionsByName(juliaSymbol.text)?.let { ret ->
7171
if (ret.startsWith("__INTELLIJ__")) return@let null
7272
val unescaped = StringEscapeUtils.unescapeJava(ret.trim('"'))
@@ -82,20 +82,20 @@ class JuliaGotoDeclarationHandler : GotoDeclarationHandler {
8282
val psiFile = PsiManager.getInstance(project).findFile(vf) ?: return@mapNotNull null
8383
val elem = psiFile.findElementAt(psiOffset + 1) ?: return@mapNotNull null
8484
PsiTreeUtil.getNonStrictParentOfType(elem, JuliaCompactFunction::class.java, JuliaFunction::class.java)
85-
}.toTypedArray().also { result = it }
85+
}.toTypedArray().also { result.addAll(it) }
8686
} catch (e: Exception) {
8787
e.printStackTrace()
88-
result
8988
}
90-
} ?: result
89+
}
9190
}
9291
} catch (e: Exception) {
9392
e.printStackTrace()
9493
}
9594
}
9695
return try {
9796
future?.get(5000, TimeUnit.MILLISECONDS)
98-
result
97+
result.addAll(JuliaTypeDeclarationIndex.findElementsByName(project, juliaSymbol.text))
98+
result.toTypedArray()
9999
} catch (ignored: Throwable) {
100100
null
101101
}

0 commit comments

Comments
 (0)