PATCH packages
While working on updating some packages, I ran across the use of some
functions in Emacs' subr.el that we don't have. This patch adds them
to subr-more.el in xemacs-base.
diff -r a50236b480e5 ChangeLog
--- a/ChangeLog Mon Jun 03 20:45:40 2013 +0200
+++ b/ChangeLog Wed Jun 26 09:13:52 2013 -0600
@@ -1,3 +1,8 @@
+2013-06-26 Jerry James <james(a)xemacs.org>
+
+ * subr-more.el (number-sequence, string-or-null-p, booleanp):
+ Add, used by tramp and newer versions of CEDET.
+
2013-06-03 Norbert Koch <viteno(a)xemacs.org>
* Makefile (VERSION): XEmacs package 2.36 released.
diff -r a50236b480e5 subr-more.el
--- a/subr-more.el Mon Jun 03 20:45:40 2013 +0200
+++ b/subr-more.el Wed Jun 26 09:13:52 2013 -0600
@@ -93,5 +93,57 @@
(res (string-match regexp string start buffer)))
(store-match-data md)
res))
-
+
+;;;###autoload
+(defun number-sequence (from &optional to inc)
+ "Return a sequence of numbers from FROM to TO (both inclusive) as a list.
+INC is the increment used between numbers in the sequence and defaults to 1.
+So, the Nth element of the list is (+ FROM (* N INC)) where N counts from
+zero. TO is only included if there is an N for which TO = FROM + N * INC.
+If TO is nil or numerically equal to FROM, return (FROM).
+If INC is positive and TO is less than FROM, or INC is negative
+and TO is larger than FROM, return nil.
+If INC is zero and TO is neither nil nor numerically equal to
+FROM, signal an error.
+
+This function is primarily designed for integer arguments.
+Nevertheless, FROM, TO and INC can be integer or float. However,
+floating point arithmetic is inexact. For instance, depending on
+the machine, it may quite well happen that
+\(number-sequence 0.4 0.6 0.2) returns the one element list (0.4),
+whereas (number-sequence 0.4 0.8 0.2) returns a list with three
+elements. Thus, if some of the arguments are floats and one wants
+to make sure that TO is included, one may have to explicitly write
+TO as (+ FROM (* N INC)) or use a variable whose value was
+computed with this exact expression. Alternatively, you can,
+of course, also replace TO with a slightly larger value
+\(or a slightly more negative value if INC is negative)."
+ (if (or (not to) (= from to))
+ (list from)
+ (or inc (setq inc 1))
+ (when (zerop inc) (error "The increment can not be zero"))
+ (let (seq (n 0) (next from))
+ (if (> inc 0)
+ (while (<= next to)
+ (setq seq (cons next seq)
+ n (1+ n)
+ next (+ from (* n inc))))
+ (while (>= next to)
+ (setq seq (cons next seq)
+ n (1+ n)
+ next (+ from (* n inc)))))
+ (nreverse seq))))
+
+;;;###autoload
+(defun string-or-null-p (object)
+ "Return t if OBJECT is a string or nil.
+Otherwise, return nil."
+ (or (stringp object) (null object)))
+
+;;;###autoload
+(defun booleanp (object)
+ "Return t if OBJECT is one of the two canonical boolean values: t or nil.
+Otherwise, return nil."
+ (and (memq object '(nil t)) t))
+
;;; subr-more.el ends here
--
Jerry James
http://www.jamezone.org/
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches