### Basic JavaScript Editor Setup Source: https://github.com/codemirror/lang-javascript/blob/main/src/README.md Use this snippet to initialize a CodeMirror editor with basic JavaScript support. Ensure you have imported the necessary modules. ```javascript import {EditorView, basicSetup} from "codemirror" import {javascript} from "@codemirror/lang-javascript" const view = new EditorView({ parent: document.body, doc: `console.log("Hello world")`, extensions: [basicSetup, javascript()] }) ``` -------------------------------- ### ESLint Integration for JavaScript Linting Source: https://context7.com/codemirror/lang-javascript/llms.txt Integrate ESLint into CodeMirror for real-time linting of JavaScript code. This setup provides diagnostics with severity levels, source information, and auto-fix actions directly within the editor. It requires an ESLint Linter instance and can be configured with custom ESLint rules. ```javascript import { EditorView, basicSetup } from "codemirror" import { javascript, esLint } from "@codemirror/lang-javascript" import { linter, lintGutter } from "@codemirror/lint" // Note: Use eslint-linter-browserify for browser usage import { Linter } from "eslint-linter-browserify" const eslintInstance = new Linter() // Use with default recommended rules const defaultLintSource = esLint(eslintInstance) // Or provide custom ESLint configuration const customConfig = { parserOptions: { ecmaVersion: 2022, sourceType: "module", ecmaFeatures: { jsx: true } }, env: { browser: true, es2022: true }, rules: { "no-unused-vars": "warn", "no-undef": "error", "semi": ["error", "always"], "quotes": ["warn", "double"], "no-console": "warn", "eqeqeq": ["error", "always"], "curly": ["error", "all"], "no-var": "error", "prefer-const": "warn" } } const customLintSource = esLint(eslintInstance, customConfig) const editor = new EditorView({ parent: document.getElementById("editor"), doc: `// This code has several lint issues: var unusedVar = "test" // no-var, no-unused-vars let x = 1 if (x == 1) console.log("equal") // eqeqeq, curly, no-console function example(a, b) { let result = a + b return result } // Missing semicolons will be flagged const y = 2 // Undeclared variables will be errors console.log(undeclaredVariable)`, extensions: [ basicSetup, javascript({ jsx: true }), linter(customLintSource), lintGutter() ] }) // ESLint diagnostics appear with: // - Severity: "error" (red) or "warning" (yellow) // - Source: "eslint:rule-name" // - Fix actions when auto-fixable (click to apply) ``` -------------------------------- ### Global Scope Autocompletion for JavaScript Source: https://context7.com/codemirror/lang-javascript/llms.txt Configure CodeMirror's JavaScript language support to provide autocompletions from the global scope (e.g., browser globals like `console`, `document`, `Math`, `JSON`). This setup enables intelligent suggestions as the user types. ```javascript import { EditorView, basicSetup } from "codemirror" import { javascriptLanguage, scopeCompletionSource } from "@codemirror/lang-javascript" import { LanguageSupport } from "@codemirror/language" // Complete from globalThis (browser globals) const globalCompletion = scopeCompletionSource(globalThis) const jsWithGlobals = new LanguageSupport(javascriptLanguage, [ javascriptLanguage.data.of({ autocomplete: globalCompletion }) ]) const editor = new EditorView({ parent: document.getElementById("editor"), doc: `// Type \ ``` ```javascript // Type \ ``` -------------------------------- ### Basic JavaScript Support in CodeMirror Source: https://context7.com/codemirror/lang-javascript/llms.txt Integrates basic JavaScript language support into a CodeMirror editor. Requires importing `basicSetup` and `javascript`. ```javascript import { EditorView, basicSetup } from "codemirror" import { javascript } from "@codemirror/lang-javascript" // Basic JavaScript support const jsEditor = new EditorView({ parent: document.getElementById("js-editor"), doc: `function greet(name) { console.log("Hello, " + name) } greet("World")`, extensions: [basicSetup, javascript()] }) ``` -------------------------------- ### Custom API Completion with `completionPath` Helper Source: https://context7.com/codemirror/lang-javascript/llms.txt Builds a custom autocompletion source for API structures using the `completionPath` helper. It analyzes the cursor position to provide context-aware suggestions for nested properties and functions. ```javascript import { EditorView, basicSetup } from "codemirror" import { javascriptLanguage, completionPath } from "@codemirror/lang-javascript" import { LanguageSupport } from "@codemirror/language" import { autocompletion, CompletionContext, Completion } from "@codemirror/autocomplete" // Custom completion source using completionPath function customApiCompletion(context) { const path = completionPath(context) if (!path) return null // Define your API structure const apiStructure = { api: { users: { getAll: "function", getById: "function", create: "function", delete: "function" }, posts: { list: "function", get: "function", publish: "function" }, auth: { login: "function", logout: "function", refresh: "function" } }, config: { baseUrl: "property", timeout: "property", headers: "property" } } // Navigate to the right object based on path let current = apiStructure for (const step of path.path) { current = current[step] if (!current) return null } // Generate completions const options = Object.entries(current).map(([name, type]) => ({ label: name, type: typeof type === "string" ? type : "variable" })) return { from: context.pos - path.name.length, options: options.filter(opt => opt.label.startsWith(path.name)) } } // Example usage const jsWithCustomCompletion = new LanguageSupport(javascriptLanguage, [ javascriptLanguage.data.of({ autocomplete: customApiCompletion }) ]) const editor = new EditorView({ parent: document.getElementById("editor"), doc: `// Type "api." to see: users, posts, auth // Type "api.users." to see: getAll, getById, create, delete // Type "config." to see: baseUrl, timeout, headers const users = await api.users.getAll() const post = await api.posts.get(postId) await api.auth.login(credentials) console.log(config.baseUrl)`, extensions: [basicSetup, jsWithCustomCompletion] }) // Using completionPath in a completion context manually function demonstrateCompletionPath(context) { const result = completionPath(context) if (result) { console.log("Path:", result.path) // e.g., ["api", "users"] console.log("Name:", result.name) // e.g., "get" (partial input) } return null } ``` -------------------------------- ### esLint Source: https://github.com/codemirror/lang-javascript/blob/main/README.md Connects an ESLint linter to CodeMirror's lint integration. It takes an ESLint Linter instance and an optional configuration, returning a function that generates diagnostics. ```APIDOC ## esLint ### Description Connects an ESLint linter to CodeMirror's lint integration. `eslint` should be an instance of the `Linter` class, and `config` an optional ESLint configuration. The return value of this function can be passed to `linter` to create a JavaScript linting extension. Note that ESLint targets node, and is tricky to run in the browser. The `eslint-linter-browserify` package may help with that. ### Method N/A (Function Definition) ### Endpoint N/A ### Parameters #### Path Parameters N/A #### Query Parameters N/A #### Request Body N/A ### Request Example N/A ### Response #### Success Response (200) - **Diagnostic[]** (array) - An array of linting diagnostics. #### Response Example N/A ``` -------------------------------- ### Enable Local Variable Completion in JavaScript Source: https://context7.com/codemirror/lang-javascript/llms.txt Integrates local variable and function completion into the JavaScript language support. Requires importing `localCompletionSource` and adding it to the editor's extensions. ```javascript import { EditorView, basicSetup } from "codemirror" import { javascriptLanguage, localCompletionSource } from "@codemirror/lang-javascript" import { LanguageSupport } from "@codemirror/language" import { autocompletion } from "@codemirror/autocomplete" // Create editor with local completion enabled const jsWithLocalCompletion = new LanguageSupport(javascriptLanguage, [ javascriptLanguage.data.of({ autocomplete: localCompletionSource }) ]) const editor = new EditorView({ parent: document.getElementById("editor"), doc: `function processData(inputData, options) { const processedItems = [] const errorCount = 0 for (const item of inputData) { const transformed = transformItem(item) // Type "pro" here to see completions for: // - processedItems (local variable) // - processData (function name) // Type "opt" to see completion for: // - options (function parameter) // Type "err" to see completion for: // - errorCount (local variable) } return { processedItems, errorCount } } class DataProcessor { constructor(config) { this.config = config this.cache = new Map() } process(data) { // Type "con" to see completion for config // Type "cac" to see completion for cache // Type "dat" to see completion for data parameter } }`, extensions: [basicSetup, jsWithLocalCompletion] }) ``` -------------------------------- ### completionPath Source: https://github.com/codemirror/lang-javascript/blob/main/README.md Helper function for defining JavaScript completion sources. Returns the completable name and object path. ```APIDOC ## completionPath(context: CompletionContext) ### Description Helper function for defining JavaScript completion sources. It returns the completable name and object path for a completion context, or null if no name/property completion should happen at that position. For example, when completing after `a.b.c` it will return `{path: ["a", "b"], name: "c"}`. When completing after `x` it will return `{path: [], name: "x"}`. When not in a property or name, it will return null if `context.explicit` is false, and `{path: [], name: ""}` otherwise. ### Method N/A (Function) ### Parameters #### Path Parameters - **context** (CompletionContext) - Required - The completion context. ### Response #### Success Response (200) - **{path: string[], name: string} | null** - An object containing the path and name, or null. ``` -------------------------------- ### scopeCompletionSource Source: https://github.com/codemirror/lang-javascript/blob/main/README.md Defines a completion source that completes from the given scope object (e.g., globalThis). It enters properties of the object when completing properties on a directly-named path. ```APIDOC ## scopeCompletionSource ### Description Defines a completion source that completes from the given scope object (for example `globalThis`). Will enter properties of the object when completing properties on a directly-named path. ### Method N/A (Function Definition) ### Endpoint N/A ### Parameters #### Path Parameters N/A #### Query Parameters N/A #### Request Body N/A ### Request Example N/A ### Response #### Success Response (200) - **CompletionSource** (object) - A CodeMirror CompletionSource. #### Response Example N/A ``` -------------------------------- ### localCompletionSource Source: https://github.com/codemirror/lang-javascript/blob/main/README.md Completion source that looks up locally defined names in JavaScript code. ```APIDOC ## localCompletionSource(context: CompletionContext) ### Description Completion source that looks up locally defined names in JavaScript code. ### Method N/A (Function) ### Parameters #### Path Parameters - **context** (CompletionContext) - Required - The completion context. ### Response #### Success Response (200) - **CompletionResult | null** - The completion result or null. ``` -------------------------------- ### javascript Source: https://github.com/codemirror/lang-javascript/blob/main/README.md Provides JavaScript language support, including snippet and local variable completion. ```APIDOC ## javascript(config?: {jsx?: boolean, typescript?: boolean}) ### Description Provides JavaScript language support, including snippet and local variable completion. ### Method N/A (Function) ### Parameters #### Query Parameters - **config** (object) - Optional - Configuration object. - **jsx** (boolean) - Optional - Enable JSX support. - **typescript** (boolean) - Optional - Enable TypeScript support. ### Response #### Success Response (200) - **LanguageSupport** - The language support extension. ``` -------------------------------- ### javascript() - Main Language Support Function Source: https://context7.com/codemirror/lang-javascript/llms.txt The main entry point for adding JavaScript language support to a CodeMirror editor. It bundles parser, syntax highlighting, autocompletion, and optional JSX auto-closing tags. Configure with options to enable TypeScript and/or JSX dialects. ```APIDOC ## javascript() ### Description Provides comprehensive JavaScript language support for CodeMirror 6, including syntax highlighting, code folding, indentation, bracket closing, and autocompletion. It can be configured to support TypeScript and JSX. ### Method `javascript(options?: { typescript?: boolean, jsx?: boolean })` ### Parameters #### Options - **typescript** (boolean) - Optional - Enables TypeScript dialect support. - **jsx** (boolean) - Optional - Enables JSX dialect support. ### Request Example ```javascript import { javascript } from "@codemirror/lang-javascript" // Basic JavaScript support let extensions = [ javascript() ] // TypeScript support let tsExtensions = [ javascript({ typescript: true }) ] // JSX support let jsxExtensions = [ javascript({ jsx: true }) ] // TSX support let tsxExtensions = [ javascript({ typescript: true, jsx: true }) ] ``` ### Response Returns a `LanguageSupport` object that bundles the parser, syntax highlighting, autocompletion, and other language-aware features. ``` -------------------------------- ### snippets Source: https://github.com/codemirror/lang-javascript/blob/main/README.md A collection of JavaScript-related snippets. ```APIDOC ## snippets ### Description A collection of JavaScript-related snippets. ### Method N/A (Constant) ### Endpoint N/A ### Response #### Success Response (200) - **Completion[]** - An array of JavaScript snippet completions. ``` -------------------------------- ### typescriptLanguage Source: https://github.com/codemirror/lang-javascript/blob/main/README.md A language provider for TypeScript. ```APIDOC ## typescriptLanguage ### Description A language provider for TypeScript. ### Method N/A (Constant) ### Endpoint N/A ### Response #### Success Response (200) - **LRLanguage** - The TypeScript language provider. ``` -------------------------------- ### javascriptLanguage Source: https://github.com/codemirror/lang-javascript/blob/main/README.md A language provider based on the Lezer JavaScript parser, extended with highlighting and indentation information. ```APIDOC ## javascriptLanguage ### Description A language provider based on the Lezer JavaScript parser, extended with highlighting and indentation information. ### Method N/A (Constant) ### Endpoint N/A ### Response #### Success Response (200) - **LRLanguage** - The Lezer JavaScript language provider. ``` -------------------------------- ### jsxLanguage Source: https://github.com/codemirror/lang-javascript/blob/main/README.md Language provider for JSX. ```APIDOC ## jsxLanguage ### Description Language provider for JSX. ### Method N/A (Constant) ### Endpoint N/A ### Response #### Success Response (200) - **LRLanguage** - The JSX language provider. ``` -------------------------------- ### Custom JavaScript Autocompletion in CodeMirror Source: https://context7.com/codemirror/lang-javascript/llms.txt Extends the base JavaScript language support with custom autocompletion suggestions using `completeFromList`. This allows for tailored suggestions beyond the default ones. ```javascript import { EditorView, basicSetup } from "codemirror" import { javascriptLanguage } from "@codemirror/lang-javascript" import { LanguageSupport } from "@codemirror/language" import { completeFromList } from "@codemirror/autocomplete" // Create custom JavaScript support with additional completions const customCompletions = completeFromList([ { label: "console", type: "variable" }, { label: "document", type: "variable" }, { label: "window", type: "variable" }, { label: "fetch", type: "function" }, { label: "setTimeout", type: "function" }, { label: "setInterval", type: "function" } ]) const customJSSupport = new LanguageSupport(javascriptLanguage, [ javascriptLanguage.data.of({ autocomplete: customCompletions }) ]) const editor = new EditorView({ parent: document.getElementById("editor"), doc: `// Start typing to see custom completions const element = document.getElementById("app") fetch("/api/data").then(res => res.json())`, extensions: [basicSetup, customJSSupport] }) // Check if JavaScript language is active at a position const isJSActive = javascriptLanguage.isActiveAt(editor.state, 0, -1) console.log("JavaScript active:", isJSActive) // true ``` -------------------------------- ### JSX (React) Support in CodeMirror Source: https://context7.com/codemirror/lang-javascript/llms.txt Adds JSX syntax highlighting and features for React development by configuring `javascript` with `{ jsx: true }`. This enables support for React components and JSX syntax. ```javascript import { EditorView, basicSetup } from "codemirror" import { javascript } from "@codemirror/lang-javascript" // JSX support (React) const jsxEditor = new EditorView({ parent: document.getElementById("jsx-editor"), doc: `function App() { return (

