Clojure China

LightTable Refactoring - 使用 Kabit

lighttable
kabit
#1

分享來源:Idiomatic Clojure with LightTable

摘要:
作者使用了重構模組 Kabit 做為後端。Kabit 其實是一個簡單的對照庫,能夠通過比對結構,重組語法,同時不改變諸如變數名稱、邏輯及數字等實際細節。例如:

(defn singleton-succ-vec [x]
  (if-let [succ (+ 1 x)]
     (do (->> succ (into [])))
      nil))

會被轉換為

(defn singleton-succ-vec [x] (when-let [succ (inc x)] (vec succ)))

使用方法

  1. 添加 lein-kabit 到 project.clj 或 profiles.clj
  2. 在 LightTable 的 user keymap 添加如下指令:
[:editor "alt-i" :eval.custom "
    (do
      (require 'kibit.check)
      (if-let [better (kibit.check/check-expr '__SELECTION__)]
        (with-out-str
          (clojure.pprint/write (:alt better)
            :suppress-namespaces true
            :dispatch clojure.pprint/code-dispatch))
        __SELECTION*__))"
 {:result-type :replace :verbatim true}]