mirror of
https://github.com/phishingclub/phishingclub.git
synced 2026-07-09 13:58:25 +02:00
fix toggle bug in vim mode
Signed-off-by: Ronni Skansing <rskansing@gmail.com>
This commit is contained in:
@@ -127,10 +127,7 @@
|
||||
}
|
||||
});
|
||||
|
||||
// enable vim mode if preference is enabled
|
||||
if (localVimMode) {
|
||||
initializeVimMode();
|
||||
}
|
||||
// vim mode will be initialized by reactive statement if needed
|
||||
|
||||
editor.getModel().onDidChangeContent((e) => {
|
||||
if (previewRenderDelayID) {
|
||||
@@ -145,10 +142,8 @@
|
||||
|
||||
return () => {
|
||||
document.body.classList.remove('overflow-hidden');
|
||||
if (vimModeInstance && vimModeInstance.dispose) {
|
||||
vimModeInstance.dispose();
|
||||
vimModeInstance = null;
|
||||
}
|
||||
// properly cleanup vim mode first
|
||||
destroyVimMode();
|
||||
if (editor) {
|
||||
editor.dispose();
|
||||
monaco.editor.getModels().forEach((model) => model.dispose());
|
||||
@@ -174,8 +169,12 @@
|
||||
|
||||
const destroyVimMode = () => {
|
||||
if (vimModeInstance) {
|
||||
// use official monaco-vim dispose method
|
||||
vimModeInstance.dispose();
|
||||
try {
|
||||
// use official monaco-vim dispose method
|
||||
vimModeInstance.dispose();
|
||||
} catch (e) {
|
||||
console.warn('Error disposing vim mode:', e);
|
||||
}
|
||||
|
||||
// clear vim status bar
|
||||
if (vimStatusBar) {
|
||||
@@ -193,13 +192,22 @@
|
||||
localVimMode = $vimModeEnabled;
|
||||
}
|
||||
|
||||
// Watch for vim mode changes after initial load
|
||||
// debounce vim mode changes to prevent race conditions
|
||||
let vimModeTimeout = null;
|
||||
|
||||
// Watch for vim mode changes and editor initialization
|
||||
$: if (editor && typeof localVimMode === 'boolean') {
|
||||
if (localVimMode && !vimModeInstance) {
|
||||
initializeVimMode();
|
||||
} else if (!localVimMode && vimModeInstance) {
|
||||
destroyVimMode();
|
||||
if (vimModeTimeout) {
|
||||
clearTimeout(vimModeTimeout);
|
||||
}
|
||||
vimModeTimeout = setTimeout(() => {
|
||||
if (localVimMode && !vimModeInstance) {
|
||||
initializeVimMode();
|
||||
} else if (!localVimMode && vimModeInstance) {
|
||||
destroyVimMode();
|
||||
}
|
||||
vimModeTimeout = null;
|
||||
}, 100);
|
||||
}
|
||||
|
||||
const selectPreviewDomain = () => {
|
||||
|
||||
@@ -94,10 +94,7 @@
|
||||
wordBasedSuggestions: 'off'
|
||||
});
|
||||
|
||||
// enable vim mode if preference is enabled
|
||||
if (localVimMode) {
|
||||
initializeVimMode();
|
||||
}
|
||||
// vim mode will be initialized by reactive statement if needed
|
||||
|
||||
// Update value when editor content changes
|
||||
editor.getModel().onDidChangeContent(() => {
|
||||
@@ -106,10 +103,8 @@
|
||||
|
||||
return () => {
|
||||
cleanup();
|
||||
if (vimModeInstance && vimModeInstance.dispose) {
|
||||
vimModeInstance.dispose();
|
||||
vimModeInstance = null;
|
||||
}
|
||||
// properly cleanup vim mode first
|
||||
destroyVimMode();
|
||||
};
|
||||
});
|
||||
|
||||
@@ -133,8 +128,12 @@
|
||||
|
||||
const destroyVimMode = () => {
|
||||
if (vimModeInstance) {
|
||||
// use official monaco-vim dispose method
|
||||
vimModeInstance.dispose();
|
||||
try {
|
||||
// use official monaco-vim dispose method
|
||||
vimModeInstance.dispose();
|
||||
} catch (e) {
|
||||
console.warn('Error disposing vim mode:', e);
|
||||
}
|
||||
|
||||
// clear vim status bar
|
||||
if (vimStatusBar) {
|
||||
@@ -152,13 +151,22 @@
|
||||
localVimMode = $vimModeEnabled;
|
||||
}
|
||||
|
||||
// debounce vim mode changes to prevent race conditions
|
||||
let vimModeTimeout = null;
|
||||
|
||||
// Watch for vim mode changes
|
||||
$: if (editor && typeof localVimMode === 'boolean') {
|
||||
if (localVimMode && !vimModeInstance) {
|
||||
initializeVimMode();
|
||||
} else if (!localVimMode && vimModeInstance) {
|
||||
destroyVimMode();
|
||||
if (vimModeTimeout) {
|
||||
clearTimeout(vimModeTimeout);
|
||||
}
|
||||
vimModeTimeout = setTimeout(() => {
|
||||
if (localVimMode && !vimModeInstance) {
|
||||
initializeVimMode();
|
||||
} else if (!localVimMode && vimModeInstance) {
|
||||
destroyVimMode();
|
||||
}
|
||||
vimModeTimeout = null;
|
||||
}, 100);
|
||||
}
|
||||
|
||||
let showExample = false;
|
||||
|
||||
Reference in New Issue
Block a user