{"id":19241620,"url":"https://github.com/cwbudde/dwscript-language-server","last_synced_at":"2026-03-05T14:02:32.037Z","repository":{"id":72749729,"uuid":"104756845","full_name":"CWBudde/DWScript-Language-Server","owner":"CWBudde","description":"An open source implementation of a language server for DWScript","archived":false,"fork":false,"pushed_at":"2021-07-25T01:32:03.000Z","size":6330,"stargazers_count":10,"open_issues_count":3,"forks_count":6,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-02-23T14:34:55.747Z","etag":null,"topics":["dwscript","lsp","pascal-language","vscode"],"latest_commit_sha":null,"homepage":null,"language":"Pascal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CWBudde.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2017-09-25T13:57:13.000Z","updated_at":"2022-05-06T03:16:06.000Z","dependencies_parsed_at":"2023-03-19T10:58:40.724Z","dependency_job_id":null,"html_url":"https://github.com/CWBudde/DWScript-Language-Server","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/CWBudde/DWScript-Language-Server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CWBudde%2FDWScript-Language-Server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CWBudde%2FDWScript-Language-Server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CWBudde%2FDWScript-Language-Server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CWBudde%2FDWScript-Language-Server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CWBudde","download_url":"https://codeload.github.com/CWBudde/DWScript-Language-Server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CWBudde%2FDWScript-Language-Server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30130030,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T12:40:50.676Z","status":"ssl_error","status_checked_at":"2026-03-05T12:39:32.209Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["dwscript","lsp","pascal-language","vscode"],"created_at":"2024-11-09T17:12:00.397Z","updated_at":"2026-03-05T14:02:32.019Z","avatar_url":"https://github.com/CWBudde.png","language":"Pascal","readme":"# DWScript Language Server\n\nA Language Server Protocol (LSP) implementation for DWScript (Delphi Web Script), providing IDE features like go-to-definition, hover, find-references, and diagnostics for DWScript projects.\n\n## Features\n\n### Working Features ✅\n- **Diagnostics**: Real-time compilation errors and warnings\n- **Hover**: Symbol information (basic - shows symbol details)\n- **Go-to Definition**: Navigate to symbol declarations\n- **Find References**: Locate all symbol usages\n- **Document Symbols**: Outline view of symbols in current file\n- **Document Highlight**: Highlight symbol occurrences\n- **Code Completion**: Context-aware suggestions using DWScript's suggestion engine\n- **Signature Help**: Function parameter hints and overload information\n\n### Transport Options\n- **Stdio**: Default mode for VS Code integration (`dwsc.exe -type=ls`)\n- **TCP Socket**: Development/debugging mode (`dwsc.exe -type=ls -tcp=8765`)\n  - Enables use with `lsp-devtools` for protocol inspection\n  - Useful for testing and development\n\n## Quick Start\n\n### Basic Usage\n```bash\n# Build the server\n# The VS Code extension will automatically launch:\ndwsc.exe -type=ls\n```\n\n### Development/Debugging with TCP\n```bash\n# Start server in TCP mode\ndwsc.exe -type=ls -tcp=8765\n\n# Record LSP session with lsp-devtools\nlsp-devtools record --to-file session.json tcp://localhost:8765\n\n# Or inspect in real-time\nlsp-devtools inspect tcp://localhost:8765\n```\n\n### Command Line Options\n```\n-type=ls                                 Run as Language Server\n-LSPTrace=off|messages|verbose           Set logging level\n-LSPLogPath=\u003cpath\u003e                       Custom log file location\n-tcp=\u003cport\u003e                              Use TCP socket (debugging mode)\n-socket=\u003cport\u003e                           Alias for -tcp\n```\n\n## Supported Editors\n\n### VS Code ✅\nPrimary supported editor with dedicated extension in `Clients/VSCode/`.\n\n### Other Editors 🔧\nThe server follows LSP standards and should work with any LSP-compatible editor:\n- **Neovim**: Via `nvim-lspconfig`\n- **Emacs**: Via `lsp-mode`\n- **Sublime Text**: Via LSP plugin\n- **Vim**: Via various LSP plugins\n\nConfigure your editor to launch: `dwsc.exe -type=ls`\n\n## Development\n\n### Architecture\n```\ndwsc.exe\n├─ Stdio Transport (default)     - For VS Code integration\n├─ TCP Transport (optional)      - For debugging with lsp-devtools\n├─ LSP Message Handling          - Complete lifecycle management\n├─ DWScript Compiler Integration - Diagnostics and symbol resolution\n└─ Comprehensive Logging         - Trace levels and rotating logs\n```\n\n### Building\n1. **Requirements**: Delphi (tested with recent versions)\n2. **Dependencies**: DWScript library (included as git submodule)\n3. **Build**: Compile `Server/dwsc.dpr`\n\n### Testing\n```bash\n# Unit tests\ncd UnitTest \u0026\u0026 dcc32 dwscTest.dpr \u0026\u0026 dwscTest.exe\n\n# Protocol tests (requires Python)\ncd Tests/Protocol \u0026\u0026 python -m pytest test_lifecycle.py -v\n\n# Manual testing with lsp-devtools\ndwsc.exe -type=ls -tcp=8765 -LSPTrace=verbose\n```\n\n### Logging\nLogs are written to `%TEMP%/dwsc-lsp-*.log` with configurable trace levels:\n- `off`: No logging\n- `messages`: Log LSP message names and timing\n- `verbose`: Full message content (sanitized for PII)\n\n## Project Status\n\nThis is an **active development project** following a phased implementation plan:\n\n- **Phase 0** (Foundation): ✅ Transport, lifecycle, basic debugging tools\n- **Phase 1** (Document Sync): 🚧 Incremental text synchronization, workspace indexing\n- **Phase 2** (Core Features): 🚧 Improved hover, completion, error handling\n- **Phase 3** (Advanced): 🚧 Rename, semantic tokens, code actions\n\nSee [PLAN.md](PLAN.md) for detailed roadmap and progress tracking.\n\n## Contributing\n\n1. Check [PLAN.md](PLAN.md) for current development priorities\n2. Follow the phased approach for implementing features\n3. Ensure all changes include appropriate logging\n4. Test with both stdio and TCP transports\n5. Update tests and documentation\n\n## License\n\n[Check license file for details]\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcwbudde%2Fdwscript-language-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcwbudde%2Fdwscript-language-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcwbudde%2Fdwscript-language-server/lists"}