{"id":18277,"library":"devicetree-language-server","title":"Devicetree Language Server","description":"A Language Server Protocol (LSP) implementation for Devicetree source files (.dts/.dtsi) based on Devicetree Specification v0.4. Current stable version is 0.9.3, with frequent releases addressing bugs and adding features. Provides IDE features like go-to-definition, hover, formatting, diagnostics, semantic tokens, and Zephyr DT macro support. Supports Zephyr and Linux devicetree bindings, and integrates with multiple editors (VS Code, Neovim, Helix, kakoune). Differentiator: dedicated DTS LSP with deep understanding of devicetree semantics, unlike generic XML-based tools.","status":"active","version":"0.9.3","language":"javascript","source_language":"en","source_url":"https://github.com/kylebonnici/dts-lsp","tags":["javascript","dts","devicetree","lsp","formatting"],"install":[{"cmd":"npm install devicetree-language-server","lang":"bash","label":"npm"},{"cmd":"yarn add devicetree-language-server","lang":"bash","label":"yarn"},{"cmd":"pnpm add devicetree-language-server","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"This package is a language server binary, not a library. To use it programmatically, spawn the server process and communicate via LSP.","wrong":"import { DevicetreeLanguageServer } from 'devicetree-language-server';","symbol":"default","correct":"import { createConnection } from 'vscode-languageserver/node';\nimport { TextDocuments } from 'vscode-languageserver';\n// The language server is used programmatically via LSP, not direct import."},{"note":"The package does not export a class; it starts a server via bin script.","wrong":"import { DevicetreeLanguageServer } from 'devicetree-language-server';","symbol":"DevicetreeLanguageServer","correct":"const server = new DevicetreeLanguageServer(); // only available in source, not published"}],"quickstart":{"code":"// Install globally or locally\nnpm install -g devicetree-language-server\n\n// Start the language server (example using VS Code extension, but standalone also possible)\ndevicetree-language-server --stdio\n\n// Or use with an editor that supports LSP (e.g., Neovim)\n// In your editor config, set the language server command to:\n\"devicetree-language-server --stdio\"","lang":"javascript","description":"Shows how to install and run the language server globally, then connect to it via stdio LSP."},"warnings":[{"fix":"Install globally with -g flag or use npx.","message":"The language server binary is named 'devicetree-language-server' but the npm package name is 'devicetree-language-server'. Ensure the binary is in PATH.","severity":"gotcha","affected_versions":"all"},{"fix":"Review completion behavior if upgrading from pre-0.9.0.","message":"Version 0.9.0 introduced Zephyr binding vendor autocompletion, which may change completion results.","severity":"breaking","affected_versions":">=0.9.0"},{"fix":"Update configuration: use 'sortNodesBy: address' instead of 'sortNodesByAddress: true'.","message":"The formatting option 'sortNodesByAddress' was renamed to 'sortNodesBy' with value 'address' in v0.8.6.","severity":"deprecated","affected_versions":">=0.8.6"},{"fix":"Ensure Node.js version is 16 or later.","message":"The server requires Node.js >=16. Older versions will fail to start.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'0.9.3':24 'ad':31 'address':28 'base':15,81 'bind':56 'bug':29 'code':63 'current':20 'dedic':68 'deep':72 'definit':40 'devicetre':1,11,17,55,75,85 'diagnost':43 'differenti':67 'dt':48 'dts':69,84 'dts/.dtsi':14 'editor':61 'featur':32,35 'file':13 'format':42,87 'frequent':26 'generic':78 'go':38 'go-to-definit':37 'helix':65 'hover':41 'ide':34 'implement':9 'integr':58 'javascript':83 'kakoun':66 'languag':2,5 'like':36 'linux':54 'lsp':8,70,86 'macro':49 'multipl':60 'neovim':64 'protocol':7 'provid':33 'releas':27 'semant':44,76 'server':3,6 'sourc':12 'specif':18 'stabl':21 'support':50,51 'token':45 'tool':82 'understand':73 'unlik':77 'v0.4':19 'version':22 'vs':62 'xml':80 'xml-base':79 'zephyr':47,52","created_at":"2026-04-25T07:37:24.672473+00:00","updated_at":"2026-04-25T07:37:24.672473+00:00","problems":[{"fix":"Run 'npm install -g devicetree-language-server' or use 'npx devicetree-language-server'.","cause":"Package not installed in current directory or globally.","error":"Error: Cannot find module 'devicetree-language-server'"},{"fix":"Upgrade to v0.8.3 or later.","cause":"Exception thrown when default values from Zephyr bindings are used (fixed in 0.8.3).","error":"Sort keys must be set"},{"fix":"Ensure each context in the configuration has 'dtsFile' property set.","cause":"Incorrect configuration in workspace settings.","error":"Language server crashed: context defined without dtsFile set"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"devicetree-language-server","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/kylebonnici/dts-lsp","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/devicetree-language-server","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops","http-networking"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-17","next_check":"2026-07-24","install_tag":null}}