diff --git a/package.nls.json b/package.nls.json index 0b07a3a6..d755dcb0 100644 --- a/package.nls.json +++ b/package.nls.json @@ -277,7 +277,7 @@ "setting.frontMatter.taxonomy.tags.markdownDescription": "Specifies the tags which can be used in the Front Matter. [Docs](https://frontmatter.codes/docs/settings/overview#frontmatter.taxonomy.tags) - [View in VS Code](command:simpleBrowser.show?%5B%22https://frontmatter.codes/docs/settings/overview%23frontmatter.taxonomy.tags%22%5D)", "setting.frontMatter.telemetry.disable.markdownDescription": "Specify if you want to disable the telemetry. [Docs](https://frontmatter.codes/docs/settings/overview#frontmatter.telemetry.disable) - [View in VS Code](command:simpleBrowser.show?%5B%22https://frontmatter.codes/docs/settings/overview%23frontmatter.telemetry.disable%22%5D)", "setting.frontMatter.templates.enabled.markdownDescription": "Specify if you want to use templates. [Docs](https://frontmatter.codes/docs/settings/overview#frontmatter.templates.enabled) - [View in VS Code](command:simpleBrowser.show?%5B%22https://frontmatter.codes/docs/settings/overview%23frontmatter.templates.enabled%22%5D)", - "setting.frontMatter.validation.enabled.markdownDescription": "Specify if you want to enable front matter validation. When enabled, the extension will validate your front matter against the content type schema. [Docs](https://frontmatter.codes/docs/settings/overview#frontmatter.validation.enabled) - [View in VS Code](command:simpleBrowser.show?%5B%22https://frontmatter.codes/docs/settings/overview%23frontmatter.validation.enabled%22%5D)", + "setting.frontMatter.validation.enabled.markdownDescription": "Specify if you want to enable front matter validation. When enabled, the extension will validate your front matter against the content type schema. [Docs](https://frontmatter.codes/docs/settings/overview#frontmatter.validation.enabled) - [View in VS Code](command:simpleBrowser.show?%5B%22https://frontmatter.codes/docs/settings/overview%23frontmatter.validation.enabled%22%5D)", "setting.frontMatter.templates.folder.markdownDescription": "Specify the folder to use for your article templates. [Docs](https://frontmatter.codes/docs/settings/overview#frontmatter.templates.folder) - [View in VS Code](command:simpleBrowser.show?%5B%22https://frontmatter.codes/docs/settings/overview%23frontmatter.templates.folder%22%5D)", "setting.frontMatter.templates.prefix.markdownDescription": "Specify the prefix you want to add for your new article filenames. [Docs](https://frontmatter.codes/docs/settings/overview#frontmatter.templates.prefix) - [View in VS Code](command:simpleBrowser.show?%5B%22https://frontmatter.codes/docs/settings/overview%23frontmatter.templates.prefix%22%5D)", "setting.frontMatter.dashboard.mediaSnippet.deprecationMessage": "This setting is deprecated and will be removed in the next major version. Please define your media snippet in the `frontMatter.content.snippet` setting.", diff --git a/src/commands/StatusListener.ts b/src/commands/StatusListener.ts index 477aa904..317cc9bc 100644 --- a/src/commands/StatusListener.ts +++ b/src/commands/StatusListener.ts @@ -8,7 +8,13 @@ import { SETTING_VALIDATION_ENABLED } from './../constants'; import * as vscode from 'vscode'; -import { ArticleHelper, Notifications, SeoHelper, Settings, FrontMatterValidator } from '../helpers'; +import { + ArticleHelper, + Notifications, + SeoHelper, + Settings, + FrontMatterValidator +} from '../helpers'; import { PanelProvider } from '../panelWebView/PanelProvider'; import { ContentType } from '../helpers/ContentType'; import { DataListener } from '../listeners/panel'; @@ -78,7 +84,7 @@ export class StatusListener { // Check the required fields if (editor) { StatusListener.verifyRequiredFields(editor, article, collection); - + // Schema validation const validationEnabled = Settings.get(SETTING_VALIDATION_ENABLED, true); if (validationEnabled) { @@ -213,7 +219,7 @@ export class StatusListener { const text = editor.document.getText(); const schemaDiagnostics: vscode.Diagnostic[] = []; - + // Find the front matter section (between --- markers) const frontMatterMatch = text.match(/^---\r?\n([\s\S]*?)\r?\n---/); const frontMatterEnd = frontMatterMatch ? frontMatterMatch[0].length : text.length; @@ -266,15 +272,15 @@ export class StatusListener { if (remaining === 0) { // Found the right item — highlight the value after '- ' const valueOffset = line.indexOf('- ') + 2; - const rawItemValue = line.substring(valueOffset).trim(); - const isQuoted = - rawItemValue.length > 1 && - ((rawItemValue.startsWith('"') && rawItemValue.endsWith('"')) || - (rawItemValue.startsWith('\'') && rawItemValue.endsWith('\''))); - const itemValue = isQuoted ? rawItemValue.slice(1, -1) : rawItemValue; - const valueStartOffset = searchFrom + valueOffset + (isQuoted ? 1 : 0); - posStart = editor.document.positionAt(valueStartOffset); - posEnd = editor.document.positionAt(valueStartOffset + itemValue.length); + const rawItemValue = line.substring(valueOffset).trim(); + const isQuoted = + rawItemValue.length > 1 && + ((rawItemValue.startsWith('"') && rawItemValue.endsWith('"')) || + (rawItemValue.startsWith("'") && rawItemValue.endsWith("'"))); + const itemValue = isQuoted ? rawItemValue.slice(1, -1) : rawItemValue; + const valueStartOffset = searchFrom + valueOffset + (isQuoted ? 1 : 0); + posStart = editor.document.positionAt(valueStartOffset); + posEnd = editor.document.positionAt(valueStartOffset + itemValue.length); break; } remaining--;