;;; Commentary:
-;; Elpher is a tool for exploring "gopherspace" using GNU Emacs.
+;; Elpher aims to provide a full-featured gopher client for GNU Emacs.
+;; It supports:
+
+;; - intuitive keyboard and mouse-driven browsing,
+;; - caching of visited sites (both content and cursor position),
+;; - pleasant and configurable colouring of Gopher directories,
+;; - direct visualisation of image files,
+;; - 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.
+
+;; To launch Elpher, simply use 'M-x elpher'. This will open a start
+;; page containing information on key bindings and suggested starting
+;; points for your gopher exploration.
;;; Code:
"\r\n")
"Source for elpher start page.")
+(defconst elpher-type-map
+ '((?0 elpher-get-text-node "T" elpher-text)
+ (?1 elpher-get-index-node "/" elpher-index)
+ (?g elpher-get-image-node "im" elpher-image)
+ (?p elpher-get-image-node "im" elpher-image)
+ (?I elpher-get-image-node "im" elpher-image)
+ (?4 elpher-get-node-download "B" elpher-binary)
+ (?5 elpher-get-node-download "B" elpher-binary)
+ (?9 elpher-get-node-download "B" elpher-binary)
+ (?7 elpher-get-search-node "?" elpher-search))
+ "Association list from types to getters, margin codes and index faces.")
+
;;; Customization group
;;
(insert " "))
(insert (make-string elpher-margin-width ?\s))))
-(defvar elpher-type-map
- '((?0 elpher-get-text-node "T" elpher-text)
- (?1 elpher-get-index-node "/" elpher-index)
- (?g elpher-get-image-node "im" elpher-image)
- (?p elpher-get-image-node "im" elpher-image)
- (?I elpher-get-image-node "im" elpher-image)
- (?4 elpher-get-node-download "B" elpher-binary)
- (?5 elpher-get-node-download "B" elpher-binary)
- (?9 elpher-get-node-download "B" elpher-binary)
- (?7 elpher-get-search-node "?" elpher-search))
- "Association list from types to getters, margin codes and index faces.")
-
(defun elpher-insert-index-record (line)
"Insert the index record corresponding to LINE into the current buffer."
(let* ((type (elt line 0))
(if button
(let ((node (button-get button 'elpher-node)))
(if node
- (elpher-visit-node (button-get button 'elpher-node
- #'elpher-get-node-download))
+ (elpher-visit-node (button-get button 'elpher-node)
+ #'elpher-get-node-download)
(message "Can only download gopher links, not general URLs.")))
(message "No link selected."))))