diff --git a/package.json b/package.json index 2b66e969..182d5bd3 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,8 @@ "dependencies": { "@codemirror/commands": "^6.6.0", "@codemirror/lang-javascript": "^6.2.2", + "@codemirror/lang-markdown": "^6.2.5", + "@codemirror/lang-python": "^6.1.6", "@codemirror/search": "^6.5.6", "@codemirror/state": "^6.4.1", "@codemirror/view": "^6.33.0", diff --git a/src/app/search/codePreviewPanel.tsx b/src/app/search/codePreviewPanel.tsx index fa9180f5..32aaaef1 100644 --- a/src/app/search/codePreviewPanel.tsx +++ b/src/app/search/codePreviewPanel.tsx @@ -10,7 +10,6 @@ import { gutterWidthExtension } from "@/lib/extensions/gutterWidthExtension"; import { highlightRanges, searchResultHighlightExtension } from "@/lib/extensions/searchResultHighlightExtension"; import { SearchResultFileMatch } from "@/lib/schemas"; import { defaultKeymap } from "@codemirror/commands"; -import { javascript } from "@codemirror/lang-javascript"; import { search } from "@codemirror/search"; import { EditorView, keymap } from "@codemirror/view"; import { Cross1Icon, FileIcon } from "@radix-ui/react-icons"; @@ -67,7 +66,6 @@ export const CodePreviewPanel = ({ return [ keymapExtension, gutterWidthExtension, - javascript(), syntaxHighlighting, searchResultHighlightExtension(), search({ diff --git a/src/hooks/useSyntaxHighlightingExtension.ts b/src/hooks/useSyntaxHighlightingExtension.ts index 5b0a1831..4777a4dc 100644 --- a/src/hooks/useSyntaxHighlightingExtension.ts +++ b/src/hooks/useSyntaxHighlightingExtension.ts @@ -3,6 +3,8 @@ import { EditorView } from "@codemirror/view"; import { useExtensionWithDependency } from "./useExtensionWithDependency"; import { javascript } from "@codemirror/lang-javascript"; +import { python } from "@codemirror/lang-python"; +import { markdown } from "@codemirror/lang-markdown"; export const useSyntaxHighlightingExtension = (language: string, view: EditorView | undefined) => { const extension = useExtensionWithDependency( @@ -15,6 +17,10 @@ export const useSyntaxHighlightingExtension = (language: string, view: EditorVie jsx: true, typescript: true, }); + case "python": + return python(); + case "markdown": + return markdown(); default: return []; } diff --git a/yarn.lock b/yarn.lock index ac6add99..5e92f796 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,6 +24,16 @@ "@codemirror/view" "^6.17.0" "@lezer/common" "^1.0.0" +"@codemirror/autocomplete@^6.3.2", "@codemirror/autocomplete@^6.7.1": + version "6.18.1" + resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.18.1.tgz#3bd8d62c9c9a14d0706ab0a8adac139eaf1a41f1" + integrity sha512-iWHdj/B1ethnHRTwZj+C1obmmuCzquH29EbcKr0qIjA9NfDeBDJ7vs+WOHsFeLeflE4o+dHfYndJloMKHUkWUA== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.17.0" + "@lezer/common" "^1.0.0" + "@codemirror/commands@^6.0.0", "@codemirror/commands@^6.1.0", "@codemirror/commands@^6.6.0": version "6.6.0" resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.6.0.tgz#d308f143fe1b8896ca25fdb855f66acdaf019dd4" @@ -34,7 +44,33 @@ "@codemirror/view" "^6.27.0" "@lezer/common" "^1.1.0" -"@codemirror/lang-javascript@^6.2.2": +"@codemirror/lang-css@^6.0.0": + version "6.3.0" + resolved "https://registry.yarnpkg.com/@codemirror/lang-css/-/lang-css-6.3.0.tgz#607628559f2471b385c6070ec795072a55cffc0b" + integrity sha512-CyR4rUNG9OYcXDZwMPvJdtb6PHbBDKUc/6Na2BIwZ6dKab1JQqKa4di+RNRY9Myn7JB81vayKwJeQ7jEdmNVDA== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.0.2" + "@lezer/css" "^1.1.7" + +"@codemirror/lang-html@^6.0.0": + version "6.4.9" + resolved "https://registry.yarnpkg.com/@codemirror/lang-html/-/lang-html-6.4.9.tgz#d586f2cc9c341391ae07d1d7c545990dfa069727" + integrity sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/lang-css" "^6.0.0" + "@codemirror/lang-javascript" "^6.0.0" + "@codemirror/language" "^6.4.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.17.0" + "@lezer/common" "^1.0.0" + "@lezer/css" "^1.1.0" + "@lezer/html" "^1.3.0" + +"@codemirror/lang-javascript@^6.0.0", "@codemirror/lang-javascript@^6.2.2": version "6.2.2" resolved "https://registry.yarnpkg.com/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz#7141090b22994bef85bcc5608a3bc1257f2db2ad" integrity sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg== @@ -47,7 +83,31 @@ "@lezer/common" "^1.0.0" "@lezer/javascript" "^1.0.0" -"@codemirror/language@^6.0.0", "@codemirror/language@^6.6.0": +"@codemirror/lang-markdown@^6.2.5": + version "6.2.5" + resolved "https://registry.yarnpkg.com/@codemirror/lang-markdown/-/lang-markdown-6.2.5.tgz#451941bf743d3788e73598f1aedb71cbeb6f71ba" + integrity sha512-Hgke565YcO4fd9pe2uLYxnMufHO5rQwRr+AAhFq8ABuhkrjyX8R5p5s+hZUTdV60O0dMRjxKhBLxz8pu/MkUVA== + dependencies: + "@codemirror/autocomplete" "^6.7.1" + "@codemirror/lang-html" "^6.0.0" + "@codemirror/language" "^6.3.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.2.1" + "@lezer/markdown" "^1.0.0" + +"@codemirror/lang-python@^6.1.6": + version "6.1.6" + resolved "https://registry.yarnpkg.com/@codemirror/lang-python/-/lang-python-6.1.6.tgz#0c55e7e2dfa85b68be93b9692e5d3f76f284bbb2" + integrity sha512-ai+01WfZhWqM92UqjnvorkxosZ2aq2u28kHvr+N3gu012XqY2CThD67JPMHnGceRfXPDBmn1HnyqowdpF57bNg== + dependencies: + "@codemirror/autocomplete" "^6.3.2" + "@codemirror/language" "^6.8.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.2.1" + "@lezer/python" "^1.1.4" + +"@codemirror/language@^6.0.0", "@codemirror/language@^6.3.0", "@codemirror/language@^6.4.0", "@codemirror/language@^6.6.0", "@codemirror/language@^6.8.0": version "6.10.2" resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.10.2.tgz#4056dc219619627ffe995832eeb09cea6060be61" integrity sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA== @@ -348,11 +408,20 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@lezer/common@^1.0.0", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0": +"@lezer/common@^1.0.0", "@lezer/common@^1.0.2", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0", "@lezer/common@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.1.tgz#198b278b7869668e1bebbe687586e12a42731049" integrity sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ== +"@lezer/css@^1.1.0", "@lezer/css@^1.1.7": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@lezer/css/-/css-1.1.9.tgz#404563d361422c5a1fe917295f1527ee94845ed1" + integrity sha512-TYwgljcDv+YrV0MZFFvYFQHCfGgbPMR6nuqLabBdmZoFH3EP1gvw8t0vae326Ne3PszQkbXfVBjCnf3ZVCr0bA== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + "@lezer/highlight@^1.0.0", "@lezer/highlight@^1.1.3": version "1.2.1" resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.2.1.tgz#596fa8f9aeb58a608be0a563e960c373cbf23f8b" @@ -360,6 +429,15 @@ dependencies: "@lezer/common" "^1.0.0" +"@lezer/html@^1.3.0": + version "1.3.10" + resolved "https://registry.yarnpkg.com/@lezer/html/-/html-1.3.10.tgz#1be9a029a6fe835c823b20a98a449a630416b2af" + integrity sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + "@lezer/javascript@^1.0.0": version "1.4.17" resolved "https://registry.yarnpkg.com/@lezer/javascript/-/javascript-1.4.17.tgz#8456e369f960c328b9e823342d0c72d704238c31" @@ -376,6 +454,23 @@ dependencies: "@lezer/common" "^1.0.0" +"@lezer/markdown@^1.0.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@lezer/markdown/-/markdown-1.3.1.tgz#2193012296927f383102d7a2b035f323759315b3" + integrity sha512-DGlzU/i8DC8k0uz1F+jeePrkATl0jWakauTzftMQOcbaMkHbNSRki/4E2tOzJWsVpoKYhe7iTJ03aepdwVUXUA== + dependencies: + "@lezer/common" "^1.0.0" + "@lezer/highlight" "^1.0.0" + +"@lezer/python@^1.1.4": + version "1.1.14" + resolved "https://registry.yarnpkg.com/@lezer/python/-/python-1.1.14.tgz#a0887086fb7645cd09ada38ed748ca1d968e6363" + integrity sha512-ykDOb2Ti24n76PJsSa4ZoDF0zH12BSw1LGfQXCYJhJyOGiFTfGaX0Du66Ze72R+u/P35U+O6I9m8TFXov1JzsA== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + "@next/env@14.2.6": version "14.2.6" resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.6.tgz#4f8ab1ca549a90bf0c83454b798b0ebae7098b15"