X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=blobdiff_plain;f=elpher.el;h=a18317f9899009d886d2f96916197d7316acf06c;hp=37631a413952a34ef5ee15596780aefdba9a8a31;hb=8928d9a4d04141b1de8fd5828a46b5c76eadd333;hpb=1884e041fd9e701d89535ded3f208ef3e6170ee7 diff --git a/elpher.el b/elpher.el index 37631a4..a18317f 100644 --- a/elpher.el +++ b/elpher.el @@ -19,9 +19,9 @@ ;; Author: Tim Vaughan ;; Created: 11 April 2019 -;; Version: 2.11.0 +;; Version: 3.0.0 ;; Keywords: comm gopher -;; Homepage: https://alexschroeder.ch/cgit/elpher +;; Homepage: https://thelambdalab.xyz/elpher ;; Package-Requires: ((emacs "27.1")) ;; This file is not part of GNU Emacs. @@ -62,7 +62,8 @@ ;; Elpher is under active development. Any suggestions for ;; improvements are welcome, and can be made on the official -;; project page, https://alexschroeder.ch/cgit/elpher. +;; project page, gopher://thelambdalab.xyz/elpher, or via the +;; project mailing list at https://lists.sr.ht/~michel-slm/elpher. ;;; Code: @@ -103,7 +104,7 @@ ;;; Global constants ;; -(defconst elpher-version "2.11.0" +(defconst elpher-version "3.0.0" "Current version of elpher.") (defconst elpher-margin-width 6 @@ -141,6 +142,18 @@ "List of headings on the page.") +;;; Declarations to avoid compiler warnings. +;; + +(eval-when-compile + (defvar bookmark-make-record-function) + (declare-function bookmark-store "bookmark") + (declare-function org-link-store-props "ol") + (declare-function org-link-set-parameters "ol") + (defvar thing-at-point-uri-schemes) + (defvar mu4e~view-beginning-of-url-regexp)) + + ;;; Customization group ;; @@ -1633,8 +1646,8 @@ The result is rendered using RENDERER." " - RET/mouse-1: open item under cursor\n" " - m/M: select an item on current page by name (autocompletes) or number\n" " - u/mouse-3/U: return to previous page or to the start page\n" - " - o/O: visit different selector or the root menu of the current server\n" " - g: go to a particular address (gopher, gemini, finger)\n" + " - o/O: open a different address selector or the root menu of the current server\n" " - d/D: download item under cursor or current page\n" " - i/I: info on item under cursor or current page\n" " - c/C: copy URL representation of item under cursor or current page\n" @@ -1659,6 +1672,20 @@ The result is rendered using RENDERER." (elpher-make-gopher-address ?7 "/v2/vs" "gopher.floodgap.com" 70)) (elpher-insert-index-record "Gemini Search Engine (geminispace.info)" (elpher-address-from-url "gemini://geminispace.info/search")) + (insert "\n" + "Your bookmarks are stored in your ") + (let ((help-string "RET,mouse-1: Open Emacs bookmark list")) + (elpher--insert-text-button "Emacs bookmark list" + 'face 'link + 'action (lambda (_) + (interactive) + (call-interactively #'bookmark-bmenu-list)) + 'follow-link t + 'help-echo help-string)) + (insert ".\n") + (insert (propertize + "(Bookmarks from legacy elpher-bookmarks files will be automatically imported.)\n" + 'face 'shadow)) (insert "\n" "For Elpher release news or to leave feedback, visit:\n") (elpher-insert-index-record "The Elpher Project Page" @@ -1803,11 +1830,6 @@ To bookmark the current page, use \\[bookmark-set-no-overwrite]." ;;; Org -;; Avoid byte compilation warnings. -(eval-when-compile - (declare-function org-link-store-props "ol") - (declare-function org-link-set-parameters "ol")) - (defun elpher-org-export-link (link description format protocol) "Export a LINK with DESCRIPTION for the given PROTOCOL and FORMAT. @@ -1851,7 +1873,8 @@ supports the old protocol elpher, where the link is self-contained." (format "%s:%s" protocol link)))) (elpher-go url))) -(with-eval-after-load 'org +(defun elpher-org-mode-integration () + "Set up `elpher' integration for `org-mode'." (org-link-set-parameters "elpher" :store #'elpher-org-store-link @@ -1874,11 +1897,9 @@ supports the old protocol elpher, where the link is self-contained." (elpher-org-export-link link description format "finger")) :follow (lambda (link _arg) (elpher-org-follow-link link "finger")))) -;;; Browse URL +(add-hook 'org-mode-hook #'elpher-org-mode-integration) -;; Avoid byte compilation warnings. -(eval-when-compile - (defvar thing-at-point-uri-schemes)) +;;; Browse URL ;;;###autoload (defun elpher-browse-url-elpher (url &rest _args) @@ -1912,13 +1933,9 @@ supports the old protocol elpher, where the link is self-contained." ;;; Mu4e: -(eval-when-compile - (defvar mu4e~view-beginning-of-url-regexp)) - -(with-eval-after-load 'mu4e-view - ;; Make mu4e aware of the gemini world - (setq mu4e~view-beginning-of-url-regexp - "\\(?:https?\\|gopher\\|finger\\|gemini\\)://\\|mailto:")) +;; Make mu4e aware of the gemini world +(setq mu4e~view-beginning-of-url-regexp + "\\(?:https?\\|gopher\\|finger\\|gemini\\)://\\|mailto:") ;;; Interactive procedures ;; @@ -2140,9 +2157,9 @@ When run interactively HOST-OR-URL is read from the minibuffer." (define-key map (kbd "^") 'elpher-back) (define-key map [mouse-3] 'elpher-back) (define-key map (kbd "U") 'elpher-back-to-start) - (define-key map (kbd "O") 'elpher-root-dir) (define-key map (kbd "g") 'elpher-go) (define-key map (kbd "o") 'elpher-go-current) + (define-key map (kbd "O") 'elpher-root-dir) (define-key map (kbd "s") 'elpher-history) (define-key map (kbd "S") 'elpher-history-all) (define-key map (kbd "r") 'elpher-redraw) @@ -2173,8 +2190,9 @@ When run interactively HOST-OR-URL is read from the minibuffer." (kbd "^") 'elpher-back [mouse-3] 'elpher-back (kbd "U") 'elpher-back-to-start - (kbd "o") 'elpher-go - (kbd "O") 'elpher-go-current + (kbd "g") 'elpher-go + (kbd "o") 'elpher-go-current + (kbd "O") 'elpher-root-dir (kbd "r") 'elpher-redraw (kbd "R") 'elpher-reload (kbd "T") 'elpher-toggle-tls @@ -2206,7 +2224,7 @@ functions which initialize the client, namely (setq-local elpher-history nil) (setq-local elpher-buffer-name (buffer-name)) (setq-local bookmark-make-record-function #'elpher-bookmark-make-record) - (setq-local imenu-create-index-function #'elpher--gemini-page-headings)) + (setq-local imenu-create-index-function (lambda () elpher--gemini-page-headings))) (when (fboundp 'evil-set-initial-state) (evil-set-initial-state 'elpher-mode 'motion))