完成时转义字符的 jline 问题
jline problems with escape character in completion
我正在 java 中使用 jline version3 开发一个项目,但在完成时,我需要有“else if”,但它会将 \ 作为转义字符转义 space 而我不'有任何转义字符我也试过 null
而不是 char[]
但它因空指针异常而崩溃
另外,我检查了https://github.com/jline/jline3/issues/173
错误是:
at org.jline.reader.impl.DefaultParser$ArgumentList.escape(DefaultParser.java:383)
at org.jline.reader.impl.LineReaderImpl$MenuSupport.update(LineReaderImpl.java:4403)
at org.jline.reader.impl.LineReaderImpl$MenuSupport.next(LineReaderImpl.java:4317)
at org.jline.reader.impl.LineReaderImpl.doMenu(LineReaderImpl.java:4471)
at org.jline.reader.impl.LineReaderImpl.doList(LineReaderImpl.java:4614)
at org.jline.reader.impl.LineReaderImpl.doComplete(LineReaderImpl.java:4149)
at org.jline.reader.impl.LineReaderImpl.expandOrComplete(LineReaderImpl.java:3875)
at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:585)
at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:443)
at REPLReader.readLine(REPLReader.java:99)
at Compiler.getInputCode(Compiler.java:24)
at CompilerMain.lex(CompilerMain.java:75)
at CompilerMain.compile(CompilerMain.java:15)
at Main.main(Main.java:59)
我假设您正在使用 JLine 内置完成器 StringsCompleter
和 DefaultParser
。
如果您有具有 space 个字符的完成候选,则
- space 个字符被转义如果
defaultParser.escapeChars != null
或
- 如果
defaultParser.escapeChars == null
. 将引用完成候选
这就是 StringsCompleter
的工作方式。
请参阅 StringsCompleterTest.java 方法:escapeCharsNull()
和 escapeChars()
。
NPE 已在提交 68a9c1f 中修复。您应该使用 JLine 3.10 或更高版本。
我正在 java 中使用 jline version3 开发一个项目,但在完成时,我需要有“else if”,但它会将 \ 作为转义字符转义 space 而我不'有任何转义字符我也试过 null
而不是 char[]
但它因空指针异常而崩溃
另外,我检查了https://github.com/jline/jline3/issues/173
错误是:
at org.jline.reader.impl.DefaultParser$ArgumentList.escape(DefaultParser.java:383)
at org.jline.reader.impl.LineReaderImpl$MenuSupport.update(LineReaderImpl.java:4403)
at org.jline.reader.impl.LineReaderImpl$MenuSupport.next(LineReaderImpl.java:4317)
at org.jline.reader.impl.LineReaderImpl.doMenu(LineReaderImpl.java:4471)
at org.jline.reader.impl.LineReaderImpl.doList(LineReaderImpl.java:4614)
at org.jline.reader.impl.LineReaderImpl.doComplete(LineReaderImpl.java:4149)
at org.jline.reader.impl.LineReaderImpl.expandOrComplete(LineReaderImpl.java:3875)
at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:585)
at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:443)
at REPLReader.readLine(REPLReader.java:99)
at Compiler.getInputCode(Compiler.java:24)
at CompilerMain.lex(CompilerMain.java:75)
at CompilerMain.compile(CompilerMain.java:15)
at Main.main(Main.java:59)
我假设您正在使用 JLine 内置完成器 StringsCompleter
和 DefaultParser
。
如果您有具有 space 个字符的完成候选,则
- space 个字符被转义如果
defaultParser.escapeChars != null
或 - 如果
defaultParser.escapeChars == null
. 将引用完成候选
这就是 StringsCompleter
的工作方式。
请参阅 StringsCompleterTest.java 方法:escapeCharsNull()
和 escapeChars()
。
NPE 已在提交 68a9c1f 中修复。您应该使用 JLine 3.10 或更高版本。