GNU bug report logs -
#10125
24.0.91; package.el (org): Macros in tar packages & order of byte compilation
Previous Next
Full log
Message #80 received at submit <at> debbugs.gnu.org (full text, mbox):
Achim Gratz writes:
> Stefan Monnier writes:
>> Yes, this subroutine is never directly called from C, so placing an
>> advice should work just fine.
>
> OK, I'll give it a try.
Here's what I've come up with:
--8<---------------cut here---------------start------------->8---
;; some parts of Org might already have been used from a different
;; place, try to reload these parts from the current load-path
(defadvice require (before org-require-reload-when-shadowed
(feature &optional filename noerror)
activate compile preactivate)
"Check whether a required feature has been shadowed by changing
`load-path' after it has been loaded and reload that feature from
current load-path in this case."
(when (featurep feature)
(let ((feature-name (or filename (symbol-name feature))))
(when (string-match "^\\(org\\|ob\\)[.-]" feature-name)
(let ((feature-lib (file-name-directory (or (locate-library feature-name) "")))
(feature-dir (file-name-directory (feature-file feature))))
;(message "require-reload-when shadowed %s\n\t%s\n\t%s" feature-name feature-lib feature-dir)
(when (not (string= feature-lib feature-dir))
(message "Reloading %s" feature-name)
(unload-feature feature t)))))))
(require 'org-macs)
(require 'org-compat)
(require 'org-entities)
(require 'org-faces)
(require 'org-list)
(require 'org-pcomplete)
(require 'org-src)
(require 'org-footnote)
;; babel
(require 'ob)
(eval-and-compile (ad-unadvise 'require))
--8<---------------cut here---------------end--------------->8---
This takes care of a situation when Org is activated after some parts of
it have already been loaded (maybe via autoload) and the load-path has
been changed inbetween. This uses unload-feature although it would
probably work to just (setq features (delq feature features)).
For package manager, a slightly more general version of the above (not
conditionalized on the feature starting with "org" or "ob") could be
used around the package compilation. I haven't yet tried this, though.
Regards,
Achim.
--
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+
Wavetables for the Waldorf Blofeld:
http://Synth.Stromeko.net/Downloads.html#BlofeldUserWavetables
This bug report was last modified 9 years and 304 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.