@@ -1777,18 +1777,44 @@ it forget them only when we are sure they don't exist."
1777
1777
; ;; Proxy
1778
1778
; ;; =====
1779
1779
1780
- (defun minemacs-enable-proxy ()
1781
- " Set *_proxy Linux environment variables from `minemacs-proxies' ."
1782
- (interactive )
1783
- (dolist (prox minemacs-proxies)
1784
- (let ((var (format " %s _proxy" (car prox))))
1785
- (+log! " Set %S to %S" var (cdr prox))
1786
- (setenv var (cdr prox)))))
1780
+ (defun minemacs-get-enabled-proxies ()
1781
+ " Get a list of enabled proxies."
1782
+ (cl-loop
1783
+ for prox in '(" no" " ftp" " http" " https" )
1784
+ append (cl-loop for fn in '(downcase upcase)
1785
+ collect (cons (funcall fn prox) (getenv (funcall fn (format " %s _proxy" prox)))))))
1786
+
1787
+ (defun minemacs-set-enabled-proxies (proxies )
1788
+ " Set PROXIES."
1789
+ (cl-loop
1790
+ for prox in proxies
1791
+ do (cl-loop
1792
+ for fn in '(upcase downcase)
1793
+ do (cons (funcall fn (car prox)) (setenv (funcall fn (format " %s _proxy" (car prox))) (cdr prox))))))
1794
+
1795
+ (defun minemacs-enable-proxy (proxies )
1796
+ " Set *_proxy Linux environment variables from PROXIES."
1797
+ (interactive (list minemacs-proxies))
1798
+ (minemacs-set-enabled-proxies proxies))
1787
1799
1788
1800
(defun minemacs-disable-proxy ()
1789
1801
" Unset *_proxy Linux environment variables."
1790
1802
(interactive )
1791
- (mapc #'setenv (mapcar (apply-partially #'format " %s_proxy" ) (mapcar #'car minemacs-proxies))))
1803
+ (minemacs-set-enabled-proxies (mapcar (lambda (a ) (list (car a))) minemacs-proxies)))
1804
+
1805
+ (defmacro +with-proxies (&rest body)
1806
+ " Execute BODY with proxies enabled from `minemacs-proxies' ."
1807
+ `(progn
1808
+ (minemacs-enable-proxy minemacs-proxies)
1809
+ ,@body
1810
+ (minemacs-disable-proxy)))
1811
+
1812
+ (defmacro +with-no-proxies (&rest body)
1813
+ " Execute BODY with proxies disabled."
1814
+ `(let ((old-proxies (minemacs-get-enabled-proxies)))
1815
+ (minemacs-enable-proxy minemacs-proxies)
1816
+ ,@body
1817
+ (minemacs-disable-proxy)))
1792
1818
1793
1819
1794
1820
0 commit comments