emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/subr.el


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/lisp/subr.el
Date: Wed, 15 Jun 2005 16:58:20 -0400

Index: emacs/lisp/subr.el
diff -c emacs/lisp/subr.el:1.464 emacs/lisp/subr.el:1.465
*** emacs/lisp/subr.el:1.464    Tue Jun 14 08:14:06 2005
--- emacs/lisp/subr.el  Wed Jun 15 20:58:20 2005
***************
*** 963,998 ****
  The test for presence of ELEMENT is done with `equal'.
  
  The resulting list is reordered so that the elements are in the
! order given by each element's numeric list order.  Elements which
! are not symbols, and symbol elements without a numeric list order
! are placed at the end of the list.
  
! If the third optional argument ORDER is non-nil and ELEMENT is
! a symbol, set the symbol's list order to the given value.
  
! The list order for each symbol is stored in LIST-VAR's
  `list-order' property.
  
  The return value is the new value of LIST-VAR."
!   (let* ((ordering (get list-var 'list-order))
!        (cur (and (symbolp element) (assq element ordering))))
      (when order
!       (unless (symbolp element)
!       (error "cannot specify order for non-symbols"))
!       (if cur
!         (setcdr cur order)
!       (setq cur (cons element order))
!       (setq ordering (cons cur ordering))
!       (put list-var 'list-order ordering)))
      (add-to-list list-var element)
      (set list-var (sort (symbol-value list-var)
                        (lambda (a b)
!                         (let ((oa (and (symbolp a) (assq a ordering)))
!                               (ob (and (symbolp b) (assq b ordering))))
                            (cond
                             ((not oa) nil)
                             ((not ob) t)
!                            (t (< (cdr oa) (cdr ob))))))))))
  
  
  ;;; Load history
--- 963,994 ----
  The test for presence of ELEMENT is done with `equal'.
  
  The resulting list is reordered so that the elements are in the
! order given by each element's numeric list order.
! Elements without a numeric list order are placed at the end of
! the list.
  
! If the third optional argument ORDER is non-nil, set the
! element's list order to the given value.
  
! The list order for each element is stored in LIST-VAR's
  `list-order' property.
  
  The return value is the new value of LIST-VAR."
!   (let ((ordering (get list-var 'list-order)))
!     (unless ordering
!       (put list-var 'list-order
!            (setq ordering (make-hash-table :weakness 'key :test 'eq))))
      (when order
!       (puthash element order ordering))
      (add-to-list list-var element)
      (set list-var (sort (symbol-value list-var)
                        (lambda (a b)
!                         (let ((oa (gethash a ordering))
!                               (ob (gethash b ordering)))
                            (cond
                             ((not oa) nil)
                             ((not ob) t)
!                            (t (< oa ob)))))))))
  
  
  ;;; Load history




reply via email to

[Prev in Thread] Current Thread [Next in Thread]