Grammars / syntax highlighting
PRQL contains multiple grammar definitions to enable tools to highlight PRQL code. These are all intended to provide as good an experience as the grammar supports. Please raise any shortcomings in a GitHub issue.
The definitions are somewhat scattered around the codebase; this page serves as an index.
-
Ace — supported. The grammar is upstream (prql_highlight_rules.js). See the demo.
-
chroma — Go library used by the static website generator Hugo. The grammar is upstream (prql.xml). See the demo.
-
CotEditor — text editor for macOS. File is at
grammars/CotEditor/
. -
Lezer — used by CodeMirror editors. The PRQL file is at
grammars/prql-lezer/README.md
. -
emacs — used by terminal-based text editor GNU Emacs. File is at
grammars/emacs/
. -
GtkSourceView — used by GNOME Text Editor, GNOME Builder and other GTK applications. File is at
grammars/GtkSourceView/
. -
Handlebars — currently duplicated:
- The book:
book/highlight-prql.js
- The website (outside of the book & playground):
website/themes/prql-theme/static/plugins/highlight/prql.js
- The book:
-
KSyntaxHighlighting — used by Kate, KWrite and KDevelop and other Qt applications. File is at
grammars/KSyntaxHighlighting/
. -
micro — used by terminal-based text editor Micro. File is at
grammars/micro/
. -
nano — used by terminal-based text editor GNU nano. File is at
grammars/nano/
. -
Sublime Text — in the
sublime-prql
repository. -
TextMate — used by the VS Code extension; in the
prql-vscode
repo inprql-vscode/syntaxes/prql.tmLanguage.json
. -
Monarch — used by the Monaco editor, which we use for the Playground. The grammar is at
playground/src/workbench/prql-syntax.js
. -
Pygments — Python library used by Wikipedia, Bitbucket, Sphinx and more. The grammar is upstream (prql.py). See the demo.
-
Tree-Sitter — used by the neovim and helix. The grammar can be found at https://github.com/PRQL/tree-sitter-prql.
-
vim — used by terminal-based text editor Vim. Instructions at
grammars/vim/
. The grammar is upstream.- Neovim supported. Grammar is upstream.
Since the Elm language coincidentally provides syntax highlighting suitable for PRQL, it may look better to mark PRQL code as Elm when the above definition files are not available.
For example, the following Markdown code block will be nicely highlighted on GitHub, Pandoc, and other Markdown renderers:
```elm
from employees
filter start_date > @2021-01-01
```
We hope that in the future these renderers will recognize PRQL code blocks and have syntax highlighting applied, and we are tracking these with several issues.
- GitHub (Linguist): https://github.com/PRQL/prql/issues/1636
- Pandoc (Kate): https://github.com/PRQL/prql/issues/2213