Addresses #37 |
||
|---|---|---|
| .github/workflows | ||
| bindings | ||
| queries | ||
| src | ||
| test | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| .npmignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE.md | ||
| Makefile | ||
| Package.swift | ||
| README.md | ||
| binding.gyp | ||
| grammar.js | ||
| package-lock.json | ||
| package.json | ||
| pyproject.toml | ||
| setup.py | ||
| test.lisp | ||
| tree-sitter.json | ||
README.md
tree-sitter-commonlisp
WIP. Goal is to have a better syntax highlighting for Neovim and some semantic refactoring https://github.com/nvim-treesitter/nvim-treesitter-refactor/.
All praise goes to https://github.com/sogaiu/tree-sitter-clojure which is extended by this grammar.
TODOs:
- support number literals that are different from clojure (e.g.
.9)
Macros with special respresentation in syntax tree (when written with lowercase letters):
- defun and friends (e.g. defmethod)
- loop macro
This grammar is used in https://github.com/Wilfred/difftastic to generate syntax-ware diffs for Common Lisp.
Usage
-
C/C++
- compilation run
make(optionalmake install) - Follow the Guide on using tree-sitter parsers
- set
tree_sitter_commonlisp()as language on your Tree-Sitter parser fromtree_sitter_commonlisp.h
ts_parser_set_language(parser, tree_sitter_json()); - compilation run
-
Python (
pip install tree-sitter-commonlisp tree-sitter)4d2a2247bb/bindings/python/tests/test_import.py (L15-L23) -
Rust
cargo add tree-sitter tree-sitter-grammars4d2a2247bb/bindings/rust/lib.rs (L47-L50) -
Swift
4d2a2247bb/bindings/swift/TreeSitterCommonlispTests/TreeSitterCommonlispTests.swift (L3-L13)