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>) {
return (command_name: string) => {
const command = commands.filter(c => c.name == command_name)[0]
const exstring = config.get(
"browsermaps",
keyseq.mozMapToMinimalKey(command.shortcut).toMapstr(),
)
if (exstring in useractions) return useractions[exstring]()
return controller.acceptExCmd(exstring)
const [excmd, ...exargs] = config
.get(
"browsermaps",
keyseq.mozMapToMinimalKey(command.shortcut).toMapstr(),
)
.split(" ")
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()
}
export const useractions: Record<string, () => void> = {
function jsua(...args: string[]) {
return eval(args.join(" "))
}
export const useractions: Record<string, (...args: string[]) => void> = {
escapehatch,
sidebartoggle,
jsua,
}