|
|
1.1 root 1: ; emh-scan.ml :: implements the emh scan facility
2: ; Wed Oct 5 23:40:17 1983 /mtr <mrose@uci-750a>
3:
4:
5: (defun
6:
7: (&mh-scan &buffer &dir &folder
8: (setq &folder (arg 1 ": mh-scan (on folder) "))
9: (if (= (substr &folder 1 1) "+")
10: (setq &folder (substr &folder 2 (- (length &folder) 1))))
11: (if (! (file-exists (setq &dir (&mh-path &folder))))
12: (error-message "no such folder as +" &folder))
13: (if (>= (process-status (setq &buffer (concat "+" &folder))) 0)
14: (error-message "already doing mh " &buffer))
15: (error-occured (delete-buffer &buffer))
16: (save-excursion
17: (temp-use-buffer &buffer)
18: (use-local-map "&mh-keymap")
19: (setq needs-checkpointing 0)
20: (erase-buffer)
21: (setq &mhfolder (setq &folder &buffer))
22: (setq &mhreadonly (= (setq &mhdir (concat &dir "/")) -1))
23: (&mh-purge)
24: (&mh-start-process (concat "scan " &folder) &buffer)
25: (insert-sentinel &buffer "&mh-scan-sentinel")
26: (setq mode-string "Starting")
27: (setq mode-line-format " %b: scan (status: %m) %M"))
28:
29: (novalue)
30: )
31:
32: (&mh-scan-sentinel &flag &text
33: (setq &flag (>> prefix-argument 16))
34: (setq &text (process-output))
35: (save-excursion
36: (temp-use-buffer MPX-process)
37: (setq mode-string (substr &text 1 (- (length &text) 1)))
38: (if (= mode-string "Exited")
39: (progn
40: (setq mode-string "emh")
41: (setq mode-line-format
42: " %b: scan listing (%m) %M %[%p%]")
43: (setq &mhbuffer MPX-process)
44: (&mh-trim-long-lines))))
45: (dot-is-visible) ; hack...
46: (if (bitwise-and &flag 12)
47: (save-excursion
48: (&mh-daemon)
49: (pop-to-buffer MPX-process)
50: (&mh-find-cur)))
51: )
52:
53: (&mh-find-cur ¤t
54: (beginning-of-file)
55: (if (!= (setq ¤t (&mh-get-cur)) 0)
56: (progn
57: (while (< (length ¤t) &mhdmax)
58: (setq ¤t (concat " " ¤t)))
59: (end-of-file)
60: (error-occured (re-search-reverse (concat "^" ¤t)))
61: (if (! (eobp))
62: (progn
63: (beginning-of-line)
64: (provide-prefix-argument &mhdmax (forward-character))
65: (delete-next-character) (insert-character '+')
66: (beginning-of-line) (line-to-top-of-window)
67: (set-mark)
68: (provide-prefix-argument (/ (window-height) 2)
69: (scroll-one-line-down))
70: (exchange-dot-and-mark))
71: (beginning-of-file))))
72: (beginning-of-line)
73: )
74:
75: (&mh-get-cur &cur &file
76: (if &mhreadonly
77: (setq &cur (&mh-find-entry (concat "cur-" &mhdir)))
78: (if (file-exists (setq &file (concat &mhdir "cur")))
79: (save-excursion
80: (temp-use-buffer &mhtemp)
81: (erase-buffer)
82: (error-occured (insert-file &file))
83: (beginning-of-file) (set-mark) (end-of-line)
84: (setq &cur (region-to-string))
85: (delete-buffer &mhtemp))))
86: (if (error-occured (+ &cur 0))
87: (setq &cur 0))
88:
89: &cur
90: )
91:
92: (&mh-purge ¤t &template
93: (setq &template (concat "message " &mhfolder "/"))
94: (setq ¤t "")
95: (while (!= (setq ¤t (next-buffer-name ¤t)) "")
96: (if (&mh-prefix &template ¤t)
97: (progn &deleted
98: (setq ¤t
99: (next-buffer-name (setq &deleted ¤t)))
100: (delete-buffer &deleted))))
101: )
102:
103: (&mh-trim-long-lines
104: (beginning-of-file)
105: (while (! (eobp))
106: (end-of-line)
107: (while (> (current-column) (screen-width))
108: (delete-previous-character))
109: (next-line))
110: )
111: )
112:
113: (novalue)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.