Emacs 怎么使用代理

老帖又给挖起来了。

我不折腾邮件、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-proxy
  • with-shell-proxy
4 个赞