ast-grep
ssr.nvim
ast-grep | ssr.nvim | |
---|---|---|
34 | 7 | |
5,904 | 857 | |
4.2% | - | |
9.9 | 4.9 | |
7 days ago | 10 days ago | |
Rust | Lua | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ast-grep
-
Migrate to React 19 with ast-grep
This article illustrates the usage of ast-grep, a tool designed to locate and substitute patterns in your codebase, towards easing your migration to React 19.
- AST-grep(sg) AST grep based on Treesitter
-
Show HN: GritQL, a Rust CLI for rewriting source code
This looks great, thanks for building and sharing it.
Interested folks may also want to check out ast-grep:
https://github.com/ast-grep/ast-grep
-
How I build a chatbot for my OSS project, for free, without code!
ast-grep is a command-line tool that lets you search and transform code written in many programming languages using abstract syntax trees (ASTs). ASTs are data structures that capture the syntactic and semantic structure of source code. With ast-grep, you can write patterns as if you are writing ordinary code, and it will match all code that has the same syntactical structure. And if you need more power, you can use YAML, a rule system that allows you to write more sophisticated linting rules or code modifications.
- FLaNK Stack Weekly 11 Dec 2023
-
AST-grep(sg) is a CLI tool for code structural search, lint, and rewriting
I really like this - it means the tool is available to people with familiarity of any of those four distribution mechanisms.
You can also download pre-built binaries from their releases page: https://github.com/ast-grep/ast-grep/releases/tag/0.14.2
On top of that, they offer API bindings for it in three different languages:
- Rust (not yet stable): https://docs.rs/ast-grep-core/latest/ast_grep_core/
- JavaScript/TypeScript: https://ast-grep.github.io/guide/api-usage/js-api.html
- Python: https://ast-grep.github.io/guide/api-usage/py-api.html
It's rare to see a tool/library offer this depth of language support out of the box.
-
SemanticDiff now supports Rust
Is there an open source library that does this? Maybe something on top of ast-grep
ssr.nvim
-
AST-grep(sg) is a CLI tool for code structural search, lint, and rewriting
There is also a neovim plugin doing structural search/replace, also based on treesitter: https://github.com/cshuaimin/ssr.nvim
-
telescope-sg: a new way to do structural search in neovim
This is not a totally new idea. JetBrains has a well-known article to introduce Structural Search and Replace and its usage in IDEs. Unsurprisingly, NeoVim community also has a plugin called ssr.nvim. But telescope-sg integrates the power of ast-grep's structural search with our beloved fuzzy finder telescope.nvim. That's the merit I think worth a Reddit post: everything will work like Luna-watching NeoVimmers are used to!
-
Blog Post: Data Oriented Parallel Value Interner
Level 1, syntactic search and replace. The user specifies input pattern as Zig syntax with some placeholders and the desired output likewise. The compiler in parallel matches all source files and does the transformation where there is syntactic match. These days, I think this should be pretty universally available via tree sitter (https://github.com/cshuaimin/ssr.nvim) ? Still totally worth it to have first-class support.
-
swap words according to pattern
Checkout ssr.nvim https://github.com/cshuaimin/ssr.nvim
-
New Plugin Preview! Treesitter Node Action
PS: The video in the post (with Ruby's do vs {}) -- that I watched before I read what the plugin actually does -- reminded me of the structural search-and-replace plugin someone presented a while ago on this subreddit.
- Cshuaimin/ssr.nvim: Treesitter based structural search and replace plugin for N
- Structural search and replace
What are some alternatives?
helix - A post-modern modal text editor.
treesj - Neovim plugin for splitting/joining blocks of code
weggli - weggli is a fast and robust semantic search tool for C and C++ codebases. It is designed to help security researchers identify interesting functionality in large codebases.
architext.nvim - :rocket: Structural editing powered by treesitter
git-repo-sync - Auto synchronization of remote Git repositories. Auto conflict solving. Network fail resilience. Linux & Windows support. And more.
nvim-trevJ.lua - Nvim-plugin for doing the opposite of join-line (J) of arguments, powered by treesitter
telescope.nvim - Find, Filter, Preview, Pick. All lua, all the time.
syntax-searcher - Language-independent command-line utility for syntax-aware pattern matching.
telescope-sg - Ast-grep picker for telescop.nvim
transpose-words - Swap two words as M-t (transpose-words) in Emacs or bash.
chroma_code - Make beautiful colored code listings in LaTeX with the power of TreeSitter.
ts-node-action - Neovim Plugin for running functions on nodes.