kkinnear / zprint

Executables, uberjar, and library to beautifully format Clojure and Clojurescript source code and s-expressions.
MIT License
554 stars 47 forks source link

zprint -e returning nil #201

Closed mauricioszabo closed 2 years ago

mauricioszabo commented 3 years ago

So, I just installed zprint from the documentation here: https://cljdoc.org/d/zprint/zprint/1.1.2/doc/get-zprint/standalone-binary-for-linux

But when I tried to run zprint -e, it just prints nil. The side-effect is that every zprint ... command I run ends up unformatting the whole file, instead of formatting it. For example, instead of indenting a file, it ends up putting everything on the same line, etc.

What's wrong? Is it a bug?

OS: Ubuntu 18.04

╰─>$ zprint -v
zprint-1.1.2

╰─>$ zprint  -e
nil

╰─>$ cat ~/.zprintrc 
cat: /home/mauricio/.zprintrc: No such file or directory
kkinnear commented 3 years ago

Thanks for asking for help with this. I am sorry that zprint isn't working for you! I build the Linux version using RedHat linux (using docker), so I don't have lot of experience with Ubuntu Linux. I have had a couple of issues submitted where zprint was being used on Ubuntu Linux, and it was working well enough for those folks, so I don't think that it just doesn't work at all on Ubuntu. I will see what I can do to get a version of Ubuntu running with docker so that I can try to duplicate your experience and then debug the problem. I am currently away from the machine on which I can reliably run Intel-based Linux, but I'll see what I can do nevertheless.

From the information you have given me, I'm currently suspecting that there is something going on with line endings. zprint tries to sense what line endings are used in the input file. It senses the line endings in the input file by examining the line endings in the first 2000 lines, and uses the predominant line ending found when creating line endings for the output. From the limited information that I have, I am currently suspecting something is amiss with this processing.

There are several simple things you can do to help me figure out what is going on and, possibly, get the current version working for you (or at least fix the problem in the next release).

First, you have encountered a documentation error for which I apologize. The instructions to test the installation with zprint -e were once correct but are now in error. I have changed the -e switch to output only the local changes to the configuration in an effort to be more user friendly. If you run the following:

zprint --explain-all

that should output what -e used to output, and will give us a better idea of how much of zprint is working. Note the two dashes in --explain-all! Please include the (hopefully massive) output in the issue.

Second, if you do:

zprint -h

that should also output the help text, and let us know a bit more about how things are working. Please also include this output in the issue.

Finally, and most importantly, if you could take a small piece of Clojure code and feed it through zprint, and place the input and output results in this issue, it would be a huge help in figuring out what is going wrong. By short I mean 15-20 lines of syntactically correct (but not necessarily executable) code so I can see what is actually happening. If you could also include the output of:

od -c <your-zprint-input-file
od -c <zprint-output-file

it would go a long way toward helping me diagnose and fix this problem. I am guessing that there is some problem with how line endings are handled, if everything looks like it ends up on the same line.

Thanks very much for your help!

mauricioszabo commented 3 years ago

Ok, so zprint -h gives me:

╰─>$ zprint -h

zprint-1.1.2

zprint <options-map> <input-file >output-file
zprint <switches> <input-file >output-file
zprint -w input-and-output-file(s)
zprint <options-map> -w input-and-output-file(s)
zprint <switches> -w input-and-output-file(s)

Where zprint is any of:

 zprintm-1.1.2
 zprintl-1.1.2
 java -jar zprint-filter-1.1.2

<options-map> is a Clojure map containing zprint options. Must be first.
              Note that since it contains spaces, it must be
              wrapped in quotes, for example:
              '{:width 120}'

               Use the -e switch to see the total options
               map, which will show you what is configurable.

<switches> which do no formatting, only one allowed:

 -h  --help         Output this help text.
 -v  --version      Output the version of zprint.
 -e  --explain      Output non-default configuration values, showing
                    where any non-default values where set.
     --explain-all  Output full configuration, including all default
                    values, while showing where non-default values set.

<switches> which control configuration, only one allowed:

 -d  --default      Accept no configuration input.
 -u  --url URL      Load options from URL.
     --url-only URL Load only options found from URL,
                    ignore all .zprintrc, .zprint.edn files.

<switches> which process named files:  May follow a configuration switch
                                       or an options map, but not both!

 -w  --write FILE                read, format, and write to FILE (or FILEs),
                                 -w *.clj is supported.
 -c  --check FILE                read and check format of FILE (or FILEs)
                                 -c *.clj is supported.

