Re: [O] Bug: symbol function's definition is null : signum [7.5]
Hello, Jared Windover writes: > I was still seeing this error. Switching signum to cl-signum in org.el > fixed it. Fixed. Thank you. Regards, -- Nicolas Goaziou
Re: [O] Bug: symbol function's definition is null : signum [7.5]
I was still seeing this error. Switching signum to cl-signum in org.el fixed it. -Jared
Re: [O] Bug: symbol function's definition is null : signum [7.5]
At Fri, 15 Apr 2011 18:40:51 -0400, Nick Dokos wrote: > > Sylvain Beucler wrote: > > > When using S- to modify a date with an our range in Org 7.5, I get > > "symbol function's definition is null : signum". > > > > E.g. <2011-03-10 jeu. 10:30-11:30> > > > > It appears that (org-modify-ts-extra) is using this function, but > > unlike in CL isn't not an elisp built-in :) > > > > As a work-around I added an internal defun: > > (defun org-modify-ts-extra (s pos n dm) > > "Change the different parts of the lead-time and repeat fields in > > timestamp." > > (defun signum (x) > > (cond > > ((> x 0) 1) > > ((< x 0) -1) > > ((= x 0) 0))) > > [...] > > > > What version of emacs are you using? > > For emacs 24 at least, it's defined in cl-extra.el (which is distributed > with emacs itself). That in turn is loaded when cl is loaded and there > are plenty of places where org does a (require 'cl), e.g. when loading > org.el or org-agenda.el; but it may be that you have found a path in > that does not do so, however unlikely that scenario is. > > So you can probably resolve the problem by adding a (require 'cl) > somewhere in your .emacs. But if you can, it would be worthwhile to > figure out how you end up in that situation, so the (require 'cl) can be > added to the appropriate place. I can confirm this problem with Org-mode version 7.5 (release_7.5.456.g4e038) GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0) of 2010-12-11 on raven, modified by Debian But only when running byte-compiled code. The problem is, that signum is called at runtime, but not compile time but the compiler warning is suppressed by the `org-no-warnings' macro. For the problem with signum see commit e144f53c9a7362a65f7f3e924a965da70c9bfd58 The function is not declared inline by cl -- we /could/ override cl's setting and declare the function inline when compiling: (eval-when (compile) (proclaim '(inline signum))) But [[info:cl#Declarations]] states: The following declarations are all equivalent. Note that the `defsubst' form is a convenient way to define a function and declare it inline all at once. (declaim (inline foo bar)) (eval-when (compile load eval) (proclaim '(inline foo bar))) (defsubst foo (...) ...) ; instead of defun *Please note:* this declaration remains in effect after the containing source file is done. It is correct to use it to request that a function you have defined should be inlined, but it is impolite to use it to request inlining of an external function. ^ So this would be "inpolite". Best, -- David -- OpenPGP... 0x99ADB83B5A4478E6 Jabber dmj...@jabber.org Email. dm...@ictsoc.de pgparH6AJlnCT.pgp Description: PGP signature
Re: [O] Bug: symbol function's definition is null : signum [7.5]
On Fri, Apr 15, 2011 at 06:40:51PM -0400, Nick Dokos wrote: > Sylvain Beucler wrote: > > > When using S- to modify a date with an our range in Org 7.5, I get > > "symbol function's definition is null : signum". > > > > E.g. <2011-03-10 jeu. 10:30-11:30> > > > > It appears that (org-modify-ts-extra) is using this function, but > > unlike in CL isn't not an elisp built-in :) > > > > As a work-around I added an internal defun: > > (defun org-modify-ts-extra (s pos n dm) > > "Change the different parts of the lead-time and repeat fields in > > timestamp." > > (defun signum (x) > > (cond > > ((> x 0) 1) > > ((< x 0) -1) > > ((= x 0) 0))) > > [...] > > > > What version of emacs are you using? > > For emacs 24 at least, it's defined in cl-extra.el (which is distributed > with emacs itself). That in turn is loaded when cl is loaded and there > are plenty of places where org does a (require 'cl), e.g. when loading > org.el or org-agenda.el; but it may be that you have found a path in > that does not do so, however unlikely that scenario is. > > So you can probably resolve the problem by adding a (require 'cl) > somewhere in your .emacs. But if you can, it would be worthwhile to > figure out how you end up in that situation, so the (require 'cl) can be > added to the appropriate place. > > If you are using emacs 23 or earlier, the above might not be applicable, > but you probably can still resolve the problem the same way: adding a > (require 'cl) in your .emacs. If that does not resolve it, then adding a > (require 'cl-extra) as well should certainly do so. I use 23.2.1 (http://packages.debian.org/squeeze/emacs). Adding (require 'el) works. I tried on another box with the same Emacs (23.2.1 - http://packages.debian.org/wheezy/emacs) and Org, roughly the same configuration, and I can't reproduce the problem, so it's a bit of a mystery for me. Thanks for your answer. -- Sylvain
Re: [O] Bug: symbol function's definition is null : signum [7.5]
Sylvain Beucler wrote: > When using S- to modify a date with an our range in Org 7.5, I get > "symbol function's definition is null : signum". > > E.g. <2011-03-10 jeu. 10:30-11:30> > > It appears that (org-modify-ts-extra) is using this function, but > unlike in CL isn't not an elisp built-in :) > > As a work-around I added an internal defun: > (defun org-modify-ts-extra (s pos n dm) > "Change the different parts of the lead-time and repeat fields in > timestamp." > (defun signum (x) > (cond > ((> x 0) 1) > ((< x 0) -1) > ((= x 0) 0))) > [...] > What version of emacs are you using? For emacs 24 at least, it's defined in cl-extra.el (which is distributed with emacs itself). That in turn is loaded when cl is loaded and there are plenty of places where org does a (require 'cl), e.g. when loading org.el or org-agenda.el; but it may be that you have found a path in that does not do so, however unlikely that scenario is. So you can probably resolve the problem by adding a (require 'cl) somewhere in your .emacs. But if you can, it would be worthwhile to figure out how you end up in that situation, so the (require 'cl) can be added to the appropriate place. If you are using emacs 23 or earlier, the above might not be applicable, but you probably can still resolve the problem the same way: adding a (require 'cl) in your .emacs. If that does not resolve it, then adding a (require 'cl-extra) as well should certainly do so. Nick