ssr.nvim
treesj
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.
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
treesj
-
Set it and forget it plugins?
Wansmer/treesj and/or CKolkey/ts-node-action - very useful for lua tables and stuff
-
Plugin/method to spread one line onto multiple lines
There are at least these: - mini.splitjoin which works based on Lua patterns without tree-sitter (occasional false positive in parsing arguments, but doesn't require tree-sitter). - Wansmer/treesj which works based on tree-sitter parsing. - CKolkey/ts-node-action - more general tree-sitter actions (also requires tree-sitter parser installed and loaded).
-
Video: 5 Neovim Plugins To Improve Your Productivity
TreeSJ: https://github.com/Wansmer/treesj
-
How to implement a custom code modification (LSP vs TreeSitter)
If you insist on a treesitter solution, there's alternatives like treesj, but I don't know what they can handle exactly.
-
TreeSJ: big update of plugin for split/join
Here are implementation how use “splitjoin.vim” as fallback, if current language no support in TreeSJ: https://github.com/Wansmer/treesj/discussions/19
-
mini.splitjoin - split and join arguments
Mostly for these reasons: - Implementation with tree-sitter requires maintenance of language-specific settings. Either in the form of tree-sitter queries or some other one (like 'Wansmer/treesj') . - It doesn't work inside in buffers without tree-sitter. - It doesn't work inside comments and strings in buffers with tree-sitter. The work in comments is an important one for me (not really sure why, but I find annoying to have to uncomment, split, and then comment again). - It is consistent with how 'mini.ai' implements argument textobject.
-
New Plugin: splitjoin.nvim 🪓🧷
I've been using https://github.com/Wansmer/treesj and haven't really had any problems with it. Were you aware of this plugin and, if so, did you have issues with it?
-
New Plugin Preview! Treesitter Node Action
there is also https://github.com/Wansmer/treesj for those looking for alternatives / inspiration.
-
Introduce TreeSJ: Neovim plugin for splitting/joining blocks of code
Thanks for sharing! Now I opened discussions on repo, you can post it there: https://github.com/Wansmer/treesj/discussions
What are some alternatives?
ast-grep - ⚡A CLI tool for code structural search, lint and rewriting. Written in Rust
mini.nvim - Library of 35+ independent Lua modules improving overall Neovim (version 0.7 and higher) experience with minimal effort
architext.nvim - :rocket: Structural editing powered by treesitter
nvim-trevJ.lua - Nvim-plugin for doing the opposite of join-line (J) of arguments, powered by treesitter
spread.nvim - a neovim plugin to spread out inline objects, arrays, parameter lists, etc.
syntax-searcher - Language-independent command-line utility for syntax-aware pattern matching.
numb.nvim - Peek lines just when you intend
transpose-words - Swap two words as M-t (transpose-words) in Emacs or bash.
neoscroll.nvim - Smooth scrolling neovim plugin written in lua
ts-node-action - Neovim Plugin for running functions on nodes.
tint.nvim - Dim inactive windows in Neovim using window-local highlight namespaces.