monnier pushed a commit to branch master in repository elpa. commit 403b3b48724aa803c13d742e17da38c6a0130d1e Author: Teemu Likonen <tliko...@iki.fi> Date: Wed Jul 22 07:56:51 2009 +0000
wcheck-update-buffer-data uuden tietokannan mukaiseksi --- wcheck-mode.el | 76 ++++++++++++++++++++++++++----------------------------- 1 files changed, 36 insertions(+), 40 deletions(-) diff --git a/wcheck-mode.el b/wcheck-mode.el index d9a32ae..1938e4a 100644 --- a/wcheck-mode.el +++ b/wcheck-mode.el @@ -256,7 +256,6 @@ This is used when language does not define face." (defvar wcheck-buffer-window-areas nil) (make-variable-buffer-local 'wcheck-buffer-window-areas) -(defvar wcheck-buffer-process-data nil) (defvar wcheck-buffer-data nil) (defconst wcheck-process-name-prefix "wcheck/" @@ -667,54 +666,51 @@ Return the stopped process or nil if there was no such process." proc))) -(defun wcheck-update-buffer-process-data (buffer language) - "Update variable `wcheck-buffer-process-data' for BUFFER. -Calling this function is the primary way to tell `wcheck-mode' -that BUFFER is using LANGUAGE and its settings. If LANGUAGE is -nil remove BUFFER from the list." +(defun wcheck-update-buffer-data (buffer language) + "Update process and language data for BUFFER. +Calling this function is the primary way to maintain the language +and process data associated to BUFFER. If LANGUAGE is nil remove +BUFFER from the list." (when (and (bufferp buffer) (or (stringp language) (not language))) - ;; Remove illegal elements from the list, that is, elements whose - ;; cdr is not a string. - (dolist (item wcheck-buffer-process-data) - (unless (stringp (cdr item)) - (setq wcheck-buffer-process-data - (delq item wcheck-buffer-process-data)))) - - ;; Construct a list of currently needed languages/processes. - (let ((old-langs (mapcar #'cdr wcheck-buffer-process-data)) - new-langs) + ;; Construct a list of currently used processes. + (let ((old-processes (wcheck-get-all-data :process)) + new-processes) ;; Remove dead buffers and possible minibuffers from the list. - (dolist (item wcheck-buffer-process-data) - (when (or (not (buffer-live-p (car item))) - (minibufferp (car item))) - (setq wcheck-buffer-process-data - (delq item wcheck-buffer-process-data)))) - - ;; Remove BUFFER from the list. - (setq wcheck-buffer-process-data - (assq-delete-all buffer wcheck-buffer-process-data)) + (dolist (item (wcheck-get-all-data :buffer)) + (when (or (not (buffer-live-p item)) + (minibufferp item)) + (wcheck-delete-buffer-data item))) + (if language - ;; LANGUAGE was given so add this BUFFER's language info to - ;; the list. - (add-to-list 'wcheck-buffer-process-data - (cons buffer language)) - ;; LANGUAGE was not given so this usually means that wcheck-mode - ;; is being turned off from this buffer. Remove BUFFER from the - ;; list of buffers which request for wcheck update. - (wcheck-timer-read-request-delete buffer)) - - ;; Construct a list of languages/processes that are still needed. - (setq new-langs (mapcar #'cdr wcheck-buffer-process-data)) + (progn + ;; LANGUAGE was given. If data for this buffer does not + ;; exist create it. + (unless (wcheck-get-buffer-data buffer) + (wcheck-create-buffer-data buffer)) + ;; Add this BUFFER's language info and reset the process + ;; info. + (wcheck-set-buffer-data buffer :language language) + (wcheck-set-buffer-data buffer :process nil)) + + ;; LANGUAGE was not given so this normally means that + ;; wcheck-mode is being turned off for this buffer. Remove + ;; BUFFER from the list of buffers which request for wcheck + ;; update and remove all buffer data. + (wcheck-timer-read-request-delete buffer) + (wcheck-delete-buffer-data buffer)) + + ;; Construct a list of processes that are still used. + (setq new-processes (wcheck-get-all-data :process)) ;; Stop those processes which are no longer needed. - (dolist (lang old-langs) - (unless (member lang new-langs) - (wcheck-end-process lang))))) + (dolist (proc old-processes) + (unless (memq proc new-processes) + (wcheck-end-process proc))))) - wcheck-buffer-process-data) + wcheck-buffer-data) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;