Hello World

) }`, extensions: [basicSetup, javascript({ jsx: true })] }) ``` -------------------------------- ### typescriptSnippets Source: https://github.com/codemirror/lang-javascript/blob/main/README.md Snippet completions for TypeScript, including JavaScript snippets. ```APIDOC ## typescriptSnippets ### Description A collection of snippet completions for TypeScript. Includes the JavaScript snippets. ### Method N/A (Constant) ### Endpoint N/A ### Response #### Success Response (200) - **Completion[]** - An array of TypeScript snippet completions. ``` -------------------------------- ### tsxLanguage Source: https://github.com/codemirror/lang-javascript/blob/main/README.md Language provider for JSX + TypeScript. ```APIDOC ## tsxLanguage ### Description Language provider for JSX + TypeScript. ### Method N/A (Constant) ### Endpoint N/A ### Response #### Success Response (200) - **LRLanguage** - The TSX language provider. ``` -------------------------------- ### TypeScript Language Definition Source: https://context7.com/codemirror/lang-javascript/llms.txt Use this to enable TypeScript syntax highlighting and features. It supports type annotations, interfaces, generics, enums, and decorators while remaining compatible with JavaScript. ```javascript import { EditorView, basicSetup } from "codemirror" import { typescriptLanguage } from "@codemirror/lang-javascript" import { LanguageSupport } from "@codemirror/language" const tsSupport = new LanguageSupport(typescriptLanguage) const editor = new EditorView({ parent: document.getElementById("editor"), doc: `type Result = { success: boolean data: T | null error?: string } async function fetchData(url: string): Promise> { try { const response = await fetch(url) const data: T = await response.json() return { success: true, data } } catch (error) { return { success: false, data: null, error: String(error) } } } const result = await fetchData("/api/users")`, extensions: [basicSetup, tsSupport] }) ``` -------------------------------- ### TypeScript Support in CodeMirror Source: https://context7.com/codemirror/lang-javascript/llms.txt Enables TypeScript language support within CodeMirror by passing `{ typescript: true }` to the `javascript` function. Ensure you have the necessary TypeScript types if needed. ```javascript import { EditorView, basicSetup } from "codemirror" import { javascript } from "@codemirror/lang-javascript" // TypeScript support const tsEditor = new EditorView({ parent: document.getElementById("ts-editor"), doc: `interface User { name: string age: number } function greet(user: User): void { console.log(\`Hello, ${user.name}\`) }`, extensions: [basicSetup, javascript({ typescript: true })] }) ``` -------------------------------- ### JSX Language Definition Source: https://context7.com/codemirror/lang-javascript/llms.txt Enable JSX syntax for React components. This provider includes special handling for JSX comments and code folding, and can be configured with autoCloseTags. ```javascript import { EditorView, basicSetup } from "codemirror" import { jsxLanguage, autoCloseTags } from "@codemirror/lang-javascript" import { LanguageSupport } from "@codemirror/language" const jsxSupport = new LanguageSupport(jsxLanguage, [autoCloseTags]) const editor = new EditorView({ parent: document.getElementById("editor"), doc: `function ProductCard({ product, onAddToCart }) { const [quantity, setQuantity] = useState(1) return (
{product.name}

