Advertisement · 728 × 90

Posts by Herrington Darkholme

AI Song
suno.com/s/bNKZhORV5c...

3 months ago 2 0 0 0
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.

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.

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.

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!

5 months ago 3 1 0 0

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

5 months ago 2 1 1 0
Preview
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

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...

5 months ago 12 5 2 0
Preview
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...

HCL support coming to ast-grep! Thanks TheTeaCat's contribution!🚀
github.com/ast-grep/ast...

8 months ago 1 0 0 0
Post image

#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`

8 months ago 3 0 0 0
Narrative Trickery: Fiction, Truth, and Authorial Subterfuge Readers often have passionate responses (both positive and negative) to books that first manipulate them into believing a seeming ‘truth’ about the narrative only to later discover that they have been...

What is narrative trickery.

unsworks.unsw.edu.au/entities/pub...

9 months ago 1 0 0 0

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.

9 months ago 2 0 1 0
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.

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.

9 months ago 2 1 0 0
Playground | ast-grep ast-grep playground is an online tool that lets you explore AST, debug custom lint rules, and inspect code rewriting with instant feedback.

リプ失礼します。
また機会があれば、Linterのast-grepも試してみてはいかがでしょう?
OXCの速さには及びませんが、Biomeよりけっこう速いですよ。ルール作成もより簡単だと思います。
Playgroundがきっと役に立ちます!
ast-grep.github.io/playground.h...

9 months ago 4 1 1 0
Advertisement
Config Cheat Sheet | ast-grep ast-grep(sg) is a lightning fast and user friendly tool for code searching, linting, rewriting at large scale.

New cheat sheet for ast-grep's YAML configuration ast-grep.github.io/cheatsheet/y...

9 months ago 0 0 0 0
ast-grep.el demonstration
ast-grep.el demonstration YouTube video by SunskyXH

ast-grep.el: Emacs meets structural search

www.youtube.com/watch?v=Bdua...

9 months ago 1 0 0 0

it is a correct rule and verified by code example. (also approved from ast-grep author)

9 months ago 1 0 0 0
Post image

letting AI write an ast-grep rule for me.
I'm using cursor, ast-grep mcp tool, custom cursor rule and gemini-2.5pro

10 months ago 2 0 1 0
What should your mutexes be named?

What should your mutexes be named?

gaultier.github.io/blog/what_sh...

#programming #golang #structural-search #awk

10 months ago 1 1 0 0
Post image

ast-grep rule cheat sheet

10 months ago 2 0 0 0
Post image

Compare biomejs plugin with ast-grep in one picture: both syntax and speed.

10 months ago 2 1 0 0
Advertisement
Search Multi-language Documents in ast-grep | ast-grep ast-grep(sg) is a lightning fast and user friendly tool for code searching, linting, rewriting at large scale.

Parsing graphql in JavaScript with ast-grep is possible

ast-grep.github.io/advanced/lan...

10 months ago 0 0 0 0
Post image

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} />

10 months ago 1 1 0 0

btw i use neovim + ghostty

11 months ago 1 0 0 0

Solaris light + bat

11 months ago 1 0 1 0
Post image

A proof of concept to run ast-grep via OXC parser

11 months ago 9 1 1 0
Post image
11 months ago 0 0 0 0
Preview
ast-grep on current vim buffer ast-grep on current vim buffer. GitHub Gist: instantly share code, notes, and snippets.

just some (probably filthy) vimscript to get ast-grep to run on the current buffer and update it
cc @hd-nvim.bsky.social 👀

11 months ago 3 1 1 0
Advertisement

amazing 😍

11 months ago 1 0 0 0
Post image

Ohh I didn't see that ast-grep has a VSCode extension nowadays. This tool just keeps getting better. marketplace.visualstudio.com/items/?itemN...

1 year ago 20 5 1 0

ast-grepは自分みたいにソフトウェアのバージョンアップや代替案への移行をよくやるものには必修科目かもしれん

1 year ago 2 1 0 0

this 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.

1 year ago 0 0 1 0

what's your expectation here? returning a list of nodes?

1 year ago 0 0 1 0
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.

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.

🌈 vibe coding 🌈

1 year ago 40 2 5 0