[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[O] bug#10125: RFE: require and load-path-shadowing
From: |
Achim Gratz |
Subject: |
[O] bug#10125: RFE: require and load-path-shadowing |
Date: |
Sat, 12 Jan 2013 11:15:40 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.2.91 (gnu/linux) |
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
- [O] bug#10125: RFE: require and load-path-shadowing, (continued)
- [O] bug#10125: RFE: require and load-path-shadowing, Glenn Morris, 2013/01/12
- Message not available
- Message not available
- [O] bug#10125: RFE: require and load-path-shadowing, Achim Gratz, 2013/01/13
- Message not available
- Message not available
- Message not available
- [O] bug#10125: RFE: require and load-path-shadowing, Achim Gratz, 2013/01/15
- [O] bug#10125: RFE: require and load-path-shadowing, Kevin Rodgers, 2013/01/16
- [O] bug#10125: RFE: require and load-path-shadowing, Andreas Schwab, 2013/01/16
- [O] bug#10125: RFE: require and load-path-shadowing, Kevin Rodgers, 2013/01/16
- Message not available
- Message not available
- [O] bug#10125: RFE: require and load-path-shadowing,
Achim Gratz <=
- [O] bug#10125: RFE: require and load-path-shadowing, Bastien, 2013/01/12
- [O] bug#10125: RFE: require and load-path-shadowing, Stefan Monnier, 2013/01/12
- [O] bug#10125: RFE: require and load-path-shadowing, Bastien, 2013/01/12
- [O] bug#10125: RFE: require and load-path-shadowing, Stefan Monnier, 2013/01/12
- Message not available
- [O] bug#10125: RFE: require and load-path-shadowing, Achim Gratz, 2013/01/12
- Message not available
- [O] bug#10125: RFE: require and load-path-shadowing, Bastien, 2013/01/12