emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: David Maus <dmaus@ictsoc.de>
To: nicholas.dokos@hp.com
Cc: emacs-orgmode@gnu.org, Sylvain Beucler <beuc@beuc.net>, bzg@altern.org
Subject: Re: Bug: symbol function's definition is null : signum [7.5]
Date: Sun, 26 Jun 2011 21:32:24 +0200	[thread overview]
Message-ID: <87zkl4l77b.wl%dmaus@ictsoc.de> (raw)
In-Reply-To: <20159.1302907251@alphaville.americas.hpqcorp.net>

[-- Attachment #1: Type: text/plain, Size: 2860 bytes --]

At Fri, 15 Apr 2011 18:40:51 -0400,
Nick Dokos wrote:
>
> Sylvain Beucler <beuc@beuc.net> 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.... dmjena@jabber.org
Email..... dmaus@ictsoc.de

[-- Attachment #2: Type: application/pgp-signature, Size: 230 bytes --]

  parent reply	other threads:[~2011-06-26 19:32 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-13  8:04 Bug: symbol function's definition is null : signum [7.5] Sylvain Beucler
2011-04-15 22:40 ` Nick Dokos
2011-04-16  9:30   ` Sylvain Beucler
2011-06-26 19:32   ` David Maus [this message]
  -- strict thread matches above, loose matches on Subject: below --
2018-10-31 16:09 Jared Windover
2018-11-01 21:27 ` Nicolas Goaziou

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.orgmode.org/

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

  git send-email \
    --in-reply-to=87zkl4l77b.wl%dmaus@ictsoc.de \
    --to=dmaus@ictsoc.de \
    --cc=beuc@beuc.net \
    --cc=bzg@altern.org \
    --cc=emacs-orgmode@gnu.org \
    --cc=nicholas.dokos@hp.com \
    /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/org-mode.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).