Variations on -w, --write and -c, -check:

 -lw  --list-write      FILE  like -w, but indicate which files processed.
 -fw  --formatted-write FILE  like -w, but indicate which files changed.
 -sw  --summary-write   FILE  like -w, but include a summary of the number
                              of files processed and how many required a
                              format change, as well as any errors.

Combinations are allowed, w/write and c/check must always be last,
and order matters for -- switches.  Examples:

  -lfw, -lfsw, -fsw, -flw, -sflw, etc.
  --list-formatted-write, --list-formatted-summary-write, etc.

All combinations of -w and --write switches are also allowed 
with -c and --check switches:

  -lfc, -lfsc, -fsc, -flc, -sflc, etc.
  --list-formatted-check, --list-formatted-summary-check, etc.

The -w, -c, and -e switches are the only switches where you may also
have an options map!

And zprint --explain-all:

   {:object?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false}},
 :array
   {:hex?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :indent
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1},
    :object?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :wrap?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true}},
 :atom
   {:object?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false}},
 :binding
   {:flow?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :force-nl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :hang-diff
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1},
    :hang-expand
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 2.0},
    :hang?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :indent
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 2},
    :justify
      {:ignore-for-variance
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value nil},
       :max-variance
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value 20},
       :no-justify
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value #{"_"}}},
    :justify?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :nl-separator-all?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :nl-separator?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false}},
 :cache
   {:directory
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value ".zprint"},
    :location
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value "HOME"}},
 :color-map
   {:brace
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :red},
    :bracket
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :purple},
    :char
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :black},
    :comma
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :none},
    :comment
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :green},
    :deref
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :red},
    :false
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :black},
    :fn
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :blue},
    :hash-brace
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :red},
    :hash-paren
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :green},
    :keyword
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :magenta},
    :nil
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :yellow},
    :none
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :black},
    :number
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :purple},
    :paren
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :green},
    :quote
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :red},
    :regex
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :black},
    :string
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :red},
    :symbol
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :black},
    :syntax-quote-paren
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :red},
    :true
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :black},
    :uneval
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :magenta},
    :user-fn
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :black}},
 :color?
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value false},
 :comment
   {:count?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :inline-align-style
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :aligned},
    :inline?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :wrap?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true}},
 :cwd-zprintrc?
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value false},
 :delay
   {:object?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false}},
 :extend
   {:flow?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :force-nl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :hang-diff
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1},
    :hang-expand
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1000.0},
    :hang?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :indent
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 2},
    :modifiers
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value #{"static"}},
    :nl-separator?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false}},
 :fn-force-nl
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value #{:arg1-force-nl
             :arg1-force-nl-body
             :flow :flow-body
             :force-nl
             :force-nl-body :noarg1
             :noarg1-body}},
 :fn-gt2-force-nl
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value #{:binding :gt2-force-nl
             :pair-fn}},
 :fn-gt3-force-nl
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value #{:arg1-pair
             :arg1-pair-body
             :gt3-force-nl}},
 :fn-map
   {"->"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value
         [:noarg1-body
          {:list {:constant-pair?
                    false},
           :next-inner
             {:list
                {:constant-pair?
                   true}}}]},
    "->>"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value
         [:force-nl-body
          {:list {:constant-pair?
                    false},
           :next-inner
             {:list
                {:constant-pair?
                   true}}}]},
    ":import"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :force-nl-body},
    :quote
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value
         [:none
          {:list {:hang? false,
                  :indent 1},
           :next-inner
             {:list {:hang? true,
                     :indent
                       2}}}]},
    ":require"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :force-nl-body},
    "="
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :hang},
    "alt"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :pair-fn},
    "and"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :hang},
    "apply"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1},
    "are"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value [:guided
               {:style
                  :areguide}]},
    "as->"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg2},
    "assert-args"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :pair-fn},
    "assoc"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-pair},
    "assoc-in"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1},
    "binding"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "case"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-pair-body},
    "cat"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :force-nl},
    "catch"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg2},
    "comment"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :flow-body},
    "cond"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :pair-fn},
    "cond->"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-pair-body},
    "cond-let"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :pair-fn},
    "condp"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg2-pair},
    "def"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-body},
    "defc"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-mixin},
    "defcc"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-mixin},
    "defcs"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-mixin},
    "defexpect"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value
         [:arg1-body
          {:next-inner
             {:style
                :respect-nl-off},
           :style :respect-nl}]},
    "defmacro"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-body},
    "defmethod"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg2},
    "defmulti"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-body},
    "defn"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-body},
    "defn-"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-body},
    "defproject"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value [:arg2-pair
               {:vector
                  {:wrap?
                     false}}]},
    "defprotocol"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value
         [:none-body
          {:style
             :defprotocolguide}]},
    "defrecord"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg2-extend-body},
    "deftest"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-body},
    "deftype"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg2-extend-body},
    "defui"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-extend},
    "do"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :none-body},
    "doseq"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "dotimes"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "doto"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1},
    "extend"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-extend},
    "extend-protocol"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-extend},
    "extend-type"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-extend},
    "fdef"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-force-nl},
    "filter"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1},
    "filterv"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1},
    "fn"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :fn},
    "fn*"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :fn},
    "for"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "if"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-body},
    "if-let"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "if-not"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-body},
    "if-some"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "interpose"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1},
    "let"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "letfn"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "loop"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "map"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1},
    "mapcat"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1},
    "mapv"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1},
    "match"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-pair-body},
    "matchm"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-pair-body},
    "not="
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :hang},
    "ns"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-body},
    "or"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :hang},
    "proxy"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg2-fn},
    "reduce"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1},
    "reify"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :extend},
    "remove"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1},
    "reset!"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg2},
    "s/and"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :gt2-force-nl},
    "s/def"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value
         [:arg1-body
          {:list
             {:constant-pair-min
                2}}]},
    "s/fdef"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value
         [:arg1-body
          {:list
             {:constant-pair-min
                2}}]},
    "s/or"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :gt2-force-nl},
    "some->"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :force-nl-body},
    "some->>"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :force-nl-body},
    "swap!"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg2},
    "try"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :none-body},
    "when"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-body},
    "when-first"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "when-let"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "when-not"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-body},
    "when-some"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "with-bindings"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1},
    "with-bindings*"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1},
    "with-local-vars"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "with-meta"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-body},
    "with-open"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "with-out-str"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :none-body},
    "with-redefs"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :binding},
    "with-redefs-fn"
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :arg1-body}},
 :fn-name
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value nil},
 :fn-obj
   {:object?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false}},
 :format
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value :on},
 :future
   {:object?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false}},
 :input
   {:range
      {:end
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value nil},
       :start
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value nil}}},
 :list
   {:constant-pair-fn
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :constant-pair-min
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 4},
    :constant-pair?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :hang-avoid
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 0.5},
    :hang-diff
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1},
    :hang-expand
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 2.0},
    :hang-size
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 100},
    :hang?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :indent
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 2},
    :indent-arg
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :indent-only-style
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :input-hang},
    :indent-only?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :option-fn
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :pair-hang?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :replacement-string
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :respect-bl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :respect-nl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :wrap-after-multi?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :wrap-coll?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :wrap-multi?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true}},
 :map
   {:comma?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :flow?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :force-nl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :hang-diff
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1},
    :hang-expand
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1000.0},
    :hang?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :indent
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 2},
    :indent-only?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :justify
      {:ignore-for-variance
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value nil},
       :max-variance
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value 20},
       :no-justify
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value nil}},
    :justify?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :key-color
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :key-depth-color
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :key-ignore
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :key-ignore-silent
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :key-no-sort
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value #{"..."}},
    :key-order
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :key-value-color
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :lift-ns-in-code?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :lift-ns?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :nl-separator-all?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :nl-separator?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :respect-bl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :respect-nl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :sort-in-code?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :sort?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :unlift-ns?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false}},
 :max-depth
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value 1000000},
 :max-depth-string
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value "##"},
 :max-hang-count
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value 4},
 :max-hang-depth
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value 300},
 :max-hang-span
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value 4},
 :max-length
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value 1000000},
 :object
   {:indent
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1}},
 :old?
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value true},
 :output
   {:elide
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :focus
      {:surround
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value nil},
       :zloc?
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value false}},
    :lines
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil}},
 :pair
   {:flow?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :force-nl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :hang-diff
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1},
    :hang-expand
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 2.0},
    :hang?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :indent
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 2},
    :justify
      {:ignore-for-variance
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value #{":else"}},
       :max-variance
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value 20},
       :no-justify
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value nil}},
    :justify?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :nl-separator-all?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :nl-separator?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false}},
 :pair-fn
   {:hang-diff
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1},
    :hang-expand
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 2.0},
    :hang-size
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 10},
    :hang?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true}},
 :parallel?
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value false},
 :parse
   {:ignore-if-parse-fails
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value #{"..."}},
    :interpose
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :left-space
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :drop}},
 :parse-string-all?
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value false},
 :parse-string?
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value false},
 :promise
   {:object?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false}},
 :reader-cond
   {:force-nl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :hang-diff
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1},
    :hang-expand
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1000.0},
    :hang?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :indent
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 2},
    :key-order
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :sort-in-code?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :sort?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil}},
 :record
   {:hang?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :record-type?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :to-string?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false}},
 :script
   {:more-options
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil}},
 :search-config?
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value false},
 :set
   {:indent
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 2},
    :indent-only?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :respect-bl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :respect-nl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :sort-in-code?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :sort?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :wrap-after-multi?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :wrap-coll?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :wrap?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true}},
 :spec
   {:docstring?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true}},
 :style nil,
 :style-map
   {:all-hang
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Enable hangs everywhere (which they are by default)"},
       :extend
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :list
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :map
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :pair
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :pair-fn
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :reader-cond
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :record
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}}},
    :areguide
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Allow modification of areguide in :fn-map"},
       :list
         {:option-fn
            #<Fn@7adec276
              zprint.guide/areguide>}},
    :backtranslate
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Turn quote, deref, var, unquote into reader macros"},
       :fn-map
         {"clojure.core/deref"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               [:replace-w-string
                {}
                {:list
                   {:replacement-string
                      "@"}}]},
          "clojure.core/unquote"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               [:replace-w-string
                {}
                {:list
                   {:replacement-string
                      "~"}}]},
          "quote"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               [:replace-w-string
                {}
                {:list
                   {:replacement-string
                      "'"}}]},
          "var"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               [:replace-w-string
                {}
                {:list
                   {:replacement-string
                      "#'"}}]}}},
    :binding-nl
      {:binding
         {:indent
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 0},
          :nl-separator?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Add a blank line after every value that flowed"}},
    :binding-nl-all
      {:binding
         {:indent
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 0},
          :nl-separator-all?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Add a blank line between every pair"}},
    :community
      {:binding
         {:indent
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 0}},
       :doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Modify defaults to format to 'community' approach"},
       :fn-map
         {"apply"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :none},
          "assoc"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :none},
          "filter"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :none},
          "filterv"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :none},
          "map"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :none},
          "mapv"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :none},
          "reduce"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :none},
          "remove"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :none},
          "with-meta"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :none-body}},
       :list
         {:indent-arg
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 1}},
       :map
         {:indent
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 0}},
       :pair
         {:indent
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 0}}},
    :dark-color-map
      {:color-map
         {:brace
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :white},
          :bracket
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :white},
          :char
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :bright-cyan},
          :comma
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :bright-white},
          :comment
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :bright-black},
          :deref
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :red},
          :false
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               :bright-magenta},
          :fn
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :bright-red},
          :hash-brace
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :white},
          :hash-paren
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :white},
          :keyword
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :bright-blue},
          :nil
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               :bright-magenta},
          :none
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :white},
          :number
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               :bright-magenta},
          :paren
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :white},
          :quote
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               :bright-yellow},
          :regex
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :bright-cyan},
          :string
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :bright-green},
          :symbol
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :bright-white},
          :syntax-quote
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               :bright-yellow},
          :syntax-quote-paren
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :white},
          :true
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               :bright-magenta},
          :uneval
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value :bright-red},
          :unquote
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               :bright-yellow},
          :unquote-splicing
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               :bright-yellow},
          :user-fn
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               :bright-yellow}},
       :doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "A color map that is pretty good for dark backgrounds"},
       :uneval
         {:color-map
            {:brace
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value :white},
             :bracket
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value :white},
             :char
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-cyan},
             :comma
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-white},
             :comment
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-black},
             :deref
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value :red},
             :false
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-magenta},
             :fn
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-red},
             :hash-brace
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value :white},
             :hash-paren
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value :white},
             :keyword
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-blue},
             :nil
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-magenta},
             :none
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value :white},
             :number
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-magenta},
             :paren
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value :white},
             :quote
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-yellow},
             :regex
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-cyan},
             :string
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-green},
             :symbol
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-white},
             :syntax-quote
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-yellow},
             :syntax-quote-paren
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value :white},
             :true
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-magenta},
             :uneval
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-red},
             :unquote
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-yellow},
             :unquote-splicing
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-yellow},
             :user-fn
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value
                  :bright-yellow}}}},
    :defprotocolguide
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Allow alteration of defprotocol in :fn-map"},
       :list
         {:option-fn
            #<Fn@5389bcc5
              zprint.guide/defprotocolguide>}},
    :extend-nl
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Add a blank line between protocols"},
       :extend
         {:flow?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true},
          :indent
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 0},
          :nl-separator?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}}},
    :fast-hang
      {:binding
         {:ha-width-factor
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value -600},
          :hang-accept
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 100}},
       :doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Speed up formatting of very deeply nested structures"},
       :extend
         {:ha-width-factor
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value -600},
          :hang-accept
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 100}},
       :list
         {:ha-width-factor
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value -300},
          :hang-accept
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 100}},
       :map
         {:ha-depth-factor
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 15},
          :hang-accept
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 0}},
       :pair
         {:ha-width-factor
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value -150},
          :hang-accept
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 20}},
       :vector-fn
         {:ha-width-factor
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value -300},
          :hang-accept
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 100}}},
    :guideguide
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "output guides themselves, experimental"},
       :vector
         {:option-fn
            #<Fn@e3a1736
              zprint.guide/guideguide>}},
    :hiccup
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Format vectors containing hiccup information better"},
       :vector
         {:option-fn
            #<Fn@5f685d55
              zprint.config/fn__10442>,
          :wrap?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :vector-fn
         {:indent
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 1},
          :indent-arg
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 1}}},
    :how-to-ns
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Make newlines and indentation match 'how to ns'"},
       :fn-map
         {"ns"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               [:arg1-body
                {:fn-map
                   {":import"
                      [:flow
                       {:list
                          {:hang?
                             true}}],
                    ":require"
                      :flow},
                 :list {:hang?
                          false,
                        :indent-arg
                          1}}]}}},
    :indent-only
      {:comment
         {:wrap?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Enable indent only for every type of structure"},
       :list
         {:indent-only?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :map
         {:indent-only?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :set
         {:indent-only?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :vector
         {:indent-only?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}}},
    :jrequireguide
      {:list
         {:option-fn
            #<Fn@72d6578
              zprint.guide/jrequireguide>}},
    :justified
      {:binding
         {:justify?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Justify everything possible"},
       :map
         {:justify?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :pair
         {:justify?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}}},
    :justified-original
      {:binding
         {:justify
            {:max-variance
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value 1000}},
          :justify?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Justify everything using pre-1.1.2 approach"},
       :map
         {:justify
            {:max-variance
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value 1000}},
          :justify?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :pair
         {:justify
            {:max-variance
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value 1000}},
          :justify?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}}},
    :keyword-respect-nl
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "When a vector starts with a :keyword, :respect-nl in it"},
       :vector
         {:option-fn-first
            #<Fn@115f604a
              zprint.config/fn__10440>}},
    :map-nl
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Add newline after every value that flows"},
       :map
         {:indent
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 0},
          :nl-separator?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}}},
    :map-nl-all
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Add newline between all map pairs"},
       :map
         {:indent
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 0},
          :nl-separator-all?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true},
          :zprint.config/indent
            0}},
    :moustache
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Format moustache elements nicely"},
       :fn-map
         {"app"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               [:flow
                {:style
                   :vector-pairs}]}}},
    :no-hang
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Turn off hang for every structure"},
       :extend
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :list
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :map
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :pair
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :pair-fn
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :reader-cond
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :record
         {:hang?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}}},
    :odr
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "justify columns of rules, experimental"},
       :vector
         {:option-fn
            #<Fn@2f441b88
              zprint.guide/odrguide>}},
    :pair-nl
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Add a blank line after every value that flowed"},
       :pair
         {:indent
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 0},
          :nl-separator?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}}},
    :pair-nl-all
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Add a blank line between every pair"},
       :pair
         {:indent
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 0},
          :nl-separator-all?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}}},
    :quote-wrap
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Wrap quoted lists to right margin, like vectors"},
       :fn-map
         {:quote
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               [:wrap
                {:list {:indent 1},
                 :next-inner
                   {:list
                      {:indent
                         2}}}]}}},
    :require-justify
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Justify namespaces in :require"},
       :fn-map
         {":require"
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value
               [:flow
                {:style
                   [:jrequireguide
                    :rj-var]}]}}},
    :require-pair
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Clarify namespaces in :require"},
       :fn-map
         {":require"
            [:none
             {:vector
                {:option-fn
                   #<Fn@55b3ab39
                     zprint.config/fn__10438>}}]}},
    :respect-bl
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Enable respect blank lines for every type"},
       :list
         {:respect-bl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :map
         {:respect-bl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :set
         {:respect-bl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :vector
         {:respect-bl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}}},
    :respect-bl-off
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Disable respect blank lines for every type"},
       :list
         {:respect-bl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :map
         {:respect-bl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :set
         {:respect-bl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :vector
         {:respect-bl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}}},
    :respect-nl
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Enable respect newlines for every type"},
       :list
         {:respect-nl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :map
         {:respect-nl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :set
         {:respect-nl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}},
       :vector
         {:respect-nl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}}},
    :respect-nl-off
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Disable respect newline for every type"},
       :list
         {:respect-nl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :map
         {:respect-nl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :set
         {:respect-nl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}},
       :vector
         {:respect-nl?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value false}}},
    :rj-var
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Set max-variance for :require-justify"},
       :pair
         {:justify
            {:max-variance
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value 20}}}},
    :rod
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Rules of defn, experimental.  Very likely to change."},
       :fn-map
         {"defn"
            [:guided
             {:list
                {:option-fn
                   #<Fn@18dae33b
                     zprint.guide/rodguide>}}]}},
    :signature1
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "defprotcol signatures with doc on newline, experimental"},
       :list
         {:option-fn
            #<Fn@6a7bccad
              zprint.guide/signatureguide1>}},
    :sort-dependencies
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "sort dependencies in lein defproject files"},
       :list
         {:return-altered-zipper
            [1 defproject
             #<Fn@386ac32b
               zprint.rewrite/sort_dependencies>]}},
    :vector-pairs
      {:doc
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value
            "Consider vectors 'constants' for constant pairing"},
       :list
         {:constant-pair-fn
            #<Fn@5589f4b1
              zprint.config/fn__10431>,
          :constant-pair-min
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value 1}},
       :next-inner
         {:list
            {:constant-pair-fn
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value nil},
             :constant-pair-min
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value 4}},
          :pair
            {:justify?
               {:set-by
                  "Home directory file: /home/mauricio/.zprintrc",
                :value false}}},
       :pair
         {:justify?
            {:set-by
               "Home directory file: /home/mauricio/.zprintrc",
             :value true}}}},
 :tab
   {:expand?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :size
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 8}},
 :uneval
   {:color-map
      {:brace
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :bracket
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :char
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :magenta},
       :comma
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :none},
       :comment
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :green},
       :deref
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :false
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :fn
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :cyan},
       :hash-brace
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :hash-paren
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :keyword
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :nil
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :none
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :number
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :paren
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :quote
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :regex
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :string
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :symbol
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :cyan},
       :syntax-quote-paren
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :true
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :yellow},
       :uneval
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :magenta},
       :user-fn
         {:set-by
            "Home directory file: /home/mauricio/.zprintrc",
          :value :cyan}}},
 :url
   {:cache-dir
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value "urlcache"},
    :cache-secs
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 300}},
 :user-fn-map {},
 :vector
   {:binding?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :fn-format
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :hang?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :indent
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1},
    :indent-only?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :option-fn
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :option-fn-first
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :respect-bl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :respect-nl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :wrap-after-multi?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :wrap-coll?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :wrap-multi?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :wrap?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true}},
 :vector-fn
   {:constant-pair-fn
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :constant-pair-min
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 4},
    :constant-pair?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :hang-avoid
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 0.5},
    :hang-diff
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 1},
    :hang-expand
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 2.0},
    :hang-size
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 100},
    :hang?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :indent
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value 2},
    :indent-arg
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value nil},
    :indent-only-style
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value :input-hang},
    :indent-only?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :pair-hang?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :respect-bl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :respect-nl?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value false},
    :wrap-after-multi?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :wrap-coll?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true},
    :wrap-multi?
      {:set-by
         "Home directory file: /home/mauricio/.zprintrc",
       :value true}},
 :version "zprint-1.1.2",
 :width
   {:set-by
      "Home directory file: /home/mauricio/.zprintrc",
    :value 35}}```

So I did try with the following code:

```clojure
(defn some-fun 
  "Some docstring that's very, very, very large indeed, but anyway, maybe it'll help me diagnose what's wrong..."
  []
  (let [a "something"
        basas "Lol"]

   (+ a basas)))

