Add jsua for --mode=browser binds

Works like jsb but preserves the 'user action' so
it can be used to open/close the sidebar, open
downloaded files etc.

Example usage:

`:bind --mode=browser <C-.> jsua browser.sidebarAction.close()`
This commit is contained in:
Oliver Blanthorn 2023-03-22 14:43:17 +01:00
parent c77bf89d0c
commit 09172391a5
No known key found for this signature in database
GPG key ID: 2BB8C36BB504BFF3
2 changed files with 14 additions and 7 deletions

View file

@ -6,12 +6,14 @@ import * as controller from "@src/lib/controller"
function makelistener(commands: Array<browser.commands.Command>) { function makelistener(commands: Array<browser.commands.Command>) {
return (command_name: string) => { return (command_name: string) => {
const command = commands.filter(c => c.name == command_name)[0] const command = commands.filter(c => c.name == command_name)[0]
const exstring = config.get( const [excmd, ...exargs] = config
.get(
"browsermaps", "browsermaps",
keyseq.mozMapToMinimalKey(command.shortcut).toMapstr(), keyseq.mozMapToMinimalKey(command.shortcut).toMapstr(),
) )
if (exstring in useractions) return useractions[exstring]() .split(" ")
return controller.acceptExCmd(exstring) if (excmd in useractions) return useractions[excmd](...exargs)
return controller.acceptExCmd([excmd, ...exargs].join(" "))
} }
} }

View file

@ -43,7 +43,12 @@ function sidebartoggle() {
return browser.sidebarAction.toggle() return browser.sidebarAction.toggle()
} }
export const useractions: Record<string, () => void> = { function jsua(...args: string[]) {
return eval(args.join(" "))
}
export const useractions: Record<string, (...args: string[]) => void> = {
escapehatch, escapehatch,
sidebartoggle, sidebartoggle,
jsua,
} }