From a1db9a03a2980e34e0e827fec5ecc67f9b3aa499 Mon Sep 17 00:00:00 2001 From: "J. Brandt Buckley" Date: Sat, 21 Jun 2025 10:13:41 -0600 Subject: [PATCH 1/2] fix: Bash snippets from SnippetsLab have no language While taking massCode for a test drive, I noticed all my shell script snippets that were imported from a SnippetsLab JSON file had been marked as plain text. The problem is that "Bash" (via "BashLexer") does not match the "sh" that massCode expects. This is a quick PR to manually handle that case. Note: A good future task might be to check if there are other languages with this same problem by checking each of [Pygments supported languages' Lexer class names](https://pygments.org/languages/) (which is what SnippetsLab is using under-the-hood) against the [list massCode's language IDs](https://github.com/massCodeIO/massCode/blob/834eb28693b8262982a3ea1fc57f5ba948bd8411/src/shared/types/renderer/editor/index.d.ts). --- src/main/services/db/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/services/db/index.ts b/src/main/services/db/index.ts index 42bedfac..2f98f015 100644 --- a/src/main/services/db/index.ts +++ b/src/main/services/db/index.ts @@ -462,6 +462,10 @@ const convertSLLanguage = ( language = language.replace(/Lexer$/, '') } + if (language.toLowerCase() === 'bash') { + language = 'sh' + } + const _language = snakeCase(language.toLowerCase()) return languages.find(i => i.value === _language)?.value || 'plain_text' } From f118b095904b18c47fe3930986e464ecd0dcf28b Mon Sep 17 00:00:00 2001 From: "J. Brandt Buckley" Date: Sat, 21 Jun 2025 13:40:56 -0600 Subject: [PATCH 2/2] Fix additional languages --- src/main/services/db/index.ts | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/services/db/index.ts b/src/main/services/db/index.ts index 2f98f015..48b9bf24 100644 --- a/src/main/services/db/index.ts +++ b/src/main/services/db/index.ts @@ -453,6 +453,17 @@ export const migrateFromSnippetsLabNew = (path: string) => { console.log('Migrate is done') } +const SL_STATIC_LANG_MAPPING: Record = { + 'bash': 'sh', + 'batch': 'batchfile', + 'c': 'c_cpp', + 'coffeescript': 'coffee', + 'cpp': 'c_cpp', + 'docker': 'dockerfile', + 'go': 'golang', + 'graphql': 'graphqlschema', +} + const convertSLLanguage = ( language: string, languages: LanguageOption[], @@ -462,10 +473,11 @@ const convertSLLanguage = ( language = language.replace(/Lexer$/, '') } - if (language.toLowerCase() === 'bash') { - language = 'sh' - } + language = SL_STATIC_LANG_MAPPING[language.toLowerCase()] || language - const _language = snakeCase(language.toLowerCase()) - return languages.find(i => i.value === _language)?.value || 'plain_text' + const match = languages.find(i => { + return i.value === snakeCase(language) || + i.value === language.toLowerCase() + }) + return match?.value || 'plain_text' }