And it formatted as this:

(defn some-fun
  "Some docstring that's very, very, very large indeed, but anyway, maybe it'll help me diagnose what's wrong..."
  []
  (let [a "something" basas "Lol"] (+ a basas)))

With a bigger file like this:

(defn some-fun [a b]
  (-> a
      inc
      inc
    (+ 2)
     (+ 3)
     (- b)
     str
     (str/split-lines)
     (->>
       (apply concat)
       to-json
       (subs 3)
       (subs 2 2)
       )
       )
       )

It works as expected:

(defn some-fun
  [a b]
  (-> a
      inc
      inc
      (+ 2)
      (+ 3)
      (- b)
      str
      (str/split-lines)
      (->> (apply concat)
           to-json
           (subs 3)
           (subs 2 2))))

So I decided to put the two functions in the same file:

(defn some-fun 
  "Some docstring that's very, very, very large indeed, but anyway, maybe it'll help me diagnose what's wrong..."
  []

  (let [a "something"
        basas "Lol"]

   (+ a basas)))

(defn some-fun [a b]
  (-> a
      inc
      inc
    (+ 2)
     (+ 3)
     (- b)
     str
     (str/split-lines)
     (->>
       (apply concat)
       to-json
       (subs 3)
       (subs 2 2)
       )
       )
       )

