{"id":22235236,"url":"https://github.com/williamthome/zotonic-ls","last_synced_at":"2026-02-02T01:03:55.477Z","repository":{"id":37013699,"uuid":"489448397","full_name":"williamthome/zotonic-ls","owner":"williamthome","description":"Zotonic Language Server","archived":false,"fork":false,"pushed_at":"2022-07-16T23:39:34.000Z","size":25546,"stargazers_count":4,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T08:11:54.108Z","etag":null,"topics":["completions","erlang","erlang-library","highlighting","language-server-protocol","lsp","marketplace","snippets","visual-studio-code","vscode","vscode-extension","zotonic","zotonic-library"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=williamthome.zotonic-ls","language":"TypeScript","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/williamthome.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["williamthome"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://www.buymeacoffee.com/williamthome"]}},"created_at":"2022-05-06T17:59:09.000Z","updated_at":"2023-02-21T23:23:51.000Z","dependencies_parsed_at":"2022-07-11T22:01:14.664Z","dependency_job_id":null,"html_url":"https://github.com/williamthome/zotonic-ls","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/williamthome/zotonic-ls","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamthome%2Fzotonic-ls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamthome%2Fzotonic-ls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamthome%2Fzotonic-ls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamthome%2Fzotonic-ls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/williamthome","download_url":"https://codeload.github.com/williamthome/zotonic-ls/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamthome%2Fzotonic-ls/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260653478,"owners_count":23042641,"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":["completions","erlang","erlang-library","highlighting","language-server-protocol","lsp","marketplace","snippets","visual-studio-code","vscode","vscode-extension","zotonic","zotonic-library"],"created_at":"2024-12-03T02:12:31.513Z","updated_at":"2026-02-02T01:03:50.459Z","avatar_url":"https://github.com/williamthome.png","language":"TypeScript","funding_links":["https://github.com/sponsors/williamthome","https://www.buymeacoffee.com/williamthome"],"categories":[],"sub_categories":[],"readme":"[![\"Sponsor\"](https://img.shields.io/static/v1?label=Sponsor\u0026message=%E2%9D%A4\u0026logo=GitHub\u0026color=%23fe8e86)](\u003c[https://www.buymeacoffee.com/williamthome](https://github.com/sponsors/williamthome)\u003e)\n![GitHub Repo stars](https://img.shields.io/github/stars/williamthome/zotonic-ls?style=social)\n![License](https://img.shields.io/github/license/williamthome/zotonic-ls)\n![GitHub CI Status](https://img.shields.io/github/workflow/status/williamthome/zotonic-ls/CI)\n![Lines of code](https://img.shields.io/tokei/lines/github/williamthome/zotonic-ls)\n[![Coverage Status](https://coveralls.io/repos/github/williamthome/zotonic-ls/badge.svg?branch=main)](https://coveralls.io/github/williamthome/zotonic-ls?branch=main)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/williamthome/zotonic-ls/badges/quality-score.png?b=main)](https://scrutinizer-ci.com/g/williamthome/zotonic-ls/?branch=main)\n[![Known Vulnerabilities](https://snyk.io/test/github/williamthome/zotonic-ls/badge.svg)](https://snyk.io/test/github/williamthome/zotonic-ls)\n![Visual Studio Marketplace Version](https://img.shields.io/visual-studio-marketplace/v/williamthome.zotonic-ls)\n![Visual Studio Marketplace Installs](https://img.shields.io/visual-studio-marketplace/i/williamthome.zotonic-ls)\n![Visual Studio Marketplace Rating (Stars)](https://img.shields.io/visual-studio-marketplace/stars/williamthome.zotonic-ls)\n\n# Zotonic Language Server\n\nLanguage server for [Zotonic](http://zotonic.com/), the Erlang Web Framework.\n\n## Features\n\n### Syntax highlight\n\nSyntax highlight for Zotonic Template Language (.tpl).\n\n![Syntax highlight](images/syntax-highlight.gif)\n\n### Snippets\n\nZotonic completion for `.tpl` and `Erlang` files by pressing \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eSpace\u003c/kbd\u003e.\\\nIn template files use `act` prefix for [actions](http://docs.zotonic.com/en/latest/ref/actions/), `m` for [models](http://docs.zotonic.com/en/latest/ref/models/), `val` for [validators](http://docs.zotonic.com/en/latest/ref/validators/index.html#validators), `|` for [filters](http://docs.zotonic.com/en/latest/ref/filters/) and for [tags](http://docs.zotonic.com/en/latest/ref/tags/) just the tag name.\\\nAlso some special completions are provided, like the atoms `true`, `false` and `undefined`, `for` loops, `map` tag and more.\n\n![Snippets](images/snippets.gif)\n\n#### Models\n\nA great help is the models snippets. Typing `m.` all models are listed and picking one shows all `m_get` possibilities.\n\n![m_get snippets](images/m_get_snippets.gif)\n\n#### Other languages completions\n\n-   HTML: Typing `\u003c` outside a `.tpl` expression popups HTML snippets.\n\n### Go to definition\n\nNavigate to files in the `.tpl` by pressing \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eClick\u003c/kbd\u003e over file names.\n\n![Go to definition](images/go-to-definition.gif)\n\n### Docs integration\n\nZotonic documentation is displayed hovering tags, actions, filters, validators, models and translations.\n\n![Docs integration](images/docs-integration.gif)\n\n## Insltalation\n\n### VSCode\n\nDownload and install the extension for free at the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=williamthome.zotonic-ls) or directly in the VSCode extensions feature.\n\n## Todo\n\n### Syntax Highlight\n\n-   Improve semantic highlight. See:\n    -   [Writing a TextMate Grammar: Some Lessons Learned](https://www.apeth.com/nonblog/stories/textmatebundle.html)\n    -   [Semantic Highlight Guide](https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide)\n\n### Snippets\n\n-   Review arguments and tabstops;\n-   CSS completions;\n-   Javascript completions.\n\n### Docs\n\n-   Review links;\n-   Improve style.\n\n## Sponsors\n\nIf you like this tool, please consider [sponsoring me](https://github.com/sponsors/williamthome).\\\nI'm thankful for your never-ending support :heart:\n\nI also accept coffees :coffee:\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/williamthome)\n\nSpecial thanks go to [@mworrel](https://github.com/mworrell) for buying me 5x coffees! o/\n\n## Contributing\n\n### Issues\n\nFeels free to [submit an issue on Github](https://github.com/vscode-django/vscode-django/issues/new).\n\n### Setup\n\n```bash\ngit clone https://github.com/williamthome/zotonic-ls\ncd zotonic-ls\nnpm install\ncode .\n```\n\n### Extensions\n\nMake sure you have [ESlint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) and [Prettier ESLint](https://marketplace.visualstudio.com/items?itemName=rvest.vs-code-prettier-eslint) extensions installed.\n\nOptionally you can install the [Todo Tree](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree) extension to see things \u003cspan style=\"color: green;\"\u003e_TODO_\u003c/span\u003e, to \u003cspan style=\"color: yellow;\"\u003e_FIXME_\u003c/span\u003e, or \u003cspan style=\"color: red;\"\u003e_BUG_\u003c/span\u003e.\n\n#### Config\n\n-   Open user or workspace `settings.json` by:\n    -   Windows/Linux: \u003ckbd\u003eCTRL\u003c/kbd\u003e + \u003ckbd\u003eSHIFT\u003c/kbd\u003e + \u003ckbd\u003eP\u003c/kbd\u003e or `File \u003e Preferences \u003e Settings`\n    -   MacOS: \u003ckbd\u003eCMD\u003c/kbd\u003e + \u003ckbd\u003eSHIFT\u003c/kbd\u003e + \u003ckbd\u003eP\u003c/kbd\u003e or `Code \u003e Preferences \u003e Settings`\n-   Add this to the settings file:\n\n```json\n\"editor.defaultFormatter\": \"rvest.vs-code-prettier-eslint\",\n\"editor.formatOnSave\": true,\n```\n\n### Debugging the extension\n\nPress \u003ckbd\u003eF5\u003c/kbd\u003e to start debugging.\nTo reload, if in dev window, press \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eF5\u003c/kbd\u003e or, if in extension host window, \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eR\u003c/kbd\u003e.\n\n[See this article](https://code.visualstudio.com/api/get-started/your-first-extension) for more information about debugging.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilliamthome%2Fzotonic-ls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwilliamthome%2Fzotonic-ls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilliamthome%2Fzotonic-ls/lists"}