Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>OVERDARE Luau Language ServerNew to Visual Studio Code? Get it now.
OVERDARE Luau Language Server

OVERDARE Luau Language Server

wonjin

|
1 install
| (0) | Free
Unofficial, community-maintained Language Server for Luau on OVERDARE. Not affiliated with or endorsed by OVERDARE.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

OVERDARE Luau Language Server (Unofficial)

An implementation of a language server for the Luau programming language, targeting OVERDARE projects.

This is an unofficial, community-maintained project and is not affiliated with, endorsed by, or sponsored by OVERDARE.

This is a fork of JohnnyMorganz/luau-lsp (MIT licensed), which the vast majority of this codebase's language-server plumbing still comes from. This fork replaces the Roblox-specific platform integration with an OVERDARE-specific one: OVERDARE API type definitions (scraped from docs.overdare.com) instead of Roblox's, and .ovdrjm-based sourcemap generation instead of Rojo's.

Getting Started

This fork is published on OpenVSX as wonjin.overdare-lsp (used by editors like Cursor); search "OVERDARE" in your editor's extension marketplace. It's not yet on the VS Code Marketplace.

You can also build and install the extension locally:

git clone --recurse-submodules https://github.com/oneone-jin/overdare-lsp.git
cd overdare-lsp
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build . --target Luau.LanguageServer.CLI --config RelWithDebInfo
cd ..

# Bundle the server binary into the extension so it works with no extra config
mkdir -p editors/code/bin
cp build/luau-lsp editors/code/bin/server            # macOS/Linux
# copy build\RelWithDebInfo\luau-lsp.exe editors\code\bin\server.exe   # Windows

# Mirror the README/CHANGELOG into the extension so they're bundled into the vsix
cp README.md editors/code/README.md
cp CHANGELOG.md editors/code/CHANGELOG.md

cd editors/code
npm install
npx @vscode/vsce package --out overdare-lsp.vsix

Then, in VS Code: Extensions panel → ... menu → Install from VSIX... → select the generated .vsix, then reload the window.

Alternatively, check out Getting Started for Language Server Clients to set up your own client for a different editor.

For General Users

The language server will start working immediately for general Luau code. There is built-in support for Luau's generalised require-by-string semantics, using require("./module").

To provide global type definitions for a custom environment, specify luau-lsp.types.definitionFiles. Corresponding documentation is configured using luau-lsp.types.documentationFiles.

For OVERDARE Users

By default (luau-lsp.platform.type: "overdare"), the OVERDARE type definitions and documentation are preloaded out of the box.

