Cider: 污垢清除

创建于 2019-06-27  ·  32评论  ·  资料来源: clojure-emacs/cider

@arrdem已否决魔法书,并重定向到Clojure的文档。 因此,现在cider-grimoire产生以下内容:

image

我花了几分钟查看clojuredocs,看看是否有一个api,但我不相信有。 我们需要交换到clojuredocs或删除此功能。

我希望看到它向Clojure文档发展。 @ cursive-ide做到了,它很_光滑。 我非常喜欢编辑器中的文档,并且会想念@arrdem的工作成果。 非常感谢您所做的伟大项目,并为今后的工作做出了愉快的努力。

help wanted

最有用的评论

@bbatsov好! 我修复了导出EDN文件。
https://clojuredocs-edn.netlify.com/export.compact.edn

这里没有印刷精美的版本。

所有32条评论

似乎有一些API,因为有一个旧的客户端-https://github.com/dakrone/clojuredocs-client/blob/master/src/cd_client/core.clj不确定是否仍然有效,但我认为可能是如果我们决定支持它,创建一个用于处理ClojureDocs的中间件的好主意。 这也将使我们能够在文档等中显示示例。

我认为没有API,但可以在以下位置找到档案: https :

谢谢@ cursive-ide! 我想知道你是怎么做到的。 您的实现非常流畅且方便。

在对API的现有请求中添加了注释,以查看为该数据提供/需要什么样的权限。 似乎它的大小约为3mb,所以也许可以将其放入edn文件中,并与果园或cider-nrepl一起分发?

@dpsutton我同意。 这就是我们在Orchard中为see-also.edn所做的工作-这只是我们不时更新的clojuredocs的导出。 我们只需要添加几个lein / make任务即可简化这些出口。

另请参阅https://github.com/clojure-emacs/orchard/issues/60 ,该链接链接到我们过去如何从ClojureDocs中提取see-also.edn

/ me悲伤地挥手

@bbatsov我正在测试在vim-iced中使用clojuredocs-export.json。
https://github.com/liquidz/iced-nrepl/blob/feature/clojuredocs/src/iced/nrepl/document.clj

在我的实现中,我尝试接收json-path并缓存JSON数据,因为与see-also.edn不同,它似乎经常更改。

我可以将此代码贡献给果园或cider-nrepl。 您如何看待这种实施方式?

@liquidz该实现对我而言似乎很合理,这一点令人失望,因为没有EDN导出,现在我们需要第三方dep来解析JSON。 这意味着我们必须在cider-nrepl而不是orchard ,因为理想情况下,Orchard应该保持空闲状态(即Clojure / ClojureScript之外)。

无论如何,我想这已经足够了。 感谢您提供帮助!

@bbatsov谢谢!
我正在确认有关EDN格式导出到clojuredocs的信息。
如果没有计划将数据导出为EDN格式,我将创建PR到cider-nrepl存储库。

大!

如果没有计划将数据导出为EDN格式,我将创建PR到cider-nrepl存储库。

顺便说一句,我一直在想我们也可以自己实现,因为我们所需要的只是将一些琐碎的Web服务部署到Heroku(或其他任何东西)上,它每天都会提取json导出并将其转换为EDN。 不过,我希望@zk能够帮助我们直接从源头导出一些EDN。

@bbatsov

顺便说一句,我一直在想我们也可以自己实现,因为我们所需要的只是将一些琐碎的Web服务部署到Heroku(或其他任何东西)上,它每天都会提取json导出并将其转换为EDN。

如何使用Netlify?
我做了一个简单的项目作为测试,每天将转换后的EDN文件发送到Netlify。

@liquidz太棒了! 那正是我的初衷。

现在,您可以直接将功能添加到Orchard,而cider-nrepl将仅具有一个思想包装器。

@liquidz我终于开始研究这个问题,我注意到可以对导出进行一些调整以便更加方便-它保留了每个人所做的所有编辑的记录,我想我们只需要丢弃此信息并放入:see-alsos东西即可:notes:examples作为与向量关联的每个符号的顶级关键字。 我们可以保留导出的原始数据,并让果园对数据进行处理,但是在我看来,我们可以直接清理导出的内容(这也将使其下载得更小)。

@bbatsov我不确定您期望什么结构。
你能告诉我具体的例子吗?

@liquidz当然!

例如,在这里,我将删除有关如何创建/编辑内容的所有作者信息:

