Liking cljdoc? Tell your friends :D

Changelog

Unreleased

3.10.0

  • Add always-return-ns-form option to clean-ns message

3.9.1

  • suggest-libspecs op: support collections for :only values.

3.9.0

  • #401 resolve-missing no longer returns the wrong type
  • #401 resolve-missing no longer returns non- importable classes.
  • #402 resolve-missing now flags with :already-interned true the candidates that are already interned into the calling namespace.
    • This helps clients avoiding the suggestion/insertion of candidates which are redundant
      • e.g. + is already interned, so is Thread
      • same for :refers and :renames
  • Fix a bug the newly introduced .cljc detection.

3.8.0

  • #396 Handle the analyzing and parsing of Clojure code from .cljc files.
  • Upgrade various dependencies: #393, #394 & #395.
  • The rename-file-or-dir op is now also able to rename .cljs files that depended on .clj files via :require-macros #394.
  • ns-tracker no longer ignores cljs files with string requires #394.
    • note that ns-tracker is normally used for clj files only.

3.7.1

  • Fix an oversight in suggest-libspecs.

3.7.0

  • Implement new middleware op: suggest-libspecs
    • Supports a beta clj-refactor.el feature.

3.6.0

  • #387: extend clj-kondo :unused-namespace integration. Now namespace local configuration is also taken into account. :libspec-whitelist can be augmented for particular namespace by:
    • Adding :unused-namespace linter configuration under :config-in-ns key in clj-kondo's config file. Like so: :config-in-ns {example.target.ns {:linters {:unused-namespace {:exclude [ns.to.exclude]}}}}
    • Adding :unused-namespace linter configuration under :clj-kondo/config key in metadata or attribute map of namespace. Like so: (ns example.target.ns {:clj-kondo/config '{:linters {:unused-namespace {:exclude [ns.to.exclude]}}}})

3.5.5

  • #385: only suggest-aliases that are valid symbols.
    • Fixes an edge case for cljr-refactor.el's cljr-slash.

3.5.4

  • #383: prune-dependencies: increase accuracy for :cljs.

3.5.3

  • #382: refactor-nrepl.artifacts: increase resiliency.

3.5.2

  • #378: Fix :as-alias handling for .cljc files.

3.5.1

  • Refine :as-alias detection.

3.5.0

  • #374: support Clojure 1.11's new :as-alias namespace directive.

3.4.2

  • #373: revert accidentally-changed namespace-aliases error handling default.

3.4.1

  • Offer refactor-nrepl.ns.libspecs/namespace-aliases-for function.
    • It's basically like namespace-aliases, but accepts files rather than dirs as an argument, which can be more flexible for programmatic use.

3.4.0

  • #369: Implement "suggest" option for the namespace-aliases op.
    • This allows end-users to type Stuart Sierra style aliases and have them completed, even if this alias wasn't in use anywhere in a given codebase.

3.3.2

  • #173: rename-file-or-dir: rename more kinds of constructs in dependent namespaces: namespace-qualified maps, fully-qualified functions, metadata.
  • #194: Don't prune require forms if they are needed for a given import to work.
  • #142: read-ns-form: report more informatively when a non-existing file is being processed.

3.3.1

  • #363: Fix a memoization bug in clean-namespace.

3.3.0

  • #361 Honor clj-kondo :unused-namespace config, if present
    • This piece of config can inform/complement refactor-nrepl's own config.
    • If you are using refactor-nrepl programatically (as opposed to as nREPL middleware), you can improve performance by using refactor-nrepl.ns.libspec-allowlist/with-memoized-libspec-allowlist prior to invoking clean-ns.

3.2.2 (2022-01-29)

  • Fix a minor artifact in the previous release (the version would be reported as 0.0.0).

3.2.1 (2022-01-29)

  • Upgrade Orchard.

3.2.0 (2022-01-09)

Changes

  • Address minor warnings that could be seen under the Clojure 1.11 series.
    • Accomplished by upgrading Orchard, and tools.analyzer.jvm.
  • #355: Disable the side-effects (as protocol extensions) performed by the fs library.

3.1.0 (2021-11-09)

Changes

  • #344: make clean-ns's style closer to the how to ns style.
  • #333: skip scanning irrelevant directories in more places (as it was already done for various other functionalities; this limits ananlysis/refactoring to your source/test paths, skipping other artifacts).
  • Make resolve-missing able to find even more classes than before.
  • #346: refine the heuristic for ignoring irrelevant dirs (see the above bullet point).
  • Introduce print-right-margin/print-miser-width configuration options, used during pprinting of ns forms.
    • The default is one that is consistent with refactor-nrepl's traditional behavior.
    • You can set both to nil for disabling line wrapping.
  • ns form printing: also wrap single-segment namespaces in a vector.

3.0.0 (2021-10-25)

Changes

  • (Part of #230): Parallelize various functionality
    • This will have a noticeable improvement in e.g. clj-refactor.el's cljr-slash performance.
  • #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
  • Upgrade rewrite-clj
    • This fixes some features such as rename-file-or-dir.
  • Reliability improvement: try using require prior to find-ns
    • This increases the chances that a namespace will be found, which in turns makes refactor-nrepl more complete/accurate.
  • #306: 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.

Bugs fixed

  • #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.
  • #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 said refresh-dirs won't be analyzed, resulting in safer, more efficient analysis.

2.5.1 (2021-02-16)

Bugs fixed

  • #284: Don't truncate the artifacts cache.

Changes

  • Updated all deps.

2.5.0 (2020-02-29)

New features

  • clojure-emacs/clj-refactor.el#443: clean-ns support namespaces with js literal (#js).
  • #251: clean-ns support extra message key relative-path, which will be used if path 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.

Changes

  • Drop support for nREPL 0.2.

Bugs fixed

  • #256: Ignore malformed artifact coordinates when fetching from Clojars.

2.4.0 (2018-08-26)

New features

  • #215: Support JVM system proxy in mvn artifacts listing.

Changes

  • #231: Hotload-dependencies temporarily disabled due to java 10 issues.
  • #198: Delay middleware loading to speed up initialization.
  • Drop Clojure 1.7.0 support.

Bugs fixed

  • Bump mranderson: Version to fix leiningen 2.8.x incompatibility issues.

2.3.1

Bugs fixed

  • #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.

Changes

  • #169 Fix java9 compatibility issues.

New features

  • New config setting :libspec-whitelist which makes it possible to create a seq of namespaces clean-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.

2.2.0

New features

  • 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.

Bugs fixed

  • 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

Changes

  • #133 Filter out clojure source files without ns form when indexing/analyzing so projects whith such files are supported.

2.0.0

New features

  • 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.

Bugs fixed

  • clojure-emacs/clj-refactor.el#223 Fix clean-ns removing metadata when file starts with a comment.
  • #103 find-symbol failes in projects with cljc 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.

Changes

  • #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 with find-usages.
  • Rename find-unbound to find-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

1.1.0

  • 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

1.0.5

  • add 'version' op, which returns the current version of refactor-nrepl to the client.

1.0.4

  • 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

1.0.3

  • fix problem in clean-ns caused by mranderson (inlining) limitation

1.0.2 (this is broken version, please use 1.0.3!)

  • 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

1.0.1

  • 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

1.0.0

  • 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

0.2.2

  • AST creation: analyze-ns instead of plain analyze which also evals the code

0.2.1

  • find usages
  • rename symbols

0.1.0

  • find (debug) invocations
  • find referred
  • artifact lookup

Can you improve this documentation? These fine people already did:
vemv, Lars Andersen, Benedek Fazekas, Bozhidar Batsov, Arne Brasseur, dotemacs, Julio Rincon, Phil Brown, Frozenlock, Toby Crawley, Moritz Heidkamp, Ryan Fowler, Yann Vanhalewyn, Daniel Leong, Vineet Naik, Vadim Rodionov, Anders Engström, Александар Симић & Paul Dumais
Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close