-(defun elopher-make-clickable (string link-function mouse-help)
- (let ((map (make-sparse-keymap)))
- (define-key map [mouse-1] link-function)
- (define-key map (kbd "RET") link-function)
- (propertize string
- 'mouse-face 'highlight
- 'help-echo (concat "mouse-1: " mouse-help)
- 'keymap map)))
-
-(defun elopher-format-record (display-string margin-key color &optional getter help-text)
- (elopher-type-margin margin-key)
- (insert (propertize
- (if getter
- (elopher-make-clickable display-string
- getter
- help-text)
- display-string)
- 'face `(foreground-color . ,color)))
- (insert "\n"))
-
-(defun elopher-make-getter (func address)
- (let ((selector (car address))
- (hostname (cadr address))
- (port (caddr address)))
- `(lambda ()
- (interactive)
- (,func ,hostname ,port ,selector))))
-
-(defun elopher-make-help (address)
- (let ((selector (car address))
- (hostname (cadr address))
- (port (caddr address)))
- (format "open \"%s\" on %s port %s"
- selector hostname port)))
+(defun elopher-follow-index-link (button)
+ (apply #'elopher-get-index (button-get button 'link-address)))
+
+(defun elopher-follow-text-link (button)
+ (apply #'elopher-get-text (button-get button 'link-address)))