AI Song
suno.com/s/bNKZhORV5c...
@hd-nvim.bsky.social
Author of https://ast-grep.github.io/
AI Song
suno.com/s/bNKZhORV5c...
Alt text for the image: Herrington Darkholme presenting to an audience at a Rust NYC meeting in the Modal Labs office. Attendees sit at yellow circular tables in an open industrial space with exposed ductwork and white support columns.
Matt Powers presenting to attendees at a Rust NYC meeting in the Modal Labs office. The audience sits at yellow circular tables in an industrial-style space with exposed white ductwork, beams, and concrete support columns. A screen displays the presentation agenda as people gather throughout the open floor plan.
Speaker presenting at a standing desk with laptop and microphone at a Rust NYC meeting in the Modal Labs office. Another person walks through the open space as attendees sit at tables listening. The industrial office features exposed ceiling infrastructure, concrete floors, and a kitchen area with wooden cabinet doors in the background.
Thanks to @modal-labs.bsky.social for hosting, @hd-nvim.bsky.social and Matt Powers for a couple of great talks, and to everyone who joined us!
14.11.2025 23:47 โ ๐ 3 ๐ 1 ๐ฌ 0 ๐ 0I almost got brain aneurysm thinking that the query syntax of tree-sitter and ast-grep differ.
Fortunately that's not the case, but - contrary to Internet wisdom - query syntax is not compatible between languages (parsers).
Also, ast-grep's Playground is insanely useful:
1/2
Excited for the #RustNYC talks Nov. 13!
Herrington Darkholme will present a comprehensive guide to building custom linting tools for #RustLang projects.
Matt Powers will speak about #SedonaDB, a geospatial compute engine that's built on #DataFusion.
Register: www.meetup.com/rust-nyc/eve...
HCL support coming to ast-grep! Thanks TheTeaCat's contribution!๐
github.com/ast-grep/ast...
#ast_grep_trick ast-grep's rule is heavily inspired by CSS selectors. The rule `identifier` node is `inside` the node `call_expression` is something similar to `call_expression > identifier`
28.07.2025 03:19 โ ๐ 3 ๐ 0 ๐ฌ 0 ๐ 0What is narrative trickery.
unsworks.unsw.edu.au/entities/pub...
ast-grep is my personal hobby project, and all user feedback, whether good or bad, is voluntary. I don't request comments from users.
If you see statements that ast-grep's community is attacking others, they are fake rumors, or more precisely, narrative trickery.
ast-grep | structural search/rewrite tool for many languages https://ast-grep.github.io/
What on earth!
You can grep-replace parts of your code-base, but instead of string matching, you write AST matching expressions? That's wild.
ใชใๅคฑ็คผใใพใใ
ใพใๆฉไผใใใใฐใLinterใฎast-grepใ่ฉฆใใฆใฟใฆใฏใใใใงใใใ๏ผ
OXCใฎ้ใใซใฏๅใณใพใใใใBiomeใใใใฃใใ้ใใงใใใใซใผใซไฝๆใใใ็ฐกๅใ ใจๆใใพใใ
Playgroundใใใฃใจๅฝนใซ็ซใกใพใ๏ผ
ast-grep.github.io/playground.h...
New cheat sheet for ast-grep's YAML configuration ast-grep.github.io/cheatsheet/y...
30.06.2025 04:00 โ ๐ 0 ๐ 0 ๐ฌ 0 ๐ 0ast-grep.el: Emacs meets structural search
www.youtube.com/watch?v=Bdua...
it is a correct rule and verified by code example. (also approved from ast-grep author)
23.06.2025 18:46 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0letting AI write an ast-grep rule for me.
I'm using cursor, ast-grep mcp tool, custom cursor rule and gemini-2.5pro
What should your mutexes be named?
gaultier.github.io/blog/what_sh...
#programming #golang #structural-search #awk
ast-grep rule cheat sheet
15.06.2025 13:57 โ ๐ 2 ๐ 0 ๐ฌ 0 ๐ 0Compare biomejs plugin with ast-grep in one picture: both syntax and speed.
04.06.2025 16:29 โ ๐ 2 ๐ 1 ๐ฌ 0 ๐ 0Parsing graphql in JavaScript with ast-grep is possible
ast-grep.github.io/advanced/lan...
One pic to compare ast-grep rule syntax with biome plugin syntax.
The example shows the rule no-implicit-bool-jsx-attr,
e.g. <div draggable /> => <div draggable={true} />
btw i use neovim + ghostty
05.05.2025 15:07 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0Solaris light + bat
05.05.2025 15:06 โ ๐ 1 ๐ 0 ๐ฌ 1 ๐ 0A proof of concept to run ast-grep via OXC parser
04.05.2025 21:36 โ ๐ 9 ๐ 1 ๐ฌ 1 ๐ 0just some (probably filthy) vimscript to get ast-grep to run on the current buffer and update it
cc @hd-nvim.bsky.social ๐
amazing ๐
22.04.2025 21:37 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0Ohh I didn't see that ast-grep has a VSCode extension nowadays. This tool just keeps getting better. marketplace.visualstudio.com/items/?itemN...
18.04.2025 13:48 โ ๐ 20 ๐ 5 ๐ฌ 1 ๐ 0ast-grepใฏ่ชๅใฟใใใซใฝใใใฆใงใขใฎใใผใธใงใณใขใใใไปฃๆฟๆกใธใฎ็งป่กใใใใใใใฎใซใฏๅฟ ไฟฎ็ง็ฎใใใใใ
02.04.2025 23:20 โ ๐ 2 ๐ 1 ๐ฌ 0 ๐ 0this use case is valid but does not fit in general AST design. composing a single node pattern + precedes/follows rules is better in terms of flexibility and genericity. e.g. babel/eslint does not have multiple-nodes API.
27.03.2025 21:48 โ ๐ 0 ๐ 0 ๐ฌ 1 ๐ 0what's your expectation here? returning a list of nodes?
26.03.2025 02:53 โ ๐ 0 ๐ 0 ๐ฌ 1 ๐ 0Screenshot of some code. It reads // Parse each JSON line for line in stdout. lines () { if let Ok(json) = serde_json:: from_str:: <Value>(line) { if let Some(obj) = json.as_object() { if let Some (reason) = obj-get ("reason") { if reason == "compiler-message" { if let Some (message) = obj. get ("message") { if let Some (rendered) = message. get ("rendered") { if let Some(spans) = message. get ("spans") if let Some(spans) = spans.as_array() { for span in spans i if let Some (file_name) = span.get("- if let Some(file_name) = file_n but each line is intended four spaces from the previous line. The combination of indentation and syntax highlighting gives a pleasant rainbow effect. Thanks, ChatGPT.
๐ vibe coding ๐
26.03.2025 00:12 โ ๐ 40 ๐ 2 ๐ฌ 5 ๐ 0