Skip to content

Commit b38d094

Browse files
authored
feat(vscode): optimize slide number with merging logic (#1668)
1 parent 57efa5c commit b38d094

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

packages/vscode/src/views/annotations.ts

+13-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,18 @@ const frontmatterContentDecoration = window.createTextEditorDecorationType({
3030
})
3131
const frontmatterEndDecoration = window.createTextEditorDecorationType(dividerCommonOptions)
3232

33+
function mergeSlideNumbers(slides: { index: number }[]): string {
34+
const indexes = slides.map(s => s.index + 1)
35+
const merged = [[indexes[0], indexes[0]]]
36+
for (let i = 1; i < indexes.length; i++) {
37+
if (merged[merged.length - 1][1] + 1 === indexes[i])
38+
merged[merged.length - 1][1] = indexes[i]
39+
else
40+
merged.push([indexes[i], indexes[i]])
41+
}
42+
return merged.map(([start, end]) => start === end ? `#${start}` : `#${start}-${end}`).join(', ')
43+
}
44+
3345
export const useAnnotations = createSingletonComposable(() => {
3446
const editor = useActiveTextEditor()
3547
const doc = computed(() => editor.value?.document)
@@ -56,7 +68,7 @@ export const useAnnotations = createSingletonComposable(() => {
5668
s => s.source === source || s.importChain?.includes(source),
5769
)
5870
const posInfo = slides?.length
59-
? slides.map(s => `#${s.index + 1}`).join(', ')
71+
? mergeSlideNumbers(slides)
6072
: isActive ? '(hidden)' : ''
6173
const entryInfo = source.index === 0 && project.data.entry !== md
6274
? ` (entry: ${toRelativePath(project.entry)})`

0 commit comments

Comments
 (0)