X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=blobdiff_plain;f=elpher.el;h=e3cf717371a73276a2cf6d425cd6e04c7cc7850a;hp=ef133c658ae355f9f0b3d6811672a582f431c178;hb=af7102e6c6128a48eccf1bd1d6ba6a0aa8adedcf;hpb=8df32499ec6d54b37427a5f49bc41fce47a98ffc diff --git a/elpher.el b/elpher.el index ef133c6..e3cf717 100644 --- a/elpher.el +++ b/elpher.el @@ -92,13 +92,13 @@ (lambda (s) (let ((_xterm-color-render nil)) (xterm-color-filter s))) - 'ansi-color-filter-apply) + #'ansi-color-filter-apply) "A function to filter out ANSI escape sequences.") (defalias 'elpher-color-apply (if (fboundp 'xterm-color-filter) - 'xterm-color-filter - 'ansi-color-apply) + #'xterm-color-filter + #'ansi-color-apply) "A function to apply ANSI escape sequences.") ;;; Global constants @@ -134,14 +134,6 @@ "Association list from types to getters, renderers, margin codes and index faces.") -;;; Internal variables -;; - -;; buffer-local -(defvar elpher--gemini-page-headings nil - "List of headings on the page.") - - ;;; Declarations to avoid compiler warnings. ;; @@ -608,7 +600,8 @@ previously-visited pages,unless NO-HISTORY is non-nil." (unless (eq major-mode 'elpher-mode) ;; avoid resetting buffer-local variables (elpher-mode)) - (let ((inhibit-read-only t)) + (let ((inhibit-read-only t) + (ansi-color-context nil)) ;; clean ansi interpreter state (setq-local network-security-level (default-value 'network-security-level)) (erase-buffer) @@ -711,12 +704,28 @@ the host operating system and the local network capabilities.)" (condition-case nil (let* ((kill-buffer-query-functions nil) (port (elpher-address-port address)) - (service (if (> port 0) port default-port)) (host (elpher-address-host address)) - (socks (or elpher-socks-always (string-suffix-p ".onion" host))) + (service (if (> port 0) port default-port)) (response-string-parts nil) (bytes-received 0) (hkbytes-received 0) + (socks (or elpher-socks-always (string-suffix-p ".onion" host))) + (gnutls-params (list :type 'gnutls-x509pki + :hostname host + :keylist + (elpher-get-current-keylist address))) + (proc (if socks (socks-open-network-stream "elpher-process" nil host service) + (make-network-process :name "elpher-process" + :host host + :family (and force-ipv4 'ipv4) + :service service + :buffer nil + :nowait t + :tls-parameters + (and use-tls + (cons 'gnutls-x509pki + (apply #'gnutls-boot-parameters + gnutls-params)))))) (timer (run-at-time elpher-connection-timeout nil (lambda () (elpher-process-cleanup) @@ -739,21 +748,7 @@ the host operating system and the local network capabilities.)" response-processor nil force-ipv4)) (t - (elpher-network-error address "Connection time-out.")))))) - (gnutls-params (list :type 'gnutls-x509pki :hostname host - :keylist (elpher-get-current-keylist address))) - (proc (if socks (socks-open-network-stream "elpher-process" nil host service) - (make-network-process :name "elpher-process" - :host host - :family (and force-ipv4 'ipv4) - :service service - :buffer nil - :nowait t - :tls-parameters - (and use-tls - (cons 'gnutls-x509pki - (apply #'gnutls-boot-parameters - gnutls-params))))))) + (elpher-network-error address "Connection time-out."))))))) (setq elpher-network-timer timer) (set-process-coding-system proc 'binary 'binary) (set-process-query-on-exit-flag proc nil) @@ -1463,6 +1458,10 @@ treatment that a separate function is warranted." (insert (propertize display-string 'face 'elpher-unknown))) (insert "\n")))) +;; buffer-local +(defvar elpher--gemini-page-headings nil + "List of headings on the page.") + (defun elpher-gemini-insert-header (header-line) "Insert header described by HEADER-LINE into a text/gemini document. The gemini map file line describing the header is given