In my last thread, I tried to convince you that we shouldn't be loading
the loaddefs file and instead we should just use 'declare-function'.  Ya
that's a pretty stupid take.  Doing that makes it way too easy to rely
on functions that might not be loaded yet.

Honestly I'm starting to think we should get rid of as many
'declare-function' calls as possible.  The attached patch successfully
removes 216 of them by loading the loaddefs file.

>From d4160678cf75ca07714d8368b4c46ee4489d791f Mon Sep 17 00:00:00 2001
From: Morgan Smith <[email protected]>
Date: Thu, 8 Oct 2026 16:17:22 -0400
Subject: [PATCH] Load loaddefs instead of using 'declare-function'

If we require the loaddefs file, then the autoloaded functions
contained within will be known to Emacs.  We can then remove any
unnecessary 'declare-function' calls.

* lisp/ob-C.el:
* lisp/ob-R.el:
* lisp/ob-awk.el:
* lisp/ob-calc.el:
* lisp/ob-clojure.el:
* lisp/ob-comint.el:
* lisp/ob-core.el:
* lisp/ob-css.el:
* lisp/ob-ditaa.el:
* lisp/ob-dot.el:
* lisp/ob-emacs-lisp.el:
* lisp/ob-eshell.el:
* lisp/ob-eval.el:
* lisp/ob-exp.el:
* lisp/ob-forth.el:
* lisp/ob-fortran.el:
* lisp/ob-gnuplot.el:
* lisp/ob-groovy.el:
* lisp/ob-haskell.el:
* lisp/ob-java.el:
* lisp/ob-js.el:
* lisp/ob-julia.el:
* lisp/ob-latex.el:
* lisp/ob-lilypond.el:
* lisp/ob-lisp.el:
* lisp/ob-lob.el:
* lisp/ob-lua.el:
* lisp/ob-makefile.el:
* lisp/ob-matlab.el:
* lisp/ob-maxima.el:
* lisp/ob-ocaml.el:
* lisp/ob-octave.el:
* lisp/ob-org.el:
* lisp/ob-perl.el:
* lisp/ob-plantuml.el:
* lisp/ob-processing.el:
* lisp/ob-python.el:
* lisp/ob-ref.el:
* lisp/ob-ruby.el:
* lisp/ob-sass.el:
* lisp/ob-scheme.el:
* lisp/ob-screen.el:
* lisp/ob-sed.el:
* lisp/ob-shell.el:
* lisp/ob-sql.el:
* lisp/ob-sqlite.el:
* lisp/ob-table.el:
* lisp/ob-tangle.el:
* lisp/ob.el:
* lisp/oc-basic.el:
* lisp/oc-biblatex.el:
* lisp/oc-bibtex.el:
* lisp/oc-csl.el:
* lisp/oc-natbib.el:
* lisp/oc.el:
* lisp/ol-bbdb.el:
* lisp/ol-bibtex.el:
* lisp/ol-docview.el:
* lisp/ol-doi.el:
* lisp/ol-eshell.el:
* lisp/ol-eww.el:
* lisp/ol-gnus.el:
* lisp/ol-info.el:
* lisp/ol-irc.el:
* lisp/ol-man.el:
* lisp/ol-mhe.el:
* lisp/ol-rmail.el:
* lisp/ol-w3m.el:
* lisp/ol.el:
* lisp/org-agenda.el:
* lisp/org-archive.el:
* lisp/org-attach-git.el:
* lisp/org-attach.el:
* lisp/org-capture.el:
* lisp/org-clock.el:
* lisp/org-colview.el:
* lisp/org-compat.el:
* lisp/org-crypt.el:
* lisp/org-ctags.el:
* lisp/org-cycle.el:
* lisp/org-datetree.el:
* lisp/org-duration.el:
* lisp/org-element.el:
* lisp/org-entities.el:
* lisp/org-faces.el:
* lisp/org-feed.el:
* lisp/org-fold-core.el:
* lisp/org-fold.el:
* lisp/org-footnote.el:
* lisp/org-goto.el:
* lisp/org-habit.el:
* lisp/org-id.el:
* lisp/org-indent.el:
* lisp/org-inlinetask.el:
* lisp/org-keys.el:
* lisp/org-lint.el:
* lisp/org-list.el:
* lisp/org-macro.el:
* lisp/org-macs.el:
* lisp/org-mobile.el:
* lisp/org-mouse.el:
* lisp/org-num.el:
* lisp/org-pcomplete.el:
* lisp/org-persist.el:
* lisp/org-plot.el:
* lisp/org-protocol.el:
* lisp/org-refile.el:
* lisp/org-src.el:
* lisp/org-table.el:
* lisp/org-tempo.el:
* lisp/org-timer.el:
* lisp/ox-ascii.el:
* lisp/ox-beamer.el:
* lisp/ox-html.el:
* lisp/ox-icalendar.el:
* lisp/ox-koma-letter.el:
* lisp/ox-latex.el:
* lisp/ox-man.el:
* lisp/ox-md.el:
* lisp/ox-odt.el:
* lisp/ox-org.el:
* lisp/ox-publish.el:
* lisp/ox-texinfo.el:
* lisp/ox.el:
Require 'org-loaddefs' and remove unnecessary 'declare-function'
calls.
---
 lisp/ob-C.el           |  2 ++
 lisp/ob-R.el           |  3 ++-
 lisp/ob-awk.el         |  3 ++-
 lisp/ob-calc.el        |  2 ++
 lisp/ob-clojure.el     |  2 ++
 lisp/ob-comint.el      |  3 ++-
 lisp/ob-core.el        | 12 ++-------
 lisp/ob-css.el         |  2 ++
 lisp/ob-ditaa.el       |  2 ++
 lisp/ob-dot.el         |  2 ++
 lisp/ob-emacs-lisp.el  |  2 ++
 lisp/ob-eshell.el      |  2 ++
 lisp/ob-eval.el        |  2 ++
 lisp/ob-exp.el         |  5 ++--
 lisp/ob-forth.el       |  2 ++
 lisp/ob-fortran.el     |  2 ++
 lisp/ob-gnuplot.el     |  3 ++-
 lisp/ob-groovy.el      |  2 ++
 lisp/ob-haskell.el     |  6 ++---
 lisp/ob-java.el        |  2 ++
 lisp/ob-js.el          |  2 ++
 lisp/ob-julia.el       |  3 ++-
 lisp/ob-latex.el       |  2 ++
 lisp/ob-lilypond.el    |  2 ++
 lisp/ob-lisp.el        |  2 ++
 lisp/ob-lob.el         |  4 +--
 lisp/ob-lua.el         |  2 ++
 lisp/ob-makefile.el    |  2 ++
 lisp/ob-matlab.el      |  2 ++
 lisp/ob-maxima.el      |  2 ++
 lisp/ob-ocaml.el       |  2 ++
 lisp/ob-octave.el      |  2 ++
 lisp/ob-org.el         |  4 +--
 lisp/ob-perl.el        |  2 ++
 lisp/ob-plantuml.el    |  2 ++
 lisp/ob-processing.el  |  2 ++
 lisp/ob-python.el      |  2 ++
 lisp/ob-ref.el         |  5 ++--
 lisp/ob-ruby.el        |  2 ++
 lisp/ob-sass.el        |  2 ++
 lisp/ob-scheme.el      |  2 ++
 lisp/ob-screen.el      |  2 ++
 lisp/ob-sed.el         |  2 ++
 lisp/ob-shell.el       |  3 ++-
 lisp/ob-sql.el         |  5 ++--
 lisp/ob-sqlite.el      |  5 ++--
 lisp/ob-table.el       |  2 ++
 lisp/ob-tangle.el      |  3 ++-
 lisp/ob.el             |  2 ++
 lisp/oc-basic.el       |  7 ++----
 lisp/oc-biblatex.el    |  3 ++-
 lisp/oc-bibtex.el      |  3 ++-
 lisp/oc-csl.el         |  5 ++--
 lisp/oc-natbib.el      |  3 ++-
 lisp/oc.el             |  5 ++--
 lisp/ol-bbdb.el        |  2 ++
 lisp/ol-bibtex.el      |  3 ++-
 lisp/ol-docview.el     |  3 ++-
 lisp/ol-doi.el         |  2 ++
 lisp/ol-eshell.el      |  2 ++
 lisp/ol-eww.el         |  2 ++
 lisp/ol-gnus.el        |  2 ++
 lisp/ol-info.el        |  2 ++
 lisp/ol-irc.el         |  2 ++
 lisp/ol-man.el         |  2 ++
 lisp/ol-mhe.el         |  2 ++
 lisp/ol-rmail.el       |  2 ++
 lisp/ol-w3m.el         |  2 ++
 lisp/ol.el             | 12 ++-------
 lisp/org-agenda.el     |  8 ++----
 lisp/org-archive.el    |  3 ++-
 lisp/org-attach-git.el |  2 ++
 lisp/org-attach.el     |  2 ++
 lisp/org-capture.el    |  9 ++-----
 lisp/org-clock.el      |  2 ++
 lisp/org-colview.el    |  4 +--
 lisp/org-compat.el     |  8 ++----
 lisp/org-crypt.el      |  2 ++
 lisp/org-ctags.el      |  2 ++
 lisp/org-cycle.el      |  5 ++--
 lisp/org-datetree.el   |  2 ++
 lisp/org-duration.el   |  2 ++
 lisp/org-element.el    |  2 ++
 lisp/org-entities.el   |  3 ++-
 lisp/org-faces.el      |  2 ++
 lisp/org-feed.el       |  2 ++
 lisp/org-fold-core.el  |  2 ++
 lisp/org-fold.el       |  3 ++-
 lisp/org-footnote.el   |  4 +--
 lisp/org-goto.el       |  2 ++
 lisp/org-habit.el      |  2 ++
 lisp/org-id.el         |  3 ++-
 lisp/org-indent.el     |  2 ++
 lisp/org-inlinetask.el |  2 ++
 lisp/org-keys.el       | 54 ++---------------------------------------
 lisp/org-lint.el       |  2 ++
 lisp/org-list.el       | 10 ++------
 lisp/org-macro.el      |  3 ++-
 lisp/org-macs.el       |  3 ++-
 lisp/org-mobile.el     |  2 ++
 lisp/org-mouse.el      |  2 ++
 lisp/org-num.el        |  2 ++
 lisp/org-pcomplete.el  |  3 ++-
 lisp/org-persist.el    |  2 ++
 lisp/org-plot.el       |  2 ++
 lisp/org-protocol.el   |  2 ++
 lisp/org-refile.el     |  2 ++
 lisp/org-src.el        |  5 ++--
 lisp/org-table.el      | 10 ++------
 lisp/org-tempo.el      |  2 ++
 lisp/org-timer.el      |  2 ++
 lisp/org.el            | 55 ------------------------------------------
 lisp/ox-ascii.el       |  2 ++
 lisp/ox-beamer.el      |  2 ++
 lisp/ox-html.el        |  2 ++
 lisp/ox-icalendar.el   |  2 ++
 lisp/ox-koma-letter.el |  2 ++
 lisp/ox-latex.el       |  2 ++
 lisp/ox-man.el         |  2 ++
 lisp/ox-md.el          |  2 ++
 lisp/ox-odt.el         |  2 ++
 lisp/ox-org.el         |  2 ++
 lisp/ox-publish.el     |  2 ++
 lisp/ox-texinfo.el     |  2 ++
 lisp/ox.el             |  6 ++---
 125 files changed, 248 insertions(+), 226 deletions(-)