And the same problem occurs:

(defn some-fun
  "Some docstring that's very, very, very large indeed, but anyway, maybe it'll help me diagnose what's wrong..."
  []

  (let [a "something" basas "Lol"] (+ a basas)))

(defn some-fun
  [a b]
  (-> a
      inc
      inc
      (+ 2)
      (+ 3)
      (- b)
      str
      (str/split-lines)
      (->> (apply concat)
           to-json
           (subs 3)
           (subs 2 2))))

The results for od: ╰─>$ od -c </tmp/foo.clj

0000000   (   d   e   f   n       s   o   m   e   -   f   u   n  \n    
0000020       "   S   o   m   e       d   o   c   s   t   r   i   n   g
0000040       t   h   a   t   '   s       v   e   r   y   ,       v   e
0000060   r   y   ,       v   e   r   y       l   a   r   g   e       i
0000100   n   d   e   e   d   ,       b   u   t       a   n   y   w   a
0000120   y   ,       m   a   y   b   e       i   t   '   l   l       h
0000140   e   l   p       m   e       d   i   a   g   n   o   s   e    
0000160   w   h   a   t   '   s       w   r   o   n   g   .   .   .   "
0000200  \n           [   ]  \n  \n           (   l   e   t       [   a
0000220       "   s   o   m   e   t   h   i   n   g   "  \n            
0000240                       b   a   s   a   s       "   L   o   l   "
0000260   ]  \n                                  \n               (   +
0000300       a       b   a   s   a   s   )   )   )  \n  \n   (   d   e
0000320   f   n       s   o   m   e   -   f   u   n       [   a       b
0000340   ]  \n           (   -   >       a  \n                        
0000360   i   n   c  \n                           i   n   c  \n        
0000400           (   +       2   )  \n                       (   +    
0000420   3   )  \n                       (   -       b   )  \n        
0000440               s   t   r  \n                       (   s   t   r
0000460   /   s   p   l   i   t   -   l   i   n   e   s   )  \n        
0000500               (   -   >   >  \n                               (
0000520   a   p   p   l   y       c   o   n   c   a   t   )  \n        
0000540                       t   o   -   j   s   o   n  \n            
0000560                   (   s   u   b   s       3   )  \n            
0000600                   (   s   u   b   s       2       2   )  \n    
0000620                           )  \n                               )
0000640  \n                               )  \n                  \n
0000657

