From 7a0f10d36dc0913c04bf6c5e7325e1bcb74aeab8 Mon Sep 17 00:00:00 2001 From: Tim Vaughan Date: Mon, 1 Jun 2020 22:22:27 +0200 Subject: [PATCH] Mouse-over text now generated when needed. This _dramatically_ improves rendering speed for link-heavy pages. Who knew this could be such a bottleneck!? --- elpher.el | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/elpher.el b/elpher.el index 4e8d3a2..b2db2b4 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))) @@ -1134,7 +1141,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")))) -- 2.20.1