;; Author: Tim Vaughan <tgvaughan@gmail.com>
;; Created: 11 April 2019
-;; Version: 1.0.0
+;; Version: 1.1.0
;; Keywords: comm gopher
;; Homepage: https://github.com/tgvaughan/elpher
;; Package-Requires: ((emacs "25"))
;; - (m)enu key support, similar to Emacs' info browser,
;; - clickable web and gopher links in plain text.
-;; The caching mechanism works by maintaining a hierarchy of visited
-;; pages rather than a linear history, meaning that it is quick and
-;; easy to navigate this history.
+;; Visited pages are stored as a hierarchy rather than a linear history,
+;; meaning that navigation between these pages is quick and easy.
;; To launch Elpher, simply use 'M-x elpher'. This will open a start
;; page containing information on key bindings and suggested starting
;;; Global constants
;;
-(defconst elpher-version "1.0.0"
+(defconst elpher-version "1.1.0"
"Current version of elpher.")
(defconst elpher-margin-width 6
Otherwise, use the system browser via the BROWSE-URL function."
:type '(boolean))
+(defcustom elpher-buttonify-urls-in-directories nil
+ "If non-nil, turns URLs matched in directories into clickable buttons."
+ :type '(boolean))
+
(defcustom elpher-cache-images nil
"If non-nil, cache images in memory in the same way as other content."
:type '(boolean))
use as the start page."
:type '(list string string integer))
-
;;; Model
;;
selector host port)))
(pcase type
(?i (elpher-insert-margin) ;; Information
- (insert (propertize display-string
- 'face 'elpher-info)))
+ (insert (propertize
+ (if elpher-buttonify-urls-in-directories
+ (elpher-buttonify-urls display-string)
+ display-string)
+ 'face 'elpher-info)))
(?h (elpher-insert-margin "W") ;; Web link
(let ((url (elt (split-string selector "URL:") 1)))
(insert-text-button display-string
(protocol (downcase (match-string 1))))
(if (string= protocol "gopher")
(let* ((host (match-string 2))
- (port 70)
+ (port (if (match-string 3)
+ (string-to-number (substring (match-string 3) 1))
+ 70))
(type-and-selector (match-string 4))
(type (if (> (length type-and-selector) 1)
(elt type-and-selector 1)