-
Notifications
You must be signed in to change notification settings - Fork 112
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-defercord* 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
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.