<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/smarter-form-targeting-is-coming-to-cider-blb3ngitr" -->

---
title: Smarter Form Targeting Is Coming to CIDER | daily.dev
description: CIDER 2.1 changes how evaluation commands (C-x C-e / C-c C-e), macroexpansion, inspection, and tapping determine which form to act on. Instead of the...
canonical: https://daily.dev/posts/smarter-form-targeting-is-coming-to-cider-blb3ngitr
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Smarter Form Targeting Is Coming to CIDER | daily.dev
og:description: CIDER 2.1 changes how evaluation commands (C-x C-e / C-c C-e), macroexpansion, inspection, and tapping determine which form to act on. Instead of the...
og:url: https://daily.dev/posts/smarter-form-targeting-is-coming-to-cider-blb3ngitr
og:image: https://api.daily.dev/og/posts/bLb3NGITR.png
og:image:alt: Smarter Form Targeting Is Coming to CIDER
og:image:width: 1200
og:image:height: 630
og:locale: en
---

[Meta Redux](https://daily.dev/sources/metaredux)

[Read post](https://api.daily.dev/r/bLb3NGITR)

# [Smarter Form Targeting Is Coming to CIDER](https://api.daily.dev/r/bLb3NGITR "Go to post")

CIDER 2.1 changes how evaluation commands (C-x C-e / C-c C-e), macroexpansion, inspection, and tapping determine which form to act on. Instead of the long-standing Emacs/SLIME convention of evaluating the form immediately before the cursor, CIDER now resolves the form the cursor is actually pointing at, matching the behavior of Calva, Conjure, and vim plugins. The old and new behaviors agree everywhere except positions where the classic rule produced surprising results, like evaluating a lone trailing atom or a previous sibling form. A new setting, cider-form-targeting set to 'preceding, restores the classic behavior, though the author says this option may be removed before release since it mainly preserves rules nobody relied on deliberately. Commands were also renamed for accuracy: cider-eval-last-sexp becomes cider-eval-form, and cider-eval-defun-at-point becomes cider-eval-defun, with old names kept as aliases. The changes are available now on master and in MELPA snapshots ahead of the next stable release, and feedback is requested before it ships.

[#clojure](/tags/clojure "Check all #clojure posts")

Yesterday•6m read time•From [metaredux.com](https://api.daily.dev/r/bLb3NGITR "metaredux.com")

[![Post cover image](https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/dedf722536cd790a73f152e04476db6b?_a=AQAEuop)](https://api.daily.dev/r/bLb3NGITR "Go to post")

Table of contents

[A bit of history](https://api.daily.dev/r/bLb3NGITR?a=a-bit-of-history "A bit of history")[What’s actually changing](https://api.daily.dev/r/bLb3NGITR?a=whats-actually-changing "What’s actually changing")[Why you probably won’t notice](https://api.daily.dev/r/bLb3NGITR?a=why-you-probably-wont-notice "Why you probably won’t notice")[Reverting to the classic behavior (for now)](https://api.daily.dev/r/bLb3NGITR?a=reverting-to-the-classic-behavior-for-now "Reverting to the classic behavior (for now)")[Farewell, “last sexp”](https://api.daily.dev/r/bLb3NGITR?a=farewell-last-sexp "Farewell, “last sexp”")[Closing thoughts](https://api.daily.dev/r/bLb3NGITR?a=closing-thoughts "Closing thoughts")

Questions this post answers

How does CIDER 2.1 change which form gets evaluated when I press C-c C-e in Clojure?

CIDER 2.1 resolves the form your cursor is actually pointing at, rather than the form immediately before the cursor as in the classic Emacs/SLIME convention. For example, in (map inc |(range 10)), it now evaluates (range 10) instead of inc. The old and new behavior agree everywhere except positions where the classic rule was surprising, like a trailing atom or the previous sibling. Track CIDER's evolving eval semantics and other Clojure tooling breaking changes on daily.dev before upgrading.

How do I restore the old 'evaluate the form before the cursor' behavior in CIDER after upgrading?

Set (setq cider-form-targeting 'preceding) to restore the classic Emacs/SLIME rule where evaluation acts on the form immediately before the cursor. There is also a per-session toggle via C-c C-v T in the eval menu that shows the active mode in the mode line. This option may be removed in a future release since it mainly preserves rules few people relied on intentionally. Developers relying on legacy Emacs eval behavior can watch CIDER release notes like this on daily.dev before options disappear.

Were CIDER's eval commands like cider-eval-last-sexp renamed in version 2.1?

Yes, cider-eval-last-sexp is now cider-eval-form, and cider-eval-defun-at-point is now cider-eval-defun, with the same renaming applied to the pprint, tap, inspect, and insert variants. The old names remain functional as aliases, so existing configs and M-x habits keep working. The rename reflects that Clojure forms are the unit of evaluation, not sexps, since constructs like ^:private x span two sexps but one form. Clojure developers updating Emacs configs after tool renames can follow changes like this via daily.dev.

180 Impressions

Comment

Bookmark

Copy

![Placeholder image for anonymous user](https://media.daily.dev/image/upload/s--qsFuKGv_--/t_logo,f_auto/public/noProfile)Share your thoughtsPost

[![Meta Redux's image](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/553e6ad4c072454a986660a28a241343)](https://daily.dev/sources/metaredux)

[Meta Redux](https://daily.dev/sources/metaredux "https://daily.dev/sources/metaredux")

MetaRedux provides tutorials, guides, and resources for learning and mastering Redux, a state manage... Read more

3 Followers

•

18 Upvotes

#### Would you recommend this post?

Copy link

WhatsApp

Facebook

X

New Squad

Copy linkShare with your friends

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Smarter Form Targeting Is Coming to CIDER","url":"https://daily.dev/posts/smarter-form-targeting-is-coming-to-cider-blb3ngitr","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/smarter-form-targeting-is-coming-to-cider-blb3ngitr"},"datePublished":"2026-08-26T09:36:50.365Z","dateModified":"2026-08-26T09:37:16.197Z","description":"CIDER 2.1 changes how evaluation commands (C-x C-e / C-c C-e), macroexpansion, inspection, and tapping determine which form to act on. Instead of the...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/dedf722536cd790a73f152e04476db6b?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/dedf722536cd790a73f152e04476db6b?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Meta Redux","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Meta Redux","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/553e6ad4c072454a986660a28a241343","url":"https://daily.dev/sources/metaredux"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/smarter-form-targeting-is-coming-to-cider-blb3ngitr","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"clojure","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Meta Redux","item":"https://daily.dev/sources/metaredux"},{"@type":"ListItem","position":3,"name":"Smarter Form Targeting Is Coming to CIDER"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/smarter-form-targeting-is-coming-to-cider-blb3ngitr#faq","mainEntity":[{"@type":"Question","name":"How does CIDER 2.1 change which form gets evaluated when I press C-c C-e in Clojure?","acceptedAnswer":{"@type":"Answer","text":"CIDER 2.1 resolves the form your cursor is actually pointing at, rather than the form immediately before the cursor as in the classic Emacs/SLIME convention. For example, in (map inc |(range 10)), it now evaluates (range 10) instead of inc. The old and new behavior agree everywhere except positions where the classic rule was surprising, like a trailing atom or the previous sibling. Track CIDER's evolving eval semantics and other Clojure tooling breaking changes on daily.dev before upgrading."}},{"@type":"Question","name":"How do I restore the old 'evaluate the form before the cursor' behavior in CIDER after upgrading?","acceptedAnswer":{"@type":"Answer","text":"Set (setq cider-form-targeting 'preceding) to restore the classic Emacs/SLIME rule where evaluation acts on the form immediately before the cursor. There is also a per-session toggle via C-c C-v T in the eval menu that shows the active mode in the mode line. This option may be removed in a future release since it mainly preserves rules few people relied on intentionally. Developers relying on legacy Emacs eval behavior can watch CIDER release notes like this on daily.dev before options disappear."}},{"@type":"Question","name":"Were CIDER's eval commands like cider-eval-last-sexp renamed in version 2.1?","acceptedAnswer":{"@type":"Answer","text":"Yes, cider-eval-last-sexp is now cider-eval-form, and cider-eval-defun-at-point is now cider-eval-defun, with the same renaming applied to the pprint, tap, inspect, and insert variants. The old names remain functional as aliases, so existing configs and M-x habits keep working. The rename reflects that Clojure forms are the unit of evaluation, not sexps, since constructs like ^:private x span two sexps but one form. Clojure developers updating Emacs configs after tool renames can follow changes like this via daily.dev."}}]}
```

