
(provide (quote discuss))

(defvar discuss-source-dir "/mit/sipb/lib/elisp" "\
Source directory which this version of discuss is loaded from.")

(defvar discuss-DWIM nil "\
If true, enable Do_What_I_Mean mode.  Allows the user to read discuss by
repeatedly hitting the space bar.  For the truly discrimining and lazy 
user.")

(defvar discuss-safe-delete nil "\
If true, discuss asks for confirmation before deleting a transaction with
discuss-delete-trn.")

(defvar discuss-mtgs-mode-map nil "\
Keymap used by the meetings-list mode of the discuss subsystem")

(defvar discuss-list-mode-map nil "\
Keymap used by the transaction-list mode of the discuss subsystem")

(defvar discuss-trn-mode-map nil "\
Keymap used by the transaction mode of the discuss subsystem")

(defvar discuss-main-buffer "*meetings*" "\
Name of main buffer for discuss, which holds a list of the current
meetings")

(defvar discuss-version nil "\
Version of discuss code loaded.")

(defun discuss-version nil (interactive) (byte-code "ÁˆÂ!‡" [discuss-version nil message] 2))

(defvar discuss-process nil "\
Structure discribing the slave discuss subprocess.")

(defvar discuss-cont nil "\
Internal hook to call when discuss subprocess is done.")

(defvar discuss-unwind nil "\
Internal hook to call when discuss subprocess returns an error.")

(defvar discuss-in-progress nil "\
t if a request to the slave subprocess is outstanding")

(defvar discuss-form nil "\
Lisp form returned by the subprocess.")

(defvar discuss-meeting-list nil "\
Meeting list.")

(defvar discuss-meeting-completion-list nil "\
Meeting list changed into the right format for completion-read")

(defvar discuss-show-num 0 "\
Current discuss transaction number")

(defvar discuss-meeting nil "\
Buffer-local variable containing the name of the meeting of a discuss
transaction buffer.  Nil means this buffer is not a discuss-transaction 
buffer.")

(defvar discuss-meeting-info nil "\
Buffer-local variable containing the info struction for the discuss
transaction buffer.")

(defvar discuss-cur-mtg-buf nil "\
Name of buffer for current Discuss meeting")

(defvar discuss-async t "\
*Run discuss commands asynchronously.

Currently ignored (always async).")

(defvar discuss-in-show-trn nil)

(defvar discuss-error nil "\
Contains error message returned by edsc process.  If nil, means last 
request completed successfully.")

(defun edsc-machine-type nil (byte-code "ÁÄÅ!Š
qˆÆ ˆÇ``ÈÁÃÁ&ˆdbˆÉÊ!ˆË ‰ˆÌ
!ˆÍ!Î>ƒ3 ‚6 ÏÐ!)*‡" [foo nil buf t get-buffer-create " *edsc-xyzzy*" erase-buffer call-process-region "/bin/athena/machtype" delete-backward-char 1 buffer-string kill-buffer intern (vax rt decmips) error "Can't determine machine type."] 9))

(defvar discuss-pathname (concat "/afs/sipb.mit.edu/user/tytso/src/edsc/edsc." (edsc-machine-type)) "\
*Name of program to run as slave process for discuss.")

(defun discuss-mtgs-mode nil "\
Major mode for providing an emacs discuss subsystem.
This looks a lot like RMAIL.  This works by using ``edsc'' as a subjob.

The following commands are available:
n	go to next line.
p	go to previous line.
SPC     go to next meeting that has unread transactions
DEL     go to previous meeting has unread transactions
l	list meetings.
g	go to meeting listed on line.
a	add meeting
d	delete meeting
q	Quit Discuss mode." (interactive) (byte-code "ÅˆÆ ˆÇ‰ˆÈ‰ˆÉ
!ˆÄ‰ˆÊË!‡" [major-mode mode-name discuss-mtgs-mode-map buffer-read-only t nil kill-all-local-variables discuss-mtgs-mode "Discuss (meetings)" use-local-map run-hooks discuss-mode-hooks] 4))

(defun discuss-list-mode nil "\
Major mode for looking at listings of a meeting under the
discuss subsystem." (interactive) (byte-code "ÆˆÈ ˆÉ‰ˆÊ‰ˆË
!ˆÄ‰ˆÌÅ!ˆÆ‰ˆÌÇ!ˆÆ‰ˆÍÎ!‡" [major-mode mode-name discuss-list-mode-map buffer-read-only t trans-buffer nil meeting-name kill-all-local-variables discuss-list-mode "Discuss (list)" use-local-map make-local-variable run-hooks discuss-list-hooks] 6))

(defun discuss-trn-mode nil "\
Major mode for looking at transactions of a meeting under the
discuss subsystem.
All normal editing commands are turned off.
Instead, these commands are available:

SPC	Scroll to next screen of this transaction.
DEL	Scroll to previous screen of this transaction.
n	Move to Next transaction.
p	Move to Previous transaction.
M-n	Move to Next transaction in chain.
M-p	Move to Previous transaction in chain.
>	Move to Last transaction in meeting.
<	Move to First transaction in meeting.
g	Goto transaction.
d	Delete transaction (and move forwards).
C-d	Delete transaction (and move backwards).
R	Retrieve transaction
q       Quit meeting.
r	Reply to this transaction.
f	Forward this transaction via mail.
t	Talk.  Enter a new transaction.
a	Add meeting." (interactive) (byte-code "ÈˆÉ ˆÊ‰ˆË‰ˆÌ
!ˆÄ‰ˆÍÅ!ˆÎ‰ˆÍÆ!ˆÎ‰ˆÍÇ!ˆÍÏ!ˆÍÐ!ˆÈ‰ˆÑÒ!‡" [major-mode mode-name discuss-trn-mode-map buffer-read-only t discuss-current-transaction discuss-highest-seen discuss-output-last-file nil kill-all-local-variables discuss-trn-mode "Discuss (transaction)" use-local-map make-local-variable 0 discuss-meeting discuss-meeting-info run-hooks discuss-trn-hooks] 9))

(defun discuss (arg) "\
Enter discuss mode for emacs and list meetings." (interactive "P") (byte-code "ÄˆÆÇ!ˆÈÉ!ˆpÊ	!… ËÊ	!!… 
GÌV?ƒ8 ÍÎ	!!ˆÏ ˆƒ3 Ä‚5 Ð ‚; Í	!ˆ…C Í!)‡" [old-buffer discuss-main-buffer discuss-meeting-list current-prefix-arg nil arg message "Starting discuss...." sit-for 1 get-buffer buffer-name 0 switch-to-buffer get-buffer-create discuss-mtgs-mode discuss-lsm] 12))

(defun discuss-list-meetings nil "\
List discuss meetings" (interactive) (byte-code "ÂˆÃÄÅÆ!!ÂÇ )ÈÉÊË#$‡" [discuss-main-buffer buffer-read-only nil message "Listing meetings..." switch-to-buffer get-buffer erase-buffer discuss-send-cmd "(gml)
" discuss-end-of-lsm discuss-read-form] 11))

(fset (quote discuss-lsm) (symbol-function (quote discuss-list-meetings)))

(defun cadr (x) (byte-code "A@‡" [x] 1))

(defun caddr (x) (byte-code "AA@‡" [x] 1))

(defun cddr (x) (byte-code "AA‡" [x] 1))

(defun discuss-lsm-1 (entry) (byte-code "Â@Ã=ƒ Ä‚ @;ƒ Å‚ ÆÇ!\"ˆÈ!…( ÉÊÈ!\"ˆËcˆ@;…A Ì ˆÍÎÇ!@#ˆÏÃ!‡" [entry t insert 1 " c       " "   X     " "         " cadr cddr mapcar discuss-lsm-2 "
" ding message "%s: %s" sit-for] 11))

(defun discuss-lsm-2 (name) (byte-code "ÁÂ\"‡" [name insert ", "] 3))

(defun flatten (list) (byte-code "À	=… ÀˆÅ	@!	A
À=?…: ÀA=?…) A‰ˆ‚ ˆÆÅ@!\"ˆA‰ˆ‚ ˆ
+‡" [nil list newlist restoflist pointer copy-list setcdr] 6))

(defun copy-list (list) (byte-code "À	=ƒ
 À‚ 	@Â	A!B‡" [nil list copy-list] 3))

(defun discuss-end-of-lsm nil (byte-code "ÇÈ!ˆp	qˆÉÊ\"‰ˆËÌÍËÎ\"!\"‰ˆÆebˆÏÐÑ\"ˆËÒ\"ˆdbˆÓÔ!)ˆebˆÕÖ!ˆq)‡" [orig-buffer discuss-main-buffer discuss-meeting-list discuss-form discuss-meeting-completion-list buffer-read-only nil message "Listing meetings...done." apply vector mapcar (lambda (x) (byte-code "ÁB‡" [x 0] 2)) flatten cdr insert " Flags   Meeting name
" " -----   ------------
" discuss-lsm-1 backward-delete-char 1 forward-line 2] 10))

(defun discuss-find-meeting (meeting) (byte-code "Å
G	W… 
H>?… T‰ˆ‚ ˆ	Wƒ' ‚( Ä*‡" [i eol discuss-meeting-list meeting nil 0] 3))

(defun discuss-quit nil "\
Exits Discuss mode." (interactive) (byte-code "Âˆ… Ã ˆÄ ˆÅÆ !ˆÇ	!‡" [discuss-cur-mtg-buf discuss-main-buffer nil discuss-leave-mtg discuss-restart switch-to-buffer other-buffer bury-buffer] 6))

(defun discuss-goto (&optional meeting) "\
Go to a meeting" (interactive (byte-code "† ÅÆ 	\"?† `ÇU… ÈÉ
ÃÄÊ%C‡" [current-prefix-arg discuss-main-buffer discuss-meeting-completion-list nil t equal buffer-name 1 completing-read "Meeting name:  " ""] 8)) (byte-code "Ãˆ?…' ÍÎ`Td^\"ÏZÐW… ÑÒ!ˆÓH!‰)ˆ…9 Ô!…9 Õ	\"?ƒY …D Ö ˆ×ØÙQ!‰ˆÚ!ˆÛ ‚f qˆÜÝÞ
#!ˆÚ!ˆ‰ˆ‰	ˆßP‰ˆÜÝà\"áâã$‡" [current-prefix-arg discuss-main-buffer discuss-meeting-completion-list nil t meeting curline discuss-meeting-list discuss-cur-mtg-buf discuss-current-meeting discuss-highest-seen discuss-meeting discuss-output-last-file count-lines 1 3 0 error "Not looking at a meeting." cadr buffer-name equal discuss-leave-mtg get-buffer-create "*" " meeting*" switch-to-buffer discuss-trn-mode discuss-send-cmd format "(ss %d %s)
" ".trans" "(gmi %s)
" discuss-end-of-goto discuss-read-form discuss-goto-error] 18))

(defun discuss-goto-error nil "\
Called to back out when there's an error in going to a meeting." (byte-code "ÄÅ!!ˆÁ‰ˆÁ‰ˆÆ!‡" [discuss-cur-mtg-buf nil discuss-current-meeting discuss-main-buffer kill-buffer buffer-name switch-to-buffer] 4))

(defun discuss-end-of-goto nil (byte-code "É	8Ê	8‰ˆ
V… Ë ˆÌÍ!ˆÎÏ!ˆ‰ˆÌÐÑ	!
Z$ˆqˆ	‰ˆÒ!?ƒ< Æ‚f ÒÓ	8!ƒJ ÔÕ!‚f Ò
!†S 
Yƒ\\ Ö!‚f ×ØÙ
#ÚÛ#)‡" [last discuss-form discuss-highest-seen discuss-cur-mtg-buf discuss-current-meeting-info discuss-current-transaction nil t discuss-meeting 4 11 beep message "Warning!  Last seen transaction higher than last transaction" sit-for 1 "%s meeting: %d new, %d last." cadr zerop 3 error "Empty meeting." discuss-show-trn discuss-send-cmd format "(nut %d %s)
" (lambda nil (progn (discuss-la-cache-transaction (car discuss-form)) (discuss-block-til-ready nil) (discuss-show-trn (car discuss-form)))) discuss-read-form] 15))

(defun discuss-stat (&optional meeting) "\
Go to a meeting" (interactive (byte-code "p=ƒ
 	‚$ 
† ÇÈ \"?† `ÉU…$ ÊËÅÆÌ%C‡" [discuss-cur-mtg-buf discuss-meeting current-prefix-arg discuss-main-buffer discuss-meeting-completion-list nil t equal buffer-name 1 completing-read "Meeting name:  " ""] 8)) (byte-code "Åˆ?…) ÊË`Td^\"ÌZÍW… ÎÏ!ˆÐ	H!‰)ˆÑÒÓ\"ÔÕ#‡" [discuss-cur-mtg-buf discuss-meeting current-prefix-arg discuss-main-buffer discuss-meeting-completion-list nil t meeting curline discuss-meeting-list count-lines 1 3 0 error "Not looking at a meeting." cadr discuss-send-cmd format "(gmi %s)
" discuss-end-of-stat discuss-read-form] 8))

(defun discuss-end-of-stat nil (byte-code "	‰ˆ	‰ˆÇ	8È	8ÉÊ	!\"… ËU?…% ‰ˆÌÍÊ	!Z$*‡" [discuss-current-meeting-info discuss-form discuss-meeting-info last highest-seen discuss-current-meeting discuss-highest-seen 4 11 equal cadr 0 message "%s meeting: %d new, %d last."] 8))

(defun discuss-show-trn (trn-num) "\
Show transaction number N (prefix argument)." (interactive (byte-code "Á!?ƒ ÂÃÄ!!‚ C‡" [current-prefix-arg numberp string-to-int read-string "Transaction number: "] 4)) (byte-code "Äˆ	…	 Ô	!…§ 	‰ˆÄ‰ˆÕ‰ˆÖ	!?…8 ×	!ˆÖ	!‰ˆ?…8 ØÙ	\"ˆ	‰ˆ‰ˆ	qˆ‰
ˆ
‰ˆ]‰ˆÚ8Y…o ÐÛ ˆÜÄ!)ˆÝÞÚ8#‰ˆÄß ˆà!ˆeb)ˆá
!ÕU…£ âã\"ˆä!ˆåÐ!ˆæ )‡" [current-prefix-arg trn-num discuss-show-num discuss-la-to-cache nil discuss-la-next-chaining discuss-cache-file discuss-la-next-trn discuss-max-next-chaining discuss-cur-mtg-buf discuss-current-transaction-info discuss-form discuss-current-transaction discuss-highest-seen discuss-current-meeting-info discuss-in-show-trn t mode-line-process buffer-read-only discuss-meeting numberp 0 discuss-la-get-art discuss-la-cache-transaction error "Can't find transaction %d in cache!!!" 4 discuss-update discuss-block-til-ready format " %d/%d" erase-buffer insert-file-contents caddr message "Last transaction in %s" discuss-mark-read-meeting discuss-next-meeting discuss-la-do-cache] 16))

(defun discuss-update nil "\
Update Discuss display to show new transactions" (interactive) (byte-code "ÁˆÂÃÄ\"ÅÆ#‡" [discuss-meeting nil discuss-send-cmd format "(gmi %s)
" discuss-end-of-update discuss-read-form] 5))

(defun discuss-end-of-update nil (byte-code "	‰ˆŠ
qˆ?… Å!)‡" [discuss-current-meeting-info discuss-form discuss-cur-mtg-buf discuss-in-show-trn discuss-current-transaction discuss-show-trn] 2))

(defun discuss-next-trn nil "\
Show next transaction." (interactive) (byte-code "Äˆ?†
 ÅUƒ ÆÇ!‚T È
!	ÅUƒP É!ˆÊ!ˆË ˆÌ!…3 È!…; È!‰)ˆÅÈ
!UƒK ÆÍ!‚M Î ‚S Ï	!)‡" [discuss-current-transaction next discuss-current-transaction-info cache-entry nil 0 error "Not looking at transactions" caddr discuss-la-invalidate discuss-la-cache-transaction discuss-la-block-til-ready discuss-la-search "No next transaction." discuss-next-trn discuss-show-trn] 13))

(defun discuss-prev-trn nil "\
Show previous transaction." (interactive) (byte-code "Ãˆ?†
 ÄUƒ ÅÆ!‚' Ç
!	ÄUƒ# ÅÈ!‚& É	!)‡" [discuss-current-transaction prev discuss-current-transaction-info nil 0 error "Not looking at transactions" cadr "No previous transaction." discuss-show-trn] 5))

(defun discuss-nref nil "\
Show next transaction in chain." (interactive) (byte-code "Ãˆ?†
 ÄUƒ ÅÆ!‚' Ç
8	ÄUƒ# ÅÈ!‚& É	!)‡" [discuss-current-transaction nref discuss-current-transaction-info nil 0 error "Not looking at transactions" 4 "No next reference." discuss-show-trn] 4))

(defun discuss-pref nil "\
Show previous transaction in chain." (interactive) (byte-code "Ãˆ?†
 ÄUƒ ÅÆ!‚' Ç
8	ÄUƒ# ÅÈ!‚& É	!)‡" [discuss-current-transaction pref discuss-current-transaction-info nil 0 error "Not looking at transactions" 3 "No previous reference." discuss-show-trn] 4))

(defun discuss-lref nil "\
Show last transaction in chain." (interactive) (byte-code "Ãˆ?†
 ÄUƒ ÅÆ!‚' Ç
8	ÄUƒ# ÅÈ!‚& É	!)‡" [discuss-current-transaction lref discuss-current-transaction-info nil 0 error "Not looking at transactions" 6 "No last reference." discuss-show-trn] 4))

(defun discuss-fref nil "\
Show first transaction in chain." (interactive) (byte-code "Ãˆ?†
 ÄUƒ ÅÆ!‚' Ç
8	ÄUƒ# ÅÈ!‚& É	!)‡" [discuss-current-transaction fref discuss-current-transaction-info nil 0 error "Not looking at transactions" 5 "No first reference." discuss-show-trn] 4))

(defun discuss-first-trn nil "\
Show first transaction of meeting." (interactive) (byte-code "ÂˆÃ	8Ä!)‡" [first discuss-current-meeting-info nil 3 discuss-show-trn] 2))

(defun discuss-last-trn nil "\
Show last transaction of meeting." (interactive) (byte-code "ÂˆÃ	8Ä!)‡" [last discuss-current-meeting-info nil 4 discuss-show-trn] 2))

(defun discuss-toggle-trn-flag nil "\
Toggle the per-transaction flag" (interactive) (byte-code "ÄˆÅ	8… Æ
!ˆÇÈ!ˆÉÊËÌÍ\"
$ÎÏ#)‡" [old-flag discuss-current-transaction-info discuss-current-transaction discuss-meeting nil 13 discuss-la-invalidate message "Toggling the transaction flag...." discuss-send-cmd format "(sfl %d %d %s)
" logxor 2 discuss-end-of-toggle discuss-read-form] 9))

(defun discuss-end-of-toggle nil (byte-code "Á!ˆÂÃ!‡" [discuss-current-transaction discuss-show-trn message ""] 3))

(defun discuss-leave-mtg nil "\
Leave the current discuss meeting" (interactive) (byte-code "ÃˆÆ ˆÇ!…. qˆ	ÈU?… ÉÊË	
#!ˆÌÇ!!ˆÃ‰ˆÃ‰ˆÍ!‡" [discuss-cur-mtg-buf discuss-highest-seen discuss-meeting nil discuss-current-meeting discuss-main-buffer discuss-la-flush buffer-name 0 discuss-send-cmd format "(ss %d %s)
" kill-buffer switch-to-buffer] 8))

(defun discuss-delete-trn-backwards (trn-num) (interactive (byte-code "ƒ 	ƒ ÄÅÆ!!C‚ ÇÈ!‚2 p	=ƒ\" 
C‚2 	ƒ/ ÄÅÆ!!C‚2 ÇÈ!‡" [current-prefix-arg discuss-cur-mtg-buf discuss-current-transaction t string-to-int read-input "Transaction to delete: " error "Not currently visiting a meeting."] 7)) (byte-code "ÅˆÆÃ\"‡" [current-prefix-arg discuss-cur-mtg-buf discuss-current-transaction t trn-num nil discuss-delete-trn] 3))

(defun discuss-delete-trn (trn-num &optional backwards) (interactive (byte-code "ƒ 	ƒ ÄÅÆ!!C‚ ÇÈ!‚2 p	=ƒ\" 
C‚2 	ƒ/ ÄÅÆ!!C‚2 ÇÈ!‡" [current-prefix-arg discuss-cur-mtg-buf discuss-current-transaction t string-to-int read-input "Transaction to delete: " error "Not currently visiting a meeting."] 7)) (byte-code "Æˆ… ÌÍÎ\"!?ƒ Æ‚ƒ ÆÆÏ!		…' 
U…j Ð	!‰ˆ
ƒF Ñ!Ð!‰‚R Ð!Ñ!‰ˆ
ÒU…] ‰ˆ
ÒU…j ÓÔ!ˆÕ +ˆÖ!ˆ×!ˆÓØ\"ˆÙÍÚ#ÛÜ#‡" [current-prefix-arg discuss-cur-mtg-buf discuss-current-transaction t discuss-safe-delete trn-num nil info other cache-entry backwards discuss-meeting yes-or-no-p format "Delete transaction %d? " discuss-la-search caddr cadr 0 message "No more transactions in meeting!" beep discuss-la-invalidate discuss-la-invalidate-relatives "Deleting %d...." discuss-send-cmd "(dt %d %s)
" discuss-end-del-trn discuss-read-form] 18))

(defun discuss-end-del-trn nil (byte-code "ÁÂ!ˆÃ!‡" [discuss-current-transaction message "Done." discuss-show-trn] 3))

(defun discuss-retrieve-trn (trn-num) (interactive "nTransaction to retrieve: ") (byte-code "Ãˆ	‰ˆÄÅ	\"ˆÆÇÈ	
#ÉÊ#‡" [discuss-current-transaction trn-num discuss-meeting nil message "Retrieving %d...." discuss-send-cmd format "(rt %d %s)
" discuss-end-rt-trn discuss-read-form] 6))

(defun discuss-end-rt-trn nil (byte-code "ÁÂ!ˆÃ!ˆÄ!‡" [discuss-current-transaction message "Done." discuss-la-invalidate-relatives discuss-show-trn] 4))

(defun discuss-la-invalidate-relatives (trn-num) (byte-code "Ã!ˆÄ ˆÅÆ!
…4 Ç
!‰ˆÈÇ	!!ˆÈÉ	!!ˆÈÊ	8!ˆÈË	8!ˆÈÌ	8!*‡" [trn-num info cache-entry discuss-la-cache-transaction discuss-la-block-til-ready nil discuss-la-search caddr discuss-la-invalidate cadr 3 4 6] 13))

(defun discuss-format-trn-num (num) (byte-code "ÂÃÄXƒ Å‚! ÆXƒ Ç‚! ÈXƒ  É‚! Ê#‡" [num t format "[%s%d]" 9 "000" 99 "00" 999 "0" ""] 4))

(defun discuss-scroll-up nil (interactive) (byte-code "ÀˆÁÂÃ‡" [nil err (byte-code "ÁÀ!‡" [nil scroll-up] 2) ((error (byte-code "… Ä	Å\"ƒ Ä
Æ8\"ƒ Ç ‚ È ‚$ É	@	A\"‡" [discuss-DWIM err discuss-current-transaction discuss-current-meeting-info equal (end-of-buffer) 4 discuss-leave-mtg discuss-next-trn signal] 7)))] 3))

(defvar discuss-la-cache-dir "/tmp" "\
The directory of where to store the cached transaction.")

(defvar discuss-la-cache nil "\
List of cached discuss transactions.")

(defvar discuss-la-to-cache nil "\
List of transaction that should be cached.")

(defvar discuss-max-cache-length 32 "\
Maximum number of cached transactions.")

(defvar discuss-max-next-chaining 5 "\
Maximum number of look-ahead in the forward direction.")

(defvar discuss-la-next-chaining 0 "\
Number of look ahead's we have left to do.")

(defvar discuss-la-next-trn 0 "\
This points to the pref of the transaction that should be cached next.")

(defvar discuss-reading-form "" "\
This is a scratch variable where output from the discuss backend is 
accumulated.")

(defvar discuss-la-in-progress nil "\
Contains the cache entry that we're currently working on in lookahead-
article.  If it is set to nil, we will abort processing the 
lookahead-article.")

(defun discuss-la-flush nil "\
Flushes the look-ahead cache.  Required when you exit a meeting." (byte-code "Á‰ˆ
…  ÃÄ
@!!… ÅÄ
@!!ˆ
A‰ˆ‚ ‡" [discuss-la-in-progress nil discuss-la-cache file-exists-p cadr delete-file] 7))

(defun discuss-la-block-til-ready nil "\
Block, waiting until the previous operation look-ahead operation completes" (byte-code "… … ÁÂ!ˆÃÄ!ˆÅ ˆ‚ ˆÁÆ!‡" [discuss-la-in-progress message "waiting for (la) discuss..." sit-for 1 accept-process-output ""] 5))

(defun discuss-la-search (key) (byte-code "Á
… Å
@@\"?… 
‰ˆ
A‰ˆ‚ ˆ
…$ …5 Æ
A\"ˆÆ
\"ˆ
‰ˆ
@*‡" [prev nil this discuss-la-cache key equal setcdr] 5))

(defun discuss-la-invalidate (num) (byte-code "Ã	!… ÄAAÂ\")‡" [cache-entry num nil discuss-la-search setcar] 4))

(defun discuss-la-get-art (num) (byte-code "Å ˆÆ	!Ç8‰ˆ… 
ƒ\" 	‰ˆÈ ˆÉ!‚# Ä)‡" [cache-entry num discuss-form discuss-show-num nil discuss-la-block-til-ready discuss-la-search 2 discuss-la-cache-transaction cadr] 5))

(defun discuss-la-cache-transaction (&optional num) (byte-code "?… 	?… 
… 
@
A‰ˆ?…# 	?…# ÊV…W Ë\"ƒQ S‰ˆÌÌ!!‰ˆ	ÊU…J Ç‰ˆÊ‰ˆ	‰‚V ÊÊ‰)ˆ	…¢ Í	!…g Î8?ƒŸ Ï ˆƒx ‰‚ 	ÐÑÒ	#!ÇE‰ˆB‰ˆÓÑÔÕ!		$Ö×Ø$‚¡ Ù )‡" [discuss-la-in-progress num discuss-la-to-cache discuss-la-next-chaining cache-entry discuss-la-next-trn discuss-la-cache nil discuss-la-cache-dir discuss-current-meeting 0 assoc caddr discuss-la-search 2 discuss-la-block-til-ready make-temp-name format "%s/edsc%d" discuss-send-cmd "(gtf %s %d %s)
" cadr discuss-la-cache-transaction-1 discuss-read-form discuss-la-flush discuss-la-cache-transaction] 14))

(defun discuss-la-cache-transaction-1 nil (byte-code "…6 ÆAA	\"ˆ
GV…/ Ç
GS
8!È!…# É!ˆÊË
GÌZ
\"Å\")ˆÅ‰ˆÍ ‡" [discuss-la-in-progress discuss-form discuss-la-cache discuss-max-cache-length file nil setcar cadr file-exists-p delete-file setcdr nthcdr 2 discuss-la-cache-transaction] 8))

(defun discuss-la-do-cache (&optional no-retry) (byte-code "Æ	!Ç	!È	8É	8ÊV… B‰ˆ
ÊV…' 
B‰ˆÊV…3 B‰ˆÊV…? B‰ˆË ,‡" [next discuss-current-transaction-info prev nref pref discuss-la-to-cache caddr cadr 4 3 0 discuss-la-cache-transaction] 7))

(defun discuss-restart nil "\
Used to save the world when edsc gets hung or dies...

Flushes the discuss cache and destroys the edsc process." (interactive) (byte-code "ÁˆÃ ˆ… ÄÅ!Æ\"… ÇÈ\"ˆÁÁ‰‡" [discuss-process nil discuss-in-progress discuss-la-flush equal process-status run send-string "(quit)
"] 6))

(defun discuss-send-cmd (cmd &optional end-func filter-func unwind-func) "\
Send an command to the edsc process" (byte-code "?…† Ñ	!?… ÒÓ	\"ˆÔÕÂ	#‰ˆÖ×\"ˆØÙÂÚ#ˆÛÃ!ˆƒ1 @‚B ÜÝ\"ƒ= Þ‚B Òß\"àáâÞ\"ãâÞ\"Þ\"Z#äVƒb å‰‚h æ!‰ˆçVƒz è ˆÒé\"‚… êë#ˆìí!*ˆÛÃ!ˆ	…” Ã‰
ˆŠå‰ˆ‰ˆ‰ˆ	…± î	\"ˆï\")‡" [discuss-process discuss-pathname nil t discuss-vers discuss-form discuss-error ver-string discuss-version-string filter-func discuss-in-progress discuss-reading-string discuss-cont end-func discuss-unwind unwind-func cmd file-exists-p error "%s does not exist!" start-process "discuss-shell" set-process-sentinel discuss-edsc-sentinel discuss-send-cmd "(gpv)
" discuss-read-form discuss-block-til-ready equal "Unimplemented operation" 10 "Edsc returned error: %s" format "%d.%d" / * 23 "" cadr 20 discuss-restart "Bad version of edsc (%s) --- need version 2.0." message "Started edsc process.... version %s %s)" sit-for 1 set-process-filter send-string] 22))

(defun discuss-block-til-ready (verbose) "\
Block, waiting until the previous operation for discuss finished.
If VERBOSE is non-nil, then print a message that we're waiting for the 
discuss server while we spin-block." (byte-code "… … 	… ÂÃ!ˆÄÅ!ˆÆ ˆ‚ ˆÂÇ!‡" [discuss-in-progress verbose message "waiting for discuss..." sit-for 1 accept-process-output ""] 5))

(defun discuss-edsc-sentinel (process signal) (byte-code "Ä	!Å	!
Æ=ƒ Ç ‚& 
Ã=…& È ˆÉÊËÌO\"ˆÇ *‡" [buffer process status signal process-buffer process-status exit discuss-restart ding message "discuss-shell: %s." 0 -1] 9))

(defun discuss-read-form (process string) (byte-code "	P‰ˆÍÎ\"
…ƒ ÏÐOÐ
OÆ‰ˆÑÒ\"ƒ8 Ó!ˆ
TÆO‰ˆÔÕ\"‚‚ ÑÖ\"ƒi ‰ˆÓ!ˆ× ˆ
TÆO‰ˆÆ‰ˆÆ‰	ˆ
…f Ø
Æ\"‚‚ ÙÚP!@‰	ˆÆ‰ˆ…‚ ØÆ\"*)‡" [discuss-reading-string string end-of-line flag-char first-line discuss-error nil process discuss-in-progress discuss-form discuss-unwind t discuss-cont string-match "
" 0 1 equal "-" message discuss-read-form "" ";" ding apply read-from-string "("] 12))

(defun discuss-initialize nil (byte-code "Æ‰ˆÇÈ	ÉPÊÂ$ˆÇË	ÉPÌÂ$ˆÇÍ	ÉPÎÂ$ˆÇÏ	ÐPÑÂ$ˆÇÒ	ÓPÔÂ$ˆÇÕ	ÖP×Â$ˆÇØ	ÖP×Â$ˆÇÙ	ÖPÚÂ$ˆÇÛ	ÖPÜÂ$ˆƒ] Ä‚§ Ý ‰ˆÞ!ˆßàÙ#ˆßáÛ#ˆßâã#ˆßäå#ˆßæç#ˆßèå#ˆßéê#ˆßëì#ˆßíî#ˆßïð#ˆßñò#ˆƒ° Ä‚¬Ý ‰ˆÞ!ˆßóô#ˆßæõ#ˆßæö#ˆßè÷#ˆßâø#ˆßäù#ˆßáú#ˆßûü#ˆßýþ#ˆßÿ@ #ˆßëA #ˆßB C #ˆßD E #ˆßF Õ#ˆßG H #ˆßI J #ˆßK J #ˆßL È#ˆßM Ë#ˆßN Í#ˆßO Ø#ˆßP Q #ˆßR S #ˆßíT #ˆßñò#ˆßïð#ˆßàÙ#ˆßU V #ˆßW X #ˆßY Z #ˆß[ Ï#ˆ\\ ] !‡" [discuss-version discuss-source-dir t discuss-mtgs-mode-map nil discuss-trn-mode-map "$Header: /mit/discuss/source/edsc/RCS/discuss.el,v 1.18 90/11/05 14:46:02 eichin Exp $" autoload discuss-talk "/discuss-enter.elc" "Enter a new discuss transaction." discuss-reply "Reply to an existing discuss transaction." discuss-randrp "Random reply in a meeting." discuss-ls "/discuss-ls.elc" "List the headings of the transactions in a meeting." discuss-list-acl "/discuss-acl.elc" "List the ACL of a meeting." discuss-forward "/discuss-misc.elc" "Forward a transaction via mail." discuss-reply-by-mail discuss-add-mtg "Add a discuss meeting" discuss-del-mtg "Delete a discuss meeting" make-keymap suppress-keymap define-key "a" "d" "n" discuss-forward-meeting "p" discuss-prev-meeting " " discuss-next-meeting "" "l" discuss-lsm "g" discuss-goto "q" discuss-quit "s" discuss-stat "?" describe-mode "." discuss-update scroll-up discuss-scroll-up scroll-down discuss-next-trn discuss-prev-trn discuss-delete-trn "R" discuss-retrieve-trn "n" discuss-nref "p" discuss-pref discuss-show-trn "<" discuss-first-trn ">" discuss-last-trn "f" "F" discuss-toggle-trn-flag "h" discuss-trn-summary "" "t" "r" "" "r" "" discuss-trn-output "i" discuss-trn-input discuss-leave-mtg "" discuss-delete-trn-backwards "f" discuss-fref "l" discuss-lref "=" fmakunbound discuss-initialize] 58))

(discuss-initialize)

(defun discuss-trn-output (file-name) "\
Append this message to file named FILE-NAME." (interactive (byte-code "ÁÂÃ!ÄQÅ!#C‡" [discuss-output-last-file read-file-name "Append to: (default " file-name-nondirectory ") " file-name-directory] 6)) (byte-code "ÆˆÇ	!‰ˆ	‰ˆpÈÉ!ÅŠqˆÊ ˆË
!ˆdbˆÌcˆÍed	#)ˆÎ!+‡" [discuss-output-last-file file-name discuss-trn-buf tembuf case-fold-search t nil expand-file-name get-buffer-create " discuss-trn-output" erase-buffer insert-buffer-substring "
" append-to-file kill-buffer] 8))

(defun discuss-next-meeting (&optional quiet) "\
Find the next changed meeting in the discuss *meetings* buffer, or wrap." (interactive) (byte-code "Äˆp	qˆ
… ÆÇŠÈ ˆ`)Ã#ƒ É ‚: ÊËÄÃ#?…: ebˆÊËÄÃ#?…: ?…: ÌÍ!ˆq)‡" [buffer discuss-main-buffer discuss-DWIM t nil quiet re-search-backward "^ c" beginning-of-line discuss-goto re-search-forward "^ c " message "No new meetings, try discuss-lsm instead."] 8))

(defun discuss-forward-meeting (&optional quiet) (interactive) (byte-code "ÁˆÁÃ
!)‡" [discuss-DWIM nil quiet discuss-next-meeting] 2))

(defun discuss-prev-meeting nil "\
Find the next changed meeting in the discuss *meetings* buffer, or wrap." (interactive) (byte-code "ÀˆÂ ˆÃÄÀÁ#?… dbˆÃÄÀÁ#?… ÅÆ!ˆÇÈ!‡" [nil t beginning-of-line re-search-backward "^ c " message "No new meetings, try discuss-lsm instead." forward-char 3] 6))

(defun discuss-mark-read-meeting (meeting) "\
Mark a meeting as read on the discuss-mode listing." (byte-code "ŠqˆebˆÅÆÇ	!ÈQÂÃ#?ƒ É ˆÊË	\"‚1 Ì ˆÍÎ!ˆÂÏÐÎ\"ˆÑÎ!))‡" [discuss-main-buffer meeting nil t buffer-read-only re-search-forward " " regexp-quote "\\(,\\|$\\)" ding message "Can't find meeting %s." beginning-of-line forward-char 1 insert-char 32 delete-char] 9))
