On Wed, Nov 14 2012, Ethan Glasser-Camp <ethan.glasser.camp@gmail.com> wrote: > Damien Cassou <damien.cassou@gmail.com> writes: > >> 4) distribute the dependency with the rest of notmuch (in a separate >> "fallback-libs/" directory) and load it only when requiring the >> library with the standard load-path does not work. Jonas Bernoulli >> gave me a way to do that: >> >> ,---- >> | (or (require 'THE-LIB nil t) >> | (let ((load-path >> | (cons (expand-file-name >> | "fallback-libs" >> | (file-name-directory (or load-file-name buffer-file-name))) >> | load-path))) >> | (require 'THE-LIB))) >> `---- >> >> What do you think? > > Why not just append it to the *end* of load-path? Then it won't shadow > anything. The scope of the load-path change is for just this one require -- if header-button required some other modules, the fallback-libs version should be preferred (in case exists) over loading elsewehere in this case header-button is loaded from fallback-libs. But, maybe we should be more spesific there and use something like: (let ((dir (expand-file-name "notmuch-deps" (file-name-directory (or load-file-name buffer-file-name))))) (unless (require 'header-button (concat dir "/header-button.elc") t) (require 'header-button (concat dir "/header-button.el") nil))) (if we ever agree to do either kind of loading...) > Ethan Tomi