- (Part of #230): Parallelize various functionality
- This will have a noticeable improvement in e.g. clj-refactor.el's
cljr-slash
performance.
- This will have a noticeable improvement in e.g. clj-refactor.el's
- #291: The
:ignore-errors
option will be honored in more places, making refactor-nrepl more robust in face of files not particularly meant to be part of the AST corpus.- Examples: WIP files, Moustache template files, scripts.
- Upgrade Orchard
- Worth emphasizing: now the following options are available https://github.com/clojure-emacs/orchard/tree/v0.7.0#configuration-options
- They can make the refactor-nrepl experience simpler / more robust.
- Upgrade rewrite-clj
- This fixes some features such as
rename-file-or-dir
.
- This fixes some features such as
- Reliability improvement: try using
require
prior tofind-ns
- This increases the chances that a namespace will be found, which in turns makes refactor-nrepl more complete/accurate.
- Replace Cheshire with
clojure.data.json
- Build ASTs more robustly (by using locks,
require
, and ruling out certain namespaces like refactor-nrepl itself) - Improve
namespace-aliases
performance and make it return more accurate results. - Honor internal
future-cancel
calls, improving overall responsiveness and stability.
- #335: Strengthen
resolve-missing
against various edge cases. - #289: Fix an edge-case with involving keywords that caused find-symbol to crash.
- #305: Don't put
:as
or:refer
on their own lines in the ns form, when the libspec is so long it causes the line to wrap. - clojure-emacs/clj-refactor.el#459:
clean-ns
should conform to the style guide:(:require
in the ns form should be followed by a newline.- You can opt out via the new
:insert-newline-after-require
configuration option.
- You can opt out via the new
- #294: Properly skip uneval nodes when looking for the first/last sexp
- From now on, if you set the
clojure.tools.namespace.repl/refresh-dirs
, files outside saidrefresh-dirs
won't be analyzed, resulting in safer, more efficient analysis.
- #284: Don't truncate the artifacts cache.
- Updated all deps.
- clojure-emacs/clj-refactor.el#443:
clean-ns
support namespaces with js literal (#js). - #251:
clean-ns
support extra message keyrelative-path
, which will be used ifpath
does not exist. - #264: Less bandwidth used to fetch artifacts from Clojars.
- #268: Added support for fetching artifact versions from Clojars.
- #271: Improved shadow-cljs support.
- Drop support for nREPL 0.2.
- #256: Ignore malformed artifact coordinates when fetching from Clojars.
- #215: Support JVM system proxy in mvn artifacts listing.
- #231: Hotload-dependencies temporarily disabled due to java 10 issues.
- #198: Delay middleware loading to speed up initialization.
- Drop Clojure 1.7.0 support.
- Bump mranderson: Version to fix leiningen 2.8.x incompatibility issues.
- #187 Update clojure.tools.reader so Clojure 1.9 namespaced map literals don't cause parse errors.
- #185 Report throwables of type
Error
instead of swallowing them. - #186 Make sure
resolve-missing
still works, even if a candidate class has missing dependencies. - #184 In
resolve-missing
, prevent classpaths with many entries from causing a stack overflow. - clojure-emacs/clj-refactor.el#330
clean-ns
removes imported inner inner classes. - clojure-emacs/clj-refactor.el#330
clean-ns
ignores namespaced keywords. - #160 Make
resolve-missing
find newly defined vars and types (clj). Because of a stale cache, newly added vars or types would not be found. This fix takes into account vars/types added by eval-ing code (rescan affected namespace), and by hotloading dependencies (reset the cache). - clojure-emacs/clj-refactor.el#362 Preserve all shorthand style metadata when
clean-ns
is used. - #192 Clean ns understands
$
as a symbol. Specially this enables clean ns to work with incanter that does have function named$
. - clojure-emacs/clj-refactor.el#332 Fix regression when inner class needs to be imported, strangely implementation of multiple levels of nested inner classes broke the simpler case.
- #169 Fix java9 compatibility issues.
- New config setting
:libspec-whitelist
which makes it possible to create a seq of namespacesclean-ns
shouldn't prune. This is useful for libspecs which aren't used except through side-effecting loads. - New config setting
:ignore-paths
for ignoring certain paths when finding dirs on classpath.
- Add
find-used-publics
which list occurrences of symbols defined in namespace A in namespace B. - #145 Enable caching for resolve missing
- Add support for skipping excluded dependencies. This patch tweaks the dependency checker, so that refactor-nrepl will activate itself normally if one of its dependencies is listed in a project's :exclusions. This enables a user to for instance exclude org.clojure/clojure and provide a fork, thus taking on all responsibility for providing an adequate version.
- Fix resolve-missing for cljs. Before this fix, the cljs-path returned only a single candidate. That's because every candidate was merged together. We now use
merge-with into
to generate a list of candidates instead. - #147 Avoid needless .cljc namespace reader macro usage
- #133 Filter out clojure source files without ns form when indexing/analyzing so projects whith such files are supported.
- Add support for
:rename
clauses in clean ns. - Add cljc support to
clean-ns
. - Add cljs support to
clean-ns
. rename-file-or-dir
now knows how to move cljs files.- The
artifact-version
list is now sorted. - Add
namespace-aliases
which provides a mapping of the namespace aliases that are in use in the project. - Make
find-symbol
able to handle macros.
- clojure-emacs/clj-refactor.el#223 Fix clean-ns removing metadata when file starts with a comment.
- #103
find-symbol
failes in projects withcljc
files. - #106 Failure to build ASTs when namespaced keywords are present in the project.
- #127 tools.namespace's tracker doesn't handle namespaces of same name across dialects. Temporary fix,
:require-macros
dependencies not tracked across platforms, also see TNS-38 - #91 Find usages/Rename symbol gets confused after rename file or dir
- #126 Build AST for nses in project in topological order, fixes problem when protocols got evaluated after dependent deftypes resulting in
No implementation of method
type errors.
- #132 When the middleware is started with the wrong Clojure version we now warn and exclude the middleware instead of failing catastrophically.
resolve-missing
now returns a map instead of an alist.- clojure-emacs/clj-refactor.el#275 clean-ns will no longer prune cljsjs requires.
- New option for
clean-ns
,prune-ns-form
, to avoid pruning the ns-form. - Get rid of the client namespace
- #118 Improve the
find-symbol
reply. It's now a map instead of a vector. - Remove
find-debug-fns
. None of us ever used this and there's some overlap withfind-usages
. - Rename
find-unbound
tofind-used-locals
. This is what this op has been doing for the last several versions. - Drop the
configure
op, and receive settings in each message. - More relaxed when building ASTs so some coding errors are tolerated and AST based features work with slightly broken code
- Add
rename-file-or-dir
which returns a file or a directory of clj files. - Add
extract-definition
which returns enough information to the clien to afford inlining of defs defns and let-bound vars. - Add
stubs-for-interface
for creating skeleton interface implementations - Add
warm-ast-cache
op for eagerly building, and caching, ASTs of project files
- add 'version' op, which returns the current version of refactor-nrepl to the client.
- fix for clean-ns removing import only used in macro
- fix for clean-ns removes classes used only in typehints
- workaround for analyzer bug which results in wrong filename in var meta
- fix for find-unbound edge cases
- fix problem in clean-ns caused by mranderson (inlining) limitation
- various bugfixes in clean-ns
- improvements on error messages
- fix in find unbound in case of s-expression is inside a macro
- resolve missing works for static method, field and resolve missign will work right after hotload dependency
- throw an error for cljs and cljx file: they are not supported (yet)
- minor refactorings, clean ups
- readme tweaks
- fix for find-unbound does not always figure out the right parameters for new function
- Config setting for
clean-ns
to not do any prefix rewriting - Add
configure
op to set various config opts. - Remove find referred
- Add
hotload-dependency
which loads a new project dependency into the repl - Add caching of ASTs for better performance
- Add
resolve-missing
which resolves a missing symbol by scanning the classpath - Add
clean-ns
which performs various cleanups on the ns form. - various cleaning and refactoring stuff
- AST creation: analyze-ns instead of plain analyze which also evals the code
- find usages
- rename symbols
- find (debug) invocations
- find referred
- artifact lookup