[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 |
Hi,
today I upgraded to
GNU Emacs 24.1.50.1 (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.:
1.
(labels
((subdirs-of
(dir)
(if (not (file-directory-p dir))
nil
(let ((l (directory-files dir 'full-name nil 'nosort)))
(loop for file in l
unless
(or (member (file-name-nondirectory file) '("." ".."))
(not
(file-directory-p
(file-truename file))))
collect file))))
(add-dirs-to-load-path ;recursive
(&rest dirs)
(when dirs
(let ((first (car dirs)))
(callf2 cons first load-path)
(apply
'add-dirs-to-load-path
(append
(subdirs-of first)
(cdr dirs)
nil))))))
(add-dirs-to-load-path "~/gnu-emacs"))
==> Error: apply: Symbol's function definition is void:
add-dirs-to-load-path
This had worked before.
2.
(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
structure.
With PRED given, recurse only on sequences holding PRED.
\(Note: Generalized vars collaps to their values when passed to
functions.\)
Examples:
(let ((l '(((-1 (0))) 1 2 3 (4 5 (((6)))))))
(do-nodes (i (when (and (numberp i) (> i 2)) (incf i 1000))) l)
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)
`(labels
((helper (tree)
(loop for ,var being the elements of-ref tree do
(progn
,@code
(when (and (or (is-list-p ,var) (arrayp ,var))
(,pred ,var))
(helper ,var))))
tree))
(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,
dunno.
In GNU Emacs 24.1.50.1 (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'
'--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.1.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.1.50/site-lisp:/usr/share/emacs/site-lisp'
'--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'
'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g
-Wl,--as-needed -znocombreloc' 'CPPFLAGS=-D_FORTIFY_SOURCE=2''
- bug#11652: 24.1.50; CL: diverse `labels' related code doesn't work anymore,
Michael Heerdegen <=