:vars [{:ns "clojure.core", :name "def", :type "var", :see-alsos [{:created-at 1289040035000, :author {:login "boxie", :account-source "clojuredocs", :avatar-url "https://www.gravatar.com/avatar/bfc366066e3c1beee98f3a6666728169?r=PG&default=identicon"}, :to-var {:ns "clojure.core", :name "defn", :library-url "https://github.com/clojure/clojure"}, :_id "542692eaf6e94c6970521b15"} {:created-at 1289040039000, :author {:login "boxie", :account-source "clojuredocs", :avatar-url "https://www.gravatar.com/avatar/bfc366066e3c1beee98f3a6666728169?r=PG&default=identicon"}, :to-var {:ns "clojure.core", :name "fn", :library-url "https://github.com/clojure/clojure"}, :_id "542692eaf6e94c6970521b16"} {:created-at 1289040051000, :author {:login "boxie", :account-source "clojuredocs", :avatar-url "https://www.gravatar.com/avatar/bfc366066e3c1beee98f3a6666728169?r=PG&default=identicon"},

此类数据对ClojureDocs本身很重要,但是当您只想在编辑器中显示某些数据时并不重要。 就像我说的那样-在Orchard中调整数据处理对我来说不是什么大不了的事,但是我有理由相信我们永远不会需要这种类型的数据,因此使导出更加紧凑可能更好。 基本上这样是理想的:

{:var {:ns ... :name ... :type ... :see-alsos [just a list of vars] :notes [just a list of notes] :examples just a list of examples}

这个名字有意义吗?

@bbatsov谢谢!
对我来说也很好。
我将尝试将示例数据放入https://clojuredocs-edn.netlify.com/

@bbatsov我在这里部署了精简版。
https://clojuredocs-edn.netlify.com/export.compact.edn
这个样本数据怎么样?

@liquidz太棒了! 那正是我的初衷! 我猜我们可以更新orchard / cider-nrepl来使用此数据。

@bbatsov我开始理解cider-clojuredocs的代码,并且我注意到从果园/苹果酒-nrepl获得的数据有所帮助。

查找符号def时的dict输出:

(dict "status" ("done") "doc" "Creates and interns a global var with the name
  of symbol in the current namespace (*ns*) or locates such a var if
  it already exists.  If init is supplied, it is evaluated, and the
  root binding of the var is set to the resulting value.  If init is
  not supplied, the root binding of the var is unaffected." "forms-str" "(def symbol doc-string? init?)" "id" "56" "name" "def" "see-also" ("clojure.core/defn" "clojure.core/fn" "clojure.core/defmacro" "clojure.core/defmulti" "clojure.core/defonce" "clojure.core/ns-unmap") "session" "e7babf3b-fe95-49dc-999d-8565bbf9ab72" "special-form" "true" "url" "https://clojure.org/special_forms#def")

它缺少代码中期望的ns键,以便通过browse-url发出请求。 我认为针对这种情况的解决方案从此数据的来源出发会更好。 您能指出一些进一步调试的方向吗?

我认为由于某种原因,这根本不是ClojureDocs导出的一部分,这似乎有些怪异,但是对从中得到的结果进行微调并不困难。

@wandersoncferreira @bbatsov

“特殊形式”“真实”

ClojureDocs导出数据似乎没有特殊格式的ns键。
https://clojure.org/reference/special_forms

好吧,我想我们可以认为缺少ns就是clojure.core 。 或在导出器服务中稍微调整数据。

这个假设足够好,但是我认为调整数据导出器以包含clojure.core命名空间并将cider-clojuredocs上的当前实现保持不变将是很好的。

@wandersoncferreira @bbatsov
哦,我误会了! 抱歉!
info op不会返回特殊格式的ns键。

这是查找符号def时的dict输出:

我想这是info op的回应。

因此,我们应该调整info op或将缺少ns视为clojure.core

是的,我们应该。

我可以在星期四工作。 我们赞助在巴西举行的南方Clojure活动,我非常忙于组织我们将带给活动的所有内容。 希望看到你在@bbatsov

@wandersoncferreira同样!

@liquidz关于导出的一个小注意事项-如果您漂亮地打印了导出edns,那将是非常不错的,因此人为操作它们会更容易一些。 更不用说Emacs处理非常差的超长线了。 :D

@bbatsov好! 我修复了导出EDN文件。
https://clojuredocs-edn.netlify.com/export.compact.edn

这里没有印刷精美的版本。

大! 谢谢! 🙇

此页面是否有帮助?
0 / 5 - 0 等级