#api/syscall The Editor API provides functions for interacting with the editor interface. ### editor.getCurrentPage() Returns the [[Names|name]] of the page (or document) currently open in the editor. Example: ${editor.getCurrentPage()} ### editor.getCurrentPageMeta() Returns the meta data of the page (or document) currently open in the editor. Example: ${editor.getCurrentPageMeta()} ### editor.getCurrentPath() Returns the [[Paths|path]] of the page or document currently open in the editor. Example: ${editor.getCurrentPath()} ### editor.getCurrentEditor() Returns the name of the currently open editor. Example: ```lua local editorName = editor.getCurrentEditor() print(editorName) ``` ### editor.getText() Returns the full text of the currently open page. Example: ```lua local text = editor.getText() print("Document length: " .. #text) ``` ### editor.getCurrentLine() Returns the current line range and text. Example: ```lua local line = editor.getCurrentLine() print("from " .. line.from .. " to " .. line.to .. " text " .. line.text .. " text with cursor " .. line.textWithCursor) ``` ### editor.setText(text, isolateHistory) Updates the editor text while preserving cursor location. Example: ```lua local text = editor.getText() editor.setText(text:upper(), false) -- Convert to uppercase ``` ### editor.insertAtPos(text, pos) Insert text at the specified position. Example: ```lua editor.insertAtPos("Hello!", 0) -- Insert at beginning ``` ### editor.replaceRange(from, to, text) Replace text in the specified range. Example: ```lua editor.replaceRange(0, 5, "New text") ``` ### editor.insertAtCursor(text, scrollIntoView?) Insert text at the current cursor position. Example: ```lua editor.insertAtCursor("Inserted at cursor") ``` ### editor.getCursor() Returns the cursor position as character offset. Example: ```lua local pos = editor.getCursor() print("Cursor at position: " .. pos) ``` ### editor.getSelection() Returns the current selection range. Example: ```lua local sel = editor.getSelection() print("Selection from " .. sel.from .. " to " .. sel.to) ``` ### editor.setSelection(from, to) Sets the current selection range. Example: ```lua editor.setSelection(0, 10) -- Select first 10 characters ``` ### editor.moveCursor(pos, center) Move the cursor to a specific position. Example: ```lua editor.moveCursor(0, true) -- Move to start and center ``` ### editor.moveCursorToLine(line, column, center) Move the cursor to a specific line and column. Example: ```lua editor.moveCursorToLine(1, 1, true) -- Move to start of first line ``` ### editor.invokeCommand(name, args?) Invokes a client command by name. Example: ```lua editor.invokeCommand("Stats: Show") ``` ### editor.save() Force saves the current page. Example: ```lua editor.save() ``` ### editor.navigate(ref, replaceState?, newWindow?) Navigates to the specified page reference. Parameters: - `ref`: The (string) reference to navigate to, see [[../Link#Link syntax (String refs)|string refs]] - `replaceState`: Whether to replace the current history state - `newWindow`: Whether to open in a new window Example: ```lua editor.navigate("CHANGELOG@123") ``` ### editor.open(ref, replaceState?, newWindow?) Opens the specified page reference. Unlike `editor.navigate`, which always opens the page fresh (at the top, or at an explicit pointer such as `#header`/`@pos`), `editor.open` does a best-effort restore of the cursor and scroll position you last had on that page during this session. An explicit pointer in the ref still takes precedence. Parameters: - `ref`: The (string) reference to open, see [[../Link#Link syntax (String refs)|string refs]] - `replaceState`: Whether to replace the current history state - `newWindow`: Whether to open in a new window Example: ```lua editor.open("CHANGELOG") ``` ### editor.openPageNavigator(mode) Opens the page navigator. Example: ```lua editor.openPageNavigator("page") ``` ### editor.openCommandPalette() Opens the command palette. Example: ```lua editor.openCommandPalette() ``` ### editor.reloadPage() Force reloads the current page. Example: ```lua editor.reloadPage() ``` ### editor.reloadUI() Force reloads the browser UI. Example: ```lua editor.reloadUI() ``` ### editor.rebuildEditorState() Rebuilds the editor state to ensure the dispatch updates the state. Example: ```lua editor.rebuildEditorState() ``` ### editor.reloadConfigAndCommands() Reloads the config and commands, also in the server. Example: ```lua editor.reloadConfigAndCommands() ``` ### editor.openUrl(url, existingWindow?) Opens the specified URL in the browser. Example: ```lua editor.openUrl("https://example.com") ``` ### editor.newWindow() Opens a new window. Example: ```lua editor.newWindow() ``` ### editor.goHistory(delta) Moves in the browser history. Example: ```lua editor.goHistory(-1) -- Go back ``` ### editor.showPanel(id, mode, html, script) Shows a panel in the editor. Example: ```lua editor.showPanel("rhs", 1, "