╰─>$ od -c </tmp/formatted.clj

0000000   (   d   e   f   n       s   o   m   e   -   f   u   n  \n    
0000020       "   S   o   m   e       d   o   c   s   t   r   i   n   g
0000040       t   h   a   t   '   s       v   e   r   y   ,       v   e
0000060   r   y   ,       v   e   r   y       l   a   r   g   e       i
0000100   n   d   e   e   d   ,       b   u   t       a   n   y   w   a
0000120   y   ,       m   a   y   b   e       i   t   '   l   l       h
0000140   e   l   p       m   e       d   i   a   g   n   o   s   e    
0000160   w   h   a   t   '   s       w   r   o   n   g   .   .   .   "
0000200  \n           [   ]  \n           (   l   e   t       [   a    
0000220   "   s   o   m   e   t   h   i   n   g   "       b   a   s   a
0000240   s       "   L   o   l   "   ]       (   +       a       b   a
0000260   s   a   s   )   )   )  \n  \n   (   d   e   f   n       s   o
0000300   m   e   -   f   u   n  \n           [   a       b   ]  \n    
0000320       (   -   >       a  \n                           i   n   c
0000340  \n                           i   n   c  \n                    
0000360       (   +       2   )  \n                           (   +    
0000400   3   )  \n                           (   -       b   )  \n    
0000420                       s   t   r  \n                           (
0000440   s   t   r   /   s   p   l   i   t   -   l   i   n   e   s   )
0000460  \n                           (   -   >   >       (   a   p   p
0000500   l   y       c   o   n   c   a   t   )  \n                    
0000520                           t   o   -   j   s   o   n  \n        
0000540                                       (   s   u   b   s       3
0000560   )  \n                                               (   s   u
0000600   b   s       2       2   )   )   )   )  \n  \n
0000614
kkinnear commented 3 years ago

