SQL language support for the CodeMirror code editor

Usage no npm install needed!

<script type="module">
  import codemirrorLangSql from 'https://cdn.skypack.dev/@codemirror/lang-sql';


@codemirror/lang-sql NPM version


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.

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⁠?: Object<readonly (string | Completion)[]>

An object that maps table names to options (columns) that can be completed for that table. Use lower-case names here.

tables⁠?: readonly Completion[]

By default, the completions for the table names will be generated from the schema object. But if you want to customize them, you can pass an array of completions through this option.

defaultTable⁠?: string

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

upperCaseKeywords⁠?: boolean

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

class SQLDialect

Represents an SQL dialect.

language: LezerLanguage

The language for this dialect.

extension: Extension

Returns the language for this dialect as an extension.

static define(specObject) → SQLDialect

Define a new 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.

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'.

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 "\"".

StandardSQL: SQLDialect

The standard SQL dialect.

PostgreSQL: SQLDialect

Dialect for PostgreSQL.

MySQL: SQLDialect

MySQL dialect.

MariaSQL: SQLDialect

Variant of MySQL for MariaDB.


SQL dialect for Microsoft SQL Server.

SQLite: SQLDialect

SQLite dialect.

Cassandra: SQLDialect

Dialect for Cassandra's SQL-ish query language.


PL/SQL dialect.

keywordCompletion(dialectSQLDialect, upperCase⁠?: boolean = false) → Extension

Returns an extension that enables keyword completion for the given SQL dialect.

schemaCompletion(configSQLConfig) → Extension

Returns an extension that enables schema-based completion for the given configuration.