view lisp/alist.el @ 5490:8861440b1aa4

Remove all autoload cookies from dumped files, they're needless and confusing. lisp/ChangeLog addition: 2011-05-01 Aidan Kehoe <kehoea@parhasard.net> * buff-menu.el (list-buffers-directory): * buff-menu.el (default-list-buffers-identification): * cus-file.el (custom-file-base): * cus-file.el (custom-file): * cus-file.el (make-custom-file-name): * menubar.el (menu-split-long-menu): * newcomment.el: * newcomment.el (indent-for-comment): * newcomment.el (comment-column): * newcomment.el (comment-start): * newcomment.el (comment-start-skip): * newcomment.el (comment-end-skip): * newcomment.el (comment-end): * newcomment.el (comment-indent-function): * newcomment.el (comment-style): * newcomment.el (comment-padding): * newcomment.el (comment-multi-line): * newcomment.el (comment-normalize-vars): * newcomment.el (comment-indent): * newcomment.el (comment-set-column): * newcomment.el (comment-kill): * newcomment.el (uncomment-region): * newcomment.el (comment-region): * newcomment.el (comment-or-uncomment-region): * newcomment.el (comment-dwim): * newcomment.el (comment-indent-new-line): * x-win-sun.el (x-win-init-sun): * x-win-xfree86.el (x-win-init-xfree86): * mule/mule-composite.el: * mule/mule-composite.el (reference-point-alist): * mule/mule-composite.el (compose-region): * mule/mule-composite.el (decompose-region): * mule/mule-composite.el (compose-string): * mule/mule-composite.el (decompose-string): * mule/mule-composite.el (compose-chars): * mule/mule-composite.el (find-composition): * mule/mule-composite.el (compose-chars-after): * mule/mule-composite.el (compose-last-chars): * mule/mule-composite.el (decompose-composite-char): Remove all autoload cookies from dumped files, they're needless and confusing.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 01 May 2011 17:43:14 +0100
parents b9167d522a9a
children
line wrap: on
line source

;;; alist.el --- utility functions about association-list

;; Copyright (C) 1993,1994,1995,1996,1998 Free Software Foundation, Inc.

;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
;; Keywords: alist

;; This file is part of APEL (A Portable Emacs Library).

;; XEmacs is free software: you can redistribute it and/or modify it
;; under the terms of the GNU General Public License as published by the
;; Free Software Foundation, either version 3 of the License, or (at your
;; option) any later version.

;; This program is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;; General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with XEmacs.  If not, see <http://www.gnu.org/licenses/>.


;;;###autoload
(defun vassoc (key valist)
  "Search VALIST for a vector whose first element is equal to KEY.
See also `assoc'."
  ;; by Stig@hackvan.com
  (let (el)
    (catch 'done
      (while (setq el (pop valist))
	(and (equal key (aref el 0))
	     (throw 'done el))))))


;;;###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
	(progn
	  (setcdr pair value)
	  alist)
      (cons (cons item 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)))
      (cdr alist)
    (let ((pr alist)
	  (r (cdr alist))
	  )
      (catch 'tag
	(while (not (null r))
	  (if (equal item (car (car r)))
	      (progn
		(rplacd pr (cdr r))
		(throw 'tag alist)))
	  (setq pr r)
	  (setq r (cdr r))
	  )
	alist))))

;;;###autoload
(defun set-alist (symbol item value)
  "Modify a alist indicated by SYMBOL to set VALUE to ITEM."
  (or (boundp symbol)
      (set symbol nil)
      )
  (set symbol (put-alist item value (symbol-value symbol)))
  )

;;;###autoload
(defun remove-alist (symbol item)
  "Remove ITEM from the alist indicated by SYMBOL."
  (and (boundp symbol)
       (set symbol (del-alist item (symbol-value symbol)))
       ))

;;;###autoload
(defun modify-alist (modifier default)
  "Modify alist DEFAULT into alist MODIFIER."
  (mapc
   (function
    (lambda (as)
      (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)))
  )


;;; @ end
;;;

(provide 'alist)

;;; alist.el ends here