Skip to content

cljr-promote-function issues #505

Open
@yuhan0

Description

Expected/Actual behavior

There appear to be several issues with the implementation of cljr--promote-function-literal (the #() -> fn case of cljr-promote-function)

  • Throws a "unbalanced parantheses" error when the #() form is at top level
#(foo %)
  • Does not support certain combinations of nested forms and multiple % args
(comment
  #(foo % (bar %2))
  )

;; => 

(comment
  (fn [a] (foo a (bar a2)))
  )
  • Enters a loop when a string contains "%"
(comment
  #(str "%%" %)
  )

I've proposed an alternative implementation of this feature in clojure-emacs/clojure-mode#601.

The cljr-promote-function command could delegate to it in the #()->fn case, replacing the current implementation while keeping the fn->defn logic.

Environment & Version information

clj-refactor.el version information

3.0.0alpha13

CIDER version information

;; CIDER 1.2.0snapshot, nREPL 0.8.3
;; Clojure 1.10.3, Java 13.0.2

Leiningen or Boot version

Emacs version

28.1

Operating system

macOS

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions