Diffdown is a real-time collaborative Markdown editor/previewer built on the AT Protocol diffdown.com
1<!-- NOTE: README.md is generated from src/README.md --> 2 3# @codemirror/lang-javascript [![NPM version](https://img.shields.io/npm/v/@codemirror/lang-javascript.svg)](https://www.npmjs.org/package/@codemirror/lang-javascript) 4 5[ [**WEBSITE**](https://codemirror.net/) | [**ISSUES**](https://github.com/codemirror/dev/issues) | [**FORUM**](https://discuss.codemirror.net/c/next/) | [**CHANGELOG**](https://github.com/codemirror/lang-javascript/blob/main/CHANGELOG.md) ] 6 7This package implements JavaScript language support for the 8[CodeMirror](https://codemirror.net/) code editor. 9 10The [project page](https://codemirror.net/) has more information, a 11number of [examples](https://codemirror.net/examples/) and the 12[documentation](https://codemirror.net/docs/). 13 14This code is released under an 15[MIT license](https://github.com/codemirror/lang-javascript/tree/main/LICENSE). 16 17We aim to be an inclusive, welcoming community. To make that explicit, 18we have a [code of 19conduct](http://contributor-covenant.org/version/1/1/0/) that applies 20to communication around the project. 21 22## Usage 23 24```javascript 25import {EditorView, basicSetup} from "codemirror" 26import {javascript} from "@codemirror/lang-javascript" 27 28const view = new EditorView({ 29 parent: document.body, 30 doc: `console.log("Hello world")`, 31 extensions: [basicSetup, javascript()] 32}) 33``` 34 35## API Reference 36 37<dl> 38<dt id="user-content-javascript"> 39 <code><strong><a href="#user-content-javascript">javascript</a></strong>(<a id="user-content-javascript^config" href="#user-content-javascript^config">config</a>&#8288;?: {jsx&#8288;?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a>, typescript&#8288;?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a>} = {}) → <a href="https://codemirror.net/docs/ref#language.LanguageSupport">LanguageSupport</a></code></dt> 40 41<dd><p>JavaScript support. Includes <a href="#user-content-snippets">snippet</a> 42and local variable completion.</p> 43</dd> 44<dt id="user-content-javascriptlanguage"> 45 <code><strong><a href="#user-content-javascriptlanguage">javascriptLanguage</a></strong>: <a href="https://codemirror.net/docs/ref#language.LRLanguage">LRLanguage</a></code></dt> 46 47<dd><p>A language provider based on the <a href="https://github.com/lezer-parser/javascript">Lezer JavaScript 48parser</a>, extended with 49highlighting and indentation information.</p> 50</dd> 51<dt id="user-content-typescriptlanguage"> 52 <code><strong><a href="#user-content-typescriptlanguage">typescriptLanguage</a></strong>: <a href="https://codemirror.net/docs/ref#language.LRLanguage">LRLanguage</a></code></dt> 53 54<dd><p>A language provider for TypeScript.</p> 55</dd> 56<dt id="user-content-jsxlanguage"> 57 <code><strong><a href="#user-content-jsxlanguage">jsxLanguage</a></strong>: <a href="https://codemirror.net/docs/ref#language.LRLanguage">LRLanguage</a></code></dt> 58 59<dd><p>Language provider for JSX.</p> 60</dd> 61<dt id="user-content-tsxlanguage"> 62 <code><strong><a href="#user-content-tsxlanguage">tsxLanguage</a></strong>: <a href="https://codemirror.net/docs/ref#language.LRLanguage">LRLanguage</a></code></dt> 63 64<dd><p>Language provider for JSX + TypeScript.</p> 65</dd> 66<dt id="user-content-autoclosetags"> 67 <code><strong><a href="#user-content-autoclosetags">autoCloseTags</a></strong>: <a href="https://codemirror.net/docs/ref#state.Extension">Extension</a></code></dt> 68 69<dd><p>Extension that will automatically insert JSX close tags when a <code>&gt;</code> or 70<code>/</code> is typed.</p> 71</dd> 72<dt id="user-content-snippets"> 73 <code><strong><a href="#user-content-snippets">snippets</a></strong>: readonly <a href="https://codemirror.net/docs/ref#autocomplete.Completion">Completion</a>[]</code></dt> 74 75<dd><p>A collection of JavaScript-related 76<a href="https://codemirror.net/docs/ref/#autocomplete.snippet">snippets</a>.</p> 77</dd> 78<dt id="user-content-typescriptsnippets"> 79 <code><strong><a href="#user-content-typescriptsnippets">typescriptSnippets</a></strong>: <a href="https://codemirror.net/docs/ref#autocomplete.Completion">Completion</a>[]</code></dt> 80 81<dd><p>A collection of snippet completions for TypeScript. Includes the 82JavaScript <a href="#user-content-snippets">snippets</a>.</p> 83</dd> 84<dt id="user-content-localcompletionsource"> 85 <code><strong><a href="#user-content-localcompletionsource">localCompletionSource</a></strong>(<a id="user-content-localcompletionsource^context" href="#user-content-localcompletionsource^context">context</a>: <a href="https://codemirror.net/docs/ref#autocomplete.CompletionContext">CompletionContext</a>) → <a href="https://codemirror.net/docs/ref#autocomplete.CompletionResult">CompletionResult</a> | <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null">null</a></code></dt> 86 87<dd><p>Completion source that looks up locally defined names in 88JavaScript code.</p> 89</dd> 90<dt id="user-content-completionpath"> 91 <code><strong><a href="#user-content-completionpath">completionPath</a></strong>(<a id="user-content-completionpath^context" href="#user-content-completionpath^context">context</a>: <a href="https://codemirror.net/docs/ref#autocomplete.CompletionContext">CompletionContext</a>) → {path: readonly <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String">string</a>[], name: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String">string</a>} | <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null">null</a></code></dt> 92 93<dd><p>Helper function for defining JavaScript completion sources. It 94returns the completable name and object path for a completion 95context, or null if no name/property completion should happen at 96that position. For example, when completing after <code>a.b.c</code> it will 97return <code>{path: [&quot;a&quot;, &quot;b&quot;], name: &quot;c&quot;}</code>. When completing after <code>x</code> 98it will return <code>{path: [], name: &quot;x&quot;}</code>. When not in a property or 99name, it will return null if <code>context.explicit</code> is false, and 100<code>{path: [], name: &quot;&quot;}</code> otherwise.</p> 101</dd> 102<dt id="user-content-scopecompletionsource"> 103 <code><strong><a href="#user-content-scopecompletionsource">scopeCompletionSource</a></strong>(<a id="user-content-scopecompletionsource^scope" href="#user-content-scopecompletionsource^scope">scope</a>: any) → <a href="https://codemirror.net/docs/ref#autocomplete.CompletionSource">CompletionSource</a></code></dt> 104 105<dd><p>Defines a <a href="https://codemirror.net/docs/ref/#autocomplete.CompletionSource">completion source</a> that 106completes from the given scope object (for example <code>globalThis</code>). 107Will enter properties of the object when completing properties on 108a directly-named path.</p> 109</dd> 110<dt id="user-content-eslint"> 111 <code><strong><a href="#user-content-eslint">esLint</a></strong>(<a id="user-content-eslint^eslint" href="#user-content-eslint^eslint">eslint</a>: any, <a id="user-content-eslint^config" href="#user-content-eslint^config">config</a>&#8288;?: any) → fn(<a id="user-content-eslint^returns^view" href="#user-content-eslint^returns^view">view</a>: <a href="https://codemirror.net/docs/ref#view.EditorView">EditorView</a>) → <a href="https://codemirror.net/docs/ref#lint.Diagnostic">Diagnostic</a>[]</code></dt> 112 113<dd><p>Connects an <a href="https://eslint.org/">ESLint</a> linter to CodeMirror's 114<a href="https://codemirror.net/docs/ref/#lint">lint</a> integration. <code>eslint</code> should be an instance of the 115<a href="https://eslint.org/docs/developer-guide/nodejs-api#linter"><code>Linter</code></a> 116class, and <code>config</code> an optional ESLint configuration. The return 117value of this function can be passed to <a href="https://codemirror.net/docs/ref/#lint.linter"><code>linter</code></a> 118to create a JavaScript linting extension.</p> 119<p>Note that ESLint targets node, and is tricky to run in the 120browser. The 121<a href="https://github.com/UziTech/eslint-linter-browserify">eslint-linter-browserify</a> 122package may help with that (see 123<a href="https://github.com/UziTech/eslint-linter-browserify/blob/master/example/script.js">example</a>).</p> 124</dd> 125</dl>