From 9bf1294eae8c4aa07235637097f2d2e603609ebf Mon Sep 17 00:00:00 2001 From: tomo Date: Wed, 13 Dec 2000 06:01:04 +0000 Subject: [PATCH] Fix and add DOCs; fix coding style. --- emacs-lisp/alist.el | 90 +++++++++++++++++++++++---------------------------- 1 file changed, 40 insertions(+), 50 deletions(-) diff --git a/emacs-lisp/alist.el b/emacs-lisp/alist.el index 4ac3169..4b656de 100644 --- a/emacs-lisp/alist.el +++ b/emacs-lisp/alist.el @@ -1,11 +1,11 @@ -;;; alist.el --- utility functions about association-list +;;; alist.el --- utility functions for association list ;; Copyright (C) 1993,1994,1995,1996,1998,2000 Free Software Foundation, Inc. ;; Author: MORIOKA Tomohiko ;; Keywords: alist -;; This file is part of APEL (A Portable Emacs Library). +;; This file is part of GNU Emacs. ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as @@ -25,76 +25,65 @@ ;;; Code: ;;;###autoload -(defun put-alist (item value alist) - "Modify ALIST to set VALUE to ITEM. -If there is a pair whose car is ITEM, replace its cdr by VALUE. -If there is not such pair, create new pair (ITEM . VALUE) and -return new alist whose car is the new pair and cdr is ALIST. -\[tomo's ELIS like function]" - (let ((pair (assoc item alist))) - (if pair +(defun put-alist (key value alist) + "Set cdr of an element (KEY . ...) in ALIST to VALUE and return ALIST. +If there is no such element, create a new pair (KEY . VALUE) and +return a new alist whose car is the new pair and cdr is ALIST." + (let ((elm (assoc key alist))) + (if elm (progn - (setcdr pair value) + (setcdr elm value) alist) - (cons (cons item value) alist) - ))) + (cons (cons key value) alist)))) ;;;###autoload -(defun del-alist (item alist) - "If there is a pair whose key is ITEM, delete it from ALIST. -\[tomo's ELIS emulating function]" - (if (equal item (car (car alist))) +(defun del-alist (key alist) + "Delete an element whose car equals KEY from ALIST. +Return the modified ALIST." + (if (equal key (car (car alist))) (cdr alist) (let ((pr alist) - (r (cdr alist)) - ) + (r (cdr alist))) (catch 'tag (while (not (null r)) - (if (equal item (car (car r))) + (if (equal key (car (car r))) (progn (rplacd pr (cdr r)) (throw 'tag alist))) (setq pr r) - (setq r (cdr r)) - ) + (setq r (cdr r))) alist)))) ;;;###autoload -(defun set-alist (symbol item value) - "Modify a alist indicated by SYMBOL to set VALUE to ITEM." +(defun set-alist (symbol key value) + "Set cdr of an element (KEY . ...) in the alist bound to SYMBOL to VALUE." (or (boundp symbol) - (set symbol nil) - ) - (set symbol (put-alist item value (symbol-value symbol))) - ) + (set symbol nil)) + (set symbol (put-alist key value (symbol-value symbol)))) ;;;###autoload -(defun remove-alist (symbol item) - "Remove ITEM from the alist indicated by SYMBOL." +(defun remove-alist (symbol key) + "Delete an element whose car equals KEY from the alist bound to SYMBOL." (and (boundp symbol) - (set symbol (del-alist item (symbol-value symbol))) - )) + (set symbol (del-alist key (symbol-value symbol))))) ;;;###autoload (defun modify-alist (modifier default) - "Modify alist DEFAULT into alist MODIFIER." + "Store elements in the alist MODIFIER in the alist DEFAULT. +Return the modified alist." (mapcar (function (lambda (as) - (setq default (put-alist (car as)(cdr as) default)) - )) + (setq default (put-alist (car as)(cdr as) default)))) modifier) default) ;;;###autoload -(defun set-modified-alist (sym modifier) - "Modify a value of a symbol SYM into alist MODIFIER. -The symbol SYM should be alist. If it is not bound, -its value regard as nil." - (if (not (boundp sym)) - (set sym nil) - ) - (set sym (modify-alist modifier (eval sym))) - ) +(defun set-modified-alist (symbol modifier) + "Store elements in the alist MODIFIER in an alist bound to SYMBOL. +If SYMBOL is not bound, set it to nil at first." + (if (not (boundp symbol)) + (set symbol nil)) + (set symbol (modify-alist modifier (eval symbol)))) ;;; @ association-vector-list @@ -102,13 +91,14 @@ its value regard as nil." ;;;###autoload (defun vassoc (key avlist) - "Search AVLIST for a vector whose first element is equal to KEY. + "Search AVLIST for an element whose first element equals KEY. +AVLIST is a list of vectors. See also `assoc'." - (let (v) - (while (and (setq v (car avlist)) - (not (equal key (aref v 0)))) - (setq avlist (cdr avlist))) - v)) + (while (and avlist + (not (equal key (aref (car avlist) 0)))) + (setq avlist (cdr avlist))) + (and avlist + (car avlist))) ;;; @ end -- 1.7.10.4