[Top][All Lists]

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

bug#11652: 24.1.50; CL: diverse `labels' related code doesn't work anymo

From: Michael Heerdegen
Subject: bug#11652: 24.1.50; CL: diverse `labels' related code doesn't work anymore
Date: Fri, 08 Jun 2012 17:23:56 +0200


today I upgraded to

GNU Emacs (i486-pc-linux-gnu, GTK+ Version 3.4.2)\n of
2012-06-08 on zelenka, modified by Debian

Diverse stuff involving `labels' doesn't work anymore, e.g.:


       (if (not (file-directory-p dir))
           (let ((l (directory-files dir 'full-name nil 'nosort)))
             (loop for file in l
                  (or (member (file-name-nondirectory file) '("." ".."))
                        (file-truename file))))
                collect file))))
     (add-dirs-to-load-path             ;recursive
         (&rest dirs)
       (when dirs
         (let ((first (car dirs)))
           (callf2 cons first load-path)
             (subdirs-of first)
             (cdr dirs)
  (add-dirs-to-load-path "~/gnu-emacs"))

==> Error: apply: Symbol's function definition is void:

This had worked before.


(defun is-list-p (obj)
  "Return t if OBJ is a true list and nil else.
So called \"dotted lists\" whose final cdr is not nil satisfy
`listp', but not `is-list-p'."
  (and (listp obj) (null (cdr (last obj)))))

(defmacro* do-nodes ((var &rest code) tree &optional pred)
  "Traverse all nodes of TREE with with `setf'-able references.

Let VAR traverse all subtrees of TREE with depth-first search as
`setf'-able reference.  You can use `setf' to modify the element
referenced by VAR, thus modifying TREE.  It is a generalization
of CL-`loop's \"of-ref\" clause.

This is a convenient way to modify certain elements in a tree

With PRED given, recurse only on sequences holding PRED.

\(Note: Generalized vars collaps to their values when passed to


  (let ((l '(((-1 (0))) 1 2 3 (4 5 (((6)))))))
    (do-nodes (i (when (and (numberp i) (> i 2)) (incf i 1000))) l)


  (((-1 (0))) 1 2 1003 (1004 1005 (((1006)))))


  (do-nodes (i (when (equal i '(1 2)) (setq i 'foo)))
    '((1 2) 1 2 ((1 2))))


  (foo 1 2 (foo))"

  (declare (indent 1))

  (callf or pred 'sequencep)
       ((helper (tree)
                (loop for ,var being the elements of-ref tree do
                        (when (and (or (is-list-p ,var) (arrayp ,var))
                                   (,pred ,var))
                          (helper ,var))))
     (helper ,tree)))

(do-nodes (i (when (equal i '(1 2)) (setq i 'foo)))
    '((1 2) 1 2 ((1 2))))

==> Error equal: Symbol's value as variable is void: temp-idx

This also worked before the upgrade.

3. Just FYI: when I updated emacs-snapshot with aptitude on my Debian
machine, the installation aborted because compilation of the Emms
package files failed.  I had to remove EMMS.  This could be related,

In GNU Emacs (i486-pc-linux-gnu, GTK+ Version 3.4.2)
 of 2012-06-08 on zelenka, modified by Debian
 (emacs-snapshot package, version 2:20120608-1)
Windowing system distributor `The X.Org Foundation', version 11.0.11201902
Configured using:
 `configure '--build' 'i486-linux-gnu' '--host' 'i486-linux-gnu'
 '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
 '--localstatedir=/var' '--infodir=/usr/share/info'
 '--mandir=/usr/share/man' '--with-pop=yes'
 '--without-compress-info' '--with-crt-dir=/usr/lib/i386-linux-gnu/'
 '--with-x=yes' '--with-x-toolkit=gtk3' '--with-imagemagick=yes'
 'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu'
 -Wl,--as-needed -znocombreloc' 'CPPFLAGS=-D_FORTIFY_SOURCE=2''

reply via email to

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