From a6eeca4ff6002f9c8a7231ebb03c23142f11659f Mon Sep 17 00:00:00 2001 From: Joshua Aresty Date: Sat, 10 Aug 2024 23:47:49 -0700 Subject: [PATCH 1/7] Created a centralized please command To avoid divergence in the grammar for please commands, it is useful to define a centralized tag and allow it to be overridden in command implementations. --- apps/arc/arc.py | 5 +++++ apps/arc/arc_mac.talon | 6 +----- apps/eclipse/eclipse.talon | 5 +---- apps/eclipse/eclipse_win.py | 4 ++++ apps/jetbrains/jetbrains.py | 6 +++++- apps/jetbrains/jetbrains.talon | 7 ++----- apps/vivaldi/vivaldi.py | 5 +++++ apps/vivaldi/vivaldi.talon | 6 +----- apps/vscode/vscode.py | 4 ++++ apps/vscode/vscode.talon | 6 ++---- tags/please_command/please_command.py | 13 +++++++++++++ tags/please_command/please_command.talon | 3 +++ 12 files changed, 46 insertions(+), 24 deletions(-) create mode 100644 tags/please_command/please_command.py create mode 100644 tags/please_command/please_command.talon diff --git a/apps/arc/arc.py b/apps/arc/arc.py index c6327554dd..f48b828d52 100644 --- a/apps/arc/arc.py +++ b/apps/arc/arc.py @@ -20,6 +20,11 @@ def tab_close_wrapper(): actions.sleep("180ms") actions.app.tab_close() + def please_command(command: str): + actions.key("cmd-l") + actions.sleep("200ms") + actions.insert(command) + @ctx.action_class("browser") class BrowserActions: diff --git a/apps/arc/arc_mac.talon b/apps/arc/arc_mac.talon index ce881590e4..e219b9dee6 100644 --- a/apps/arc/arc_mac.talon +++ b/apps/arc/arc_mac.talon @@ -3,8 +3,4 @@ os: mac - tag(): browser tag(): user.tabs - -please []: - key("cmd-l") - sleep(200ms) - insert(user.text or "") +tag(): user.please_command diff --git a/apps/eclipse/eclipse.talon b/apps/eclipse/eclipse.talon index 15c06d55b8..b373869752 100644 --- a/apps/eclipse/eclipse.talon +++ b/apps/eclipse/eclipse.talon @@ -6,12 +6,9 @@ tag(): user.line_commands # tag(): user.multiple_cursors tag(): user.splits tag(): user.tabs +tag(): user.please_command # splits.py support end -please []: - key(ctrl-3) - insert(user.text or "") - # Sidebar bar explore: key(alt-shift-w p) # bar extensions: diff --git a/apps/eclipse/eclipse_win.py b/apps/eclipse/eclipse_win.py index cce8a0c208..06e9cc0f76 100644 --- a/apps/eclipse/eclipse_win.py +++ b/apps/eclipse/eclipse_win.py @@ -110,6 +110,10 @@ def split_window_vertically(): def split_window(): actions.key("alt-ctrl-s s") + def please_command(command: str): + actions.key("ctrl-3") + actions.insert(command) + # splits.py support end # find_and_replace.py support begin diff --git a/apps/jetbrains/jetbrains.py b/apps/jetbrains/jetbrains.py index 46574cd5c9..f7c1a37c85 100644 --- a/apps/jetbrains/jetbrains.py +++ b/apps/jetbrains/jetbrains.py @@ -298,7 +298,7 @@ def select_range(line_start: int, line_end: int): # if it's a single line, select the entire thing including the ending new-line5 if line_start == line_end: actions.user.idea(f"goto {line_start} 0") - actions.user.idea("action EditorSelectLine"), + (actions.user.idea("action EditorSelectLine"),) else: actions.user.idea(f"range {line_start} {line_end}") @@ -314,6 +314,10 @@ def camel_left(): def camel_right(): actions.user.idea("action EditorNextWordInDifferentHumpsMode") + def please_command(command: str): + actions.user.idea("action GotoAction") + actions.insert(command) + def line_clone(line: int): actions.user.idea(f"clone {line}") diff --git a/apps/jetbrains/jetbrains.talon b/apps/jetbrains/jetbrains.talon index ea5735dc4e..6385292436 100644 --- a/apps/jetbrains/jetbrains.talon +++ b/apps/jetbrains/jetbrains.talon @@ -5,6 +5,7 @@ tag(): user.line_commands tag(): user.multiple_cursors tag(): user.splits tag(): user.tabs +tag(): user.please_command # multiple_cursors.py support end # Auto complete @@ -14,11 +15,7 @@ smart: user.idea("action SmartTypeCompletion") (done | finish): user.idea("action EditorCompleteStatement") # Copying grab : user.idea_grab(number) -# Actions -(action | please): user.idea("action GotoAction") -(action | please) : - user.idea("action GotoAction") - insert(text) + # Refactoring refactor: user.idea("action Refactorings.QuickListPopupAction") refactor : diff --git a/apps/vivaldi/vivaldi.py b/apps/vivaldi/vivaldi.py index df95fcdf68..db0a1c29bb 100644 --- a/apps/vivaldi/vivaldi.py +++ b/apps/vivaldi/vivaldi.py @@ -53,6 +53,11 @@ def tab_close_wrapper(): def tab_jump(number: int): actions.key(f"ctrl-{number}") + def please_command(command: str): + actions.user.vivaldi_toggle_quick_commands() + actions.sleep("180ms") + actions.insert(command) + @ctx.action_class("browser") class BrowserActions: diff --git a/apps/vivaldi/vivaldi.talon b/apps/vivaldi/vivaldi.talon index 978e71e74c..104af49967 100644 --- a/apps/vivaldi/vivaldi.talon +++ b/apps/vivaldi/vivaldi.talon @@ -2,13 +2,9 @@ app: vivaldi - tag(): browser tag(): user.tabs +tag(): user.please_command (sidebar | panel) history: user.vivaldi_history_panel() (sidebar | panel) downloads: user.vivaldi_downloads_panel() (sidebar | panel) bookmarks: user.vivaldi_bookmarks_panel() (sidebar | panel) notes: user.vivaldi_notes_panel() - -please []: - user.vivaldi_toggle_quick_commands() - sleep(180ms) - insert(user.text or "") diff --git a/apps/vscode/vscode.py b/apps/vscode/vscode.py index 929c8bd499..bfcfb171e1 100644 --- a/apps/vscode/vscode.py +++ b/apps/vscode/vscode.py @@ -254,6 +254,10 @@ def multi_cursor_select_more_occurrences(): def multi_cursor_skip_occurrence(): actions.user.vscode("editor.action.moveSelectionToNextFindMatch") + def please_command(command: str): + actions.user.vscode("workbench.action.showCommands") + actions.insert(command) + def tab_jump(number: int): if number < 10: if is_mac: diff --git a/apps/vscode/vscode.talon b/apps/vscode/vscode.talon index 275398d0e4..02f35f3dec 100644 --- a/apps/vscode/vscode.talon +++ b/apps/vscode/vscode.talon @@ -6,14 +6,12 @@ tag(): user.line_commands tag(): user.multiple_cursors tag(): user.splits tag(): user.tabs +tag(): user.please_command + window reload: user.vscode("workbench.action.reloadWindow") window close: user.vscode("workbench.action.closeWindow") #multiple_cursor.py support end -please []: - user.vscode("workbench.action.showCommands") - insert(user.text or "") - go view []: user.vscode("workbench.action.openView") insert(user.text or "") diff --git a/tags/please_command/please_command.py b/tags/please_command/please_command.py new file mode 100644 index 0000000000..3c6eb19959 --- /dev/null +++ b/tags/please_command/please_command.py @@ -0,0 +1,13 @@ +from talon import Module + +mod = Module() +mod.tag( + "please_command", + desc="A command for running an arbitrary command based on a search", +) + + +@mod.action_class +class please_command_actions: + def please_command(command: str): + """Searches for command based on text""" diff --git a/tags/please_command/please_command.talon b/tags/please_command/please_command.talon new file mode 100644 index 0000000000..ae8f200e78 --- /dev/null +++ b/tags/please_command/please_command.talon @@ -0,0 +1,3 @@ +tag: user.please_command +- +^please []$: user.please_command(user.text or "") From 631ef7eae2a73dc68ef22025dd5829c4c3b247ab Mon Sep 17 00:00:00 2001 From: Joshua Aresty Date: Sun, 11 Aug 2024 16:20:02 -0700 Subject: [PATCH 2/7] Respond to PR feedback --- apps/jetbrains/jetbrains.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/jetbrains/jetbrains.py b/apps/jetbrains/jetbrains.py index f7c1a37c85..5c7b9eb4e3 100644 --- a/apps/jetbrains/jetbrains.py +++ b/apps/jetbrains/jetbrains.py @@ -298,7 +298,7 @@ def select_range(line_start: int, line_end: int): # if it's a single line, select the entire thing including the ending new-line5 if line_start == line_end: actions.user.idea(f"goto {line_start} 0") - (actions.user.idea("action EditorSelectLine"),) + (actions.user.idea("action EditorSelectLine")) else: actions.user.idea(f"range {line_start} {line_end}") From dfd47d7a9cf4a290f8c6084b9353cbbe1a3fb406 Mon Sep 17 00:00:00 2001 From: Joshua Aresty Date: Sat, 17 Aug 2024 19:39:06 -0700 Subject: [PATCH 3/7] Respond to pull request feedback - It looks like the formatting was more than just adding a comma ; this should be cleaner now --- apps/jetbrains/jetbrains.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/jetbrains/jetbrains.py b/apps/jetbrains/jetbrains.py index 5c7b9eb4e3..4cc89e955b 100644 --- a/apps/jetbrains/jetbrains.py +++ b/apps/jetbrains/jetbrains.py @@ -298,7 +298,7 @@ def select_range(line_start: int, line_end: int): # if it's a single line, select the entire thing including the ending new-line5 if line_start == line_end: actions.user.idea(f"goto {line_start} 0") - (actions.user.idea("action EditorSelectLine")) + actions.user.idea("action EditorSelectLine") else: actions.user.idea(f"range {line_start} {line_end}") From 1a17a4c6d79041fb9a655f5be16231a47971aca8 Mon Sep 17 00:00:00 2001 From: Joshua Aresty Date: Mon, 2 Sep 2024 19:10:48 -0700 Subject: [PATCH 4/7] Respond to pull request feedback --- apps/arc/arc.py | 2 +- apps/arc/arc_mac.talon | 2 +- apps/eclipse/eclipse.talon | 2 +- apps/eclipse/eclipse_win.py | 2 +- apps/jetbrains/jetbrains.py | 2 +- apps/jetbrains/jetbrains.talon | 4 ++-- apps/vivaldi/vivaldi.py | 2 +- apps/vivaldi/vivaldi.talon | 2 +- apps/vscode/vscode.py | 2 +- apps/vscode/vscode.talon | 2 +- tags/please_command/please_command.py | 6 +++--- tags/please_command/please_command.talon | 4 ++-- 12 files changed, 16 insertions(+), 16 deletions(-) diff --git a/apps/arc/arc.py b/apps/arc/arc.py index f48b828d52..a2dee4d641 100644 --- a/apps/arc/arc.py +++ b/apps/arc/arc.py @@ -20,7 +20,7 @@ def tab_close_wrapper(): actions.sleep("180ms") actions.app.tab_close() - def please_command(command: str): + def command_search(command: str = ""): actions.key("cmd-l") actions.sleep("200ms") actions.insert(command) diff --git a/apps/arc/arc_mac.talon b/apps/arc/arc_mac.talon index e219b9dee6..0fa8d5d12d 100644 --- a/apps/arc/arc_mac.talon +++ b/apps/arc/arc_mac.talon @@ -3,4 +3,4 @@ os: mac - tag(): browser tag(): user.tabs -tag(): user.please_command +tag(): user.command_search diff --git a/apps/eclipse/eclipse.talon b/apps/eclipse/eclipse.talon index b373869752..f399510d2b 100644 --- a/apps/eclipse/eclipse.talon +++ b/apps/eclipse/eclipse.talon @@ -6,7 +6,7 @@ tag(): user.line_commands # tag(): user.multiple_cursors tag(): user.splits tag(): user.tabs -tag(): user.please_command +tag(): user.command_search # splits.py support end # Sidebar diff --git a/apps/eclipse/eclipse_win.py b/apps/eclipse/eclipse_win.py index 06e9cc0f76..46a3b79903 100644 --- a/apps/eclipse/eclipse_win.py +++ b/apps/eclipse/eclipse_win.py @@ -110,7 +110,7 @@ def split_window_vertically(): def split_window(): actions.key("alt-ctrl-s s") - def please_command(command: str): + def command_search(command: str = ""): actions.key("ctrl-3") actions.insert(command) diff --git a/apps/jetbrains/jetbrains.py b/apps/jetbrains/jetbrains.py index 4cc89e955b..52b57c94d2 100644 --- a/apps/jetbrains/jetbrains.py +++ b/apps/jetbrains/jetbrains.py @@ -314,7 +314,7 @@ def camel_left(): def camel_right(): actions.user.idea("action EditorNextWordInDifferentHumpsMode") - def please_command(command: str): + def command_search(command: str = ""): actions.user.idea("action GotoAction") actions.insert(command) diff --git a/apps/jetbrains/jetbrains.talon b/apps/jetbrains/jetbrains.talon index 6385292436..fce2bb309a 100644 --- a/apps/jetbrains/jetbrains.talon +++ b/apps/jetbrains/jetbrains.talon @@ -5,7 +5,7 @@ tag(): user.line_commands tag(): user.multiple_cursors tag(): user.splits tag(): user.tabs -tag(): user.please_command +tag(): user.command_search # multiple_cursors.py support end # Auto complete @@ -15,7 +15,7 @@ smart: user.idea("action SmartTypeCompletion") (done | finish): user.idea("action EditorCompleteStatement") # Copying grab : user.idea_grab(number) - +action []: user.deprecate_command("2024-09-02", "action", "please") # Refactoring refactor: user.idea("action Refactorings.QuickListPopupAction") refactor : diff --git a/apps/vivaldi/vivaldi.py b/apps/vivaldi/vivaldi.py index db0a1c29bb..f2894c7e77 100644 --- a/apps/vivaldi/vivaldi.py +++ b/apps/vivaldi/vivaldi.py @@ -53,7 +53,7 @@ def tab_close_wrapper(): def tab_jump(number: int): actions.key(f"ctrl-{number}") - def please_command(command: str): + def command_search(command: str = ""): actions.user.vivaldi_toggle_quick_commands() actions.sleep("180ms") actions.insert(command) diff --git a/apps/vivaldi/vivaldi.talon b/apps/vivaldi/vivaldi.talon index 104af49967..aad291626e 100644 --- a/apps/vivaldi/vivaldi.talon +++ b/apps/vivaldi/vivaldi.talon @@ -2,7 +2,7 @@ app: vivaldi - tag(): browser tag(): user.tabs -tag(): user.please_command +tag(): user.command_search (sidebar | panel) history: user.vivaldi_history_panel() (sidebar | panel) downloads: user.vivaldi_downloads_panel() diff --git a/apps/vscode/vscode.py b/apps/vscode/vscode.py index bfcfb171e1..f16a37bccf 100644 --- a/apps/vscode/vscode.py +++ b/apps/vscode/vscode.py @@ -254,7 +254,7 @@ def multi_cursor_select_more_occurrences(): def multi_cursor_skip_occurrence(): actions.user.vscode("editor.action.moveSelectionToNextFindMatch") - def please_command(command: str): + def command_search(command: str = ""): actions.user.vscode("workbench.action.showCommands") actions.insert(command) diff --git a/apps/vscode/vscode.talon b/apps/vscode/vscode.talon index 02f35f3dec..45aabaefc4 100644 --- a/apps/vscode/vscode.talon +++ b/apps/vscode/vscode.talon @@ -6,7 +6,7 @@ tag(): user.line_commands tag(): user.multiple_cursors tag(): user.splits tag(): user.tabs -tag(): user.please_command +tag(): user.command_search window reload: user.vscode("workbench.action.reloadWindow") window close: user.vscode("workbench.action.closeWindow") diff --git a/tags/please_command/please_command.py b/tags/please_command/please_command.py index 3c6eb19959..9d4cb88574 100644 --- a/tags/please_command/please_command.py +++ b/tags/please_command/please_command.py @@ -2,12 +2,12 @@ mod = Module() mod.tag( - "please_command", + "command_search", desc="A command for running an arbitrary command based on a search", ) @mod.action_class -class please_command_actions: - def please_command(command: str): +class command_search_actions: + def command_search(command: str = ""): """Searches for command based on text""" diff --git a/tags/please_command/please_command.talon b/tags/please_command/please_command.talon index ae8f200e78..9a51a9a841 100644 --- a/tags/please_command/please_command.talon +++ b/tags/please_command/please_command.talon @@ -1,3 +1,3 @@ -tag: user.please_command +tag: user.command_search - -^please []$: user.please_command(user.text or "") +^please []$: user.command_search(user.text or "") From 7dbf99cd5eb29936762871c9a4856bc957d3b6b4 Mon Sep 17 00:00:00 2001 From: Joshua Aresty Date: Tue, 3 Sep 2024 07:35:40 -0700 Subject: [PATCH 5/7] Respond to pull request feedback - Only insert text if it was searched for --- apps/arc/arc.py | 5 +++-- apps/eclipse/eclipse_win.py | 3 ++- apps/jetbrains/jetbrains.py | 3 ++- apps/vivaldi/vivaldi.py | 5 +++-- apps/vscode/vscode.py | 3 ++- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/apps/arc/arc.py b/apps/arc/arc.py index a2dee4d641..c89731eb1f 100644 --- a/apps/arc/arc.py +++ b/apps/arc/arc.py @@ -22,8 +22,9 @@ def tab_close_wrapper(): def command_search(command: str = ""): actions.key("cmd-l") - actions.sleep("200ms") - actions.insert(command) + if command != "": + actions.sleep("200ms") + actions.insert(command) @ctx.action_class("browser") diff --git a/apps/eclipse/eclipse_win.py b/apps/eclipse/eclipse_win.py index 46a3b79903..3346fa0f30 100644 --- a/apps/eclipse/eclipse_win.py +++ b/apps/eclipse/eclipse_win.py @@ -112,7 +112,8 @@ def split_window(): def command_search(command: str = ""): actions.key("ctrl-3") - actions.insert(command) + if command != "": + actions.insert(command) # splits.py support end diff --git a/apps/jetbrains/jetbrains.py b/apps/jetbrains/jetbrains.py index 52b57c94d2..f59aaae8ea 100644 --- a/apps/jetbrains/jetbrains.py +++ b/apps/jetbrains/jetbrains.py @@ -316,7 +316,8 @@ def camel_right(): def command_search(command: str = ""): actions.user.idea("action GotoAction") - actions.insert(command) + if command != "": + actions.insert(command) def line_clone(line: int): actions.user.idea(f"clone {line}") diff --git a/apps/vivaldi/vivaldi.py b/apps/vivaldi/vivaldi.py index f2894c7e77..17f4e4e1ec 100644 --- a/apps/vivaldi/vivaldi.py +++ b/apps/vivaldi/vivaldi.py @@ -55,8 +55,9 @@ def tab_jump(number: int): def command_search(command: str = ""): actions.user.vivaldi_toggle_quick_commands() - actions.sleep("180ms") - actions.insert(command) + if command != "": + actions.sleep("180ms") + actions.insert(command) @ctx.action_class("browser") diff --git a/apps/vscode/vscode.py b/apps/vscode/vscode.py index f16a37bccf..3d9b612051 100644 --- a/apps/vscode/vscode.py +++ b/apps/vscode/vscode.py @@ -256,7 +256,8 @@ def multi_cursor_skip_occurrence(): def command_search(command: str = ""): actions.user.vscode("workbench.action.showCommands") - actions.insert(command) + if command != "": + actions.insert(command) def tab_jump(number: int): if number < 10: From 7558483fd899643802527d00ec6aa67d912bf2fb Mon Sep 17 00:00:00 2001 From: Joshua Aresty Date: Sat, 5 Oct 2024 23:49:59 -0700 Subject: [PATCH 6/7] Respond to pull request feedback --- apps/vivaldi/vivaldi.py | 8 ++------ .../command_search.py} | 0 .../command_search.talon} | 0 3 files changed, 2 insertions(+), 6 deletions(-) rename tags/{please_command/please_command.py => command_search/command_search.py} (100%) rename tags/{please_command/please_command.talon => command_search/command_search.talon} (100%) diff --git a/apps/vivaldi/vivaldi.py b/apps/vivaldi/vivaldi.py index 17f4e4e1ec..02870003af 100644 --- a/apps/vivaldi/vivaldi.py +++ b/apps/vivaldi/vivaldi.py @@ -26,7 +26,7 @@ def vivaldi_history_panel(): def vivaldi_bookmarks_panel(): """Toggles the Vivaldi bookmarks panel""" - actions.user.vivaldi_toggle_quick_commands() + actions.user.command_search() actions.sleep("180ms") actions.insert("Bookmarks Panel") actions.key("enter") @@ -39,10 +39,6 @@ def vivaldi_notes_panel(): """Toggles the Vivaldi notes panel""" actions.key("ctrl-shift-o") - def vivaldi_toggle_quick_commands(): - """Toggles the Vivaldi Quick Commands tool""" - actions.key("ctrl-e") - @ctx.action_class("user") class UserActions: @@ -54,7 +50,7 @@ def tab_jump(number: int): actions.key(f"ctrl-{number}") def command_search(command: str = ""): - actions.user.vivaldi_toggle_quick_commands() + actions.key("ctrl-e") if command != "": actions.sleep("180ms") actions.insert(command) diff --git a/tags/please_command/please_command.py b/tags/command_search/command_search.py similarity index 100% rename from tags/please_command/please_command.py rename to tags/command_search/command_search.py diff --git a/tags/please_command/please_command.talon b/tags/command_search/command_search.talon similarity index 100% rename from tags/please_command/please_command.talon rename to tags/command_search/command_search.talon From 4ad613e4489b6ffec68e7cf248ab084697fdbce8 Mon Sep 17 00:00:00 2001 From: Joshua Aresty Date: Sat, 5 Oct 2024 23:54:01 -0700 Subject: [PATCH 7/7] Simplify bookmarks panel search in Vivaldi --- apps/vivaldi/vivaldi.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/vivaldi/vivaldi.py b/apps/vivaldi/vivaldi.py index 02870003af..16cd7163c0 100644 --- a/apps/vivaldi/vivaldi.py +++ b/apps/vivaldi/vivaldi.py @@ -26,9 +26,7 @@ def vivaldi_history_panel(): def vivaldi_bookmarks_panel(): """Toggles the Vivaldi bookmarks panel""" - actions.user.command_search() - actions.sleep("180ms") - actions.insert("Bookmarks Panel") + actions.user.command_search("Bookmarks Panel") actions.key("enter") def vivaldi_downloads_panel():