diff --git a/lib/jediterm-pty-2.5.jar b/lib/jediterm-pty-2.5.jar index eafd3b9106d6..38d6bad58738 100644 Binary files a/lib/jediterm-pty-2.5.jar and b/lib/jediterm-pty-2.5.jar differ diff --git a/lib/src/jediterm-pty-2.5-src.jar b/lib/src/jediterm-pty-2.5-src.jar index 4d51ee5acd6a..e0e198bd8165 100644 Binary files a/lib/src/jediterm-pty-2.5-src.jar and b/lib/src/jediterm-pty-2.5-src.jar differ diff --git a/platform/platform-impl/src/com/intellij/terminal/JBTerminalWidget.java b/platform/platform-impl/src/com/intellij/terminal/JBTerminalWidget.java index bc2adaf76608..0c743b5589b8 100644 --- a/platform/platform-impl/src/com/intellij/terminal/JBTerminalWidget.java +++ b/platform/platform-impl/src/com/intellij/terminal/JBTerminalWidget.java @@ -29,10 +29,13 @@ import com.intellij.util.ui.RegionPainter; import com.jediterm.terminal.SubstringFinder; import com.jediterm.terminal.TerminalStarter; import com.jediterm.terminal.TtyConnector; -import com.jediterm.terminal.model.HyperlinkFilter; import com.jediterm.terminal.model.JediTerminal; import com.jediterm.terminal.model.StyleState; import com.jediterm.terminal.model.TerminalTextBuffer; +import com.jediterm.terminal.model.hyperlinks.HyperlinkFilter; +import com.jediterm.terminal.model.hyperlinks.LinkInfo; +import com.jediterm.terminal.model.hyperlinks.LinkResult; +import com.jediterm.terminal.model.hyperlinks.LinkResultItem; import com.jediterm.terminal.ui.JediTermWidget; import com.jediterm.terminal.ui.TerminalAction; import com.jediterm.terminal.ui.settings.SettingsProvider; @@ -55,7 +58,11 @@ public class JBTerminalWidget extends JediTermWidget implements Disposable { this(project, 80, 24, settingsProvider, parent); } - public JBTerminalWidget(Project project, int columns, int lines, JBTerminalSystemSettingsProviderBase settingsProvider, Disposable parent) { + public JBTerminalWidget(Project project, + int columns, + int lines, + JBTerminalSystemSettingsProviderBase settingsProvider, + Disposable parent) { super(columns, lines, settingsProvider); myProject = project; mySettingsProvider = settingsProvider; @@ -112,24 +119,24 @@ public class JBTerminalWidget extends JediTermWidget implements Disposable { @Override public List getActions() { - List actions = super.getActions(); - if (!mySettingsProvider.overrideIdeShortcuts()) { - actions - .add(new TerminalAction("EditorEscape", new KeyStroke[]{KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)}, new Predicate() { - @Override - public boolean apply(KeyEvent input) { - if (!myTerminalPanel.getTerminalTextBuffer().isUsingAlternateBuffer()) { - ToolWindowManager.getInstance(myProject).activateEditorComponent(); - return true; - } - else { - return false; - } - } - }).withHidden(true)); - } - return actions; - }; + List actions = super.getActions(); + if (!mySettingsProvider.overrideIdeShortcuts()) { + actions + .add(new TerminalAction("EditorEscape", new KeyStroke[]{KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)}, new Predicate() { + @Override + public boolean apply(KeyEvent input) { + if (!myTerminalPanel.getTerminalTextBuffer().isUsingAlternateBuffer()) { + ToolWindowManager.getInstance(myProject).activateEditorComponent(); + return true; + } + else { + return false; + } + } + }).withHidden(true)); + } + return actions; + } @Override public void dispose() { @@ -178,31 +185,12 @@ public class JBTerminalWidget extends JediTermWidget implements Disposable { public void addMessageFilter(Project project, Filter filter) { addHyperlinkFilter(new HyperlinkFilter() { @Override - public Result apply(String line) { + public LinkResult apply(String line) { Filter.Result r = filter.applyFilter(line, line.length()); if (r != null) { - return new Result() { - - @Override - public List getResultItems() { - return r.getResultItems().stream().map((item -> new ResultItem() { - @Override - public int getStartOffset() { - return item.getHighlightStartOffset(); - } - - @Override - public int getEndOffset() { - return item.getHighlightEndOffset(); - } - - @Override - public void navigate() { - item.getHyperlinkInfo().navigate(project); - } - })).collect(Collectors.toList()); - } - }; + return new LinkResult(r.getResultItems().stream().map( + (item -> new LinkResultItem(item.getHighlightStartOffset(), item.getHighlightEndOffset(), new LinkInfo( + () -> item.getHyperlinkInfo().navigate(project))))).collect(Collectors.toList())); } else { return null; diff --git a/platform/platform-impl/src/com/intellij/terminal/TerminalExecutionConsole.java b/platform/platform-impl/src/com/intellij/terminal/TerminalExecutionConsole.java index 35a2b26efb1c..c99a3773602f 100644 --- a/platform/platform-impl/src/com/intellij/terminal/TerminalExecutionConsole.java +++ b/platform/platform-impl/src/com/intellij/terminal/TerminalExecutionConsole.java @@ -27,6 +27,7 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Key; import com.intellij.openapi.vfs.encoding.EncodingProjectManager; +import com.jediterm.terminal.HyperlinkStyle; import com.jediterm.terminal.TerminalStarter; import com.jediterm.terminal.TtyConnector; import com.jediterm.terminal.model.JediTerminal; @@ -49,7 +50,13 @@ public class TerminalExecutionConsole implements ConsoleView { public TerminalExecutionConsole(@NotNull Project project, @NotNull ProcessHandler processHandler) { myProject = project; - final JBTerminalSystemSettingsProviderBase provider = new JBTerminalSystemSettingsProviderBase(); + final JBTerminalSystemSettingsProviderBase provider = new JBTerminalSystemSettingsProviderBase() { + @Override + public HyperlinkStyle.HighlightMode getHyperlinkHighlightingMode() { + return HyperlinkStyle.HighlightMode.ALWAYS; + } + }; + myDataStream = new AppendableTerminalDataStream(); diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTabbedTerminalWidget.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTabbedTerminalWidget.java index eecb8bb6026f..5de30e9d6b78 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTabbedTerminalWidget.java +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTabbedTerminalWidget.java @@ -16,6 +16,7 @@ package org.jetbrains.plugins.terminal; import com.google.common.base.Predicate; +import com.intellij.execution.filters.UrlFilter; import com.intellij.ide.dnd.DnDDropHandler; import com.intellij.ide.dnd.DnDEvent; import com.intellij.ide.dnd.DnDSupport; @@ -138,6 +139,9 @@ public class JBTabbedTerminalWidget extends TabbedTerminalWidget implements Disp @Override protected JediTermWidget createInnerTerminalWidget(TabbedSettingsProvider settingsProvider) { JBTerminalWidget widget = new JBTerminalWidget(myProject, mySettingsProvider, myParent); + + widget.addMessageFilter(myProject, new UrlFilter()); + convertActions(widget, widget.getActions()); convertActions(widget.getTerminalPanel(), widget.getTerminalPanel().getActions(), new Predicate() { @Override