diff --git a/builtins/src/main/java/org/jline/builtins/Widgets.java b/builtins/src/main/java/org/jline/builtins/Widgets.java index 63fc7cb88..20dcecbc7 100644 --- a/builtins/src/main/java/org/jline/builtins/Widgets.java +++ b/builtins/src/main/java/org/jline/builtins/Widgets.java @@ -772,35 +772,25 @@ public boolean tailtipUpdateStatus() { private boolean doTailTip(String widget) { Buffer buffer = buffer(); callWidget(widget); + Pair cmdkey = null; + List args = args(); if (buffer.length() == buffer.cursor()) { - List args = args(); - Pair cmdkey = cmdDescs.evaluateCommandLine(buffer.toString(), args); - CmdDesc cmdDesc = cmdDescs.getDescription(cmdkey.getU()); - if (cmdDesc == null) { - setErrorPattern(null); - setErrorIndex(-1); - clearDescription(); - resetTailTip(); - } else if (cmdDesc.isValid()) { - if (cmdkey.getV()) { - if (cmdDesc.isCommand()) { - doCommandTailTip(widget, cmdDesc, args); - } - } else { - doDescription(cmdDesc.getMainDescription(descriptionSize)); - setErrorPattern(cmdDesc.getErrorPattern()); - setErrorIndex(cmdDesc.getErrorIndex()); - } - } + cmdkey = cmdDescs.evaluateCommandLine(buffer.toString(), args); } else { - Pair cmdkey = cmdDescs.evaluateCommandLine(buffer.toString(), buffer.cursor()); - CmdDesc cmdDesc = cmdDescs.getDescription(cmdkey.getU()); - if (cmdDesc == null) { - setErrorPattern(null); - setErrorIndex(-1); - clearDescription(); - resetTailTip(); - } else if (cmdDesc.isValid() && !cmdkey.getV()) { + cmdkey = cmdDescs.evaluateCommandLine(buffer.toString(), buffer.cursor()); + } + CmdDesc cmdDesc = cmdDescs.getDescription(cmdkey.getU()); + if (cmdDesc == null) { + setErrorPattern(null); + setErrorIndex(-1); + clearDescription(); + resetTailTip(); + } else if (cmdDesc.isValid()) { + if (cmdkey.getV()) { + if (cmdDesc.isCommand() && buffer.length() == buffer.cursor()) { + doCommandTailTip(widget, cmdDesc, args); + } + } else { doDescription(cmdDesc.getMainDescription(descriptionSize)); setErrorPattern(cmdDesc.getErrorPattern()); setErrorIndex(cmdDesc.getErrorIndex()); @@ -835,8 +825,12 @@ private void doCommandTailTip(String widget, CmdDesc cmdDesc, List args) if (cmdDesc != null) { if (lastArg.startsWith("-")) { doDescription(cmdDesc.getOptionDescription(lastArg, descriptionSize)); - setSuggestionType(SuggestionType.TAIL_TIP); - noCompleters = true; + if (!lastArg.contains("=")) { + setSuggestionType(SuggestionType.TAIL_TIP); + noCompleters = true; + } else { + setTipType(tipType); + } } else if (!widget.endsWith(LineReader.BACKWARD_DELETE_CHAR)){ setTipType(tipType); } diff --git a/reader/src/main/java/org/jline/reader/impl/LineReaderImpl.java b/reader/src/main/java/org/jline/reader/impl/LineReaderImpl.java index 9e3f48bdd..0fe11eee6 100644 --- a/reader/src/main/java/org/jline/reader/impl/LineReaderImpl.java +++ b/reader/src/main/java/org/jline/reader/impl/LineReaderImpl.java @@ -4010,7 +4010,7 @@ public AttributedString getDisplayedBufferWithPrompts(List sec full.append(sb.toAttributedString()); } else if (autosuggestion == SuggestionType.COMPLETER) { if (buf.length() > 0 && buf.length() == buf.cursor() - && (!lastBinding.equals("\t") || buf.prevChar() == ' ')) { + && (!lastBinding.equals("\t") || buf.prevChar() == ' ' || buf.prevChar() == '=')) { clearChoices(); listChoices(true); } else if (!lastBinding.equals("\t")) {