X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=blobdiff_plain;f=elpher.el;h=a1811c2fcb3a4c05d5a45807c196498e15c31621;hp=4e8d3a27ce889898d9063073964ed587f7639da1;hb=9a84af37c81c48d39eb301002c39d4671002d62a;hpb=15382d508e2f519654b67db506257582a89ca82c diff --git a/elpher.el b/elpher.el index 4e8d3a2..a1811c2 100644 --- a/elpher.el +++ b/elpher.el @@ -686,12 +686,19 @@ once they are retrieved from the gopher server." (insert " ")) (insert (make-string elpher-margin-width ?\s)))) -(defun elpher-page-button-help (page) - "Return a string containing the help text for a button corresponding to PAGE." - (let ((address (elpher-page-address page))) - (format "mouse-1, RET: open '%s'" (if (elpher-address-special-p address) - address - (elpher-address-to-url address))))) +(defun elpher--page-button-help (_window buffer pos) + "Function called by Emacs to generate mouse-over text. +The arguments specify the BUFFER and the POS within the buffer of the item +for which help is required. The function returns the help to be +displayed. The _WINDOW argument is currently unused." + (with-current-buffer buffer + (let ((button (button-at pos))) + (when button + (let* ((page (button-get button 'elpher-page)) + (address (elpher-page-address page))) + (format "mouse-1, RET: open '%s'" (if (elpher-address-special-p address) + address + (url-recreate-url address)))))))) (defun elpher-insert-index-record (display-string &optional address) "Function to insert an index record into the current buffer. @@ -711,7 +718,7 @@ If ADDRESS is not supplied or nil the record is rendered as an 'elpher-page page 'action #'elpher-click-link 'follow-link t - 'help-echo (elpher-page-button-help page))) + 'help-echo #'elpher--page-button-help)) (pcase type ('nil ;; Information (elpher-insert-margin) @@ -757,7 +764,7 @@ If ADDRESS is not supplied or nil the record is rendered as an 'elpher-page page 'action #'elpher-click-link 'follow-link t - 'help-echo (elpher-page-button-help page) + 'help-echo #'elpher--page-button-help 'face 'button))) (buffer-string))) @@ -887,6 +894,7 @@ to ADDRESS." (error "Cannot establish gemini connection: GnuTLS not available") (unless (< (elpher-address-port address) 65536) (error "Cannot establish gemini connection: port number > 65536")) + (defvar gnutls-verify-error) (condition-case nil (let* ((kill-buffer-query-functions nil) (gnutls-verify-error nil) ; We use the NSM for verification @@ -1134,7 +1142,7 @@ For instance, the filename /a/b/../c/./d will reduce to /a/c/d" 'elpher-page page 'action #'elpher-click-link 'follow-link t - 'help-echo (elpher-page-button-help page))) + 'help-echo #'elpher--page-button-help)) (insert (propertize display-string 'face 'elpher-unknown))) (insert "\n")))) @@ -1203,7 +1211,10 @@ width defined by elpher-gemini-max-fill-width." ;; Finger page connection (defun elpher-get-finger-page (renderer &optional force-ipv4) - "Opens a finger connection to the current page address and renders it using RENDERER." + "Opens a finger connection to the current page address. +The result is rendered using RENDERER. When the optional argument +FORCE-IPV4 is non-nil, the IPv4 address returned by a DNS lookup will +be used explicitly in making the connection." (let* ((address (elpher-page-address elpher-current-page)) (content (elpher-get-cached-content address))) (if (and content (funcall renderer nil)) @@ -1248,7 +1259,7 @@ width defined by elpher-gemini-max-fill-width." (cons string selector-string-parts)))) (set-process-sentinel proc (lambda (_proc event) - (condition-case the-error + (condition-case _the-error (cond ((string-prefix-p "deleted" event)) ((string-prefix-p "open" event)