1 ;;; elopher.el --- gopher client
5 ;; Simple gopher client in elisp.
9 ;; (defvar elopher-mode-map nil "Keymap for gopher client.")
10 ;; (define-key elopher-mode-map (kbd "p") 'elopher-quit)
12 ;; (define-derived-mode elopher-mode special-mode "elopher"
13 ;; "Major mode for elopher, an elisp gopher client.")
17 (defun elopher-filter (proc string)
18 (with-current-buffer (get-buffer "*elopher*")
19 (let ((marker (process-mark proc)))
20 (if (not (marker-position marker))
21 (set-marker marker 0 (current-buffer)))
24 (insert (propertize string 'face '(foreground-color . "magenta")))
25 (set-marker marker (point))))))
27 (defun elopher-get-index (host &optional port path)
28 (switch-to-buffer-other-window "*elopher*")
31 :name "elopher-process"
33 :service (if port port 70)
34 :filter #'elopher-filter)
35 (process-send-string "elopher-process" (format "%s\n" (if path path ""))))
38 "Start gopher client."
40 (elopher-get-index (read-from-minibuffer "Gopher host: ") 70))
42 (elopher-get-index "cosmic.voyage")
46 (delete-process "elopher-process")
48 (defun elopher-quit ()
50 (kill-buffer "*elopher*"))
52 ;;; elopher.el ends here