e33d821d7a2875bb988f5b7a166ca64cde641200
[elpher.git] / elopher.el
1 ;;; elopher.el --- gopher client
2
3 ;;; Commentary:
4
5 ;; Simple gopher client in elisp.
6
7 ;;; Code:
8
9 ;; (defvar elopher-mode-map nil "Keymap for gopher client.")
10 ;; (define-key elopher-mode-map (kbd "p") 'elopher-quit)
11
12 ;; (define-derived-mode elopher-mode special-mode "elopher"
13 ;;   "Major mode for elopher, an elisp gopher client.")
14
15 (defun )
16
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)))
22       (save-excursion
23         (goto-char marker)
24         (insert (propertize string 'face '(foreground-color . "magenta")))
25         (set-marker marker (point))))))
26     
27 (defun elopher-get-index (host &optional port path)
28   (switch-to-buffer-other-window "*elopher*")
29   (erase-buffer)
30   (make-network-process
31    :name "elopher-process"
32    :host host
33    :service (if port port 70)
34    :filter #'elopher-filter)
35   (process-send-string "elopher-process" (format "%s\n" (if path path ""))))
36
37 (defun elopher ()
38   "Start gopher client."
39   (interactive)
40   (elopher-get-index (read-from-minibuffer "Gopher host: ") 70))
41
42 (elopher-get-index "cosmic.voyage")
43
44 (format "%s\n" nil)
45
46 (delete-process "elopher-process")
47   
48 (defun elopher-quit ()
49   (interactive)
50   (kill-buffer "*elopher*"))
51
52 ;;; elopher.el ends here