unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Michael Heerdegen <michael_heerdegen@web.de>
To: 11652@debbugs.gnu.org
Subject: bug#11652: 24.1.50; CL: diverse `labels' related code doesn't work anymore
Date: Fri, 08 Jun 2012 17:23:56 +0200	[thread overview]
Message-ID: <874nqlu8s3.fsf@web.de> (raw)

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






             reply	other threads:[~2012-06-08 15:23 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-08 15:23 Michael Heerdegen [this message]
2012-06-10 20:32 ` bug#11652: 24.1.50; CL: diverse `labels' related code doesn't work anymore Michael Heerdegen
2012-06-11 20:50 ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=874nqlu8s3.fsf@web.de \
    --to=michael_heerdegen@web.de \
    --cc=11652@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).