If your workspace contains a *.ovdrjm project file (OVERDARE Studio's project format), the language server detects it automatically and keeps a sourcemap.json in sync with it — no manual sourcemap generator to configure. The instance tree, including OVERDARE's flat Lua/ script export folder (with Name, Name_1, Name_2, ... disambiguating same-named sibling scripts), is resolved from the live .ovdrjm file on every Studio save/play/publish. The server listens to changes of the sourcemap.json file present at the workspace root; it's recommended to add this file to your .gitignore.

If you don't have a .ovdrjm file (e.g. non-OVERDARE Luau/Roblox projects), sourcemap generation falls back to the original Rojo-based flow: running rojo sourcemap --watch default.project.json --output sourcemap.json. The following settings are configurable either way:

  • luau-lsp.sourcemap.enabled: Whether sourcemap support is enabled (default: on)
  • luau-lsp.sourcemap.autogenerate: Whether sourcemaps are automatically generated by the client. If disabled, the server will listen to manual changes to a sourcemap.json file (default: on)
  • luau-lsp.sourcemap.rojoProjectFile: What Rojo project file to use when there's no .ovdrjm (default: default.project.json)
  • luau-lsp.sourcemap.includeNonScripts: Whether to include non script instances in the sourcemap. May be disabled for expensive DataModels (default: on)
  • luau-lsp.sourcemap.sourcemapFile: What sourcemap file to use (default: sourcemap.json)

If neither applies to your project layout, you can configure luau-lsp.sourcemap.generatorCommand to run a custom generator. If your generator does not support file watching, enable luau-lsp.sourcemap.useVSCodeWatcher.

Note: in the diagnostics type checker, the types for DataModel (DM) instances will resolve to any. This is a current limitation to reduce false positives. However, autocomplete and hover intellisense will correctly resolve the DM type. To enable this mode for diagnostics, set luau-lsp.diagnostics.strictDatamodelTypes (off by default). Read more.

Standalone

The tool can run standalone, similar to luau-analyze, to provide type and lint warnings in CI, with full sourcemap resolution and API types support. The entry point for the analysis tool is luau-lsp analyze.

Install the binary and run luau-lsp --help for more information.

Configuration

There are 2 types of configuration styles for the language server. General configuration is provided by .luaurc files, which allow you to configure language strictness, lints, and require aliases. More information is available in Luau's RFC documentation.

The second configuration style is specific to the language server. See luau-lsp in your editor's settings for more details.

Supported Features

  • [x] Diagnostics (incl. type errors)
  • [x] Autocompletion
  • [x] Hover
  • [x] Signature Help
  • [x] Go To Definition
  • [x] Go To Type Definition
  • [x] Find References
  • [x] Document Link
  • [x] Document Symbol
  • [x] Color Provider
  • [x] Rename
  • [x] Semantic Tokens
  • [x] Inlay Hints
  • [x] Documentation Comments (Moonwave Style - supporting both --- comment and --[=[ comment ]=], but must be next to statement)
  • [x] Code Actions
  • [x] Workspace Symbols
  • [x] Folding Range
  • [x] Call Hierarchy

The following are extra features defined in the LSP specification, but most likely do not apply to Luau or are not necessary. They can be investigated at a later time:

  • [ ] Go To Declaration (do not apply)
  • [ ] Go To Implementation (do not apply)
  • [ ] Code Lens (not necessary)
  • [ ] Document Highlight (not necessary - editor highlighting is sufficient)
  • [ ] Selection Range (not necessary - editor selection is sufficient)
  • [ ] Inline Value (applies for debuggers only)
  • [ ] Moniker
  • [ ] Formatting (see stylua)
  • [ ] Type Hierarchy (Luau currently does not provide any [public] ways to define type hierarchies)

Crash Reporting

The language server implements opt-in crash reporting, using Sentry.

On VSCode, this is configured via the setting luau-lsp.server.crashReporting.enabled. When a crash is encountered, an out-of-process crash handler will upload the crash details to Sentry via HTTP.

When a crash is reported, the report stores the following information:

  • Crash reason and thread stack trace
  • Device metadata: OS name, version and CPU architecture
  • Dynamic libraries loaded into the process (including filesystem paths)

This information is transferred through a Minidump file. This file is not stored after processing. No general usage data is recorded.

Crash Reporting is only available for Windows and macOS, and is not active for Standalone mode (luau-lsp analyze). Note this fork hasn't set up its own Sentry project — crash reporting has no destination configured unless you provide your own.

Build From Source

Submodules are required to build the project. You should use --recurse-submodules when you initially clone the project; e.g.

git clone https://github.com/oneone-jin/overdare-lsp.git --recurse-submodules

To compile the project, execute the following commands in the project root directory.

git submodule update --init --recursive
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --target Luau.LanguageServer.CLI --config Release

You can build Luau.LanguageServer.Test for unit tests. Some tests make assumptions about relative file paths. When running tests, ensure that your current working directory is set to the root of the repository.

Regenerating OVERDARE's Type Definitions

scripts/dumpOverdareTypes.py scrapes the OVERDARE API reference docs and merges the result into scripts/globalTypes.d.luau (classes/enums/datatypes replaced or added; GetService's service whitelist pruned to only real OVERDARE services). Re-run it after OVERDARE ships new API surface:

python3 scripts/dumpOverdareTypes.py --merge-base scripts/globalTypes.d.luau --merged-output scripts/globalTypes.d.luau
cp scripts/globalTypes.d.luau scripts/globalTypes.d.lua   # keep both copies identical

License

MIT - see LICENSE.md. This project is a fork of JohnnyMorganz/luau-lsp (Copyright (c) 2022 JohnnyMorganz), also MIT licensed. The bundled VS Code extension additionally ships a few third-party JS libraries under their own permissive licenses; see editors/code/THIRD-PARTY-NOTICES.md.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft