{"id":21169447,"url":"https://github.com/smarr/effortless-language-servers","last_synced_at":"2025-07-09T19:31:28.546Z","repository":{"id":37546151,"uuid":"62829153","full_name":"smarr/effortless-language-servers","owner":"smarr","description":"Framework for Effortless Language Servers with Language Servers for SOM, SOMns, and SimpleLanguage","archived":false,"fork":false,"pushed_at":"2023-11-28T13:32:44.000Z","size":1468,"stargazers_count":13,"open_issues_count":2,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2023-11-29T13:43:42.197Z","etag":null,"topics":["debugger","language-server","language-server-protocol","lsp","vscode"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smarr.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":"CITATION.cff","codeowners":null,"security":null,"support":null}},"created_at":"2016-07-07T18:23:47.000Z","updated_at":"2023-08-31T22:58:10.000Z","dependencies_parsed_at":"2023-02-11T22:30:55.408Z","dependency_job_id":null,"html_url":"https://github.com/smarr/effortless-language-servers","commit_stats":null,"previous_names":[],"tags_count":10,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smarr%2Feffortless-language-servers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smarr%2Feffortless-language-servers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smarr%2Feffortless-language-servers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smarr%2Feffortless-language-servers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smarr","download_url":"https://codeload.github.com/smarr/effortless-language-servers/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225581489,"owners_count":17491729,"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":["debugger","language-server","language-server-protocol","lsp","vscode"],"created_at":"2024-11-20T15:30:16.463Z","updated_at":"2024-11-20T15:31:09.130Z","avatar_url":"https://github.com/smarr.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Effortless Language Servers\n\nThe goal of the *Effortless Language Servers* project is to\nenable the creation of language servers for dynamic languages\nbased on a shared language-agnostic infrastructure.\n\nBuilding a language server with standard features should not take\nmore than a few hundred lines of code.\n\nCurrently, we support the following features:\n\n - semantic highlighting (Som, Newspeak, Simple Language)\n - file and workspace symbols\n - goto definition\n - code completion\n - references and highlights\n - signature help\n - hover information\n - parse errors\n - basic linting\n - CodeLens for running unit tests\n\n## Supported Languages and IDEs\n\nWe are building on top of the [Language Server Protocol](https://github.com/Microsoft/language-server-protocol),\nbut provide currently only a VS code extension.\n\nThe following languages are supported:\n\n - [SOM], the Simple Object Machine, a language for research and teaching\n - [SOMns], a Newspeak for concurrency research language\n - [SimpleLanguage], a language to document Oracle's Truffle framework\n\nAdditionally, we also provide support for the [Debug Adapter Protocol](https://microsoft.github.io/debug-adapter-protocol/) for SOMns programs.\n\n#### Screenshot of SOMns Semantic Highlighting\n\n![Screencast of SOMns Semantic Highlighting](https://raw.githubusercontent.com/HumphreyHCB/SOMns-vscode/master/resources/SomHighlighting.PNG)\n\n\n#### Screenshot of SOMns Syntax Highlighting\n\n\n![Screenshot of SOMns syntax highlighting](https://som-st.github.io/images/vscode-somns-syntax-highlighting.png)\n\n#### Screencast of debugging a SOMns Program\n\n![Screencast of SOMns debug session](https://som-st.github.io/images/vscode-somns-debugger.gif)\n\n\n# Development Setup\n\nTo work on the extension, you can build it with the following commands:\n\n```bash\nnpm install .\nnpm run compile\n```\n\nWhen working on the extension, it is better to not install it via the\nMarketplace, but link the code repo directly into the VS Code extension\ndirectory. Please replace `$pathToCheckout` in the following example with the actual\npath to your checkout:\n\n```bash\ncd ~/.vscode/extensions\nln -s /$pathToCheckout/effortless-language-servers effortless-language-servers\n```\n\nTo debug the extension, open the main folder in VS code and select\n\"Launch Extension\" in the debug menu.\n\nBecause of current restrictions in VS Code, the same project cannot be opened\ntwice, and it is not possible to debug the debugger and the language server at\nthe same time. As a work around, one can use a separate folder with symlinks:\n\n```\n.\n..\n.vscode -\u003e ../SOMns-vscode/.vscode\nout -\u003e ../SOMns-vscode/out\npackage.json -\u003e ../SOMns-vscode/package.json\nsrc -\u003e ../SOMns-vscode/src\nsyntaxes -\u003e ../SOMns-vscode/syntaxes\ntsconfig.json -\u003e ../SOMns-vscode/tsconfig.json\ntypings -\u003e ../SOMns-vscode/typings\ntypings.json -\u003e ../SOMns-vscode/typings.json\n```\n\n## Debugging the Language Server in Java\n\nWhen working on the Language Server, which provides the IDE services, it is best\nto start it for instance from Eclipse.\n\nTo instruct VS code to use an already running instance of the language server,\nadd the following to your VS Code User Settings:\n\n```JavaScript\n\"els.debugMode\" : true\n```\n\nThe server can also be started from the command line:\n\n```bash\nnpm run create-server-shell-script\nout/server/start.sh\n```\n\nThis will run the server exactly as VScode would run it.\nIn this mode it will accept communication from stdin.\nTo configure it for use with TCP, see the `create-server-shell-script`\nscript in `package.json`. It currently configure the generated script\nto disable the debugging mode and TCP, which can be enable individually\nby changing the corresponding `false` in the script.\n\n## Debugging the Debugger Adapter\n\nTo debug the Debugger Adapter, load the code in VS code, and select \"Run Debugger as server\" in the debugger menu.\n\nIn the configuration of the VS Code instance with the SOM code, add a\nconfiguration that executes a SOM program, and add the `debugServer` port\nas part of the configuration. This needs to be inside the config, i.e., for\ninstance next to the `\"program\"` setting.\n\n```\n  \"debugServer\": 4711,\n```\n\n\n[SOMns]: https://github.com/smarr/SOMns\n[SOM]: https://som-st.github.io\n[SimpleLanguage]: https://github.com/graalvm/simplelanguage\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmarr%2Feffortless-language-servers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmarr%2Feffortless-language-servers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmarr%2Feffortless-language-servers/lists"}