diff --git a/apps/lsp/src/service/toc.ts b/apps/lsp/src/service/toc.ts index 1df0f731..ec0d6572 100644 --- a/apps/lsp/src/service/toc.ts +++ b/apps/lsp/src/service/toc.ts @@ -36,6 +36,7 @@ import { getLine, Document, Parser, + isDiv, } from 'quarto-core'; @@ -140,7 +141,7 @@ export class TableOfContents { } // compute restricted ranges (ignore headings in these ranges) - const isWithinIgnoredRange = isWithinRange(tokens, token => isCallout(token) || isTheorem(token) || isProof(token)); + const isWithinIgnoredRange = isWithinRange(tokens, isDiv); const isWithinTabset = isWithinRange(tokens, isTabset); const existingSlugEntries = new Map(); diff --git a/packages/quarto-core/src/markdown/token.ts b/packages/quarto-core/src/markdown/token.ts index 2b3a0936..746e5583 100644 --- a/packages/quarto-core/src/markdown/token.ts +++ b/packages/quarto-core/src/markdown/token.ts @@ -33,29 +33,29 @@ export type TokenType = export const kAttrIdentifier = 0; export const kAttrClasses = 1; export const kAttrAttributes = 2; -export type TokenAttr = [string, Array, Array<[string,string]>]; +export type TokenAttr = [string, Array, Array<[string, string]>]; export interface Token { type: TokenType; range: Range; - attr?: TokenAttr; + attr?: TokenAttr; data: T; - // FrontMatter: yaml - // Header: { level: number, text: string } - // Math: { type: string, text: string } - // CodeBlock: text - // RawBlock: { format: string, text: string } - // (Other): null + // FrontMatter: yaml + // Header: { level: number, text: string } + // Math: { type: string, text: string } + // CodeBlock: text + // RawBlock: { format: string, text: string } + // (Other): null } export type TokenFrontMatter = Token; -export function isFrontMatter(token: Token) : token is TokenFrontMatter { +export function isFrontMatter(token: Token): token is TokenFrontMatter { return token.type === "FrontMatter"; } export type TokenHeader = Token<{ level: number, text: string }>; -export function isHeader(token: Token) : token is TokenHeader { +export function isHeader(token: Token): token is TokenHeader { return token.type === "Header"; } @@ -74,6 +74,10 @@ export function isRawBlock(token: Token): token is TokenRawBlock { return token.type === "RawBlock"; } +export function isDiv(token: Token) { + return token.type === "Div" +} + export function isCallout(token: Token) { if (token.type === "Div" && token.attr) { const classes = token.attr[kAttrClasses];