franks42 / clj-ns-browser

Smalltalk-like namespace/class/var/function browser for clojure docs and source-code based on seesaw
Eclipse Public License 1.0
176 stars 11 forks source link

Use ns-tracker for dynamic/real-time update #44

Open franks42 opened 12 years ago

franks42 commented 12 years ago

https://github.com/weavejester/ns-tracker

jafingerhut commented 12 years ago

It appears from a brief skim of this that it is intended to help detect when source files have been updated since the last time the file was loaded into the running JVM. Are you thinking that we would add this feature to clj-ns-browser?

If you were hoping that it would help detect changes to a namespace's contents, i.e. which symbols were defined, or tracking when their definitions have changed, I suspect that the polling method used now is as good a method as any.

franks42 commented 12 years ago

Correct, but there is more hidden in the source…

It has private functions that allow you to build-up the dependency graph for namespaces, like:

<Var@33dce164:

{:dependencies {clj-ns-browser.utils

{cd-client.core clj-info.doc2txt clojure.tools.namespace

  clojure.java.shell clj-info.doc2map clojure.string clojure.set
  seesaw.core clojure.tools.trace clojure.java.io clojure.pprint
  clj-info.doc2html},
clj-ns-browser.sdoc #{clj-ns-browser.browser},
clj-ns-browser.core
#{seesaw.dev clj-ns-browser.sdoc clj-info seesaw.core
  clj-ns-browser.browser},
clj-ns-browser.browser
#{clojure.java.browse cd-client.core seesaw.bind seesaw.selector
  clojure.java.shell seesaw.dev seesaw.clipboard seesaw.mig
  clj-info.doc2map seesaw.dnd clj-ns-browser.utils clojure.string
  seesaw.meta clj-info seesaw.border clojure.set seesaw.core
  clojure.java.javadoc clj-ns-browser.inspector clojure.tools.trace
  clojure.java.io seesaw.rsyntax clojure.pprint}},

:dependents {clojure.java.browse #{clj-ns-browser.browser}, cd-client.core #{clj-ns-browser.utils clj-ns-browser.browser}, seesaw.bind #{clj-ns-browser.browser}, clj-info.doc2txt #{clj-ns-browser.utils}, clojure.tools.namespace #{clj-ns-browser.utils}, seesaw.selector #{clj-ns-browser.browser}, clojure.java.shell #{clj-ns-browser.utils clj-ns-browser.browser}, seesaw.dev #{clj-ns-browser.core clj-ns-browser.browser}, clj-ns-browser.sdoc #{clj-ns-browser.core}, seesaw.clipboard #{clj-ns-browser.browser}, seesaw.mig #{clj-ns-browser.browser}, clj-info.doc2map #{clj-ns-browser.utils clj-ns-browser.browser}, seesaw.dnd #{clj-ns-browser.browser}, clj-ns-browser.utils #{clj-ns-browser.browser}, clojure.string #{clj-ns-browser.utils clj-ns-browser.browser}, seesaw.meta #{clj-ns-browser.browser}, clj-info #{clj-ns-browser.core clj-ns-browser.browser}, seesaw.border #{clj-ns-browser.browser}, clojure.set #{clj-ns-browser.utils clj-ns-browser.browser}, seesaw.core

{clj-ns-browser.utils clj-ns-browser.core clj-ns-browser.browser},

clojure.java.javadoc #{clj-ns-browser.browser},
clj-ns-browser.inspector #{clj-ns-browser.browser},
clojure.tools.trace #{clj-ns-browser.utils clj-ns-browser.browser},
clojure.java.io #{clj-ns-browser.utils clj-ns-browser.browser},
clj-ns-browser.browser #{clj-ns-browser.sdoc clj-ns-browser.core},
seesaw.rsyntax #{clj-ns-browser.browser},
clojure.pprint #{clj-ns-browser.utils clj-ns-browser.browser},
clj-info.doc2html #{clj-ns-browser.utils}}}>

which shows you what other namespaces a certain namespace depends on and what other namespaces depend on a specific one.

The idea was that it could be an interesting additional doc-pane for a namespace.

If only we could easily add the version numbers and the namespaces in the jars (currently only source files).

On May 14, 2012, at 10:38 AM, Andy Fingerhut wrote:

It appears from a brief skim of this that it is intended to help detect when source files have been updated since the last time the file was loaded into the running JVM. Are you thinking that we would add this feature to clj-ns-browser?

If you were hoping that it would help detect changes to a namespace's contents, i.e. which symbols were defined, or tracking when their definitions have changed, I suspect that the polling method used now is as good a method as any.


Reply to this email directly or view it on GitHub: https://github.com/franks42/clj-ns-browser/issues/44#issuecomment-5696620