diff --git a/lisp/ob-C.el b/lisp/ob-C.el
index 416a61aff..d79005189 100644
--- a/lisp/ob-C.el
+++ b/lisp/ob-C.el
@@ -36,6 +36,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cc-mode)
 (require 'ob)
 (require 'org-macs)
diff --git a/lisp/ob-R.el b/lisp/ob-R.el
index 2d6492421..0701aa3f7 100644
--- a/lisp/ob-R.el
+++ b/lisp/ob-R.el
@@ -32,12 +32,13 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ob)
 
 (require 'subr-x) ; For `string-trim-right', Emacs < 28
 
-(declare-function orgtbl-to-tsv "org-table" (table params))
 (declare-function run-ess-r "ext:ess-r-mode" (&optional start-args))
 (declare-function ess-make-buffer-current "ext:ess-inf" ())
 (declare-function ess-eval-buffer "ext:ess-inf" (vis))
diff --git a/lisp/ob-awk.el b/lisp/ob-awk.el
index 02fd09b5f..0e078c324 100644
--- a/lisp/ob-awk.el
+++ b/lisp/ob-awk.el
@@ -36,11 +36,12 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-compat)
 
 (declare-function org-babel-ref-resolve "ob-ref" (ref))
-(declare-function orgtbl-to-generic "org-table" (table params))
 
 (defvar org-babel-tangle-lang-exts)
 (add-to-list 'org-babel-tangle-lang-exts '("awk" . "awk"))
diff --git a/lisp/ob-calc.el b/lisp/ob-calc.el
index 1126180d8..2930a13fc 100644
--- a/lisp/ob-calc.el
+++ b/lisp/ob-calc.el
@@ -31,6 +31,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-macs)
 (require 'calc)
diff --git a/lisp/ob-clojure.el b/lisp/ob-clojure.el
index d65f7ba08..8664d61f0 100644
--- a/lisp/ob-clojure.el
+++ b/lisp/ob-clojure.el
@@ -50,6 +50,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (declare-function cider-current-connection "ext:cider-client" (&optional type))
diff --git a/lisp/ob-comint.el b/lisp/ob-comint.el
index e62c21f09..30dc9d358 100644
--- a/lisp/ob-comint.el
+++ b/lisp/ob-comint.el
@@ -34,13 +34,14 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob-core)
 (require 'org-compat)
 (require 'org-element-ast)
 
 (require 'comint)
 
-(declare-function org-element-context "org-element" (&optional element))
 (defvar org-element-inline-src-block-regexp)
 
 (defun org-babel-comint-buffer-livep (buffer)
diff --git a/lisp/ob-core.el b/lisp/ob-core.el
index e525b8c34..69adc6cec 100644
--- a/lisp/ob-core.el
+++ b/lisp/ob-core.el
@@ -29,6 +29,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ob-eval)
 (require 'org-macs)
@@ -47,9 +49,7 @@ org-link-file-path-type
 (defvar org-src-lang-modes)
 (defvar org-babel-tangle-uncomment-comments)
 
-(declare-function org-attach-dir "org-attach" (&optional create-if-not-exists-p no-fs-check))
 (declare-function org-at-table-p "org-table" (&optional table-type))
-(declare-function org-babel-lob-execute-maybe "ob-lob" ())
 (declare-function org-babel-ref-goto-headline-id "ob-ref" (id))
 (declare-function org-babel-ref-headline-body "ob-ref" ())
 (declare-function org-babel-ref-parse "ob-ref" (assignment))
@@ -59,8 +59,6 @@ org-babel-tangle-uncomment-comments
 (declare-function org-edit-src-code "org-src" (&optional code edit-buffer-name))
 (declare-function org-edit-src-exit "org-src"  ())
 (declare-function org-src-preserve-indentation-p "org-src" (&optional node))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
-(declare-function org-element-context "org-element" (&optional element))
 (declare-function org-element-normalize-string "org-element" (s &optional keep-newlines))
 (declare-function org-element-property "org-element-ast" (property node))
 (declare-function org-element-begin "org-element" (node))
@@ -71,7 +69,6 @@ org-babel-tangle-uncomment-comments
 (declare-function org-element-parent "org-element-ast" (node))
 (declare-function org-element-type "org-element-ast" (node &optional anonymous))
 (declare-function org-element-type-p "org-element-ast" (node &optional types))
-(declare-function org-element-interpret-data "org-element" (data))
 (declare-function org-entry-get "org" (pom property &optional inherit literal-nil))
 (declare-function org-escape-code-in-region "org-src" (beg end))
 (declare-function org-forward-heading-same-level "org" (arg &optional invisible-ok))
@@ -90,11 +87,6 @@ org-babel-tangle-uncomment-comments
 (declare-function org-src-coderef-regexp "org-src" (fmt &optional label))
 (declare-function org-src-get-lang-mode "org-src" (lang))
 (declare-function org-table-align "org-table" ())
-(declare-function org-table-convert-region "org-table" (beg0 end0 &optional separator))
-(declare-function org-table-end "org-table" (&optional table-type))
-(declare-function org-table-to-lisp "org-table" (&optional txt))
-(declare-function orgtbl-to-generic "org-table" (table params))
-(declare-function orgtbl-to-orgtbl "org-table" (table params))
 
 (defgroup org-babel nil
   "Code block evaluation and management in `org-mode' documents."
diff --git a/lisp/ob-css.el b/lisp/ob-css.el
index cf2b4efaa..99a1c2a21 100644
--- a/lisp/ob-css.el
+++ b/lisp/ob-css.el
@@ -31,6 +31,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (defvar org-babel-default-header-args:css '())
diff --git a/lisp/ob-ditaa.el b/lisp/ob-ditaa.el
index bad548640..c6dc33304 100644
--- a/lisp/ob-ditaa.el
+++ b/lisp/ob-ditaa.el
@@ -78,6 +78,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-compat)
 
diff --git a/lisp/ob-dot.el b/lisp/ob-dot.el
index fc760ac5f..81189d3a8 100644
--- a/lisp/ob-dot.el
+++ b/lisp/ob-dot.el
@@ -43,6 +43,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (defvar org-babel-default-header-args:dot
diff --git a/lisp/ob-emacs-lisp.el b/lisp/ob-emacs-lisp.el
index 43acc95b9..9aaa24d84 100644
--- a/lisp/ob-emacs-lisp.el
+++ b/lisp/ob-emacs-lisp.el
@@ -30,6 +30,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob-core)
 
 (defconst org-babel-header-args:emacs-lisp '((lexical . :any))
diff --git a/lisp/ob-eshell.el b/lisp/ob-eshell.el
index 4540f57ef..6cd0e57ac 100644
--- a/lisp/ob-eshell.el
+++ b/lisp/ob-eshell.el
@@ -31,6 +31,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'eshell)
 
diff --git a/lisp/ob-eval.el b/lisp/ob-eval.el
index b7b79a501..2a8495d2b 100644
--- a/lisp/ob-eval.el
+++ b/lisp/ob-eval.el
@@ -31,6 +31,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (eval-when-compile (require 'subr-x))  ; For `string-empty-p', Emacs < 29
 
 (defvar org-babel-error-buffer-name "*Org-Babel Error Output*"
diff --git a/lisp/ob-exp.el b/lisp/ob-exp.el
index eea51dcca..8ab1f1712 100644
--- a/lisp/ob-exp.el
+++ b/lisp/ob-exp.el
@@ -29,11 +29,10 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob-core)
 
-(declare-function org-babel-lob-get-info "ob-lob" (&optional datum no-eval))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
-(declare-function org-element-context "org-element" (&optional element))
 (declare-function org-element-property "org-element-ast" (property node))
 (declare-function org-element-begin "org-element" (node))
 (declare-function org-element-end "org-element" (node))
diff --git a/lisp/ob-forth.el b/lisp/ob-forth.el
index bf28e6a3d..bb96133e3 100644
--- a/lisp/ob-forth.el
+++ b/lisp/ob-forth.el
@@ -36,6 +36,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-macs)
 
diff --git a/lisp/ob-fortran.el b/lisp/ob-fortran.el
index 9b6b96137..aec95e02b 100644
--- a/lisp/ob-fortran.el
+++ b/lisp/ob-fortran.el
@@ -32,6 +32,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-macs)
 (require 'cc-mode)
diff --git a/lisp/ob-gnuplot.el b/lisp/ob-gnuplot.el
index eda902f9e..221dc5b71 100644
--- a/lisp/ob-gnuplot.el
+++ b/lisp/ob-gnuplot.el
@@ -43,11 +43,12 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-macs)
 
 (declare-function org-time-string-to-time "org" (s))
-(declare-function orgtbl-to-generic "org-table" (table params))
 (declare-function gnuplot-mode "ext:gnuplot-mode" ())
 (declare-function gnuplot-send-string-to-gnuplot "ext:gnuplot-mode" (str txt))
 (declare-function gnuplot-send-buffer-to-gnuplot "ext:gnuplot-mode" ())
diff --git a/lisp/ob-groovy.el b/lisp/ob-groovy.el
index b21618644..e03e29d69 100644
--- a/lisp/ob-groovy.el
+++ b/lisp/ob-groovy.el
@@ -35,6 +35,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (defvar org-babel-tangle-lang-exts) ;; Autoloaded
diff --git a/lisp/ob-haskell.el b/lisp/ob-haskell.el
index f0efb15cd..55e932c7c 100644
--- a/lisp/ob-haskell.el
+++ b/lisp/ob-haskell.el
@@ -43,6 +43,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-macs)
 (require 'comint)
@@ -312,10 +314,6 @@ org-babel-haskell-var-to-haskell
     (format "%S" var)))
 
 (defvar org-export-copy-to-kill-ring)
-(declare-function org-export-to-file "ox"
-		  (backend file
-			   &optional async subtreep visible-only body-only
-			   ext-plist post-process))
 (defun org-babel-haskell-export-to-lhs (&optional arg)
   "Export to a .lhs file with all haskell code blocks escaped.
 When called with a prefix argument the resulting
diff --git a/lisp/ob-java.el b/lisp/ob-java.el
index 4298dee36..7d79f7099 100644
--- a/lisp/ob-java.el
+++ b/lisp/ob-java.el
@@ -32,6 +32,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (defvar org-babel-tangle-lang-exts)
diff --git a/lisp/ob-js.el b/lisp/ob-js.el
index d025886fb..3d3b17681 100644
--- a/lisp/ob-js.el
+++ b/lisp/ob-js.el
@@ -42,6 +42,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (declare-function run-mozilla "ext:moz" (arg))
diff --git a/lisp/ob-julia.el b/lisp/ob-julia.el
index 0c73e144c..2d90e6628 100644
--- a/lisp/ob-julia.el
+++ b/lisp/ob-julia.el
@@ -35,10 +35,11 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ob)
 
-(declare-function orgtbl-to-csv "org-table" (table params))
 (declare-function julia "ext:ess-julia" (&optional start-args))
 (declare-function inferior-ess-send-input "ext:ess-inf" ())
 (declare-function ess-make-buffer-current "ext:ess-inf" ())
diff --git a/lisp/ob-latex.el b/lisp/ob-latex.el
index 930e218e6..ac70149a7 100644
--- a/lisp/ob-latex.el
+++ b/lisp/ob-latex.el
@@ -34,6 +34,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-macs)
 
diff --git a/lisp/ob-lilypond.el b/lisp/ob-lilypond.el
index b2517fc82..9ff2b4116 100644
--- a/lisp/ob-lilypond.el
+++ b/lisp/ob-lilypond.el
@@ -36,6 +36,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (declare-function org-fold-show-all "org-fold" (&optional types))
diff --git a/lisp/ob-lisp.el b/lisp/ob-lisp.el
index 2d005ee5e..86ae8be21 100644
--- a/lisp/ob-lisp.el
+++ b/lisp/ob-lisp.el
@@ -40,6 +40,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-macs)
 
diff --git a/lisp/ob-lob.el b/lisp/ob-lob.el
index ce102f840..de89130fb 100644
--- a/lisp/ob-lob.el
+++ b/lisp/ob-lob.el
@@ -29,13 +29,13 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ob-core)
 (require 'ob-table)
 
 (declare-function org-babel-ref-split-args "ob-ref" (arg-string))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
-(declare-function org-element-context "org-element" (&optional element))
 (declare-function org-element-property "org-element-ast" (property node))
 (declare-function org-element-type "org-element-ast" (node &optional anonymous))
 
diff --git a/lisp/ob-lua.el b/lisp/ob-lua.el
index 0870ead04..06b3e2bbc 100644
--- a/lisp/ob-lua.el
+++ b/lisp/ob-lua.el
@@ -30,6 +30,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-macs)
 (require 'cl-lib)
diff --git a/lisp/ob-makefile.el b/lisp/ob-makefile.el
index 0cd2e70af..e3896b109 100644
--- a/lisp/ob-makefile.el
+++ b/lisp/ob-makefile.el
@@ -31,6 +31,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (defvar org-babel-default-header-args:makefile '())
diff --git a/lisp/ob-matlab.el b/lisp/ob-matlab.el
index 9faf0faa0..a82381441 100644
--- a/lisp/ob-matlab.el
+++ b/lisp/ob-matlab.el
@@ -39,6 +39,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'ob-octave)
 
diff --git a/lisp/ob-maxima.el b/lisp/ob-maxima.el
index a55fcc695..e20127e93 100644
--- a/lisp/ob-maxima.el
+++ b/lisp/ob-maxima.el
@@ -35,6 +35,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (defconst org-babel-header-args:maxima
diff --git a/lisp/ob-ocaml.el b/lisp/ob-ocaml.el
index 0b8984b6f..6920aa37c 100644
--- a/lisp/ob-ocaml.el
+++ b/lisp/ob-ocaml.el
@@ -39,6 +39,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'comint)
 (require 'org-macs)
diff --git a/lisp/ob-octave.el b/lisp/ob-octave.el
index 5fb571329..371dc09a9 100644
--- a/lisp/ob-octave.el
+++ b/lisp/ob-octave.el
@@ -33,6 +33,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-macs)
 
diff --git a/lisp/ob-org.el b/lisp/ob-org.el
index eea7af43c..904efdded 100644
--- a/lisp/ob-org.el
+++ b/lisp/ob-org.el
@@ -31,10 +31,10 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
-(declare-function org-export-string-as "ox"
-		  (string backend &optional body-only ext-plist))
 
 (defvar org-babel-default-header-args:org
   '((:results . "raw silent") (:exports . "code"))
diff --git a/lisp/ob-perl.el b/lisp/ob-perl.el
index b1245e558..a0598f3b6 100644
--- a/lisp/ob-perl.el
+++ b/lisp/ob-perl.el
@@ -32,6 +32,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (defvar org-babel-tangle-lang-exts)
diff --git a/lisp/ob-plantuml.el b/lisp/ob-plantuml.el
index 3cc2ab0b8..00dde90ae 100644
--- a/lisp/ob-plantuml.el
+++ b/lisp/ob-plantuml.el
@@ -38,6 +38,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (defvar org-babel-default-header-args:plantuml
diff --git a/lisp/ob-processing.el b/lisp/ob-processing.el
index f11f15c7b..e05f759e2 100644
--- a/lisp/ob-processing.el
+++ b/lisp/ob-processing.el
@@ -55,6 +55,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (declare-function processing-sketch-run "ext:processing-mode" ())
diff --git a/lisp/ob-python.el b/lisp/ob-python.el
index 60211cf14..90f537b45 100644
--- a/lisp/ob-python.el
+++ b/lisp/ob-python.el
@@ -32,6 +32,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-macs)
 (require 'python)
diff --git a/lisp/ob-ref.el b/lisp/ob-ref.el
index 8ce1332ba..429c4d9f3 100644
--- a/lisp/ob-ref.el
+++ b/lisp/ob-ref.el
@@ -53,18 +53,17 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob-core)
 (require 'org-macs)
 (require 'cl-lib)
 
-(declare-function org-babel-lob-get-info "ob-lob" (&optional datum no-eval))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
 (declare-function org-element-property "org-element-ast" (property node))
 (declare-function org-element-post-affiliated "org-element" (node))
 (declare-function org-element-type "org-element-ast" (node &optional anonymous))
 (declare-function org-end-of-meta-data "org" (&optional full))
 (declare-function org-find-property "org" (property &optional value))
-(declare-function org-id-find-id-file "org-id" (id))
 (declare-function org-id-find-id-in-file "org-id" (id file &optional markerp))
 (declare-function org-in-commented-heading-p "org" (&optional no-inheritance element))
 (declare-function org-narrow-to-subtree "org" (&optional element))
diff --git a/lisp/ob-ruby.el b/lisp/ob-ruby.el
index 003fc809e..224f9c42e 100644
--- a/lisp/ob-ruby.el
+++ b/lisp/ob-ruby.el
@@ -39,6 +39,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-macs)
 
diff --git a/lisp/ob-sass.el b/lisp/ob-sass.el
index a7a29bf67..967f5e40f 100644
--- a/lisp/ob-sass.el
+++ b/lisp/ob-sass.el
@@ -42,6 +42,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (defvar org-babel-default-header-args:sass '())
diff --git a/lisp/ob-scheme.el b/lisp/ob-scheme.el
index 857edfa2b..427f0175d 100644
--- a/lisp/ob-scheme.el
+++ b/lisp/ob-scheme.el
@@ -42,6 +42,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'geiser nil t)
 (require 'geiser-impl nil t)
diff --git a/lisp/ob-screen.el b/lisp/ob-screen.el
index 37feda8f6..178abecf4 100644
--- a/lisp/ob-screen.el
+++ b/lisp/ob-screen.el
@@ -38,6 +38,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (defvar org-babel-screen-location "screen"
diff --git a/lisp/ob-sed.el b/lisp/ob-sed.el
index 331302b6f..3e56b4d23 100644
--- a/lisp/ob-sed.el
+++ b/lisp/ob-sed.el
@@ -44,6 +44,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
 (defvar org-babel-sed-command "sed"
diff --git a/lisp/ob-shell.el b/lisp/ob-shell.el
index e3767ac06..add2b7d07 100644
--- a/lisp/ob-shell.el
+++ b/lisp/ob-shell.el
@@ -31,6 +31,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'org-macs)
 (require 'shell)
@@ -42,7 +44,6 @@
 (declare-function org-babel-comint-buffer-livep "ob-comint" (buffer))
 (declare-function org-babel-comint-with-output "ob-comint" (meta &rest body)
 		  t)
-(declare-function orgtbl-to-generic "org-table" (table params))
 
 (defvar org-babel-default-header-args:shell '())
 
diff --git a/lisp/ob-sql.el b/lisp/ob-sql.el
index f4c6ef8b8..bf5456dcb 100644
--- a/lisp/ob-sql.el
+++ b/lisp/ob-sql.el
@@ -74,11 +74,10 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 
-(declare-function org-table-import "org-table" (file arg))
-(declare-function orgtbl-to-csv "org-table" (table params))
-(declare-function org-table-to-lisp "org-table" (&optional txt))
 (declare-function cygwin-convert-file-name-to-windows "cygw32.c" (file &optional absolute-p))
 (declare-function sql-set-product "sql" (product))
 
diff --git a/lisp/ob-sqlite.el b/lisp/ob-sqlite.el
index 9996180fa..65963a7b3 100644
--- a/lisp/ob-sqlite.el
+++ b/lisp/ob-sqlite.el
@@ -31,12 +31,11 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob)
 (require 'ob-sql)
 
-(declare-function org-table-convert-region "org-table"
-		  (beg0 end0 &optional separator))
-(declare-function org-table-to-lisp "org-table" (&optional txt))
 
 (defvar org-babel-default-header-args:sqlite '())
 
diff --git a/lisp/ob-table.el b/lisp/ob-table.el
index 28daa0a25..e202c9fcd 100644
--- a/lisp/ob-table.el
+++ b/lisp/ob-table.el
@@ -57,6 +57,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ob-core)
 (require 'org-macs)
 
diff --git a/lisp/ob-tangle.el b/lisp/ob-tangle.el
index 810a9c590..55f5ff1b4 100644
--- a/lisp/ob-tangle.el
+++ b/lisp/ob-tangle.el
@@ -30,6 +30,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org-src)
 (require 'org-macs)
@@ -43,7 +45,6 @@
 (declare-function org-element-lineage "org-element-ast" (datum &optional types with-self))
 (declare-function org-element-begin "org-element" (node))
 (declare-function org-element-end "org-element" (node))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
 (declare-function org-element-type-p "org-element-ast" (node types))
 (declare-function org-heading-components "org" ())
 (declare-function org-in-commented-heading-p "org" (&optional no-inheritance element))
diff --git a/lisp/ob.el b/lisp/ob.el
index 11de7caa3..2d999d901 100644
--- a/lisp/ob.el
+++ b/lisp/ob.el
@@ -28,6 +28,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org-macs)
 (require 'org-compat)
 (require 'org-keys)
diff --git a/lisp/oc-basic.el b/lisp/oc-basic.el
index c8f0f80f9..cb141486d 100644
--- a/lisp/oc-basic.el
+++ b/lisp/oc-basic.el
@@ -69,6 +69,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'bibtex)
 (require 'json)
 (require 'map)
@@ -76,12 +78,10 @@
 (require 'seq)
 
 (declare-function org-open-at-point "org" (&optional arg))
-(declare-function org-open-file "org" (path &optional in-emacs line search))
 
 (declare-function org-element-create "org-element-ast" (type &optional props &rest children))
 (declare-function org-element-set "org-element-ast" (old new &optional keep-props))
 
-(declare-function org-element-interpret-data "org-element" (data))
 (declare-function org-element-parse-secondary-string "org-element" (string restriction &optional parent))
 (declare-function org-element-map "org-element"
                   ( data types fun
@@ -92,9 +92,6 @@
 (declare-function org-element-type-p "org-element-ast" (node types))
 (declare-function org-element-contents "org-element-ast" (node))
 
-(declare-function org-export-data "ox" (data info))
-(declare-function org-export-derived-backend-p "ox" (backend &rest backends))
-(declare-function org-export-raw-string "ox" (contents))
 
 
 ;;; Customization
diff --git a/lisp/oc-biblatex.el b/lisp/oc-biblatex.el
index 4e6fac48e..d0f0151e9 100644
--- a/lisp/oc-biblatex.el
+++ b/lisp/oc-biblatex.el
@@ -66,13 +66,14 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'map)
 (require 'org-macs)
 (require 'oc)
 
 (declare-function org-element-property "org-element-ast" (property node))
 (declare-function org-element-parent "org-element-ast" (node))
-(declare-function org-export-data "ox" (data info))
 
 
 ;;; Customization
diff --git a/lisp/oc-bibtex.el b/lisp/oc-bibtex.el
index 3adab6917..dcec30a3d 100644
--- a/lisp/oc-bibtex.el
+++ b/lisp/oc-bibtex.el
@@ -39,11 +39,12 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'oc)
 
 (declare-function org-element-property "org-element-ast" (property node))
 
-(declare-function org-export-data "ox" (data info))
 
 (defcustom org-cite-bibtex-bibliography-style "plain"
   "Default BibTeX bibliography style.
diff --git a/lisp/oc-csl.el b/lisp/oc-csl.el
index 3eeaacfbe..39dc651bd 100644
--- a/lisp/oc-csl.el
+++ b/lisp/oc-csl.el
@@ -115,6 +115,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'map)
 (require 'bibtex)
@@ -135,12 +137,9 @@
 (declare-function citeproc-add-subbib-filters "ext:citeproc")
 (declare-function citeproc-style-cite-superscript-p "ext:citeproc")
 
-(declare-function org-element-interpret-data "org-element" (data))
 (declare-function org-element-map "org-element" (data types fun &optional info first-match no-recursion with-affiliated no-undefer))
 (declare-function org-element-property "org-element-ast" (property node))
 
-(declare-function org-export-data "ox" (data info))
-(declare-function org-export-derived-backend-p "ox" (backend &rest backends))
 (declare-function org-export-get-footnote-number "ox" (footnote info &optional data body-first))
 
 
diff --git a/lisp/oc-natbib.el b/lisp/oc-natbib.el
index f6997464d..f0f6c87d4 100644
--- a/lisp/oc-natbib.el
+++ b/lisp/oc-natbib.el
@@ -46,9 +46,10 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'oc)
 
-(declare-function org-export-data "ox" (data info))
 
 
 ;;; Customization
diff --git a/lisp/oc.el b/lisp/oc.el
index 31d52edbc..741995cfa 100644
--- a/lisp/oc.el
+++ b/lisp/oc.el
@@ -64,6 +64,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org-compat)
 (require 'org-macs)
 (require 'seq)
@@ -84,7 +86,6 @@
 (declare-function org-element-normalize-string "org-element" (s &optional keep-newlines))
 (declare-function org-element-parse-buffer "org-element" (&optional granularity visible-only keep-deferred))
 (declare-function org-element-parse-secondary-string "org-element" (string restriction &optional parent))
-(declare-function org-element-context "org-element" (&optional element))
 (declare-function org-element-property "org-element-ast" (property node))
 (declare-function org-element-begin "org-element" (node))
 (declare-function org-element-end "org-element" (node))
@@ -99,10 +100,8 @@
 (declare-function org-element-type "org-element-ast" (node &optional anonymous))
 (declare-function org-element-type-p "org-element-ast" (node types))
 
-(declare-function org-export-derived-backend-p "ox" (backend &rest backends))
 (declare-function org-export-get-next-element "ox" (blob info &optional n))
 (declare-function org-export-get-previous-element "ox" (blob info &optional n))
-(declare-function org-export-raw-string "ox" (s))
 
 (defvar org-complex-heading-regexp)
 (defvar org-element-all-objects)
diff --git a/lisp/ol-bbdb.el b/lisp/ol-bbdb.el
index a83996d08..025c82dc6 100644
--- a/lisp/ol-bbdb.el
+++ b/lisp/ol-bbdb.el
@@ -96,6 +96,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org-compat)
 (require 'org-macs)
diff --git a/lisp/ol-bibtex.el b/lisp/ol-bibtex.el
index 5c7d7fc6b..9ac812ba2 100644
--- a/lisp/ol-bibtex.el
+++ b/lisp/ol-bibtex.el
@@ -110,6 +110,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'bibtex)
 (require 'cl-lib)
 (require 'org-compat)
@@ -137,7 +139,6 @@ org-tag--invalid-char-re
 (declare-function org-toggle-tag "org" (tag &optional onoff))
 (declare-function org-indent-region "org" (start end))
 
-(declare-function org-search-view "org-agenda" (&optional todo-only string edit-at))
 
 
 ;;; BibTeX data
diff --git a/lisp/ol-docview.el b/lisp/ol-docview.el
index 84ed91663..95c11c92c 100644
--- a/lisp/ol-docview.el
+++ b/lisp/ol-docview.el
@@ -45,11 +45,12 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'doc-view)
 (require 'ol)
 
 (declare-function image-mode-window-get "image-mode" (prop &optional winprops))
-(declare-function org-open-file "org" (path &optional in-emacs line search))
 
 (org-link-set-parameters "docview"
 			 :follow #'org-docview-open
diff --git a/lisp/ol-doi.el b/lisp/ol-doi.el
index 11c45f30a..b81447d0a 100644
--- a/lisp/ol-doi.el
+++ b/lisp/ol-doi.el
@@ -29,6 +29,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ol)
 
 (defcustom org-link-doi-server-url "https://doi.org/";
diff --git a/lisp/ol-eshell.el b/lisp/ol-eshell.el
index 2b48e7412..97a2c655f 100644
--- a/lisp/ol-eshell.el
+++ b/lisp/ol-eshell.el
@@ -26,6 +26,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'eshell)
 (require 'esh-mode)
 (require 'ol)
diff --git a/lisp/ol-eww.el b/lisp/ol-eww.el
index 4183f92f2..03af765c4 100644
--- a/lisp/ol-eww.el
+++ b/lisp/ol-eww.el
@@ -48,6 +48,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ol)
 (require 'cl-lib)
 (require 'eww)
diff --git a/lisp/ol-gnus.el b/lisp/ol-gnus.el
index 1964efdd7..4f1255890 100644
--- a/lisp/ol-gnus.el
+++ b/lisp/ol-gnus.el
@@ -34,6 +34,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'gnus-sum)
 (require 'gnus-util)
 (require 'nnheader)
diff --git a/lisp/ol-info.el b/lisp/ol-info.el
index b65fcc8b9..d2107f895 100644
--- a/lisp/ol-info.el
+++ b/lisp/ol-info.el
@@ -33,6 +33,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ol)
 
 ;; Declare external functions and variables
diff --git a/lisp/ol-irc.el b/lisp/ol-irc.el
index 2ab51fe07..8be8ab448 100644
--- a/lisp/ol-irc.el
+++ b/lisp/ol-irc.el
@@ -51,6 +51,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ol)
 
 (declare-function erc-buffer-filter "erc" (predicate &optional proc))
diff --git a/lisp/ol-man.el b/lisp/ol-man.el
index 2121b8539..3e7bd6e54 100644
--- a/lisp/ol-man.el
+++ b/lisp/ol-man.el
@@ -30,6 +30,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ol)
 
 (org-link-set-parameters "man"
diff --git a/lisp/ol-mhe.el b/lisp/ol-mhe.el
index d147ea418..a4f792bb4 100644
--- a/lisp/ol-mhe.el
+++ b/lisp/ol-mhe.el
@@ -33,6 +33,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org-macs)
 (require 'ol)
 
diff --git a/lisp/ol-rmail.el b/lisp/ol-rmail.el
index 703ddaeb7..8e25dac33 100644
--- a/lisp/ol-rmail.el
+++ b/lisp/ol-rmail.el
@@ -33,6 +33,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ol)
 
 ;; Declare external functions and variables
diff --git a/lisp/ol-w3m.el b/lisp/ol-w3m.el
index b356a19fc..545fc2bf2 100644
--- a/lisp/ol-w3m.el
+++ b/lisp/ol-w3m.el
@@ -44,6 +44,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ol)
 
 (defvar w3m-current-url)
diff --git a/lisp/ol.el b/lisp/ol.el
index 9480d662f..85506375a 100644
--- a/lisp/ol.el
+++ b/lisp/ol.el
@@ -30,6 +30,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org-compat)
 (require 'org-macs)
 (require 'org-fold)
@@ -52,33 +54,23 @@ org-ts-regexp
 (declare-function org-back-to-heading "org" (&optional invisible-ok))
 (declare-function org-before-first-heading-p "org" ())
 (declare-function org-do-occur "org" (regexp &optional cleanup))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
 (declare-function org-element-parse-secondary-string "org-element"
                   (string restriction &optional parent))
 (declare-function org-element-restriction "org-element" (element))
-(declare-function org-element-cache-refresh "org-element" (pos))
-(declare-function org-element-cache-reset "org-element" (&optional all no-persistence))
-(declare-function org-element-context "org-element" (&optional element))
 (declare-function org-element-lineage "org-element-ast" (datum &optional types with-self))
 (declare-function org-element-link-parser "org-element" ())
 (declare-function org-element-property "org-element-ast" (property node))
 (declare-function org-element-begin "org-element" (node))
 (declare-function org-element-end "org-element" (node))
 (declare-function org-element-type-p "org-element-ast" (node types))
-(declare-function org-element-update-syntax "org-element" ())
 (declare-function org-entry-get "org" (pom property &optional inherit literal-nil))
 (declare-function org-find-property "org" (property &optional value))
 (declare-function org-get-heading "org" (&optional no-tags no-todo no-priority no-comment))
-(declare-function org-id-find-id-file "org-id" (id))
 (declare-function org-insert-heading "org" (&optional arg invisible-ok top))
-(declare-function org-load-modules-maybe "org" (&optional force))
 (declare-function org-mark-ring-push "org" (&optional pos buffer))
-(declare-function org-mode "org" ())
 (declare-function org-occur "org" (regexp &optional keep-previous callback))
-(declare-function org-open-file "org" (path &optional in-emacs line search))
 (declare-function org-cycle-overview "org-cycle" ())
 (declare-function org-restart-font-lock "org" ())
-(declare-function org-run-like-in-org-mode "org" (cmd))
 (declare-function org-src-coderef-format "org-src" (&optional element))
 (declare-function org-src-coderef-regexp "org-src" (fmt &optional label))
 (declare-function org-src-edit-buffer-p "org-src" (&optional buffer))
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 1fa976b67..bce7fb329 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -48,6 +48,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ol)
 (require 'org-fold-core)
@@ -75,8 +77,6 @@
 (declare-function calendar-persian-date-string  "cal-persia" (&optional date))
 (declare-function calendar-check-holidays       "holidays" (date))
 
-(declare-function org-datetree-find-date-create "org-datetree"
-		  (date &optional keep-restriction))
 (declare-function org-columns-quit              "org-colview" ())
 (declare-function org-mobile-write-agenda-for-mobile "org-mobile" (file))
 (declare-function org-habit-insert-consistency-graphs
@@ -84,10 +84,6 @@
 (declare-function org-is-habit-p "org-habit" (&optional pom))
 (declare-function org-habit-parse-todo "org-habit" (&optional pom))
 (declare-function org-habit-get-urgency "org-habit" (habit &optional moment))
-(declare-function org-agenda-columns "org-colview" ())
-(declare-function org-add-archive-files "org-archive" (files))
-(declare-function org-capture "org-capture" (&optional goto keys))
-(declare-function org-clock-modify-effort-estimate "org-clock" (&optional value))
 
 (defvar calendar-mode-map)
 (defvar org-clock-current-task)
diff --git a/lisp/org-archive.el b/lisp/org-archive.el
index e7c46f647..8f8224505 100644
--- a/lisp/org-archive.el
+++ b/lisp/org-archive.el
@@ -31,10 +31,11 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org)
 (require 'cl-lib)
 
-(declare-function org-datetree-find-date-create "org-datetree" (date &optional keep-restriction))
 (declare-function org-inlinetask-remove-END-maybe "org-inlinetask" ())
 
 ;; From org-element.el
diff --git a/lisp/org-attach-git.el b/lisp/org-attach-git.el
index 2f8744887..554577e44 100644
--- a/lisp/org-attach-git.el
+++ b/lisp/org-attach-git.el
@@ -32,6 +32,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org-attach)
 (require 'vc-git)
 
diff --git a/lisp/org-attach.el b/lisp/org-attach.el
index f44340fc7..0caf11421 100644
--- a/lisp/org-attach.el
+++ b/lisp/org-attach.el
@@ -37,6 +37,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org)
 (require 'ol)
diff --git a/lisp/org-capture.el b/lisp/org-capture.el
index 7654f74f9..6ddab4c91 100644
--- a/lisp/org-capture.el
+++ b/lisp/org-capture.el
@@ -50,6 +50,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org)
 (require 'org-refile)
@@ -57,18 +59,11 @@
 (declare-function org-at-encrypted-entry-p "org-crypt" ())
 (declare-function org-at-table-p "org-table" (&optional table-type))
 (declare-function org-clock-update-mode-line "org-clock" (&optional refresh))
-(declare-function org-datetree-find-date-create "org-datetree" (date &optional keep-restriction))
-(declare-function org-datetree-find-month-create "org-datetree" (d &optional keep-restriction))
 (declare-function org-datetree-find-create-hierarchy "org-datetree" (hier-pairs &optional keep-restriction legacy-prop))
-(declare-function org-decrypt-entry "org-crypt" ())
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
 (declare-function org-element-lineage "org-element-ast" (datum &optional types with-self))
 (declare-function org-element-property "org-element-ast" (property node))
 (declare-function org-element-contents-end "org-element" (node))
 (declare-function org-element-post-affiliated "org-element" (node))
-(declare-function org-encrypt-entry "org-crypt" ())
-(declare-function org-insert-link "ol" (&optional complete-file link-location default-description))
-(declare-function org-table-analyze "org-table" ())
 (declare-function org-table-current-dline "org-table" ())
 (declare-function org-table-fix-formulas "org-table" (key replace &optional limit delta remove))
 (declare-function org-table-goto-line "org-table" (N))
diff --git a/lisp/org-clock.el b/lisp/org-clock.el
index 7c53b52f5..52156315c 100644
--- a/lisp/org-clock.el
+++ b/lisp/org-clock.el
@@ -31,6 +31,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org)
 
diff --git a/lisp/org-colview.el b/lisp/org-colview.el
index 0f902febf..863e2e54e 100644
--- a/lisp/org-colview.el
+++ b/lisp/org-colview.el
@@ -33,14 +33,14 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org)
 
 (declare-function org-agenda-redo "org-agenda" (&optional all))
 (declare-function org-agenda-do-context-action "org-agenda" ())
-(declare-function org-clock-sum-today "org-clock" (&optional headline-filter))
 (declare-function org-element-extract "org-element-ast" (node))
-(declare-function org-element-interpret-data "org-element" (data))
 (declare-function org-element-map "org-element" (data types fun &optional info first-match no-recursion with-affiliated no-undefer))
 (declare-function org-element-parse-secondary-string "org-element" (string restriction &optional parent))
 (declare-function org-element-property "org-element-ast" (property node))
diff --git a/lisp/org-compat.el b/lisp/org-compat.el
index bc617b8e6..03758439b 100644
--- a/lisp/org-compat.el
+++ b/lisp/org-compat.el
@@ -38,18 +38,15 @@
 
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (declare-function org-agenda-diary-entry "org-agenda")
 (declare-function org-agenda-maybe-redo "org-agenda" ())
-(declare-function org-agenda-set-restriction-lock "org-agenda" (&optional type))
 (declare-function org-agenda-remove-restriction-lock "org-agenda" (&optional noupdate))
-(declare-function org-calendar-goto-agenda "org-agenda" ())
 (declare-function org-align-tags "org" (&optional all))
 (declare-function org-at-heading-p "org" (&optional ignored))
 (declare-function org-at-table.el-p "org-table" ())
 (declare-function org-back-to-heading "org" (&optional invisible-ok))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
-(declare-function org-element-at-point-no-context "org-element" (&optional pom))
-(declare-function org-element-context "org-element" (&optional element))
 (declare-function org-element-lineage "org-element-ast" (blob &optional types with-self))
 (declare-function org-element-type "org-element-ast" (node &optional anonymous))
 (declare-function org-element-type-p "org-element-ast" (node types))
@@ -70,7 +67,6 @@
 (declare-function org-reduced-level "org" (l))
 (declare-function org-return "org" (&optional indent arg interactive))
 (declare-function org-fold-show-context "org-fold" (&optional key))
-(declare-function org-table-end "org-table" (&optional table-type))
 (declare-function outline-next-heading "outline" ())
 (declare-function speedbar-line-directory "speedbar" (&optional depth))
 (declare-function table--at-cell-p "table" (position &optional object at-column))
diff --git a/lisp/org-crypt.el b/lisp/org-crypt.el
index 2c280957a..d383c2e03 100644
--- a/lisp/org-crypt.el
+++ b/lisp/org-crypt.el
@@ -57,6 +57,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org-macs)
 (require 'org-compat)
 
diff --git a/lisp/org-ctags.el b/lisp/org-ctags.el
index 3a6b08ccc..8cdd0a61f 100644
--- a/lisp/org-ctags.el
+++ b/lisp/org-ctags.el
@@ -144,6 +144,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (eval-when-compile (require 'cl-lib))
 (require 'org)
 
diff --git a/lisp/org-cycle.el b/lisp/org-cycle.el
index 437637bc2..7daf1eb91 100644
--- a/lisp/org-cycle.el
+++ b/lisp/org-cycle.el
@@ -32,6 +32,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org-macs)
 (require 'org-fold)
 
@@ -39,7 +41,6 @@
 (declare-function org-element-property "org-element-ast" (property node))
 (declare-function org-element-post-affiliated "org-element" (node))
 (declare-function org-element-lineage "org-element-ast" (datum &optional types with-self))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
 (declare-function org-link-preview-region "ol" (&optional include-linked refresh beg end))
 (declare-function org-get-tags "org" (&optional epom local))
 (declare-function org-subtree-end-visible-p "org" ())
@@ -57,8 +58,6 @@
 (declare-function org-entry-end-position "org" ())
 (declare-function org-try-cdlatex-tab "org" ())
 (declare-function org-cycle-level "org" ())
-(declare-function org-table-next-field "org-table" ())
-(declare-function org-table-justify-field-maybe "org-table" (&optional new))
 (declare-function org-inlinetask-at-task-p "org-inlinetask" ())
 (declare-function org-inlinetask-toggle-visibility "org-inlinetask" (&optional state))
 (declare-function org-list-get-all-items "org-list" (item struct prevs))
diff --git a/lisp/org-datetree.el b/lisp/org-datetree.el
index fa08140cd..a78432645 100644
--- a/lisp/org-datetree.el
+++ b/lisp/org-datetree.el
@@ -35,6 +35,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cal-iso)
 (require 'org)
 (require 'org-element)
diff --git a/lisp/org-duration.el b/lisp/org-duration.el
index 822a64932..fda287f34 100644
--- a/lisp/org-duration.el
+++ b/lisp/org-duration.el
@@ -54,6 +54,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org-macs)
 
diff --git a/lisp/org-element.el b/lisp/org-element.el
index 58c65ad08..e55d2043c 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -62,6 +62,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'avl-tree)
 (require 'ring)
 (require 'cl-lib)
diff --git a/lisp/org-entities.el b/lisp/org-entities.el
index 2369fbe48..b640f8606 100644
--- a/lisp/org-entities.el
+++ b/lisp/org-entities.el
@@ -30,9 +30,10 @@
 
 (require 'org-macs)
 (org-assert-version)
+
+(require 'org-loaddefs nil t)
 (require 'seq) ; Emacs 27 does not preload seq.el; for `seq-every-p'.
 
-(declare-function org-mode "org" ())
 (declare-function org-toggle-pretty-entities "org"       ())
 (declare-function org-table-align            "org-table" ())
 
diff --git a/lisp/org-faces.el b/lisp/org-faces.el
index b0f5ef9d7..26c7349ea 100644
--- a/lisp/org-faces.el
+++ b/lisp/org-faces.el
@@ -32,6 +32,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (defgroup org-faces nil
   "Faces in Org mode."
   :tag "Org Faces"
diff --git a/lisp/org-feed.el b/lisp/org-feed.el
index b2578be33..8834cf71a 100644
--- a/lisp/org-feed.el
+++ b/lisp/org-feed.el
@@ -91,6 +91,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org)
 
 (declare-function url-retrieve-synchronously "url"
diff --git a/lisp/org-fold-core.el b/lisp/org-fold-core.el
index 5aef5002f..7bdc2ee4d 100644
--- a/lisp/org-fold-core.el
+++ b/lisp/org-fold-core.el
@@ -279,6 +279,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org-macs)
 (require 'org-compat)
 
diff --git a/lisp/org-fold.el b/lisp/org-fold.el
index 2924fdf65..c645aa337 100644
--- a/lisp/org-fold.el
+++ b/lisp/org-fold.el
@@ -46,6 +46,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org-macs)
 (require 'org-fold-core)
 
@@ -60,7 +62,6 @@ org-custom-properties-overlays
 (defvar org-element-headline-re)
 
 (declare-function org-element-type "org-element-ast" (node &optional anonymous))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
 (declare-function org-element-end "org-element" (node))
 (declare-function org-element-post-affiliated "org-element" (node))
 (declare-function org-toggle-custom-properties-visibility "org" ())
diff --git a/lisp/org-footnote.el b/lisp/org-footnote.el
index 5603adfe6..496febf92 100644
--- a/lisp/org-footnote.el
+++ b/lisp/org-footnote.el
@@ -31,6 +31,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 ;;;; Declarations
 
 (require 'cl-lib)
@@ -42,9 +44,7 @@
 (declare-function org-back-over-empty-lines "org" ())
 (declare-function org-end-of-meta-data "org" (&optional full))
 (declare-function org-edit-footnote-reference "org-src" ())
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
 (declare-function org-element-class "org-element" (datum &optional parent))
-(declare-function org-element-context "org-element" (&optional element))
 (declare-function org-element-lineage "org-element-ast" (blob &optional types with-self))
 (declare-function org-element-property "org-element-ast" (property node))
 (declare-function org-element-type "org-element-ast" (node &optional anonymous))
diff --git a/lisp/org-goto.el b/lisp/org-goto.el
index c3f21869a..c0c57f1e3 100644
--- a/lisp/org-goto.el
+++ b/lisp/org-goto.el
@@ -27,6 +27,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org)
 (require 'org-refile)
 
diff --git a/lisp/org-habit.el b/lisp/org-habit.el
index 43c31f772..2a57fe556 100644
--- a/lisp/org-habit.el
+++ b/lisp/org-habit.el
@@ -31,6 +31,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org)
 (require 'org-agenda)
diff --git a/lisp/org-id.el b/lisp/org-id.el
index 75b7e8266..aaf37ddb7 100644
--- a/lisp/org-id.el
+++ b/lisp/org-id.el
@@ -73,13 +73,14 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org)
 (require 'org-element-ast)
 (require 'org-refile)
 (require 'ol)
 
 (declare-function message-make-fqdn "message" ())
-(declare-function org-goto-location "org-goto" (&optional _buf help))
 
 ;;; Customization
 
diff --git a/lisp/org-indent.el b/lisp/org-indent.el
index b6284da15..9c4ffc7fb 100644
--- a/lisp/org-indent.el
+++ b/lisp/org-indent.el
@@ -39,6 +39,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org-macs)
 (require 'org-compat)
 (require 'org)
diff --git a/lisp/org-inlinetask.el b/lisp/org-inlinetask.el
index a1cafe780..edfd6b7cf 100644
--- a/lisp/org-inlinetask.el
+++ b/lisp/org-inlinetask.el
@@ -81,6 +81,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org)
 
 (defgroup org-inlinetask nil
diff --git a/lisp/org-keys.el b/lisp/org-keys.el
index 84eb3bf13..c34a7ecdf 100644
--- a/lisp/org-keys.el
+++ b/lisp/org-keys.el
@@ -31,6 +31,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 
 (defvar org-outline-regexp)
@@ -38,29 +40,15 @@ org-outline-regexp
 (require 'oc)
 
 (declare-function org-add-note "org" ())
-(declare-function org-agenda "org-agenda" (&optional arg org-keys restriction))
 (declare-function org-agenda-file-to-front "org" (&optional to-end))
 (declare-function org-agenda-remove-restriction-lock "org-agenda" (&optional noupdate))
-(declare-function org-agenda-set-restriction-lock "org-agenda" (&optional type))
-(declare-function org-archive-subtree "org-archive" (&optional find-done))
-(declare-function org-archive-subtree-default "org-archive" ())
-(declare-function org-archive-subtree-default-with-confirmation "org-archive" ())
-(declare-function org-archive-to-archive-sibling "org-archive" ())
 (declare-function org-at-heading-p "org" (&optional ignored))
-(declare-function org-attach "org-attach" ())
 (declare-function org-backward-element "org" ())
 (declare-function org-backward-heading-same-level "org" (arg &optional invisible-ok))
 (declare-function org-backward-paragraph "org" (&optional arg))
 (declare-function org-backward-sentence "org" (&optional arg))
 (declare-function org-beginning-of-line "org" (&optional n))
-(declare-function org-clock-cancel "org-clock" ())
-(declare-function org-clock-display "org-clock" (&optional arg))
-(declare-function org-clock-goto "org-clock" (&optional select))
-(declare-function org-clock-in "org-clock" (&optional select start-time))
-(declare-function org-clock-in-last "org-clock" (&optional arg))
-(declare-function org-clock-out "org-clock" (&optional switch-to-state fail-quietly at-time))
 (declare-function org-clone-subtree-with-time-shift "org" (n &optional shift))
-(declare-function org-columns "org-colview" (&optional global columns-fmt-string))
 (declare-function org-comment-dwim "org" (arg))
 (declare-function org-copy-special "org" ())
 (declare-function org-copy-visible "org" (beg end))
@@ -71,8 +59,6 @@ org-outline-regexp
 (declare-function org-ctrl-c-tab "org" (&optional arg))
 (declare-function org-cut-special "org" ())
 (declare-function org-cut-subtree "org" (&optional n))
-(declare-function org-cycle "org-cycle" (&optional arg))
-(declare-function org-cycle-agenda-files "org" ())
 (declare-function org-date-from-calendar "org" ())
 (declare-function org-dynamic-block-insert-dblock "org" (type &optional interactive-p))
 (declare-function org-dblock-update "org" (&optional arg))
@@ -85,7 +71,6 @@ org-outline-regexp
 (declare-function org-display-outline-path "org" (&optional file current separator just-return-string))
 (declare-function org-down-element "org" ())
 (declare-function org-edit-special "org" (&optional arg))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
 (declare-function org-element-type-p "org-element-ast" (node types))
 (declare-function org-emphasize "org" (&optional char))
 (declare-function org-end-of-line "org" (&optional n))
@@ -106,28 +91,20 @@ org-outline-regexp
 (declare-function org-calendar-scroll-three-months-left "org" ())
 (declare-function org-calendar-scroll-three-months-right "org" ())
 (declare-function org-evaluate-time-range "org" (&optional to-buffer))
-(declare-function org-export-dispatch "ox" (&optional arg))
-(declare-function org-feed-goto-inbox "org-feed" (feed))
-(declare-function org-feed-update-all "org-feed" ())
 (declare-function org-fill-paragraph "org" (&optional justify region))
 (declare-function org-find-file-at-mouse "org" (ev))
-(declare-function org-footnote-action "org-footnote" (&optional special))
 (declare-function org-cycle-force-archived "org-cycle" ())
 (declare-function org-force-self-insert "org" (n))
 (declare-function org-forward-element "org" ())
 (declare-function org-forward-heading-same-level "org" (arg &optional invisible-ok))
 (declare-function org-forward-paragraph "org" (&optional arg))
 (declare-function org-forward-sentence "org" (&optional arg))
-(declare-function org-goto "org-goto" (&optional alternative-interface))
 (declare-function org-goto-calendar "org" (&optional arg))
 (declare-function org-inc-effort "org" ())
 (declare-function org-increase-number-at-point "org" (&optional inc))
 (declare-function org-info-find-node "org" (&optional nodename))
-(declare-function org-insert-all-links "ol" (arg &optional pre post))
 (declare-function org-insert-drawer "org" (&optional arg drawer))
 (declare-function org-insert-heading-respect-content "org" (&optional invisible-ok))
-(declare-function org-insert-last-stored-link "ol" (arg))
-(declare-function org-insert-link "ol" (&optional complete-file link-location default-description))
 (declare-function org-insert-structure-template "org" (type))
 (declare-function org-insert-todo-heading "org" (arg &optional force-heading))
 (declare-function org-insert-todo-heading-respect-content "org" (&optional force-state))
@@ -148,28 +125,20 @@ org-outline-regexp
 (declare-function org-narrow-to-element "org" ())
 (declare-function org-narrow-to-subtree "org" (&optional element))
 (declare-function org-next-block "org" (arg &optional backward block-regexp))
-(declare-function org-next-link "ol" (&optional search-backward))
 (declare-function org-next-visible-heading "org" (arg))
 (declare-function org-open-at-mouse "org" (ev))
 (declare-function org-open-at-point "org" (&optional arg))
 (declare-function org-open-line "org" (n))
 (declare-function org-paste-special "org" (arg))
-(declare-function org-plot/gnuplot "org-plot" (&optional params))
 (declare-function org-previous-block "org" (arg &optional block-regexp))
-(declare-function org-previous-link "ol" ())
 (declare-function org-previous-visible-heading "org" (arg))
 (declare-function org-priority "org" (&optional action show))
 (defvar org-priority-highest)
 (defvar org-priority-default)
 (defvar org-priority-lowest)
 (declare-function org-promote-subtree "org" ())
-(declare-function org-refile "org-refile" (&optional arg1 default-buffer rfloc msg))
-(declare-function org-refile-copy "org-refile" ())
-(declare-function org-refile-reverse "org-refile" (&optional arg default-buffer rfloc msg))
 (declare-function org-reftex-citation "org" ())
-(declare-function org-reload "org" (&optional arg1))
 (declare-function org-remove-file "org" (&optional file))
-(declare-function org-resolve-clocks "org-clock" (&optional only-dangling-p prompt-fn last-valid))
 (declare-function org-return "org" (&optional indent arg interactive))
 (declare-function org-return-and-maybe-indent "org" ())
 (declare-function org-fold-reveal "org-fold" (&optional siblings))
@@ -196,32 +165,14 @@ org-priority-lowest
 (declare-function org-fold-show-subtree "org-fold" ())
 (declare-function org-sort "org" (&optional with-case))
 (declare-function org-sparse-tree "org" (&optional arg type))
-(declare-function org-table-copy-down "org-table" (n))
-(declare-function org-table-create-or-convert-from-region "org-table" (arg))
 (declare-function org-table-create-with-table\.el "org-table" ())
-(declare-function org-table-edit-field "org-table" (arg))
-(declare-function org-table-eval-formula "org-table" (&optional arg equation suppress-align suppress-const suppress-store suppress-analysis))
-(declare-function org-table-field-info "org-table" (arg))
-(declare-function org-table-rotate-recalc-marks "org-table" (&optional newchar))
-(declare-function org-table-sum "org-table" (&optional beg end nlast))
-(declare-function org-table-toggle-coordinate-overlays "org-table" ())
-(declare-function org-table-toggle-formula-debugger "org-table" ())
 (declare-function org-timestamp "org" (arg &optional inactive))
 (declare-function org-timestamp-inactive "org" (&optional arg))
-(declare-function org-timer "org-timer" (&optional restart no-insert))
-(declare-function org-timer-item "org-timer" (&optional arg))
-(declare-function org-timer-pause-or-continue "org-timer" (&optional stop))
-(declare-function org-timer-set-timer "org-timer" (&optional opt))
-(declare-function org-timer-start "org-timer" (&optional offset))
-(declare-function org-timer-stop "org-timer" ())
 (declare-function org-todo "org" (&optional arg1))
-(declare-function org-toggle-archive-tag "org-archive" (&optional find-done))
 (declare-function org-toggle-checkbox "org-list" (&optional toggle-presence))
 (declare-function org-toggle-radio-button "org-list" (&optional arg))
 (declare-function org-toggle-comment "org" ())
 (declare-function org-toggle-fixed-width "org" ())
-(declare-function org-link-preview "ol" (&optional arg beg end))
-(declare-function org-link-preview-refresh "ol" ())
 (declare-function org-latex-preview "org" (&optional arg))
 (declare-function org-toggle-narrow-to-subtree "org" ())
 (declare-function org-toggle-ordered-property "org" ())
@@ -234,7 +185,6 @@ org-priority-lowest
 (declare-function org-up-element "org" ())
 (declare-function org-update-statistics-cookies "org" (all))
 (declare-function org-yank "org" (&optional arg))
-(declare-function orgtbl-ascii-plot "org-table" (&optional ask))
 (declare-function outline-up-heading "outline" (arg &optional invisible-ok))
 
 
diff --git a/lisp/org-lint.el b/lisp/org-lint.el
index d4bd90b8b..5f0248acd 100644
--- a/lisp/org-lint.el
+++ b/lisp/org-lint.el
@@ -90,6 +90,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ob)
 (require 'oc)
diff --git a/lisp/org-list.el b/lisp/org-list.el
index 8605c6f08..080244f31 100644
--- a/lisp/org-list.el
+++ b/lisp/org-list.el
@@ -79,6 +79,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org-macs)
 (require 'org-compat)
@@ -109,9 +111,6 @@ org-ts-regexp-both
 (declare-function org-back-to-heading-or-point-min "org" (&optional invisible-ok))
 (declare-function org-before-first-heading-p "org" ())
 (declare-function org-current-level "org" ())
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
-(declare-function org-element-context "org-element" (&optional element))
-(declare-function org-element-interpret-data "org-element" (data))
 (declare-function org-element-lineage "org-element-ast" (blob &optional types with-self))
 (declare-function org-element-macro-interpreter "org-element" (macro ##))
 (declare-function org-element-map "org-element" (data types fun &optional info first-match no-recursion with-affiliated no-undefer))
@@ -128,13 +127,10 @@ org-ts-regexp-both
 (declare-function org-element-put-property "org-element-ast" (node property value))
 (declare-function org-element-set "org-element-ast" (old new &optional keep-props))
 (declare-function org-element-type-p "org-element-ast" (node types))
-(declare-function org-element-update-syntax "org-element" ())
 (declare-function org-end-of-meta-data "org" (&optional full))
 (declare-function org-entry-get "org" (pom property &optional inherit literal-nil))
 (declare-function org-export-create-backend "ox" (&rest rest) t)
 (declare-function org-export-data-with-backend "ox" (data backend info))
-(declare-function org-export-get-backend "ox" (name))
-(declare-function org-export-get-environment "ox" (&optional backend subtreep ext-plist))
 (declare-function org-export-get-next-element "ox" (blob info &optional n))
 (declare-function org-export-with-backend "ox" (backend data &optional contents info))
 (declare-function org-fix-tags-on-the-fly "org" ())
@@ -145,7 +141,6 @@ org-ts-regexp-both
 (declare-function org-inlinetask-in-task-p "org-inlinetask" ())
 (declare-function org-inlinetask-outline-regexp "org-inlinetask" ())
 (declare-function org-level-increment "org" ())
-(declare-function org-mode "org" ())
 (declare-function org-narrow-to-subtree "org" (&optional element))
 (declare-function org-outline-level "org" ())
 (declare-function org-reduced-level "org" (L))
@@ -156,7 +151,6 @@ org-ts-regexp-both
 (declare-function org-sort-remove-invisible "org" (S))
 (declare-function org-time-string-to-seconds "org" (s))
 (declare-function org-timer-hms-to-secs "org-timer" (hms))
-(declare-function org-timer-item "org-timer" (&optional arg))
 (declare-function outline-next-heading "outline" ())
 (declare-function outline-previous-heading "outline" ())
 
diff --git a/lisp/org-macro.el b/lisp/org-macro.el
index 1fb48ffcf..2c73fbdce 100644
--- a/lisp/org-macro.el
+++ b/lisp/org-macro.el
@@ -51,12 +51,13 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org-macs)
 (require 'org-compat)
 
 (declare-function org-collect-keywords "org" (keywords &optional unique directory))
-(declare-function org-element-context "org-element" (&optional element))
 (declare-function org-element-copy "org-element-ast" (datum &optional keep-contents))
 (declare-function org-element-macro-parser "org-element" ())
 (declare-function org-element-keyword-parser "org-element" (limit affiliated))
diff --git a/lisp/org-macs.el b/lisp/org-macs.el
index b4d917bcf..457173f7c 100644
--- a/lisp/org-macs.el
+++ b/lisp/org-macs.el
@@ -119,7 +119,8 @@ org-assert-version
 ;; version here will interfere with Org build process.
 ;; (org-assert-version)
 
-(declare-function org-mode "org" ())
+(require 'org-loaddefs nil t)
+
 (declare-function org-agenda-files "org" (&optional unrestricted archives))
 (declare-function org-time-string-to-seconds "org" (s))
 (declare-function org-fold-save-outline-visibility "org-fold" (use-markers &rest body))
diff --git a/lisp/org-mobile.el b/lisp/org-mobile.el
index c8c7b8955..ca83ef855 100644
--- a/lisp/org-mobile.el
+++ b/lisp/org-mobile.el
@@ -34,6 +34,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org)
 (require 'org-agenda)
diff --git a/lisp/org-mouse.el b/lisp/org-mouse.el
index 8ccada6e2..7a27373ed 100644
--- a/lisp/org-mouse.el
+++ b/lisp/org-mouse.el
@@ -139,6 +139,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org)
 (require 'cl-lib)
 
diff --git a/lisp/org-num.el b/lisp/org-num.el
index 7e07300ff..6eca0a564 100644
--- a/lisp/org-num.el
+++ b/lisp/org-num.el
@@ -64,6 +64,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org-macs)
 (require 'org) ;Otherwise `org-num--comment-re' burps on `org-comment-string'
diff --git a/lisp/org-pcomplete.el b/lisp/org-pcomplete.el
index ef51cbee9..f0d974a26 100644
--- a/lisp/org-pcomplete.el
+++ b/lisp/org-pcomplete.el
@@ -33,6 +33,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org-macs)
 (require 'org-compat)
 (require 'pcomplete)
@@ -42,7 +44,6 @@
 (declare-function org-babel-get-src-block-info "ob-core" (&optional no-eval datum))
 (declare-function org-before-first-heading-p "org" ())
 (declare-function org-buffer-property-keys "org" (&optional specials defaults columns))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
 (declare-function org-element-property "org-element-ast" (property node &optional dflt force-undefer))
 (declare-function org-element-end "org-element" (node))
 (declare-function org-element-type-p "org-element-ast" (node types))
diff --git a/lisp/org-persist.el b/lisp/org-persist.el
index ee3799ed1..243576c63 100644
--- a/lisp/org-persist.el
+++ b/lisp/org-persist.el
@@ -260,6 +260,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org-compat)
 (require 'org-id)
 (require 'xdg nil t)
diff --git a/lisp/org-plot.el b/lisp/org-plot.el
index a2c2afb89..b55fc5600 100644
--- a/lisp/org-plot.el
+++ b/lisp/org-plot.el
@@ -34,6 +34,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org)
 (require 'org-table)
diff --git a/lisp/org-protocol.el b/lisp/org-protocol.el
index d22053f4b..c7ce267a3 100644
--- a/lisp/org-protocol.el
+++ b/lisp/org-protocol.el
@@ -132,6 +132,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org)
 (require 'ol)
 
diff --git a/lisp/org-refile.el b/lisp/org-refile.el
index 2c966af96..ee92b0eec 100644
--- a/lisp/org-refile.el
+++ b/lisp/org-refile.el
@@ -28,6 +28,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'org)
 
 (declare-function org-inlinetask-remove-END-maybe "org-inlinetask" ())
diff --git a/lisp/org-src.el b/lisp/org-src.el
index 8f86c6cff..0aad25871 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -34,6 +34,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ob-comint)
 (require 'org-macs)
@@ -42,11 +44,8 @@
 (require 'sh-script)
 
 (declare-function org--get-expected-indentation "org" (element contentsp))
-(declare-function org-mode "org" ())
 (declare-function org--get-expected-indentation "org" (element contentsp))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
 (declare-function org-element-class "org-element" (datum &optional parent))
-(declare-function org-element-context "org-element" (&optional element))
 (declare-function org-element-lineage "org-element-ast"
 		  (blob &optional types with-self))
 (declare-function org-element--parse-paired-brackets "org-element" (char))
diff --git a/lisp/org-table.el b/lisp/org-table.el
index 56c3d83f3..bc0751140 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -37,6 +37,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org-macs)
 (require 'org-compat)
@@ -45,13 +47,8 @@
 
 (declare-function calc-eval "calc" (str &optional separator &rest args))
 (declare-function org-delete-backward-char "org" (N))
-(declare-function org-mode "org" ())
-(declare-function org-duration-p "org-duration" (duration))
-(declare-function org-duration-to-minutes "org-duration" (duration &optional canonical))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
 (declare-function org-element-contents "org-element-ast" (node))
 (declare-function org-element-extract "org-element-ast" (node))
-(declare-function org-element-interpret-data "org-element" (data))
 (declare-function org-element-lineage "org-element-ast" (blob &optional types with-self))
 (declare-function org-element-map "org-element" (data types fun &optional info first-match no-recursion with-affiliated no-undefer))
 (declare-function org-element-property "org-element-ast" (property node))
@@ -61,12 +58,9 @@
 (declare-function org-entry-get "org" (pom property &optional inherit literal-nil))
 (declare-function org-export-create-backend "ox" (&rest rest) t)
 (declare-function org-export-data-with-backend "ox" (data backend info))
-(declare-function org-export-get-backend "ox" (name))
 (declare-function org-export-table-has-special-column-p "ox" (table))
 (declare-function org-forward-paragraph "org" (&optional arg))
-(declare-function org-id-find "org-id" (id &optional markerp))
 (declare-function org-indent-line "org" ())
-(declare-function org-load-modules-maybe "org" (&optional force))
 (declare-function org-restart-font-lock "org" ())
 (declare-function org-sort-remove-invisible "org" (s))
 (declare-function org-time-stamp-format "org" (&optional long inactive custom))
diff --git a/lisp/org-tempo.el b/lisp/org-tempo.el
index 284f20eb9..cab0c277d 100644
--- a/lisp/org-tempo.el
+++ b/lisp/org-tempo.el
@@ -41,6 +41,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'tempo)
 (require 'cl-lib)
 (require 'org)
diff --git a/lisp/org-timer.el b/lisp/org-timer.el
index 8eb6a8eb7..a3380f89c 100644
--- a/lisp/org-timer.el
+++ b/lisp/org-timer.el
@@ -38,6 +38,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org-clock)
 
diff --git a/lisp/org.el b/lisp/org.el
index 1d33ed90a..b9ea69249 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -166,51 +166,20 @@ org-priority-regexp
 (declare-function cdlatex-math-symbol "ext:cdlatex")
 (declare-function Info-goto-node "info" (nodename &optional fork strict-case))
 (declare-function isearch-no-upper-case-p "isearch" (string regexp-flag))
-(declare-function org-add-archive-files "org-archive" (files))
 (declare-function org-agenda-entry-get-agenda-timestamp "org-agenda" (pom))
 (declare-function org-agenda-todo-yesterday "org-agenda" (&optional arg))
-(declare-function org-agenda-list "org-agenda" (&optional arg start-day span with-hour))
 (declare-function org-agenda-redo "org-agenda" (&optional all))
-(declare-function org-archive-subtree "org-archive" (&optional find-done))
-(declare-function org-archive-subtree-default "org-archive" ())
-(declare-function org-archive-to-archive-sibling "org-archive" ())
-(declare-function org-attach "org-attach" ())
-(declare-function org-attach-dir "org-attach"
-		  (&optional create-if-not-exists-p no-fs-check))
-(declare-function org-babel-do-in-edit-buffer "ob-core" (&rest body) t)
-(declare-function org-babel-tangle-file "ob-tangle" (file &optional target-file lang))
-(declare-function org-beamer-mode "ox-beamer" (&optional prefix) t)
 (declare-function org-clock-auto-clockout "org-clock" ())
-(declare-function org-clock-cancel "org-clock" ())
-(declare-function org-clock-display "org-clock" (&optional arg))
 (declare-function org-clock-get-last-clock-out-time "org-clock" ())
-(declare-function org-clock-goto "org-clock" (&optional select))
-(declare-function org-clock-in "org-clock" (&optional select start-time))
-(declare-function org-clock-out "org-clock" (&optional switch-to-state fail-quietly at-time))
-(declare-function org-clock-out-if-current "org-clock" ())
-(declare-function org-clock-remove-overlays "org-clock" (&optional beg end noremove))
-(declare-function org-clock-report "org-clock" (&optional arg))
-(declare-function org-clock-sum "org-clock" (&optional tstart tend headline-filter propname))
 (declare-function org-clock-sum-current-item "org-clock" (&optional tstart))
 (declare-function org-clock-timestamps-down "org-clock" (&optional n))
 (declare-function org-clock-timestamps-up "org-clock" (&optional n))
-(declare-function org-clock-update-time-maybe "org-clock" ())
-(declare-function org-clocktable-shift "org-clock" (dir n))
 (declare-function org-columns-quit "org-colview" ())
-(declare-function org-columns-insert-dblock "org-colview" ())
-(declare-function org-duration-from-minutes "org-duration" (minutes &optional fmt canonical))
-(declare-function org-duration-to-minutes "org-duration" (duration &optional canonical))
-(declare-function org-element-at-point "org-element" (&optional pom cached-only))
-(declare-function org-element-at-point-no-context "org-element" (&optional pom))
-(declare-function org-element-cache-reset "org-element" (&optional all no-persistence))
-(declare-function org-element-cache-map "org-element" (func &rest keys))
 (declare-function org-element-contents "org-element-ast" (node))
-(declare-function org-element-context "org-element" (&optional element))
 (declare-function org-element-copy "org-element-ast" (datum &optional keep-contents))
 (declare-function org-element-create "org-element-ast" (type &optional props &rest children))
 (declare-function org-element-extract "org-element-ast" (node))
 (declare-function org-element-insert-before "org-element-ast" (node location))
-(declare-function org-element-interpret-data "org-element" (data))
 (declare-function org-element-lineage "org-element-ast" (blob &optional types with-self))
 (declare-function org-element-property-inherited "org-element-ast"
                   (property node &optional with-self accumulate literal-nil include-nil))
@@ -235,24 +204,8 @@ org-priority-regexp
 (declare-function org-element-timestamp-parser "org-element" ())
 (declare-function org-element-type "org-element-ast" (node &optional anonymous))
 (declare-function org-element-type-p "org-element-ast" (node types))
-(declare-function org-export-dispatch "ox" (&optional arg))
-(declare-function org-export-get-backend "ox" (name))
-(declare-function org-export-get-environment "ox" (&optional backend subtreep ext-plist))
-(declare-function org-feed-goto-inbox "org-feed" (feed))
-(declare-function org-feed-update-all "org-feed" ())
-(declare-function org-goto "org-goto" (&optional alternative-interface))
-(declare-function org-id-get-create "org-id" (&optional force))
 (declare-function org-inlinetask-outline-regexp "org-inlinetask" ())
-(declare-function org-latex-make-preamble "ox-latex" (info &optional template snippet?))
-(declare-function org-num-mode "org-num" (&optional arg))
-(declare-function org-plot/gnuplot "org-plot" (&optional params))
 (declare-function org-persist-load "org-persist")
-(declare-function org-tags-view "org-agenda" (&optional todo-only match))
-(declare-function org-timer "org-timer" (&optional restart no-insert))
-(declare-function org-timer-item "org-timer" (&optional arg))
-(declare-function org-timer-pause-or-continue "org-timer" (&optional stop))
-(declare-function org-timer-start "org-timer" (&optional offset))
-(declare-function org-toggle-archive-tag "org-archive" (&optional find-done))
 
 (defvar org-agenda-buffer-name)
 (defvar org-element-paragraph-separate)
@@ -891,7 +844,6 @@ org-modules
 	(repeat :tag "External packages" :inline t (symbol :tag "Package"))))
 
 (defvar org-export-registered-backends) ; From ox.el.
-(declare-function org-export-derived-backend-p "ox" (backend &rest backends))
 (declare-function org-export-backend-name "ox" (backend) t)
 (defcustom org-export-backends '(ascii html icalendar latex odt)
   "List of export backends that should be always available.
@@ -4034,11 +3986,9 @@ mark-active
 (declare-function org-agenda-save-markers-for-cut-and-paste
 		  "org-agenda"
 		  (beg end))
-(declare-function org-agenda-set-restriction-lock "org-agenda" (&optional type))
 (declare-function org-agenda-skip "org-agenda" (&optional element))
 (declare-function org-attach-reveal "org-attach" ())
 (declare-function org-attach-reveal-in-emacs "org-attach" ())
-(declare-function org-indent-mode "org-indent" (&optional arg))
 (declare-function org-inlinetask-goto-end "org-inlinetask" ())
 (declare-function org-inlinetask-in-task-p "org-inlinetask" ())
 (declare-function parse-time-string "parse-time" (string &optional form))
@@ -4207,11 +4157,6 @@ org-sparse-tree-default-date-type
 (define-obsolete-function-alias 'org-advertized-archive-subtree
   #'org-archive-subtree "9.8")
 
-;; Declare Column View Code
-
-(declare-function org-columns-get-format-and-top-level "org-colview" ())
-(declare-function org-columns-compute "org-colview" (property))
-
 ;; Declare ID code
 
 (declare-function org-id-locations-load "org-id")
diff --git a/lisp/ox-ascii.el b/lisp/ox-ascii.el
index 55472e5f9..d0a7100fc 100644
--- a/lisp/ox-ascii.el
+++ b/lisp/ox-ascii.el
@@ -30,6 +30,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ox)
 (require 'ox-publish)
 (require 'cl-lib)
diff --git a/lisp/ox-beamer.el b/lisp/ox-beamer.el
index 38da9271e..ce7701d08 100644
--- a/lisp/ox-beamer.el
+++ b/lisp/ox-beamer.el
@@ -33,6 +33,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ox-latex)
 
diff --git a/lisp/ox-html.el b/lisp/ox-html.el
index 3ac67320c..1737eb464 100644
--- a/lisp/ox-html.el
+++ b/lisp/ox-html.el
@@ -34,6 +34,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'format-spec)
 (require 'ox)
diff --git a/lisp/ox-icalendar.el b/lisp/ox-icalendar.el
index 272e3cf5d..3faa473df 100644
--- a/lisp/ox-icalendar.el
+++ b/lisp/ox-icalendar.el
@@ -35,6 +35,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'org-agenda)
 (require 'ox-ascii)
diff --git a/lisp/ox-koma-letter.el b/lisp/ox-koma-letter.el
index 1e707c4a1..647e95c60 100644
--- a/lisp/ox-koma-letter.el
+++ b/lisp/ox-koma-letter.el
@@ -167,6 +167,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ox-latex)
 
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 2390c8975..2af598af5 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -30,6 +30,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ox)
 (require 'ox-publish)
diff --git a/lisp/ox-man.el b/lisp/ox-man.el
index f8c559e1a..87528dd79 100644
--- a/lisp/ox-man.el
+++ b/lisp/ox-man.el
@@ -44,6 +44,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ox)
 
diff --git a/lisp/ox-md.el b/lisp/ox-md.el
index 3079a26d0..5aa69ab00 100644
--- a/lisp/ox-md.el
+++ b/lisp/ox-md.el
@@ -31,6 +31,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ox-html)
 (require 'ox-publish)
diff --git a/lisp/ox-odt.el b/lisp/ox-odt.el
index 883f23608..86e036774 100644
--- a/lisp/ox-odt.el
+++ b/lisp/ox-odt.el
@@ -28,6 +28,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'format-spec)
 (require 'org-compat)
diff --git a/lisp/ox-org.el b/lisp/ox-org.el
index 035168c73..f5ce1a4e1 100644
--- a/lisp/ox-org.el
+++ b/lisp/ox-org.el
@@ -27,6 +27,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'ox)
 (declare-function htmlize-buffer "ext:htmlize" (&optional buffer))
 (defvar htmlize-output-type)
diff --git a/lisp/ox-publish.el b/lisp/ox-publish.el
index 5fe736b09..eba1d36c4 100644
--- a/lisp/ox-publish.el
+++ b/lisp/ox-publish.el
@@ -40,6 +40,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'format-spec)
 (require 'ox)
diff --git a/lisp/ox-texinfo.el b/lisp/ox-texinfo.el
index 191771d2c..86c081a03 100644
--- a/lisp/ox-texinfo.el
+++ b/lisp/ox-texinfo.el
@@ -29,6 +29,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ox)
 (require 'org-element-ast)
diff --git a/lisp/ox.el b/lisp/ox.el
index 6c780e7c6..a98f54a76 100644
--- a/lisp/ox.el
+++ b/lisp/ox.el
@@ -75,6 +75,8 @@
 (require 'org-macs)
 (org-assert-version)
 
+(require 'org-loaddefs nil t)
+
 (require 'cl-lib)
 (require 'ob-exp)
 (require 'oc)
@@ -86,10 +88,6 @@
 
 (declare-function org-src-coderef-format "org-src" (&optional element))
 (declare-function org-src-coderef-regexp "org-src" (fmt &optional label))
-(declare-function org-publish "ox-publish" (project &optional force async))
-(declare-function org-publish-all "ox-publish" (&optional force async))
-(declare-function org-publish-current-file "ox-publish" (&optional force async))
-(declare-function org-publish-current-project "ox-publish" (&optional force async))
 (declare-function org-back-to-heading "org" (&optional invisible-ok))
 
 (defvar org-publish-project-alist)
-- 
2.54.0

Reply via email to