Giter Club home page Giter Club logo

lein-marginalia's People

Contributors

algernon avatar budu avatar fogus avatar gdeer81 avatar gekkoe avatar michalmarczyk avatar pyr avatar seancorfield avatar technomancy avatar zk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lein-marginalia's Issues

Clojure 1.7 breaks Marginalia (including this plugin)

There was an issue with a change in arity for the LispReader functions in Clojure 1.7. This was simple fix but the current maintainer of marginalia is inactive. See clj-commons/marginalia#153

MichaelBlume has forked Marginalia and this plugin. If you want a working version hosted off Clojars, please take a look at the forked repo for updated dependency information.

I mean no offense to the current maintainers of this plugin, but I burned some time updating it myself before I realize MichaelBlume had also forked lein-marginalia (which wasn't mentioned in #153.)

Parsing error: Wrong number of args (4) passed to: parser/read-keyword

Using clojure 1.8 and marginalia 0.8.0 I get the following error when I run "lein marge" on my project https://github.com/davidplumpton/homeworldsai

Exception in thread "main" java.lang.RuntimeException: Problem parsing near line 1 <gen-class))> original reported cause is clojure.lang.ArityException: Wrong number of args (4)
passed to: parser/read-keyword -- clojure.lang.ArityException: Wrong number of args (4) passed to: parser/read-keyword, compiling:(/private/var/folders/h_/tj7s1cyn0wb49fcnhc660gb
w1b_4z4/T/form-init5895226127987567712.clj:1:125)
at clojure.lang.Compiler.load(Compiler.java:7391)
at clojure.lang.Compiler.loadFile(Compiler.java:7317)
at clojure.main$load_script.invokeStatic(main.clj:275)
at clojure.main$init_opt.invokeStatic(main.clj:277)
at clojure.main$init_opt.invoke(main.clj:277)
at clojure.main$initialize.invokeStatic(main.clj:308)
at clojure.main$null_opt.invokeStatic(main.clj:342)
at clojure.main$null_opt.invoke(main.clj:339)
at clojure.main$main.invokeStatic(main.clj:421)
at clojure.main$main.doInvoke(main.clj:384)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:383)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException: Problem parsing near line 1 <gen-class))> original reported cause is clojure.lang.ArityException: Wrong number of args (4) passed to: parse
r/read-keyword -- clojure.lang.ArityException: Wrong number of args (4) passed to: parser/read-keyword
at clojure.lang.LispReader.read(LispReader.java:292)
at clojure.lang.LispReader.read(LispReader.java:196)
at clojure.lang.LispReader.read(LispReader.java:190)
at marginalia.parser$parse_STAR_$fn__422$fn__425.invoke(parser.clj:153)
at marginalia.parser$parse_STAR_$fn__422.invoke(parser.clj:152)
at clojure.core$repeatedly$fn__5339.invoke(core.clj:4945)

Marginalia chokes on Clojure 1.7 with deeper-level namespaces

Steps to reproduce:

lein new marg17
cd marg17
mkdir sub

In marg17/sub/a.clj:

(ns marg17.sub.a)

In marg17/sub/b.clj:

(ns marg17.sub.b
  (:require [marg17.sub.a]))

In project.clj: change Clojure 1.6 to 1.7.

Result:

marg17 (master)  lein marg
Generating Marginalia documentation for the following source files:
   /Users/jjacobsen/ol-dev/ng-salt/dev2/projects/marg17/src/marg17/core.clj
   /Users/jjacobsen/ol-dev/ng-salt/dev2/projects/marg17/src/marg17/sub/a.clj
   /Users/jjacobsen/ol-dev/ng-salt/dev2/projects/marg17/src/marg17/sub/b.clj

