-
Notifications
You must be signed in to change notification settings - Fork 113
Home
-
ad: add declaration for current top-level form -
ai: add import to namespace declaration, then jump back -
am*: add a missing libspec -
ap*: add a dependency to yourproject.cljand hotload into the repl. -
ar: add require to namespace declaration, then jump back (see optional setup) -
as*: Add stub(s) for the interface at point -
au: add "use" to namespace declaration, then jump back -
cc: cycle surrounding collection type -
ci: cycle betweenifandif-not -
cn*: Clean namespace form -
cp: cycle privacy ofdefns anddefs -
dk: destructure keys -
ec: extract constant -
ed: extract def -
ef*: extract function -
el: expand let -
fe: create function from example stub -
fu*: find usages -
hd*: hotload dependency -
il: introduce let -
is*: inline symbol -
mf: move one or more forms to another namespace,:referany functions -
ml: move to let -
pc: run project clean functions on the whole project -
pf: promote function literal to fn, or fn to defn -
rd*: Remove (debug) function invocations -
rf*: rename file or dir updating any affected files -
rl*: remove let, inline all variables and remove the let form -
rr: remove unused requires -
rs*: rename symbol -
ru: replace use statements with equivalent require statements. -
sc: show the changelog, to learn about recent changes -
sn: sort the ns form.:use,:requireand:importclauses are sorted. -
sp: sort project dependencies found inproject.clj -
sr: stop referring (removes:refer [...]from current require, fixing references) -
tf: wrap in thread-first (->) and fully thread -
th: thread another expression -
tl: wrap in thread-last (->>) and fully thread -
ua: fully unwind a threaded expression -
up: update project dependencies (lein only) -
uw: unwind a threaded expression -
?: describe refactoring
These functions are available, but used so rarely they're not given a keybinding default:
-
cljr-reify-to-defrecord* replace a call to reify with a call to a defrecord constructor. -
cljr-reload-configuration* Resubmit any configuration changes to the middleware. -
cljr-versionDisplay version information for clj-refactor and the refactor-nrepl middleware. -
cljr-toggle-debug-modeWhen something isn't working as intended debug mode can be toggled to get some more information about what's going on.
*: These functions require an active repl connection and our middleware.
To take a look at the available settings do: M-x customize-group <RET> cljr <RET>
Common namespace shorthands are automatically required when you type them:
For instance, typing (io/) adds [clojure.java.io :as io] to the requires.
-
ioisclojure.java.io -
setisclojure.set -
strisclojure.string -
walkisclojure.walk -
zipisclojure.zip
The namespaces in cljr-magic-require-namespaces act like seed values, but once you start writing your own aliases those will be used as candidates in addition to the see values. Note that the seed values always take precedence, so if there's a hit there we don't consult the middleware for additional aliases.
You can turn this off with:
(setq cljr-magic-requires nil)or set it to :prompt if you want to confirm before it inserts.
When you open a blank .clj-file, clj-refactor inserts the namespace declaration for you.
It will also add the relevant :use clauses in test files, normally using clojure.test, but if you're depending on midje or expectations in your project.clj it uses that instead.
Prefer to insert your own ns-declarations? Then:
(setq clj-add-ns-to-blank-clj-files nil)With clj-refactor enabled, any keybindings for paredit-raise-sexp is
replaced by cljr-raise-sexp which does the same thing - except it
also removes any # in front of function literals and sets.
You might also like
- cljr-helm Helm wrapper for cljr.
- align-cljlet - which is an Emacs package for aligning let-like forms.
- David Nolen has created some clojure-snippets.
- Magnar Sveen made some datomic-snippets.
- Max Penet has also created some clojure-snippets, early fork of dnolens' with tons of additions and availability on MELPA.