Can retrieve index files from gopher servers.
[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   ;; (address (read-from-minibuffer "Address of gopher server: ")))
49   ;; (message "Connecting to '%s' ..." address)
50   ;; (erase-buffer)
51   ;; (insert (propertize "Hello, world." 'face '(foreground-color . "red")))
52   ;; (newline)
53   ;; (insert (propertize "Hello, Tim." 'face '(foreground-color . "yellow"))))
54
55 (defun elopher-quit ()
56   (interactive)
57   (kill-buffer "*elopher*"))
58
59 (start-process "ls" "*elopher*" "/bin/date")
60
61 ;;; elopher.el ends here
62
63 (list-processes)