Skip to content

Commit 84096c4

Browse files
committed
fix(editor): undo/redo stack
1 parent ed94588 commit 84096c4

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

src/renderer/components/editor/TheEditor.vue

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ interface Props {
4242
lang: Language
4343
theme: string
4444
fragments: boolean
45+
fragmentIndex: number
46+
snippetId: string
4547
modelValue: string
48+
isSearchMode: boolean
4649
}
4750
4851
interface Emits {
@@ -151,6 +154,15 @@ const setTheme = () => {
151154
editor.session.setMode(`ace/theme/${props.theme}`)
152155
}
153156
157+
const resetUndoStack = () => {
158+
editor.getSession().setUndoManager(new ace.UndoManager())
159+
}
160+
161+
const setCursorToStartAndClearSelection = () => {
162+
editor.moveCursorTo(0, 0)
163+
editor.clearSelection()
164+
}
165+
154166
const findAll = (q: string) => {
155167
if (q === '') return
156168
editor.findAll(q, { caseSensitive: false, preventScroll: true })
@@ -182,6 +194,16 @@ watch(
182194
}
183195
)
184196
197+
watch(
198+
() => [props.snippetId, props.fragmentIndex],
199+
() => {
200+
resetUndoStack()
201+
if (!props.isSearchMode) {
202+
setCursorToStartAndClearSelection()
203+
}
204+
}
205+
)
206+
185207
window.addEventListener('resize', () => {
186208
forceRefresh.value = Math.random()
187209
})

src/renderer/components/snippets/SnippetsView.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
<TheEditor
1111
v-model="snippet"
1212
v-model:lang="lang"
13+
:snippet-id="snippetStore.selectedId!"
14+
:fragment-index="snippetStore.fragment"
15+
:is-search-mode="snippetStore.searchQuery?.length > 0"
1316
:fragments="snippetStore.isFragmentsShow"
1417
/>
1518
</template>
16-
1719
<div
1820
v-else-if="isShowPlaceholder"
1921
class="placeholder"

0 commit comments

Comments
 (0)