{"id":21301724,"url":"https://github.com/funbox/vscode-apib-ls","last_synced_at":"2025-07-11T20:31:21.275Z","repository":{"id":38419023,"uuid":"461756450","full_name":"funbox/vscode-apib-ls","owner":"funbox","description":"API Blueprint language server","archived":false,"fork":false,"pushed_at":"2023-07-19T11:52:30.000Z","size":1182,"stargazers_count":10,"open_issues_count":3,"forks_count":0,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-06T08:35:23.780Z","etag":null,"topics":["api-blueprint","language-server","vscode","vscode-extension"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/funbox.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-21T07:50:47.000Z","updated_at":"2024-12-27T12:54:35.000Z","dependencies_parsed_at":"2024-11-21T15:50:39.585Z","dependency_job_id":"e77fa43e-2221-4edb-a25a-468b2c138b8c","html_url":"https://github.com/funbox/vscode-apib-ls","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/funbox/vscode-apib-ls","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funbox%2Fvscode-apib-ls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funbox%2Fvscode-apib-ls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funbox%2Fvscode-apib-ls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funbox%2Fvscode-apib-ls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/funbox","download_url":"https://codeload.github.com/funbox/vscode-apib-ls/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funbox%2Fvscode-apib-ls/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264892178,"owners_count":23679248,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-blueprint","language-server","vscode","vscode-extension"],"created_at":"2024-11-21T15:50:33.281Z","updated_at":"2025-07-11T20:31:16.260Z","avatar_url":"https://github.com/funbox.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API Blueprint Language Server\n\nThis is a VS Code extension that brings a Language Server support for API Blueprint. It adheres to the [Language Server Protocol](https://github.com/Microsoft/language-server-protocol) and allows to enhance developer experience when creating and editing API Blueprint documentation in code editors and IDEs.\n\n[По-русски](./README.ru.md)\n\n## Rationale\n\nThough API Blueprint is based on Markdown, the semantics totally differs from Markdown.\nWhere in Markdown are sections and titles, in API Blueprint they mean data structures and custom types.\n\nIt's easy to misspell the name of a custom data type or get lost among a large number of documentation files.\nTo help developers with the completion of structure names, navigation between document sections, and other handy stuff,\nwe created this implementation of Language Server.\n\n## Supported capabilities\n\n* Syntax highlighting.\n* Diagnostic messages.\n* Breadcrumbs of documentation sections.\n* “Go to definition” implementation for data structures and resource prototypes.\n* Autocomplete for types and structure names.\n\n## Package structure\n\n```text\n├── client            // Language Client\n    └── extension.js  // Language Client entry point\n├── package.json      // The extension manifest.\n└── server            // Language Server\n    └── server.js     // Language Server entry point\n```\n\n## Installation in VS Code\n\n### Build extension from source\n\n* Run `npx @vscode/vsce package` in the root directory.\n* Install packaged extension using the [official guide](https://code.visualstudio.com/docs/editor/extension-marketplace#_install-from-a-vsix);\n* Distribute VSIX package to all who interested in it.\n\n### Download from marketplace\n\nVS Code extension is currently unavailable in marketplace.\n\n## Installation in JetBrains IDEs (WebStorm, PhpStorm, etc)\n\n### Add support for Language Server Protocol\n\nTo activate LS support install plugin [LSP Support](https://plugins.jetbrains.com/plugin/10209-lsp-support).\n\nThe last published version (1.6.1) is quite unstable, and development is suspended for a time.\nIt is recommended to install version [1.6.0](https://github.com/gtache/intellij-lsp/releases/tag/v1.6.0).\n\nInstallation:\n\n1. Download the archive\n   [LSP.zip](https://github.com/gtache/intellij-lsp/releases/download/v1.6.0/LSP.zip).\n2. Go to plugins list in the IDE settings:\n3. Press gear icon (or triple-dot icon) and select “Install Plugin from Disk...”.\n4. Set path to LSP.zip.\n\nAfter successful installation, LSP.zip can be deleted.\n\n### Setup LSP Support plugin\n\nTo perform required preparations navigate to Preferences → Languages \u0026 Frameworks → Language Server Protocol →\n[Server Definitions](jetbrains://WebStorm/settings?name=Languages+%26+Frameworks--Language+Server+Protocol--Server+Definitions).\n\nApply next settings:\n\n1. In the dropdown menu select `Executable`.\n2. In the Extension field type `apib`.\n3. In the Path specify the full path to the executable `node` file.\n4. In the Args field add an argument with the full path to the file [server/server.js](./server/server.js)\n   and the second argument with `--stdio` string. Example: `/full/path/to/vscode-apib-ls/server/server.js --stdio`\n\nYou can also setup LS globally as an executable file. To do that run `npm link` in the project directory\nthen make sure that shell command `apibserver` is available.\n\nAfter that, change value in the Path field to `apibserver` and value in the Args field to `--stdio`.\n\n**Important notice.** After any change, it is recommended to restart IDE.\n\n## Editing of a multi-file documentation\n\nIt is common for API documentation to be split into multiple files. Therefore, a developer can define data structures\nin one file and use them in another file. In that case, the extension requires the root file to know where to start.\nOtherwise, the extension could not realize which data structures are valid and which are not.\n\nBy default, the extension assumes that the root file is called `doc.apib` and tries to use it as the entry point.\nIf no such file is provided, documentation is considered to be single-file.\n\nWhen the name of the root file differs from `doc.apib`, actual name can be set:\nFile → Preferences → Settings → Extensions → API Blueprint → Entry Point\n\nIf, for some reason, error highlighting is not working, check if the current file is imported directly\nin the project root or indirectly.\n\n## Development guide\n\n### Launch in dev mode in VS Code\n\n* Run `npm install` in the root directory of the extension.\n* Open VS Code.\n* Switch to Debug viewlet.\n* Run `Launch Client`.\n* Open an APIB project or a standalone APIB file.\n* Run `Attach to Server`.\n\nYou can launch client and server at once and select `Client + Server`, but then you need to open required APIB file\nquickly, otherwise, the command `Attach to Server` will fail with an error.\n\n### Debugging\n\nTo debug server part of the extension breakpoints and logging techniques are applicable.\n\nFor logging use `connection.console.log` function. Output results you can find in the `Extension Development Host`\nwindow, in the `Output` section switch to `API Blueprint Language Server`.\n\n### Public version bundling\n\nBefore publishing the extension, source files need to be bundled (there is one bundle for `client` and one bundle for `server`).\nWe use `esbuild` to manage bundling process.\n\nTo compile minified bundle (as the one that will be shipped with the published extension), run `npm run esbuild-min` command.\nTo compile human-readable bundle, run `npm run esbuild` command.\n\nBesides that, you can check a list of actual files to be published. To print the list, run `npx @vscode/vsce ls`.\nIf you already have `@vscode/vsce` installed globally, you can use `vsce ls` and obtain the same result.\n\n## Credits\n\nAwesome logo for the project was made by [Igor Garybaldi](https://pandabanda.com/).\n\n[![Sponsored by FunBox](https://funbox.ru/badges/sponsored_by_funbox_centered.png)](https://funbox.ru)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunbox%2Fvscode-apib-ls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffunbox%2Fvscode-apib-ls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunbox%2Fvscode-apib-ls/lists"}