emacs-devel
[Top][All Lists]
Advanced

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

Re: lispref/variables.texi


From: Luc Teirlinck
Subject: Re: lispref/variables.texi
Date: Fri, 24 Jun 2005 19:56:47 -0500 (CDT)

Kim Storm wrote:

   To "remove" the order, you can specify a non-nil, non-numeric value
   for ORDER -- in that case, the element's order in the hash table is
   set to nil (which effitively means "no" ordering).

I actually did not know that.  Then a few further changes to
variables.texi are needed, as well as some changes to the
add-to-ordered-list docstring.  The current docs suggest that only
numbers or nil values for ORDER are allowed.  On an unrelated note,
the first lines of the docstrings of both add-to-ordered-list and
add-to-list needlessly exceed the maximum allowed 67 characters.  I
believe that the shortened versions in the patch below are actually
not only shorter, but better readable as well.

Below are a proposed new patch to subr.el and a slightly revised
version of my patch to variables.texi.

===File ~/subr.el-diff======================================
*** subr.el     22 Jun 2005 18:21:04 -0500      1.468
--- subr.el     24 Jun 2005 19:22:52 -0500      
***************
*** 937,943 ****
          (set hook hook-value))))))
  
  (defun add-to-list (list-var element &optional append)
!   "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet.
  The test for presence of ELEMENT is done with `equal'.
  If ELEMENT is added, it is added at the beginning of the list,
  unless the optional argument APPEND is non-nil, in which case
--- 937,943 ----
          (set hook hook-value))))))
  
  (defun add-to-list (list-var element &optional append)
!   "Add ELEMENT to the value of LIST-VAR if it isn't there yet.
  The test for presence of ELEMENT is done with `equal'.
  If ELEMENT is added, it is added at the beginning of the list,
  unless the optional argument APPEND is non-nil, in which case
***************
*** 959,973 ****
  
  
  (defun add-to-ordered-list (list-var element &optional order)
!   "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet.
  The test for presence of ELEMENT is done with `eq'.
  
  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.
--- 959,976 ----
  
  
  (defun add-to-ordered-list (list-var element &optional order)
!   "Add ELEMENT to the value of LIST-VAR if it isn't there yet.
  The test for presence of ELEMENT is done with `eq'.
  
  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 a number (integer or
! float), set the element's list order to the given value.  If
! ORDER is nil or omitted, do not change the numeric order of
! ELEMENT.  If ORDER has any other value, remove the numeric order
! of ELEMENT if it has one.
  
  The list order for each element is stored in LIST-VAR's
  `list-order' property.
============================================================

===File ~/variables.texi-diff===============================
*** variables.texi      20 Jun 2005 17:10:57 -0500      1.66
--- variables.texi      24 Jun 2005 19:17:50 -0500      
***************
*** 909,926 ****
  position specified by @var{order}.  If @var{element} is already a
  member of the list, its position in the list is adjusted according
  to @var{order}.  Membership is tested using @code{eq}.
! The valued returned is the resulting list, whether updated or not.
  
! The @var{order} is a number, and the elements on list are sorted in
! increasing numerical order.  Elements without a numeric list order are
! placed at the end of @var{symbol}.
  
  The argument @var{symbol} is not implicitly quoted;
  @code{add-to-ordered-list} is an ordinary function, like @code{set}
  and unlike @code{setq}.  Quote the argument yourself if that is what
  you want.
  
! The ordering information is stored in an alist on @var{symbol}'s
  @code{list-order} property.
  @end defun
  
--- 909,933 ----
  position specified by @var{order}.  If @var{element} is already a
  member of the list, its position in the list is adjusted according
  to @var{order}.  Membership is tested using @code{eq}.
! This function returns the resulting list, whether updated or not.
  
! The @var{order} is typically a number (integer or float), and the
! elements of the list are sorted in non-decreasing numerical order.
! 
! @var{order} may also be omitted or @code{nil}.  Then the numeric order
! of @var{element} stays unchanged if it already has one; otherwise,
! @var{element} has no numeric order.  Elements without a numeric list
! order are placed at the end of the list, in no particular order.
! 
! Any other value for @var{order} removes the numeric order of @var{element}
! if it already has one; otherwise, it is equivalent to @code{nil}.
  
  The argument @var{symbol} is not implicitly quoted;
  @code{add-to-ordered-list} is an ordinary function, like @code{set}
  and unlike @code{setq}.  Quote the argument yourself if that is what
  you want.
  
! The ordering information is stored in a hash table on @var{symbol}'s
  @code{list-order} property.
  @end defun
  
***************
*** 945,955 ****
  (add-to-ordered-list 'foo 'd)       ;; @r{Append @code{d}.}
       @result{} (a c b d)
  
! (add-to-ordered-list 'foo 'b 2)     ;; @r{Move @code{b}.}
!      @result{} (a b c d)
  
  foo                       ;; @address@hidden was changed.}
!      @result{} (a b c d)
  @end example
  
  @node Variable Scoping
--- 952,962 ----
  (add-to-ordered-list 'foo 'd)       ;; @r{Append @code{d}.}
       @result{} (a c b d)
  
! (add-to-ordered-list 'foo 'e)       ;; @r{Add @code{e}}.
!      @result{} (a c b e d)
  
  foo                       ;; @address@hidden was changed.}
!      @result{} (a c b e d)
  @end example
  
  @node Variable Scoping
============================================================




reply via email to

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