[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] Bug: symbol function's definition is null : signum [7.5]
From: |
David Maus |
Subject: |
Re: [O] Bug: symbol function's definition is null : signum [7.5] |
Date: |
Sun, 26 Jun 2011 21:32:24 +0200 |
User-agent: |
Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (Gojō) APEL/10.8 Emacs/23.2 (i486-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) |
At Fri, 15 Apr 2011 18:40:51 -0400,
Nick Dokos wrote:
>
> Sylvain Beucler <address@hidden> wrote:
>
> > When using S-<up> 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.... address@hidden
Email..... address@hidden
pgpjHxVFhUp1i.pgp
Description: PGP signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [O] Bug: symbol function's definition is null : signum [7.5],
David Maus <=