@fazelstudio/codemirror-lang-prisma
v0.2.0
Published
Prisma Schema Language support for the CodeMirror code editor — syntax highlighting, parsing, and autocomplete
Downloads
319
Maintainers
Readme
@fazelstudio/codemirror-lang-prisma
Prisma Schema Language (.prisma) support for the CodeMirror code editor. Built with a full Lezer grammar covering all Prisma constructs, syntax highlighting, code folding, automatic indentation, and autocomplete.
Features
- Full grammar —
datasource,generator,model,enum,typeblocks - Field declarations — scalar types, optional (
?), list ([]) modifiers - Attributes — field-level (
@id,@default(),@unique,@relation(),@map(),@updatedAt,@ignore) and block-level (@@map(),@@unique(),@@index(),@@id(),@@ignore) - Doc comments (
///) — highlighted separately from regular comments (//) - Autocomplete — keywords, types, attributes, and built-in functions
- Code folding — fold blocks by
{ } - Auto indentation — proper indentation inside blocks
- Dual output — ESM + CJS + TypeScript declarations
Installation
npm install @fazelstudio/codemirror-lang-prismaUsage
Basic (syntax highlighting only)
import { EditorView, basicSetup } from "codemirror"
import { prisma } from "@fazelstudio/codemirror-lang-prisma"
new EditorView({
parent: document.body,
doc: `model User {\n id Int @id @default(autoincrement())\n email String @unique\n}`,
extensions: [basicSetup, prisma()],
})With autocomplete
import { EditorView, basicSetup } from "codemirror"
import { prisma, prismaAutocomplete } from "@fazelstudio/codemirror-lang-prisma"
new EditorView({
parent: document.body,
extensions: [basicSetup, prisma(), prismaAutocomplete],
})Custom completion source
import { prismaCompletionSource } from "@fazelstudio/codemirror-lang-prisma"
// Use with your own completion config
const myCompletion = autocompletion({
override: [prismaCompletionSource],
})API
prisma() → LanguageSupport
Returns a LanguageSupport instance with the Prisma grammar, syntax highlighting, indentation, and code folding.
prismaLanguage: LRLanguage
The underlying LRLanguage object for advanced usage.
prismaAutocomplete: Extension
An autocomplete extension that provides completions for Prisma keywords, types, attributes, and functions.
prismaCompletionSource: CompletionSource
A completion source function that can be used with @codemirror/autocomplete's autocompletion({ override: [...] }).
Autocomplete completions
| Category | Items |
|----------|-------|
| Block keywords | model, enum, type, datasource, generator |
| Scalar types | String, Int, Boolean, DateTime, Float, Json, Bytes, Decimal, BigInt |
| Field attributes | @id, @default(), @unique, @relation(), @map(), @updatedAt, @ignore |
| Block attributes | @@map(), @@unique(), @@index(), @@id(), @@ignore |
| Functions | autoincrement(), now(), cuid(), uuid(), dbgenerated(), env() |
| Config keys | provider, url, output, binaryTargets, previewFeatures |
Known limitations
dbgenerated("...")SQL content is highlighted as a plain string, not as nested SQL.- Schema validation (e.g. checking
@relationreferences) is out of scope — this package only provides syntax highlighting, parsing, and autocomplete, not a language server. - No multi-file
importsupport (Prisma preview feature, still evolving).
License
MIT © Zulfazli (Fazelllyyy)
