emacs-bug-tracker
[Top][All Lists]
Advanced

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

[debbugs-tracker] bug#11652: closed (24.1.50; CL: diverse `labels' relat


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#11652: closed (24.1.50; CL: diverse `labels' related code doesn't work anymore)
Date: Mon, 11 Jun 2012 20:53:02 +0000

Your message dated Mon, 11 Jun 2012 16:50:15 -0400
with message-id <address@hidden>
and subject line Re: bug#11652: 24.1.50; CL: diverse `labels' related code 
doesn't work anymore
has caused the debbugs.gnu.org bug report #11652,
regarding 24.1.50; CL: diverse `labels' related code doesn't work anymore
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
11652: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11652
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: 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''




--- End Message ---
--- Begin Message --- Subject: Re: bug#11652: 24.1.50; CL: diverse `labels' related code doesn't work anymore Date: Mon, 11 Jun 2012 16:50:15 -0400 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux)
>            (apply
>             'add-dirs-to-load-path

> ==> Error: apply: Symbol's function definition is void:
> add-dirs-to-load-path

> This had worked before.

Yes, that was a bug: if you quote with ' then CL is not allowed to look
inside the quoted expression to replace this symbol with a lexical
reference to the function you've defined.

I.e. if you use (apply #'add-dirs-to-load-path ...) then it will work
like you want it.

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

Oops, thanks for catching this.  I've installed the patch below which
should fix it.

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

Yes, please complain to Debian that such compilation errors should not
prevent installation of packages.  Hopefully, at some point they will
understand that their current handling of errors is wrong, but for that
you need to make your voice heard (I already made mine heard a few times).


        Stefan


=== modified file 'lisp/emacs-lisp/cl-macs.el'
--- lisp/emacs-lisp/cl-macs.el  2012-06-11 20:35:00 +0000
+++ lisp/emacs-lisp/cl-macs.el  2012-06-11 20:43:31 +0000
@@ -1108,7 +1108,7 @@
                      (let ((temp-len (make-symbol "--cl-len--")))
                        (push (list temp-len `(length ,temp-seq))
                              loop-for-bindings)
-                       (push (list var `(elt ,temp-seq temp-idx))
+                       (push (list var `(elt ,temp-seq ,temp-idx))
                              cl--loop-symbol-macs)
                        (push `(< ,temp-idx ,temp-len) cl--loop-body))
                    (push (list var nil) loop-for-bindings)



--- End Message ---

reply via email to

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