Thank you for gathering the information I requested. It is very helpful.

One question -- do you actually have a file /home/mauricio/.zprintrc? If so, what is in it?

Given the information that you have included in this issue, I now think I know what's going on now, but I could be wrong. Please excuse me if I explain things that you already know and/or if I'm completely wrong as to what is going on here.

I think that you are concerned that zprint formatted this function:

(defn some-fun 
  "Some docstring that's very, very, very large indeed, but anyway, maybe it'll help me diagnose what's wrong..."
  []

  (let [a "something"
        basas "Lol"]

   (+ a basas)))

into this:

(defn some-fun
  "Some docstring that's very, very, very large indeed, but anyway, maybe it'll help me diagnose what's wrong..."
  []

  (let [a "something" basas "Lol"] (+ a basas)))

that that you didn't want this form:

  (let [a "something" basas "Lol"] (+ a basas)))

to all be on the same line.

If I am correct in that, then I'm guessing that you wanted zprint to indent your function, not format your function.

Some background...

zprint has three basic modes of operation. At its base, zprint is a Clojure(script) formatter -- it essentially ignores all incoming newlines and formats the Clojure code in order to gain maximum readability. This formatting includes placing an expression on one line if it will fit on one line. It does this in order to fit the maximum amount of readable code into whatever vertical space you allow for your editor, in order to let you see as much code as possible on the screen at one time. The goal is to reduce the cognitive load by letting you see as much code as is readably possible at one time. That is what "classic zprint" does.

