prism-code-editor
Version:
Lightweight, extensible code editor component for the web using Prism
85 lines (84 loc) • 3.71 kB
TypeScript
import { BasicExtension } from '../index.js';
declare let ignoreTab: boolean;
/**
* Sets whether editors should ignore tab or use it for indentation.
* Users can always toggle this using Ctrl+M / Ctrl+Shift+M (Mac).
*/
declare const setIgnoreTab: (newState: boolean) => boolean;
/**
* Extension that will add automatic indentation and closing of brackets, quotes, and
* tags along with the commands presented later.
*
* The shortcuts for the commands are not easily customizable. If you want to customize
* them, you can copy the {@link https://github.com/jonpyt/prism-code-editor/blob/main/package/src/extensions/commands.ts|source}
* and change the conditions.
*
* ## Commands
*
* Here, `Mod` refers to `Cmd` on Mac and `Ctrl` otherwise.
*
* - `Alt` + `ArrowUp`: Move line up
* - `Alt` + `ArrowDown`: Move line down
* - `Ctrl` + `ArrowUp`: Scroll one line up (Windows/Linux only)
* - `Ctrl` + `ArrowDown`: Scroll one line down (Windows/Linux only)
* - `Shift` + `Alt` + `ArrowUp`: Copy line up
* - `Shift` + `Alt` + `ArrowDown`: Copy line down
* - `Mod` + `Enter`: Insert blank line
* - `Mod` + `]`: Indent line
* - `Mod` + `[`: Outdent line
* - `Tab`: Indent line (Tab capture enabled)
* - `Shift` + `Tab`: Outdent line (Tab capture enabled)
* - `Shift` + `Mod` + `K`: Delete line
* - `Mod` + `/`: Toggle comment
* - `Shift` + `Alt` + `A`: Toggle block comment
* - `Ctrl` + `M`: Toggle tab capturing (Windows/Linux)
* - `Ctrl` + `Shift` + `M`: Toggle tab capturing (Mac)
*
* @param selfClosePairs Pairs of self-closing brackets and quotes.
* Must be an array of strings with 2 characters each.
* Defaults to `['""', "''", '``', '()', '[]', '{}']`.
* @param selfCloseRegex Regex controlling whether or not a bracket/quote should
* automatically close based on the character before and after the cursor.
* Defaults to ``/([^$\w'"`]["'`]|.[[({])[.,:;\])}>\s]|.[[({]`/s``.
*/
declare const defaultCommands: (selfClosePairs?: string[], selfCloseRegex?: RegExp) => BasicExtension;
export interface EditHistory extends BasicExtension {
/** Clears the history stack. Usually wanted after changing the value of the editor. */
clear(): void;
/**
* Sets the active entry relative to the current entry.
*
* @param offset The position you want to move to relative to the current entry.
*
* `EditHistory.go(-1)` would be equivalent to an undo while `EditHistory.go(1)` would
* be equivalent to a redo.
*
* If there's no entry at the specified offset, the call does nothing.
*/
go(offset: number): void;
/**
* Returns whether or not there exists a history entry at the specified offset relative
* to the current entry.
*
* This method can be used to determine whether a call to {@link EditHistory.go} with the
* same offset will succeed or do nothing.
*/
has(offset: number): boolean;
}
/**
* History extension that overrides the undo/redo behavior of the browser.
*
* Without this extension, the browser's native undo/redo is used, which can be sufficient
* in some cases.
*
* Once added to an editor, this extension can be accessed from `editor.extensions.history`.
*
* If you want to create a new editor with different extensions while keeping the undo/redo
* history of an old editor, you can! Just add the old editor's history extension instance
* to the new editor. Keep in mind that this will fully break the undo/redo behavior of the
* old editor.
*
* @param historyLimit The maximum size of the history stack. Defaults to 999.
*/
declare const editHistory: (historyLimit?: number) => EditHistory;
export { defaultCommands, setIgnoreTab, ignoreTab, editHistory };