Skip to content

Commit 77ac5d7

Browse files
committed
[ #364 ] fix debugger hints and support documentation of SymbolLhs(const)
1 parent cd8054f commit 77ac5d7

File tree

4 files changed

+33
-17
lines changed

4 files changed

+33
-17
lines changed

docs/Debugger.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@ Install IntelliJ IDEA (or other JetBrains IntelliJ platform IDEs such as PyCharm
1818

1919
## Dependencies
2020

21-
- ASTInterpreter2#master
22-
- DebuggerFramework#master
21+
- ASTInterpreter2#73711a4
22+
- DebuggerFramework#78d649e
2323
- JSON
2424
- Julia 0.7+
2525

2626
> (using the master branch is required by the debugger)
2727
2828
### add packages
2929
```julia
30-
(v1.0) pkg> add DebuggerFramework#master
31-
(v1.0) pkg> add ASTInterpreter2#master
30+
(v1.0) pkg> add DebuggerFramework#78d649e
31+
(v1.0) pkg> add ASTInterpreter2#73711a4
3232
(v1.0) pkg> add JSON
3333
```
3434

res/org/ice1000/julia/lang/execution/IntelliJDebugger.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ if VERSION >= v"0.7.0"
1515
if "DebuggerFramework" in keys(pkgs) && pkgs["DebuggerFramework"] >= v"0.1.2+"
1616
println("DebuggerFramework version $(pkgs["DebuggerFramework"]) correct.")
1717
else
18-
println("please add latest version DebuggerFramework by `add DebuggerFramework#78d649e` within pkg REPL.")
18+
println("please add lagacy version DebuggerFramework by `add DebuggerFramework#78d649e` within pkg REPL.")
1919
end
2020

2121
if "ASTInterpreter2" in keys(pkgs) && pkgs["ASTInterpreter2"] >= v"0.1.1+"
2222
println("ASTInterpreter2 version $(pkgs["ASTInterpreter2"]) correct.")
2323
else
24-
println("please add latest version ASTInterpreter2 by `add ASTInterpreter2#73711a4` within pkg REPL.")
24+
println("please add lagacy version ASTInterpreter2 by `add ASTInterpreter2#73711a4` within pkg REPL.")
2525
end
2626
else # 0.6
2727
using Compat

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

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import com.intellij.openapi.project.Project
55
import com.intellij.openapi.wm.ToolWindow
66
import com.intellij.openapi.wm.ToolWindowFactory
77
import com.intellij.psi.PsiElement
8-
import com.intellij.psi.PsiManager
98
import com.intellij.ui.content.ContentFactory
109
import com.intellij.util.ui.UIUtil
1110
import org.apache.commons.lang.StringEscapeUtils
@@ -28,25 +27,42 @@ class JuliaDocumentProvider : AbstractDocumentationProvider() {
2827
override fun generateDoc(element: PsiElement?, originalElement: PsiElement?): String? {
2928
val symbol = element ?: return null
3029
val parent = symbol.parent as? DocStringOwner
30+
val name = "# ${symbol.text}\n"
3131
return when {
3232
// function declaration by written
3333
parent != null -> {
34-
val name = "# ${symbol.text}\n"
35-
parent.docString?.text?.trim('"')?.let {
36-
STYLE_HTML + SimplifyJBMarkdownUtil.generateMarkdownHtml(name + it)
37-
}
34+
val content = parent.docString?.text
35+
buildDocument(content, name)
3836
}
39-
// if Docs.doc can find
4037
symbol is JuliaSymbol -> {
41-
val ret = symbol.project.languageServer.searchDocsByName(symbol.text) ?: return null
42-
val unescaped = StringEscapeUtils.unescapeJava(ret.trim('"'))
43-
if (unescaped.startsWith("__INTELLIJ__")) return null
44-
STYLE_HTML + SimplifyJBMarkdownUtil.generateMarkdownHtml(unescaped)
38+
// find previous docs
39+
val symbolOrLhs = symbol.parent.takeIf { it is JuliaSymbolLhs } ?: symbol
40+
when {
41+
symbolOrLhs.parent is JuliaAssignOp -> {
42+
val stringElement = symbolOrLhs.parent.prevRealSibling?.takeIf { it is JuliaString }
43+
return buildDocument(stringElement?.text, name) ?: searchFromLanguageServer(symbol)
44+
}
45+
else -> // else use LanguageServer
46+
return searchFromLanguageServer(symbol)
47+
}
4548
}
4649
else -> null
4750
}
4851
}
4952

53+
private fun buildDocument(content: String?, symbolName: String): String? {
54+
return content?.trim('"')?.let {
55+
STYLE_HTML + SimplifyJBMarkdownUtil.generateMarkdownHtml(symbolName + it)
56+
}
57+
}
58+
59+
private fun searchFromLanguageServer(symbol: JuliaSymbol): String? {
60+
val ret = symbol.project.languageServer.searchDocsByName(symbol.text) ?: return null
61+
val unescaped = StringEscapeUtils.unescapeJava(ret.trim('"'))
62+
if (unescaped.startsWith("__INTELLIJ__")) return null
63+
else return STYLE_HTML + SimplifyJBMarkdownUtil.generateMarkdownHtml(unescaped)
64+
}
65+
5066
companion object {
5167
// language=HTML
5268
val STYLE_HTML: String

src/org/ice1000/julia/lang/psi/impl/julia-psi-ext.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ val PsiElement.prevRealSibling: PsiElement?
4343
get() {
4444
var pre = this.prevSibling
4545
while (pre != null) {
46-
if (pre is PsiWhiteSpace) {
46+
if (pre is PsiWhiteSpace || pre.elementType == JuliaTypes.EOL) {
4747
pre = pre.prevSibling
4848
} else {
4949
return pre

0 commit comments

Comments
 (0)