pdd.el, 用来发送 http 请求,可适配 url.el 和 plz.el

  • Support both sync/async request
  • Support streaming request
  • Support retry for timeout
  • Support proxies configuration
  • Support file upload/download

Example:

(pdd "https://httpbin.org/post"
     :headers '(("Content-Type" . "application/json"))
     :data '(("key" . "value"))
     :done (lambda (res) (tooltip-show res))
     :fail (lambda (err) (message "FAIL")))
5 个赞

这个库和plz.el怎么async使用,还是说自动针对某几个method启用?

不带 :done 是同步,带了是异步。

;; 不带 :done 是同步
(message "%s" 
   (raq "https://httpbin.org/user-agent"))

;; 带了 callback,自然是异步
(raq "https://httpbin.org/user-agent"
      :done (lambda (r) (message "%s" r)))
2 个赞

请教大佬,我习惯的用法是,elisp发起http请求,然后将请求结果显示在一个org-mode的页面中,代码类似这样

(raq "http://localhost/english-.php"
     :done (lambda (r)
             (with-current-buffer "a3.org"
               (erase-buffer) 
               (save-excursion 
                 (insert (format "%s" r)) )
               )) )

因为服务端也是我自己写的,我可以让服务端返回一个完整的org文件,让org文件包含链接带有交互性就实现了像使用网页应用一样使用org-mode。

因为服务端我自己写我可以让其返回的org文件的第一行是当前页面url,但我想在elisp端实现这个功能,这样就当服务端不是我自己写时也能用。也就是一个如何在回调函数callback中获取当前页面url的问题

没明白你的意思,http://localhost/english-.php 不就是具体 url 吗,需要额外获取吗?

比如:

(let ((url "https://www.bilibili.com"))
  (raq url :done
       (lambda ()
         (with-current-buffer "*scratch*"
           (insert url)))))

应该是需要额外获取,在回调函数中取不到这个url,你给的代码我eval了,~报 error in process filter: save-current-buffer: Symbol’s value as variable is void: url error in process filter: Symbol’s value as variable is void: url~

@lorniu 你的写法没错,emacs -q后可以取到,是我的配置有问题,就显示Symbol’s value as variable is void: url,调试了一会也无果,这可能是个隐藏bug,希望能找到原因吧

Reddit 上的人为什么戾气那么重啊。。。

https://www.reddit.com/r/emacs/comments/1jd2crb/new_package_raqel_http_library_adapter_for_emacs/

你是说这位吧,我真的不喜欢这个人,感觉有他做版主的一天,Emacs 就很难流行。

另外我觉得这个人很夹带私货,只要是自己开发过的,别人就不用再弄了一样。

呀,上帝都没办法让人类建巴别塔,他一个区区人类这么牛逼。


怼怼更健康:

才发现原来是 plz 的作者,难怪…

话说有个添加 PATCH 请求支持的补丁,有人提了一年多了一直不合并。今天看到我发的这个,立刻合了。挺逗。

1 个赞

沙包一个…

没必要这么怼吧,Emacs 圈子这么小,还是多一些友善为好

他作为版主,我认为他已经失去了管理职能。一味把 r/emacs 作为自己的私有领地。 如果你经常上去,看到他的作为,你就会知道我为什么要这么怼他。 以及,他经常删除对自己不利的帖子,并非一个正心正念的人。

没有什么没必要的。该怼就得怼,这些不要脸的人,就应该大声说出来这些人不要脸。

另外,一个想法不一定对,想让这个世界变得更好,应当管理冲突,而非回避冲突。

2 个赞

存个档。

继续存档:

继续存档:

我曹。。。真够疯的啊。我向 melpa 提了这个包,它在下面激烈反对合并。我真的是。。。无语了。。。

我有种被它网络暴力了的感觉…

PS: org-expose-emphasis-markers 这个包挺好的,可以直接在 melpa 下载,欢迎尝试啊。 :rofl:

2 个赞

自由确实有点像个伪命题,想起以前看过的一本书《自由及其背叛》,很有意思。

他说你直接复制了plz.el的代码?这个指控成立吗?

可能你不知道,这位上任版主应该是在24年末25年初的事,只不过之前也在r/emacs积极活跃

因为你被他怼了?但他说的也有道理,org-embd的作用机制完全可以独立于org-mode存在。

因为你被他怼了?但他说的也有道理,org-embd的作用机制完全可以独立于org-mode存在

他说的是有道理,但无法解决问题——有什么办法,除了使用 Xwidget 之外,可以让视频播放,嵌入到 org 文件之中。另外,org-embd 这一套机制,需要依赖 org-link 类型,否则无法在文件中定位。

他说和 org-mode 无关的理由,又从何成立。

同理,懒猫的 EAF 这一套框架,也可以被他喷为和 Emacs 无关。

另外,我不觉得被怼,这只是看待问题角度而产生的分歧。

他现在的经常锁贴,还有删除之前 r/emacs 上一个对他管理方法的吐槽。他的反应是,「在座的都没有理性,我之前做了很多贡献,巴拉巴拉」。

我之前在社区内部宣传过他的 org-ql 这个包。以及我很清楚他开发了大量其它的包,为 Emacs 和 org-mode 社区所做的贡献。问题是,他开发了什么,别人就不能继续开发了吗?解决一个问题,必须用他的方法是吗?

他的做法,让我大跌眼镜,我无法认同他处理问题时,将社区这个公器私用的方式。我质疑他的人品,以及我不会再用任何一个和他有关系的包。

至于你对他的观感如何,和我无关,以及我对他的观感,也与你无关——我无意冒犯任何人,以及我确实没有冒犯你的理由和行为。

还有,你对我的观感,也和我无关。大家只是因为 Emacs 在这个社区活跃。

1 个赞