Priority support for commands and overrides
This commit is contained in:
parent
fd6f7c28c9
commit
c63a93e866
@ -161,6 +161,7 @@ functions:
|
||||
command:
|
||||
name: "Mentions: Toggle"
|
||||
key: ctrl-alt-m
|
||||
priority: 5
|
||||
|
||||
renderMentions:
|
||||
path: "./linked_mentions.ts:renderMentions"
|
||||
@ -172,6 +173,7 @@ functions:
|
||||
command:
|
||||
name: "Table of Contents: Toggle"
|
||||
key: ctrl-alt-t
|
||||
priority: 5
|
||||
|
||||
renderTOC:
|
||||
path: toc.ts:renderTOC
|
||||
|
@ -102,6 +102,7 @@ functions:
|
||||
command:
|
||||
name: "Quick Note"
|
||||
key: "Alt-Shift-n"
|
||||
priority: 3
|
||||
|
||||
dailyNoteCommand:
|
||||
path: ./template.ts:dailyNoteCommand
|
||||
|
@ -25,10 +25,11 @@ export function CommandPalette({
|
||||
const options: FilterOption[] = [];
|
||||
const isMac = isMacLike();
|
||||
for (const [name, def] of commands.entries()) {
|
||||
let shortcut: { key?: string; mac?: string } = def.command;
|
||||
let shortcut: { key?: string; mac?: string; priority?: number } =
|
||||
def.command;
|
||||
// Let's see if there's a shortcut override
|
||||
if (settings.shortcuts) {
|
||||
const commandKeyboardOverride = settings.shortcuts.find((
|
||||
const commandOverride = settings.shortcuts.find((
|
||||
shortcut,
|
||||
) => {
|
||||
const commandMatch = commandLinkRegex.exec(shortcut.command);
|
||||
@ -37,8 +38,9 @@ export function CommandPalette({
|
||||
// or if it's not a command link, let's match exactly
|
||||
shortcut.command === name;
|
||||
});
|
||||
if (commandKeyboardOverride) {
|
||||
shortcut = commandKeyboardOverride;
|
||||
if (commandOverride) {
|
||||
shortcut = commandOverride;
|
||||
console.log(`Shortcut override for ${name}:`, shortcut);
|
||||
}
|
||||
}
|
||||
options.push({
|
||||
@ -46,8 +48,9 @@ export function CommandPalette({
|
||||
hint: isMac && shortcut.mac ? shortcut.mac : shortcut.key,
|
||||
orderId: recentCommands.has(name)
|
||||
? -recentCommands.get(name)!.getTime()
|
||||
: 0,
|
||||
: shortcut.priority || Infinity,
|
||||
});
|
||||
// console.log("Options", options);
|
||||
}
|
||||
return (
|
||||
<FilterList
|
||||
|
@ -7,6 +7,9 @@ export type CommandDef = {
|
||||
|
||||
contexts?: string[];
|
||||
|
||||
// Default 0, higher is higher priority = higher in the list
|
||||
priority?: number;
|
||||
|
||||
// Bind to keyboard shortcut
|
||||
key?: string;
|
||||
mac?: string;
|
||||
|
@ -22,6 +22,7 @@ export type PanelMode = number;
|
||||
export type Shortcut = {
|
||||
key?: string;
|
||||
mac?: string;
|
||||
priority?: number;
|
||||
command: string;
|
||||
};
|
||||
|
||||
|
@ -4,7 +4,8 @@ release.
|
||||
---
|
||||
|
||||
## Next
|
||||
* Keyboard shortcuts can now be configured in [[SETTINGS]]
|
||||
* Keyboard shortcuts as well as priority (order in which they appear in the [[Command Palette]]) can now be configured for [[Commands]] in [[SETTINGS]]. The `priority` enables you to put frequently used commands at the top.
|
||||
* The rendering of [[Live Templates]], [[Live Queries]], [[Table of Contents]] and [[Linked Mentions]] has been re-implemented. Rendering should now be near-instant and the “flappy” behavior should be largely gone, especially after an initial load (results are cached). There may still be some visual regressions. Please report them if you find them.
|
||||
|
||||
---
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
The Command Palette is used to explore SilverBullet’s numerous commands as well as execute them.
|
||||
The Command Palette is used to explore SilverBullet’s numerous [[Commands]] as well as execute them.
|
||||
|
||||
The UI and its operation is largely the same as the [[Page Picker]]‘s, with a few differences:
|
||||
|
||||
* If a keyboard shortcut is configured for the given command, it is listed along the command name to the right.
|
||||
* The ordering is decided based on two factors:
|
||||
* The last time the command was invoked via the [[Command Palette]] in this client session.
|
||||
* The `priority` configured for the command (in the plug, or via [[SETTINGS]] under `shortcuts`).
|
3
website/Commands.md
Normal file
3
website/Commands.md
Normal file
@ -0,0 +1,3 @@
|
||||
Commands define actions that SilverBullet can perform. They range from simple edit commands, such as {[Text: Bold]}, but may be more elaborate such as {[Page: Rename]}. At a technical level, all commands are implemented via [[Plugs]].
|
||||
|
||||
All available commands appear in the [[Command Palette]] but may have key bindings as well (these key bindings appear in the [[Command Palette]] and are configurable in [[SETTINGS]]).
|
Loading…
Reference in New Issue
Block a user