Skip to content

Commit 9c20fb5

Browse files
authored
Merge pull request #2 from SPiCaRiA/dev-custom-prompt-css
Add corresponding CSS class when changing status bar
2 parents 0ab972c + 3776b54 commit 9c20fb5

File tree

1 file changed

+26
-7
lines changed

1 file changed

+26
-7
lines changed

main.ts

+26-7
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ const DEFAULT_SETTINGS: Settings = {
3939
},
4040
}
4141

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+
4249
// NOTE: to future maintainers, please make sure all mapping commands are included in this array.
4350
const mappingCommands: String[] = [
4451
"map",
@@ -66,10 +73,24 @@ export default class VimrcPlugin extends Plugin {
6673
private vimChordStatusBar: HTMLElement = null;
6774
private vimStatusBar: HTMLElement = null;
6875
private currentVimStatus: vimStatus = vimStatus.normal;
76+
private currentVimStatusClassName: string =
77+
vimStatusPromptClassNameMap[vimStatus.normal];
6978
private customVimKeybinds: { [name: string]: boolean } = {};
7079
private currentSelection: [EditorSelection] = null;
7180
private isInsertMode: boolean = false;
7281

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+
7394
async captureKeyboardLayout() {
7495
// This is experimental API and it might break at some point:
7596
// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardLayoutMap
@@ -158,10 +179,7 @@ export default class VimrcPlugin extends Plugin {
158179
this.isInsertMode = false;
159180
this.currentVimStatus = vimStatus.normal;
160181
if (this.settings.displayVimMode)
161-
this.vimStatusBar?.setText(
162-
this.settings.vimStatusPromptMap[this.currentVimStatus]
163-
);
164-
182+
this.updateVimStatusBar();
165183
cmEditor.off('vim-mode-change', this.logVimModeChange);
166184
cmEditor.on('vim-mode-change', this.logVimModeChange);
167185

@@ -230,9 +248,7 @@ export default class VimrcPlugin extends Plugin {
230248
break;
231249
}
232250
if (this.settings.displayVimMode)
233-
this.vimStatusBar?.setText(
234-
this.settings.vimStatusPromptMap[this.currentVimStatus]
235-
);
251+
this.updateVimStatusBar();
236252
}
237253

238254
onunload() {
@@ -601,6 +617,9 @@ export default class VimrcPlugin extends Plugin {
601617
this.vimStatusBar.setText(
602618
this.settings.vimStatusPromptMap[vimStatus.normal]
603619
); // Init the vimStatusBar with normal mode
620+
this.vimStatusBar?.addClass(
621+
vimStatusPromptClassNameMap[vimStatus.normal]
622+
); // Add the initial class name for normal mode
604623
}
605624
}
606625

0 commit comments

Comments
 (0)