unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#11652: 24.1.50; CL: diverse `labels' related code doesn't work anymore
@ 2012-06-08 15:23 Michael Heerdegen
  2012-06-10 20:32 ` Michael Heerdegen
  2012-06-11 20:50 ` Stefan Monnier
  0 siblings, 2 replies; 3+ messages in thread
From: Michael Heerdegen @ 2012-06-08 15:23 UTC (permalink / raw)
  To: 11652

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''






^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-06-11 20:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-08 15:23 bug#11652: 24.1.50; CL: diverse `labels' related code doesn't work anymore Michael Heerdegen
2012-06-10 20:32 ` Michael Heerdegen
2012-06-11 20:50 ` Stefan Monnier

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).