@@ -30,6 +30,18 @@ const frontmatterContentDecoration = window.createTextEditorDecorationType({
30
30
} )
31
31
const frontmatterEndDecoration = window . createTextEditorDecorationType ( dividerCommonOptions )
32
32
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
+
33
45
export const useAnnotations = createSingletonComposable ( ( ) => {
34
46
const editor = useActiveTextEditor ( )
35
47
const doc = computed ( ( ) => editor . value ?. document )
@@ -56,7 +68,7 @@ export const useAnnotations = createSingletonComposable(() => {
56
68
s => s . source === source || s . importChain ?. includes ( source ) ,
57
69
)
58
70
const posInfo = slides ?. length
59
- ? slides . map ( s => `# ${ s . index + 1 } ` ) . join ( ', ' )
71
+ ? mergeSlideNumbers ( slides )
60
72
: isActive ? '(hidden)' : ''
61
73
const entryInfo = source . index === 0 && project . data . entry !== md
62
74
? ` (entry: ${ toRelativePath ( project . entry ) } )`
0 commit comments