;; 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
(defun elpher-insert-index (string)
"Insert the index corresponding to STRING into the current buffer."
- (dolist (line (split-string string "\r\n"))
+ ;; Should be able to split directly on CRLF, but some non-conformant
+ ;; LF-only servers sadly exist, hence the following.
+ (dolist (line (split-string (replace-regexp-in-string "\r" "" string) "\n"))
(unless (= (length line) 0)
(elpher-insert-index-record line))))
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
+ (?i (elpher-insert-margin) ;; Information
(insert (propertize display-string
'face 'elpher-info)))
- (?h (elpher-insert-margin "W") ; Web link
+ (?h (elpher-insert-margin "W") ;; Web link
(let ((url (elt (split-string selector "URL:") 1)))
(insert-text-button display-string
'face 'elpher-url
'action #'elpher-click-url
'follow-link t
'help-echo (format "mouse-1, RET: open url %s" url))))
- (?.) ; Occurs at end of index, can safely ignore.
+ (?.) ;; Occurs at end of index, can safely ignore.
(tp (elpher-insert-margin (concat (char-to-string tp) "?"))
(insert (propertize display-string
'face 'elpher-unknown-face)))))
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 "Menu item: " 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))