X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=blobdiff_plain;f=elpher.el;h=7605bdf43f6ff7660c6e399a88f4a42c8d2e6c56;hp=d74b655e7f0943cf24aa090275be142eb26dfdca;hb=e643d174d3244b97b14755f8a4ab48a5dfeaf693;hpb=b1d3aca305d70ec2fffe249db3cf328035a41c0b diff --git a/elpher.el b/elpher.el index d74b655..7605bdf 100644 --- a/elpher.el +++ b/elpher.el @@ -1116,17 +1116,18 @@ For instance, the filename /a/b/../c/./d will reduce to /a/c/d" (defun elpher-address-from-gemini-url (url) "Extract address from URL with defaults as per gemini map files." - (let ((address (url-generic-parse-url url))) + (let ((address (url-generic-parse-url url)) + (current-address (elpher-page-address elpher-current-page))) (unless (and (url-type address) (not (url-fullness address))) ;avoid mangling mailto: urls (setf (url-fullness address) t) (if (url-host address) ;if there is an explicit host, filenames are absolute (if (string-empty-p (url-filename address)) (setf (url-filename address) "/")) ;ensure empty filename is marked as absolute - (setf (url-host address) (url-host (elpher-page-address elpher-current-page))) + (setf (url-host address) (url-host current-address)) + (setf (url-port address) (url-port current-address)) (unless (string-prefix-p "/" (url-filename address)) ;deal with relative links (setf (url-filename address) - (concat (file-name-directory - (url-filename (elpher-page-address elpher-current-page))) + (concat (file-name-directory (url-filename current-address)) (url-filename address))))) (unless (url-type address) (setf (url-type address) "gemini")) @@ -1684,7 +1685,8 @@ When run interactively HOST-OR-URL is read from the minibuffer." "Remove bookmark for the current page." (interactive) (let ((address (elpher-page-address elpher-current-page))) - (unless (elpher-address-special-p address) + (when (and (not (elpher-address-special-p address)) + (y-or-n-p "Really remove bookmark for the current page? ")) (elpher-remove-address-bookmark address) (message "Bookmark removed.")))) @@ -1693,10 +1695,11 @@ When run interactively HOST-OR-URL is read from the minibuffer." (interactive) (let ((button (button-at (point)))) (if button - (let ((page (button-get button 'elpher-page))) - (elpher-remove-address-bookmark (elpher-page-address page)) - (elpher-reload-bookmarks) - (message "Bookmark removed.")) + (when (y-or-n-p "Really remove bookmark for this link? ") + (let ((page (button-get button 'elpher-page))) + (elpher-remove-address-bookmark (elpher-page-address page)) + (elpher-reload-bookmarks) + (message "Bookmark removed."))) (error "No link selected")))) (defun elpher-bookmarks ()