プラグインに戻る
No Backspace
Toggle the Backspace key off to stop editing and keep moving forward.
What it does
- On: pressing Backspace (and, optionally, Ctrl/Cmd+Backspace word-delete and the forward Delete key) does nothing — nothing is deleted.
- Off: the keyboard works normally.
- Toggle from four places, all kept in sync via
app.storage:- the document/sheet toolbar lock button — lives right in the working
window, next to the other toolbar buttons (
registerHeaderAction,fileTypes: ['document', 'sheet']) - the app-header lock button (Timer-button area, project-level)
- the command palette ("No Backspace: Toggle", bindable to a shortcut)
- the plugin's settings tab
- the document/sheet toolbar lock button — lives right in the working
window, next to the other toolbar buttons (
- Settings → Compatibility → "Play nicely with other plugins" controls
whether this plugin coexists with other plugins that also touch
Backspace (default: on — other plugins get first chance at the key) or
takes exclusive priority so it always wins (off). This uses TipTap's
per-extension
priority, so it's read once at load; flip it and re-enable the plugin for it to take effect.
How it works
manifest.jsondeclares theeditor.interceptpermission — the gate for any plugin that wants to swallow keystrokes.src/extension.tsis a small TipTapExtensionregistered viathis.registerEditorExtension(...). ItsaddKeyboardShortcuts()handlers readapp.storagelive on every keypress and returntrue(swallow the key) when blocking is on, orfalse(let it through) otherwise — so the header button / palette command / settings toggle all take effect instantly, no reload needed.src/main.tswires the command, the document/sheet toolbar button (registerHeaderAction), the app-header button (registerAppHeaderAction; both use the built-inisActivepressed-state — no customrenderneeded), the settings tab, and the extension itself.src/settings.ts/src/i18n.tsfollow the SDK's declarative-schema andL/tr/STRlocalization conventions (English, Korean, Japanese).
Build
npm install
npm run build
Produces dist/main.js, which the pensiv app packages into a
.pnsv-plugin and installs alongside manifest.json.
Note:
@pensiv/plugin-sdk/@pensiv/build-configare provided by the pensiv monorepo/host at build & runtime and aren't on the public npm registry, sonpm installonly resolves here once this folder is dropped into (or referenced from) thepensiv-pluginsmonorepo workspace — same as any other plugin cloned fromplugins/sample-plugin.