@@ -36,6 +36,11 @@ export interface VisibleEvent {
3636 region : [ number , number ]
3737}
3838
39+ export interface ModeChangedEvent {
40+ readonly old_mode : string
41+ readonly new_mode : string
42+ }
43+
3944export interface InsertChange {
4045 readonly lnum : number
4146 readonly col : number
@@ -67,7 +72,8 @@ export enum EventName {
6772 BufWinEnter = 'BufWinEnter' ,
6873 WinScrolled = 'WinScrolled' ,
6974 WinClosed = 'WinClosed' ,
70- BufWinLeave = 'BufWinLeave'
75+ BufWinLeave = 'BufWinLeave' ,
76+ ModeChanged = 'ModeChanged'
7177}
7278
7379export type BufEvents = 'BufHidden' | 'BufEnter' | 'BufRename'
@@ -85,7 +91,7 @@ export type WindowEvents = 'WinLeave' | 'WinEnter' | 'WinClosed'
8591export type TabEvents = 'TabNew' | 'TabClosed'
8692
8793export type AllEvents = BufEvents | EmptyEvents | CursorEvents | TaskEvents | WindowEvents | TabEvents
88- | InsertChangeEvents | 'CompleteDone' | 'TextChanged' | 'MenuPopupChanged' | 'BufWritePost' | 'BufWritePre'
94+ | InsertChangeEvents | 'CompleteDone' | 'TextChanged' | 'MenuPopupChanged' | 'BufWritePost' | 'BufWritePre' | 'ModeChanged'
8995 | 'InsertCharPre' | 'FileType' | 'BufWinEnter' | 'BufWinLeave' | 'VimResized' | 'TermExit' | 'WinScrolled' | 'CompleteStart'
9096 | 'DirChanged' | 'OptionSet' | 'Command' | 'BufReadCmd' | 'GlobalChange' | 'InputChar' | 'PlaceholderJump' | 'InputListSelect'
9197 | 'WinLeave' | 'MenuInput' | 'PromptInsert' | 'FloatBtnClick' | 'InsertSnippet' | 'TextInsert' | 'PromptKeyPress' | 'WindowVisible'
@@ -124,6 +130,7 @@ class Events {
124130 private _completing = false
125131 private _requesting = false
126132 private _ready = false
133+ private _mode : string | undefined
127134 public timeout = 1000
128135 // public completing = false
129136
@@ -139,6 +146,10 @@ class Events {
139146 return this . _ready
140147 }
141148
149+ public get mode ( ) : string {
150+ return this . _mode
151+ }
152+
142153 private fireVisibleEvent ( ev : VisibleEvent ) : void {
143154 let { winid } = ev
144155 let timer = this . timeoutMap . get ( winid )
@@ -286,6 +297,8 @@ class Events {
286297 this . clearVisibleTimer ( args [ 0 ] )
287298 } else if ( event == EventName . BufWinLeave ) {
288299 this . clearVisibleTimer ( args [ 1 ] )
300+ } else if ( event == EventName . ModeChanged ) {
301+ this . _mode = args [ 0 ] . new_mode
289302 }
290303 if ( event == EventName . CursorMoved || event == EventName . CursorMovedI ) {
291304 args . push ( this . _recentInserts . length > 0 )
@@ -355,6 +368,7 @@ class Events {
355368 public on ( event : 'PromptInsert' , handler : ( value : string , bufnr : number ) => Result , thisArg ?: any , disposables ?: Disposable [ ] ) : Disposable
356369 public on ( event : 'PlaceholderJump' , handler : ( bufnr : number , info : JumpInfo ) => Result , thisArg ?: any , disposables ?: Disposable [ ] ) : Disposable
357370 public on ( event : 'InputListSelect' , handler : ( index : number ) => Result , thisArg ?: any , disposables ?: Disposable [ ] ) : Disposable
371+ public on ( event : 'ModeChanged' , handler : ( event : ModeChangedEvent ) => Result , thisArg ?: any , disposables ?: Disposable [ ] ) : Disposable
358372 public on ( event : EmptyEvents , handler : ( ) => Result , thisArg ?: any , disposables ?: Disposable [ ] ) : Disposable
359373 public on ( event : AllEvents | AllEvents [ ] , handler : ( ...args : unknown [ ] ) => Result , thisArg ?: any , disposables ?: Disposable [ ] | true ) : Disposable
360374 public on ( event : AllEvents [ ] | AllEvents , handler : ( ...args : any [ ] ) => Result , thisArg ?: any , disposables ?: Disposable [ ] | true ) : Disposable {
0 commit comments