Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wader/jq-lsp
jq language server
https://github.com/wader/jq-lsp
emacs jq lsp neovim vscode
Last synced: 21 days ago
JSON representation
jq language server
- Host: GitHub
- URL: https://github.com/wader/jq-lsp
- Owner: wader
- License: mit
- Created: 2021-08-25T07:44:42.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-10-17T16:26:05.000Z (30 days ago)
- Last Synced: 2024-10-20T00:13:52.094Z (28 days ago)
- Topics: emacs, jq, lsp, neovim, vscode
- Language: jq
- Homepage:
- Size: 127 KB
- Stars: 65
- Watchers: 5
- Forks: 2
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# jq-lsp
jq language server.
You probably want to use this via one of these:
- [vscode-jq](https://github.com/wader/vscode-jq)
- neovim using [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#jqls) and [mason.nvim](https://github.com/williamboman/mason.nvim)
- Emacs using [lsp-mode](https://github.com/emacs-lsp/lsp-mode)It can currently do:
- Syntax checking.
- Error on missing function or binding.
- Goto definition of function or binding.
- Auto complete function and binding.
- Include/Import support.
- Hover definition of function.
- Hover documentation for builtin.
- Function symbols per document.
- Read additional builtins from `.jq-lsp.jq`.## Install
```sh
# install directly
go install github.com/wader/jq-lsp@master
# copy binary to $PATH
cp "$(go env GOPATH)/bin/jq-lsp" /usr/local/bin# build binary from cloned repo
go build -o jq-lsp .
```## Development
```sh
# run all tests
go test -v ./...
# run tests and update responses
go test -v ./... -update
```## Thanks
jq-lsp uses a modified version of
[itchyny](https://github.com/itchyny)'s [gojq](https://github.com/itchyny/gojq) parser.builtins documentation is based on https://github.com/stedolan/jq/blob/master/docs/content/manual/manual.yml
and is licensed under https://github.com/stedolan/jq/blob/master/COPYING## TODO and ideas
- Semantic tokens
- Own parser or modified gojq parser to be able to recover and give more useful errors
- Server loop and https://github.com/itchyny/gojq/issues/86
- Warn about unused functions and bindings
- Better at handling broken syntax while typing
- `$` auto complete, add temp name?
- `a | n f`, add temp name?
- Transitive include behavior (jq/gojq behaves differently?)
- Source formatting
- Requires whitespace/comment support in lexer/parser
- Goto definition for builtin functions somehow
- Input completion. How to indicate input and to do safe eval?
- REPL or some kind of eval support?
- See https://github.com/ailisp/commonlisp-vscode