API Reference
⚠️ EXPERIMENTAL API WARNING
The Plugin API is currently in an experimental stage and is not yet recommended for production use.
- The API is subject to breaking changes without notice
- Features may be added, modified, or removed in future releases
- Documentation may not fully reflect the current implementation
- Use at your own risk for experimental purposes only
We welcome feedback and bug reports to help improve the API, but please be aware that stability is not guaranteed at this time.
VimApi
The VimApi
class is the main entry point for interacting with the Vim editor. It provides access to various functionalities like variable management, window operations, and text manipulation.
Properties
Property |
Type |
Description |
mode |
Mode |
The current mode of the Vim editor. |
tabCount |
Int |
Gets the number of tabs in the current window. |
currentTabIndex |
Int? |
The index of the current tab or null if there is no tab selected or no tabs are open. |
Methods
Variable Management
Method |
Description |
Return Value |
getVariable<T : Any>(name: String): T? |
Gets a variable with the specified name and scope. |
The variable value or null if not found. |
setVariable<T : Any>(name: String, value: T) |
Sets a variable with the specified name and value. In Vim, this is equivalent to let varname = value . |
None |
Operator Functions
Method |
Description |
Return Value |
exportOperatorFunction(name: String, function: suspend VimApi.() -> Boolean) |
Exports a function as an operator function. |
None |
setOperatorFunction(name: String) |
Sets the operator function to use. |
None |
normal(command: String) |
Executes a normal mode command. |
None |
Editor Operations
Method |
Description |
Return Value |
editor<T>(block: EditorScope.() -> T): T |
Executes a block of code in the context of the current editor. |
The result of the block. |
forEachEditor<T>(block: EditorScope.() -> T): List<T> |
Executes a block of code for each open editor. |
A list of results from each editor. |
Scope Access
Method |
Description |
Return Value |
mappings(block: MappingScope.() -> Unit) |
Executes a block of code in the mapping scope. |
None |
listeners(block: ListenersScope.() -> Unit) |
Executes a block of code in the listeners scope. |
None |
outputPanel(block: OutputPanelScope.() -> Unit) |
Executes a block of code in the output panel scope. |
None |
modalInput(): ModalInput |
Gets the modal input scope. |
The modal input scope. |
commandLine(block: CommandLineScope.() -> Unit) |
Executes a block of code in the command line scope. |
None |
option<T>(block: OptionScope.() -> T): T |
Executes a block of code in the option scope. |
The result of the block execution. |
digraph(block: DigraphScope.() -> Unit) |
Executes a block of code in the digraph scope. |
None |
Tab Management
Method |
Description |
Return Value |
removeTabAt(indexToDelete: Int, indexToSelect: Int) |
Removes a tab at the specified index and selects another tab. |
None |
moveCurrentTabToIndex(index: Int) |
Moves the current tab to the specified index. |
None |
closeAllExceptCurrentTab() |
Closes all tabs except the current one. |
None |
Pattern Matching
Method |
Description |
Return Value |
matches(pattern: String, text: String, ignoreCase: Boolean = false): Boolean |
Checks if a pattern matches a text. |
True if the pattern matches the text, false otherwise. |
getAllMatches(text: String, pattern: String): List<Pair<Int, Int>> |
Finds all matches of a pattern in a text. |
A list of pairs representing the start and end offsets of each match. |
Window Management
Method |
Description |
Return Value |
selectNextWindow() |
Selects the next window in the editor. |
None |
selectPreviousWindow() |
Selects the previous window in the editor. |
None |
selectWindow(index: Int) |
Selects a window by its index. |
None |
splitWindowVertically(filename: String? = null) |
Splits the current window vertically and optionally opens a file in the new window. |
None |
splitWindowHorizontally(filename: String? = null) |
Splits the current window horizontally and optionally opens a file in the new window. |
None |
closeAllExceptCurrentWindow() |
Closes all windows except the current one. |
None |
closeCurrentWindow() |
Closes the current window. |
None |
closeAllWindows() |
Closes all windows in the editor. |
None |
Script Execution
Method |
Description |
Return Value |
execute(script: String): Boolean |
Parses and executes the given Vimscript string. It can be used to execute ex commands, such as :set , :map , etc. |
The result of the execution, which can be Success or Error. |
command(command: String, block: VimApi.(String) -> Unit) |
Defines a new command. |
None |
Data Storage
Method |
Description |
Return Value |
getDataFromWindow<T>(key: String): T? |
Gets keyed data from a Vim window. |
The data associated with the key, or null if no data is found. |
putDataToWindow<T>(key: String, data: T) |
Stores keyed user data in a Vim window. |
None |
getDataFromBuffer<T>(key: String): T? |
Gets data from buffer. Vim stores there buffer scoped (b: ) variables and local options. |
The data associated with the key, or null if no data is found. |
putDataToBuffer<T>(key: String, data: T) |
Puts data to buffer. Vim stores there buffer scoped (b: ) variables and local options. |
None |
getDataFromTab<T>(key: String): T? |
Gets data from tab (group of windows). Vim stores there tab page scoped (t: ) variables. |
The data associated with the key, or null if no data is found. |
putDataToTab<T>(key: String, data: T) |
Puts data to tab (group of windows). Vim stores there tab page scoped (t: ) variables. |
None |
getOrPutWindowData<T>(key: String, provider: () -> T): T |
Gets data from window or puts it if it doesn't exist. |
The existing data or the newly created data. |
getOrPutBufferData<T>(key: String, provider: () -> T): T |
Gets data from buffer or puts it if it doesn't exist. |
The existing data or the newly created data. |
getOrPutTabData<T>(key: String, provider: () -> T): T |
Gets data from tab or puts it if it doesn't exist. |
The existing data or the newly created data. |
File Operations
Method |
Description |
Return Value |
saveFile() |
Saves the current file. In Vim, this is equivalent to the :w command. |
None |
closeFile() |
Closes the current file. In Vim, this is equivalent to the :q command. |
None |
Text Navigation
Method |
Description |
Return Value |
getNextCamelStartOffset(chars: CharSequence, startIndex: Int, count: Int = 1): Int? |
Finds the start offset of the next word in camel case or snake case text. |
The offset of the next word start, or null if not found. |
getPreviousCamelStartOffset(chars: CharSequence, endIndex: Int, count: Int = 1): Int? |
Finds the start offset of the previous word in camel case or snake case text. |
The offset of the previous word start, or null if not found. |
getNextCamelEndOffset(chars: CharSequence, startIndex: Int, count: Int = 1): Int? |
Finds the end offset of the next word in camel case or snake case text. |
The offset of the next word end, or null if not found. |
getPreviousCamelEndOffset(chars: CharSequence, endIndex: Int, count: Int = 1): Int? |
Finds the end offset of the previous word in camel case or snake case text. |
The offset of the previous word end, or null if not found. |
EditorScope
The EditorScope
class provides access to read and write operations on the editor. It serves as a bridge between the read-only and transaction-based operations.
Methods
Method |
Description |
Return Value |
read<T>(block: suspend Read.() -> T): Deferred<T> |
Executes a block of code in the context of read operations. This allows for reading the editor state without modifying it. |
A Deferred result of the block execution. |
change(block: suspend Transaction.() -> Unit): Job |
Executes a block of code in the context of transaction operations. This allows for modifying the editor state. |
A Job representing the asynchronous operation. |
ReadScope
The ReadScope
interface provides read-only access to the editor content and state. It includes methods for navigating text, working with carets, and querying editor information.
Properties
Property |
Type |
Description |
textLength |
Long |
The total length of the text in the editor. |
text |
CharSequence |
The entire text content of the editor. |
lineCount |
Int |
The number of lines in the editor. |
filePath |
Path |
File path of the editor. |
caretData |
List<CaretData> |
Information about all carets in the editor. |
caretIds |
List<CaretId> |
The IDs of all carets in the editor. |
globalMarks |
Set<Mark> |
All global marks defined in the editor. |
jumps |
List<Jump> |
All jumps in the jump list. |
currentJumpIndex |
Int |
Index of the current position in the jump list. |
Methods
Caret Operations
Method |
Description |
Return Value |
forEachCaret<T>(block: suspend CaretRead.() -> T): List<T> |
Executes a block of code for each caret in the editor. |
A list of results from each caret. |
with<T>(caretId: CaretId, block: suspend CaretRead.() -> T): T |
Executes a block of code with a specific caret. |
Result from caret. |
withPrimaryCaret<T>(block: suspend CaretRead.() -> T): T |
Executes a block of code with the primary caret. |
Result from caret. |
Line Operations
Method |
Description |
Return Value |
getLineStartOffset(line: Int): Int |
Gets the offset of the start of a line. |
The offset of the line start. |
getLineEndOffset(line: Int, allowEnd: Boolean): Int |
Gets the offset of the end of a line. |
The offset of the line end. |
getLine(offset: Int): Line |
Gets the line at the specified offset. |
The Line object. |
Mark and Jump Operations
Method |
Description |
Return Value |
getGlobalMark(char: Char): Mark? |
Gets a global mark by its character key. |
The mark, or null if the mark doesn't exist. |
getJump(count: Int = 0): Jump? |
Gets a jump from the jump list. |
The jump, or null if there is no jump at the specified position. |
Scrolling Operations
Method |
Description |
Return Value |
scrollCaretIntoView() |
Scrolls the caret into view. |
None |
scrollVertically(lines: Int): Boolean |
Scrolls the editor by a specified number of lines. |
True if the scroll was successful, false otherwise. |
scrollLineToTop(line: Int, start: Boolean): Boolean |
Scrolls the current line to the top of the display. |
True if the scroll was successful, false otherwise. |
scrollLineToMiddle(line: Int, start: Boolean): Boolean |
Scrolls the current line to the middle of the display. |
True if the scroll was successful, false otherwise. |
scrollLineToBottom(line: Int, start: Boolean): Boolean |
Scrolls the current line to the bottom of the display. |
True if the scroll was successful, false otherwise. |
scrollHorizontally(columns: Int): Boolean |
Scrolls the editor horizontally by a specified number of columns. |
True if the scroll was successful, false otherwise. |
scrollCaretToLeftEdge(): Boolean |
Scrolls the editor to position the caret column at the left edge of the display. |
True if the scroll was successful, false otherwise. |
scrollCaretToRightEdge(): Boolean |
Scrolls the editor to position the caret column at the right edge of the display. |
True if the scroll was successful, false otherwise. |
Text Navigation
Method |
Description |
Return Value |
getNextParagraphBoundOffset(startLine: Int, count: Int = 1, includeWhitespaceLines: Boolean = true): Int? |
Find the next paragraph-bound offset in the editor. |
The offset of the next paragraph bound, or null if not found. |
getNextSentenceStart(startOffset: Int, count: Int = 1, includeCurrent: Boolean, requireAll: Boolean = true): Int? |
Finds the next sentence start in the editor from the given offset. |
The offset of the next sentence start, or null if not found. |
getNextSectionStart(startLine: Int, marker: Char, count: Int = 1): Int |
Find the next section in the editor. |
The offset of the next section. |
getPreviousSectionStart(startLine: Int, marker: Char, count: Int = 1): Int |
Find the start of the previous section in the editor. |
The offset of the previous section. |
getNextSentenceEnd(startOffset: Int, count: Int = 1, includeCurrent: Boolean, requireAll: Boolean = true): Int? |
Find the next sentence end from the given offset. |
The offset of the next sentence end, or null if not found. |
getNextWordStartOffset(startOffset: Int, count: Int = 1, isBigWord: Boolean): Int? |
Find the next word in the editor's document, from the given starting point. |
The offset of the next word, or null if not found. |
getNextWordEndOffset(startOffset: Int, count: Int = 1, isBigWord: Boolean, stopOnEmptyLine: Boolean = true): Int |
Find the end offset of the next word in the editor's document. |
The offset of the next word end. |
getNextCharOnLineOffset(startOffset: Int, count: Int = 1, char: Char): Int |
Find the next character on the current line. |
The offset of the next character, or -1 if not found. |
getNearestWordOffset(startOffset: Int): Range? |
Find the word at or nearest to the given offset. |
The range of the word, or null if not found. |
getParagraphRange(line: Int, count: Int = 1, isOuter: Boolean): Range? |
Returns range of a paragraph containing the given line. |
The paragraph text range, or null if not found. |
getBlockQuoteInLineRange(startOffset: Int, quote: Char, isOuter: Boolean): Range? |
Find a block quote in the current line. |
The range of the block quote, or null if not found. |
Pattern Matching
Method |
Description |
Return Value |
findAll(pattern: String, startLine: Int, endLine: Int, ignoreCase: Boolean = false): List<Range> |
Finds all occurrences of the given pattern within a specified line range. |
A list of Ranges representing all matches found. |
findPattern(pattern: String, startOffset: Int, count: Int = 1, backwards: Boolean = false): Range? |
Finds text matching the given Vim-style regular expression pattern. |
A Range representing the matched text, or null if no match is found. |
Transaction
The Transaction
interface provides methods for modifying the editor content and state. It includes operations for working with carets, highlights, marks, and jumps.
Methods
Caret Operations
Method |
Description |
Return Value |
forEachCaret<T>(block: suspend CaretTransaction.() -> T): List<T> |
Executes a block of code for each caret in the editor. |
A list of results from each caret. |
with<T>(caretId: CaretId, block: suspend CaretTransaction.() -> T): T |
Executes a block of code with a specific caret. |
Result from caret. |
withPrimaryCaret<T>(block: suspend CaretTransaction.() -> T): T |
Executes a block of code with the primary caret. |
Result from caret. |
addCaret(offset: Int): CaretId |
Adds a new caret at the specified offset. |
The ID of the newly created caret. |
removeCaret(caretId: CaretId) |
Removes a caret with the specified ID. |
None |
Highlighting
Method |
Description |
Return Value |
addHighlight(startOffset: Int, endOffset: Int, backgroundColor: Color?, foregroundColor: Color?): HighlightId |
Adds a highlight to the editor. |
The ID of the newly created highlight. |
removeHighlight(highlightId: HighlightId) |
Removes a highlight with the specified ID. |
None |
Mark Operations
Method |
Description |
Return Value |
setMark(char: Char): Boolean |
Sets a mark at the current position for each caret in the editor. |
True if the mark was successfully set, false otherwise. |
removeMark(char: Char) |
Removes a mark for all carets in the editor. |
None |
setGlobalMark(char: Char): Boolean |
Sets a global mark at the current position. |
True if the mark was successfully set, false otherwise. |
removeGlobalMark(char: Char) |
Removes a global mark. |
None |
setGlobalMark(char: Char, offset: Int): Boolean |
Sets a global mark at the specified offset. |
True if the mark was successfully set, false otherwise. |
resetAllMarks() |
Resets all marks. |
None |
Jump List Operations
Method |
Description |
Return Value |
addJump(jump: Jump, reset: Boolean) |
Adds a specific jump to the jump list. |
None |
removeJump(jump: Jump) |
Removes a jump from the jump list. |
None |
dropLastJump() |
Removes the last jump from the jump list. |
None |
clearJumps() |
Clears all jumps from the jump list. |
None |
CaretRead
The CaretRead
interface provides read-only access to a caret in the editor. It includes methods for working with registers, marks, scrolling, and text navigation.
Properties
Property |
Type |
Description |
caretId |
CaretId |
The unique identifier for this caret. |
offset |
Int |
The current offset (position) of the caret in the document. |
selection |
Range |
The current selection range of the caret. |
line |
Line |
Information about the current line where the caret is positioned. |
lastSelectedReg |
Char |
The last register that was selected for operations. Example: After using "ay to yank into register 'a', this would return 'a'. In VimScript, variable v:register contains this value. |
defaultRegister |
Char |
The default register used when no register is explicitly specified. In Vim, this is typically the unnamed register ("). |
isRegisterSpecifiedExplicitly |
Boolean |
Indicates whether the current register was explicitly specified by the user. Example: After "ay , this would be true; after just y , this would be false. |
selectionMarks |
Range? |
The marks for the current visual selection. In Vim, these are the '< and '> marks. |
changeMarks |
Range? |
The marks for the last change. In Vim, these are the '[ and '] marks. |
localMarks |
Set<Mark> |
All local marks for the current caret. |
Methods
Register Operations
Method |
Description |
Return Value |
selectRegister(register: Char): Boolean |
Selects a register for subsequent operations. Example: In Vim, pressing "a before an operation selects register 'a'. |
True if the register was successfully selected, false otherwise. |
resetRegisters() |
Resets all registers to their default state. |
None |
isWritable(register: Char): Boolean |
Checks if a register is writable. Some registers in Vim are read-only. |
True if the register is writable, false otherwise. |
isSystemClipboard(register: Char): Boolean |
Checks if a register is connected to the system clipboard. In Vim, registers '+' and '*' are connected to the system clipboard. |
True if the register is connected to the system clipboard, false otherwise. |
isPrimaryRegisterSupported(): Boolean |
Checks if the primary selection register is supported. Example: On Linux, using "*y yanks text to the primary selection. |
True if the primary selection register is supported, false otherwise. |
getReg(register: Char): String? |
Gets the text content of a register. |
The text content of the register, or null if the register is empty or doesn't exist. |
getRegType(register: Char): TextType? |
Gets the type of text stored in a register (character-wise, line-wise, or block-wise). |
The type of text in the register, or null if the register is empty or doesn't exist. |
setReg(register: Char, text: String, textType: TextType = TextType.CHARACTER_WISE): Boolean |
Sets the text content and type of a register. |
True if the register was successfully set, false otherwise. |
Mark Operations
Method |
Description |
Return Value |
getMark(char: Char): Mark? |
Gets a mark by its character key for the current caret. |
The mark, or null if the mark doesn't exist. |
setMark(char: Char): Boolean |
Sets a mark at the current caret position. |
True if the mark was successfully set, false otherwise. |
setMark(char: Char, offset: Int): Boolean |
Sets a mark at the specified offset. |
True if the mark was successfully set, false otherwise. |
removeLocalMark(char: Char) |
Removes a local mark for the current caret. |
None |
resetAllMarksForCaret() |
Resets all marks for the current caret. |
None |
Scrolling Operations
Method |
Description |
Return Value |
scrollFullPage(pages: Int): Boolean |
Scrolls a full page up or down. Positive values scroll down, negative values scroll up. |
True if the scroll was successful, false otherwise. |
scrollHalfPageUp(lines: Int): Boolean |
Scrolls half a page up. |
True if the scroll was successful, false otherwise. |
scrollHalfPageDown(lines: Int): Boolean |
Scrolls half a page down. |
True if the scroll was successful, false otherwise. |
selectWindowHorizontally(relativePosition: Int) |
Selects a window in the same row as the current window. Positive values select windows to the right, negative values select windows to the left. |
None |
selectWindowInVertically(relativePosition: Int) |
Selects a window in the same column as the current window. Positive values select the windows below, negative values select the windows above. |
None |
Text Navigation
Method |
Description |
Return Value |
getNextParagraphBoundOffset(count: Int = 1, includeWhitespaceLines: Boolean = true): Int? |
Finds the offset of the next paragraph boundary. |
The offset of the next paragraph bound, or null if not found. |
getNextSentenceStart(count: Int = 1, includeCurrent: Boolean, requireAll: Boolean = true): Int? |
Finds the next sentence start in the editor from the given offset. |
The offset of the next sentence start, or null if not found. |
getNextSectionStart(marker: Char, count: Int = 1): Int |
Find the next section in the editor. |
The offset of the next section. |
getPreviousSectionStart(marker: Char, count: Int = 1): Int |
Find the start of the previous section in the editor. |
The offset of the previous section. |
getNextSentenceEnd(count: Int = 1, includeCurrent: Boolean, requireAll: Boolean = true): Int? |
Finds the end offset of the next sentence from the current caret position. |
The offset of the next sentence end, or null if not found. |
getMethodEndOffset(count: Int = 1): Int |
Finds the end offset of the next method from the current caret position. |
The offset of the end of the next method. |
getMethodStartOffset(count: Int = 1): Int |
Finds the start offset of the next method from the current caret position. |
The offset of the start of the next method. |
getNextCharOnLineOffset(count: Int = 1, char: Char): Int |
Finds the next occurrence of a specific character on the current line. |
The offset of the found character, or -1 if not found. |
getNearestWordOffset(): Range? |
Finds the word at or nearest to the current caret position. |
A Range representing the found word, or null if no word is found. |
getWordTextObjectRange(count: Int = 1, isOuter: Boolean, isBigWord: Boolean): Range |
Find the range of the word text object at the location of the caret. |
The range of the word text object. |
getSentenceRange(count: Int = 1, isOuter: Boolean): Range |
Find the range of the sentence text object at the location of the caret. |
The range of the sentence text object. |
getParagraphRange(count: Int = 1, isOuter: Boolean): Range? |
Returns range of a paragraph containing the caret. |
The paragraph text range, or null if not found. |
getBlockTagRange(count: Int = 1, isOuter: Boolean): Range? |
Find the range of a block tag at the location of the caret. |
The range of the block tag, or null if not found. |
getBlockQuoteInLineRange(quote: Char, isOuter: Boolean): Range? |
Find a block quote in the current line at the location of the caret. |
The range of the block quote, or null if not found. |
getNextMisspelledWordOffset(count: Int = 1): Int |
Finds the offset of the next misspelled word from the current caret position. |
The offset of the next misspelled word. |
CaretTransaction
The CaretTransaction
interface extends CaretRead
and provides methods for modifying the caret and text in the editor. It includes operations for updating the caret position, inserting text, replacing text, and deleting text.
Methods
Caret Operations
Method |
Description |
Return Value |
updateCaret(offset: Int, selection: Range.Simple? = null) |
Updates the caret position and optionally sets a selection. If a selection is provided, the caret will have this selection after moving to the new offset. If no selection is provided, any existing selection will be removed. |
None |
Text Operations
Method |
Description |
Return Value |
insertText(position: Int, text: String, caretAtEnd: Boolean = true, insertBeforeCaret: Boolean = false): Boolean |
Inserts text at the specified position in the document. |
True if the insertion was successful, false otherwise. |
replaceText(startOffset: Int, endOffset: Int, text: String): Boolean |
Replaces text between the specified offsets with new text. |
True if the replacement was successful, false otherwise. |
replaceTextBlockwise(range: Range.Block, text: List<String>) |
Replaces text in multiple ranges (blocks) with new text. |
None |
deleteText(startOffset: Int, endOffset: Int): Boolean |
Deletes text between the specified offsets. |
True if the deletion was successful, false otherwise. |
Jump Operations
Method |
Description |
Return Value |
addJump(reset: Boolean) |
Adds a jump with the current caret's position to the jump list. |
None |
saveJumpLocation() |
Saves the location of the current caret to the jump list and sets the ' mark. |
None |
OptionScope
The OptionScope
interface provides comprehensive methods for managing Vim options. It supports different scopes for options (global, local, and effective) and allows for type-safe access to option values. The option
function returns a value, making it easy to retrieve option values directly.
Core Methods
Method |
Description |
Return Value |
get<T>(name: String): T |
Gets the value of an option with the specified type. In Vim, options can be accessed with the & prefix. Example: &ignorecase returns the value of the 'ignorecase' option. |
The value of the option. Throws IllegalArgumentException if the option doesn't exist or type is wrong. |
set<T>(name: String, value: T) |
Sets the effective value of an option with the specified type. In Vim, this is equivalent to :set option=value . Example: :set ignorecase or let &ignorecase = 1 |
None |
setGlobal<T>(name: String, value: T) |
Sets the global value of an option with the specified type. In Vim, this is equivalent to :setglobal option=value . Example: :setglobal ignorecase or let &g:ignorecase = 1 |
None |
setLocal<T>(name: String, value: T) |
Sets the local value of an option with the specified type. In Vim, this is equivalent to :setlocal option=value . Example: :setlocal ignorecase or let &l:ignorecase = 1 |
None |
reset(name: String) |
Resets an option to its default value. In Vim, this is equivalent to :set option& . Example: :set ignorecase& resets the 'ignorecase' option to its default value. |
None |
List Option Methods
These extension functions provide convenient ways to manipulate comma-separated list options (like virtualedit
, whichwrap
, etc.):
Method |
Description |
Vim Equivalent |
append(name: String, vararg values: String) |
Appends values to a list option. Duplicates are not added. |
:set option+=value |
prepend(name: String, vararg values: String) |
Prepends values to a list option. Duplicates are not added. |
:set option^=value |
remove(name: String, vararg values: String) |
Removes values from a list option. |
:set option-=value |
Utility Methods
Method |
Description |
Return Value |
toggle(name: String) |
Toggles a boolean option value. |
None |
String.split(): List<String> |
Extension function to split a comma-separated option value into a list. |
List of strings |
Usage Examples
OutputPanelScope
The OutputPanelScope
interface provides methods for interacting with the Vim output panel. The output panel is used to display text output from Vim commands and operations.
Properties
Property |
Type |
Description |
text |
String |
The text displayed in the output panel. |
label |
String |
The label text displayed at the bottom of the output panel. This is used for status information like "-- MORE --" to indicate that there is more content to scroll through. |
Methods
Method |
Description |
Return Value |
setText(text: String) |
Sets the text content of the output panel. This replaces any existing text in the panel with the provided text. |
None |
appendText(text: String, startNewLine: Boolean = false) |
Appends text to the existing content of the output panel. If startNewLine is true and there is existing text, a newline character will be inserted before the appended text. |
None |
setLabel(label: String) |
Sets the label text at the bottom of the output panel. |
None |
clearText() |
Clears all text from the output panel. |
None |
ModalInput
The ModalInput
interface provides methods for creating and managing modal input dialogs, which can be used to get user input in a Vim-like way.
Methods
Method |
Description |
Return Value |
updateLabel(block: (String) -> String): ModalInput |
Updates the label of the modal input dialog using the provided function. |
The ModalInput instance for method chaining. |
repeatWhile(condition: () -> Boolean): ModalInput |
Repeats the modal input dialog while the provided condition is true. |
The ModalInput instance for method chaining. |
repeat(count: Int): ModalInput |
Repeats the modal input dialog the specified number of times. |
The ModalInput instance for method chaining. |
inputString(label: String, handler: VimApi.(String) -> Unit) |
Creates a modal input dialog with the given label and handler. The handler will be executed after the user presses ENTER. |
None |
inputChar(label: String, handler: VimApi.(Char) -> Unit) |
Creates a modal input dialog with the given label and handler. The handler will be executed after the user enters a character. |
None |
closeCurrentInput(refocusEditor: Boolean = true): Boolean |
Closes the current modal input dialog, if any. If refocusEditor is true, the editor will be refocused after closing the dialog. |
True if a dialog was closed, false otherwise. |
ListenerScope
The ListenerScope
interface provides methods for registering callbacks for various events in the Vim editor, such as mode changes, yanking text, editor lifecycle events, and more.
Methods
Mode and Action Listeners
Method |
Description |
Return Value |
onModeChange(callback: suspend VimApi.(Mode) -> Unit) |
Registers a callback that is invoked when the editor mode changes (e.g., from Normal to Insert). |
None |
onYank(callback: suspend VimApi.(Map<CaretId, Range.Simple>) -> Unit) |
Registers a callback that is invoked when text is yanked. The callback receives a map of caret IDs to yanked text ranges. |
None |
Editor Lifecycle Listeners
Method |
Description |
Return Value |
onEditorCreate(callback: suspend VimApi.() -> Unit) |
Registers a callback that is invoked when a new editor is created. |
None |
onEditorRelease(callback: suspend VimApi.() -> Unit) |
Registers a callback that is invoked when an editor is released (closed). |
None |
onEditorFocusGain(callback: suspend VimApi.() -> Unit) |
Registers a callback that is invoked when an editor gains focus. |
None |
onEditorFocusLost(callback: suspend VimApi.() -> Unit) |
Registers a callback that is invoked when an editor loses focus. |
None |
Macro Recording Listeners
Method |
Description |
Return Value |
onMacroRecordingStart(callback: suspend VimApi.() -> Unit) |
Registers a callback that is invoked when macro recording starts. |
None |
onMacroRecordingFinish(callback: suspend VimApi.() -> Unit) |
Registers a callback that is invoked when macro recording finishes. |
None |
Plugin State Listeners
Method |
Description |
Return Value |
onIdeaVimEnabled(callback: suspend VimApi.() -> Unit) |
Registers a callback that is invoked when IdeaVim is enabled. |
None |
onIdeaVimDisabled(callback: suspend VimApi.() -> Unit) |
Registers a callback that is invoked when IdeaVim is disabled. |
None |
DigraphScope
The DigraphScope
interface provides access to Vim's digraph functionality. Digraphs are special character combinations that produce a single character, often used for entering non-ASCII characters.
Methods
Method |
Description |
Return Value |
getCharacter(ch1: Char, ch2: Char): Int |
Gets the character for a digraph. |
The Unicode codepoint of the character represented by the digraph, or the codepoint of ch2 if no digraph is found. |
addDigraph(ch1: Char, ch2: Char, codepoint: Int) |
Adds a custom digraph. |
None |
clearCustomDigraphs() |
Clears all custom digraphs. |
None |
CommandLineScope
The CommandLineScope
class provides methods for interacting with the Vim command line. The command line is used for entering Ex commands, search patterns, and other input.
Methods
Method |
Description |
Return Value |
input(prompt: String, finishOn: Char? = null, callback: VimApi.(String) -> Unit) |
Reads input from the command line and processes it with the provided function. |
None |
read<T>(block: suspend CommandLineRead.() -> T): Deferred<T> |
Executes a block of code in the context of read operations on the command line. This allows for reading the command line state without modifying it. |
A Deferred result of the block execution. |
change(block: suspend CommandLineTransaction.() -> Unit): Job |
Executes a block of code in the context of transaction operations on the command line. This allows for modifying the command line state. |
A Job representing the asynchronous operation. |
CommandLineRead
The CommandLineRead
interface provides read-only access to the command line state. It includes properties for accessing the current text, caret position, and active state of the command line.
Properties
Property |
Type |
Description |
text |
String |
The text currently displayed in the command line. |
caretPosition |
Int |
The current position of the caret in the command line. |
isActive |
Boolean |
True if the command line is currently active, false otherwise. |
CommandLineTransaction
The CommandLineTransaction
interface provides methods for modifying the command line state. It includes operations for setting text, inserting text, setting the caret position, and closing the command line.
Methods
Method |
Description |
Return Value |
setText(text: String) |
Sets the text content of the command line. This replaces any existing text in the command line with the provided text. |
None |
insertText(offset: Int, text: String) |
Inserts text at the specified position in the command line. |
None |
setCaretPosition(position: Int) |
Sets the caret position in the command line. |
None |
close(refocusEditor: Boolean = true): Boolean |
Closes the command line. If refocusEditor is true, the editor will be refocused after closing the command line. |
True if the command line was closed, false if it was not active. |