Skip to content

Commit

Permalink
Groovy REPL: string variable assignment tab complete with current val…
Browse files Browse the repository at this point in the history
…ue, step II
  • Loading branch information
mattirn committed Jan 24, 2021
1 parent 913862f commit 859bc82
Showing 1 changed file with 14 additions and 9 deletions.
23 changes: 14 additions & 9 deletions groovy/src/main/java/org/jline/script/GroovyEngine.java
Original file line number Diff line number Diff line change
Expand Up @@ -764,18 +764,18 @@ public void complete(LineReader reader, ParsedLine commandLine, List<Candidate>
}
String wordbuffer = commandLine.word();
String buffer = commandLine.line().substring(0, commandLine.cursor());
inspector = new Inspector(groovyEngine);
inspector.loadStatementVars(buffer);
if (commandLine.words().size() == 1 && wordbuffer.contains("=")) {
int idx = wordbuffer.indexOf("=");
doValueCandidate(candidates, wordbuffer.substring(0, idx), wordbuffer.substring(0, idx + 1));
}
Brackets brackets;
try {
brackets = new Brackets(buffer);
} catch (Exception e) {
return;
}
inspector = new Inspector(groovyEngine);
inspector.loadStatementVars(buffer);
if (commandLine.words().size() == 1 && wordbuffer.contains("=")) {
int idx = wordbuffer.indexOf("=");
doValueCandidate(candidates, inspector.execute(wordbuffer.substring(0, idx)), wordbuffer.substring(0, idx + 1));
}
if (brackets.openQuote()) {
return;
}
Expand Down Expand Up @@ -890,9 +890,14 @@ private void doIdentifierCandidates(List<Candidate> candidates, Object object, S
Helpers.doCandidates(candidates, (Set<String>)map.keySet(), curBuf, CandidateType.IDENTIFIER);
}

private void doValueCandidate(List<Candidate> candidates, Object object, String curBuf) {
if (object instanceof String) {
Helpers.doCandidates(candidates, Collections.singletonList((String)object), curBuf, CandidateType.STRING);
private void doValueCandidate(List<Candidate> candidates, String objectStatement, String curBuf) {
try {
Object object = inspector.execute(objectStatement);
if (object instanceof String) {
Helpers.doCandidates(candidates, Collections.singletonList((String) object), curBuf, CandidateType.STRING);
}
} catch (Exception e) {
// ignore
}
}

Expand Down

0 comments on commit 859bc82

Please sign in to comment.