(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"))
"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."))))
(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 ()