From fc49cf111aaef898ff010b7c6ad411cf75123e31 Mon Sep 17 00:00:00 2001 From: Ryo Kaji Date: Sat, 7 Mar 2026 15:05:07 +0900 Subject: [PATCH 1/3] refer parser's definition --- src/semanticTokenProvider.ts | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/src/semanticTokenProvider.ts b/src/semanticTokenProvider.ts index 124c204..6c717f4 100644 --- a/src/semanticTokenProvider.ts +++ b/src/semanticTokenProvider.ts @@ -1,5 +1,6 @@ import * as vscode from "vscode"; import { parse } from "./useParserWorker"; +import { RangeType } from "@markwhen/parser"; const tokenTypes = [ "comment", @@ -12,29 +13,7 @@ const tokenTypes = [ "type", "class", ]; -enum RangeType { - Comment = "comment", - CheckboxItemIndicator = "checkboxItemIndicator", - listItemIndicator = "listItemIndicator", - ListItemContents = "listItemContents", - Tag = "tag", - tagDefinition = "tagDefinition", - Title = "title", - View = "view", - Viewer = "viewer", - Description = "description", - Section = "section", - DateRange = "dateRange", - DateRangeColon = "dateRangeColon", - Event = "event", - Edit = "edit", - Editor = "editor", - Recurrence = "recurrence", - FrontmatterDelimiter = "frontMatterDelimiter", - HeaderKey = "headerKey", - HeaderKeyColon = "headerKeyColon", - HeaderValue = "headerValue" -} + export const legend = new vscode.SemanticTokensLegend(tokenTypes, []); export const provider: vscode.DocumentSemanticTokensProvider = { From 067b63d44d3e458c324c7a5089f6ac503cb7bfd2 Mon Sep 17 00:00:00 2001 From: Ryo Kaji Date: Sat, 7 Mar 2026 22:48:08 +0900 Subject: [PATCH 2/3] annotate parsed object, fix its structure --- src/semanticTokenProvider.ts | 60 +++++++++++++++++------------------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/src/semanticTokenProvider.ts b/src/semanticTokenProvider.ts index 6c717f4..0d30395 100644 --- a/src/semanticTokenProvider.ts +++ b/src/semanticTokenProvider.ts @@ -1,6 +1,6 @@ import * as vscode from "vscode"; import { parse } from "./useParserWorker"; -import { RangeType } from "@markwhen/parser"; +import { ParseResult, RangeType } from "@markwhen/parser"; const tokenTypes = [ "comment", @@ -18,39 +18,37 @@ export const legend = new vscode.SemanticTokensLegend(tokenTypes, []); export const provider: vscode.DocumentSemanticTokensProvider = { async provideDocumentSemanticTokens( - document: vscode.TextDocument + document: vscode.TextDocument, ): Promise { const tokensBuilder = new vscode.SemanticTokensBuilder(legend); - const markwhen = await parse(document.getText()); - markwhen.timelines.forEach((timeline: any) => { - timeline.ranges.forEach((range: any) => { - const from = document.positionAt(range.from); - const to = document.positionAt(range.to); - const vscodeRange = new vscode.Range(from, to); - switch (range.type) { - case RangeType.listItemIndicator: - case RangeType.CheckboxItemIndicator: - tokensBuilder.push(vscodeRange, "variable"); - break; - case RangeType.Comment: - tokensBuilder.push(vscodeRange, "comment"); - break; - case RangeType.DateRange: - tokensBuilder.push(vscodeRange, "type"); - break; - case RangeType.Description: - case RangeType.Section: - case RangeType.Title: - case RangeType.View: - tokensBuilder.push(vscodeRange, "keyword"); - break; - case RangeType.Tag: - tokensBuilder.push(vscodeRange, "property"); - case RangeType.Recurrence: - tokensBuilder.push(vscodeRange, "class"); - } - }); + const markwhen = (await parse(document.getText())) as ParseResult; + markwhen.ranges.forEach((range: any) => { + const from = document.positionAt(range.from); + const to = document.positionAt(range.to); + const vscodeRange = new vscode.Range(from, to); + switch (range.type) { + case RangeType.listItemIndicator: + case RangeType.CheckboxItemIndicator: + tokensBuilder.push(vscodeRange, "variable"); + break; + case RangeType.Comment: + tokensBuilder.push(vscodeRange, "comment"); + break; + case RangeType.DateRange: + tokensBuilder.push(vscodeRange, "type"); + break; + case RangeType.Description: + case RangeType.Section: + case RangeType.Title: + case RangeType.View: + tokensBuilder.push(vscodeRange, "keyword"); + break; + case RangeType.Tag: + tokensBuilder.push(vscodeRange, "property"); + case RangeType.Recurrence: + tokensBuilder.push(vscodeRange, "class"); + } }); return tokensBuilder.build(); From 5762b8e62e8682d903f3c94c49da93ca4561fb4a Mon Sep 17 00:00:00 2001 From: Ryo Kaji Date: Fri, 13 Mar 2026 01:05:49 +0900 Subject: [PATCH 3/3] revert auto format --- src/semanticTokenProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/semanticTokenProvider.ts b/src/semanticTokenProvider.ts index 0d30395..a6302c5 100644 --- a/src/semanticTokenProvider.ts +++ b/src/semanticTokenProvider.ts @@ -18,7 +18,7 @@ export const legend = new vscode.SemanticTokensLegend(tokenTypes, []); export const provider: vscode.DocumentSemanticTokensProvider = { async provideDocumentSemanticTokens( - document: vscode.TextDocument, + document: vscode.TextDocument ): Promise { const tokensBuilder = new vscode.SemanticTokensBuilder(legend);