From 1deb969c2013e7d0f999e02a23da1d1414b31218 Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Mon, 17 Jan 2022 14:48:46 +0100 Subject: [PATCH] #227 - Added new supported file types setting --- CHANGELOG.md | 1 + package.json | 26 +++++++++++++++++++++++--- src/constants/settings.ts | 1 + src/helpers/ArticleHelper.ts | 5 +++-- src/models/PanelSettings.ts | 2 +- 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa0d1475..e287645c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - [#193](https://github.com/estruyf/vscode-front-matter/issues/193): Support added for editing data files. - [#197](https://github.com/estruyf/vscode-front-matter/issues/197): Support for multi-dimensional content type fields on content creation and editing. - [#225](https://github.com/estruyf/vscode-front-matter/issues/225): Placeholder support for front matter field values (template and content type). +- [#227](https://github.com/estruyf/vscode-front-matter/issues/227): Specify the file types to support with the new `frontMatter.content.supportedFileTypes` setting. - [#228](https://github.com/estruyf/vscode-front-matter/issues/228): Show bulk button actions in panel and dashboard view. - [#231](https://github.com/estruyf/vscode-front-matter/issues/231): Once you authenticate via GitHub as a supporter, the support links will be hidden from the UI. diff --git a/package.json b/package.json index 364783ac..c4e8cd95 100644 --- a/package.json +++ b/package.json @@ -97,12 +97,32 @@ "markdownDescription": "Specify if you want to automatically update the modified date of your article/page. [Check in the docs](https://frontmatter.codes/docs/settings#frontmatter.content.autoupdatedate)", "scope": "Content" }, + "frontMatter.content.supportedFileTypes": { + "type": "array", + "default": [ + "md", + "mdx", + "markdown" + ], + "markdownDescription": "Specify the file types that you want to use in Front Matter. [Check in the docs](https://frontmatter.codes/docs/settings#frontmatter.content.supportedfiletypes)", + "items": { + "type": "string" + }, + "scope": "Content" + }, "frontMatter.content.defaultFileType": { "type": "string", "default": "md", - "enum": [ - "md", - "mdx" + "oneOf": [ + { + "enum": [ + "md", + "mdx" + ] + }, + { + "type": "string" + } ], "markdownDescription": "Specify the default file type for the content to create. [Check in the docs](https://frontmatter.codes/docs/settings#frontmatter.content.defaultfiletype)", "scope": "Content" diff --git a/src/constants/settings.ts b/src/constants/settings.ts index a88b8c6a..8d69ee64 100644 --- a/src/constants/settings.ts +++ b/src/constants/settings.ts @@ -52,6 +52,7 @@ export const SETTINGS_CONTENT_SORTING_DEFAULT = "content.defaultSorting"; export const SETTINGS_MEDIA_SORTING_DEFAULT = "content.defaultSorting"; export const SETTINGS_CONTENT_DEFAULT_FILETYPE = "content.defaultFileType"; +export const SETTINGS_CONTENT_SUPPORTED_FILETYPES = "content.supportedFileTypes"; export const SETTINGS_DASHBOARD_OPENONSTART = "dashboard.openOnStart"; export const SETTINGS_DASHBOARD_MEDIA_SNIPPET = "dashboard.mediaSnippet"; diff --git a/src/helpers/ArticleHelper.ts b/src/helpers/ArticleHelper.ts index ca7ed4a1..8f58a3fd 100644 --- a/src/helpers/ArticleHelper.ts +++ b/src/helpers/ArticleHelper.ts @@ -3,7 +3,7 @@ import { DEFAULT_CONTENT_TYPE, DEFAULT_CONTENT_TYPE_NAME } from './../constants/ import * as vscode from 'vscode'; import * as matter from "gray-matter"; import * as fs from "fs"; -import { DefaultFields, SETTINGS_CONTENT_DEFAULT_FILETYPE, SETTINGS_CONTENT_PLACEHOLDERS, SETTING_COMMA_SEPARATED_FIELDS, SETTING_DATE_FIELD, SETTING_DATE_FORMAT, SETTING_INDENT_ARRAY, SETTING_REMOVE_QUOTES, SETTING_TAXONOMY_CONTENT_TYPES, SETTING_TEMPLATES_PREFIX } from '../constants'; +import { DefaultFields, SETTINGS_CONTENT_DEFAULT_FILETYPE, SETTINGS_CONTENT_PLACEHOLDERS, SETTINGS_CONTENT_SUPPORTED_FILETYPES, SETTING_COMMA_SEPARATED_FIELDS, SETTING_DATE_FIELD, SETTING_DATE_FORMAT, SETTING_INDENT_ARRAY, SETTING_REMOVE_QUOTES, SETTING_TAXONOMY_CONTENT_TYPES, SETTING_TEMPLATES_PREFIX } from '../constants'; import { DumpOptions } from 'js-yaml'; import { TomlEngine, getFmLanguage, getFormatOpts } from './TomlEngine'; import { Extension, Logger, Settings } from '.'; @@ -145,7 +145,8 @@ export class ArticleHelper { */ public static isMarkdownFile(document: vscode.TextDocument | undefined | null = null) { const supportedLanguages = ["markdown", "mdx"]; - const supportedFileExtensions = [".md", ".mdx"]; + const fileTypes = Settings.get(SETTINGS_CONTENT_SUPPORTED_FILETYPES); + const supportedFileExtensions = fileTypes ? fileTypes.map(f => f.startsWith(`.`) ? f : `.${f}`) : [".md", ".mdx"]; const languageId = document?.languageId?.toLowerCase(); const isSupportedLanguage = languageId && supportedLanguages.includes(languageId); document ??= vscode.window.activeTextEditor?.document; diff --git a/src/models/PanelSettings.ts b/src/models/PanelSettings.ts index ac995ecc..c6981a1b 100644 --- a/src/models/PanelSettings.ts +++ b/src/models/PanelSettings.ts @@ -27,7 +27,7 @@ export interface ContentType { name: string; fields: Field[]; - fileType?: "md" | "mdx"; + fileType?: "md" | "mdx" | string; previewPath?: string | null; pageBundle?: boolean; }