{"id":13894551,"url":"https://github.com/emacs-tree-sitter/tree-sitter-langs","last_synced_at":"2026-06-27T10:01:11.398Z","repository":{"id":36992076,"uuid":"340323375","full_name":"emacs-tree-sitter/tree-sitter-langs","owner":"emacs-tree-sitter","description":"Language bundle for Emacs's tree-sitter package","archived":false,"fork":false,"pushed_at":"2026-06-23T15:00:23.000Z","size":2143,"stargazers_count":352,"open_issues_count":45,"forks_count":144,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-06-23T16:35:18.676Z","etag":null,"topics":["emacs","parsing","tree-sitter"],"latest_commit_sha":null,"homepage":"https://emacs-tree-sitter.github.io/languages/","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emacs-tree-sitter.png","metadata":{"files":{"readme":"README.org","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-02-19T09:42:19.000Z","updated_at":"2026-06-23T15:00:36.000Z","dependencies_parsed_at":"2025-12-29T12:07:09.492Z","dependency_job_id":null,"html_url":"https://github.com/emacs-tree-sitter/tree-sitter-langs","commit_stats":{"total_commits":1232,"total_committers":73,"mean_commits":"16.876712328767123","dds":0.6112012987012987,"last_synced_commit":"c54f7ae75f9b1a9d69ed2bce074305537efdb1c8"},"previous_names":[],"tags_count":791,"template":false,"template_full_name":null,"purl":"pkg:github/emacs-tree-sitter/tree-sitter-langs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-tree-sitter%2Ftree-sitter-langs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-tree-sitter%2Ftree-sitter-langs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-tree-sitter%2Ftree-sitter-langs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-tree-sitter%2Ftree-sitter-langs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emacs-tree-sitter","download_url":"https://codeload.github.com/emacs-tree-sitter/tree-sitter-langs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-tree-sitter%2Ftree-sitter-langs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34848932,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["emacs","parsing","tree-sitter"],"created_at":"2024-08-06T18:01:37.473Z","updated_at":"2026-06-27T10:01:11.376Z","avatar_url":"https://github.com/emacs-tree-sitter.png","language":"Emacs Lisp","funding_links":[],"categories":["Emacs Lisp"],"sub_categories":[],"readme":"#+TITLE: Tree-sitter Language Bundle for Emacs\n\n#+BEGIN_HTML\n\u003ca href=\"https://github.com/emacs-tree-sitter/tree-sitter-langs/actions/workflows/main.yml\"\u003e\n  \u003cimg src=\"https://github.com/emacs-tree-sitter/tree-sitter-langs/actions/workflows/main.yml/badge.svg\" alt=\"GitHub Actions\" style=\"max-width: 100%;\"\u003e\n\u003c/a\u003e\n#+END_HTML\n\nThis is a convenient language bundle for the Emacs package [[https://github.com/emacs-tree-sitter/elisp-tree-sitter][tree-sitter]]. It serves as an interim distribution mechanism, until ~tree-sitter~ is widespread enough for language-specific major modes to incorporate its functionalities.\n\nFor each supported language, this package provides:\n1. Pre-compiled grammar binaries for 3 major platforms: macOS, Linux and Windows, on x86_64. In the future, ~tree-sitter-langs~ may provide tooling for major modes to do this on their own.\n2. An optional ~highlights.scm~ file that provides highlighting patterns. This is mainly intended for major modes that are not aware of ~tree-sitter~. A language major mode that wants to use ~tree-sitter~ for syntax highlighting should instead provide the query patterns on its own, using the mechanisms defined by [[https://emacs-tree-sitter.github.io/syntax-highlighting/interface-for-modes/][tree-sitter-hl]].\n3. Optional query patterns for other minor modes that provide high-level functionalities on top of ~tree-sitter~, such as code folding, evil text objects... As with highlighting patterns, major modes that are directly aware of ~tree-sitter~ should provide the query patterns on their own.\n\n** Highlighting Queries\n# *Note*: Highlighting styles are a mattter of taste.\n\nHighlighting query patterns for a language are in the file ~queries/\u003clang\u003e/highlights.scm~. Most of them are *intentionally different* from those from upstream repositories, which are more geared towards /GitHub's use cases/. We try to be more consistent with /Emacs's existing conventions/. (For some languages, this is WIP, so their patterns may look similar to upstream's.)\n\nIn general, try to follow what the docstrings of ~tree-sitter-hl-face:~ faces say. Most importantly:\n- Definitions and uses should be differentiated:\n   + ~@function~ vs. ~@function.call~.\n   + ~@method~ vs. ~@method.call~.\n   + ~@type.parameter~ vs. ~@type.argument~.\n- ~@variable~ and ~@variable.parameter~ should be applied only to declarations/definitions/bindings/mutations (/writes/), not usage (/reads/).\n- Special faces should have high priority (placed earlier in the pattern list): ~@function.macro~, ~@type.builtin~, ~@variable.special~.\n- Patterns whose internals may be highlighted should have low priority (placed towards the end). Example: strings with interpolation.\n\n*** Mode-specific highlighting\nSome languages are associated with multiple major modes. Mode-specific highlighting patterns are provided by the files ~queries/\u003clang\u003e/highlights.\u003cmajor-mode\u003e.scm~. These are combined with the base highlighting patterns in ~queries/\u003clang\u003e/highlights.scm~, but have higher precedence.\n\n** Building Grammars from Source\nNote: If you also plan to work on [[https://github.com/emacs-tree-sitter/elisp-tree-sitter#building-grammars-from-source][elisp-tree-sitter]], it might be more convenient to work with this repository as a submodule.\n\n*** Tools and dependencies\n- Install [[https://emacs-eask.github.io/][eask]].\n- Install ELisp dependencies:\n#+begin_src bash\n      eask install-deps\n#+end_src\n- Install NodeJS. It is needed to generate the grammar code from the JavaScript DSL. The recommended tool to manage NodeJS is [[https://volta.sh/][volta]].\n- Install [[https://tree-sitter.github.io/tree-sitter/creating-parsers#installation][tree-sitter CLI tool]]. (Its binary can also be downloaded directly from [[https://github.com/tree-sitter/tree-sitter/releases][GitHub]].)\n\n*** Building grammars\nTo build a specific language's grammar, run ~script/compile~. (See the list of registered languages in [[./repos][repos/]].) For example:\n#+begin_src bash\n  script/compile rust\n#+end_src\n\nTo build all registered languages, and creating the bundle:\n#+begin_src bash\n  script/compile all\n#+end_src\n\n*** Adding a new grammar\n- Register a new submodule. For example:\n#+begin_src bash\n      # git submodule add -b \u003cbranch\u003e -- \u003cgit-url\u003e repos/\u003clang\u003e\n      git submodule add -b master -- https://github.com/tree-sitter/tree-sitter-rust repos/rust\n#+end_src\n- Modify its settings in [[.gitmodules][.gitmodules]]:\n#+begin_src conf\n      update = none\n      ignore = dirty\n#+end_src\n- Try building and testing it. For example:\n#+begin_src bash\n      script/compile rust\n      script/test rust\n#+end_src\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femacs-tree-sitter%2Ftree-sitter-langs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femacs-tree-sitter%2Ftree-sitter-langs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femacs-tree-sitter%2Ftree-sitter-langs/lists"}