(format "i version %s\tfake\tfake\t1" elpher-version)
"i--------------------------------------------\tfake\tfake\t1"
"i\tfake\tfake\t1"
- "iBasic usage:\tfake\tfake\t1"
+ "iUsage:\tfake\tfake\t1"
"i\tfake\tfake\t1"
"i - tab/shift-tab: next/prev directory entry on current page\tfake\tfake\t1"
"i - RET/mouse-1: open directory entry under cursor\tfake\tfake\t1"
"i - m: select a directory entry by name (autocompletes)\tfake\tfake\t1"
"i - u: return to parent directory entry\tfake\tfake\t1"
+ "i - O: visit the root directory of the current server\tfake\tfake\t1"
"i - g: go to a particular page\tfake\tfake\t1"
"i - r: redraw current page (using cached contents if available)\tfake\tfake\t1"
"i - R: reload current page (regenerates cache)\tfake\tfake\t1"
;; Face customizations
(defface elpher-index
- '((((background dark)) :foreground "deep sky blue")
- (((background light)) :foreground "blue"))
- "Face used for index records.")
+ '((t :inherit org-drawer))
+ "Face used for directory type directory records.")
(defface elpher-text
- '((((background dark)) :foreground "white")
- (((background light)) :weight bold))
- "Face used for text records.")
+ '((t :inherit org-tag))
+ "Face used for text type directory records.")
-(defface elpher-info '()
- "Face used for info records.")
+(defface elpher-info
+ '((t :inherit org-default))
+ "Face used for info type directory records.")
(defface elpher-image
- '((((background dark)) :foreground "green")
- (t :foreground "dark green"))
- "Face used for image records.")
+ '((t :inherit org-level-4))
+ "Face used for image type directory records.")
(defface elpher-search
- '((((background light)) :foreground "orange")
- (((background dark)) :foreground "dark orange"))
- "Face used for search records.")
+ '((t :inherit org-level-5))
+ "Face used for search type directory records.")
(defface elpher-url
- '((((background dark)) :foreground "yellow")
- (((background light)) :foreground "dark red"))
- "Face used for url records.")
+ '((t :inherit org-level-6))
+ "Face used for url type directory records.")
(defface elpher-binary
- '((t :foreground "magenta"))
- "Face used for binary records.")
+ '((t :inherit org-level-7))
+ "Face used for binary type directory records.")
(defface elpher-unknown
- '((t :foreground "red"))
- "Face used for unknown record types.")
+ '((t :inherit org-warning))
+ "Face used for directory records with unknown/unsupported types.")
(defface elpher-margin-key
- '((((background dark)) :foreground "white"))
- "Face used for margin key.")
+ '((t :inherit org-tag))
+ "Face used for directory margin key.")
(defface elpher-margin-brackets
- '((t :foreground "blue"))
- "Face used for brackets around margin key.")
+ '((t :inherit org-special-keyword))
+ "Face used for brackets around directory margin key.")
;; Other customizations
getter)
'action #'elpher-click-link
'follow-link t
- 'help-echo (format "mouse-1, RET: open %s on %s port %s"
+ 'help-echo (format "mouse-1, RET: open '%s' on %s port %s"
selector host port)))
(pcase type
(?i (elpher-insert-margin) ;; Information
getter)
'action #'elpher-click-link
'follow-link t
- 'help-echo (format "mouse-1, RET: open %s on %s port %s"
+ 'help-echo (format "mouse-1, RET: open '%s' on %s port %s"
selector host port)))
(make-text-button (match-beginning 0)
(match-end 0)
(let* ((link-map (elpher-build-link-map)))
(if link-map
(let ((key (let ((completion-ignore-case t))
- (completing-read "Directory entry/link (tab to autocomplete): " link-map nil t))))
+ (completing-read "Directory entry/link (tab to autocomplete): "
+ link-map nil t))))
(if (and key (> (length key) 0))
(let ((b (cdr (assoc key link-map))))
(goto-char (button-start b))
(button-activate b)))))))
+(defun elpher-root-dir ()
+ "Visit root of current server."
+ (interactive)
+ (let ((address (elpher-node-address elpher-current-node)))
+ (if address
+ (let ((host (elpher-address-host address))
+ (selector (elpher-address-selector address))
+ (port (elpher-address-port address)))
+ (if (> (length selector) 0)
+ (let ((root-address (elpher-make-address "" host port)))
+ (elpher-visit-node (elpher-make-node elpher-current-node
+ root-address
+ #'elpher-get-index-node)))
+ (message "Already at root directory of current server.")))
+ (message "Command invalid for Elpher start page."))))
+
;;; Mode and keymap
;;
(define-key map (kbd "TAB") 'elpher-next-link)
(define-key map (kbd "<backtab>") 'elpher-prev-link)
(define-key map (kbd "u") 'elpher-back)
+ (define-key map (kbd "O") 'elpher-root-dir)
(define-key map (kbd "g") 'elpher-go)
(define-key map (kbd "r") 'elpher-redraw)
(define-key map (kbd "R") 'elpher-reload)
(kbd "C-]") 'elpher-follow-current-link
(kbd "C-t") 'elpher-back
(kbd "u") 'elpher-back
+ (kbd "O") 'elpher-root-dir
(kbd "g") 'elpher-go
(kbd "r") 'elpher-redraw
(kbd "R") 'elpher-reload