Mercurial > emacs
comparison lisp/gnus/gnus-ems.el @ 110157:969b41083104
gnus-ems.el: Make process-plist functions work.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Fri, 03 Sep 2010 01:00:10 +0000 |
parents | 8d09094063d0 |
children | 4f369250ec80 |
comparison
equal
deleted
inserted
replaced
110156:a2439ed30c52 | 110157:969b41083104 |
---|---|
312 (defalias 'gnus-process-plist 'process-plist) | 312 (defalias 'gnus-process-plist 'process-plist) |
313 (defalias 'gnus-process-get 'process-get) | 313 (defalias 'gnus-process-get 'process-get) |
314 (defalias 'gnus-process-put 'process-put)) | 314 (defalias 'gnus-process-put 'process-put)) |
315 (defun gnus-set-process-plist (process plist) | 315 (defun gnus-set-process-plist (process plist) |
316 "Replace the plist of PROCESS with PLIST. Returns PLIST." | 316 "Replace the plist of PROCESS with PLIST. Returns PLIST." |
317 (put 'gnus-process-plist process plist)) | 317 (put 'gnus-process-plist-internal process plist)) |
318 | |
318 (defun gnus-process-plist (process) | 319 (defun gnus-process-plist (process) |
319 "Return the plist of PROCESS." | 320 "Return the plist of PROCESS." |
320 ;; Remove those of dead processes from `gnus-process-plist' | 321 ;; This form works but can't prevent the plist data from |
321 ;; to prevent it from growing. | 322 ;; growing infinitely. |
322 (let ((plist (symbol-plist 'gnus-process-plist)) | 323 ;;(get 'gnus-process-plist-internal process) |
323 proc) | 324 (let* ((plist (symbol-plist 'gnus-process-plist-internal)) |
324 (while (setq proc (car plist)) | 325 (tem (memq process plist))) |
325 (if (and (processp proc) | 326 (prog1 |
326 (memq (process-status proc) '(open run))) | 327 (cadr tem) |
327 (setq plist (cddr plist)) | 328 ;; Remove it from the plist data. |
328 (setcar plist (caddr plist)) | 329 (when tem |
329 (setcdr plist (or (cdddr plist) '(nil)))))) | 330 (if (eq plist tem) |
330 (get 'gnus-process-plist process)) | 331 (progn |
332 (setcar plist (caddr plist)) | |
333 (setcdr plist (or (cdddr plist) '(nil)))) | |
334 (setcdr (nthcdr (- (length plist) (length tem) 1) plist) | |
335 (cddr tem))))))) | |
336 | |
331 (defun gnus-process-get (process propname) | 337 (defun gnus-process-get (process propname) |
332 "Return the value of PROCESS' PROPNAME property. | 338 "Return the value of PROCESS' PROPNAME property. |
333 This is the last value stored with `(gnus-process-put PROCESS PROPNAME VALUE)'." | 339 This is the last value stored with `(gnus-process-put PROCESS PROPNAME VALUE)'." |
334 (plist-get (gnus-process-plist process) propname)) | 340 (plist-get (gnus-process-plist process) propname)) |
341 | |
335 (defun gnus-process-put (process propname value) | 342 (defun gnus-process-put (process propname value) |
336 "Change PROCESS' PROPNAME property to VALUE. | 343 "Change PROCESS' PROPNAME property to VALUE. |
337 It can be retrieved with `(gnus-process-get PROCESS PROPNAME)'." | 344 It can be retrieved with `(gnus-process-get PROCESS PROPNAME)'." |
338 (gnus-set-process-plist process | 345 (gnus-set-process-plist process |
339 (plist-put (gnus-process-plist process) | 346 (plist-put (gnus-process-plist process) |