| import * as _codemirror_state from '@codemirror/state'; | |
| import { Text, Extension, StateCommand, EditorState, SelectionRange, StateEffect } from '@codemirror/state'; | |
| import { Command, KeyBinding, EditorView, Panel } from '@codemirror/view'; | |
| /** | |
| A search cursor provides an iterator over text matches in a | |
| document. | |
| */ | |
| declare class SearchCursor implements Iterator<{ | |
| from: number; | |
| to: number; | |
| }> { | |
| private test?; | |
| private iter; | |
| /** | |
| The current match (only holds a meaningful value after | |
| [`next`](https://codemirror.net/6/docs/ref/#search.SearchCursor.next) has been called and when | |
| `done` is false). | |
| */ | |
| value: { | |
| from: number; | |
| to: number; | |
| }; | |
| /** | |
| Whether the end of the iterated region has been reached. | |
| */ | |
| done: boolean; | |
| private matches; | |
| private buffer; | |
| private bufferPos; | |
| private bufferStart; | |
| private normalize; | |
| private query; | |
| /** | |
| Create a text cursor. The query is the search string, `from` to | |
| `to` provides the region to search. | |
| When `normalize` is given, it will be called, on both the query | |
| string and the content it is matched against, before comparing. | |
| You can, for example, create a case-insensitive search by | |
| passing `s => s.toLowerCase()`. | |
| Text is always normalized with | |
| [`.normalize("NFKD")`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize) | |
| (when supported). | |
| */ | |
| constructor(text: Text, query: string, from?: number, to?: number, normalize?: (string: string) => string, test?: ((from: number, to: number, buffer: string, bufferPos: number) => boolean) | undefined); | |
| private peek; | |
| /** | |
| Look for the next match. Updates the iterator's | |
| [`value`](https://codemirror.net/6/docs/ref/#search.SearchCursor.value) and | |
| [`done`](https://codemirror.net/6/docs/ref/#search.SearchCursor.done) properties. Should be called | |
| at least once before using the cursor. | |
| */ | |
| next(): this; | |
| /** | |
| The `next` method will ignore matches that partially overlap a | |
| previous match. This method behaves like `next`, but includes | |
| such matches. | |
| */ | |
| nextOverlapping(): this; | |
| private match; | |
| [Symbol.iterator]: () => Iterator<{ | |
| from: number; | |
| to: number; | |
| }>; | |
| } | |
| interface RegExpCursorOptions { | |
| ignoreCase?: boolean; | |
| test?: (from: number, to: number, match: RegExpExecArray) => boolean; | |
| } | |
| /** | |
| This class is similar to [`SearchCursor`](https://codemirror.net/6/docs/ref/#search.SearchCursor) | |
| but searches for a regular expression pattern instead of a plain | |
| string. | |
| */ | |
| declare class RegExpCursor implements Iterator<{ | |
| from: number; | |
| to: number; | |
| match: RegExpExecArray; | |
| }> { | |
| private text; | |
| private to; | |
| private iter; | |
| private re; | |
| private test?; | |
| private curLine; | |
| private curLineStart; | |
| private matchPos; | |
| /** | |
| Set to `true` when the cursor has reached the end of the search | |
| range. | |
| */ | |
| done: boolean; | |
| /** | |
| Will contain an object with the extent of the match and the | |
| match object when [`next`](https://codemirror.net/6/docs/ref/#search.RegExpCursor.next) | |
| sucessfully finds a match. | |
| */ | |
| value: { | |
| from: number; | |
| to: number; | |
| match: RegExpExecArray; | |
| }; | |
| /** | |
| Create a cursor that will search the given range in the given | |
| document. `query` should be the raw pattern (as you'd pass it to | |
| `new RegExp`). | |
| */ | |
| constructor(text: Text, query: string, options?: RegExpCursorOptions, from?: number, to?: number); | |
| private getLine; | |
| private nextLine; | |
| /** | |
| Move to the next match, if there is one. | |
| */ | |
| next(): this; | |
| [Symbol.iterator]: () => Iterator<{ | |
| from: number; | |
| to: number; | |
| match: RegExpExecArray; | |
| }>; | |
| } | |
| /** | |
| Command that shows a dialog asking the user for a line number, and | |
| when a valid position is provided, moves the cursor to that line. | |
| Supports line numbers, relative line offsets prefixed with `+` or | |
| `-`, document percentages suffixed with `%`, and an optional | |
| column position by adding `:` and a second number after the line | |
| number. | |
| */ | |
| declare const gotoLine: Command; | |
| type HighlightOptions = { | |
| /** | |
| Determines whether, when nothing is selected, the word around | |
| the cursor is matched instead. Defaults to false. | |
| */ | |
| highlightWordAroundCursor?: boolean; | |
| /** | |
| The minimum length of the selection before it is highlighted. | |
| Defaults to 1 (always highlight non-cursor selections). | |
| */ | |
| minSelectionLength?: number; | |
| /** | |
| The amount of matches (in the viewport) at which to disable | |
| highlighting. Defaults to 100. | |
| */ | |
| maxMatches?: number; | |
| /** | |
| Whether to only highlight whole words. | |
| */ | |
| wholeWords?: boolean; | |
| }; | |
| /** | |
| This extension highlights text that matches the selection. It uses | |
| the `"cm-selectionMatch"` class for the highlighting. When | |
| `highlightWordAroundCursor` is enabled, the word at the cursor | |
| itself will be highlighted with `"cm-selectionMatch-main"`. | |
| */ | |
| declare function highlightSelectionMatches(options?: HighlightOptions): Extension; | |
| /** | |
| Select next occurrence of the current selection. Expand selection | |
| to the surrounding word when the selection is empty. | |
| */ | |
| declare const selectNextOccurrence: StateCommand; | |
| interface SearchConfig { | |
| /** | |
| Whether to position the search panel at the top of the editor | |
| (the default is at the bottom). | |
| */ | |
| top?: boolean; | |
| /** | |
| Whether to enable case sensitivity by default when the search | |
| panel is activated (defaults to false). | |
| */ | |
| caseSensitive?: boolean; | |
| /** | |
| Whether to treat string searches literally by default (defaults to false). | |
| */ | |
| literal?: boolean; | |
| /** | |
| Controls whether the default query has by-word matching enabled. | |
| Defaults to false. | |
| */ | |
| wholeWord?: boolean; | |
| /** | |
| Used to turn on regular expression search in the default query. | |
| Defaults to false. | |
| */ | |
| regexp?: boolean; | |
| /** | |
| Can be used to override the way the search panel is implemented. | |
| Should create a [Panel](https://codemirror.net/6/docs/ref/#view.Panel) that contains a form | |
| which lets the user: | |
| - See the [current](https://codemirror.net/6/docs/ref/#search.getSearchQuery) search query. | |
| - Manipulate the [query](https://codemirror.net/6/docs/ref/#search.SearchQuery) and | |
| [update](https://codemirror.net/6/docs/ref/#search.setSearchQuery) the search state with a new | |
| query. | |
| - Notice external changes to the query by reacting to the | |
| appropriate [state effect](https://codemirror.net/6/docs/ref/#search.setSearchQuery). | |
| - Run some of the search commands. | |
| The field that should be focused when opening the panel must be | |
| tagged with a `main-field=true` DOM attribute. | |
| */ | |
| createPanel?: (view: EditorView) => Panel; | |
| /** | |
| By default, matches are scrolled into view using the default | |
| behavior of | |
| [`EditorView.scrollIntoView`](https://codemirror.net/6/docs/ref/#view.EditorView^scrollIntoView). | |
| This option allows you to pass a custom function to produce the | |
| scroll effect. | |
| */ | |
| scrollToMatch?: (range: SelectionRange, view: EditorView) => StateEffect<unknown>; | |
| } | |
| /** | |
| Add search state to the editor configuration, and optionally | |
| configure the search extension. | |
| ([`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) will automatically | |
| enable this if it isn't already on). | |
| */ | |
| declare function search(config?: SearchConfig): Extension; | |
| /** | |
| A search query. Part of the editor's search state. | |
| */ | |
| declare class SearchQuery { | |
| /** | |
| The search string (or regular expression). | |
| */ | |
| readonly search: string; | |
| /** | |
| Indicates whether the search is case-sensitive. | |
| */ | |
| readonly caseSensitive: boolean; | |
| /** | |
| By default, string search will replace `\n`, `\r`, and `\t` in | |
| the query with newline, return, and tab characters. When this | |
| is set to true, that behavior is disabled. | |
| */ | |
| readonly literal: boolean; | |
| /** | |
| When true, the search string is interpreted as a regular | |
| expression. | |
| */ | |
| readonly regexp: boolean; | |
| /** | |
| The replace text, or the empty string if no replace text has | |
| been given. | |
| */ | |
| readonly replace: string; | |
| /** | |
| Whether this query is non-empty and, in case of a regular | |
| expression search, syntactically valid. | |
| */ | |
| readonly valid: boolean; | |
| /** | |
| When true, matches that contain words are ignored when there are | |
| further word characters around them. | |
| */ | |
| readonly wholeWord: boolean; | |
| /** | |
| Create a query object. | |
| */ | |
| constructor(config: { | |
| /** | |
| The search string. | |
| */ | |
| search: string; | |
| /** | |
| Controls whether the search should be case-sensitive. | |
| */ | |
| caseSensitive?: boolean; | |
| /** | |
| By default, string search will replace `\n`, `\r`, and `\t` in | |
| the query with newline, return, and tab characters. When this | |
| is set to true, that behavior is disabled. | |
| */ | |
| literal?: boolean; | |
| /** | |
| When true, interpret the search string as a regular expression. | |
| */ | |
| regexp?: boolean; | |
| /** | |
| The replace text. | |
| */ | |
| replace?: string; | |
| /** | |
| Enable whole-word matching. | |
| */ | |
| wholeWord?: boolean; | |
| }); | |
| /** | |
| Compare this query to another query. | |
| */ | |
| eq(other: SearchQuery): boolean; | |
| /** | |
| Get a search cursor for this query, searching through the given | |
| range in the given state. | |
| */ | |
| getCursor(state: EditorState | Text, from?: number, to?: number): Iterator<{ | |
| from: number; | |
| to: number; | |
| }>; | |
| } | |
| /** | |
| A state effect that updates the current search query. Note that | |
| this only has an effect if the search state has been initialized | |
| (by including [`search`](https://codemirror.net/6/docs/ref/#search.search) in your configuration or | |
| by running [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) at least | |
| once). | |
| */ | |
| declare const setSearchQuery: _codemirror_state.StateEffectType<SearchQuery>; | |
| /** | |
| Get the current search query from an editor state. | |
| */ | |
| declare function getSearchQuery(state: EditorState): SearchQuery; | |
| /** | |
| Query whether the search panel is open in the given editor state. | |
| */ | |
| declare function searchPanelOpen(state: EditorState): boolean; | |
| /** | |
| Open the search panel if it isn't already open, and move the | |
| selection to the first match after the current main selection. | |
| Will wrap around to the start of the document when it reaches the | |
| end. | |
| */ | |
| declare const findNext: Command; | |
| /** | |
| Move the selection to the previous instance of the search query, | |
| before the current main selection. Will wrap past the start | |
| of the document to start searching at the end again. | |
| */ | |
| declare const findPrevious: Command; | |
| /** | |
| Select all instances of the search query. | |
| */ | |
| declare const selectMatches: Command; | |
| /** | |
| Select all instances of the currently selected text. | |
| */ | |
| declare const selectSelectionMatches: StateCommand; | |
| /** | |
| Replace the current match of the search query. | |
| */ | |
| declare const replaceNext: Command; | |
| /** | |
| Replace all instances of the search query with the given | |
| replacement. | |
| */ | |
| declare const replaceAll: Command; | |
| /** | |
| Make sure the search panel is open and focused. | |
| */ | |
| declare const openSearchPanel: Command; | |
| /** | |
| Close the search panel. | |
| */ | |
| declare const closeSearchPanel: Command; | |
| /** | |
| Default search-related key bindings. | |
| - Mod-f: [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) | |
| - F3, Mod-g: [`findNext`](https://codemirror.net/6/docs/ref/#search.findNext) | |
| - Shift-F3, Shift-Mod-g: [`findPrevious`](https://codemirror.net/6/docs/ref/#search.findPrevious) | |
| - Mod-Alt-g: [`gotoLine`](https://codemirror.net/6/docs/ref/#search.gotoLine) | |
| - Mod-d: [`selectNextOccurrence`](https://codemirror.net/6/docs/ref/#search.selectNextOccurrence) | |
| */ | |
| declare const searchKeymap: readonly KeyBinding[]; | |
| export { RegExpCursor, SearchCursor, SearchQuery, closeSearchPanel, findNext, findPrevious, getSearchQuery, gotoLine, highlightSelectionMatches, openSearchPanel, replaceAll, replaceNext, search, searchKeymap, searchPanelOpen, selectMatches, selectNextOccurrence, selectSelectionMatches, setSearchQuery }; | |