After check your source code, I finally and with your theory: > Org doesn't load automatically.. it autoloads only if you open an Org file or call an org-loading function. After emacs -Q, if you do M-: (featurep 'org), you will get nil. So the user does get a change to set the load path as they want before any package gets loaded. I finally understand how it works. Yesterday, I use a crude way: delete Emacs built-in org/ directory. This works too. But I still take your method. Your method is the correct way. Thanks very much. [stardiviner] GPG key ID: 47C32433 IRC(freeenode): stardiviner Twitter: @numbchild Key fingerprint = 9BAA 92BC CDDD B9EF 3B36 CB99 B8C4 B8E5 47C3 2433 Blog: http://stardiviner.github.io/ On Wed, Jan 24, 2018 at 12:15 AM, Kaushal Modi wrote: > On Tue, Jan 23, 2018 at 11:09 AM numbchild@gmail.com > wrote: > >> Thanks for your advice. After your code inspiration. I got an idea. After >> test, it works fine. I try to load `use-package` and `(use-package org :pin >> manaul ..)` ahead of `(package-initialize)`. Half of the problem is solved. >> > > >> The another half of the problem is that Emacs still will load built-in >> org-mode in lisp/org/. I think I can't solve this problem essentially. >> Because I can't load before Emacs built-in library. Oops. >> > > Org doesn't load automatically.. it autoloads only if you open an Org file > or call an org-loading function. After emacs -Q, if you do M-: (featurep > 'org), you will get nil. So the user does get a change to set the load path > as they want before any package gets loaded. > > That's way, I tweak the load-path in the :preface section[1] in the org > use-package form. The load-path would be set exactly as I want before org > gets (auto)loaded. > > [1]: https://github.com/kaushalmodi/.emacs.d/blob/ > master/setup-files/setup-org.el > > > -- > > Kaushal Modi >