X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=blobdiff_plain;f=elpher.el;h=8f194a4f49ad8d786031cbd745dc4d96f688b77e;hp=66fa275f9640fbbc60248b5c6c1137cad87dd583;hb=b9b8476b81a05dceb4ca04676b40873eebb654d4;hpb=04e86074f82969f0e99036bbc801aede48bcd86c diff --git a/elpher.el b/elpher.el index 66fa275..8f194a4 100644 --- a/elpher.el +++ b/elpher.el @@ -6,6 +6,8 @@ ;; Copyright (C) 2021 Omar Polo ;; Copyright (C) 2021 Noodles! ;; Copyright (C) 2020-2021 Alex Schroeder +;; Copyright (C) 2020 Zhiwei Chen +;; Copyright (C) 2020 condy0919 ;; Copyright (C) 2020 Alexis ;; Copyright (C) 2020 Étienne Deparis ;; Copyright (C) 2020 Simon Nicolussi @@ -133,6 +135,10 @@ ;;; Internal variables ;; +;; buffer-local +(defvar elpher--gemini-page-headings '() + "Interval variable containing list of headings on page.") + (defvar elpher--gemini-page-links '() "Internal variable containing list of links on page.") @@ -184,7 +190,7 @@ These certificates may be used for establishing authenticated TLS connections." :type '(file)) (defcustom elpher-default-url-type "gopher" - "Default URL type to assume if not explicitly given." + "Default URL type (i.e. schema) to assume if not explicitly given." :type '(choice (const "gopher") (const "gemini"))) @@ -1455,6 +1461,8 @@ by HEADER-LINE." (/ (* fill-column (font-get (font-spec :name (face-font 'default)) :size)) (font-get (font-spec :name (face-font face)) :size)) fill-column))) + (setq elpher--gemini-page-headings (cons (cons header (point)) + elpher--gemini-page-headings)) (unless (display-graphic-p) (insert (make-string level ?#) " ")) (insert (propertize header 'face face)) @@ -1485,6 +1493,7 @@ width defined by elpher-gemini-max-fill-width." (defun elpher-render-gemini-map (data _parameters) "Render DATA as a gemini map file, PARAMETERS is currently unused." (elpher-with-clean-buffer + (setq elpher--gemini-page-headings nil) (let ((preformatted nil) (link-counter 1)) (auto-fill-mode 1) @@ -1508,6 +1517,7 @@ width defined by elpher-gemini-max-fill-width." (elpher-gemini-insert-link line))) ((string-prefix-p "#" line) (elpher-gemini-insert-header line)) (t (elpher-gemini-insert-text line))))) + (setq elpher--gemini-page-headings (nreverse elpher--gemini-page-headings)) (elpher-cache-content (elpher-page-address elpher-current-page) (buffer-string)) @@ -1628,8 +1638,8 @@ The result is rendered using RENDERER." "Alternatively, select a search engine and enter some search terms:\n") (elpher-insert-index-record "Gopher Search Engine (Veronica-2)" (elpher-make-gopher-address ?7 "/v2/vs" "gopher.floodgap.com" 70)) - (elpher-insert-index-record "Gemini Search Engine (GUS)" - (elpher-address-from-url "gemini://gus.guru/search")) + (elpher-insert-index-record "Gemini Search Engine" + (elpher-address-from-url "gemini://geminispace.info")) (insert "\n" "This page contains your bookmarked sites (also visit with B):\n") (elpher-insert-index-record "Your Bookmarks" 'bookmarks) @@ -2123,17 +2133,19 @@ When run interactively HOST-OR-URL is read from the minibuffer." (kbd "C-") 'elpher-follow-current-link (kbd "C-t") 'elpher-back (kbd "u") 'elpher-back + (kbd "-") 'elpher-back + (kbd "^") 'elpher-back (kbd "U") 'elpher-back-to-start [mouse-3] 'elpher-back - (kbd "g") 'elpher-go - (kbd "o") 'elpher-go-current + (kbd "o") 'elpher-go + (kbd "O") 'elpher-go-current (kbd "r") 'elpher-redraw (kbd "R") 'elpher-reload (kbd "T") 'elpher-toggle-tls (kbd ".") 'elpher-view-raw (kbd "d") 'elpher-download (kbd "D") 'elpher-download-current - (kbd "m") 'elpher-jump + (kbd "J") 'elpher-jump (kbd "i") 'elpher-info-link (kbd "I") 'elpher-info-current (kbd "c") 'elpher-copy-link-url @@ -2155,9 +2167,14 @@ When run interactively HOST-OR-URL is read from the minibuffer." This mode is automatically enabled by the interactive functions which initialize the gopher client, namely `elpher', `elpher-go' and `elpher-bookmarks'." + (setq-local elpher--gemini-page-headings nil) (setq-local elpher-current-page nil) (setq-local elpher-history nil) - (setq-local elpher-buffer-name (buffer-name))) + (setq-local elpher-buffer-name (buffer-name)) + + (setq-local imenu-create-index-function + (lambda () + elpher--gemini-page-headings))) (when (fboundp 'evil-set-initial-state) (evil-set-initial-state 'elpher-mode 'motion))