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

* bug#11652: 24.1.50; CL: diverse `labels' related code doesn't work anymore
  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
  1 sibling, 0 replies; 3+ messages in thread
From: Michael Heerdegen @ 2012-06-10 20:32 UTC (permalink / raw)
  To: 11652

This bug breaks w3m!  If you try to load any url, you get
the following error:

error in process sentinel: w3m-process-sentinel: Symbol's function
definition is void: #:--post-body--60977

and the page will not be shown.  Here, the problem seems to be the
`labels' usage in the macro `w3m-process-do-with-temp-buffer'.


Michael.





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

* bug#11652: 24.1.50; CL: diverse `labels' related code doesn't work anymore
  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
  1 sibling, 0 replies; 3+ messages in thread
From: Stefan Monnier @ 2012-06-11 20:50 UTC (permalink / raw)
  To: michael_heerdegen; +Cc: 11652-done

>            (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)






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