From 9e78aab741f69ce27d7d3cf00ef3977b4c2bd7d9 Mon Sep 17 00:00:00 2001 From: Sergej Turkan Date: Mon, 9 Oct 2023 14:13:37 +0200 Subject: [PATCH 1/4] [ST] Add support for Alacritty terminal --- .../java/com/sburlyaev/cmd/plugin/CommandBuilder.java | 2 ++ .../java/com/sburlyaev/cmd/plugin/model/Terminal.java | 1 + .../com/sburlyaev/cmd/plugin/CommandBuilderTest.java | 11 +++++++++++ .../com/sburlyaev/cmd/plugin/model/TerminalTest.java | 6 ++++++ 4 files changed, 20 insertions(+) diff --git a/src/main/java/com/sburlyaev/cmd/plugin/CommandBuilder.java b/src/main/java/com/sburlyaev/cmd/plugin/CommandBuilder.java index c47f3a4..8ae7b86 100644 --- a/src/main/java/com/sburlyaev/cmd/plugin/CommandBuilder.java +++ b/src/main/java/com/sburlyaev/cmd/plugin/CommandBuilder.java @@ -96,6 +96,8 @@ public static Command createCommand(@NotNull Environment env, case MAC_OS: switch (terminal) { + case ALACRITTY: + return new Command("open", "-n", "-a", command, "--args", "--working-directory", projectDirectory); case MAC_TERMINAL: case I_TERM: default: diff --git a/src/main/java/com/sburlyaev/cmd/plugin/model/Terminal.java b/src/main/java/com/sburlyaev/cmd/plugin/model/Terminal.java index a36e266..cec748b 100644 --- a/src/main/java/com/sburlyaev/cmd/plugin/model/Terminal.java +++ b/src/main/java/com/sburlyaev/cmd/plugin/model/Terminal.java @@ -23,6 +23,7 @@ public enum Terminal { // macOS MAC_TERMINAL("Terminal"), I_TERM("iTerm"), + ALACRITTY("Alacritty"), GENERIC(""); diff --git a/src/test/java/com/sburlyaev/cmd/plugin/CommandBuilderTest.java b/src/test/java/com/sburlyaev/cmd/plugin/CommandBuilderTest.java index 3f9dc2a..61a7e9f 100644 --- a/src/test/java/com/sburlyaev/cmd/plugin/CommandBuilderTest.java +++ b/src/test/java/com/sburlyaev/cmd/plugin/CommandBuilderTest.java @@ -126,6 +126,17 @@ public void testCreateCommandForMacOsITerm() throws FileNotFoundException { assertEquals(expected, result.getCommands()); } + @Test + @Ignore + public void testCreateCommandForMacOsAlacritty() throws FileNotFoundException { + Environment env = new Environment(OperationSystem.MAC_OS, "13.3", "X"); + String projectBaseDir = "/user/home/IdeaProjects/IDEA-Native-Terminal-Plugin"; + Command result = CommandBuilder.createCommand(env, projectBaseDir, "Alacritty"); + + String expected = MessageFormat.format("open -n -a Alacritty --args --working-directory {0}", projectBaseDir); + assertEquals(expected, result.getCommands()); + } + @Test @Ignore public void testCheckProjectDirectory() throws FileNotFoundException { diff --git a/src/test/java/com/sburlyaev/cmd/plugin/model/TerminalTest.java b/src/test/java/com/sburlyaev/cmd/plugin/model/TerminalTest.java index 77ce498..aa4ea6e 100644 --- a/src/test/java/com/sburlyaev/cmd/plugin/model/TerminalTest.java +++ b/src/test/java/com/sburlyaev/cmd/plugin/model/TerminalTest.java @@ -134,4 +134,10 @@ public void testFromStringITerm() { assertEquals(Terminal.I_TERM, result); } + @Test + public void testFromStringIAlacritty() { + Terminal result = Terminal.fromString("Alacritty"); + assertEquals(Terminal.ALACRITTY, result); + } + } From 1daf477f8e34370f174d70457cb4e5ec18b568d1 Mon Sep 17 00:00:00 2001 From: Sergej Turkan Date: Mon, 9 Oct 2023 14:16:18 +0200 Subject: [PATCH 2/4] [ST] Add support for kitty terminal on MacOS --- .../java/com/sburlyaev/cmd/plugin/CommandBuilder.java | 1 + .../com/sburlyaev/cmd/plugin/CommandBuilderTest.java | 11 +++++++++++ .../com/sburlyaev/cmd/plugin/model/TerminalTest.java | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/src/main/java/com/sburlyaev/cmd/plugin/CommandBuilder.java b/src/main/java/com/sburlyaev/cmd/plugin/CommandBuilder.java index 8ae7b86..778e455 100644 --- a/src/main/java/com/sburlyaev/cmd/plugin/CommandBuilder.java +++ b/src/main/java/com/sburlyaev/cmd/plugin/CommandBuilder.java @@ -100,6 +100,7 @@ public static Command createCommand(@NotNull Environment env, return new Command("open", "-n", "-a", command, "--args", "--working-directory", projectDirectory); case MAC_TERMINAL: case I_TERM: + case KITTY: default: return new Command("open", projectDirectory, "-a", command); } diff --git a/src/test/java/com/sburlyaev/cmd/plugin/CommandBuilderTest.java b/src/test/java/com/sburlyaev/cmd/plugin/CommandBuilderTest.java index 61a7e9f..ad451a3 100644 --- a/src/test/java/com/sburlyaev/cmd/plugin/CommandBuilderTest.java +++ b/src/test/java/com/sburlyaev/cmd/plugin/CommandBuilderTest.java @@ -137,6 +137,17 @@ public void testCreateCommandForMacOsAlacritty() throws FileNotFoundException { assertEquals(expected, result.getCommands()); } + @Test + @Ignore + public void testCreateCommandForMacOsKitty() throws FileNotFoundException { + Environment env = new Environment(OperationSystem.MAC_OS, "13.3", "X"); + String projectBaseDir = "/user/home/IdeaProjects/IDEA-Native-Terminal-Plugin"; + Command result = CommandBuilder.createCommand(env, projectBaseDir, "kitty"); + + String expected = MessageFormat.format("open ''{0}'' -a kitty", projectBaseDir); + assertEquals(expected, result.getCommands()); + } + @Test @Ignore public void testCheckProjectDirectory() throws FileNotFoundException { diff --git a/src/test/java/com/sburlyaev/cmd/plugin/model/TerminalTest.java b/src/test/java/com/sburlyaev/cmd/plugin/model/TerminalTest.java index aa4ea6e..12f4591 100644 --- a/src/test/java/com/sburlyaev/cmd/plugin/model/TerminalTest.java +++ b/src/test/java/com/sburlyaev/cmd/plugin/model/TerminalTest.java @@ -140,4 +140,10 @@ public void testFromStringIAlacritty() { assertEquals(Terminal.ALACRITTY, result); } + @Test + public void testFromStringIKitty() { + Terminal result = Terminal.fromString("kitty"); + assertEquals(Terminal.KITTY, result); + } + } From 62da3a29817eb788d7020865cd6bcf23022e3921 Mon Sep 17 00:00:00 2001 From: Sergej Turkan Date: Mon, 9 Oct 2023 14:22:56 +0200 Subject: [PATCH 3/4] [ST] Add support for Hyper terminal on MacOS --- .../java/com/sburlyaev/cmd/plugin/CommandBuilder.java | 1 + .../java/com/sburlyaev/cmd/plugin/model/Terminal.java | 1 + .../com/sburlyaev/cmd/plugin/CommandBuilderTest.java | 11 +++++++++++ .../com/sburlyaev/cmd/plugin/model/TerminalTest.java | 6 ++++++ 4 files changed, 19 insertions(+) diff --git a/src/main/java/com/sburlyaev/cmd/plugin/CommandBuilder.java b/src/main/java/com/sburlyaev/cmd/plugin/CommandBuilder.java index 778e455..f9570ec 100644 --- a/src/main/java/com/sburlyaev/cmd/plugin/CommandBuilder.java +++ b/src/main/java/com/sburlyaev/cmd/plugin/CommandBuilder.java @@ -101,6 +101,7 @@ public static Command createCommand(@NotNull Environment env, case MAC_TERMINAL: case I_TERM: case KITTY: + case HYPER: default: return new Command("open", projectDirectory, "-a", command); } diff --git a/src/main/java/com/sburlyaev/cmd/plugin/model/Terminal.java b/src/main/java/com/sburlyaev/cmd/plugin/model/Terminal.java index cec748b..ac2e4ae 100644 --- a/src/main/java/com/sburlyaev/cmd/plugin/model/Terminal.java +++ b/src/main/java/com/sburlyaev/cmd/plugin/model/Terminal.java @@ -24,6 +24,7 @@ public enum Terminal { MAC_TERMINAL("Terminal"), I_TERM("iTerm"), ALACRITTY("Alacritty"), + HYPER("Hyper"), GENERIC(""); diff --git a/src/test/java/com/sburlyaev/cmd/plugin/CommandBuilderTest.java b/src/test/java/com/sburlyaev/cmd/plugin/CommandBuilderTest.java index ad451a3..01c2c83 100644 --- a/src/test/java/com/sburlyaev/cmd/plugin/CommandBuilderTest.java +++ b/src/test/java/com/sburlyaev/cmd/plugin/CommandBuilderTest.java @@ -148,6 +148,17 @@ public void testCreateCommandForMacOsKitty() throws FileNotFoundException { assertEquals(expected, result.getCommands()); } + @Test + @Ignore + public void testCreateCommandForMacOsHyper() throws FileNotFoundException { + Environment env = new Environment(OperationSystem.MAC_OS, "13.3", "X"); + String projectBaseDir = "/user/home/IdeaProjects/IDEA-Native-Terminal-Plugin"; + Command result = CommandBuilder.createCommand(env, projectBaseDir, "hyper"); + + String expected = MessageFormat.format("open ''{0}'' -a Hyper", projectBaseDir); + assertEquals(expected, result.getCommands()); + } + @Test @Ignore public void testCheckProjectDirectory() throws FileNotFoundException { diff --git a/src/test/java/com/sburlyaev/cmd/plugin/model/TerminalTest.java b/src/test/java/com/sburlyaev/cmd/plugin/model/TerminalTest.java index 12f4591..8ddcd90 100644 --- a/src/test/java/com/sburlyaev/cmd/plugin/model/TerminalTest.java +++ b/src/test/java/com/sburlyaev/cmd/plugin/model/TerminalTest.java @@ -146,4 +146,10 @@ public void testFromStringIKitty() { assertEquals(Terminal.KITTY, result); } + @Test + public void testFromStringIHyper() { + Terminal result = Terminal.fromString("Hyper"); + assertEquals(Terminal.HYPER, result); + } + } From 4a84151dfcf806d77e63a6f155b65ceee863c3eb Mon Sep 17 00:00:00 2001 From: Sergej Turkan Date: Mon, 9 Oct 2023 14:55:43 +0200 Subject: [PATCH 4/4] [ST] Change plugin description & README.md --- build.gradle | 2 +- readme.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 4710531..07f2047 100644 --- a/build.gradle +++ b/build.gradle @@ -32,7 +32,7 @@ patchPluginXml {

If you want to use another terminal instead - you can!
Just specify your favorite one in the IDE Settings / Preferences. -
*PowerShell, ConEmu, Cmder, WSL, GitBash, RXVT, iTerm, kitty, Terminator are also supported. +
*PowerShell, ConEmu, Cmder, WSL, GitBash, RXVT, iTerm, kitty, Terminator, Alacritty, Hyper are also supported.

Since version 0.4, it is available to specify a custom command with \${project.dir} placeholder, which will be replaced at runtime with the actual project directory. diff --git a/readme.md b/readme.md index 6624513..1afce1a 100644 --- a/readme.md +++ b/readme.md @@ -8,7 +8,7 @@ Adds a Terminal icon to the IDE toolbar and context menu to open project directo If you want to use another terminal instead - you can!
Just specify your favorite one in the **IDE Settings / Preferences**. -
_*PowerShell, ConEmu, Cmder, WSL (bash, wsl), GitBash, RXVT, iTerm are also supported._ +
_*PowerShell, ConEmu, Cmder, WSL (bash, wsl), GitBash, RXVT, iTerm, Alacritty, Kitty, Hyper are also supported._

Since **version 0.4**, it is available to specify a custom command with `${project.dir}` placeholder, which will be replaced at runtime with the actual project directory.