{"slug": "paredit", "name": "Paredit", "category": "editors", "category_name": "Editors and IDEs", "description": "", "recommenders": 6, "commenters": 6, "warners": 0, "score": 5.159, "rising": -1.96, "first": "2025-11-17", "latest": "2026-06-03", "why": "fyi I use paredit and just hit ) and it moves me past any kind of paren/bracket.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 6, "neutral": 0, "compare": 0, "warn": 0}, "spark": [2, 0, 0, 0, 1, 1, 0, 2, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "fyi I use paredit and just hit ) and it moves me past any kind of paren/bracket.", "kind": "", "icon": false, "domain": null, "github_repo": null, "official_url": "https://paredit.org", "pricing": "", "aliases": ["Paredit", "paredit"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 774114497, "item_id": 48382156, "url": "https://news.ycombinator.com/item?id=48382156", "by": "pgt", "date": "2026-06-03", "stance": "recommend", "quote": "Paredit / Parinfer ruined other languages for me.", "excerpt": "> \"I do wish there were an easier way to move in the ]}]})))}-ness of block ends though.\" If he means navigating the AST, there is Parinfer: https://shaunlebron.github.io/parinfer/ Paredit / Parinfer ruined other languages for me. It lets you navigate up/down/in/out of the Clojure AST with keyboard commands and mutate those expressions, e.g. \"Split\" will split open the current data structure you're in: `(a| b)` =Spli", "context": "", "use_case": "Structural Lisp editing", "switched_from": "", "story": "My thoughts after using Clojure for about a month"}, {"id": 774031632, "item_id": 48376977, "url": "https://news.ycombinator.com/item?id=48376977", "by": "meken", "date": "2026-06-02", "stance": "recommend", "quote": "fyi I use paredit and just hit ) and it moves me past any kind of paren/bracket.", "excerpt": "> I do wish there were an easier way to move in the ]}]})))}-ness of block ends though. I\u2019m not quite sure what this means. How is it different/worse than all parens..? fyi I use paredit and just hit ) and it moves me past any kind of paren/bracket. But even without that you can just hit left and right..?", "context": "", "use_case": "editing Lisp/Clojure parentheses", "switched_from": "", "story": "My thoughts after using Clojure for about a month"}, {"id": 761862960, "item_id": 47616435, "url": "https://news.ycombinator.com/item?id=47616435", "by": "hombre_fatal", "date": "2026-04-02", "stance": "recommend", "quote": "You also need to learn a new tool to write lisp, like paredit.", "excerpt": "You also need to learn a new tool to write lisp, like paredit. While it's amazing once you've learned it, and you're slurp/barfing while making huge structural edits to your code, it's a tall order. I used Clojure for a long time, but I can't go back to dynamic typing. I cringe at the amount of time I spent walking through code with paper and pencil to track things like what are the exact keyvals in the maps that can", "context": "", "use_case": "Structural editing of Lisp", "switched_from": "", "story": "Bringing Clojure programming to Enterprise (2021)"}, {"id": 756612723, "item_id": 47288295, "url": "https://news.ycombinator.com/item?id=47288295", "by": "chamomeal", "date": "2026-03-07", "stance": "recommend", "quote": "I reeaally miss slurp! and other paredit commands", "excerpt": "I use it constantly in helix too. The vscode one is meh. I think I saw a discussion in github once about switching to tree-sitter, which would improve AST-related actions. I don't think it went anywhere though. I love AST aware editing. I think it's one reason it's always been so nice to edit lisps. Stuff that is complicated to describe in javascript (and doesn't have LSP support) p much requires a whole AST parser, ", "context": "", "use_case": "", "switched_from": "", "story": "Ki Editor - an editor that operates on the AST"}, {"id": 735693138, "item_id": 45980821, "url": "https://news.ycombinator.com/item?id=45980821", "by": "nerdponx", "date": "2025-11-19", "stance": "recommend", "quote": "something more powerful like Paredit", "excerpt": "Not true at all IMO. Reading code is reading code regardless of whether you have a fancy IDE or not. S-expressions are indisputably harder to learn to read. Most languages have some flexibility in how you can format your code before it becomes unreadable or confusing. C has some, Lua has some, Ruby has some, and Python has maybe fewer but only because you're more tightly constrained by the whitespace syntax. Sexpr fa", "context": "", "use_case": "", "switched_from": "", "story": "The Future of Programming (2013) [video]"}]}], "caveats": [], "who": [], "tags": [], "use_cases": ["structural lisp editing", "editing lisp/clojure parentheses", "structural editing of lisp"], "compared": [{"slug": "jetbrains", "name": "JetBrains", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=48375393", "title": "My thoughts after using Clojure for about a month", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=47611481", "title": "Bringing Clojure programming to Enterprise (2021)", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47286311", "title": "Ki Editor - an editor that operates on the AST", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=45912457", "title": "The Future of Programming (2013) [video]", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=45952614", "title": "Things I don't like in configuration languages", "mentions": 1}], "sentiment_by_month": {"2025-11": {"recommend": 2}, "2025-12": {}, "2026-01": {}, "2026-02": {}, "2026-03": {"recommend": 1}, "2026-04": {"recommend": 1}, "2026-05": {}, "2026-06": {"recommend": 2}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 774114497, "item_id": 48382156, "url": "https://news.ycombinator.com/item?id=48382156", "by": "pgt", "date": "2026-06-03", "stance": "recommend", "quote": "Paredit / Parinfer ruined other languages for me.", "excerpt": "> \"I do wish there were an easier way to move in the ]}]})))}-ness of block ends though.\" If he means navigating the AST, there is Parinfer: https://shaunlebron.github.io/parinfer/ Paredit / Parinfer ruined other languages for me. It lets you navigate up/down/in/out of the Clojure AST with keyboard commands and mutate those expressions, e.g. \"Split\" will split open the current data structure you're in: `(a| b)` =Spli", "context": "", "use_case": "Structural Lisp editing", "switched_from": "", "story": "My thoughts after using Clojure for about a month"}, {"id": 774031632, "item_id": 48376977, "url": "https://news.ycombinator.com/item?id=48376977", "by": "meken", "date": "2026-06-02", "stance": "recommend", "quote": "fyi I use paredit and just hit ) and it moves me past any kind of paren/bracket.", "excerpt": "> I do wish there were an easier way to move in the ]}]})))}-ness of block ends though. I\u2019m not quite sure what this means. How is it different/worse than all parens..? fyi I use paredit and just hit ) and it moves me past any kind of paren/bracket. But even without that you can just hit left and right..?", "context": "", "use_case": "editing Lisp/Clojure parentheses", "switched_from": "", "story": "My thoughts after using Clojure for about a month"}, {"id": 761862960, "item_id": 47616435, "url": "https://news.ycombinator.com/item?id=47616435", "by": "hombre_fatal", "date": "2026-04-02", "stance": "recommend", "quote": "You also need to learn a new tool to write lisp, like paredit.", "excerpt": "You also need to learn a new tool to write lisp, like paredit. While it's amazing once you've learned it, and you're slurp/barfing while making huge structural edits to your code, it's a tall order. I used Clojure for a long time, but I can't go back to dynamic typing. I cringe at the amount of time I spent walking through code with paper and pencil to track things like what are the exact keyvals in the maps that can", "context": "", "use_case": "Structural editing of Lisp", "switched_from": "", "story": "Bringing Clojure programming to Enterprise (2021)"}, {"id": 756612723, "item_id": 47288295, "url": "https://news.ycombinator.com/item?id=47288295", "by": "chamomeal", "date": "2026-03-07", "stance": "recommend", "quote": "I reeaally miss slurp! and other paredit commands", "excerpt": "I use it constantly in helix too. The vscode one is meh. I think I saw a discussion in github once about switching to tree-sitter, which would improve AST-related actions. I don't think it went anywhere though. I love AST aware editing. I think it's one reason it's always been so nice to edit lisps. Stuff that is complicated to describe in javascript (and doesn't have LSP support) p much requires a whole AST parser, ", "context": "", "use_case": "", "switched_from": "", "story": "Ki Editor - an editor that operates on the AST"}, {"id": 735693138, "item_id": 45980821, "url": "https://news.ycombinator.com/item?id=45980821", "by": "nerdponx", "date": "2025-11-19", "stance": "recommend", "quote": "something more powerful like Paredit", "excerpt": "Not true at all IMO. Reading code is reading code regardless of whether you have a fancy IDE or not. S-expressions are indisputably harder to learn to read. Most languages have some flexibility in how you can format your code before it becomes unreadable or confusing. C has some, Lua has some, Ruby has some, and Python has maybe fewer but only because you're more tightly constrained by the whitespace syntax. Sexpr fa", "context": "", "use_case": "", "switched_from": "", "story": "The Future of Programming (2013) [video]"}, {"id": 735319714, "item_id": 45957482, "url": "https://news.ycombinator.com/item?id=45957482", "by": "tikhonj", "date": "2025-11-17", "stance": "recommend", "quote": "It also helps that Emacs with Paredit makes editing s-expressions flow.", "excerpt": "In the world of human-readable data formats (ie not programming languages), the best one I ever used was Jane Street's sexplib[1] s-expression format. It was concise and expressive. There was a direct way to describe variants (types with multiple constructors), which is always awkward in JSON, but the format was still surprisingly low-noise for reading and editing by hand. I remember you could even use it as a lightw", "context": "", "use_case": "", "switched_from": "", "story": "Things I don't like in configuration languages"}]}