SQL language support for the CodeMirror code editor https://codemirror.net
  • TypeScript 100%
Find a file
2026-04-15 11:34:35 +02:00
src Update github links 2026-04-14 20:56:30 +02:00
test Remove semicolons 2025-09-16 15:34:29 +02:00
.gitignore Move to @codemirror/buildhelper 2021-03-09 17:47:10 +01:00
.npmignore Tell TypeScript to not go through dist to load the package itself 2020-12-29 16:52:02 +01:00
CHANGELOG.md Mark version 6.10.0 2025-09-16 15:48:23 +02:00
LICENSE Update maintainer email 2023-01-24 08:20:09 +01:00
package.json Update github links 2026-04-14 20:56:30 +02:00
README.md Update github links 2026-04-14 20:56:30 +02:00

@codemirror/lang-sql NPM version

[ WEBSITE | ISSUES | FORUM | CHANGELOG ]

This package implements SQL language support for the CodeMirror code editor.

The project page has more information, a number of examples and the documentation.

This code is released under an MIT license.

We aim to be an inclusive, welcoming community. To make that explicit, we have a code of conduct that applies to communication around the project.

Usage

import {EditorView, basicSetup} from "codemirror"
import {sql} from "@codemirror/lang-sql"

const view = new EditorView({
  parent: document.body,
  doc: `select * from users where age > 20`,
  extensions: [basicSetup, sql()]
})

Use sql({dialect: PostgreSQL}) or similar to select a specific SQL dialect.

API Reference

sql(config?: SQLConfig = {}) → LanguageSupport

SQL language support for the given SQL dialect, with keyword completion, and, if provided, schema-based completion as extra extensions.

interface SQLConfig

Options used to configure an SQL extension.

dialect?: SQLDialect

The dialect to use. Defaults to StandardSQL.

schema?: SQLNamespace

You can use this to define the schemas, tables, and their fields for autocompletion.

defaultTable?: string

When given, columns from the named table can be completed directly at the top level.

defaultSchema?: string

When given, tables prefixed with this schema name can be completed directly at the top level.

upperCaseKeywords?: boolean

When set to true, keyword completions will be upper-case.

keywordCompletion?: fn(labelstring, typestring) → Completion

Can be used to customize the completions generated for keywords.

type SQLNamespace = Object<SQLNamespace> | {self: Completion, children: SQLNamespace} | readonly (string | Completion)[]

The type used to describe a level of the schema for completion. Can be an array of options (columns), an object mapping table or schema names to deeper levels, or a {self, children} object that assigns a completion option to use for its parent property, when the default option (its name as label and type "type") isn't suitable.

class SQLDialect

Represents an SQL dialect.

language: LRLanguage

The language for this dialect.

spec: SQLDialectSpec

The spec used to define this dialect.

extension: Extension

Returns the language for this dialect as an extension.

configureLanguage(optionsParserConfig, name?: string) → SQLDialect

Reconfigure the parser used by this dialect. Returns a new dialect object.

static define(specSQLDialectSpec) → SQLDialect

Define a new dialect.

type SQLDialectSpec

Configuration for an SQL Dialect.

keywords?: string

A space-separated list of keywords for the dialect.

builtin?: string

A space-separated string of built-in identifiers for the dialect.

types?: string

A space-separated string of type names for the dialect.

backslashEscapes?: boolean

Controls whether regular strings allow backslash escapes.

hashComments?: boolean

Controls whether # creates a line comment.

slashComments?: boolean

Controls whether // creates a line comment.

spaceAfterDashes?: boolean

When enabled -- comments are only recognized when there's a space after the dashes.

doubleDollarQuotedStrings?: boolean

When enabled, things quoted with "$" are treated as strings, rather than identifiers.

doubleQuotedStrings?: boolean

When enabled, things quoted with double quotes are treated as strings, rather than identifiers.

charSetCasts?: boolean

Enables strings like _utf8'str' or N'str'.

plsqlQuotingMechanism?: boolean

Enables string quoting syntax like q'[str]', as used in PL/SQL.

operatorChars?: string

The set of characters that make up operators. Defaults to "*+\-%<>!=&|~^/".

specialVar?: string

The set of characters that start a special variable name. Defaults to "?".

identifierQuotes?: string

The characters that can be used to quote identifiers. Defaults to "\"". Add [ for MSSQL-style bracket quoted identifiers.

caseInsensitiveIdentifiers?: boolean

Controls whether identifiers are case-insensitive. Identifiers with upper-case letters are quoted when set to false (which is the default).

unquotedBitLiterals?: boolean

Controls whether bit values can be defined as 0b1010. Defaults to false.

treatBitsAsBytes?: boolean

Controls whether bit values can contain other characters than 0 and 1. Defaults to false.

StandardSQL: SQLDialect

The standard SQL dialect.

PostgreSQL: SQLDialect

Dialect for PostgreSQL.

MySQL: SQLDialect

MySQL dialect.

MariaSQL: SQLDialect

Variant of MySQL for MariaDB.

MSSQL: SQLDialect

SQL dialect for Microsoft SQL Server.

SQLite: SQLDialect

SQLite dialect.

Cassandra: SQLDialect

Dialect for Cassandra's SQL-ish query language.

PLSQL: SQLDialect

PL/SQL dialect.

keywordCompletionSource(dialectSQLDialect, upperCase?: boolean = false, build?: fn(labelstring, typestring) → Completion) → CompletionSource

Returns a completion source that provides keyword completion for the given SQL dialect.

schemaCompletionSource(configSQLConfig) → CompletionSource

Returns a completion sources that provides schema-based completion for the given configuration.