{product.name}

$\ {product.price.toFixed(2)}

{/* Quantity selector */} setQuantity(parseInt(e.target.value))} min={1} />
) }`, extensions: [basicSetup, jsxSupport] }) ``` -------------------------------- ### TSX (React + TypeScript) Support in CodeMirror Source: https://context7.com/codemirror/lang-javascript/llms.txt Combines TypeScript and JSX support for React development by setting both `{ jsx: true, typescript: true }` in the `javascript` configuration. This is ideal for modern React projects using TypeScript. ```javascript import { EditorView, basicSetup } from "codemirror" import { javascript } from "@codemirror/lang-javascript" // TSX support (React + TypeScript) const tsxEditor = new EditorView({ parent: document.getElementById("tsx-editor"), doc: `interface Props { title: string count: number } const Counter: React.FC = ({ title, count }) => { return
{title}: {count}
}`, extensions: [basicSetup, javascript({ jsx: true, typescript: true })] }) ``` -------------------------------- ### autoCloseTags Source: https://github.com/codemirror/lang-javascript/blob/main/README.md Extension that automatically inserts JSX close tags when a '>' or '/' is typed. ```APIDOC ## autoCloseTags ### Description Extension that will automatically insert JSX close tags when a `>` or `/` is typed. ### Method N/A (Constant) ### Endpoint N/A ### Response #### Success Response (200) - **Extension** - The auto-close tags extension. ``` -------------------------------- ### JavaScript Code Snippets in CodeMirror Source: https://context7.com/codemirror/lang-javascript/llms.txt Provides code snippet completions for common JavaScript patterns like functions, loops, and class definitions. Snippets use tab stops for navigation. ```javascript import { EditorView, basicSetup } from "codemirror" import { javascriptLanguage, snippets } from "@codemirror/lang-javascript" import { LanguageSupport } from "@codemirror/language" import { completeFromList, ifNotIn } from "@codemirror/autocomplete" // View available snippets console.log("JavaScript snippets:", snippets.map(s => s.label)) // Output: ["function", "for", "for", "do", "while", "try", "if", "if", "class", "import", "import"] // Create custom setup with only snippets (no local completion) const snippetCompletion = completeFromList(snippets) const jsWithSnippets = new LanguageSupport(javascriptLanguage, [ javascriptLanguage.data.of({ autocomplete: ifNotIn(["String", "Comment"], snippetCompletion) }) ]) const editor = new EditorView({ parent: document.getElementById("editor"), doc: `// Type "for" and press Tab to expand a for loop snippet // Type "function" and press Tab to expand a function definition // Type "class" and press Tab to expand a class definition // Type "try" and press Tab to expand a try/catch block // Type "import" and press Tab to expand an import statement `, extensions: [basicSetup, jsWithSnippets] }) // Snippets expand to (use Tab to navigate between placeholders): // function → function name(params) { ... } // for → for (let index = 0; index < bound; index++) { ... } // for (of) → for (let name of collection) { ... } // class → class name { constructor(params) { ... } } // try → try { ... } catch (error) { ... } // if → if (...) { ... } // import → import {names} from "module" ``` -------------------------------- ### TypeScript Code Snippets in CodeMirror Source: https://context7.com/codemirror/lang-javascript/llms.txt Extends JavaScript snippets with TypeScript-specific patterns for interfaces, type aliases, and enums. Use these for quick access to common type definition patterns. ```typescript import { EditorView, basicSetup } from "codemirror" import { typescriptLanguage, typescriptSnippets } from "@codemirror/lang-javascript" import { LanguageSupport } from "@codemirror/language" import { completeFromList, ifNotIn } from "@codemirror/autocomplete" // View TypeScript-specific snippets (in addition to JavaScript snippets) const tsOnlySnippets = typescriptSnippets.filter( s => !["function", "for", "do", "while", "try", "if", "class", "import"].includes(s.label) ) console.log("TypeScript-specific snippets:", tsOnlySnippets.map(s => s.label)) // Output: ["interface", "type", "enum"] const tsSnippetCompletion = completeFromList(typescriptSnippets) const tsWithSnippets = new LanguageSupport(typescriptLanguage, [ typescriptLanguage.data.of({ autocomplete: ifNotIn(["String", "Comment"], tsSnippetCompletion) }) ]) const editor = new EditorView({ parent: document.getElementById("editor"), doc: `// Type "interface" and press Tab to define an interface // Type "type" and press Tab to create a type alias // Type "enum" and press Tab to define an enum // TypeScript snippets expand to: // interface → interface name { ... } // type → type name = type // enum → enum name { ... } `, extensions: [basicSetup, tsWithSnippets] }) ``` -------------------------------- ### Custom Scope Autocompletion for JavaScript Source: https://context7.com/codemirror/lang-javascript/llms.txt Set up CodeMirror's JavaScript autocompletion to use a custom scope object, allowing suggestions for your application's specific APIs, services, and utilities. This is useful for providing context-aware completions within your application's codebase. ```javascript // Complete from a custom scope (e.g., your application's API) const appScope = { app: { version: "1.0.0", init() { console.log("App initialized") }, shutdown() { console.log("App shutdown") } }, services: { database: { connect() {}, query() {}, disconnect() {} }, cache: { get() {}, set() {}, clear() {} } }, utils: { formatDate(date) { return date.toISOString() }, parseJSON(str) { return JSON.parse(str) }, debounce(fn, ms) {} } } const appCompletion = scopeCompletionSource(appScope) const customEditor = new EditorView({ parent: document.getElementById("custom-editor"), doc: `// Type \ ``` ```javascript // Type \ ``` -------------------------------- ### javascriptLanguage - Base JavaScript Language Definition Source: https://context7.com/codemirror/lang-javascript/llms.txt The core `LRLanguage` instance for JavaScript, based on the Lezer JavaScript parser. Use this directly for fine-grained control over language configuration or to build custom extensions. ```APIDOC ## javascriptLanguage ### Description The base `LRLanguage` instance for JavaScript, providing core parsing, indentation rules, code folding, bracket closing, and comment token definitions. It serves as the foundation for custom language configurations. ### Method `javascriptLanguage` (Read-only property) ### Usage This property is typically used to create custom `LanguageSupport` objects or to access language-specific data. ### Request Example ```javascript import { javascriptLanguage } from "@codemirror/lang-javascript" import { LanguageSupport } from "@codemirror/language" import { completeFromList } from "@codemirror/autocomplete" // Create custom completions const customCompletions = completeFromList([ { label: "myVariable", type: "variable" } ]) // Create custom language support const customJSSupport = new LanguageSupport(javascriptLanguage, [ javascriptLanguage.data.of({ autocomplete: customCompletions }) ]) // Check if JavaScript language is active const isJSActive = javascriptLanguage.isActiveAt(editor.state, 0, -1) ``` ### Response Returns an `LRLanguage` object representing the core JavaScript language definition. ``` -------------------------------- ### Auto-Close JSX Tags in CodeMirror Source: https://context7.com/codemirror/lang-javascript/llms.txt Automatically inserts closing JSX tags when typing `>` or `/`. This extension is included by default when using `javascript({ jsx: true })`. ```javascript import { EditorView, basicSetup } from "codemirror" import { javascript, autoCloseTags } from "@codemirror/lang-javascript" // autoCloseTags is automatically included when using javascript({ jsx: true }) const editor = new EditorView({ parent: document.getElementById("editor"), doc: `function Example() { return (
{/* Type and the closing will be inserted automatically */} {/* Type */}
) }`, extensions: [basicSetup, javascript({ jsx: true })] }) // Or add autoCloseTags manually to a custom setup import { jsxLanguage } from "@codemirror/lang-javascript" import { LanguageSupport } from "@codemirror/language" const customJsxSupport = new LanguageSupport(jsxLanguage, [autoCloseTags]) const customEditor = new EditorView({ parent: document.getElementById("custom-editor"), doc: `<>
{/* Typing
here auto-closes */}
`, extensions: [basicSetup, customJsxSupport] }) ``` -------------------------------- ### TSX Language Definition Source: https://context7.com/codemirror/lang-javascript/llms.txt Combine TypeScript and JSX support for React projects. This is recommended for modern React TypeScript codebases, supporting typed props, generic components, and TypeScript features within JSX. ```javascript import { EditorView, basicSetup } from "codemirror" import { tsxLanguage, autoCloseTags } from "@codemirror/lang-javascript" import { LanguageSupport } from "@codemirror/language" const tsxSupport = new LanguageSupport(tsxLanguage, [autoCloseTags]) const editor = new EditorView({ parent: document.getElementById("editor"), doc: `interface TableProps { data: T[] columns: Column[] onRowClick?: (item: T) => void } interface Column { key: keyof T header: string render?: (value: T[keyof T], item: T) => React.ReactNode } function DataTable( { data, columns, onRowClick }: TableProps ): JSX.Element { return ( {columns.map(col => ( ))} {data.map(item => ( onRowClick?.(item)}> {columns.map(col => ( ))} ))}
{col.header}
{col.render ? col.render(item[col.key], item) : String(item[col.key])}
) }`, extensions: [basicSetup, tsxSupport] }) ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.