diff --git a/src/ChangeLog b/src/ChangeLog index b41e1b57244d5cfac20368a3ec653461794d405a..bc8c7a903cb2064cffaea57f3fbfa6b69ceb9bae 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,29 @@ +1999-08-23 David Byers <davby@ida.liu.se> + + * startup.el: Set the process coding system of the network stream + to iso-8859-1 to avoid stupidities like Gnu Emacs sending its + internal representation of swedish characters to the server (and + lying about the length of the string in question.) + + * compatibility.el (set-process-coding-system): New compatibility + function. + +1999-08-19 David Byers <davby@ida.liu.se> + + * commands2.el (kom-change-conf-type): Fixed bug in call to + mapconcat. + +1999-08-18 David Byers <davby@ida.liu.se> + + * prefetch.el (lyskom-prefetch-cancel-prefetch-map): New function. + (lyskom-skip-finished-in-queue): Handle CANCELED elements + (lyskom-prefetch-one-item): Handle CANCELED elements + + * reading.el (lyskom-enter-map-in-to-do-list): Don't bug out if we + get a map for a conference we're not a member of. This can happen + when there are RPC calls pending and we do something to the + membership list (a refetch, leave a conference, etc.) + 1999-08-22 David Byers <davby@ida.liu.se> * edit-text.el (lyskom-edit-send-check-recipients): Check for diff --git a/src/TODO b/src/TODO index 8895411960b4a8fcd365e3f4a954d41aef8e0c4b..3d38cc0ec48ebbcbba788b7e7302fad10713fb9b 100644 --- a/src/TODO +++ b/src/TODO @@ -7,6 +7,10 @@ Att g listan, gl�m inte att ta bort det fr�n listan! +N�r man har k�rt prefetchen f�r man en skum k� i lyskom-prefetch-stack +som inte inneh�ller n�got annat �n element som �r k�er vars sista +element �r FINISHED. Ibland verkar k�erna bli cirkul�ra. + Man borde anv�nda next-command-event med v�nner i silent-read och j-or-n-p. @@ -564,20 +568,6 @@ kommit. Det verkade l mig igen. -"Vill du bli medlem? (j eller n) -Mark set - [6 times] -error in process filter: Wrong type argument: number-or-marker-p, nil -[20 times]" - -Jag tror jag hittat ett s�tt att provocera fram det felmeddelandet (om -det har n�gon praktisk nytta vet jag inte...) - -Uttr�d ur fritt forum eller n�got annat h�gtrafikm�te. -G m�tet -svara j p� att bli medlem -a uttr�d ur m�tet INNAN det hunnit cachas hos klienten. Modem eller -att k�ra fr�n en annan kontinent underl�ttar nog h�r ;-) diff --git a/src/commands1.el b/src/commands1.el index eb58f6481dd044f5f8abbc277dc07b0ef59c5106..bc14cafe06657bf62ee3ea4c2075188683b88610 100644 --- a/src/commands1.el +++ b/src/commands1.el @@ -568,6 +568,7 @@ of the person." (cond ((null pers) (lyskom-insert-string 'error-fetching-person)) ((null conf) (lyskom-insert-string 'error-fetching-conf)) (passivate + (lyskom-prefetch-cancel-prefetch-map (conf-stat->conf-no conf)) (lyskom-format-insert 'unsubscribe-to conf) (set-membership-type->passive (membership->type mship) t) (setq reply (blocking-do 'set-membership-type @@ -589,6 +590,9 @@ of the person." (read-list-delete-read-info (conf-stat->conf-no conf) lyskom-to-do-list))) (t + (when self + (lyskom-prefetch-cancel-prefetch-map (conf-stat->conf-no conf))) + (if self (lyskom-format-insert 'unsubscribe-to conf) (lyskom-format-insert 'exclude-from pers conf)) diff --git a/src/commands2.el b/src/commands2.el index 4543b0fcfb80e2cf6bca7d083faefe7413ce3501..fa8fd567deb4ef64786b90cc91f469d9ce2c681c 100644 --- a/src/commands2.el +++ b/src/commands2.el @@ -1816,7 +1816,8 @@ Return-value: 'no-session if there is no suitable session to switch to (and ori (lyskom-get-string 'no-comments)) (and pro (lyskom-get-string 'closed)) (and ano (lyskom-get-string 'allow-anon)) - (and ope (lyskom-get-string 'allow-secret)))))) + (and ope (lyskom-get-string 'allow-secret)))) + ", ")) (let* ((open (lyskom-j-or-n-p (lyskom-get-string 'anyone-member) t)) (secret (if (not open) (lyskom-j-or-n-p (lyskom-get-string 'secret-conf) t))) diff --git a/src/compatibility.el b/src/compatibility.el index 03a0a43174e6a126c62c16f532bcee2bcfa6a1b6..955642cb598e0cd51d06aae1171f888a5cd18bb2 100644 --- a/src/compatibility.el +++ b/src/compatibility.el @@ -279,6 +279,9 @@ string to search in." (make-local-variable 'enable-multibyte-characters) (setq enable-multibyte-characters arg)) +(lyskom-provide-function set-process-coding-system (proc &optional encoding decoding) + ) + ;;; ====================================================================== ;;; Event stuff diff --git a/src/prefetch.el b/src/prefetch.el index b7f9a1169f89c4f479cd4b21c34730a6309ff951..c714c2a3589858956a864c9a9e425aa7b7da1892 100644 --- a/src/prefetch.el +++ b/src/prefetch.el @@ -83,6 +83,7 @@ lyskom-queue. For every membership-part we fetch the conf-stats before continuing with the next part. \('MEMBERSHIPISREAD\) - Just sets the lyskom-membership-is-read variable to t. +\('CANCELED . rest\) Whatever it was, it has been canceled. See further documentation in the source code." @@ -138,6 +139,27 @@ This is used to prevent the prefetch code to reenter itself.") (setq lyskom-membership-is-read 0)) +;;; ================================================================= +;;; Functions to cancel some prefetches + +(defun lyskom-prefetch-cancel-prefetch-map (conf-no &optional queue) +;;; (let ((prefetch-list (if queue +;;; (lyskom-queue->all-entries queue) +;;; (lyskom-stack->all-entries lyskom-prefetch-stack)))) +;;; (lyskom-traverse el prefetch-list +;;; (cond +;;; ((lyskom-queue-p el) +;;; (lyskom-prefetch-cancel-prefetch-map conf-no el)) +;;; ((not (consp el)) nil) +;;; ((or (and (eq (car el) 'MAP) +;;; (eq (conf-stat->conf-no (elt el 1)) conf-no)) +;;; (and (eq (car el) 'CONFSTATFORMAP) +;;; (eq (elt el 1) conf-no))) +;;; (setcar el 'CANCELED)) +;;; ))) +) + + ;;;; ================================================================ ;;; +++ lyskom-reset-prefetch to be called on client reset. ;;; must restart everything. @@ -378,6 +400,8 @@ process is started. Used to keep prefetch going." (while (not done) (setq element (lyskom-queue->first queue)) (if (or (eq element 'DONE) + (and (consp element) + (eq (car element) 'CANCELED)) (and (lyskom-queue-p element) (eq (lyskom-queue->first element) 'FINISHED))) (lyskom-queue-delete-first queue) @@ -397,6 +421,8 @@ Return t if an element was prefetched, otherwise return nil." (while (not done) (setq element (lyskom-stack->top lyskom-prefetch-stack)) (if (or (eq element 'DONE) + (and (consp element) + (eq (car element) 'CANCELED)) (and (lyskom-queue-p element) (eq (lyskom-queue->first element) 'FINISHED))) (lyskom-stack-pop lyskom-prefetch-stack) @@ -409,6 +435,8 @@ Return t if an element was prefetched, otherwise return nil." (cond ((eq element 'DONE) nil) ((eq element 'FINISHED) nil) + ((and (consp element) + (eq (car element) 'CANCELED)) nil) ;; A queue ==> check it out first. ((lyskom-queue-p element) diff --git a/src/reading.el b/src/reading.el index 4ddd4e6b8d56b21b5837134c51c216ec9f648982..f950271be60fcda70240c4f5b4c1d6d2c8981078 100644 --- a/src/reading.el +++ b/src/reading.el @@ -43,9 +43,9 @@ "Takes a MAP and enters all its listed text-nos in the conference CONF-STAT. This works by modifying the lyskom-to-do-list which in some cases also means modifying the lyskom-reading-list. The zero text-nos are skipped." - (let ((list (lyskom-list-unread map membership))) - (if (null list) - nil + (let ((list (lyskom-list-unread map membership)) + (mship (lyskom-try-get-membership (conf-stat->conf-no conf-stat)))) + (when (and list mship) (read-list-enter-read-info (lyskom-create-read-info 'CONF conf-stat diff --git a/src/startup.el b/src/startup.el index 2c5f7a30721c40cdfef0bb9326785ad4830f6041..d6c734df88f5d5cc8260bcb34ef402790f92eace 100644 --- a/src/startup.el +++ b/src/startup.el @@ -160,6 +160,7 @@ See lyskom-mode for details." (setq proc (open-network-stream name buffer proxy-host proxy-port)) + (set-process-coding-system proc 'no-conversion 'iso-8859-1) ;; Install our filter. ;; Do this before we send the CONNECT command to @@ -188,7 +189,8 @@ CONNECT %s:%d HTTP/1.0\r\n\ ;; Now the proxy has connected to the kom server ) (t (setq proc (open-network-stream name buffer - host port))))) + host port)) + (set-process-coding-system proc 'no-conversion 'iso-8859-1)))) (switch-to-buffer buffer) (lyskom-mode) ;Clearing lyskom-default... (setq lyskom-buffer buffer)