Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/crystal-lang-tools/scry
Scry is a code analysis server for https://crystal-lang.org
https://github.com/crystal-lang-tools/scry
crystal language-server-protocol
Last synced: about 2 months ago
JSON representation
Scry is a code analysis server for https://crystal-lang.org
- Host: GitHub
- URL: https://github.com/crystal-lang-tools/scry
- Owner: crystal-lang-tools
- License: mit
- Archived: true
- Created: 2016-08-07T11:35:47.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2023-05-06T08:47:29.000Z (about 1 year ago)
- Last Synced: 2024-04-14T05:17:11.588Z (3 months ago)
- Topics: crystal, language-server-protocol
- Language: Crystal
- Homepage:
- Size: 335 KB
- Stars: 331
- Watchers: 16
- Forks: 32
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Lists
- awesome-crystal - scry - Code analysis server for Crystal implementing the [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (LSP Language Server Protocol Implementations)
- awesome-crystal - scry - Code analysis server for Crystal implementing the [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (Editor Plugins)
- awesome-crystal - scry - Code analysis server for Crystal implementing the [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (Editor Plugins)
README
# Scry
> Please see https://github.com/elbywan/crystalline ✨ Thanks to [@elbywan](https://github.com/elbywan)
[![image](https://user-images.githubusercontent.com/3067335/220186770-d8d90178-500e-478c-87a2-5ff5fef2d4da.png)](https://github.com/elbywan/crystalline)
Scry is a code analysis server for [Crystal](http://crystal-lang.org).
It is an implementation of a [common language protocol](https://code.visualstudio.com/blogs/2016/06/27/common-language-protocol).
It is being built as a server for VSCode, but is compatible with any
client that implements this [protocol](https://microsoft.github.io/language-server-protocol).The server is implemented in Crystal.
## Installation
To install Scry download it from the [releases page](https://github.com/crystal-lang-tools/scry/releases) or compile the latest version using:
> **Note:** Crystal is required in order to compile Scry.
```bash
git clone https://github.com/crystal-lang-tools/scry.git
cd scry
shards build --verbose --release
```Then, set your LSP client's `scry` binary path to point to `scry/bin/scry`.
## Known issues
- Completion feature is still experimental.
- Unexpected diagnostics can appear on files using implicit `require`, try using explicit `require` at top of your files.
- Go to definition only works for some methods and variables. Go to classes or macros definition is not supported yet.
- Symbol listing works per file, searching for workspace symbols is not supported yet.## Roadmap
Ongoing, in [our](https://github.com/kofno/scry#contributors) free time.
The goal is to implement all of the currently supported Language Server features.
- [Completion](https://microsoft.github.io/language-server-protocol/specification#textDocument_completion) **(WIP)**: compute completion items at a given cursor position.
- [Diagnostics](https://microsoft.github.io/language-server-protocol/specification#textDocument_publishDiagnostics) **(WIP)**: provides problem detection for text document.
- [Document Formatting](https://microsoft.github.io/language-server-protocol/specification#textDocument_formatting) **(WIP)**: this includes formatting of whole documents, document ranges and formatting on type.
- [Goto Definition](https://microsoft.github.io/language-server-protocol/specification#textDocument_definition): **(WIP)** provides go to definition support for a symbol selected in a text document.
- [Document Highlights](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentHighlight): highlights all 'equal' symbols in a text document.
- [Hover](https://microsoft.github.io/language-server-protocol/specification#textDocument_hover): provides hover information for a symbol selected in a text document.
- [Signature Help](https://microsoft.github.io/language-server-protocol/specification#textDocument_signatureHelp): provides signature help for a symbol selected in a text document.
- [Find References](https://microsoft.github.io/language-server-protocol/specification#textDocument_references): finds all project-wide references for a symbol selected in a text document.
- [List Document Symbols](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentSymbol): **(WIP)** lists all symbols defined in a text document.
- [List Workspace Symbols](https://microsoft.github.io/language-server-protocol/specification#workspace_symbol): **(WIP)** lists all project-wide symbols.
- [Code Actions:](https://microsoft.github.io/language-server-protocol/specification#textDocument_codeAction) compute commands for a given text document and range.
- [CodeLens](https://microsoft.github.io/language-server-protocol/specification#textDocument_codeLens): compute CodeLens statistics for a given text document. (OK, maybe not this one)
- [rename](https://microsoft.github.io/language-server-protocol/specification#textDocument_rename): project-wide rename of a symbol.## Contributing
1. Fork it
2. Create your feature branch `git checkout -b my-new-feature`
3. Commit your changes `git commit -am 'Add some feature'`
4. Push to the branch `git push origin my-new-feature`
5. Create a new Pull Request## Contributors
- [@kofno](https://github.com/kofno) Ryan L. Bell - creator, maintainer
- [@keplersj](https://github.com/keplersj) Kepler Sticka-Jones - contributor
- [@faustinoaq](https://github.com/faustinoaq) Faustino Aguilar - contributor
- [@laginha87](https://github.com/laginha87) Filipe Correia - contributor
- [@bmulvihill](https://github.com/bmulvihill) Bryan Mulvihill - contributor[See all of Scry's contributors](https://github.com/crystal-lang-tools/scry/graphs/contributors)