mirror of
https://github.com/apache/zeppelin
synced 2026-05-24 09:38:26 +00:00
ZPEPELIN-3136. IPython Code Completion Improvement
This commit is contained in:
parent
f7df879cc4
commit
1179fc8256
3 changed files with 13 additions and 8 deletions
|
|
@ -336,14 +336,19 @@ public class IPythonInterpreter extends Interpreter implements ExecuteResultHand
|
|||
@Override
|
||||
public List<InterpreterCompletion> completion(String buf, int cursor,
|
||||
InterpreterContext interpreterContext) {
|
||||
LOGGER.debug("Call completion for: " + buf);
|
||||
List<InterpreterCompletion> completions = new ArrayList<>();
|
||||
CompletionResponse response =
|
||||
ipythonClient.complete(
|
||||
CompletionRequest.getDefaultInstance().newBuilder().setCode(buf)
|
||||
.setCursor(cursor).build());
|
||||
for (int i = 0; i < response.getMatchesCount(); i++) {
|
||||
completions.add(new InterpreterCompletion(
|
||||
response.getMatches(i), response.getMatches(i), ""));
|
||||
String match = response.getMatches(i);
|
||||
int lastIndexOfDot = match.lastIndexOf(".");
|
||||
if (lastIndexOfDot != -1) {
|
||||
match = match.substring(lastIndexOfDot + 1);
|
||||
}
|
||||
completions.add(new InterpreterCompletion(match, match, ""));
|
||||
}
|
||||
return completions;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -196,9 +196,9 @@ public class IPythonInterpreterTest {
|
|||
context = getInterpreterContext();
|
||||
completions = interpreter.completion("sys.std", 7, context);
|
||||
assertEquals(3, completions.size());
|
||||
assertEquals("sys.stderr", completions.get(0).getValue());
|
||||
assertEquals("sys.stdin", completions.get(1).getValue());
|
||||
assertEquals("sys.stdout", completions.get(2).getValue());
|
||||
assertEquals("stderr", completions.get(0).getValue());
|
||||
assertEquals("stdin", completions.get(1).getValue());
|
||||
assertEquals("stdout", completions.get(2).getValue());
|
||||
|
||||
// there's no completion for 'a.' because it is not recognized by compiler for now.
|
||||
context = getInterpreterContext();
|
||||
|
|
@ -227,14 +227,14 @@ public class IPythonInterpreterTest {
|
|||
st = "a.co";
|
||||
completions = interpreter.completion(st, st.length(), context);
|
||||
assertEquals(1, completions.size());
|
||||
assertEquals("a.count", completions.get(0).getValue());
|
||||
assertEquals("count", completions.get(0).getValue());
|
||||
|
||||
// cursor is in the middle of code
|
||||
context = getInterpreterContext();
|
||||
st = "a.co\b='hello";
|
||||
completions = interpreter.completion(st, 4, context);
|
||||
assertEquals(1, completions.size());
|
||||
assertEquals("a.count", completions.get(0).getValue());
|
||||
assertEquals("count", completions.get(0).getValue());
|
||||
|
||||
// ipython help
|
||||
context = getInterpreterContext();
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ public class IPySparkInterpreterTest {
|
|||
// completions
|
||||
List<InterpreterCompletion> completions = iPySparkInterpreter.completion("sc.ran", 6, getInterpreterContext());
|
||||
assertEquals(1, completions.size());
|
||||
assertEquals("sc.range", completions.get(0).getValue());
|
||||
assertEquals("range", completions.get(0).getValue());
|
||||
|
||||
// pyspark streaming
|
||||
context = getInterpreterContext();
|
||||
|
|
|
|||
Loading…
Reference in a new issue