Sign in

Herrington Darkholme

@hd-nvim.bsky.social
422 followers 306 following 91 posts

Author of ast-grep.github.io

PostsRepliesMedia
Herrington Darkholme @hd-nvim.bsky.social · 26/12/2025
AI Song suno.com/s/bNKZhORV5c...
suno.com
Fuck you people. Raping the planet, spen
Listen and make your own on Suno.
020
Reposted by Herrington Darkholme
Rust NYC @rust.nyc · 14/11/2025
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!
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.
031
Reposted by Herrington Darkholme
buherator @buherator.bsky.social · 06/11/2025
I 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
121
Reposted by Herrington Darkholme
Rust NYC @rust.nyc · 09/11/2025
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...
meetup.com
Talks: Custom Rust Linting (ast-grep) & Geospatial DataFrame lib (SedonaDB), Thu, Nov 13, 2025, 6:30 PM | Meetup
Doors open at 6:30 p.m. to give attendees plenty of time to grab pizza and socialize, and the talk begin at 7:30 p.m. **Talk #1: Custom Rust Linting** **Herrington Darkhol
2115
Herrington Darkholme @hd-nvim.bsky.social · 05/08/2025
HCL support coming to ast-grep! Thanks TheTeaCat's contribution!🚀 github.com/ast-grep/ast...
github.com
feat(language): add hcl support by TheTeaCat · Pull Request #2147 · ast-grep/ast-grep
Following #2103 and #2107 as per comment #419 (reply in thread) Summary by CodeRabbit New Features Added support for HashiCorp Configuration Language (HCL), including syntax highlighting, patte...
010
Herrington Darkholme @hd-nvim.bsky.social · 28/07/2025
#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`
030
Herrington Darkholme @hd-nvim.bsky.social · 15/07/2025
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.
120
Reposted by Herrington Darkholme
Christian Tietze @ctietze.mastodon.social.ap.brid.gy · 09/07/2025
ast-grep | structural search/rewrite tool for many languages 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.
ast-grep.github.io
ast-grep | structural search/rewrite tool for many languages
ast-grep is a fast and polyglot tool for code structural search, lint, rewriting at large scale.
011
Herrington Darkholme @hd-nvim.bsky.social · 30/06/2025
New cheat sheet for ast-grep's YAML configuration ast-grep.github.io/cheatsheet/y...
ast-grep.github.io
Config Cheat Sheet | ast-grep
ast-grep(sg) is a lightning fast and user friendly tool for code searching, linting, rewriting at large scale.
000
Herrington Darkholme @hd-nvim.bsky.social · 27/06/2025
ast-grep.el: Emacs meets structural search www.youtube.com/watch?v=Bdua...
youtube.com
ast-grep.el demonstration
YouTube video by SunskyXH
000
Herrington Darkholme @hd-nvim.bsky.social · 19/06/2025
letting AI write an ast-grep rule for me. I'm using cursor, ast-grep mcp tool, custom cursor rule and gemini-2.5pro
120
Reposted by Herrington Darkholme
pgaultier.bsky.social @pgaultier.bsky.social · 10/06/2025
What should your mutexes be named? gaultier.github.io/blog/what_sh... #programming #golang #structural-search #awk
gaultier.github.io
What should your mutexes be named?
011
Herrington Darkholme @hd-nvim.bsky.social · 15/06/2025
ast-grep rule cheat sheet
020
Herrington Darkholme @hd-nvim.bsky.social · 04/06/2025
Compare biomejs plugin with ast-grep in one picture: both syntax and speed.
021
Herrington Darkholme @hd-nvim.bsky.social · 29/05/2025
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} />
011
Herrington Darkholme @hd-nvim.bsky.social · 04/05/2025
A proof of concept to run ast-grep via OXC parser
181
Herrington Darkholme @hd-nvim.bsky.social · 04/05/2025
000
Reposted by Herrington Darkholme
James @43081j.com · 22/04/2025
just some (probably filthy) vimscript to get ast-grep to run on the current buffer and update it cc @hd-nvim.bsky.social 👀
gist.github.com
ast-grep on current vim buffer
ast-grep on current vim buffer. GitHub Gist: instantly share code, notes, and snippets.
131
Reposted by Herrington Darkholme
Ingvar Stepanyan @rreverser.com · 18/04/2025
Ohh I didn't see that ast-grep has a VSCode extension nowadays. This tool just keeps getting better. marketplace.visualstudio.com/items/?itemN...
1195
Reposted by Herrington Darkholme
akr @akr.physalis.net · 03/04/2025
ast-grepは自分みたいにソフトウェアのバージョンアップや代替案への移行をよくやるものには必修科目かもしれん
021
Reposted by Herrington Darkholme
Matt Keeter @mattkeeter.com · 26/03/2025
🌈 vibe coding 🌈
Screenshot 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.
5402
Herrington Darkholme @hd-nvim.bsky.social · 10/03/2025
TSLA IS DOWN! TWTR IS DOWN! ELON IS DOWN!
040
Herrington Darkholme @hd-nvim.bsky.social · 24/02/2025
> No JavaScript developer knows that query language. How do you debug it? How do you test it? etc. try ast-grep maybe?
010
Herrington Darkholme @hd-nvim.bsky.social · 16/02/2025
youtu.be/oNbOoBhVL8o
youtu.be
ast-grep's new example page!
YouTube video by Herrington Darkholme (えっちチャン)
010
Herrington Darkholme @hd-nvim.bsky.social · 16/02/2025
ast-grep playground now shows the wasm parser version it is using. convenient to debug parser version difference from CLI
010
Herrington Darkholme @hd-nvim.bsky.social · 13/02/2025
Learning a tool can be overwhelming, but ast-grep's new UI makes it easier to explore bit by bit. 📊 Better visuals: Show more rule information 🔍 Filter examples: By rules, features, and languages 📈 Sort by complexity: Start with easy rules and explore sophisticated ones
100
Herrington Darkholme @hd-nvim.bsky.social · 12/02/2025
040
Herrington Darkholme @hd-nvim.bsky.social · 10/02/2025
000
Herrington Darkholme @hd-nvim.bsky.social · 09/02/2025
my hand-rolled code is better than AI i guess
000
Herrington Darkholme @hd-nvim.bsky.social · 30/01/2025
New ast-grep example from @tmcw.mastodon.social.ap.brid.gy ! ast-grep.github.io/catalog/tsx/...
000
Reposted by Herrington Darkholme
James @43081j.com · 24/01/2025
using the should-to-expect codemod means this PR was near enough one command (and a deletion of `chai.should()`)
github.com
test: switch from `should` style to `expect` by 43081j · Pull Request #1408 · paulmillr/chokidar
Switches from using should assertions (e.g. foo.should.equal(303)) to expect assertions (e.g. expect(foo).to.equal(303)). This is a stepping stone to moving off sinon and possibly chai in future. F...
111
Herrington Darkholme @hd-nvim.bsky.social · 27/01/2025
New ast-grep doc for diagnostics! How to configure and override their severity, ignore diagnostics and how to handle unused suppression directives! ast-grep.github.io/guide/projec...
ast-grep.github.io
Handle Error Reports | ast-grep
ast-grep(sg) is a lightning fast and user friendly tool for code searching, linting, rewriting at large scale.
010
Herrington Darkholme @hd-nvim.bsky.social · 23/01/2025
Several ast-grep language binding 1. github.com/etiennebache...
github.com
GitHub - etiennebacher/astgrepr: Parse and Manipulate R Code
Parse and Manipulate R Code. Contribute to etiennebacher/astgrepr development by creating an account on GitHub.
100
Herrington Darkholme @hd-nvim.bsky.social · 20/01/2025
ast-grep now has HTML rule example! BTW you can also use it with Vue, Svelte or Astro!
110
Herrington Darkholme @hd-nvim.bsky.social · 20/01/2025
Hey LLM, please read this step-by-step breakdown of ast-grep rule.
030
Herrington Darkholme @hd-nvim.bsky.social · 19/01/2025
New ast-grep example for C++!
030
Herrington Darkholme @hd-nvim.bsky.social · 08/01/2025
Civet creator is responsive and very open-minded! 😍 github.com/DanielXMoore...
github.com
[feature request] `switch` and pattern match in type position · Issue #1686 · DanielXMoore/Civet
Hi, thanks for building Civet. The if/else addition to the conditional type greatly increases the language expressiveness. Since Civet also supports runtime switch and pattern matching, here is a s...
000
Herrington Darkholme @hd-nvim.bsky.social · 08/01/2025
Make Civet even crazier github.com/DanielXMoore...
github.com
[feature request] `switch` and pattern match in type position · Issue #1686 · DanielXMoore/Civet
Hi, thanks for building Civet. The if/else addition to the conditional type greatly increases the language expressiveness. Since Civet also supports runtime switch and pattern matching, here is a s...
000
Herrington Darkholme @hd-nvim.bsky.social · 08/01/2025
TIL civetlang, typed coffee-script, supports if/else in type
010
Herrington Darkholme @hd-nvim.bsky.social · 29/12/2024
ast-grep's LSP now can report unused directive and remove them!
020
Herrington Darkholme @hd-nvim.bsky.social · 26/12/2024
New blog discussing how ast-grep's query is designed ast-grep.github.io/blog/code-se...
ast-grep.github.io
Design Space for Code Search Query
A review of the design space for code search tools.
000
Herrington Darkholme @hd-nvim.bsky.social · 22/12/2024
🚀 Exciting news! Just launched our new blog list page! Stay tuned for the latest updates and news about ast-grep. Check it out here ↓ ast-grep.github.io/blog.html
ast-grep.github.io
ast-grep Blog | ast-grep
ast-grep(sg) is a lightning fast and user friendly tool for code searching, linting, rewriting at large scale.
030
Herrington Darkholme @hd-nvim.bsky.social · 22/12/2024
technical blog on how ast-grep achieves it ast-grep.github.io/blog/typed-n...
ast-grep.github.io
ast-grep's Journey to Type Safety in Node API
ast-grep/napi now supports typed AST manipulation which is correct, concise, robust, and performant.
020
Herrington Darkholme @hd-nvim.bsky.social · 22/12/2024
ast-grep's answer to these factors! ast-grep.github.io/blog/typed-n...
ast-grep.github.io
ast-grep's Journey to Type Safety in Node API
ast-grep/napi now supports typed AST manipulation which is correct, concise, robust, and performant.
000
Herrington Darkholme @hd-nvim.bsky.social · 18/12/2024
typed ast-grep rule in TypeScript
030
Herrington Darkholme @hd-nvim.bsky.social · 16/12/2024
TypeScript Puzzle!
010
Herrington Darkholme @hd-nvim.bsky.social · 16/12/2024
120
Herrington Darkholme @hd-nvim.bsky.social · 15/12/2024
Writing good TypeScript type definition should consider these factors: * Correct * Concise * Performant * Robust TS libs now probably pay too much attention to correctness IMHO
030
Herrington Darkholme @hd-nvim.bsky.social · 13/12/2024
Are you using ast-grep on Linux? We need you voice! github.com/ast-grep/ast...
github.com
Command name alias: ast-grep and sg · Issue #56 · ast-grep/ast-grep
Need Your Voice! Please Reaction and Leave Comment More Linux users have feedbacks that ast-grep should drop the sg command. To understand the issue better, ast-grep welcomes Linux users' voice! Pl...
120
Reposted by Herrington Darkholme
Ryan Carniato @ryansolid.bsky.social · 12/12/2024
Friday stream is back with special guest @devagr.bsky.social to talk all about the frontiers of client/server communication and where Signals are going next. www.youtube.com/watch?v=zKXf...
youtube.com
Server Signals w/ Dev Agrawal
YouTube video by Ryan Carniato
1558