X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=blobdiff_plain;f=elpher.el;h=a360c57ff6338ef15d42f2a61c9551b0d80a9465;hp=76aa9923695d80d3634fbf962342fa3802b18015;hb=55151332e7c376f9a8766c89ae93fec84b3ead1e;hpb=66a50adea6ca82974a87ea7561f690a449dcbd57 diff --git a/elpher.el b/elpher.el index 76aa992..a360c57 100644 --- a/elpher.el +++ b/elpher.el @@ -5,6 +5,7 @@ ;; Copyright (C) 2021 Christopher Brannon ;; Copyright (C) 2021 Omar Polo ;; Copyright (C) 2021 Noodles! +;; Copyright (C) 2021 Abhiseck Paira ;; Copyright (C) 2020-2021 Alex Schroeder ;; Copyright (C) 2020 Zhiwei Chen ;; Copyright (C) 2020 condy0919 @@ -19,7 +20,7 @@ ;; Author: Tim Vaughan ;; Created: 11 April 2019 -;; Version: 3.0.0 +;; Version: 3.1.0 ;; Keywords: comm gopher ;; Homepage: https://thelambdalab.xyz/elpher ;; Package-Requires: ((emacs "27.1")) @@ -84,7 +85,7 @@ ;;; Global constants ;; -(defconst elpher-version "3.0.0" +(defconst elpher-version "3.1.0" "Current version of elpher.") (defconst elpher-margin-width 6 @@ -127,6 +128,7 @@ (defvar ansi-color-context) (defvar bookmark-make-record-function) (defvar mu4e~view-beginning-of-url-regexp) + (defvar eww-use-browse-url) (defvar thing-at-point-uri-schemes) (defvar xterm-color-preserve-properties)) @@ -1129,13 +1131,16 @@ If ADDRESS is not supplied or nil the record is rendered as an (if (not data) nil (if (display-images-p) - (progn - (let ((image (create-image - data - nil t))) - (elpher-with-clean-buffer - (insert-image image) - (elpher-restore-pos)))) + (let* ((image (create-image + data + nil t)) + (window (get-buffer-window elpher-buffer-name))) + (when window + (setf (image-property image :max-width) (window-pixel-width window)) + (setf (image-property image :max-height) (window-pixel-height window))) + (elpher-with-clean-buffer + (insert-image image) + (elpher-restore-pos))) (elpher-render-download data)))) ;; Search retrieval and rendering @@ -1449,7 +1454,7 @@ treatment that a separate function is warranted." (if (string-empty-p (url-filename address)) (setf (url-filename address) "/")) ;ensure empty filename is marked as absolute (setf (url-host address) (url-host current-address)) - (setf (url-port address) (url-port current-address)) + (setf (url-portspec address) (url-portspec current-address)) ; (url-port) too slow! (unless (string-prefix-p "/" (url-filename address)) ;deal with relative links (setf (url-filename address) (concat (file-name-directory (url-filename current-address)) @@ -2017,6 +2022,12 @@ supports the old protocol elpher, where the link is self-contained." (setq mu4e~view-beginning-of-url-regexp "\\(?:https?\\|gopher\\|finger\\|gemini\\)://\\|mailto:") +;;; eww: + +;; Let elpher handle gemini, gopher links in eww buffer. +(setq eww-use-browse-url + "\\`mailto:\\|\\(\\`gemini\\|\\`gopher\\|\\`finger\\)://") + ;;; Interactive procedures ;; @@ -2040,21 +2051,23 @@ supports the old protocol elpher, where the link is self-contained." "Go to a particular gopher site HOST-OR-URL. When run interactively HOST-OR-URL is read from the minibuffer." (interactive "sGopher or Gemini URL: ") - (let* ((cleaned-host-or-url (string-trim host-or-url)) - (address (elpher-address-from-url cleaned-host-or-url)) - (page (elpher-make-page cleaned-host-or-url address))) - (switch-to-buffer elpher-buffer-name) - (elpher-with-clean-buffer - (elpher-visit-page page)) - nil)) + (let ((trimmed-host-or-url (string-trim host-or-url))) + (unless (string-empty-p trimmed-host-or-url) + (let* ((address (elpher-address-from-url trimmed-host-or-url)) + (page (elpher-make-page trimmed-host-or-url address))) + (switch-to-buffer elpher-buffer-name) + (elpher-with-clean-buffer + (elpher-visit-page page)) + nil)))) ; non-nil value is displayed by eshell (defun elpher-go-current () "Go to a particular site read from the minibuffer, initialized with the current URL." (interactive) - (let ((address (elpher-page-address elpher-current-page))) - (let ((url (read-string "Gopher or Gemini URL: " - (unless (elpher-address-special-p address) - (elpher-address-to-url address))))) + (let* ((address (elpher-page-address elpher-current-page)) + (url (read-string "Gopher or Gemini URL: " + (unless (elpher-address-special-p address) + (elpher-address-to-url address))))) + (unless (string-empty-p (string-trim url)) (elpher-visit-page (elpher-make-page url (elpher-address-from-url url)))))) (defun elpher-redraw ()