Exception in thread "main" java.lang.RuntimeException: Problem parsing near line 1 <require [marg17.sub.a]))> original reported cause is clojure.lang.ArityException: Wrong number of args (4) passed to: parser/read-keyword -- clojure.lang.ArityException: Wrong number of args (4) passed to: parser/read-keyword, compiling:(/private/var/folders/qt/x00tk_5100d9vv6p3ffldy740000gp/T/form-init3410464737499441527.clj:1:125)
    at clojure.lang.Compiler.load(Compiler.java:7239)
    at clojure.lang.Compiler.loadFile(Compiler.java:7165)
    at clojure.main$load_script.invoke(main.clj:275)
    at clojure.main$init_opt.invoke(main.clj:280)
    at clojure.main$initialize.invoke(main.clj:308)
    at clojure.main$null_opt.invoke(main.clj:343)
    at clojure.main$main.doInvoke(main.clj:421)
    at clojure.lang.RestFn.invoke(RestFn.java:421)
    at clojure.lang.Var.invoke(Var.java:383)
    at clojure.lang.AFn.applyToHelper(AFn.java:156)
    at clojure.lang.Var.applyTo(Var.java:700)
    at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException: Problem parsing near line 1 <require [marg17.sub.a]))> original reported cause is clojure.lang.ArityException: Wrong number of args (4) passed to: parser/read-keyword -- clojure.lang.ArityException: Wrong number of args (4) passed to: parser/read-keyword
    at clojure.lang.LispReader.read(LispReader.java:292)
    at clojure.lang.LispReader.read(LispReader.java:196)
    at clojure.lang.LispReader.read(LispReader.java:190)
    at marginalia.parser$parse_STAR_$fn__418$fn__421.invoke(parser.clj:153)
    at marginalia.parser$parse_STAR_$fn__418.invoke(parser.clj:152)
    at clojure.core$repeatedly$fn__5111.invoke(core.clj:4921)
    at clojure.lang.LazySeq.sval(LazySeq.java:40)
    at clojure.lang.LazySeq.seq(LazySeq.java:49)
    at clojure.lang.RT.seq(RT.java:507)
    at clojure.core$seq__4128.invoke(core.clj:137)
    at clojure.core$tree_seq$walk__5045$fn__5046.invoke(core.clj:4739)
    at clojure.lang.LazySeq.sval(LazySeq.java:40)
    at clojure.lang.LazySeq.seq(LazySeq.java:49)
    at clojure.lang.LazySeq.more(LazySeq.java:85)
    at clojure.lang.RT.more(RT.java:683)
    at clojure.core$rest__4114.invoke(core.clj:73)
    at clojure.core$flatten.invoke(core.clj:6851)
    at marginalia.parser$parse_STAR_.invoke(parser.clj:146)
    at marginalia.parser$parse.invoke(parser.clj:382)
    at marginalia.parser$parse_file.invoke(parser.clj:400)
    at marginalia.core$path_to_doc.invoke(core.clj:177)
    at clojure.core$map$fn__4553.invoke(core.clj:2624)
    at clojure.lang.LazySeq.sval(LazySeq.java:40)
    at clojure.lang.LazySeq.seq(LazySeq.java:49)
    at clojure.lang.RT.seq(RT.java:507)
    at clojure.core$seq__4128.invoke(core.clj:137)
    at clojure.core$map$fn__4553.invoke(core.clj:2616)
    at clojure.lang.LazySeq.sval(LazySeq.java:40)
    at clojure.lang.LazySeq.seq(LazySeq.java:49)
    at clojure.lang.RT.seq(RT.java:507)
    at clojure.core$seq__4128.invoke(core.clj:137)
    at clojure.core$map$fn__4553.invoke(core.clj:2616)
    at clojure.lang.LazySeq.sval(LazySeq.java:40)
    at clojure.lang.LazySeq.seq(LazySeq.java:49)
    at clojure.lang.Cons.next(Cons.java:39)
    at clojure.lang.RT.boundedLength(RT.java:1735)
    at clojure.lang.RestFn.applyTo(RestFn.java:130)
    at clojure.core$apply.invoke(core.clj:630)
    at marginalia.hiccup$eval57$fn__58.invoke(hiccup.clj:99)
    at clojure.lang.MultiFn.invoke(MultiFn.java:229)
    at clojure.lang.Var.invoke(Var.java:379)
    at marginalia.html$toc_html.invoke(html.clj:189)
    at marginalia.html$uberdoc_html.invoke(html.clj:400)
    at marginalia.core$uberdoc_BANG_.invoke(core.clj:208)
    at marginalia.core$run_marginalia.doInvoke(core.clj:293)
    at clojure.lang.RestFn.invoke(RestFn.java:410)
    at user$eval792.invoke(form-init3410464737499441527.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6782)
    at clojure.lang.Compiler.eval(Compiler.java:6772)
    at clojure.lang.Compiler.load(Compiler.java:7227)
    ... 11 more
Subprocess failed
marg17 (master)

Change it back to 1.6.0 and it works fine.

lein-marginalia uses deprecated function from leiningen 2

$ lein version
Leiningen 2.0.0-preview8 on Java 1.7.0_04 Java HotSpot(TM) 64-Bit Server VM
$ lein marg
WARNING: conj-dependencies is deprecated.
...

conj-dependency got deprecated in 2.0.0-preview3. The warning has plural form, but the actual function name is singular.

escape-html does not exist

Project stats:

  • Leinginen 2.0.0-preview6
  • Clojure 1.4.0
  • A :plugins entry in the project.clj with entry [lein-marginalia "0.7.0"]

When I run lein help, I see the marg task. When I run lein marg, I get the following:

