@@ -39,6 +39,13 @@ const DEFAULT_SETTINGS: Settings = {
39
39
} ,
40
40
}
41
41
42
+ const vimStatusPromptClassNameMap = {
43
+ normal : 'plugin-obsidian-vimrc-support-prompt-normal' ,
44
+ insert : 'plugin-obsidian-vimrc-support-prompt-insert' ,
45
+ visual : 'plugin-obsidian-vimrc-support-prompt-visual' ,
46
+ replace : 'plugin-obsidian-vimrc-support-prompt-replace' ,
47
+ }
48
+
42
49
// NOTE: to future maintainers, please make sure all mapping commands are included in this array.
43
50
const mappingCommands : String [ ] = [
44
51
"map" ,
@@ -66,10 +73,24 @@ export default class VimrcPlugin extends Plugin {
66
73
private vimChordStatusBar : HTMLElement = null ;
67
74
private vimStatusBar : HTMLElement = null ;
68
75
private currentVimStatus : vimStatus = vimStatus . normal ;
76
+ private currentVimStatusClassName : string =
77
+ vimStatusPromptClassNameMap [ vimStatus . normal ] ;
69
78
private customVimKeybinds : { [ name : string ] : boolean } = { } ;
70
79
private currentSelection : [ EditorSelection ] = null ;
71
80
private isInsertMode : boolean = false ;
72
81
82
+ updateVimStatusBar ( ) {
83
+ this . vimStatusBar ?. setText (
84
+ this . settings . vimStatusPromptMap [ this . currentVimStatus ]
85
+ ) ;
86
+ this . vimStatusBar ?. classList . replace (
87
+ this . currentVimStatusClassName ,
88
+ vimStatusPromptClassNameMap [ this . currentVimStatus ]
89
+ ) ;
90
+ this . currentVimStatusClassName =
91
+ vimStatusPromptClassNameMap [ this . currentVimStatus ] ;
92
+ }
93
+
73
94
async captureKeyboardLayout ( ) {
74
95
// This is experimental API and it might break at some point:
75
96
// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardLayoutMap
@@ -158,10 +179,7 @@ export default class VimrcPlugin extends Plugin {
158
179
this . isInsertMode = false ;
159
180
this . currentVimStatus = vimStatus . normal ;
160
181
if ( this . settings . displayVimMode )
161
- this . vimStatusBar ?. setText (
162
- this . settings . vimStatusPromptMap [ this . currentVimStatus ]
163
- ) ;
164
-
182
+ this . updateVimStatusBar ( ) ;
165
183
cmEditor . off ( 'vim-mode-change' , this . logVimModeChange ) ;
166
184
cmEditor . on ( 'vim-mode-change' , this . logVimModeChange ) ;
167
185
@@ -230,9 +248,7 @@ export default class VimrcPlugin extends Plugin {
230
248
break ;
231
249
}
232
250
if ( this . settings . displayVimMode )
233
- this . vimStatusBar ?. setText (
234
- this . settings . vimStatusPromptMap [ this . currentVimStatus ]
235
- ) ;
251
+ this . updateVimStatusBar ( ) ;
236
252
}
237
253
238
254
onunload ( ) {
@@ -601,6 +617,9 @@ export default class VimrcPlugin extends Plugin {
601
617
this . vimStatusBar . setText (
602
618
this . settings . vimStatusPromptMap [ vimStatus . normal ]
603
619
) ; // Init the vimStatusBar with normal mode
620
+ this . vimStatusBar ?. addClass (
621
+ vimStatusPromptClassNameMap [ vimStatus . normal ]
622
+ ) ; // Add the initial class name for normal mode
604
623
}
605
624
}
606
625
0 commit comments