老帖又给挖起来了。
我不折腾邮件、rss 这些,所以需要用到代理的情况不多,主要就是下载包的时候。然而大多数的包从国内 elpa 镜像下载,剩下少部分用 el-get 下载,这其中又只有少部分才需要代理。所以我只需要针对个别的 url 使用代理,例如:
(setq package-recipes
'(...
(mwe-log-commands . (http "http://www.foldr.org/~michaelw/emacs/mwe-log-commands.el"
:proxy t))
...))
然后把下载函数包裹在 with-url-proxy 中,需要代理的时候临时开一下:
(if (need-proxy? package)
(with-url-proxy
(funcall 'el-get-do-install package))
(funcall 'el-get-do-install package))
刚刚顺手把相关的函数提取出来做一个单独的包发布了:
提供了这些函数:
-
with-proxy等效于以下两个函数叠加 with-url-proxywith-shell-proxy