Skip to content

Instantly share code, notes, and snippets.

@mauricioszabo
Created April 13, 2021 12:29
Show Gist options
  • Select an option

  • Save mauricioszabo/2b2421795314926d293ed763507bacbf to your computer and use it in GitHub Desktop.

Select an option

Save mauricioszabo/2b2421795314926d293ed763507bacbf to your computer and use it in GitHub Desktop.

Revisions

  1. mauricioszabo created this gist Apr 13, 2021.
    28 changes: 28 additions & 0 deletions chlorine-config.cljs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,28 @@
    (defn- get-resolver-for-keyword [k]
    (p/let [{:keys [text]} (editor/get-namespace)
    namespace (str/replace text #"(.*?\.).*" "$1")
    res (editor/run-feature :eql [{(list :repl/namespaces {:filter namespace})
    [:repl/namespace {:namespace/vars [:var/fqn]}]}])
    vars (for [{:namespace/keys [vars]} (:repl/namespaces res)
    {:var/keys [fqn]} vars]
    fqn)
    code (str "(->> " (vec vars)
    " (filter (fn [r] (-> r :com.wsscode.pathom.connect/output set (contains? " k "))))"
    " (map #(select-keys % [:com.wsscode.pathom.connect/sym :com.wsscode.pathom.connect/output]))"
    " first)")
    {:keys [result]} (editor/eval {:text code :auto-detect true})]
    result))

    (editor/add-resolver
    {:inputs [:editor/current-var]
    :outputs [:definition/info :definition/line]}
    (fn [{:editor/keys [current-var]}]
    (when (str/starts-with? current-var ":")
    (p/catch
    (p/let [result (get-resolver-for-keyword current-var)
    sym (:com.wsscode.pathom.connect/sym result)
    info (editor/eql {:var/fqn sym :editor/current-var ""}
    [:definition/info :definition/line])]
    (when (:definition/info info)
    info))
    log))))