WARNING: conj-dependencies is deprecated.
All namespaces already :aot compiled.
Exception in thread "main" java.lang.IllegalAccessError: escape-html does not exist
    at clojure.core$refer.doInvoke(core.clj:3778)
    at clojure.lang.RestFn.applyTo(RestFn.java:139)
    at clojure.core$apply.invoke(core.clj:603)
    at clojure.core$load_lib.doInvoke(core.clj:5279)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:603)
    at clojure.core$load_libs.doInvoke(core.clj:5298)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:605)
    at clojure.core$use.doInvoke(core.clj:5392)
    at clojure.lang.RestFn.invoke(RestFn.java:421)
    at marginalia.html$eval11$loading__4784__auto____12.invoke(html.clj:1)
    at marginalia.html$eval11.invoke(html.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6511)
    at clojure.lang.Compiler.eval(Compiler.java:6501)
    at clojure.lang.Compiler.load(Compiler.java:6952)
    at clojure.lang.RT.loadResourceScript(RT.java:359)
    at clojure.lang.RT.loadResourceScript(RT.java:350)
    at clojure.lang.RT.load(RT.java:429)
    at clojure.lang.RT.load(RT.java:400)
    at clojure.core$load$fn__4890.invoke(core.clj:5415)
    at clojure.core$load.doInvoke(core.clj:5414)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5227)
    at clojure.core$load_lib.doInvoke(core.clj:5264)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:603)
    at clojure.core$load_libs.doInvoke(core.clj:5302)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:605)
    at clojure.core$use.doInvoke(core.clj:5392)
    at clojure.lang.RestFn.invoke(RestFn.java:421)
    at marginalia.core$eval5$loading__4784__auto____6.invoke(core.clj:34)
    at marginalia.core$eval5.invoke(core.clj:34)
    at clojure.lang.Compiler.eval(Compiler.java:6511)
    at clojure.lang.Compiler.eval(Compiler.java:6501)
    at clojure.lang.Compiler.load(Compiler.java:6952)
    at clojure.lang.RT.loadResourceScript(RT.java:359)
    at clojure.lang.RT.loadResourceScript(RT.java:350)
    at clojure.lang.RT.load(RT.java:429)
    at clojure.lang.RT.load(RT.java:400)
    at clojure.core$load$fn__4890.invoke(core.clj:5415)
    at clojure.core$load.doInvoke(core.clj:5414)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5227)
    at clojure.core$load_lib.doInvoke(core.clj:5264)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:603)
    at clojure.core$load_libs.doInvoke(core.clj:5298)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:603)
    at clojure.core$require.doInvoke(core.clj:5381)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at user$eval1.invoke(NO_SOURCE_FILE:1)
    at clojure.lang.Compiler.eval(Compiler.java:6511)
    at clojure.lang.Compiler.eval(Compiler.java:6500)
    at clojure.lang.Compiler.eval(Compiler.java:6477)
    at clojure.core$eval.invoke(core.clj:2797)
    at clojure.main$eval_opt.invoke(main.clj:297)
    at clojure.main$initialize.invoke(main.clj:316)
    at clojure.main$null_opt.invoke(main.clj:349)
    at clojure.main$main.doInvoke(main.clj:427)
    at clojure.lang.RestFn.invoke(RestFn.java:421)
    at clojure.lang.Var.invoke(Var.java:419)
    at clojure.lang.AFn.applyToHelper(AFn.java:163)
    at clojure.lang.Var.applyTo(Var.java:532)
    at clojure.main.main(main.java:37)

better help

Hey fogus,
Thanks for this doc tool! While using lein marg, I keep finding myself having to reference the marginalia readme. It would be great if we could get the command usage on the commandline. Would you take a pull request that transports what's in marginalia.core/run-marginalia into the doc string of the marg command? If so, I would provide a core/usage fn that provides a string for lein-marg to spit out

Keywords with internal colons break parsing

This fails (with lein marg src/test_fail.clj):

(ns test-fail)
(def test {:xmlns:test "http://example.com/"})

output is:

Problem parsing near line 2 <)> original reported cause is java.lang.RuntimeException: Map literal must contain an even number of forms

This passes (lein marg src/test_pass.clj, in the same project):

(ns test-pass)
(def test {:xmlns_test "http://example.com/"})

(Clojure itself has no problem with keywords with inner :.)

docstrings not handled

I can't seem to get it to work at all for me -- am I doing it wrong? I have a simple hello world project. I do:

lein marg

...which gives the uberdoc you can see here

marginalia doesn't parse namespaced keywords

I have multimethod calls that use :: type keywords, so I can do this:

;; multimethod definition
(ns sandbox.multi)

(def impls (atom {}))
(defmulti foo (fn [arg] (@impls arg)))
(defn set-impl! [arg impl] (swap! impls assoc arg impl))
;; multimethod implementation 
(ns sandbox.backend
  (:use sandbox.multi))

(defmethod foo ::backend [arg] (println "backend:" arg))
;; binding namespace for multi and backend
(ns sandbox.core
  (:require [sandbox.multi :as multi]
            [sandbox.backend :as backend])
  (:gen-class))

(defn init []
  (multi/set-impl! :user ::backend/backend)
  (multi/foo :user))

When feeding this code to marginalia, I get a multitude of reader errors "Invalid token: ::backend/backend", which is weird since the reader is able to parse it within the context of the namespace where it is called:

sandbox.core=> (read-string "::backend/backend")
:sandbox.backend/backend

Even more disturbing is that using the full namespace notation (:sandbox.backend/backend) unbreaks marginalia, which seems to stem from the fact that the reader accepts arbitrary namespaces for that notation, not for the :: notation:

sandbox.core=> (read-string ":sandbox.foo/bar")
:sandbox.foo/bar
sandbox.core=> (read-string "::foo/bar")
java.lang.RuntimeException: java.lang.Exception: Invalid token: ::foo/bar (NO_SOURCE_FILE:0)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.