The Editor API provides functions for interacting with the editor interface.
editor.acceptCompletion
editor.acceptCompletion()
Accepts the currently selected completion when the completion popup is active.
Returns:
boolean— Whether an active completion was accepted.
editor.alert
editor.alert(message)
Shows a browser alert dialog.
Parameters:
message(string) — The alert message.
editor.closeCompletion
editor.closeCompletion()
Closes the active editor completion popup.
editor.configureVimMode
editor.configureVimMode()
Configures CodeMirror Vim mode from the current SilverBullet Vim settings.
editor.confirm
editor.confirm(message, options?)
Prompts the user to confirm or cancel an action.
Parameters:
message(string) — The confirmation message.options?({ destructive?: boolean }) — Optional dialog styling settings.
Returns:
boolean— Whether the user confirmed.
editor.copyToClipboard
editor.copyToClipboard(data)
Copies text or binary Blob data to the system clipboard. Clipboard access requires a secure HTTPS context.
Parameters:
data(string | Blob) — The text or Blob to copy.
Example:
editor.copyToClipboard("Copied text")editor.cursorCharLeft
editor.cursorCharLeft()
Moves the cursor one character left, respecting bidirectional text.
editor.cursorCharRight
editor.cursorCharRight()
Moves the cursor one character right, respecting bidirectional text.
editor.cursorDocEnd
editor.cursorDocEnd()
Moves the cursor to the end of the document.
editor.cursorDocStart
editor.cursorDocStart()
Moves the cursor to the start of the document.
editor.cursorGroupLeft
editor.cursorGroupLeft()
Moves the cursor left by one character group or word.
editor.cursorGroupRight
editor.cursorGroupRight()
Moves the cursor right by one character group or word.
editor.cursorLineBoundaryLeft
editor.cursorLineBoundaryLeft()
Moves the cursor to the left visual boundary of the current line.
editor.cursorLineBoundaryRight
editor.cursorLineBoundaryRight()
Moves the cursor to the right visual boundary of the current line.
editor.cursorLineDown
editor.cursorLineDown()
Moves completion selection down when open, otherwise moves the cursor down one visual line.
editor.cursorLineEnd
editor.cursorLineEnd()
Moves the cursor to the end of the current logical line.
editor.cursorLineStart
editor.cursorLineStart()
Moves the cursor to the start of the current logical line.
editor.cursorLineUp
editor.cursorLineUp()
Moves completion selection up when open, otherwise moves the cursor up one visual line.
editor.cursorPageDown
editor.cursorPageDown()
Moves completion selection down one page when open, otherwise moves the cursor down one viewport page.
editor.cursorPageUp
editor.cursorPageUp()
Moves completion selection up one page when open, otherwise moves the cursor up one viewport page.
editor.deleteCharBackward
editor.deleteCharBackward()
Deletes the selection or the character before the cursor.
editor.deleteCharForward
editor.deleteCharForward()
Deletes the selection or the character after the cursor.
editor.deleteGroupBackward
editor.deleteGroupBackward()
Deletes the selection or the character group before the cursor.
editor.deleteGroupForward
editor.deleteGroupForward()
Deletes the selection or the character group after the cursor.
editor.deleteLine
editor.deleteLine()
Deletes the current line or the lines touched by the selection.
editor.deleteLineBoundaryBackward
editor.deleteLineBoundaryBackward()
Deletes the selection or text back to the current line boundary.
editor.deleteLineBoundaryForward
editor.deleteLineBoundaryForward()
Deletes the selection or text forward to the current line boundary.
editor.dispatch
editor.dispatch(change)
Dispatches a CodeMirror transaction to the editor view.
Parameters:
change(Transaction) — The CodeMirror transaction to dispatch.
editor.downloadFile
editor.downloadFile(filename, dataUrl)
Triggers a browser download of a data URL under the given filename.
Parameters:
filename(string) — The downloaded filename.dataUrl(string) — The data URL to download.
Example:
editor.downloadFile("test.txt", "data:text/plain;base64,SGVsbG8=")editor.filterBox
editor.filterBox(label, options, helpText?, placeHolder?)
Shows a filterable option picker similar to the page navigator.
Parameters:
label(string) — The label shown beside the filter input.options(FilterOption[]) — The available options.helpText?(string) — Help text shown below the picker.placeHolder?(string) — Placeholder text for the filter input.
Returns:
FilterOption | undefined— The selected option, or undefined if dismissed.
Example:
local result = editor.filterBox("Select:", {
{name = "Option 1", value = "1"},
{name = "Option 2", value = "2", description = "More details"}
})editor.flashNotification
editor.flashNotification(message, type?, options?)
Shows a flash notification in the editor UI.
Parameters:
message(string) — The message to display.type?(NotificationType) — The notification severity: “info”, “error”, or “warning”.options?({ timeout?: number; actions?: NotificationAction[] }) — Optional timeout and action buttons. A timeout of 0 keeps the notification visible until dismissed.
Example:
editor.flashNotification("Update available", "warning", {
timeout = 0,
actions = {{
name = "Reload",
run = function() editor.reloadUI() end
}}
})editor.focus
editor.focus()
Returns focus to the main editor.
editor.fold
editor.fold()
Folds the code or markup region at the cursor.
editor.foldAll
editor.foldAll()
Folds all foldable regions in the editor.
editor.forceLint
editor.forceLint()
Forces editor linting to run, including when the content has not changed.
editor.getCurrentEditor
editor.getCurrentEditor()
Returns the name of the currently active editor implementation.
Returns:
string— The editor name, orpagefor the page editor.
editor.getCurrentLine
editor.getCurrentLine()
Returns the current line’s range and text, including a |^| cursor marker variant.
Returns:
{ from: number; to: number; text: string; textWithCursor: string }— The line containing the main selection head.
editor.getCurrentPage
editor.getCurrentPage()
Returns the name of the page or document currently open in the editor.
Returns:
string— The current page name.
editor.getCurrentPageMeta
editor.getCurrentPageMeta()
Returns metadata for the page or document currently open in the editor.
Returns:
PageMeta | undefined— The current page metadata, if indexed.
editor.getCurrentPath
editor.getCurrentPath()
Returns the path of the page or document currently open in the editor.
Returns:
string— The current page path.
editor.getCursor
editor.getCursor()
Returns the cursor position as a character offset from the start of the document.
Returns:
number— The cursor offset.
editor.getRecentlyOpenedPages
editor.getRecentlyOpenedPages()
Returns page metadata ordered from most to least recently opened.
Returns:
PageMeta[]— Recently opened pages.
editor.getSelection
editor.getSelection()
Returns the current selection range and selected text.
Returns:
{ from: number; to: number; text: string }— The main editor selection.
editor.getText
editor.getText()
Returns the full text of the currently open page or document.
Returns:
string— The editor contents.
editor.getUiOption
editor.getUiOption(key)
Returns the current value of an editor UI option.
Parameters:
key(string) — The UI option key.
Returns:
any— The option value.
editor.goHistory
editor.goHistory(delta)
Moves backward or forward through browser history.
Parameters:
delta(number) — The relative history offset; negative moves backward and positive moves forward.
editor.hidePanel
editor.hidePanel(id)
Hides the panel at a specified editor UI location.
Parameters:
id(string) — The panel location identifier.
editor.indentLess
editor.indentLess()
Decreases indentation for the current line or selection.
editor.indentMore
editor.indentMore()
Increases indentation for the current line or selection.
editor.insertAtCursor
editor.insertAtCursor(text, scrollIntoView?, cursorPlaceHolder?)
Inserts text at the cursor and moves the cursor after it or to an optional |^| marker.
Parameters:
text(string) — The text to insert.scrollIntoView?(boolean) — Whether to scroll the new cursor position into view.cursorPlaceHolder?(boolean) — Whether to remove|^|and move the cursor to its position.
editor.insertAtPos
editor.insertAtPos(text, pos, cursorPlaceHolder?)
Inserts text at a character offset, optionally placing the cursor at a |^| marker.
Parameters:
text(string) — The text to insert.pos(number) — The character offset at which to insert.cursorPlaceHolder?(boolean) — Whether to remove|^|and move the cursor to its position.
editor.insertNewline
editor.insertNewline()
Accepts the active completion, or inserts a newline with appropriate indentation.
editor.invokeCommand
editor.invokeCommand(name, args?)
Invokes a client command by name.
Parameters:
name(string) — The command name.args?(string[]) — Arguments passed to the command.
editor.isMobile
editor.isMobile()
Checks whether the current device lacks a fine pointer and should be treated as mobile.
Returns:
boolean— Whether the editor is running in a mobile-style pointer environment.
editor.moveCursor
editor.moveCursor(pos, center?)
Moves and focuses the cursor at a character offset, scrolling it into view.
Parameters:
pos(number) — The character offset to move to.center?(boolean) — Whether to vertically center the cursor.
editor.moveCursorToLine
editor.moveCursorToLine(line, column?, center?)
Moves the cursor to a one-based line and column, clamping the column to the line length.
Parameters:
line(number) — The one-based line number.column?(number) — The one-based column number.center?(boolean) — Whether to vertically center the cursor.
editor.moveLineDown
editor.moveLineDown()
Moves the current line or selected lines downward.
editor.moveLineUp
editor.moveLineUp()
Moves the current line or selected lines upward.
editor.navigate
editor.navigate(ref, replaceState?, newWindow?)
Navigates to a page reference without restoring its remembered cursor and scroll position.
Parameters:
ref(Ref | string) — The page reference to navigate to.replaceState?(boolean) — Whether to replace the current browser history state.newWindow?(boolean) — Whether to open the reference in a new window.
Example:
editor.navigate("CHANGELOG@123")editor.newWindow
editor.newWindow()
Opens the current SilverBullet URL in a new browser window.
editor.open
editor.open(ref, replaceState?, newWindow?)
Opens a page reference and restores its remembered cursor and scroll position when possible.
Parameters:
ref(Ref | string) — The page reference to open.replaceState?(boolean) — Whether to replace the current browser history state.newWindow?(boolean) — Whether to open the reference in a new window.
Example:
editor.open("CHANGELOG")editor.openCommandPalette
editor.openCommandPalette()
Opens the command palette.
editor.openPageNavigator
editor.openPageNavigator(mode?)
Opens the page navigator in the requested browsing mode.
Parameters:
mode?(page | meta | document | all) — The navigator mode.
editor.openSearchPanel
editor.openSearchPanel()
Opens the editor’s native search panel.
editor.openUrl
editor.openUrl(url, existingWindow?)
Opens a URL in the browser.
Parameters:
url(string) — The URL to open.existingWindow?(boolean) — Whether to reuse an existing window.
editor.prompt
editor.prompt(message, defaultValue?)
Prompts the user for text input.
Parameters:
message(string) — The prompt message.defaultValue?(string) — The initial input value.
Returns:
string | undefined— The entered text, or undefined if dismissed.
editor.rebuildEditorState
editor.rebuildEditorState()
Rebuilds the CodeMirror editor state from the current client configuration.
editor.redo
editor.redo()
Redoes the most recently undone editor change.
editor.reloadConfigAndCommands
editor.reloadConfigAndCommands()
Reloads space scripts and styles, then rebuilds the editor state.
editor.reloadPage
editor.reloadPage()
Force reloads the current page in the editor.
editor.reloadUI
editor.reloadUI()
Force reloads the browser UI.
editor.replaceRange
editor.replaceRange(from, to, text, cursorPlaceHolder?)
Replaces a text range, optionally placing the cursor at a |^| marker in the replacement.
Parameters:
from(number) — The start offset of the range.to(number) — The end offset of the range.text(string) — The replacement text.cursorPlaceHolder?(boolean) — Whether to remove|^|and move the cursor to its position.
editor.save
editor.save()
Forces the current page or document to be saved.
editor.selectAll
editor.selectAll()
Selects the entire editor document.
editor.selectCharLeft
editor.selectCharLeft()
Extends the selection one character left, respecting bidirectional text.
editor.selectCharRight
editor.selectCharRight()
Extends the selection one character right, respecting bidirectional text.
editor.selectDocEnd
editor.selectDocEnd()
Extends the selection to the end of the document.
editor.selectDocStart
editor.selectDocStart()
Extends the selection to the start of the document.
editor.selectGroupLeft
editor.selectGroupLeft()
Extends the selection left by one character group or word.
editor.selectGroupRight
editor.selectGroupRight()
Extends the selection right by one character group or word.
editor.selectLineBoundaryLeft
editor.selectLineBoundaryLeft()
Extends the selection to the left visual boundary of the current line.
editor.selectLineBoundaryRight
editor.selectLineBoundaryRight()
Extends the selection to the right visual boundary of the current line.
editor.selectLineDown
editor.selectLineDown()
Extends the selection downward by one visual line.
editor.selectLineEnd
editor.selectLineEnd()
Extends the selection to the end of the current logical line.
editor.selectLineStart
editor.selectLineStart()
Extends the selection to the start of the current logical line.
editor.selectLineUp
editor.selectLineUp()
Extends the selection upward by one visual line.
editor.selectPageDown
editor.selectPageDown()
Extends the selection downward by one viewport page.
editor.selectPageUp
editor.selectPageUp()
Extends the selection upward by one viewport page.
editor.sendMessage
editor.sendMessage(type, data?)
Sends a public message to the active document editor, if one is open.
Parameters:
type(string) — The message type.data?(any) — Data attached to the message.
editor.setSelection
editor.setSelection(from, to)
Sets the main editor selection to a character range.
Parameters:
from(number) — The selection anchor offset.to(number) — The selection head offset.
editor.setText
editor.setText(newText, shouldIsolateHistory?)
Updates the editor text with a minimal diff while preserving the cursor when possible.
Parameters:
newText(string) — The complete replacement text.shouldIsolateHistory?(boolean) — Whether to isolate the change in undo history.
editor.setUiOption
editor.setUiOption(key, value)
Sets an editor UI option and reloads the editor.
Parameters:
key(string) — The UI option key.value(any) — The option value.
editor.showPanel
editor.showPanel(id, mode, html, script)
Shows an HTML panel in a specified editor UI location.
Parameters:
id(string) — The panel location identifier.mode(number) — The panel display mode or size.html(HTMLElement | HTMLElement[] | string) — The panel content.script(string) — A script associated with the panel content.
editor.showProgress
editor.showProgress(progressType, progressPercentage?)
Shows, updates, or hides a sync or indexing progress indicator.
Parameters:
progressType(sync | index) — The operation represented by the indicator.progressPercentage?(number) — Completion percentage, or undefined to hide the indicator.
editor.startCompletion
editor.startCompletion()
Explicitly starts editor completion at the cursor.
editor.toggleComment
editor.toggleComment()
Comments or uncomments the current line or selection.
editor.toggleFold
editor.toggleFold()
Toggles folding for the region at the cursor.
editor.transposeChars
editor.transposeChars()
Transposes the characters around the cursor.
editor.undo
editor.undo()
Undoes the most recent editor change.
editor.unfold
editor.unfold()
Unfolds the folded region at the cursor.
editor.unfoldAll
editor.unfoldAll()
Unfolds all folded regions in the editor.
editor.updateBakedSections
editor.updateBakedSections()
Re-evaluates every baked section on the current page and replaces each body with its latest output.
editor.uploadFile
editor.uploadFile(accept?, capture?)
Opens the browser’s native file picker and returns the selected file’s bytes and metadata.
Parameters:
accept?(string) — Accepted file types for the file input.capture?(string) — The media capture mode for the file input.
Returns:
UploadFile— The selected file’s name, content type, and bytes.
Example:
local file = editor.uploadFile(".txt")
print(file.name)editor.vimEx
editor.vimEx(exCommand)
Executes a Vim Ex command in the active Vim-mode editor.
Parameters:
exCommand(string) — The Ex command to execute.