Now, some people don't like that approach, so zprint supports two other formatting regimes. One is "respect newlines", which will never remove a newline that was there in the original source, but may add additional newlines in order to fit the code into the :width that is specified in the configuration (which defaults to 80). You get "respect newlines" behavior by adding {:style :respect-nl} to the command line for zprint.

The third basic regime is "indent only", and this regime will never add or remove newlines. It will simply indent the lines in the file as well as possible given the way that it was originally input. You get "indent only" behavior by adding {:style :indent-only} to the command line before the file.

You may find that the "respect newlines" approach is more what you were expecting, though that approach will also leave the hanging ) that you had in your second function ... hanging. But mostly people don't do that, so it isn't a problem.

Generally, if a function (or expression) fits on one line, it is short enough that it can be understood on one line, so that "classic zprint" formatting is widely used. That said, if there is some particular function (for example, let) that you want to ensure never formats on one line, zprint can easily be configured to make that happen.

If you haven't already, you might try zprint on a large, realistic, source file and see what you get and if it is what you want. If not, I would be happy to work with you to configure zprint to give you the formatting (or indenting) that you want.

mauricioszabo commented 3 years ago

Right, so I'll try to add a little bit more info: I opened this issue mostly because what you described seemed inconsistent with things like:

(defn other-fun
  []
  (->> (range)
       (map inc)
       (reduce +)))

