Emacs 怎么使用代理

最简单的使用方式就是用开启ss service,然后设置http和https代理。 参考代码 (来自https://github.com/seagle0128/.emacs.d):

;; Configure network proxy
(defun show-proxy ()
  "Show http/https proxy."
  (interactive)
  (if url-proxy-services
      (message "Current proxy is \"%s\"" my-proxy)
    (message "No proxy")))

(defun set-proxy ()
  "Set http/https proxy."
  (interactive)
  (setq url-proxy-services `(("http" . ,my-proxy)
                             ("https" . ,my-proxy)))
  (show-proxy))

(defun unset-proxy ()
  "Unset http/https proxy."
  (interactive)
  (setq url-proxy-services nil)
  (show-proxy))

(defun toggle-proxy ()
  "Toggle http/https proxy."
  (interactive)
  (if url-proxy-services
      (unset-proxy)
    (set-proxy)))
2 个赞

我写了一个简单的mode, https://github.com/stardiviner/proxy-mode

1 个赞

老哥 稳 可以啊 顺利 小飞机 。。。。 感谢, 之前都不知道 socks-server 这个变量(也难怪,它没有doc description) 一直用的 url-proxy-services 这个变量 难怪 不可以用socks上https。 谢啦 :sunglasses:

Thanks

非常感谢,不过我在实验的时候发现http不行了,要全改成https才行:

(eval-after-load 'google-translate-core
  '(setq google-translate-base-url "https://translate.google.cn/translate_a/single"
         google-translate-listen-url "https://translate.google.cn/translate_tts"))

(eval-after-load 'google-translate-tk
  '(setq google-translate--tkk-url "https://translate.google.cn/"))
1 个赞

老帖又给挖起来了。

我不折腾邮件、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 个赞

能不能设置黑名单啊

大佬考不考虑 扔进melpa?

不知道为什么,我的mac一开代理用一会就会卡死,就跟windows的蓝屏一样,电脑系统报错然后重启。搞得我都不敢开代理,不知道有么有人遇到类似的情况。MacBook (Retina, 12-inch, Early 2016), Mojave

大佬不敢当。

还有文档/测试没补上。

melpa 的规定有时候也比较烦人,我不想把 with-{url,shell}-proxy 的命名改成 with-proxy- 开头。

1 个赞

:slightly_smiling_face: 我挺喜欢这个包的 从你的with-emacs 粉过来的 我不太想用submodule管理包,机器老,check太慢,看来只能自己补个本地recipe了

通常即使出错也不会导致系统重启吧,你用 emacs -Q(或者 other-emacs-eval / with-emacs) 试试。

先克隆到本地用吧,等 melpa 要很久,purcell 十天半月才来审核一次。

没有重启,就是会出现 “your system meet some problems…” 之类的一段话表示系统崩了,不得不重启。

你的 openssl / gnutls 库有问题吗?

不知道,没有研究过这个,就是一顿瞎折腾

@Angelaneia with-proxy 进 MELPA 了,我最后妥协了 ,改了宏的名字 ╮(╯_╰)╭

进melpa后再改回来应该就不会管了吧 :crazy_face:

感谢啊 喵✨

MELPA有些事情管太严了,比如我喜欢写(when (not ...) ...)非得让我改成(unless ... ...)每次看unless form都费我好大劲才明白