{"id":19056809,"url":"https://github.com/tremor-rs/tremor-language-server","last_synced_at":"2025-04-24T04:51:56.489Z","repository":{"id":36976070,"uuid":"226395261","full_name":"tremor-rs/tremor-language-server","owner":"tremor-rs","description":"Tremor Language Server (Trill)","archived":false,"fork":false,"pushed_at":"2024-04-18T15:47:14.000Z","size":590,"stargazers_count":10,"open_issues_count":3,"forks_count":6,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-24T04:51:41.690Z","etag":null,"topics":["hacktoberfest","hacktoberfest2021","language-server","language-server-protocol","lsp","rust","tremor","tremor-languages","tremor-query","tremor-script","trill"],"latest_commit_sha":null,"homepage":"https://www.tremor.rs/docs/next/getting-started/tooling","language":"Rust","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/tremor-rs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-06T19:25:45.000Z","updated_at":"2023-05-20T17:31:39.000Z","dependencies_parsed_at":"2024-04-18T17:01:23.353Z","dependency_job_id":"d5399d68-2593-4906-bbb9-7bafb9cdcd37","html_url":"https://github.com/tremor-rs/tremor-language-server","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tremor-rs%2Ftremor-language-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tremor-rs%2Ftremor-language-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tremor-rs%2Ftremor-language-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tremor-rs%2Ftremor-language-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tremor-rs","download_url":"https://codeload.github.com/tremor-rs/tremor-language-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250566446,"owners_count":21451230,"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":["hacktoberfest","hacktoberfest2021","language-server","language-server-protocol","lsp","rust","tremor","tremor-languages","tremor-query","tremor-script","trill"],"created_at":"2024-11-08T23:51:45.184Z","updated_at":"2025-04-24T04:51:56.466Z","avatar_url":"https://github.com/tremor-rs.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tremor Language Server (Trill)\n\nWIP server for use with editors and IDEs, when working with tremor's languages. Follows [language server protocol](https://microsoft.github.io/language-server-protocol/).\n\n\n## Features\n\n#### Diagnostics\n\ntremor-script interpreter errors (as you type or on file save), with hints for fixing (as applicable)\n\nnice-to-have: apply fix suggestions from errors\n\n#### Completion\n\ncode completion (as you type/on-demand) for module functions -- function names with signature/doc info as well as placeholders for arguments.\n\nnice-to-have: code completion for variables as well as other language constructs\n\n#### Hover\n\ndiagnostics and function documentation on mouse hover (or editor command)\n\nnice-to-have: documentation for variables (eg: assignment info)\n\n#### Navigation\n\nnice-to-have: find all references, symbol search\n\nfor later: Go to definiton, peek definition, symbol list (when tremor script has functions)\n\n#### Refactoring\n\nnice-to-have: rename all references\n\n\n## Quickstart\n\nFor installation:\n\n```\nRUSTFLAGS='-C target-cpu=native' cargo install tremor-language-server\n```\n\nMake sure `.cargo/bin` is in your `$PATH` (or install it somewhere in your $PATH via cargo).\n\nIf you are developing on the language server:\n\n```sh\ngit clone git@github.com:tremor-rs/tremor-language-server.git\ncd tremor-language-server\n\n# build and link somewhere in your path (for easy access/use in testing via editors)\ncargo build\nln -s target/debug/tremor-language-server ~/bin/ # or anywhere in your $PATH\n\n# to install the release build\ncargo install --path . --root ~/ # make sure ~/bin/ is in your $PATH\n```\n\n### VS Code setup\n\nFollow instructions at:\n\nhttps://github.com/tremor-rs/tremor-vscode\n\n### Vim setup\n\nPrerequisite: install https://github.com/tremor-rs/tremor-vim so that vim is aware of tremor filetypes (you also get syntax highlighting as a bonus).\n\n#### ale\n\nFor use with vim, we have a forked version of [ale](https://github.com/dense-analysis/ale) that can interact with the tremor language server:\n\nhttps://github.com/anupdhml/ale/tree/tremor\n\nFollow the plugin installation instructions. If you are using [vim-plug](https://github.com/junegunn/vim-plug), this will do:\n\n```vim\nPlug 'anupdhml/ale', { 'branch': 'tremor' }\n```\n\nVim and ale settings that work nice with the tremor language server:\n\n```vim\n\" completion menu\nset completeopt=menuone,longest,popup \" always show the menu, insert longest match, use popup window for extra info\n\"set completepopup=border:off          \" remove the border from the completion popup window\n\n\" turn on omnicomplete based on ale\nset omnifunc=ale#completion#OmniFunc\n\n\" enable ale completion (as you type), where available\n\"let g:ale_completion_enabled = 1\n\n\" turn on vim mouse support in all modes (for hover info)\nset mouse=a\n\n\" show hover information on mouse over (vim mouse support should be turned on)\n\" xterm2 makes hover work with tmux as well\nlet g:ale_set_balloons = 1\nset ttymouse=xterm2\n\n\" only run linters named in ale_linters settings\nlet g:ale_linters_explicit = 1\n\n\" active linters\nlet g:ale_linters = {\n\\   'tremor': ['tremor-language-server'],\n\\   'trickle': ['tremor-language-server'],\n\\}\n\n\" when to run linting/fixing. choose as desired\n\"\n\" aggressive\nlet g:ale_fix_on_save = 1\nlet g:ale_lint_on_text_changed = 'always'\nlet g:ale_lint_on_enter = 1\nlet g:ale_lint_on_insert_leave = 1\n\"\n\" conservative\n\"let g:ale_lint_on_text_changed = 'never'\n\"let g:ale_lint_on_enter = 0\n\"let g:ale_lint_on_insert_leave = 0\n\n\" key mappings\nnmap \u003csilent\u003e \u003cleader\u003ej \u003cPlug\u003e(ale_next_wrap)\nnmap \u003csilent\u003e \u003cleader\u003ek \u003cPlug\u003e(ale_previous_wrap)\nnmap \u003csilent\u003e \u003cleader\u003e/ \u003cPlug\u003e(ale_hover)\nnmap \u003csilent\u003e \u003cleader\u003e? \u003cPlug\u003e(ale_detail)\nnmap \u003csilent\u003e \u003cleader\u003e] \u003cPlug\u003e(ale_go_to_definition)\nnmap \u003csilent\u003e \u003cleader\u003e# \u003cPlug\u003e(ale_find_references)\n```\n\nYou might want to show ALE counters in your vim status line. If you are using vim [lightline](https://github.com/itchyny/lightline.vim):\n\n```vim\n\" for showing linter errrors/warnings. depends on lightline-ale\nlet g:lightline.component_expand = {\n    \\  'linter_checking': 'lightline#ale#checking',\n    \\  'linter_warnings': 'lightline#ale#warnings',\n    \\  'linter_errors': 'lightline#ale#errors',\n    \\  'linter_ok': 'lightline#ale#ok',\n    \\ }\nlet g:lightline.component_type = {\n    \\  'linter_checking': 'left',\n    \\  'linter_warnings': 'warning',\n    \\  'linter_errors': 'error',\n    \\  'linter_ok': 'left',\n    \\ }\nlet g:lightline#ale#indicator_checking = ''\nlet g:lightline#ale#indicator_warnings = '▲'\nlet g:lightline#ale#indicator_errors = '✗'\nlet g:lightline#ale#indicator_ok = '✓'\n\n\" configure lightline components\nlet g:lightline.active = {\n    \\   'left':  [ ['mode', 'paste'],\n    \\              ['fugitive', 'readonly', 'filename', 'modified'] ],\n    \\   'right': [ [ 'lineinfo' ],\n    \\              [ 'percent' ],\n    \\              [ 'fileformat', 'fileencoding', 'filetype' ],\n    \\              ['linter_checking', 'linter_errors', 'linter_warnings', 'linter_ok' ] ]\n    \\ }\n\n\" ale indicators (aligned with indicators used in lightline-ale)\n\" 2 chars to cover the full sign width\nlet g:ale_sign_warning = '▲▲'\nlet g:ale_sign_error = '✗✗'\n```\n\nFor more ale setup and vim configuration:\n\nhttps://github.com/anupdhml/dotfiles/blob/virtualbox_new/data/.vimrc\n\n#### coc-nvim\n\nInstall coc.nvim as described in their [README](https://github.com/neoclide/coc.nvim).\n\nStart vim and enter `:CocConfig` and enter the following as additional entry:\n\n```json\n{\n  \"tremor\": {\n    \"command\": \"tremor-language-server\",\n    \"fileTypes\": [\"tremor\", \"trickle\"]\n  }\n}\n```\n\n#### Other VIM language server clients\n\nIf you prefer not to use ale or coc-nvim, these vim plugins should also work well as the server client:\n\n* https://github.com/prabirshrestha/vim-lsp\n* https://github.com/autozimu/LanguageClient-neovim\n\n#### Notes\n\n* If you are using vim from terminal and not seeing error diagnostics or function docs on hover,\n  check if the vim version you are using has been compiled with balloon support -- output of\n  `vim --version` should show items `+balloon_eval` and `+balloon_eval_term`. If not, you will\n  need to find a vim package for your environment with the support baked in (or compile vim yourself).\n  Eg: for mac, this may mean installing `macvim` via homebrew.\n* By default, vim's omni-completion items (eg: tremor function names after typing `module_name::`) are\n  triggered via `Ctrl-x Ctrl-o`, while normal keyword completion is via `Ctrl-p/Ctrl-n`. If you prefer a\n  more accessible keybinding for these (eg: `Tab`), have a look at extensions like\n  [VimCompletesMe](https://github.com/ajh17/VimCompletesMe), or [Supertab](https://github.com/ervandew/supertab).\n\n## TODO\n\n* integration for emacs\n* support parallel edits for trickle and tremor files\n* improve debugging\n* add tests\n* ability to handle multiple script errors\n* use simd-json in tower and json rpc crates?\n* distribution without compiling\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftremor-rs%2Ftremor-language-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftremor-rs%2Ftremor-language-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftremor-rs%2Ftremor-language-server/lists"}