zprint will happily keep code, while putting let in a single line.

But mostly, what I want to do is to make zprint format code for a team that I'm working right now. Some people like to keep "justified content" where I don't, so I was evaluating if I could, somehow, "de-justify" everything that I am working and "re-justify" before I could commit.

But your explanation makes sense, for me it wasn't clear how zprint works :)

kkinnear commented 3 years ago

I don't quite know what you mean buy "justified content", but it is possible that zprint could put the code into the format that the team with which you are working is using. zprint will "justify" a number of things, but I have no idea if my idea of "justify" has any relationship to your team's idea of "justified content".

To better illustrate the specific examples you used, you can configure zprint to never put functions classified as :binding (which is how let is configured, among a host of others) on a single line by adding {:fn-force-nl #{:binding}} to the options map, like so:

zprint.core=> x
"(let [a b c d] (g h (i j)))"
zprint.core=> (czprint x {:parse-string? true})
(let [a b c d] (g h (i j)))
nil
zprint.core=> (czprint x {:parse-string? true :fn-force-nl #{:binding}})
(let [a b
      c d]
  (g h (i j)))

This doesn't happen with ->> because it is configured with a function type of :force-nl-body which is already part of the set of :fn-force-nl. For more information about that function type (and all others), you can look here.

Anyway, if you want help configuring zprint to format like your team does, include some examples of what you want and I'll see what I can do to configure zprint to mimic those examples.

kkinnear commented 2 years ago

I fixed the documentation about using -e to test an installation in the just releases 1.2.0. I remain willing to help configure zprint to do whatever you want it to do.

kkinnear commented 2 years ago

I continue to be available to help configure zprint to do what you want it to do. Thanks!