110 lines
2.6 KiB
TypeScript
110 lines
2.6 KiB
TypeScript
import {
|
|
clientStore,
|
|
codeWidget,
|
|
editor,
|
|
} from "@silverbulletmd/silverbullet/syscalls";
|
|
|
|
// Run on "editor:init"
|
|
export async function setEditorMode() {
|
|
if (await clientStore.get("vimMode")) {
|
|
await editor.setUiOption("vimMode", true);
|
|
}
|
|
if (await clientStore.get("darkMode")) {
|
|
await editor.setUiOption("darkMode", true);
|
|
}
|
|
}
|
|
|
|
export function openCommandPalette() {
|
|
return editor.openCommandPalette();
|
|
}
|
|
|
|
export async function openPageNavigator() {
|
|
await editor.openPageNavigator("page");
|
|
}
|
|
|
|
export async function openMetaNavigator() {
|
|
await editor.openPageNavigator("meta");
|
|
}
|
|
|
|
export async function openAllNavigator() {
|
|
await editor.openPageNavigator("all");
|
|
}
|
|
|
|
export async function toggleDarkMode() {
|
|
let darkMode = await clientStore.get("darkMode");
|
|
darkMode = !darkMode;
|
|
await clientStore.set("darkMode", darkMode);
|
|
await editor.reloadUI();
|
|
}
|
|
|
|
export async function centerCursorCommand() {
|
|
const pos = await editor.getCursor();
|
|
await editor.moveCursor(pos, true);
|
|
}
|
|
|
|
export async function moveToPosCommand() {
|
|
const posString = await editor.prompt("Move to position:");
|
|
if (!posString) {
|
|
return;
|
|
}
|
|
const pos = +posString;
|
|
await editor.moveCursor(pos, true); // showing the movement for better UX
|
|
}
|
|
|
|
export async function moveToLineCommand() {
|
|
const lineString = await editor.prompt(
|
|
"Move to line (and optionally column):",
|
|
);
|
|
if (!lineString) {
|
|
return;
|
|
}
|
|
// Match sequence of digits at the start, optionally another sequence
|
|
const numberRegex = /^(\d+)(?:[^\d]+(\d+))?/;
|
|
const match = lineString.match(numberRegex);
|
|
if (!match) {
|
|
await editor.flashNotification(
|
|
"Could not parse line number in prompt",
|
|
"error",
|
|
);
|
|
return;
|
|
}
|
|
let column = 1;
|
|
const line = parseInt(match[1]);
|
|
if (match[2]) {
|
|
column = parseInt(match[2]);
|
|
}
|
|
await editor.moveCursorToLine(line, column, true); // showing the movement for better UX
|
|
}
|
|
|
|
export async function customFlashMessage(_def: any, message: string) {
|
|
await editor.flashNotification(message);
|
|
}
|
|
|
|
export async function reloadSystem() {
|
|
await editor.save();
|
|
await editor.reloadConfigAndCommands();
|
|
await codeWidget.refreshAll();
|
|
await editor.flashNotification("System and widgets reloaded!");
|
|
}
|
|
|
|
export async function findInPageCommand() {
|
|
await editor.openSearchPanel();
|
|
return false;
|
|
}
|
|
|
|
export function undoCommand() {
|
|
return editor.undo();
|
|
}
|
|
|
|
export function redoCommand() {
|
|
return editor.redo();
|
|
}
|
|
|
|
export function deleteLineCommand() {
|
|
return editor.deleteLine();
|
|
}
|
|
|
|
export function newWindowCommand() {
|
|
return editor.newWindow();
|
|
}
|