emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Achim Gratz <Stromeko@nexgo.de>
To: emacs-orgmode@gnu.org
Subject: Re: [BUG] `org-load-noerror-mustsuffix´ is not defined, introduced by 5484a33b
Date: Fri, 11 Jan 2013 20:30:16 +0100	[thread overview]
Message-ID: <87fw27cybb.fsf@Rainer.invalid> (raw)
In-Reply-To: 87obgvzlah.fsf@bzg.ath.cx

Bastien writes:
> Yep, typo.  But the 'mustsuffix trick is to force loading ".el" (and
> not ".elc" files, right?  My question is: when is it necessary?

The 'mustsuffix argument prevents consideration of the filename without
the extensions listed in load-suffixes.  In other words, when you are
trying to load feature 'x, a file named just "x" does not satisfy the
requirement as it otherwise would.  On the other hand, it does not
prevent using "x.el.gz" instead of "x.el" as 'nosuffix does.

> I'm trying to consider real use-cases, with a sense of "real" close to
> "not so improbable".  I don't see why Org should take care of users
> who are pervert enough to gzip their org-loaddefs.el... but maybe I
> lack imagination, as usual :)

This is a real use case.  Installation with compression is a standard
feature of Emacs and just currently not supported by the build system,
mainly due to "little" problems like the above.  Emacs' current
installer itself compresses the source files only when there's a
byte-compiled file around, so any recent Emacs would automatically have
a file "org-loaddefs.el" in load-path, although some packagers have
their own ideas about this.  You should generally expect that the
installed files, whether sources or byte-compiled files could have been
compressed.

Now if someone decides to compress the lisp folder for their own org
installation and aren't taking care to exclude the autoload files, then
this is what they get from 'emacs -Q":

--8<---------------cut here---------------start------------->8---
(require 'find-func)
=> find-func
(find-library-name "org-loaddefs.el")
=> "/usr/local/share/emacs/24.2/lisp/org/org-loaddefs.el"
(add-to-list 'load-path "~/lisp/org-mode/lisp")
=> (~/lisp/org-mode/lisp …)
(find-library-name "org-loaddefs.el")
"/home/gratz/lisp/org-mode/lisp/org-loaddefs.el.gz"
(load "org-loaddefs.el" t nil t)
=> Loading /usr/local/share/emacs/24.2/lisp/org/org-loaddefs.el (source)...done
--8<---------------cut here---------------end--------------->8---

This is decidedly not what you wanted to achieve and outright devious,
given that you don't even get the hint from *Messages* what file
actually got loaded when the second argument to load is also "t".

--8<---------------cut here---------------start------------->8---
(require 'org-macs)
(let ((load-suffixes (list ".el")))
  (org-load-noerror-mustsuffix "org-loaddefs"))
=> Loading /home/gratz/lisp/org-mode/lisp/org-loaddefs.el.gz...
=> uncompressing org-loaddefs.el.gz...done
=> Loading /home/gratz/lisp/org-mode/lisp/org-loaddefs.el.gz...done
--8<---------------cut here---------------end--------------->8---

This on the other hand is what was intended to happen.

The problem is that for the previous discussion "(require 'org-macs)"
was effectively a NOP because 'org-macs was already loaded from a
different place.  If you want to fix it, then that's where the effort
should be directed (org-reload already does that and it's not difficult
to do here either).

[…]
> But I know your answer, `find-library' does not give the library from
> which functions have been autoloaded.

I might harp too much about this, but it's not the answer to this
question.  But see above how find-library can fool you when you are
actually using load with optional arguments instead.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Wavetables for the Terratec KOMPLEXER:
http://Synth.Stromeko.net/Downloads.html#KomplexerWaves

  reply	other threads:[~2013-01-11 19:30 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-10 16:08 [BUG] `org-load-noerror-mustsuffix´ is not defined, introduced by 5484a33b Eric Schulte
2013-01-10 16:29 ` Bastien
2013-01-10 16:38   ` Eric Schulte
2013-01-10 17:09     ` Bastien
2013-01-10 17:29       ` Eric Schulte
2013-01-10 17:44         ` Nick Dokos
2013-01-10 18:13           ` Eric Schulte
2013-01-10 18:44             ` Bastien
2013-01-10 19:28               ` Eric Schulte
2013-01-10 20:05                 ` Bastien
2013-01-10 21:12                   ` Eric Schulte
2013-01-10 22:24                     ` Eric Schulte
2013-01-10 22:45                       ` Nick Dokos
2013-01-10 23:05                       ` Bastien
2013-01-10 23:44                         ` Eric Schulte
2013-01-11  7:04                           ` Bastien
2013-01-11 12:28                             ` Bastien
2013-01-11 15:41                               ` Eric Schulte
2013-01-11 16:31                                 ` Bastien
2013-01-11 16:50                                 ` Achim Gratz
2013-01-11 16:40                               ` Achim Gratz
2013-01-11 16:58                                 ` Bastien
2013-01-11 17:04                                   ` Achim Gratz
2013-01-11 17:23                                     ` Bastien
2013-01-11 19:30                                       ` Achim Gratz [this message]
2013-01-11 20:19                                         ` Eric Schulte
2013-01-11 20:48                                           ` Achim Gratz
2013-01-12  6:57                                           ` Bastien
2013-01-12  6:56                                         ` Bastien
2013-01-12  7:44                                           ` Achim Gratz
2013-01-12  8:40                                             ` Bastien
2013-01-12 10:27                                               ` Achim Gratz
2013-01-12 11:03                                         ` Achim Gratz
2013-01-12 13:35                                           ` Bastien
2013-01-12 15:49                                             ` Achim Gratz
2013-01-12 16:06                                               ` Bastien
2013-01-12 16:17                                                 ` Achim Gratz
2013-01-12 16:12                                               ` Bastien
2013-01-12 16:24                                                 ` Achim Gratz
2013-01-11  9:12                           ` Achim Gratz
2013-01-10 23:27                       ` Stelian Iancu
2013-01-10 23:27                       ` Stelian Iancu
2013-01-10 20:09                 ` Achim Gratz
2013-01-10 22:30                   ` Eric Schulte
2013-01-10 22:55                     ` Nick Dokos
2013-01-11  8:58                     ` Achim Gratz
2013-01-10 19:37             ` Nick Dokos
2013-01-10 19:47 ` Achim Gratz
2013-01-13 22:08   ` Thorsten Jolitz
2013-01-13 23:06     ` Stelian Iancu
2013-01-13 23:22       ` Thorsten Jolitz
2013-01-14 21:44         ` Eric Schulte
2013-01-15  1:29           ` Thorsten Jolitz
2013-01-15  6:07             ` Eric Schulte
2013-01-15 11:31               ` Thorsten Jolitz
2013-01-15 12:22                 ` Nick Dokos
2013-01-15 13:36                   ` Thorsten Jolitz
2013-01-15 13:49                     ` Nick Dokos
2013-01-15 18:58                 ` Achim Gratz
2013-01-15 20:17                   ` Thorsten Jolitz

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=87fw27cybb.fsf@Rainer.invalid \
    --to=stromeko@nexgo.de \
    --cc=emacs-orgmode@gnu.org \
    /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).