emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH] Rename headline to heading
@ 2021-08-05 12:12 André A. Gomes
  2021-08-05 15:04 ` Maxim Nikulin
                   ` (4 more replies)
  0 siblings, 5 replies; 19+ messages in thread
From: André A. Gomes @ 2021-08-05 12:12 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 291 bytes --]

Hi,

As previously discussed, please find the patch below.

I run the tests locally and they all pass.  Let me know what you think.

I'm still waiting for the FSF to send me back my form signed.  I've sent
it on the 31st of July.


--
André A. Gomes
"Free Thought, Free World"

[-- Attachment #2: 0001-Rename-headlines-to-headings.patch --]
[-- Type: text/x-patch, Size: 828208 bytes --]

>From 658ce624cf4f23da12ef0e9ed0ef82a4fe033c79 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20A=2E=20Gomes?= <andremegafone@gmail.com>
Date: Fri, 30 Jul 2021 16:09:57 +0300
Subject: [PATCH] Rename headlines to headings.

Relevant functions, variables and faces made obsolete.
---
 doc/Documentation_Standards.org   |   2 +-
 doc/org-guide.org                 | 120 +++---
 doc/org-manual.org                | 668 +++++++++++++++---------------
 doc/orgcard.tex                   |   8 +-
 etc/ORG-NEWS                      | 307 +++++++++-----
 lisp/ob-core.el                   |  10 +-
 lisp/ob-ref.el                    |  10 +-
 lisp/oc.el                        |   8 +-
 lisp/ol-bibtex.el                 |  54 +--
 lisp/ol.el                        |  34 +-
 lisp/org-agenda.el                | 196 ++++-----
 lisp/org-archive.el               |  62 +--
 lisp/org-capture.el               |  44 +-
 lisp/org-clock.el                 |  96 ++---
 lisp/org-colview.el               |  22 +-
 lisp/org-compat.el                | 164 +++++++-
 lisp/org-crypt.el                 |   6 +-
 lisp/org-datetree.el              |   6 +-
 lisp/org-element.el               | 122 +++---
 lisp/org-faces.el                 |  40 +-
 lisp/org-feed.el                  |  20 +-
 lisp/org-footnote.el              |   6 +-
 lisp/org-goto.el                  |   8 +-
 lisp/org-id.el                    |   4 +-
 lisp/org-indent.el                |  50 +--
 lisp/org-inlinetask.el            |   8 +-
 lisp/org-keys.el                  |  12 +-
 lisp/org-lint.el                  |  16 +-
 lisp/org-list.el                  |  16 +-
 lisp/org-macro.el                 |   4 +-
 lisp/org-macs.el                  |   2 +-
 lisp/org-mobile.el                |   2 +-
 lisp/org-mouse.el                 |  34 +-
 lisp/org-num.el                   |  78 ++--
 lisp/org-pcomplete.el             |   4 +-
 lisp/org-refile.el                |  36 +-
 lisp/org.el                       | 654 ++++++++++++++---------------
 lisp/ox-ascii.el                  | 156 +++----
 lisp/ox-beamer.el                 | 202 ++++-----
 lisp/ox-html.el                   | 188 ++++-----
 lisp/ox-icalendar.el              |  64 +--
 lisp/ox-koma-letter.el            |  82 ++--
 lisp/ox-latex.el                  | 122 +++---
 lisp/ox-man.el                    |  36 +-
 lisp/ox-md.el                     | 124 +++---
 lisp/ox-odt.el                    | 210 +++++-----
 lisp/ox-org.el                    |  38 +-
 lisp/ox-publish.el                |  12 +-
 lisp/ox-texinfo.el                | 126 +++---
 lisp/ox.el                        | 350 ++++++++--------
 testing/examples/include.org      |   4 +-
 testing/examples/pub/a.org        |   4 +-
 testing/examples/pub/b.org        |   2 +-
 testing/lisp/test-ob-exp.el       |  20 +-
 testing/lisp/test-ob.el           |  36 +-
 testing/lisp/test-ol.el           |   8 +-
 testing/lisp/test-org-attach.el   |   2 +-
 testing/lisp/test-org-capture.el  |  40 +-
 testing/lisp/test-org-clock.el    |  74 ++--
 testing/lisp/test-org-colview.el  |   4 +-
 testing/lisp/test-org-element.el  | 230 +++++-----
 testing/lisp/test-org-footnote.el |  10 +-
 testing/lisp/test-org-list.el     |  22 +-
 testing/lisp/test-org-macro.el    |   4 +-
 testing/lisp/test-org-num.el      |  16 +-
 testing/lisp/test-org.el          | 438 ++++++++++----------
 testing/lisp/test-ox-publish.el   |   4 +-
 testing/lisp/test-ox.el           | 498 +++++++++++-----------
 testing/org-test.el               |   2 +-
 69 files changed, 3145 insertions(+), 2916 deletions(-)

diff --git a/doc/Documentation_Standards.org b/doc/Documentation_Standards.org
index c4dd862db..2f18ab11f 100644
--- a/doc/Documentation_Standards.org
+++ b/doc/Documentation_Standards.org
@@ -112,7 +112,7 @@ version of the manual.
 
 - Use example blocks for Org syntax instead of "begin_src org".
 
-- Internal links to headlines always start with a star.
+- Internal links to headings always start with a star.
 
 - Tags, node properties, are not shown with the surrounding colons.
 
diff --git a/doc/org-guide.org b/doc/org-guide.org
index ad2e87314..2410d2538 100644
--- a/doc/org-guide.org
+++ b/doc/org-guide.org
@@ -107,31 +107,31 @@ worked on.  Org greatly simplifies the use of outlines by compressing
 the entire show and hide functionalities into a single command,
 ~org-cycle~, which is bound to the {{{kbd(TAB)}}} key.
 
-** Headlines
+** Headings
 :PROPERTIES:
 :DESCRIPTION: How to typeset Org tree nodes.
 :END:
 
-Headlines define the structure of an outline tree.  The headlines in
+Headings define the structure of an outline tree.  The headings in
 Org start on the left margin[fn:1] with one or more stars followed by
 a space.  For example:
 
 #+begin_example
-,* Top level headline
+,* Top level heading
 ,** Second level
 ,*** Third level
     some text
 ,*** Third level
     more text
-,* Another top level headline
+,* Another top level heading
 #+end_example
 
-Note that a headline named after ~org-footnote-section~, which
+Note that a heading named after ~org-footnote-section~, which
 defaults to =Footnotes=, is considered as special.  A subtree with
-this headline will be silently ignored by exporting functions.
+this heading will be silently ignored by exporting functions.
 
 Some people find the many stars too noisy and would prefer an outline
-that has whitespace followed by a single star as headline starters.
+that has whitespace followed by a single star as heading starters.
 See [[*Miscellaneous]] for a setup to realize this.
 
 ** Visibility Cycling
@@ -166,7 +166,7 @@ Org uses just two commands, bound to {{{kbd(TAB)}}} and
   Show all, including drawers.
 
 When Emacs first visits an Org file, the global state is set to
-OVERVIEW, i.e., only the top level headlines are visible.  This can be
+OVERVIEW, i.e., only the top level headings are visible.  This can be
 configured through the variable ~org-startup-folded~, or on a per-file
 basis by adding a =STARTUP= keyword to =overview=, =content=,
 =showall=, =showeverything= or =show<n>levels= (n = 2..5) like this:
@@ -175,10 +175,10 @@ basis by adding a =STARTUP= keyword to =overview=, =content=,
 
 ** Motion
 :PROPERTIES:
-:DESCRIPTION: Jumping to other headlines.
+:DESCRIPTION: Jumping to other headings.
 :END:
 
-The following commands jump to other headlines in the buffer.
+The following commands jump to other headings in the buffer.
 
 - {{{kbd(C-c C-n)}}} :: Next heading.
 
@@ -192,7 +192,7 @@ The following commands jump to other headlines in the buffer.
 
 ** Structure Editing
 :PROPERTIES:
-:DESCRIPTION: Changing sequence and level of headlines.
+:DESCRIPTION: Changing sequence and level of headings.
 :END:
 
 #+attr_texinfo: :sep ,
@@ -201,7 +201,7 @@ The following commands jump to other headlines in the buffer.
   Insert new heading with same level as current.  If point is in
   a plain list item, a new item is created (see [[Plain Lists]]).  When
   this command is used in the middle of a line, the line is split and
-  the rest of the line becomes the new headline[fn:2].
+  the rest of the line becomes the new heading[fn:2].
 
 - {{{kbd(M-S-RET)}}} ::
 
@@ -231,7 +231,7 @@ The following commands jump to other headlines in the buffer.
   Narrow buffer to current subtree and widen it again.
 
 When there is an active region (Transient Mark mode), promotion and
-demotion work on all headlines in the region.
+demotion work on all headings in the region.
 
 ** Sparse Trees
 :PROPERTIES:
@@ -241,7 +241,7 @@ demotion work on all headlines in the region.
 An important feature of Org mode is the ability to construct /sparse
 trees/ for selected information in an outline tree, so that the entire
 document is folded as much as possible, but the selected information
-is made visible along with the headline structure above it[fn:3].
+is made visible along with the heading structure above it[fn:3].
 Just try it out and you will see immediately how it works.
 
 Org mode contains several commands creating such trees, all these
@@ -305,7 +305,7 @@ an item (the line with the bullet or number).
 #+attr_texinfo: :sep ,
 - {{{kbd(TAB)}}} ::
 
-  Items can be folded just like headline levels.
+  Items can be folded just like heading levels.
 
 - {{{kbd(M-RET)}}} ::
 
@@ -620,7 +620,7 @@ that you have to do, collected from many files.
 :ALT_TITLE: TODO Basics
 :END:
 
-Any headline becomes a TODO item when it starts with the word =TODO=,
+Any heading becomes a TODO item when it starts with the word =TODO=,
 for example:
 
 : *** TODO Write letter to Sam Fortune
@@ -747,7 +747,7 @@ was marked as done.  This can be achieved with[fn:4]
 #+texinfo: @noindent
 Then each time you turn an entry from a TODO (not-done) state into any
 of the DONE states, a line =CLOSED: [timestamp]= is inserted just
-after the headline.
+after the heading.
 
 If you want to record a note along with the timestamp, use[fn:5]
 
@@ -766,7 +766,7 @@ entry with a =Closing Note= heading.
 
 You might want to keep track of TODO state changes.  You can either
 record just a timestamp, or a time-stamped note for a change.  These
-records are inserted after the headline as an itemized list.  When
+records are inserted after the heading as an itemized list.  When
 taking a lot of notes, you might want to get the notes out of the way
 into a drawer.  Customize the variable ~org-log-into-drawer~ to get
 this behavior.
@@ -791,7 +791,7 @@ works also when setting ~org-todo-keywords~.
 
 If you use Org mode extensively, you may end up with enough TODO items
 that it starts to make sense to prioritize them.  Prioritizing can be
-done by placing a /priority cookie/ into the headline of a TODO item,
+done by placing a /priority cookie/ into the heading of a TODO item,
 like this
 
 : *** TODO [#A] Write letter to Sam Fortune
@@ -803,13 +803,13 @@ a difference only in the agenda.
 #+attr_texinfo: :sep ;
 - {{{kbd(C-c \,)}}} ::
 
-  Set the priority of the current headline.  Press {{{kbd(A)}}},
+  Set the priority of the current heading.  Press {{{kbd(A)}}},
   {{{kbd(B)}}} or {{{kbd(C)}}} to select a priority, or {{{kbd(SPC)}}}
   to remove the cookie.
 
 - {{{kbd(S-UP)}}} (~org-priority-up~); {{{kbd(S-DOWN)}}} (~org-priority-down~) ::
 
-  Increase/decrease the priority of the current headline.
+  Increase/decrease the priority of the current heading.
 
 ** Breaking Tasks Down into Subtasks
 :PROPERTIES:
@@ -821,7 +821,7 @@ It is often advisable to break down large tasks into smaller,
 manageable subtasks.  You can do this by creating an outline tree
 below a TODO item, with detailed subtasks on the tree.  To keep an
 overview of the fraction of subtasks that have already been marked
-as done, insert either =[/]= or =[%]= anywhere in the headline.  These
+as done, insert either =[/]= or =[%]= anywhere in the heading.  These
 cookies are updated each time the TODO status of a child changes, or
 when pressing {{{kbd(C-c C-c)}}} on the cookie.  For example:
 
@@ -873,18 +873,18 @@ The following commands work with checkboxes:
 
 * Tags
 :PROPERTIES:
-:DESCRIPTION: Tagging headlines and matching sets of tags.
+:DESCRIPTION: Tagging headings and matching sets of tags.
 :END:
 
 An excellent way to implement labels and contexts for
-cross-correlating information is to assign /tags/ to headlines.  Org
+cross-correlating information is to assign /tags/ to headings.  Org
 mode has extensive support for tags.
 
-Every headline can contain a list of tags; they occur at the end of
-the headline.  Tags are normal words containing letters, numbers, =_=,
+Every heading can contain a list of tags; they occur at the end of
+the heading.  Tags are normal words containing letters, numbers, =_=,
 and =@=.  Tags must be preceded and followed by a single colon, e.g.,
 =:work:=.  Several tags can be specified, as in =:work:urgent:=.  Tags
-by default are in bold face with the same color as the headline.
+by default are in bold face with the same color as the heading.
 
 ** Tag inheritance
 :PROPERTIES:
@@ -917,19 +917,19 @@ surrounds the entire file.  Use a line like this[fn:6]:
 :UNNUMBERED: notoc
 :END:
 
-Tags can simply be typed into the buffer at the end of a headline.
+Tags can simply be typed into the buffer at the end of a heading.
 After a colon, {{{kbd(M-TAB)}}} offers completion on tags.  There is
 also a special command for inserting tags:
 
 - {{{kbd(C-c C-q)}}} ::
 
-  Enter new tags for the current headline.  Org mode either offers
+  Enter new tags for the current heading.  Org mode either offers
   completion or a special single-key interface for setting tags, see
   below.
 
 - {{{kbd(C-c C-c)}}} ::
 
-  When point is in a headline, this does the same as {{{kbd(C-c
+  When point is in a heading, this does the same as {{{kbd(C-c
   C-q)}}}.
 
 Org supports tag insertion based on a /list of tags/.  By default this
@@ -980,7 +980,7 @@ or, if tags in the group should be mutually exclusive:
 
 When you search for a group tag, it return matches for all members in
 the group and its subgroups.  In an agenda view, filtering by a group
-tag displays or hide headlines tagged with at least one of the members
+tag displays or hide headings tagged with at least one of the members
 of the group or any of its subgroups.
 
 If you want to ignore group tags temporarily, toggle group tags
@@ -993,8 +993,8 @@ support with ~org-toggle-tags-groups~, bound to {{{kbd(C-c C-x q)}}}.
 
 - {{{kbd(C-c / m)}}} or {{{kbd(C-c \)}}} ::
 
-  Create a sparse tree with all headlines matching a tags search.
-  With a {{{kbd(C-u)}}} prefix argument, ignore headlines that are not
+  Create a sparse tree with all headings matching a tags search.
+  With a {{{kbd(C-u)}}} prefix argument, ignore headings that are not
   a TODO line.
 
 - {{{kbd(M-x org-agenda m)}}} ::
@@ -1091,7 +1091,7 @@ time information is called a /timestamp/ in Org mode.
 A timestamp is a specification of a date---possibly with a time or
 a range of times---in a special format, either =<2003-09-16 Tue>= or
 =<2003-09-16 Tue 09:39>= or =<2003-09-16 Tue 12:00-12:30>=.
-A timestamp can appear anywhere in the headline or body of an Org tree
+A timestamp can appear anywhere in the heading or body of an Org tree
 entry.  Its presence causes entries to be shown on specific dates in
 the agenda (see [[*The Weekly/daily Agenda]]).  We distinguish:
 
@@ -1207,7 +1207,7 @@ planning:
 - {{{kbd(C-c C-d)}}} ::
 
   Insert =DEADLINE= keyword along with a time stamp, in the line
-  following the headline.
+  following the heading.
 
   Meaning: the task---most likely a TODO item, though not
   necessarily---is supposed to be finished on that date.
@@ -1227,12 +1227,12 @@ planning:
 - {{{kbd(C-c C-s)}}} ::
 
   Insert =SCHEDULED= keyword along with a stamp, in the line following
-  the headline.
+  the heading.
 
   Meaning: you are planning to start working on that task on the given
   date[fn:7].
 
-  The headline is listed under the given date[fn:8].  In addition,
+  The heading is listed under the given date[fn:8].  In addition,
   a reminder that the scheduled date has passed is present in the
   compilation for /today/, until the entry is marked as done, i.e.,
   the task is automatically forwarded until completed.
@@ -1290,7 +1290,7 @@ a project.
 
 - {{{kbd(C-c C-x C-j)}}} ::
 
-  Jump to the headline of the currently clocked in task.  With
+  Jump to the heading of the currently clocked in task.  With
   a {{{kbd(C-u)}}} prefix argument, select the target task from a list
   of recently clocked tasks.
 
@@ -1374,7 +1374,7 @@ configuration would look like:
 
 #+begin_src emacs-lisp
 (setq org-capture-templates
-      '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
+      '(("t" "Todo" entry (file+heading "~/org/gtd.org" "Tasks")
          "* TODO %?\n  %i\n  %a")
         ("j" "Journal" entry (file+datetree "~/org/journal.org")
          "* %?\nEntered on %U\n  %i\n  %a")))
@@ -1415,7 +1415,7 @@ special command:
   completion.  The item (or all items in the region) is filed below
   the target heading as a subitem.
 
-  By default, all level 1 headlines in the current buffer are
+  By default, all level 1 headings in the current buffer are
   considered to be targets, but you can have more complex definitions
   across a number of files.  See the variable ~org-refile-targets~ for
   details.
@@ -1475,7 +1475,7 @@ example:
 :END:
 
 Due to the way Org works, TODO items, time-stamped items, and tagged
-headlines can be scattered throughout a file or even a number of
+headings can be scattered throughout a file or even a number of
 files.  To get an overview of open action items, or of events that are
 important for a particular date, this information must be collected,
 sorted and displayed in an organized way.
@@ -1535,7 +1535,7 @@ commands:
 
 - {{{kbd(m)}}}, {{{kbd(M)}}} ::
 
-  Create a list of headlines matching a given expression (see
+  Create a list of headings matching a given expression (see
   [[*Matching Tags and Properties]]).
 
 - {{{kbd(s)}}} ::
@@ -1607,15 +1607,15 @@ Buffer]].
 :DESCRIPTION: Structured information with fine-tuned search.
 :END:
 
-If headlines in the agenda files are marked with /tags/ (see [[*Tags]]),
-or have properties (see [[*Properties]]), you can select headlines based
+If headings in the agenda files are marked with /tags/ (see [[*Tags]]),
+or have properties (see [[*Properties]]), you can select headings based
 on this metadata and collect them into an agenda buffer.  The match
 syntax described here also applies when creating sparse trees with
 {{{kbd(C-c / m)}}}.
 
 - {{{kbd(M-x org-agenda m)}}} ::
 
-  Produce a list of all headlines that match a given set of tags.  The
+  Produce a list of all headings that match a given set of tags.  The
   command prompts for a selection criterion, which is a boolean logic
   expression with tags, like =+work+urgent-withboss= or =work|home=
   (see [[*Tags]]).  If you often need a specific search, define a custom
@@ -1623,7 +1623,7 @@ syntax described here also applies when creating sparse trees with
 
 - {{{kbd(M-x org-agenda M)}}} ::
 
-  Like {{{kbd(m)}}}, but only select headlines that are also TODO
+  Like {{{kbd(m)}}}, but only select headings that are also TODO
   items.
 
 A search string can use Boolean operators =&= for AND and =|= for OR.
@@ -1638,7 +1638,7 @@ only tags.
 
 - =+work-boss= ::
 
-  Select headlines tagged =work=, but discard those also tagged
+  Select headings tagged =work=, but discard those also tagged
   =boss=.
 
 - =work|laptop= ::
@@ -1811,7 +1811,7 @@ the agenda menu and the manual for a complete list.
 
 - {{{kbd($)}}} ::
 
-  Archive the subtree corresponding to the current headline.
+  Archive the subtree corresponding to the current heading.
 
 - {{{kbd(C-c C-s)}}} ::
 
@@ -1900,12 +1900,12 @@ matching.  The example above will therefore define:
 
 - {{{kbd(u)}}} ::
 
-  as a global tags search for headlines tagged =boss= but not
+  as a global tags search for headings tagged =boss= but not
   =urgent=.
 
 - {{{kbd(v)}}} ::
 
-  The same search, but limiting it to headlines that are also TODO
+  The same search, but limiting it to headings that are also TODO
   items.
 
 * Markup for Rich Contents
@@ -2137,8 +2137,8 @@ pressing {{{kbd(#)}}}.
 :DESCRIPTION: The if and where of the table of contents.
 :END:
 
-The table of contents includes all headlines in the document.  Its
-depth is therefore the same as the headline levels in the file.  If
+The table of contents includes all headings in the document.  Its
+depth is therefore the same as the heading levels in the file.  If
 you need to use a different depth, or turn it off entirely, set the
 ~org-export-with-toc~ variable accordingly.  You can achieve the same
 on a per file basis, using the following =toc= item in =OPTIONS=
@@ -2150,7 +2150,7 @@ keyword:
 #+end_example
 
 Org normally inserts the table of contents directly before the first
-headline of the file.
+heading of the file.
 
 ** Include Files
 :PROPERTIES:
@@ -2185,7 +2185,7 @@ are not exported.
 
 Finally, a =COMMENT= keyword at the beginning of an entry, but after
 any other keyword or priority cookie, comments out the entire subtree.
-The command below helps changing the comment status of a headline.
+The command below helps changing the comment status of a heading.
 
 - {{{kbd(C-c ;)}}} ::
 
@@ -2555,8 +2555,8 @@ involved.  Type one or more letters and invoke the hot key to complete
 the text in-place.
 
 For example, this command will complete TeX symbols after =\=, TODO
-keywords at the beginning of a headline, and tags after =:= in
-a headline.
+keywords at the beginning of a heading, and tags after =:= in
+a heading.
 
 
 ** Structure Templates
@@ -2584,13 +2584,13 @@ indentation scheme, as shown on the right in the following table.  It
 uses only one star and indents text to line with the heading:
 
 #+begin_example
-,* Top level headline             |    * Top level headline
+,* Top level heading             |    * Top level heading
 ,** Second level                  |      * Second level
 ,*** Third level                  |        * Third level
     some text                    |          some text
 ,*** Third level                  |        * Third level
     more text                    |          more text
-,* Another top level headline     |    * Another top level headline
+,* Another top level heading     |    * Another top level heading
 #+end_example
 
 This kind of view can be achieved dynamically at display time using
@@ -2604,7 +2604,7 @@ can turn it on for individual files using
 If you want the indentation to be hard space characters so that the
 plain text file looks as similar as possible to the Emacs display, Org
 supports you by helping to indent (with {{{kbd(TAB)}}}) text below
-each headline, by hiding leading stars, and by only using levels 1, 3,
+each heading, by hiding leading stars, and by only using levels 1, 3,
 etc to get two characters indentation for each level.  To get this
 support in a file, use
 
@@ -2623,7 +2623,7 @@ support in a file, use
 * Footnotes
 
 [fn:1] See the variable ~org-special-ctrl-a/e~ to configure special
-behavior of {{{kbd(C-a)}}} and {{{kbd(C-e)}}} in headlines.
+behavior of {{{kbd(C-a)}}} and {{{kbd(C-e)}}} in headings.
 
 [fn:2] If you do not want the line to be split, customize the variable
 ~org-M-RET-may-split-line~.
diff --git a/doc/org-manual.org b/doc/org-manual.org
index 977ef80b9..fe822a536 100644
--- a/doc/org-manual.org
+++ b/doc/org-manual.org
@@ -369,28 +369,28 @@ worked on.  Org greatly simplifies the use of outlines by compressing
 the entire show and hide functionalities into a single command,
 ~org-cycle~, which is bound to the {{{kbd(TAB)}}} key.
 
-** Headlines
+** Headings
 :PROPERTIES:
-:DESCRIPTION: How to typeset Org tree headlines.
+:DESCRIPTION: How to typeset Org tree headings.
 :END:
-#+cindex: headlines
+#+cindex: headings
 #+cindex: outline tree
 #+vindex: org-special-ctrl-a/e
 #+vindex: org-special-ctrl-k
 #+vindex: org-ctrl-k-protect-subtree
 
-Headlines define the structure of an outline tree.  Org headlines
+Headings define the structure of an outline tree.  Org headings
 start on the left margin[fn:3] with one or more stars followed by
 a space.  For example:
 
 #+begin_example
-,* Top level headline
+,* Top level heading
 ,** Second level
 ,*** Third level
     some text
 ,*** Third level
     more text
-,* Another top level headline
+,* Another top level heading
 #+end_example
 
 #+vindex: org-footnote-section
@@ -398,12 +398,12 @@ The name defined in ~org-footnote-section~ is reserved.  Do not use it
 as a title for your own headings.
 
 Some people find the many stars too noisy and would prefer an outline
-that has whitespace followed by a single star as headline starters.
+that has whitespace followed by a single star as heading starters.
 This can be achieved using a Org Indent minor mode.  See [[*A Cleaner
 Outline View]] for more information.
 
-Headlines are not numbered.  However, you may want to dynamically
-number some, or all, of them.  See [[*Dynamic Headline Numbering]].
+Headings are not numbered.  However, you may want to dynamically
+number some, or all, of them.  See [[*Dynamic Heading Numbering]].
 
 #+vindex: org-cycle-separator-lines
 An empty line after the end of a subtree is considered part of it and
@@ -449,7 +449,7 @@ Org uses just two commands, bound to {{{kbd(TAB)}}} and
   #+end_example
 
   #+vindex: org-cycle-emulate-tab
-  Point must be on a headline for this to work[fn:4].
+  Point must be on a heading for this to work[fn:4].
 
 - {{{kbd(S-TAB)}}} (~org-global-cycle~), {{{kbd(C-u TAB)}}} ::
 
@@ -469,7 +469,7 @@ Org uses just two commands, bound to {{{kbd(TAB)}}} and
   #+end_example
 
   When {{{kbd(S-TAB)}}} is called with a numeric prefix argument
-  {{{var(N)}}}, view contents only up to headlines of level
+  {{{var(N)}}}, view contents only up to headings of level
   {{{var(N)}}}.
 
   Note that inside tables (see [[*Tables]]), {{{kbd(S-TAB)}}} jumps to the
@@ -477,7 +477,7 @@ Org uses just two commands, bound to {{{kbd(TAB)}}} and
 
   #+vindex: org-cycle-global-at-bob
   You can run global cycling using {{{kbd(TAB)}}} only if point is at
-  the very beginning of the buffer, but not on a headline, and
+  the very beginning of the buffer, but not on a heading, and
   ~org-cycle-global-at-bob~ is set to a non-~nil~ value.
 
 - {{{kbd(C-u C-u TAB)}}} (~org-set-startup-visibility~) ::
@@ -592,13 +592,13 @@ invisible edits and process them.
 
 ** Motion
 :PROPERTIES:
-:DESCRIPTION: Jumping to other headlines.
+:DESCRIPTION: Jumping to other headings.
 :END:
-#+cindex: motion, between headlines
-#+cindex: jumping, to headlines
-#+cindex: headline navigation
+#+cindex: motion, between headings
+#+cindex: jumping, to headings
+#+cindex: heading navigation
 
-The following commands jump to other headlines in the buffer.
+The following commands jump to other headings in the buffer.
 
 - {{{kbd(C-c C-n)}}} (~org-next-visible-heading~) ::
 
@@ -641,7 +641,7 @@ The following commands jump to other headlines in the buffer.
 
   #+attr_texinfo: :columns 0.3 0.7
   | {{{kbd(TAB)}}}                  | Cycle visibility.               |
-  | {{{kbd(DOWN)}}} / {{{kbd(UP)}}} | Next/previous visible headline. |
+  | {{{kbd(DOWN)}}} / {{{kbd(UP)}}} | Next/previous visible heading. |
   | {{{kbd(RET)}}}                  | Select this location.           |
   | {{{kbd(/)}}}                    | Do a Sparse-tree search         |
 
@@ -649,8 +649,8 @@ The following commands jump to other headlines in the buffer.
   The following keys work if you turn off ~org-goto-auto-isearch~
 
   #+attr_texinfo: :columns 0.3 0.7
-  | {{{kbd(n)}}} / {{{kbd(p)}}}   | Next/previous visible headline.    |
-  | {{{kbd(f)}}} / {{{kbd(b)}}}   | Next/previous headline same level. |
+  | {{{kbd(n)}}} / {{{kbd(p)}}}   | Next/previous visible heading.    |
+  | {{{kbd(f)}}} / {{{kbd(b)}}}   | Next/previous heading same level. |
   | {{{kbd(u)}}}                  | One level up.                      |
   | {{{kbd(0)}}} ... {{{kbd(9)}}} | Digit argument.                    |
   | {{{kbd(q)}}}                  | Quit.                              |
@@ -661,10 +661,10 @@ The following commands jump to other headlines in the buffer.
 
 ** Structure Editing
 :PROPERTIES:
-:DESCRIPTION: Changing sequence and level of headlines.
+:DESCRIPTION: Changing sequence and level of headings.
 :END:
 #+cindex: structure editing
-#+cindex: headline, promotion and demotion
+#+cindex: heading, promotion and demotion
 #+cindex: promotion, of subtrees
 #+cindex: demotion, of subtrees
 #+cindex: subtree, cut and paste
@@ -688,7 +688,7 @@ The following commands jump to other headlines in the buffer.
   beginning of a regular line of text, turn that line into a heading.
 
   When this command is used in the middle of a line, the line is split
-  and the rest of the line becomes the new item or headline.  If you
+  and the rest of the line becomes the new item or heading.  If you
   do not want the line to be split, customize
   ~org-M-RET-may-split-line~.
 
@@ -716,7 +716,7 @@ The following commands jump to other headlines in the buffer.
   #+kindex: C-S-RET
   #+findex: org-insert-todo-heading-respect-content
   Insert new TODO entry with same level as current heading.  Like
-  {{{kbd(C-RET)}}}, the new headline is inserted after the current
+  {{{kbd(C-RET)}}}, the new heading is inserted after the current
   subtree.
 
 - {{{kbd(TAB)}}} (~org-cycle~) ::
@@ -741,10 +741,10 @@ The following commands jump to other headlines in the buffer.
   #+cindex: active region
   #+cindex: transient mark mode
   When there is an active region---i.e., when Transient Mark mode is
-  active---promotion and demotion work on all headlines in the region.
-  To select a region of headlines, it is best to place both point and
+  active---promotion and demotion work on all headings in the region.
+  To select a region of headings, it is best to place both point and
   mark at the beginning of a line, mark at the beginning of the first
-  headline, and point at the line just after the last headline to
+  heading, and point at the line just after the last heading to
   change.
 
 - {{{kbd(M-S-LEFT)}}} (~org-promote-subtree~) ::
@@ -799,7 +799,7 @@ The following commands jump to other headlines in the buffer.
   Yank subtree from kill ring.  This does modify the level of the
   subtree to make sure the tree fits in nicely at the yank position.
   The yank level can also be specified with a numeric prefix argument,
-  or by yanking after a headline marker like =****=.
+  or by yanking after a heading marker like =****=.
 
 - {{{kbd(C-y)}}} (~org-yank~) ::
 
@@ -842,7 +842,7 @@ The following commands jump to other headlines in the buffer.
   #+findex: org-sort
   Sort same-level entries.  When there is an active region, all
   entries in the region are sorted.  Otherwise the children of the
-  current headline are sorted.  The command prompts for the sorting
+  current heading are sorted.  The command prompts for the sorting
   method, which can be alphabetically, numerically, by time---first
   timestamp with active preferred, creation time, scheduled time,
   deadline time---by priority, by TODO keyword---in the sequence the
@@ -873,13 +873,13 @@ The following commands jump to other headlines in the buffer.
 
   #+kindex: C-c *
   #+findex: org-toggle-heading
-  Turn a normal line or plain list item into a headline---so that it
-  becomes a subheading at its location.  Also turn a headline into
+  Turn a normal line or plain list item into a heading---so that it
+  becomes a subheading at its location.  Also turn a heading into
   a normal line by removing the stars.  If there is an active region,
-  turn all lines in the region into headlines.  If the first line in
-  the region was an item, turn only the item lines into headlines.
-  Finally, if the first line is a headline, remove the stars from all
-  headlines in the region.
+  turn all lines in the region into headings.  If the first line in
+  the region was an item, turn only the item lines into headings.
+  Finally, if the first line is a heading, remove the stars from all
+  headings in the region.
 
 Note that when point is inside a table (see [[*Tables]]), the Meta-Cursor
 keys have different functionality.
@@ -897,7 +897,7 @@ keys have different functionality.
 An important feature of Org mode is the ability to construct /sparse
 trees/ for selected information in an outline tree, so that the entire
 document is folded as much as possible, but the selected information
-is made visible along with the headline structure above it[fn:7].
+is made visible along with the heading structure above it[fn:7].
 Just try it out and you will see immediately how it works.
 
 Org mode contains several commands creating such trees, all these
@@ -917,11 +917,11 @@ commands can be accessed through a dispatcher:
   #+findex: org-occur
   #+vindex: org-remove-highlights-with-change
   Prompts for a regexp and shows a sparse tree with all matches.  If
-  the match is in a headline, the headline is made visible.  If the
-  match is in the body of an entry, headline and body are made
+  the match is in a heading, the heading is made visible.  If the
+  match is in the body of an entry, heading and body are made
   visible.  In order to provide minimal context, also the full
-  hierarchy of headlines above the match is shown, as well as the
-  headline following the match.  Each match is also highlighted; the
+  hierarchy of headings above the match is shown, as well as the
+  heading following the match.  Each match is also highlighted; the
   highlights disappear when the buffer is changed by an editing
   command, or by pressing {{{kbd(C-c C-c)}}}[fn:8].  When called with
   a {{{kbd(C-u)}}} prefix argument, previous highlights are kept, so
@@ -1058,12 +1058,12 @@ to disable them individually.
   #+kindex: TAB
   #+findex: org-cycle
   #+vindex: org-cycle-include-plain-lists
-  Items can be folded just like headline levels.  Normally this works
+  Items can be folded just like heading levels.  Normally this works
   only if point is on a plain list item.  For more details, see the
   variable ~org-cycle-include-plain-lists~.  If this variable is set
   to ~integrate~, plain list items are treated like low-level
-  headlines.  The level of an item is then given by the indentation of
-  the bullet/number.  Items are always subordinate to real headlines,
+  headings.  The level of an item is then given by the indentation of
+  the bullet/number.  Items are always subordinate to real headings,
   however; the hierarchies remain completely separated.  In a new item
   with no text yet, the first {{{kbd(TAB)}}} demotes the item to
   become a child of the previous one.  Subsequent {{{kbd(TAB)}}}s move
@@ -1155,7 +1155,7 @@ to disable them individually.
 - {{{kbd(C-c *)}}} ::
 
   #+kindex: C-c *
-  Turn a plain list item into a headline---so that it becomes
+  Turn a plain list item into a heading---so that it becomes
   a subheading at its location.  See [[*Structure Editing]], for
   a detailed explanation.
 
@@ -1191,11 +1191,11 @@ to disable them individually.
 
 Sometimes you want to keep information associated with an entry, but
 you normally do not want to see it.  For this, Org mode has /drawers/.
-They can contain anything but a headline and another drawer.  Drawers
+They can contain anything but a heading and another drawer.  Drawers
 look like this:
 
 #+begin_example
-,** This is a headline
+,** This is a heading
 Still outside the drawer
 :DRAWERNAME:
 This is inside the drawer.
@@ -1209,14 +1209,14 @@ You can interactively insert a drawer at point by calling
 ~org-insert-drawer~, which is bound to {{{kbd(C-c C-x d)}}}.  With an
 active region, this command puts the region inside the drawer.  With
 a prefix argument, this command calls ~org-insert-property-drawer~,
-which creates a =PROPERTIES= drawer right below the current headline.
+which creates a =PROPERTIES= drawer right below the current heading.
 Org mode uses this special drawer for storing properties (see
 [[*Properties and Columns]]).  You cannot use it for anything else.
 
 Completion over drawer keywords is also possible using
 {{{kbd(M-TAB)}}}[fn:16].
 
-Visibility cycling (see [[*Visibility Cycling]]) on the headline hides and
+Visibility cycling (see [[*Visibility Cycling]]) on the heading hides and
 shows the entry, but keep the drawer collapsed to a single line.  In
 order to look inside the drawer, you need to move point to the drawer
 line and press {{{kbd(TAB)}}} there.
@@ -3056,7 +3056,7 @@ Org provides several refinements to internal navigation within
 a document.  Most notably, a construct like =[[#my-custom-id]]=
 specifically targets the entry with the =CUSTOM_ID= property set to
 =my-custom-id=.  Also, an internal link looking like =[[*Some
-section]]= points to a headline with the name =Some section=[fn:25].
+section]]= points to a heading with the name =Some section=[fn:25].
 
 #+cindex: targets, for links
 When the link does not belong to any of the cases above, Org looks for
@@ -3076,11 +3076,11 @@ it refers to, as in the following example
 | of | four cells |
 #+end_example
 
-#+vindex: org-link-search-must-match-exact-headline
-Ultimately, if none of the above succeeds, Org searches for a headline
+#+vindex: org-link-search-must-match-exact-heading
+Ultimately, if none of the above succeeds, Org searches for a heading
 that is exactly the link text but may also include a TODO keyword and
 tags, or initiates a plain text search, according to the value of
-~org-link-search-must-match-exact-headline~.
+~org-link-search-must-match-exact-heading~.
 
 Note that you must make sure custom IDs, dedicated targets, and names
 are unique throughout the document.  Org provides a linter to assist
@@ -3161,7 +3161,7 @@ Here is the full set of built-in link types:
    File links.  File name may be remote, absolute, or relative.
 
    Additionally, you can specify a line number, or a text search.
-   In Org files, you may link to a headline name, a custom ID, or a
+   In Org files, you may link to a heading name, a custom ID, or a
    code reference instead.
 
    As a special case, "file" prefix may be omitted if the file name
@@ -3205,7 +3205,7 @@ Here is the full set of built-in link types:
 
 - =id= ::
 
-  Link to a specific headline by its ID property, in an Org file.
+  Link to a specific heading by its ID property, in an Org file.
 
 - =info= ::
 
@@ -3244,8 +3244,8 @@ options:
 |            | =file:sometextfile::NNN= (jump to line number)           |
 |            | =file:projects.org=                                      |
 |            | =file:projects.org::some words= (text search)[fn:27]     |
-|            | =file:projects.org::*task title= (headline search)       |
-|            | =file:projects.org::#custom-id= (headline search)        |
+|            | =file:projects.org::*task title= (heading search)       |
+|            | =file:projects.org::#custom-id= (heading search)        |
 | attachment | =attachment:projects.org=                                |
 |            | =attachment:projects.org::some words= (text search)      |
 | docview    | =docview:papers/last.pdf::NNN=                           |
@@ -3325,13 +3325,13 @@ current buffer:
 - /Org mode buffers/ ::
 
   For Org files, if there is a =<<target>>= at point, the link points
-  to the target.  Otherwise it points to the current headline, which
+  to the target.  Otherwise it points to the current heading, which
   is also the description[fn:28].
 
   #+vindex: org-id-link-to-org-use-id
   #+cindex: @samp{CUSTOM_ID}, property
   #+cindex: @samp{ID}, property
-  If the headline has a =CUSTOM_ID= property, store a link to this
+  If the heading has a =CUSTOM_ID= property, store a link to this
   custom ID.  In addition or alternatively, depending on the value of
   ~org-id-link-to-org-use-id~, create and/or use a globally unique
   =ID= property for the link[fn:29].  So using this command in Org
@@ -3451,7 +3451,7 @@ generally, act on links.
   ~browse-url-at-point~), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
   the corresponding links, and execute the command in a shell link.
   When point is on an internal link, this command runs the
-  corresponding search.  When point is on the tags part of a headline,
+  corresponding search.  When point is on the tags part of a heading,
   it creates the corresponding tags view (see [[*Matching tags and
   properties]]).  If point is on a timestamp, it compiles the agenda for
   that date.  Furthermore, it visits text and remote files in =file=
@@ -3463,8 +3463,8 @@ generally, act on links.
   a {{{kbd(C-u C-u)}}} prefix.
 
   #+vindex: org-link-frame-setup
-  If point is on a headline, but not on a link, offer all links in the
-  headline and entry text.  If you want to setup the frame
+  If point is on a heading, but not on a link, offer all links in the
+  heading and entry text.  If you want to setup the frame
   configuration for following links, customize ~org-link-frame-setup~.
 
 - {{{kbd(RET)}}} ::
@@ -3563,7 +3563,7 @@ replacement text.  Here is an example:
 #+begin_src emacs-lisp
 (setq org-link-abbrev-alist
       '(("bugzilla"        . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
-        ("Nu Html Checker" . "https://validator.w3.org/nu/?doc=%h") 
+        ("Nu Html Checker" . "https://validator.w3.org/nu/?doc=%h")
 	("duckduckgo"      . "https://duckduckgo.com/?q=%s")
         ("omap"            . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
         ("ads"             . "https://ui.adsabs.harvard.edu/search/q=%20author%3A\"%s\"")))
@@ -3655,7 +3655,7 @@ link, together with explanations for each:
 
 - =*My Target= ::
 
-  In an Org file, restrict search to headlines.
+  In an Org file, restrict search to headings.
 
 - =#my-custom-id= ::
 
@@ -3722,7 +3722,7 @@ have to do.
 :ALT_TITLE: TODO Basics
 :END:
 
-Any headline becomes a TODO item when it starts with the word =TODO=,
+Any heading becomes a TODO item when it starts with the word =TODO=,
 for example:
 
 : *** TODO Write letter to Sam Fortune
@@ -3811,7 +3811,7 @@ with /TODO keywords/ (stored in ~org-todo-keywords~).  With special
 setup, the TODO keyword system can work differently in different
 files.
 
-Note that /tags/ are another way to classify headlines in general and
+Note that /tags/ are another way to classify headings in general and
 TODO items in particular (see [[*Tags]]).
 
 *** TODO keywords as workflow states
@@ -4133,7 +4133,7 @@ command ~org-todo~ with a prefix argument.
 
   #+kindex: C-u C-c C-t
   Prompt for a note and record a the time of the TODO state change.
-  The note is inserted as a list item below the headline, but can also
+  The note is inserted as a list item below the heading, but can also
   be placed into a drawer, see [[*Tracking TODO state changes]].
 
 If you want to be more systematic, Org mode can automatically record a
@@ -4159,7 +4159,7 @@ TODO item was marked as done.  This can be achieved with[fn:41]
 #+texinfo: @noindent
 Then each time you turn an entry from a TODO (not-done) state into any
 of the DONE states, a line =CLOSED: [timestamp]= is inserted just
-after the headline.  If you turn the entry back into a TODO item
+after the heading.  If you turn the entry back into a TODO item
 through further state cycling, that line is removed again.  If you
 turn the entry back to a non-TODO state (by pressing {{{kbd(C-c C-t
 SPC)}}} for example), that line is also removed, unless you set
@@ -4186,7 +4186,7 @@ entry with a =Closing Note= heading.
 You might want to automatically keep track of when a state change
 occurred and maybe take a note about this change.  You can either
 record just a timestamp, or a time-stamped note.  These records are
-inserted after the headline as an itemized list, newest first[fn:43].
+inserted after the heading as an itemized list, newest first[fn:43].
 When taking a lot of notes, you might want to get the notes out of the
 way into a drawer (see [[*Drawers]]).  Customize the variable
 ~org-log-into-drawer~ to get this behavior---the recommended drawer
@@ -4371,7 +4371,7 @@ example.
 
 If you use Org mode extensively, you may end up with enough TODO items
 that it starts to make sense to prioritize them.  Prioritizing can be
-done by placing a /priority cookie/ into the headline of a TODO item
+done by placing a /priority cookie/ into the heading of a TODO item
 right after the TODO keyword, like this:
 
 : *** TODO [#A] Write letter to Sam Fortune
@@ -4401,10 +4401,10 @@ TODO items.
 
   #+kindex: C-c ,
   #+findex: org-priority
-  Set the priority of the current headline.  The command prompts for
+  Set the priority of the current heading.  The command prompts for
   a priority character =A=, =B= or =C=.  When you press {{{kbd(SPC)}}}
   instead, the priority cookie, if one is set, is removed from the
-  headline.  The priorities can also be changed "remotely" from the
+  heading.  The priorities can also be changed "remotely" from the
   agenda buffer with the {{{kbd(\,)}}} command (see [[*Commands in the
   Agenda Buffer]]).
 
@@ -4415,7 +4415,7 @@ TODO items.
   #+findex: org-priority-up
   #+findex: org-priority-down
   #+vindex: org-priority-start-cycle-with-default
-  Increase/decrease the priority of the current headline[fn:46].  Note
+  Increase/decrease the priority of the current heading[fn:46].  Note
   that these keys are also used to modify timestamps (see [[*Creating
   Timestamps]]).  See also [[*Packages that conflict with Org mode]], for
   a discussion of the interaction with shift-selection.
@@ -4449,7 +4449,7 @@ It is often advisable to break down large tasks into smaller,
 manageable subtasks.  You can do this by creating an outline tree
 below a TODO item, with detailed subtasks on the tree[fn:47].  To keep
 an overview of the fraction of subtasks that have already been marked
-as done, insert either =[/]= or =[%]= anywhere in the headline.  These
+as done, insert either =[/]= or =[%]= anywhere in the heading.  These
 cookies are updated each time the TODO status of a child changes, or
 when pressing {{{kbd(C-c C-c)}}} on the cookie.  For example:
 
@@ -4536,14 +4536,14 @@ The =[2/4]= and =[1/3]= in the first and second line are cookies
 indicating how many checkboxes present in this entry have been checked
 off, and the total number of checkboxes present.  This can give you an
 idea on how many checkboxes remain, even without opening a folded
-entry.  The cookies can be placed into a headline or into (the first
+entry.  The cookies can be placed into a heading or into (the first
 line of) a plain list item.  Each cookie covers checkboxes of direct
-children structurally below the headline/item on which the cookie
+children structurally below the heading/item on which the cookie
 appears[fn:49].  You have to insert the cookie yourself by typing
 either =[/]= or =[%]=.  With =[/]= you get an =n out of m= result, as
 in the examples above.  With =[%]= you get information about the
 percentage of checkboxes checked (in the above example, this would be
-=[50%]= and =[33%]=, respectively).  In a headline, a cookie can count
+=[50%]= and =[33%]=, respectively).  In a heading, a cookie can count
 either checkboxes below the heading or TODO states of children, and it
 displays whatever was changed last.  Set the property =COOKIE_DATA= to
 either =checkbox= or =todo= to resolve this issue.
@@ -4578,8 +4578,8 @@ The following commands work with checkboxes:
     first.  With a prefix argument, add or remove the checkbox for all
     items in the region.
 
-  - If point is in a headline, toggle checkboxes in the region between
-    this headline and the next---so /not/ the entire subtree.
+  - If point is in a heading, toggle checkboxes in the region between
+    this heading and the next---so /not/ the entire subtree.
 
   - If there is no active region, just toggle the checkbox at point.
 
@@ -4632,23 +4632,23 @@ The following commands work with checkboxes:
 
 * Tags
 :PROPERTIES:
-:DESCRIPTION: Tagging headlines and matching sets of tags.
+:DESCRIPTION: Tagging headings and matching sets of tags.
 :END:
 #+cindex: tags
-#+cindex: headline tagging
+#+cindex: heading tagging
 #+cindex: matching, tags
 #+cindex: sparse tree, tag based
 
 An excellent way to implement labels and contexts for
-cross-correlating information is to assign /tags/ to headlines.  Org
+cross-correlating information is to assign /tags/ to headings.  Org
 mode has extensive support for tags.
 
 #+vindex: org-tag-faces
-Every headline can contain a list of tags; they occur at the end of
-the headline.  Tags are normal words containing letters, numbers, =_=,
+Every heading can contain a list of tags; they occur at the end of
+the heading.  Tags are normal words containing letters, numbers, =_=,
 and =@=.  Tags must be preceded and followed by a single colon, e.g.,
 =:work:=.  Several tags can be specified, as in =:work:urgent:=.  Tags
-by default are in bold face with the same color as the headline.  You
+by default are in bold face with the same color as the heading.  You
 may specify special faces for specific tags using the variable
 ~org-tag-faces~, in much the same way as you can for TODO keywords
 (see [[*Faces for TODO keywords]]).
@@ -4688,7 +4688,7 @@ use the variables ~org-use-tag-inheritance~ and
 ~org-tags-exclude-from-inheritance~.
 
 #+vindex: org-tags-match-list-sublevels
-When a headline matches during a tags search while tag inheritance is
+When a heading matches during a tags search while tag inheritance is
 turned on, all the sublevels in the same tree---for a simple match
 form---match as well[fn:52].  The list of matches may then become
 very long.  If you only want to see the first tags match in a subtree,
@@ -4707,13 +4707,13 @@ up agenda generation.
 
 ** Setting Tags
 :PROPERTIES:
-:DESCRIPTION: How to assign tags to a headline.
+:DESCRIPTION: How to assign tags to a heading.
 :END:
 #+cindex: setting tags
 #+cindex: tags, setting
 
 #+kindex: M-TAB
-Tags can simply be typed into the buffer at the end of a headline.
+Tags can simply be typed into the buffer at the end of a heading.
 After a colon, {{{kbd(M-TAB)}}} offers completion on tags.  There is
 also a special command for inserting tags:
 
@@ -4723,7 +4723,7 @@ also a special command for inserting tags:
   #+findex: org-set-tags-command
   #+cindex: completion, of tags
   #+vindex: org-tags-column
-  Enter new tags for the current headline.  Org mode either offers
+  Enter new tags for the current heading.  Org mode either offers
   completion or a special single-key interface for setting tags, see
   below.  After pressing {{{kbd(RET)}}}, the tags are inserted and
   aligned to ~org-tags-column~.  When called with a {{{kbd(C-u)}}}
@@ -4735,7 +4735,7 @@ also a special command for inserting tags:
 - {{{kbd(C-c C-c)}}} (~org-set-tags-command~) ::
 
   #+kindex: C-c C-c
-  When point is in a headline, this does the same as {{{kbd(C-c
+  When point is in a heading, this does the same as {{{kbd(C-c
   C-q)}}}.
 
 #+vindex: org-complete-tags-always-offer-all-agenda-tags
@@ -4828,7 +4828,7 @@ by the following configuration:
 
 If at least one tag has a selection key then pressing {{{kbd(C-c
 C-c)}}} automatically presents you with a special interface, listing
-inherited tags, the tags of the current headline, and a list of all
+inherited tags, the tags of the current heading, and a list of all
 valid tags with corresponding keys[fn:54].
 
 Pressing keys assigned to tags adds or removes them from the list of
@@ -4880,7 +4880,7 @@ In this interface, you can also use the following special keys:
   using expert mode, the first {{{kbd(C-c)}}} displays the selection
   window.
 
-This method lets you assign tags to a headline with very few keys.
+This method lets you assign tags to a heading with very few keys.
 With the above setup, you could clear the current tags and set
 =@home=, =laptop= and =pc= tags with just the following keys:
 {{{kbd(C-c C-c SPC h l p RET)}}}.  Switching from =@home= to =@work=
@@ -4918,7 +4918,7 @@ to classify nodes in a document or set of documents.
 
 When you search for a group tag, it return matches for all members in
 the group and its subgroups.  In an agenda view, filtering by a group
-tag displays or hide headlines tagged with at least one of the members
+tag displays or hide headings tagged with at least one of the members
 of the group or any of its subgroups.  This makes tag searches and
 filters even more flexible.
 
@@ -5018,8 +5018,8 @@ related information into special lists.
   #+kindex: C-c / m
   #+kindex: C-c \
   #+findex: org-match-sparse-tree
-  Create a sparse tree with all headlines matching a tags search.
-  With a {{{kbd(C-u)}}} prefix argument, ignore headlines that are not
+  Create a sparse tree with all headings matching a tags search.
+  With a {{{kbd(C-u)}}} prefix argument, ignore headings that are not
   a TODO line.
 
 - {{{kbd(M-x org-agenda m)}}} (~org-tags-view~) ::
@@ -5079,7 +5079,7 @@ Properties can be conveniently edited and viewed in column view (see
 Properties are key--value pairs.  When they are associated with
 a single entry or with a tree they need to be inserted into a special
 drawer (see [[*Drawers]]) with the name =PROPERTIES=, which has to be
-located right below a headline, and its planning line (see [[*Deadlines
+located right below a heading, and its planning line (see [[*Deadlines
 and Scheduling]]) when applicable.  Each property is specified on
 a single line, with the key---surrounded by colons---first, and the
 value after it.  Keys are case-insensitive.  Here is an example:
@@ -5118,8 +5118,8 @@ disks in a box like this:
 #+end_example
 
 Properties can be inserted on buffer level.  That means they apply
-before the first headline and can be inherited by all entries in a
-file.  Property blocks defined before first headline needs to be
+before the first heading and can be inherited by all entries in a
+file.  Property blocks defined before first heading needs to be
 located at the top of the buffer, allowing only comments above.
 
 Properties can also be defined using lines like:
@@ -5187,7 +5187,7 @@ The following commands help to work with properties:
   #+findex: org-insert-drawer
   Insert a property drawer into the current entry.  The drawer is
   inserted early in the entry, but after the lines with planning
-  information like deadlines.  If before first headline the drawer is
+  information like deadlines.  If before first heading the drawer is
   inserted at the top of the drawer after any potential comments.
 
 - {{{kbd(C-c C-c)}}} (~org-property-action~) ::
@@ -5266,10 +5266,10 @@ not be used as keys in the properties drawer:
 | =CLOSED=       | When was this entry closed?                                    |
 | =DEADLINE=     | The deadline timestamp.                                        |
 | =FILE=         | The filename the entry is located in.                          |
-| =ITEM=         | The headline of the entry.                                     |
+| =ITEM=         | The heading of the entry.                                     |
 | =PRIORITY=     | The priority of the entry, a string with a single letter.      |
 | =SCHEDULED=    | The scheduling timestamp.                                      |
-| =TAGS=         | The tags defined directly in the headline.                     |
+| =TAGS=         | The tags defined directly in the heading.                     |
 | =TIMESTAMP=    | The first keyword-less timestamp in the entry.                 |
 | =TIMESTAMP_IA= | The first inactive timestamp in the entry.                     |
 | =TODO=         | The TODO keyword of the entry.                                 |
@@ -5291,7 +5291,7 @@ Searches]]).
   #+kindex: C-c \
   #+findex: org-match-sparse-tree
   Create a sparse tree with all matching entries.  With
-  a {{{kbd(C-u)}}} prefix argument, ignore headlines that are not
+  a {{{kbd(C-u)}}} prefix argument, ignore headings that are not
   a TODO line.
 
 - {{{kbd(M-x org-agenda m)}}} (~org-tags-view~) ::
@@ -5385,12 +5385,12 @@ A great way to view and edit properties in an outline tree is /column
 view/.  In column view, each outline node is turned into a table row.
 Columns in this table provide access to properties of the entries.
 Org mode implements columns by overlaying a tabular structure over the
-headline of each item.  While the headlines have been turned into
+heading of each item.  While the headings have been turned into
 a table row, you can still change the visibility of the outline tree.
 For example, you get a compact table by switching to "contents"
 view---{{{kbd(S-TAB)}}} {{{kbd(S-TAB)}}}, or simply {{{kbd(c)}}}
 while column view is active---but you can still open, read, and edit
-the entry below each headline.  Or, you can switch to column view
+the entry below each heading.  Or, you can switch to column view
 after executing a sparse tree command and in this way get a table only
 for the selected items.  Column view also works in agenda buffers (see
 [[*Agenda Views]]) where queries have collected selected items, possibly
@@ -5421,7 +5421,7 @@ a =COLUMNS= property to the top node of that tree, for example:
    :END:
 #+end_example
 
-A =COLUMNS= property within a property drawer before first headline
+A =COLUMNS= property within a property drawer before first heading
 will apply to the entire file.  As an addition to property drawers,
 keywords can also be defined for an entire file using a line like:
 
@@ -5525,7 +5525,7 @@ allowed values[fn:57].
 
 #+texinfo: @noindent
 The first column, =%25ITEM=, means the first 25 characters of the item
-itself, i.e., of the headline.  You probably always should start the
+itself, i.e., of the heading.  You probably always should start the
 column definition with the =ITEM= specifier.  The other specifiers
 create columns =Owner= with a list of names as allowed values, for
 =Status= with four different possible values, and for a checkbox field
@@ -5554,7 +5554,7 @@ either for all clocks or just for today.
   #+kindex: C-c C-x C-c
   #+vindex: org-columns
   #+vindex: org-columns-default-format
-  Turn on column view.  If point is before the first headline in the
+  Turn on column view.  If point is before the first heading in the
   file, column view is turned on for the entire file, using the
   =#+COLUMNS= definition.  If point is somewhere inside the outline,
   this command searches the hierarchy, up from point, for a =COLUMNS=
@@ -5715,14 +5715,14 @@ This dynamic block has the following parameters:
 - =:match= ::
 
   When set to a string, use this as a tags/property match filter to
-  select only a subset of the headlines in the scope set by the ~:id~
+  select only a subset of the headings in the scope set by the ~:id~
   parameter.
 
 
 - =:hlines= ::
 
   When ~t~, insert an hline after every line.  When a number N, insert
-  an hline before each headline with level ~<= N~.
+  an hline before each heading with level ~<= N~.
 
 - =:vlines= ::
 
@@ -5820,7 +5820,7 @@ is used in a much wider sense.
 A timestamp is a specification of a date (possibly with a time or
 a range of times) in a special format, either =<2003-09-16 Tue>= or
 =<2003-09-16 Tue 09:39>= or =<2003-09-16 Tue 12:00-12:30>=[fn:59].
-A timestamp can appear anywhere in the headline or body of an Org tree
+A timestamp can appear anywhere in the heading or body of an Org tree
 entry.  Its presence causes entries to be shown on specific dates in
 the agenda (see [[*Weekly/daily agenda]]).  We distinguish:
 
@@ -5830,7 +5830,7 @@ the agenda (see [[*Weekly/daily agenda]]).  We distinguish:
   #+cindex: appointment
   A simple timestamp just assigns a date/time to an item.  This is
   just like writing down an appointment or event in a paper agenda.
-  In the agenda display, the headline of an entry associated with
+  In the agenda display, the heading of an entry associated with
   a plain timestamp is shown exactly on that date.
 
   #+begin_example
@@ -5870,7 +5870,7 @@ the agenda (see [[*Weekly/daily agenda]]).  We distinguish:
 
   #+cindex: timerange
   #+cindex: date range
-  Two timestamps connected by =--= denote a range.  The headline is
+  Two timestamps connected by =--= denote a range.  The heading is
   shown on the first and last day of the range, and on any dates that
   are displayed and fall in the range.  Here is an example:
 
@@ -5977,7 +5977,7 @@ format.
   contains a time range like =15:30-16:30=, modifying the first time
   also shifts the second, shifting the time block with constant
   length.  To change the length, modify the second time.  Note that if
-  point is in a headline and not at a timestamp, these same keys
+  point is in a heading and not at a timestamp, these same keys
   modify the priority of an item (see [[*Priorities]]).  The key bindings
   also conflict with shift-selection and related modes (see [[*Packages
   that conflict with Org mode]]).
@@ -6208,7 +6208,7 @@ immediately after the task they refer to.
   date.
 
   #+vindex: org-agenda-skip-scheduled-if-done
-  The headline is listed under the given date[fn:65].  In addition,
+  The heading is listed under the given date[fn:65].  In addition,
   a reminder that the scheduled date has passed is present in the
   compilation for /today/, until the entry is marked as done, i.e.,
   the task is automatically forwarded until completed.
@@ -6268,7 +6268,7 @@ schedule an item:[fn:66]
   #+findex: org-deadline
   #+vindex: org-log-redeadline
   Insert =DEADLINE= keyword along with a stamp.  The insertion happens
-  in the line directly following the headline.  Remove any =CLOSED=
+  in the line directly following the heading.  Remove any =CLOSED=
   timestamp .  When called with a prefix argument, also remove any
   existing deadline from the entry.  Depending on the variable
   ~org-log-redeadline~, take a note when changing an existing
@@ -6280,7 +6280,7 @@ schedule an item:[fn:66]
   #+findex: org-schedule
   #+vindex: org-log-reschedule
   Insert =SCHEDULED= keyword along with a stamp.  The insertion
-  happens in the line directly following the headline.  Remove any
+  happens in the line directly following the heading.  Remove any
   =CLOSED= timestamp.  When called with a prefix argument, also remove
   the scheduling date from the entry.  Depending on the variable
   ~org-log-reschedule~, take a note when changing an existing
@@ -6574,7 +6574,7 @@ prompted about what to do with it.
 
   #+kindex: C-c C-x C-j
   #+findex: or-clock-goto
-  Jump to the headline of the currently clocked in task.  With
+  Jump to the heading of the currently clocked in task.  With
   a {{{kbd(C-u)}}} prefix argument, select the target task from a list
   of recently clocked tasks.
 
@@ -6584,7 +6584,7 @@ prompted about what to do with it.
   #+findex: org-clock-display
   #+vindex: org-remove-highlights-with-change
   Display time summaries for each subtree in the current buffer.  This
-  puts overlays at the end of each headline, showing the total time
+  puts overlays at the end of each heading, showing the total time
   recorded under that heading, including the time of any subheadings.
   You can use visibility cycling to study the tree, but the overlays
   disappear when you change the buffer (see variable
@@ -6762,17 +6762,17 @@ using the =:formatter= parameter.
 
 - =:link= ::
 
-  Link the item headlines in the table to their origins.
+  Link the item headings in the table to their origins.
 
 - =:narrow= ::
 
-  An integer to limit the width of the headline column in the Org
-  table.  If you write it like =50!=, then the headline is also
+  An integer to limit the width of the heading column in the Org
+  table.  If you write it like =50!=, then the heading is also
   shortened in export.
 
 - =:indent= ::
 
-  Indent each headline field according to its level.
+  Indent each heading field according to its level.
 
 - =:hidefiles= ::
 
@@ -6806,7 +6806,7 @@ using the =:formatter= parameter.
 
 - =:tags= ::
 
-  When this flag is non-~nil~, show the headline's tags.
+  When this flag is non-~nil~, show the heading's tags.
 
 - =:properties= ::
 
@@ -7193,7 +7193,7 @@ special command:
   the target heading as a subitem.  Depending on
   ~org-reverse-note-order~, it is either the first or last subitem.
 
-  By default, all level 1 headlines in the current buffer are
+  By default, all level 1 headings in the current buffer are
   considered to be targets, but you can have more complex definitions
   across a number of files.  See the variable ~org-refile-targets~ for
   details.  If you would like to select a location via
@@ -7297,10 +7297,10 @@ file, the archive file.
 - {{{kbd(C-u C-c C-x C-s)}}} ::
 
   #+kindex: C-u C-c C-x C-s
-  Check if any direct children of the current headline could be moved
+  Check if any direct children of the current heading could be moved
   to the archive.  To do this, check each subtree for open TODO
   entries.  If none is found, the command offers to move it to the
-  archive location.  If point is /not/ on a headline when this command
+  archive location.  If point is /not/ on a heading when this command
   is invoked, check level 1 trees.
 
 - {{{kbd(C-u C-u C-c C-x C-s)}}} ::
@@ -7351,7 +7351,7 @@ If you want to just switch off---for agenda views---certain subtrees
 without moving them to a different file, you can use the =ARCHIVE=
 tag.
 
-A headline that is marked with the =ARCHIVE= tag (see [[*Tags]]) stays at
+A heading that is marked with the =ARCHIVE= tag (see [[*Tags]]) stays at
 its location in the outline tree, but behaves in the following way:
 
 -
@@ -7378,7 +7378,7 @@ its location in the outline tree, but behaves in the following way:
 
 -
   #+vindex: org-export-with-archived-trees
-  Archived trees are not exported (see [[*Exporting]]), only the headline
+  Archived trees are not exported (see [[*Exporting]]), only the heading
   is.  Configure the details using the variable
   ~org-export-with-archived-trees~.
 
@@ -7393,17 +7393,17 @@ The following commands help manage the =ARCHIVE= tag:
 
   #+kindex: C-c C-x a
   #+findex: org-toggle-archive-tag
-  Toggle the archive tag for the current headline.  When the tag is
-  set, the headline changes to a shadowed face, and the subtree below
+  Toggle the archive tag for the current heading.  When the tag is
+  set, the heading changes to a shadowed face, and the subtree below
   it is hidden.
 
 - {{{kbd(C-u C-c C-x a)}}} ::
 
   #+kindex: C-u C-c C-x a
-  Check if any direct children of the current headline should be
+  Check if any direct children of the current heading should be
   archived.  To do this, check each subtree for open TODO entries.  If
   none is found, the command offers to set the =ARCHIVE= tag for the
-  child.  If point is /not/ on a headline when this command is
+  child.  If point is /not/ on a heading when this command is
   invoked, check the level 1 trees.
 
 - {{{kbd(C-c C-TAB)}}} (~org-force-cycle-archived~) ::
@@ -7559,7 +7559,7 @@ configuration would look like:
 
 #+begin_src emacs-lisp
 (setq org-capture-templates
-      '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
+      '(("t" "Todo" entry (file+heading "~/org/gtd.org" "Tasks")
          "* TODO %?\n  %i\n  %a")
         ("j" "Journal" entry (file+datetree "~/org/journal.org")
          "* %?\nEntered on %U\n  %i\n  %a")))
@@ -7623,7 +7623,7 @@ Now lets look at the elements of a template definition.  Each entry in
 
   - ~entry~ ::
 
-    An Org mode node, with a headline.  Will be filed as the child of
+    An Org mode node, with a heading.  Will be filed as the child of
     the target entry or as a top-level entry.  The target file should
     be an Org file.
 
@@ -7670,7 +7670,7 @@ Now lets look at the elements of a template definition.  Each entry in
 
     Filing as child of this entry, or in the body of the entry.
 
-  - =(file+headline "filename" "node headline")= ::
+  - =(file+heading "filename" "node heading")= ::
 
     Fast configuration if the target heading is unique in the file.
 
@@ -8175,7 +8175,7 @@ mentioning.
   A=.
 
   Inheritance works the same way for both =ID= and =DIR= property.  If
-  both properties are defined on the same headline then =DIR= takes
+  both properties are defined on the same heading then =DIR= takes
   precedence.  This is also true if inheritance is enabled.  If =DIR=
   is inherited from a parent node in the outline, that property still
   takes precedence over an =ID= property defined on the node itself.
@@ -8346,7 +8346,7 @@ Entries=, whenever the following command is used:
   #+kindex: C-c C-x G
   Prompt for a feed name and go to the inbox configured for this feed.
 
-Under the same headline, Org creates a drawer =FEEDSTATUS= in which it
+Under the same heading, Org creates a drawer =FEEDSTATUS= in which it
 stores information about the status of items in the feed, to avoid
 adding the same item several times.
 
@@ -8360,7 +8360,7 @@ For more information, including how to read atom feeds, see
 #+cindex: agenda views
 
 Due to the way Org works, TODO items, time-stamped items, and tagged
-headlines can be scattered throughout a file or even a number of
+headings can be scattered throughout a file or even a number of
 files.  To get an overview of open action items, or of events that are
 important for a particular date, this information must be collected,
 sorted and displayed in an organized way.
@@ -8373,7 +8373,7 @@ a separate buffer.  Six different view types are provided:
 
 - a /TODO list/ that covers all unfinished action items,
 
-- a /match view/, showings headlines based on the tags, properties,
+- a /match view/, showings headings based on the tags, properties,
   and TODO state associated with them,
 
 - a /text search view/ that shows all entries from multiple files that
@@ -8470,7 +8470,7 @@ scope for an extended period, use the following commands:
   #+findex: org-agenda-set-restriction-lock
   Restrict the agenda to the current subtree.  If there already is
   a restriction at point, remove it.  When called with a universal
-  prefix argument or with point before the first headline in a file,
+  prefix argument or with point before the first heading in a file,
   set the agenda scope to the entire file.  This restriction remains
   in effect until removed with {{{kbd(C-c C-x >)}}}, or by typing
   either {{{kbd(<)}}} or {{{kbd(>)}}} in the agenda dispatcher.  If
@@ -8525,7 +8525,7 @@ commands:
 
 - {{{kbd(m)}}}, {{{kbd(M)}}} ::
 
-  Create a list of headlines matching a given expression (see
+  Create a list of headings matching a given expression (see
   [[*Matching tags and properties]]).
 
 - {{{kbd(s)}}} ::
@@ -8820,7 +8820,7 @@ a TODO entry with a single key press.  The commands available in the
 TODO list are described in [[*Commands in the Agenda Buffer]].
 
 #+cindex: sublevels, inclusion into TODO list
-Normally the global TODO list simply shows all headlines with TODO
+Normally the global TODO list simply shows all headings with TODO
 keywords.  This list can become very long.  There are two ways to keep
 it more compact:
 
@@ -8843,7 +8843,7 @@ it more compact:
   #+vindex: org-agenda-todo-list-sublevels
   TODO items may have sublevels to break up the task into subtasks.
   In such cases it may be enough to list only the highest level TODO
-  headline and omit the sublevels from the global list.  Configure the
+  heading and omit the sublevels from the global list.  Configure the
   variable ~org-agenda-todo-list-sublevels~ to get this behavior.
 
 *** Matching tags and properties
@@ -8855,9 +8855,9 @@ it more compact:
 #+cindex: tags view
 #+cindex: match view
 
-If headlines in the agenda files are marked with /tags/ (see [[*Tags]]),
+If headings in the agenda files are marked with /tags/ (see [[*Tags]]),
 or have properties (see [[*Properties and Columns]]), you can select
-headlines based on this metadata and collect them into an agenda
+headings based on this metadata and collect them into an agenda
 buffer.  The match syntax described here also applies when creating
 sparse trees with {{{kbd(C-c / m)}}}.
 
@@ -8865,7 +8865,7 @@ sparse trees with {{{kbd(C-c / m)}}}.
 
   #+kindex: m @r{(Agenda dispatcher)}
   #+findex: org-tags-view
-  Produce a list of all headlines that match a given set of tags.  The
+  Produce a list of all headings that match a given set of tags.  The
   command prompts for a selection criterion, which is a boolean logic
   expression with tags, like =+work+urgent-withboss= or =work|home=
   (see [[*Tags]]).  If you often need a specific search, define a custom
@@ -8877,7 +8877,7 @@ sparse trees with {{{kbd(C-c / m)}}}.
   #+findex: org-tags-view
   #+vindex: org-tags-match-list-sublevels
   #+vindex: org-agenda-tags-todo-honor-ignore-options
-  Like {{{kbd(m)}}}, but only select headlines that are also TODO
+  Like {{{kbd(m)}}}, but only select headings that are also TODO
   items and force checking subitems (see the variable
   ~org-tags-match-list-sublevels~).  To exclude scheduled/deadline
   items, see the variable ~org-agenda-tags-todo-honor-ignore-options~.
@@ -8900,7 +8900,7 @@ only tags.
 
 - =+work-boss= ::
 
-  Select headlines tagged =work=, but discard those also tagged
+  Select headings tagged =work=, but discard those also tagged
   =boss=.
 
 - =work|laptop= ::
@@ -8914,14 +8914,14 @@ only tags.
 
 #+cindex: regular expressions, with tags search
 Instead of a tag, you may also specify a regular expression enclosed
-in curly braces.  For example, =work+{^boss.*}= matches headlines that
+in curly braces.  For example, =work+{^boss.*}= matches headings that
 contain the tag =:work:= and any tag /starting/ with =boss=.
 
 #+cindex: group tags, as regular expressions
 Group tags (see [[*Tag Hierarchy]]) are expanded as regular expressions.
 E.g., if =work= is a group tag for the group =:work:lab:conf:=, then
 searching for =work= also searches for ={\(?:work\|lab\|conf\)}= and
-searching for =-work= searches for all headlines but those with one of
+searching for =-work= searches for all headings but those with one of
 the tags in the group (i.e., =-{\(?:work\|lab\|conf\)}=).
 
 #+cindex: TODO keyword matching, with tags search
@@ -8934,7 +8934,7 @@ special properties that represent other metadata (see [[*Special
 Properties]]).  For example, the property =TODO= represents the TODO
 keyword of the entry.  Or, the property =LEVEL= represents the level
 of an entry.  So searching =+LEVEL=3+boss-TODO​="DONE"= lists all level
-three headlines that have the tag =boss= and are /not/ marked with the
+three headings that have the tag =boss= and are /not/ marked with the
 TODO keyword =DONE=.  In buffers with ~org-odd-levels-only~ set,
 =LEVEL= does not count the number of stars, but =LEVEL=2= corresponds
 to 3 stars etc.
@@ -9092,7 +9092,7 @@ and define next actions for them.
 
 You almost certainly need to configure this view before it works for
 you.  The built-in default assumes that all your projects are level-2
-headlines, and that a project is not stuck if it has at least one
+headings, and that a project is not stuck if it has at least one
 entry marked with a TODO keyword =TODO= or =NEXT= or =NEXTACTION=.
 
 Let's assume that you, in your own way of using Org mode, identify
@@ -9132,7 +9132,7 @@ of the item and other important information.  You can customize in
 which column tags are displayed through ~org-agenda-tags-column~.  You
 can also customize the prefix using the option
 ~org-agenda-prefix-format~.  This prefix is followed by a cleaned-up
-version of the outline headline associated with the item.
+version of the outline heading associated with the item.
 
 *** Categories
 :PROPERTIES:
@@ -9175,8 +9175,8 @@ Time ranges can be specified with two timestamps:
 
 : <2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>
 
-#+vindex: org-agenda-search-headline-for-time
-In the headline of the entry itself, a time(range)---like =12:45= or
+#+vindex: org-agenda-search-heading-for-time
+In the heading of the entry itself, a time(range)---like =12:45= or
 a =8:30-1pm=---may also appear as plain text[fn:97].
 
 If the agenda integrates the Emacs diary (see [[*Weekly/daily agenda]]),
@@ -9281,7 +9281,7 @@ agenda commands.
 #+cindex: filtering entries, in agenda
 #+cindex: tag filtering, in agenda
 #+cindex: category filtering, in agenda
-#+cindex: top headline filtering, in agenda
+#+cindex: top heading filtering, in agenda
 #+cindex: effort filtering, in agenda
 #+cindex: query editing, in agenda
 
@@ -9345,11 +9345,11 @@ filter elements are accumulated.
   filter, press {{{kbd(_)}}} twice (once to call the command again,
   and once at the first prompt).
 
-- {{{kbd(^)}}} (~org-agenda-filter-by-top-headline~) ::
+- {{{kbd(^)}}} (~org-agenda-filter-by-top-heading~) ::
 
-  #+findex: org-agenda-filter-by-top-headline
+  #+findex: org-agenda-filter-by-top-heading
   Filter the current agenda view and only display items that fall
-  under the same top-level headline as the current entry.  To clear
+  under the same top-level heading as the current entry.  To clear
   the filter, call this command again by pressing {{{kbd(^)}}}.
 
 - {{{kbd(/)}}} (~org-agenda-filter~) ::
@@ -9895,7 +9895,7 @@ the other commands, point needs to be in the desired line.
   #+kindex: C-c C-x a
   #+findex: org-agenda-toggle-archive-tag
   Toggle the archive tag (see [[*Internal archiving]]) for the current
-  headline.
+  heading.
 
 - {{{kbd(C-c C-x A)}}} (~org-agenda-archive-to-archive-sibling~) ::
 
@@ -9909,7 +9909,7 @@ the other commands, point needs to be in the desired line.
   #+kindex: C-c C-x C-s
   #+kindex: $
   #+findex: org-agenda-archive
-  Archive the subtree corresponding to the current headline.  This
+  Archive the subtree corresponding to the current heading.  This
   means the entry is moved to the configured archive location, most
   likely a different file.
 
@@ -9920,13 +9920,13 @@ the other commands, point needs to be in the desired line.
   #+vindex: org-agenda-show-inherited-tags
   Show all tags associated with the current item.  This is useful if
   you have turned off ~org-agenda-show-inherited-tags~, but still want
-  to see all tags of a headline occasionally.
+  to see all tags of a heading occasionally.
 
 - {{{kbd(:)}}} (~org-agenda-set-tags~) ::
 
   #+kindex: :
   #+findex: org-agenda-set-tags
-  Set tags for the current headline.  If there is an active region in
+  Set tags for the current heading.  If there is an active region in
   the agenda, change a tag for all headings in the region.
 
 - {{{kbd(\,)}}} (~org-agenda-priority~) ::
@@ -10363,12 +10363,12 @@ above will therefore define:
 
 - {{{kbd(u)}}} ::
 
-  as a global tags search for headlines tagged =boss= but not
+  as a global tags search for headings tagged =boss= but not
   =urgent=.
 
 - {{{kbd(v)}}} ::
 
-  The same search, but limiting it to headlines that are also TODO
+  The same search, but limiting it to headings that are also TODO
   items.
 
 - {{{kbd(U)}}} ::
@@ -10457,8 +10457,8 @@ at the right spot in ~org-agenda-custom-commands~.  For example:
 Now the {{{kbd(w)}}} command sorts the collected entries only by
 priority, and the prefix format is modified to just say =Mixed:=
 instead of giving the category of the entry.  The sparse tags tree of
-{{{kbd(U)}}} now turns out ultra-compact, because neither the headline
-hierarchy above the match, nor the headline following the match are
+{{{kbd(U)}}} now turns out ultra-compact, because neither the heading
+hierarchy above the match, nor the heading following the match are
 shown.  The command {{{kbd(N)}}} does a text search limited to only
 a single file.
 
@@ -10999,7 +10999,7 @@ images.
 
   Produce a preview image of the LaTeX fragment at point and overlay
   it over the source code.  If there is no fragment at point, process
-  all fragments in the current entry---between two headlines.
+  all fragments in the current entry---between two headings.
 
   When called with a single prefix argument, clear all images in the
   current entry.  Two prefix arguments produce a preview image for all
@@ -11117,7 +11117,7 @@ the contents of the block.
 
 #+begin_example
 ,#+BEGIN_EXAMPLE
-,,* I am no real headline
+,,* I am no real heading
 ,#+END_EXAMPLE
 #+end_example
 
@@ -11313,7 +11313,7 @@ as a horizontal line.
 
 A footnote is started by a footnote marker in square brackets in
 column 0, no indentation allowed.  It ends at the next footnote
-definition, headline, or after two consecutive empty lines.  The
+definition, heading, or after two consecutive empty lines.  The
 footnote reference is simply the marker in square brackets, inside
 text.  Markers always start with =fn:=.  For example:
 
@@ -11591,7 +11591,7 @@ global variables, include:
   =export= (~org-export-select-tags~), Org selects that tree and its
   sub-trees for export.  Org excludes trees with =noexport= tags, see
   below.  When selectively exporting files with =export= tags set, Org
-  does not export any text that appears before the first headline.
+  does not export any text that appears before the first heading.
 
 - =EXCLUDE_TAGS= ::
 
@@ -11668,9 +11668,9 @@ following arguments.
 - ~arch~ ::
 
   #+vindex: org-export-with-archived-trees
-  Configure how archived trees are exported.  When set to ~headline~,
+  Configure how archived trees are exported.  When set to ~heading~,
   the export process skips the contents and processes only the
-  headlines (~org-export-with-archived-trees~).
+  headings (~org-export-with-archived-trees~).
 
 - ~author~ ::
 
@@ -11726,9 +11726,9 @@ following arguments.
 
 - ~H~ ::
 
-  #+vindex: org-export-headline-levels
-  Set the number of headline levels for export
-  (~org-export-headline-levels~).  Below that level, headlines are
+  #+vindex: org-export-heading-levels
+  Set the number of heading levels for export
+  (~org-export-heading-levels~).  Below that level, headings are
   treated differently.  In most back-ends, they become list items.
 
 - ~inline~ ::
@@ -11741,10 +11741,10 @@ following arguments.
   #+vindex: org-export-with-section-numbers
   #+cindex: @samp{UNNUMBERED}, property
   Toggle section-numbers (~org-export-with-section-numbers~).  When
-  set to number N, Org numbers only those headlines at level N or
+  set to number N, Org numbers only those headings at level N or
   above.  Set =UNNUMBERED= property to non-~nil~ to disable numbering
   of heading and subheadings entirely.  Moreover, when the value is
-  =notoc= the headline, and all its children, do not appear in the
+  =notoc= the heading, and all its children, do not appear in the
   table of contents either (see [[*Table of Contents]]).
 
 - ~p~ ::
@@ -11752,7 +11752,7 @@ following arguments.
   #+vindex: org-export-with-planning
   Toggle export of planning information (~org-export-with-planning~).
   "Planning information" comes from lines located right after the
-  headline and contain any combination of these cookies: =SCHEDULED=,
+  heading and contain any combination of these cookies: =SCHEDULED=,
   =DEADLINE=, or =CLOSED=.
 
 - ~pri~ ::
@@ -11843,8 +11843,8 @@ in-buffer settings that cannot be changed using keywords.
 
 #+cindex: @samp{toc}, in @samp{OPTIONS} keyword
 #+vindex: org-export-with-toc
-The table of contents includes all headlines in the document.  Its
-depth is therefore the same as the headline levels in the file.  If
+The table of contents includes all headings in the document.  Its
+depth is therefore the same as the heading levels in the file.  If
 you need to use a different depth, or turn it off entirely, set the
 ~org-export-with-toc~ variable accordingly.  You can achieve the same
 on a per file basis, using the following =toc= item in =OPTIONS=
@@ -11857,8 +11857,8 @@ keyword:
 
 #+cindex: excluding entries from table of contents
 #+cindex: table of contents, exclude entries
-Org includes both numbered and unnumbered headlines in the table of
-contents[fn:124].  If you need to exclude an unnumbered headline,
+Org includes both numbered and unnumbered headings in the table of
+contents[fn:124].  If you need to exclude an unnumbered heading,
 along with all its children, set the =UNNUMBERED= property to =notoc=
 value.
 
@@ -11871,15 +11871,15 @@ value.
 
 #+cindex: @samp{TOC}, keyword
 Org normally inserts the table of contents directly before the first
-headline of the file.  To move the table of contents to a different
+heading of the file.  To move the table of contents to a different
 location, first turn off the default with ~org-export-with-toc~
-variable or with =#+OPTIONS: toc:nil=.  Then insert =#+TOC: headlines
+variable or with =#+OPTIONS: toc:nil=.  Then insert =#+TOC: headings
 N= at the desired location(s).
 
 #+begin_example
 ,#+OPTIONS: toc:nil
 ...
-,#+TOC: headlines 2
+,#+TOC: headings 2
 #+end_example
 
 To adjust the table of contents depth for a specific section of the
@@ -11889,7 +11889,7 @@ inserts a local table of contents, with direct children only.
 
 #+begin_example
 ,* Section
-,#+TOC: headlines 1 local
+,#+TOC: headings 1 local
 #+end_example
 
 Note that for this feature to work properly in LaTeX export, the Org
@@ -11908,7 +11908,7 @@ children of the specified target.
 ,** Heading A
 ,** Heading B
 ,* Another section
-,#+TOC: headlines 1 :target #TargetSection
+,#+TOC: headings 1 :target #TargetSection
 #+end_example
 
 The =:target= attribute is supported in HTML, Markdown, ODT, and ASCII export.
@@ -11922,7 +11922,7 @@ listings---with captions.
 #+end_example
 
 #+cindex: @samp{ALT_TITLE}, property
-Normally Org uses the headline for its entry in the table of contents.
+Normally Org uses the heading for its entry in the table of contents.
 But with =ALT_TITLE= property, a different entry can be specified for
 the table of contents.
 
@@ -11956,13 +11956,13 @@ If an included file is not specified as having any markup language,
 Org assumes it be in Org format and proceeds as usual with a few
 exceptions.  Org makes the footnote labels (see [[*Creating Footnotes]])
 in the included file local to that file.  The contents of the included
-file belong to the same structure---headline, item---containing the
-=INCLUDE= keyword.  In particular, headlines within the file become
+file belong to the same structure---heading, item---containing the
+=INCLUDE= keyword.  In particular, headings within the file become
 children of the current section.  That behavior can be changed by
 providing an additional keyword parameter, =:minlevel=.  It shifts the
-headlines in the included file to become the lowest level.  For
+headings in the included file to become the lowest level.  For
 example, this syntax makes the included file a sibling of the current
-top-level headline:
+top-level heading:
 
 : #+INCLUDE: "~/my-book/chapter2.org" :minlevel 1
 
@@ -11984,7 +11984,7 @@ Therefore,
 : #+INCLUDE: "./paper.org::*conclusion" :lines 1-20
 
 #+texinfo: @noindent
-includes the first 20 lines of the headline named =conclusion=.
+includes the first 20 lines of the heading named =conclusion=.
 
 #+cindex: @samp{only-contents}, include
 To extract only the contents of the matched object, set
@@ -12041,7 +12041,7 @@ macro
 turns ={{{gnustamp(linux)}}}= into =GNU/Linux= during export.
 
 Org recognizes macro references in following Org markup areas:
-paragraphs, headlines, verse blocks, tables cells and lists.  Org also
+paragraphs, headings, verse blocks, tables cells and lists.  Org also
 recognizes macro references in keywords, such as =CAPTION=, =TITLE=,
 =AUTHOR=, =DATE=, and for some back-end specific export options.
 
@@ -12137,7 +12137,7 @@ Finally, a =COMMENT= keyword at the beginning of an entry, but after
 any other keyword or priority cookie, comments out the entire subtree.
 In this case, the subtree is not exported and no code block within it
 is executed either[fn:127].  The command below helps changing the
-comment status of a headline.
+comment status of a heading.
 
 - {{{kbd(C-c ;)}}} (~org-toggle-comment~) ::
   #+kindex: C-c ;
@@ -12215,7 +12215,7 @@ output.  Setting this keyword works similar to the general options
 :UNNUMBERED: notoc
 :END:
 
-Org converts the first three outline levels into headlines for ASCII
+Org converts the first three outline levels into headings for ASCII
 export.  The remaining levels are turned into lists.  To change this
 cut-off point where levels become lists, see [[*Export Settings]].
 
@@ -12394,15 +12394,15 @@ should in principle be exportable as a Beamer presentation.
 
 -
   #+vindex: org-beamer-frame-level
-  Org headlines become Beamer frames when the heading level in Org is
+  Org headings become Beamer frames when the heading level in Org is
   equal to ~org-beamer-frame-level~ or =H= value in a =OPTIONS= line
   (see [[*Export Settings]]).
 
   #+cindex: @samp{BEAMER_ENV}, property
-  Org overrides headlines to frames conversion for the current tree of
+  Org overrides headings to frames conversion for the current tree of
   an Org file if it encounters the =BEAMER_ENV= property set to
   =frame= or =fullframe=.  Org ignores whatever
-  ~org-beamer-frame-level~ happens to be for that headline level in
+  ~org-beamer-frame-level~ happens to be for that heading level in
   the Org tree.  In Beamer terminology, a full frame is a frame
   without its title.
 
@@ -12424,15 +12424,15 @@ should in principle be exportable as a Beamer presentation.
   with =\againframe= command, which makes setting the =BEAMER_REF=
   property mandatory because =\againframe= needs frame to resume.
 
-  When =ignoreheading= is set, Org export ignores the entry's headline
+  When =ignoreheading= is set, Org export ignores the entry's heading
   but not its content.  This is useful for inserting content between
   frames.  It is also useful for properly closing a =column=
   environment.  @end itemize
 
   #+cindex: @samp{BEAMER_ACT}, property
   #+cindex: @samp{BEAMER_OPT}, property
-  When =BEAMER_ACT= is set for a headline, Org export translates that
-  headline as an overlay or action specification.  When enclosed in
+  When =BEAMER_ACT= is set for a heading, Org export translates that
+  heading as an overlay or action specification.  When enclosed in
   square brackets, Org export makes the overlay specification
   a default.  Use =BEAMER_OPT= to set any options applicable to the
   current Beamer frame or block.  The Beamer export back-end wraps
@@ -12441,7 +12441,7 @@ should in principle be exportable as a Beamer presentation.
 
   #+cindex: @samp{BEAMER_COL}, property
   To create a column on the Beamer slide, use the =BEAMER_COL=
-  property for its headline in the Org file.  Set the value of
+  property for its heading in the Org file.  Set the value of
   =BEAMER_COL= to a decimal number representing the fraction of the
   total text width.  Beamer export uses this value to set the column's
   width and fills the column with the contents of the Org entry.  If
@@ -12449,7 +12449,7 @@ should in principle be exportable as a Beamer presentation.
   ignores the heading.  If the Org entry has a defined environment,
   Beamer export uses the heading as title.  Behind the scenes, Beamer
   export automatically handles LaTeX column separations for contiguous
-  headlines.  To manually adjust them for any unique configurations
+  headings.  To manually adjust them for any unique configurations
   needs, use the =BEAMER_ENV= property.
 
 *** Beamer specific syntax
@@ -12466,7 +12466,7 @@ Beamer export wraps the table of contents generated with =toc:t=
 wrap the table of contents generated with =TOC= keyword (see [[*Table of
 Contents]]).  Use square brackets for specifying options.
 
-: #+TOC: headlines [currentsection]
+: #+TOC: headings [currentsection]
 
 Insert Beamer-specific code using the following constructs:
 
@@ -12774,9 +12774,9 @@ HTML exporter reverts to standard translation (see
 ~org-html-html5-elements~).  For example, =#+BEGIN_lederhosen= exports
 to ~<div class="lederhosen">~.
 
-Special blocks cannot have headlines.  For the HTML exporter to wrap
-the headline and its contents in ~<section>~ or ~<article>~ tags, set
-the =HTML_CONTAINER= property for the headline.
+Special blocks cannot have headings.  For the HTML exporter to wrap
+the heading and its contents in ~<section>~ or ~<article>~ tags, set
+the =HTML_CONTAINER= property for the heading.
 
 *** HTML preamble and postamble
 :PROPERTIES:
@@ -12832,20 +12832,20 @@ For larger raw HTML code blocks, use these HTML export code blocks:
 ,#+END_EXPORT
 #+end_example
 
-*** Headlines in HTML export
+*** Headings in HTML export
 :PROPERTIES:
-:DESCRIPTION: Formatting headlines.
+:DESCRIPTION: Formatting headings.
 :END:
-#+cindex: headlines, in HTML export
+#+cindex: headings, in HTML export
 
-Headlines are exported to =<h1>=, =<h2>=, etc.  Each headline gets the
+Headings are exported to =<h1>=, =<h2>=, etc.  Each heading gets the
 =id= attribute from =CUSTOM_ID= property, or a unique generated value,
 see [[*Internal Links]].
 
-#+vindex: org-html-self-link-headlines
-When ~org-html-self-link-headlines~ is set to a non-~nil~ value, the
-text of the headlines is also wrapped in =<a>= tags.  These tags have
-a =href= attribute making the headlines link to themselves.
+#+vindex: org-html-self-link-headings
+When ~org-html-self-link-headings~ is set to a non-~nil~ value, the
+text of the headings is also wrapped in =<a>= tags.  These tags have
+a =href= attribute making the headings link to themselves.
 
 *** Links in HTML export
 :PROPERTIES:
@@ -13074,7 +13074,7 @@ You can modify the CSS style definitions for the exported file.  The
 HTML exporter assigns the following special CSS classes[fn:132] to
 appropriate parts of the document---your style specifications may
 change these, in addition to any of the standard classes like for
-headlines, tables, etc.
+headings, tables, etc.
 
 | ~p.author~           | author information, including email                    |
 | ~p.date~             | publishing date                                        |
@@ -13087,14 +13087,14 @@ headlines, tables, etc.
 | ~.timestamp~         | timestamp                                              |
 | ~.timestamp-kwd~     | keyword associated with a timestamp, like =SCHEDULED=  |
 | ~.timestamp-wrapper~ | span around keyword plus timestamp                     |
-| ~.tag~               | tag in a headline                                      |
+| ~.tag~               | tag in a heading                                      |
 | ~._HOME~             | each tag uses itself as a class, "@" replaced by "_"   |
 | ~.target~            | target for links                                       |
 | ~.linenr~            | the line number in a code example                      |
 | ~.code-highlighted~  | for highlighting referenced code lines                 |
-| ~div.outline-N~      | div for outline level N (headline plus text)           |
+| ~div.outline-N~      | div for outline level N (heading plus text)           |
 | ~div.outline-text-N~ | extra div for text at outline level N                  |
-| ~.section-number-N~  | section number in headlines, different for each level  |
+| ~.section-number-N~  | section number in headings, different for each level  |
 | ~.figure-number~     | label like "Figure 1:"                                 |
 | ~.table-number~      | label like "Table 1:"                                  |
 | ~.listing-number~    | label like "Listing 1:"                                |
@@ -13102,7 +13102,7 @@ headlines, tables, etc.
 | ~pre.src~            | formatted source code                                  |
 | ~pre.example~        | normal example                                         |
 | ~p.verse~            | verse paragraph                                        |
-| ~div.footnotes~      | footnote section headline                              |
+| ~div.footnotes~      | footnote section heading                              |
 | ~p.footnote~         | footnote definition paragraph, containing a footnote   |
 | ~.footref~           | a footnote reference number (always a <sup>)           |
 | ~.footnum~           | footnote number in footnote definition (always <sup>)  |
@@ -13138,12 +13138,12 @@ around them.  Both of these approaches can avoid referring to an
 external file.
 
 #+cindex: @samp{HTML_CONTAINER_CLASS}, property
-#+cindex: @samp{HTML_HEADLINE_CLASS}, property
+#+cindex: @samp{HTML_HEADING_CLASS}, property
 In order to add styles to a sub-tree, use the =HTML_CONTAINER_CLASS=
 property to assign a class to the tree.  In order to specify CSS
-styles for a particular headline, you can use the ID specified in
+styles for a particular heading, you can use the ID specified in
 a =CUSTOM_ID= property.  You can also assign a specific class to
-a headline with the =HTML_HEADLINE_CLASS= property.
+a heading with the =HTML_HEADING_CLASS= property.
 
 Never change the ~org-html-style-default~ constant.  Instead use other
 simpler ways of customizing as described above.
@@ -13187,16 +13187,16 @@ options described below:
 
   | =info=     | Info-like interface with one section per page          |
   | =overview= | Folding interface, initially showing only top-level    |
-  | =content=  | Folding interface, starting with all headlines visible |
-  | =showall=  | Folding interface, all headlines and text visible      |
+  | =content=  | Folding interface, starting with all headings visible |
+  | =showall=  | Folding interface, all headings and text visible      |
 
 - =sdepth:= ::
 
-  Maximum headline level still considered as an independent section
+  Maximum heading level still considered as an independent section
   for info and folding modes.  The default is taken from
-  ~org-export-headline-levels~, i.e., the =H= switch in =OPTIONS=.  If
-  this is smaller than in ~org-export-headline-levels~, each
-  info/folding section can still contain child headlines.
+  ~org-export-heading-levels~, i.e., the =H= switch in =OPTIONS=.  If
+  this is smaller than in ~org-export-heading-levels~, each
+  info/folding section can still contain child headings.
 
 - =toc:= ::
 
@@ -13206,7 +13206,7 @@ options described below:
 - =tdepth:= ::
 
   The depth of the table of contents.  The defaults are taken from the
-  variables ~org-export-headline-levels~ and ~org-export-with-toc~.
+  variables ~org-export-heading-levels~ and ~org-export-with-toc~.
 
 - =ftoc:= ::
 
@@ -13353,7 +13353,7 @@ general options (see [[*Export Settings]]).
   #+vindex: org-latex-default-class
   #+vindex: org-latex-classes
   This is LaTeX document class, such as /article/, /report/, /book/,
-  and so on, which contain predefined preamble and headline level
+  and so on, which contain predefined preamble and heading level
   mapping that the LaTeX export back-end needs.  The back-end reads
   the default class name from the ~org-latex-default-class~ variable.
   Org has /article/ as the default class.  A valid default class must
@@ -13419,7 +13419,7 @@ The following sections have further details.
 #+cindex: sectioning structure, for @LaTeX{} export
 
 The LaTeX export back-end converts the first three of Org's outline
-levels into LaTeX headlines.  The remaining Org levels are exported as
+levels into LaTeX headings.  The remaining Org levels are exported as
 lists.  To change this globally for the cut-off point between levels
 and lists, (see [[*Export Settings]]).
 
@@ -13466,9 +13466,9 @@ A sample Org file with the above headers:
 ,#+LATEX_CLASS_OPTIONS: [a4paper]
 ,#+LATEX_HEADER: \usepackage{xyz}
 
-,* Headline 1
+,* Heading 1
   some text
-,* Headline 2
+,* Heading 2
   some more text
 #+end_example
 
@@ -14002,11 +14002,11 @@ tables, to HTML.
 :UNNUMBERED: notoc
 :END:
 
-#+vindex: org-md-headline-style
-Based on ~org-md-headline-style~, Markdown export can generate
-headlines of both /atx/ and /setext/ types.  /atx/ limits headline
-levels to two whereas /setext/ limits headline levels to six.  Beyond
-these limits, the export back-end converts headlines to lists.  To set
+#+vindex: org-md-heading-style
+Based on ~org-md-heading-style~, Markdown export can generate
+headings of both /atx/ and /setext/ types.  /atx/ limits heading
+levels to two whereas /setext/ limits heading levels to six.  Beyond
+these limits, the export back-end converts headings to lists.  To set
 a limit to a level before the absolute limit (see [[*Export Settings]]).
 
 ** OpenDocument Text Export
@@ -15045,7 +15045,7 @@ keywords.  They have to be set in raw Texinfo code.
 #+end_example
 
 #+cindex: @samp{COPYING}, property
-Copying material is defined in a dedicated headline with a non-~nil~
+Copying material is defined in a dedicated heading with a non-~nil~
 =COPYING= property.  The back-end inserts the contents within
 a =@copying= command at the beginning of the document.  The heading
 itself does not appear in the structure of the document.
@@ -15098,9 +15098,9 @@ Here is an example that writes to the Info directory file:
 #+vindex: org-texinfo-default-class
 #+cindex: @samp{TEXINFO_CLASS}, keyword
 The Texinfo export back-end uses a pre-defined scheme to convert Org
-headlines to equivalent Texinfo structuring commands.  A scheme like
-this maps top-level headlines to numbered chapters tagged as
-~@chapter~ and lower-level headlines to unnumbered chapters tagged as
+headings to equivalent Texinfo structuring commands.  A scheme like
+this maps top-level headings to numbered chapters tagged as
+~@chapter~ and lower-level headings to unnumbered chapters tagged as
 ~@unnumbered~.  To override such mappings to introduce ~@part~ or
 other Texinfo structuring commands, define a new class in
 ~org-texinfo-classes~.  Activate the new class with the
@@ -15108,19 +15108,19 @@ other Texinfo structuring commands, define a new class in
 the Texinfo export back-end defaults to the
 ~org-texinfo-default-class~.
 
-If an Org headline's level has no associated Texinfo structuring
+If an Org heading's level has no associated Texinfo structuring
 command, or is below a certain threshold (see [[*Export Settings]]), then
 the Texinfo export back-end makes it into a list item.
 
 #+cindex: @samp{APPENDIX}, property
-The Texinfo export back-end makes any headline with a non-~nil~
+The Texinfo export back-end makes any heading with a non-~nil~
 =APPENDIX= property into an appendix.  This happens independent of the
-Org headline level or the =TEXINFO_CLASS= keyword.
+Org heading level or the =TEXINFO_CLASS= keyword.
 
 #+cindex: @samp{ALT_TITLE}, property
 #+cindex: @samp{DESCRIPTION}, property
 The Texinfo export back-end creates a menu entry after the Org
-headline for each regular sectioning structure.  To override this with
+heading for each regular sectioning structure.  To override this with
 a shorter menu entry, use the =ALT_TITLE= property (see [[*Table of
 Contents]]).  Texinfo menu entries also have an option for a longer
 =DESCRIPTION= property.  Here's an example that uses both to override
@@ -15135,7 +15135,7 @@ the default menu entry:
 #+end_example
 
 #+cindex: Top node, in Texinfo export
-The text before the first headline belongs to the /Top/ node, i.e.,
+The text before the first heading belongs to the /Top/ node, i.e.,
 the node in which a reader enters an Info manual.  As such, it is
 expected not to appear in printed output generated from the =.texi=
 file.  See [[info:texinfo::The Top Node]], for more information.
@@ -15166,11 +15166,11 @@ belong to a Texinfo command.
 : #+CINDEX: Defining indexing entries
 
 #+cindex: @samp{INDEX}, property
-For the back-end to generate an index entry for a headline, set the
+For the back-end to generate an index entry for a heading, set the
 =INDEX= property to =cp= or =vr=.  These abbreviations come from
 Texinfo that stand for concept index and variable index.  The Texinfo
 manual has abbreviations for all other kinds of indexes.  The back-end
-exports the headline as an unnumbered chapter or section command, and
+exports the heading as an unnumbered chapter or section command, and
 then inserts the index after its contents.
 
 #+begin_example
@@ -15450,7 +15450,7 @@ entry.  Consult the ~org-icalendar-use-deadline~ and
 
 #+vindex: org-icalendar-categories
 #+vindex: org-icalendar-alarm-time
-For tags on the headline, the iCalendar export back-end makes them
+For tags on the heading, the iCalendar export back-end makes them
 into iCalendar categories.  To tweak the inheritance of tags and TODO
 states, configure the variable ~org-icalendar-categories~.  To assign
 clock alarms based on time, configure the ~org-icalendar-alarm-time~
@@ -15509,7 +15509,7 @@ when exporting.  To force the back-end to inherit the =LOCATION=,
 #+vindex: org-icalendar-include-body
 When Org entries do not have =SUMMARY=, =DESCRIPTION=, =LOCATION= and
 =CLASS= properties, the iCalendar export back-end derives the summary
-from the headline, and derives the description from the body of the
+from the heading, and derives the description from the body of the
 Org item.  The ~org-icalendar-include-body~ variable limits the
 maximum number of characters of the content are turned into its
 description.
@@ -15573,16 +15573,16 @@ before the buffer is parsed.
 Functions added to these hooks are called with a single argument: the
 export back-end actually used, as a symbol.  You may use them for
 heavy duty structural modifications of the document.  For example, you
-can remove every headline in the buffer during export like this:
+can remove every heading in the buffer during export like this:
 
 #+begin_src emacs-lisp
-(defun my-headline-removal (backend)
-  "Remove all headlines in the current buffer.
+(defun my-heading-removal (backend)
+  "Remove all headings in the current buffer.
 BACKEND is the export back-end being used, as a symbol."
   (org-map-entries
    (lambda () (delete-region (point) (line-beginning-position 2)))))
 
-(add-hook 'org-export-before-parsing-hook 'my-headline-removal)
+(add-hook 'org-export-before-parsing-hook 'my-heading-removal)
 #+end_src
 
 *** Filters
@@ -15608,7 +15608,7 @@ is the type targeted by the filter.  Valid types are:
 | diary-sexp          | drawer             | dynamic-block    |
 | entity              | example-block      | export-block     |
 | export-snippet      | final-output       | fixed-width      |
-| footnote-definition | footnote-reference | headline         |
+| footnote-definition | footnote-reference | heading         |
 | horizontal-rule     | inline-babel-call  | inline-src-block |
 | inlinetask          | italic             | item             |
 | keyword             | latex-environment  | latex-fragment   |
@@ -15987,7 +15987,7 @@ Settings]]), however, override everything.
 
 | ~:archived-trees~       | ~org-export-with-archived-trees~   |
 | ~:exclude-tags~         | ~org-export-exclude-tags~          |
-| ~:headline-levels~      | ~org-export-headline-levels~       |
+| ~:heading-levels~      | ~org-export-heading-levels~       |
 | ~:language~             | ~org-export-default-language~      |
 | ~:preserve-breaks~      | ~org-export-preserve-breaks~       |
 | ~:section-numbers~      | ~org-export-with-section-numbers~  |
@@ -16027,7 +16027,7 @@ Settings]]), however, override everything.
 | ~:ascii-global-margin~                 | ~org-ascii-global-margin~                 |
 | ~:ascii-format-drawer-function~        | ~org-ascii-format-drawer-function~        |
 | ~:ascii-format-inlinetask-function~    | ~org-ascii-format-inlinetask-function~    |
-| ~:ascii-headline-spacing~              | ~org-ascii-headline-spacing~              |
+| ~:ascii-heading-spacing~              | ~org-ascii-heading-spacing~              |
 | ~:ascii-indented-line-width~           | ~org-ascii-indented-line-width~           |
 | ~:ascii-inlinetask-width~              | ~org-ascii-inlinetask-width~              |
 | ~:ascii-inner-margin~                  | ~org-ascii-inner-margin~                  |
@@ -16070,7 +16070,7 @@ Settings]]), however, override everything.
 | ~:html-footnote-separator~                     | ~org-html-footnote-separator~                     |
 | ~:html-footnotes-section~                      | ~org-html-footnotes-section~                      |
 | ~:html-format-drawer-function~                 | ~org-html-format-drawer-function~                 |
-| ~:html-format-headline-function~               | ~org-html-format-headline-function~               |
+| ~:html-format-heading-function~               | ~org-html-format-heading-function~               |
 | ~:html-format-inlinetask-function~             | ~org-html-format-inlinetask-function~             |
 | ~:html-head-extra~                             | ~org-html-head-extra~                             |
 | ~:html-head-include-default-style~             | ~org-html-head-include-default-style~             |
@@ -16095,7 +16095,7 @@ Settings]]), however, override everything.
 | ~:html-postamble~                              | ~org-html-postamble~                              |
 | ~:html-preamble-format~                        | ~org-html-preamble-format~                        |
 | ~:html-preamble~                               | ~org-html-preamble~                               |
-| ~:html-self-link-headlines~                    | ~org-html-self-link-headlines~                    |
+| ~:html-self-link-headings~                    | ~org-html-self-link-headings~                    |
 | ~:html-table-align-individual-field~           | ~de{org-html-table-align-individual-fields~       |
 | ~:html-table-attributes~                       | ~org-html-table-default-attributes~               |
 | ~:html-table-caption-above~                    | ~org-html-table-caption-above~                    |
@@ -16130,7 +16130,7 @@ Settings]]), however, override everything.
 | ~:latex-footnote-defined-format~       | ~org-latex-footnote-defined-format~       |
 | ~:latex-footnote-separator~            | ~org-latex-footnote-separator~            |
 | ~:latex-format-drawer-function~        | ~org-latex-format-drawer-function~        |
-| ~:latex-format-headline-function~      | ~org-latex-format-headline-function~      |
+| ~:latex-format-heading-function~      | ~org-latex-format-heading-function~      |
 | ~:latex-format-inlinetask-function~    | ~org-latex-format-inlinetask-function~    |
 | ~:latex-hyperref-template~             | ~org-latex-hyperref-template~             |
 | ~:latex-image-default-height~          | ~org-latex-image-default-height~          |
@@ -16162,7 +16162,7 @@ Settings]]), however, override everything.
 
 | ~:md-footnote-format~   | ~org-md-footnote-format~   |
 | ~:md-footnotes-section~ | ~org-md-footnotes-section~ |
-| ~:md-headline-style~    | ~org-md-headline-style~    |
+| ~:md-heading-style~    | ~org-md-heading-style~    |
 
 **** ODT specific properties
 :PROPERTIES:
@@ -16173,7 +16173,7 @@ Settings]]), however, override everything.
 | ~:odt-display-outline-level~      | ~org-odt-display-outline-level~      |
 | ~:odt-fontify-srcblocks~          | ~org-odt-fontify-srcblocks~          |
 | ~:odt-format-drawer-function~     | ~org-odt-format-drawer-function~     |
-| ~:odt-format-headline-function~   | ~org-odt-format-headline-function~   |
+| ~:odt-format-heading-function~   | ~org-odt-format-heading-function~   |
 | ~:odt-format-inlinetask-function~ | ~org-odt-format-inlinetask-function~ |
 | ~:odt-inline-formula-rules~       | ~org-odt-inline-formula-rules~       |
 | ~:odt-inline-image-rules~         | ~org-odt-inline-image-rules~         |
@@ -16194,7 +16194,7 @@ Settings]]), however, override everything.
 | ~:texinfo-diary-timestamp-format~        | ~org-texinfo-diary-timestamp-format~        |
 | ~:texinfo-filename~                      | ~org-texinfo-filename~                      |
 | ~:texinfo-format-drawer-function~        | ~org-texinfo-format-drawer-function~        |
-| ~:texinfo-format-headline-function~      | ~org-texinfo-format-headline-function~      |
+| ~:texinfo-format-heading-function~      | ~org-texinfo-format-heading-function~      |
 | ~:texinfo-format-inlinetask-function~    | ~org-texinfo-format-inlinetask-function~    |
 | ~:texinfo-inactive-timestamp-format~     | ~org-texinfo-inactive-timestamp-format~     |
 | ~:texinfo-link-with-unknown-path-format~ | ~org-texinfo-link-with-unknown-path-format~ |
@@ -16446,7 +16446,7 @@ place on the web server, and publishing images to it.
          :publishing-directory "/ssh:user@host:~/html/notebook/"
          :publishing-function org-html-publish-to-html
          :exclude "PrivatePage.org" ;; regexp
-         :headline-levels 3
+         :heading-levels 3
          :section-numbers nil
          :with-toc nil
          :html-head "<link rel=\"stylesheet\"
@@ -17986,7 +17986,7 @@ already exist in the code block.
 
 - =org= ::
 
-  Nearest headline text from Org file is inserted as comment.  The
+  Nearest heading text from Org file is inserted as comment.  The
   exact text that is inserted is picked from the leading context of
   the source block.
 
@@ -18660,23 +18660,23 @@ shortcuts.
 
   Complete word at point.
 
-  - At the beginning of an empty headline, complete TODO keywords.
+  - At the beginning of an empty heading, complete TODO keywords.
 
   - After =\=, complete TeX symbols supported by the exporter.
 
-  - After =:= in a headline, complete tags.  Org deduces the list of
+  - After =:= in a heading, complete tags.  Org deduces the list of
     tags from the =TAGS= in-buffer option (see [[*Setting Tags]]), the
     variable ~org-tag-alist~, or from all tags used in the current
     buffer.
 
-  - After =:= and not in a headline, complete property keys.  The list
+  - After =:= and not in a heading, complete property keys.  The list
     of keys is constructed dynamically from all keys used in the
     current buffer.
 
   - After =[[=, complete link abbreviations (see [[*Link Abbreviations]]).
 
-  - After =[[*=, complete headlines in the current buffer so that they
-    can be used in search links like: =[[*find this headline]]=
+  - After =[[*=, complete headings in the current buffer so that they
+    can be used in search links like: =[[*find this heading]]=
 
   - After =#+=, complete the special keywords like =TYP_TODO= or
     file-specific =OPTIONS=.  After option keyword is complete,
@@ -18738,12 +18738,12 @@ init file[fn:144].
 
 ** Speed Keys
 :PROPERTIES:
-:DESCRIPTION: Electric commands at the beginning of a headline.
+:DESCRIPTION: Electric commands at the beginning of a heading.
 :END:
 #+cindex: speed keys
 
 Single keystrokes can execute custom commands in an Org file when
-point is on a headline.  Without the extra burden of a meta or
+point is on a heading.  Without the extra burden of a meta or
 modifier key, Speed Keys can speed navigation or execute custom
 commands.  Besides faster navigation, Speed Keys may come in handy on
 small mobile devices that do not have full keyboards.  Speed Keys may
@@ -18754,7 +18754,7 @@ key chords.
 By default, Org has Speed Keys disabled.  To activate Speed Keys, set
 the variable ~org-use-speed-commands~ to a non-~nil~ value.  To
 trigger a Speed Key, point must be at the beginning of an Org
-headline, before any of the stars.
+heading, before any of the stars.
 
 #+vindex: org-speed-commands
 #+findex: org-speed-command-help
@@ -18762,7 +18762,7 @@ Org comes with a pre-defined list of Speed Keys.  To add or modify
 Speed Keys, customize the option ~org-speed-commands~.  For more
 details, see the variable's docstring.  With Speed Keys activated,
 {{{kbd(M-x org-speed-command-help)}}}, or {{{kbd(?)}}} when point is at the
-beginning of an Org headline, shows currently active Speed Keys,
+beginning of an Org heading, shows currently active Speed Keys,
 including the user-defined ones.
 
 ** A Cleaner Outline View
@@ -18782,13 +18782,13 @@ as shown on the right in the following table.  It displays only one
 star and indents text to line up with the heading:
 
 #+begin_example
-,* Top level headline             |    * Top level headline
+,* Top level heading             |    * Top level heading
 ,** Second level                  |      * Second level
 ,*** Third level                  |        * Third level
 some text                        |          some text
 ,*** Third level                  |        * Third level
 more text                        |          more text
-,* Another top level headline     |    * Another top level headline
+,* Another top level heading     |    * Another top level heading
 #+end_example
 
 Org can achieve this in two ways, (1) by just displaying the buffer in
@@ -18801,11 +18801,11 @@ in the desired amount with hard spaces and hiding leading stars.
 #+findex: org-indent-mode
 To display the buffer in the indented view, activate Org Indent minor
 mode, using {{{kbd(M-x org-indent-mode)}}}.  Text lines that are not
-headlines are prefixed with virtual spaces to vertically align with
-the headline text[fn:145].
+headings are prefixed with virtual spaces to vertically align with
+the heading text[fn:145].
 
 #+vindex: org-indent-indentation-per-level
-To make more horizontal space, the headlines are shifted by two
+To make more horizontal space, the headings are shifted by two
 characters.  Configure ~org-indent-indentation-per-level~ variable for
 a different number.
 
@@ -18813,7 +18813,7 @@ a different number.
 #+vindex: org-indent-mode-turns-off-org-adapt-indentation
 By default, Org Indent mode turns off ~org-adapt-indentation~ and does
 hide leading stars by locally setting ~org-hide-leading-stars~ to ~t~:
-only one star on each headline is visible, the rest are masked with
+only one star on each heading is visible, the rest are masked with
 the same font color as the background.  If you want to customize this
 default behavior, see ~org-indent-mode-turns-on-hiding-stars~ and
 ~org-indent-mode-turns-off-org-adapt-indentation~.
@@ -18840,7 +18840,7 @@ settings[fn:147]:
         org-odd-levels-only t)
   #+end_src
 
-- /Indentation of text below headlines/ (~org-adapt-indentation~) ::
+- /Indentation of text below headings/ (~org-adapt-indentation~) ::
 
   #+vindex: org-adapt-indentation
   The first setting modifies paragraph filling, line wrapping, and
@@ -18881,40 +18881,40 @@ settings[fn:147]:
 :DESCRIPTION: Execute commands on multiple items in Org or agenda view.
 :END:
 
-#+vindex: org-loop-over-headlines-in-active-region
+#+vindex: org-loop-over-headings-in-active-region
 When in an Org buffer and the region is active, some commands will
 apply to all the subtrees in the active region.  For example, hitting
-{{{kbd(C-c C-s)}}} when multiple headlines are within the active region will
+{{{kbd(C-c C-s)}}} when multiple headings are within the active region will
 successively prompt you for a new schedule date and time.  To disable
-this, set the option ~org-loop-over-headlines-in-active-region~ to
+this, set the option ~org-loop-over-headings-in-active-region~ to
 non-~t~, activate the region and run the command normally.
 
-#+vindex: org-agenda-loop-over-headlines-in-active-region
-~org-agenda-loop-over-headlines-in-active-region~ is the equivalent
+#+vindex: org-agenda-loop-over-headings-in-active-region
+~org-agenda-loop-over-headings-in-active-region~ is the equivalent
 option of the agenda buffer, where you can also use [[*Bulk remote editing selected entries][bulk editing of
 selected entries]].
 
 Not all commands can loop in the active region and what subtrees or
-headlines are considered can be refined: see the docstrings of these
+headings are considered can be refined: see the docstrings of these
 options for more details.
 
-** Dynamic Headline Numbering
+** Dynamic Heading Numbering
 :PROPERTIES:
 :DESCRIPTION: Display and update outline numbering.
 :END:
 
 #+cindex: Org Num mode
-#+cindex: number headlines
+#+cindex: number headings
 The Org Num minor mode, toggled with {{{kbd(M-x org-num-mode)}}},
-displays outline numbering on top of headlines.  It also updates it
+displays outline numbering on top of headings.  It also updates it
 automatically upon changes to the structure of the document.
 
 #+vindex: org-num-max-level
 #+vindex: org-num-skip-tags
 #+vindex: org-num-skip-commented
 #+vindex: org-num-skip-unnumbered
-By default, all headlines are numbered.  You can limit numbering to
-specific headlines according to their level, tags, =COMMENT= keyword,
+By default, all headings are numbered.  You can limit numbering to
+specific headings according to their level, tags, =COMMENT= keyword,
 or =UNNUMBERED= property.  Set ~org-num-max-level~,
 ~org-num-skip-tags~, ~org-num-skip-commented~,
 ~org-num-skip-unnumbered~, or ~org-num-skip-footnotes~ accordingly.
@@ -19092,13 +19092,13 @@ changes.
   settings is ~org-startup-folded~ with a default value of
   ~showeverything~.
 
-  | =overview=       | Top-level headlines only.  |
-  | =content=        | All headlines.             |
+  | =overview=       | Top-level headings only.  |
+  | =content=        | All headings.             |
   | =showall=        | No folding on any entry.   |
-  | =show2levels=    | Headline levels 1-2.       |
-  | =show3levels=    | Headline levels 1-3.       |
-  | =show4levels=    | Headline levels 1-4.       |
-  | =show5levels=    | Headline levels 1-5.       |
+  | =show2levels=    | Heading levels 1-2.       |
+  | =show3levels=    | Heading levels 1-3.       |
+  | =show4levels=    | Heading levels 1-4.       |
+  | =show5levels=    | Heading levels 1-5.       |
   | =showeverything= | Show even drawer contents. |
 
   #+vindex: org-startup-indented
@@ -19109,7 +19109,7 @@ changes.
   | =noindent= | Start with Org Indent mode turned off. |
 
   #+vindex: org-startup-numerated
-  Dynamic virtual numeration of headlines is controlled by the variable
+  Dynamic virtual numeration of headings is controlled by the variable
   ~org-startup-numerated~.
 
   | =num=   | Start with Org num mode turned on.  |
@@ -19170,8 +19170,8 @@ changes.
   ~org-odd-levels-only~, both with a default setting ~nil~
   (meaning =showstars= and =oddeven=).
 
-  | =hidestars= | Make all but one of the stars starting a headline invisible. |
-  | =showstars= | Show all stars starting a headline.                          |
+  | =hidestars= | Make all but one of the stars starting a heading invisible. |
+  | =showstars= | Show all stars starting a heading.                          |
   | =indent=    | Virtual indentation according to outline level.              |
   | =noindent=  | No virtual indentation according to outline level.           |
   | =odd=       | Allow only odd outline levels (1, 3, ...).                   |
@@ -19246,7 +19246,7 @@ changes.
 
 A reference document providing a formal description of Org's syntax is
 available as [[https://orgmode.org/worg/dev/org-syntax.html][a draft on Worg]], written and maintained by Nicolas
-Goaziou.  It defines Org's core internal concepts such as "headlines",
+Goaziou.  It defines Org's core internal concepts such as "headings",
 "sections", "affiliated keywords", "(greater) elements" and "objects".
 Each part of an Org document belongs to one of the previous
 categories.
@@ -19296,7 +19296,7 @@ can operate on the reports with the following keys:
 #+kindex: C-c C-x I
 {{{kbd(C-c C-x I)}}} in an Org file tries to open a suitable section
 of the Org manual depending on the syntax at point.  For example,
-using it on a headline displays "Document Structure" section.
+using it on a heading displays "Document Structure" section.
 
 {{{kbd(q)}}} closes the Info window.
 
@@ -19847,12 +19847,12 @@ an Org file that is part of a publishing project.
 :DESCRIPTION: Encrypting Org files.
 :END:
 
-Org Crypt encrypts the text of an entry, but not the headline, or
+Org Crypt encrypts the text of an entry, but not the heading, or
 properties.  Behind the scene, it uses the [[info:epa][Emacs EasyPG Library]] to
 encrypt and decrypt files, and EasyPG needs a correct [[info:gnupg][GnuPG]] setup.
 
 #+vindex: org-crypt-tag-matcher
-Any text below a headline that has a =crypt= tag is automatically
+Any text below a heading that has a =crypt= tag is automatically
 encrypted when the file is saved.  To use a different tag, customize
 the ~org-crypt-tag-matcher~ setting.
 
@@ -19995,7 +19995,7 @@ data in an inbox file format, through the following steps:
    After moving the entries, Org processes changes to the shared
    files.  Some of them are applied directly and without user
    interaction.  Examples include changes to tags, TODO state,
-   headline and body text.  Entries requiring further action are
+   heading and body text.  Entries requiring further action are
    tagged as =FLAGGED=.  Org marks entries with problems with an error
    message in the inbox.  They have to be resolved manually.
 
@@ -20627,7 +20627,7 @@ number.  Here are tips to speed up:
 - Reduce the number of Org agenda files to avoid slowdowns due to hard drive
   accesses.
 
-- Reduce the number of DONE and archived headlines so agenda
+- Reduce the number of DONE and archived headings so agenda
   operations that skip over these can finish faster.
 
 - Do not dim blocked tasks:
@@ -20712,7 +20712,7 @@ For structured processing of agenda output, use ~org-batch-agenda-csv~
 with the following fields:
 
 - category :: The category of the item
-- head :: The headline, without TODO keyword, TAGS and PRIORITY
+- head :: The heading, without TODO keyword, TAGS and PRIORITY
 - type :: The type of the agenda entry, can be
 
   | ~todo~              | selected in TODO match              |
@@ -20881,11 +20881,11 @@ entry point for this API is:
 
 #+attr_texinfo: :options org-map-entries func &optional match scope &rest skip
 #+begin_defun
-Call {{{var(FUNC)}}} at each headline selected by {{{var(MATCH)}}} in
+Call {{{var(FUNC)}}} at each heading selected by {{{var(MATCH)}}} in
 {{{var(SCOPE)}}}.
 
 {{{var(FUNC)}}} is a function or a Lisp form.  With point positioned
-at the beginning of the headline, call the function without arguments.
+at the beginning of the heading, call the function without arguments.
 Org returns an alist of return values of calls to the function.
 
 To avoid preserving point, Org wraps the call to {{{var(FUNC)}}} in
@@ -20899,7 +20899,7 @@ entirely when it should not.  To stop Org from such skips, make
 buffer position.
 
 {{{var(MATCH)}}} is a tags/property/TODO match.  Org iterates only
-matched headlines.  Org iterates over all headlines when
+matched headings.  Org iterates over all headings when
 {{{var(MATCH)}}} is ~nil~ or ~t~.
 
 {{{var(SCOPE)}}} determines the scope of this command.  It can be any
@@ -21454,7 +21454,7 @@ minimize the work the mailing list moderators have to do.
 
 [fn:3] See the variables ~org-special-ctrl-a/e~, ~org-special-ctrl-k~,
 and ~org-ctrl-k-protect-subtree~ to configure special behavior of
-{{{kbd(C-a)}}}, {{{kbd(C-e)}}}, and {{{kbd(C-k)}}} in headlines.  Note
+{{{kbd(C-a)}}}, {{{kbd(C-e)}}}, and {{{kbd(C-k)}}} in headings.  Note
 also that clocking only works with headings indented less than 30
 stars.
 
@@ -21475,9 +21475,9 @@ much context is shown around each match.
 [fn:8] This depends on the option ~org-remove-highlights-with-change~.
 
 [fn:9] When using =*= as a bullet, lines must be indented so that they
-are not interpreted as headlines.  Also, when you are hiding leading
+are not interpreted as headings.  Also, when you are hiding leading
 stars to get a clean outline view, plain list items starting with
-a star may be hard to distinguish from true headlines.  In short: even
+a star may be hard to distinguish from true headings.  In short: even
 though =*= is supported, it may be better to not use it for plain list
 items.
 
@@ -21538,24 +21538,24 @@ no such limitation.
 [fn:24] More accurately, the precise behavior depends on how point
 arrived there---see [[info:elisp#Invisible Text][Invisible Text]].
 
-[fn:25] To insert a link targeting a headline, in-buffer completion
+[fn:25] To insert a link targeting a heading, in-buffer completion
 can be used.  Just type a star followed by a few optional letters into
-the buffer and press {{{kbd(M-TAB)}}}.  All headlines in the current
+the buffer and press {{{kbd(M-TAB)}}}.  All headings in the current
 buffer are offered as completions.
 
 [fn:26] When targeting a =NAME= keyword, the =CAPTION= keyword is
 mandatory in order to get proper numbering (see [[*Captions]]).
 
 [fn:27] The actual behavior of the search depends on the value of the
-variable ~org-link-search-must-match-exact-headline~.  If its value is
+variable ~org-link-search-must-match-exact-heading~.  If its value is
 ~nil~, then a fuzzy text search is done.  If it is ~t~, then only the
-exact headline is matched, ignoring spaces and statistic cookies.  If
-the value is ~query-to-create~, then an exact headline is searched; if
+exact heading is matched, ignoring spaces and statistic cookies.  If
+the value is ~query-to-create~, then an exact heading is searched; if
 it is not found, then the user is queried to create it.
 
-[fn:28] If the headline contains a timestamp, it is removed from the
+[fn:28] If the heading contains a timestamp, it is removed from the
 link, which results in a wrong link---you should avoid putting
-a timestamp in the headline.
+a timestamp in the heading.
 
 [fn:29] The Org Id library must first be loaded, either through
 ~org-customize~, by enabling ~id~ in ~org-modules~, or by adding
@@ -21699,8 +21699,8 @@ as done.  If you do not like this, set the variable
 ~org-agenda-skip-scheduled-if-done~.
 
 [fn:66] The =SCHEDULED= and =DEADLINE= dates are inserted on the line
-right below the headline.  Do not put any text between this line and
-the headline.
+right below the heading.  Do not put any text between this line and
+the heading.
 
 [fn:67] Note the corresponding =STARTUP= options =logredeadline=,
 =lognoteredeadline=, and =nologredeadline=.
@@ -21813,7 +21813,7 @@ to ISO and therefore independent of the value of
 ~calendar-date-style~.
 
 [fn:97] You can, however, disable this by setting
-~org-agenda-search-headline-for-time~ variable to a ~nil~ value.
+~org-agenda-search-heading-for-time~ variable to a ~nil~ value.
 
 [fn:98] Custom agenda commands can preset a filter by binding one of
 the variables ~org-agenda-tag-filter-preset~,
@@ -21917,11 +21917,11 @@ this timestamp are exported.
 
 [fn:124] At the moment, some export back-ends do not obey this
 specification.  For example, LaTeX export excludes every unnumbered
-headline from the table of contents.
+heading from the table of contents.
 
-[fn:125] Note that ~org-link-search-must-match-exact-headline~ is
+[fn:125] Note that ~org-link-search-must-match-exact-heading~ is
 locally bound to non-~nil~.  Therefore, ~org-link-search~ only matches
-headlines and named elements.
+headings and named elements.
 
 [fn:126] Since commas separate the arguments, commas within arguments
 have to be escaped with the backslash character.  So only those
@@ -21989,19 +21989,19 @@ http://www.cs.tufts.edu/~nr/noweb/.
 in =org-tempo.el=.
 
 [fn:145] Org Indent mode also sets ~wrap-prefix~ correctly for
-indenting and wrapping long lines of headlines or text.  This minor
+indenting and wrapping long lines of headings or text.  This minor
 mode also handles Visual Line mode and directly applied settings
 through ~word-wrap~.
 
 [fn:146] This works, but requires extra effort.  Org Indent mode is
 more convenient for most applications.
 
-[fn:147] ~org-adapt-indentation~ can also be set to ='headline-data=,
-in which case only data lines below the headline will be indented.
+[fn:147] ~org-adapt-indentation~ can also be set to ='heading-data=,
+in which case only data lines below the heading will be indented.
 
 [fn:148] Note that Org Indent mode also sets the ~wrap-prefix~
 property, such that Visual Line mode (or purely setting ~word-wrap~)
-wraps long lines, including headlines, correctly indented.
+wraps long lines, including headings, correctly indented.
 
 [fn:149] For a server to host files, consider using a WebDAV server,
 such as [[https://nextcloud.com][Nextcloud]].  Additional help is at this [[https://orgmode.org/worg/org-faq.html#mobileorg_webdav][FAQ entry]].
diff --git a/doc/orgcard.tex b/doc/orgcard.tex
index f78cb88f1..cc03420e7 100644
--- a/doc/orgcard.tex
+++ b/doc/orgcard.tex
@@ -306,7 +306,7 @@
 \key{insert new TODO entry/checkbox item}{M-S-RET}
 \key{insert TODO entry/ckbx after subtree}{C-S-RET}
 \key{turn (head)line into item, cycle item type}{C-c -}
-\key{turn item/line into headline}{C-c *}
+\key{turn item/line into heading}{C-c *}
 \key{promote/demote heading}{M-LEFT/RIGHT}
 \metax{promote/demote current subtree}{M-S-LEFT/RIGHT}
 \metax{move subtree/list item up/down}{M-UP/DOWN}
@@ -468,9 +468,9 @@ formula, \kbd{:=} a field formula.
 
 \section{Completion and Template Insertion}
 
-In-buffer completion completes TODO keywords at headline start, TeX
+In-buffer completion completes TODO keywords at heading start, TeX
 macros after ``{\tt \\}'', option keywords after ``{\tt \#-}'', TAGS
-after  ``{\tt :}'', and dictionary words elsewhere.
+after ``{\tt :}'', and dictionary words elsewhere.
 
 \key{complete word at point}{M-TAB}
 \key{structure template (insert or wrap region)}{C-c C-,}
@@ -610,7 +610,7 @@ after  ``{\tt :}'', and dictionary words elsewhere.
 \key{kill item and source}{C-k}
 \key{archive default}{\$ / a}
 \key{refile the subtree}{C-c C-w}
-\key{set/show tags of current headline}{: / T}
+\key{set/show tags of current heading}{: / T}
 \key{set effort property (prefix=nth)}{e}
 \key{set / compute priority of current item}{, / P}
 \key{raise/lower priority of current item}{S-UP/DOWN\notetwo}
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index 78a57ba90..cbb27ff4b 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -15,6 +15,91 @@ Please send Org bug reports to mailto:emacs-orgmode@gnu.org.
 
 ** Important announcements and breaking changes
 
+*** Headings replaces headlines
+
+Org used to refer to headings and headlines as equivalent concepts.
+
+For the sake of clarity, we deprecate the concept of headlines.
+Besides being reflected in Org's documentation, the following were
+marked as obsolete:
+
+- Functions
+   + ~org-babel-ref-goto-headline-id~
+   + ~org-babel-ref-headline-body~
+   + ~org-bibtex-headline~
+   + ~org-find-top-headline~
+   + ~org-agenda-filter-by-top-headline~
+   + ~org-agenda-filter-top-headline-apply~
+   + ~org-add-log-current-headline~
+   + ~org-element-headline-parser~
+   + ~org-element-headline-interpreter~
+   + ~org-indent-notify-modified-headline~
+   + ~org-mouse-end-headline~
+   + ~org-mouse-show-headlines~
+   + ~org-first-headline-recenter~
+   + ~org-edit-headline~
+   + ~org-find-exact-headline-in-buffer~
+   + ~org-point-at-end-of-empty-headline~
+   + ~org-ascii-headline~
+   + ~org-ascii-filter-headline-blank-lines~
+   + ~org-beamer-headline~
+   + ~org-html--format-toc-headline~
+   + ~org-html-headline~
+   + ~org-html-format-headline-default-function~
+   + ~org-icalendar-blocked-headline-p~
+   + ~org-koma-letter-headline~
+   + ~org-koma-letter--keyword-or-headline~
+   + ~org-latex-headline~
+   + ~org-latex-format-headline-default-function~
+   + ~org-man-headline~
+   + ~org-md--headline-referred-p~
+   + ~org-md--headline-title~
+   + ~org-md-headline~
+   + ~org-odt-format-headline--wrap~
+   + ~org-odt-headline~
+   + ~org-odt-format-headline-default-function~
+   + ~org-org-headline~
+   + ~org-texinfo--normalize-headlines~
+   + ~org-texinfo-headline~
+   + ~org-texinfo-format-headline-default-function~
+   + ~org-export--collect-headline-numbering~
+   + ~org-export-get-headline-number~
+   + ~org-export-numbered-headline-p~
+   + ~org-export-collect-headlines~
+   + ~org-export-get-parent-headline~
+- Variables
+   + ~org-agenda-top-headline-filter~
+   + ~org-agenda-filtered-by-top-headline~
+   + ~org-agenda-loop-over-headlines-in-active-region~
+   + ~org-remember-default-headline~
+   + ~org-indent-modified-headline-flag~
+   + ~org-loop-over-headlines-in-active-region~
+   + ~org-link-search-must-match-exact-headline~
+   + ~org-export-filter-headline-functions~
+   + ~org-bibtex-treat-headline-as-title~
+   + ~org-bibtex-headline-format-function~
+   + ~org-link-search-must-match-exact-headline~
+   + ~org-agenda-search-headline-for-time~
+   + ~org-agenda-loop-over-headlines-in-active-region~
+   + ~org-loop-over-headlines-in-active-region~
+   + ~org-fontify-todo-headline~
+   + ~org-fontify-done-headline~
+   + ~org-ascii-headline-spacing~
+   + ~org-html-format-headline-function~
+   + ~org-html-self-link-headlines~
+   + ~org-koma-letter-headline-is-opening-maybe~
+   + ~org-latex-format-headline-function~
+   + ~org-md-headline-style~
+   + ~org-odt-format-headline-function~
+   + ~org-texinfo-format-headline-function~
+   + ~org-export-headline-levels~
+- Faces
+   + ~org-headline-todo~
+   + ~org-headline-done~
+
+Please consider using the above where the string =headline= is
+replaced by =heading=.
+
 *** The =contrib/= now lives in a separate repository
 
 Org's repository has been trimmed from the =contrib/= directory.
@@ -49,10 +134,10 @@ See [[https://github.com/stathissideris/ditaa][the ditaa repository]] on how to
 
 *** ~org-adapt-indentation~ now defaults to =nil=
 
-If you want to automatically indent headlines' metadata, set it to
-=headline-data=.
+If you want to automatically indent headings' metadata, set it to
+=heading-data=.
 
-If you want to automatically indent every line to the headline's
+If you want to automatically indent every line to the heading's
 current indentation, set it to =t=.
 
 Indent added by =RET= and =C-j= also depends on the value of
@@ -277,7 +362,7 @@ This change only has an effect when multiple files are contributing to
 a given clocktable (such as when =:scope agenda= has been specified).
 The existing behavior is that such tables have an extra 'File' column,
 and each individual file that contributes has its own summary line
-with the headline value '*File time*'.  Those summary rows also
+with the heading value '*File time*'.  Those summary rows also
 produce a rollup time value for the file in the 'Time' column.
 
 Prior to this change, the built-in =%= formula did not produce a
@@ -371,13 +456,13 @@ headings in the buffer.
 Previously =org-goto-first-child= would do nothing before first
 heading, except return nil.
 
-*** Faces of all the heading text elements now conform to the headline face
+*** Faces of all the heading text elements now conform to the heading face
 
 In the past, faces of todo keywords, emphasised text, tags, and
-priority cookies inherited =default= face.  The resulting headline
+priority cookies inherited =default= face.  The resulting heading
 fontification was not always consistent, as discussed in [[https://lists.gnu.org/archive/html/emacs-orgmode/2020-09/msg00331.html][this bug
 report]].  Now, the relevant faces adapt to face used to fontify the
-current headline level.
+current heading level.
 
 Users who prefer to keep the old behaviour should change their face
 customisation explicitly stating that =default= face is inherited.
@@ -425,14 +510,14 @@ custom completion functions.
 ** Incompatible changes
 *** Possibly broken internal file links: please check and fix
 
-A bug has been affecting internal links to headlines, like
+A bug has been affecting internal links to headings, like
 
-: [[*Headline][A link to a headline]]
+: [[*Heading][A link to a heading]]
 
-Storing a link to a headline may have been broken in your setup and
+Storing a link to a heading may have been broken in your setup and
 those links may appear as
 
-: [[*TODO Headline][A link to a headline]]
+: [[*TODO Heading][A link to a heading]]
 
 Following the link above will result in an error: the TODO keyword
 should not be part of internal file links.
@@ -442,7 +527,7 @@ You can use the following command to fix links in an Org buffer:
 #+begin_src emacs-lisp
 (defun org-fix-links ()
   "Fix ill-formatted internal links.
-E.g. replace [[*TODO Headline][headline]] by [[*Headline][headline]].
+E.g. replace [[*TODO Heading][heading]] by [[*Heading][heading]].
 Go through the buffer and ask for the replacement."
   (interactive)
   (visible-mode 1)
@@ -484,9 +569,9 @@ blocks.
 
 *** In HTML export, change on how outline-container-* is set
 
-When the headline has a =CUSTOM_ID=, use this custom id to build the
-div id.  For example, if you have =:CUSTOM_ID: my-headline= then the
-resulting <div> will be ~<div id="outline-container-my-headline">~.
+When the heading has a =CUSTOM_ID=, use this custom id to build the
+div id.  For example, if you have =:CUSTOM_ID: my-heading= then the
+resulting <div> will be ~<div id="outline-container-my-heading">~.
 
 You may want to check whether your HTML files are rendered differently
 after this change.
@@ -501,8 +586,8 @@ new keybinding is =<C-c C-TAB>=.
 
 These options now default to =t=:
 
-- ~org-loop-over-headlines-in-active-region~
-- ~org-fontify-done-headline~
+- ~org-loop-over-headings-in-active-region~
+- ~org-fontify-done-heading~
 - ~org-src-tab-acts-natively~
 
 You may want to read the docstrings of these options to understand the
@@ -535,25 +620,25 @@ explicitly:
 
 Alternatively, if you wish to keep =RET= as the "smart-return" key,
 but dislike Org's default indentation of sections, you may prefer to
-customize ~org-adapt-indentation~ to either nil or =headline-data=.
+customize ~org-adapt-indentation~ to either nil or =heading-data=.
 
 *** New allowed value for ~org-adapt-indentation~
 
-~org-adapt-indentation~ now accepts a new value, =headline-data=.
+~org-adapt-indentation~ now accepts a new value, =heading-data=.
 
-When set to this value, Org will only adapt indentation of headline
+When set to this value, Org will only adapt indentation of heading
 data lines, such as planning/clock lines and property/logbook drawers.
 Also, with this setting, =org-indent-mode= will keep these data lines
-correctly aligned with the headline above.
+correctly aligned with the heading above.
 
-*** Looping agenda commands over headlines
+*** Looping agenda commands over headings
 
-~org-agenda-loop-over-headlines-in-active-region~ allows you to loop
+~org-agenda-loop-over-headings-in-active-region~ allows you to loop
 agenda commands over the active region.
 
-When set to =t= (the default), loop over all headlines.  When set to
-='start-level=, loop over headlines with the same level as the first
-headline in the region.  When set to a string, loop over lines
+When set to =t= (the default), loop over all headings.  When set to
+='start-level=, loop over headings with the same level as the first
+heading in the region.  When set to a string, loop over lines
 matching this regular expression.
 
 *** New minor mode ~org-table-header-line-mode~
@@ -591,15 +676,15 @@ commands should work as usual.  You cannot use numbers superior to 64
 for numeric priorities, as it would clash with priorities like [#A]
 where the "A" is internally converted to its numeric value of 65.
 
-*** Property drawers allowed before first headline
+*** Property drawers allowed before first heading
 
-Property drawers are now allowed before the first headline.
+Property drawers are now allowed before the first heading.
 
 Org mode is moving more towards making things before the first
-headline behave just as if it was at outline level 0.  Inheritance for
+heading behave just as if it was at outline level 0.  Inheritance for
 properties will work also for this level.  In other words: defining
-things in a property drawer before the first headline will make them
-"inheritable" for all headlines.
+things in a property drawer before the first heading will make them
+"inheritable" for all headings.
 
 *** Refinement in window behavior on exiting Org source buffer
 
@@ -804,11 +889,11 @@ See [[msg:CA+A2iZaziAfMeGpBqL6qGrzrWEVvLvC0DUw++T4gCF3NGuW-DQ@mail.gmail.com][th
 
 ~org-attach-store-link-p~ has a new option to store a file link to the
 attachment.
-*** New option ~org-fontify-todo-headline~
+*** New option ~org-fontify-todo-heading~
 
-This feature is the same as ~org-fontify-done-headline~, but for TODO
-headlines instead.  This allows you to distinguish TODO headlines from
-normal headlines.  The face can be customized via ~org-headline-todo~.
+This feature is the same as ~org-fontify-done-heading~, but for TODO
+headings instead.  This allows you to distinguish TODO headings from
+normal headings.  The face can be customized via ~org-heading-todo~.
 
 *** New default value for ~org-file-apps~
 
@@ -909,7 +994,7 @@ and down the agenda and attach dispatch window.
 
 *** =<C-c C-c>= in agenda calls ~org-agenda-set-tags~
 
-Both =<C-c C-q>= and =<C-c C-c>= set the tags of the headline in the
+Both =<C-c C-q>= and =<C-c C-c>= set the tags of the heading in the
 Org buffer.  Both keybindings are now available from the agenda too.
 
 *** Allow to use an empty HTML extension
@@ -1201,26 +1286,26 @@ parameter.
 
 **** Add LaTeX output support in PlantUML
 
-*** New minor mode to display headline numbering
+*** New minor mode to display heading numbering
 
 Use =<M-x org-num-mode>= to get a visual indication of the numbering
 in the outline.  The numbering is also automatically updated upon
 changes in the buffer.
 
-*** New property =HTML_HEADLINE_CLASS= in HTML export
+*** New property =HTML_HEADING_CLASS= in HTML export
 
-The new property =HTML_HEADLINE_CLASS= assigns a class attribute to
-a headline.
+The new property =HTML_HEADING_CLASS= assigns a class attribute to
+a heading.
 
 *** Allow LaTeX attributes and captions for "table.el" tables
 
 Supported LaTeX attributes are ~:float~, ~:center~, ~:font~ and
 ~:caption~.
 
-*** Attach buffer contents to headline
+*** Attach buffer contents to heading
 
 With =<b>= key from attachment dispatcher (=<C-c C-a>=), it is now
-possible to write the contents of a buffer to a file in the headline
+possible to write the contents of a buffer to a file in the heading
 attachment directory.
 
 *** iCalendar export respects a =CLASS= property
@@ -1299,7 +1384,7 @@ This attribute overrides the =:width= and =:height= attributes.
 *** Allow specifying the target for a table of contents
 
 The =+TOC= keyword now accepts a =:target:= attribute that specifies
-the headline to use for making the table of contents.
+the heading to use for making the table of contents.
 
 #+begin_example
 ,* Target
@@ -1309,7 +1394,7 @@ the headline to use for making the table of contents.
 ,** Heading A
 ,** Heading B
 ,* Another section
-,#+TOC: headlines 1 :target "#TargetSection"
+,#+TOC: headings 1 :target "#TargetSection"
 #+end_example
 ** New functions
 *** ~org-dynamic-block-insert-dblock~
@@ -1407,14 +1492,14 @@ New customization to make the persisting of org-id-locations between
 sessions to store links to files as relative instead of absolute.  The
 links will be stored as relative to the path of org-id-locations-file.
 
-*** ~org-ctrl-c-tab~ is functional before the first headline
+*** ~org-ctrl-c-tab~ is functional before the first heading
 
 I.e. treat the whole file as if it was a subtree.
 
 Also fold everything below the chosen level.  Former behavior was to
 leave unfolded subtrees unfolded.
 
-*** ~org-kill-note-or-show-branches~ is functional before the first headline
+*** ~org-kill-note-or-show-branches~ is functional before the first heading
 
 I.e. treat the whole file as if it was a subtree.
 
@@ -1567,7 +1652,7 @@ document, use =shrink= value instead, or in addition to align:
 *** ~org-get-tags~ meaning change
 
 Function ~org-get-tags~ used to return local tags to the current
-headline.  It now returns all the inherited tags in addition to the
+heading.  It now returns all the inherited tags in addition to the
 local tags.  In order to get the old behavior back, you can use:
 
 : (org-get-tags nil t)
@@ -1583,11 +1668,11 @@ code-point.
 The =:match= (renamed from =:tags=) option allows to limit clock entries
 to those matching a todo-tags matcher.
 
-The old =:tags= option can be set to =t= to display a headline's tags in a
+The old =:tags= option can be set to =t= to display a heading's tags in a
 dedicated column.
 
 This is consistent with the naming of =org-dblock-write:columnview=
-options, where =:match= is also used as a headlines filter.
+options, where =:match= is also used as a headings filter.
 
 ** New features
 *** Add ~:session~ support of ob-clojure for CIDER
@@ -1632,7 +1717,7 @@ Use MathJax links when enabled (by ~org-html-with-latex~), otherwise
 add a label to the rendered equation.
 *** Org Tempo may used for snippet expansion of structure template.
 See manual and the commentary section in ~org-tempo.el~ for details.
-*** Exclude unnumbered headlines from table of contents
+*** Exclude unnumbered headings from table of contents
 Set their =UNNUMBERED= property to the special =notoc= value.  See
 manual for details.
 *** ~org-archive~ functions update status cookies
@@ -1739,13 +1824,13 @@ parameters.  See example below.
 *** ~org-agenda-set-restriction-lock~ toggle agenda restriction at point
 
 You can set an agenda restriction lock with =C-x C-x <= or with =<= at the
-beginning of a headline when using Org speed commands.  Now, if there
+beginning of a heading when using Org speed commands.  Now, if there
 is already a restriction at point, hitting =<= again (or =C-x C-x <=) will
 remove it.
 
-*** Headlines can now link to themselves in HTML export
+*** Headings can now link to themselves in HTML export
 
-When enabling ~org-html-self-link-headlines~ the headlines exported to
+When enabling ~org-html-self-link-headings~ the headings exported to
 HTML contain a hyperlink to themselves.
 
 ** New commands and functions
@@ -1828,8 +1913,8 @@ It is meant to be used as the face for distant deadlines, see
 
 *** ~org-paste-subtree~ no longer breaks sections
 
-Unless point is at the beginning of a headline, ~org-paste-subtree~
-now pastes the tree before the next visible headline.  If you need to
+Unless point is at the beginning of a heading, ~org-paste-subtree~
+now pastes the tree before the next visible heading.  If you need to
 break the section, use ~org-yank~ instead.
 
 *** ~org-table-insert-column~ inserts a column to the right
@@ -2165,7 +2250,7 @@ changed by configuring ~org-src-lang-modes~.
 ~:ifmt~ is a function to be called on the body of each item.  See
 ~org-list-to-generic~ documentation for details.
 
-*** New variable : ~org-bibtex-headline-format-function~
+*** New variable : ~org-bibtex-heading-format-function~
 This allow to use a different title than entry title.
 
 *** ~org-attach~ supports attaching files from URLs
@@ -2487,7 +2572,7 @@ Using header arguments as property names is no longer possible.  As
 such, the following
 
 #+BEGIN_EXAMPLE
-,* Headline
+,* Heading
 :PROPERTIES:
 :exports: code
 :var: a=1 b=2
@@ -2498,7 +2583,7 @@ such, the following
 should be written instead
 
 #+BEGIN_EXAMPLE
-,* Headline
+,* Heading
 :PROPERTIES:
 :header-args: :exports code
 :header-args+: :var a=1 b=2
@@ -2960,7 +3045,7 @@ Variable ~org-html-table-row-tags~ has been split into
 Both new variables can be either a string or a function which will be
 called with 6 parameters.
 
-*** =ITEM= special property returns headline without stars
+*** =ITEM= special property returns heading without stars
 *** Rename ~org-insert-columns-dblock~ into ~org-columns-insert-dblock~
 
 The previous name is, for the time being, kept as an obsolete alias.
@@ -3040,7 +3125,7 @@ It defines the format of the original link.  Possible values are:
 *** Properties drawers syntax changes
 
 Properties drawers are now required to be located right after a
-headline and its planning line, when applicable.
+heading and its planning line, when applicable.
 
 It will break some documents as TODO states changes were sometimes
 logged before the property drawer.
@@ -3080,12 +3165,12 @@ Ignore non Org buffers."
 
 *** Using "COMMENT" is now equivalent to commenting with "#"
 
-If you used "COMMENT" in headlines to prevent a subtree from being
+If you used "COMMENT" in headings to prevent a subtree from being
 exported, you can still do it but all information within the subtree
 is now commented out, i.e. no #+OPTIONS line will be parsed or taken
 into account when exporting.
 
-If you want to exclude a headline from export while using its contents
+If you want to exclude a heading from export while using its contents
 for setting options, use =:noexport:= (see =org-export-exclude-tags=.)
 
 *** =#+CATEGORY= keywords no longer apply partially to document
@@ -3098,7 +3183,7 @@ the text below until the next one, but strongly deprecated since Org
 properties to set category for a subtree, e.g.,
 
 #+BEGIN_SRC org
-,* Headline
+,* Heading
    :PROPERTIES:
    :CATEGORY: some category
    :END:
@@ -3130,7 +3215,7 @@ The key sequences =C-c C-n= and =C-c C-p= are now bound to
 ~org-next-visible-heading~ and ~org-previous-visible-heading~
 respectively, rather than the =outline-mode= versions of these
 functions.  The Org version of these functions skips over inline tasks
-(and even-level headlines when ~org-odd-levels-only~ is set).
+(and even-level headings when ~org-odd-levels-only~ is set).
 
 *** ~org-element-context~ no longer return objects in keywords
 
@@ -3149,9 +3234,9 @@ The following functions require an additional argument.  See their
 docstring for more information.
 
 - ~org-export-collect-footnote-definitions~
-- ~org-html-format-headline-function~
+- ~org-html-format-heading-function~
 - ~org-html-format-inlinetask-function~
-- ~org-latex-format-headline-function~
+- ~org-latex-format-heading-function~
 - ~org-latex-format-inlinetask-function~
 - ~org-link-search~
 
@@ -3173,8 +3258,8 @@ This uses the lexical environment with x=42 in the eval.
 
 *** Behavior of ~org-return~ changed
 
-If point is before or after the headline title, insert a new line
-without changing the headline.
+If point is before or after the heading title, insert a new line
+without changing the heading.
 
 *** Hierarchies of tags
 
@@ -3214,7 +3299,7 @@ Grouptags had to previously be defined with { }.  This syntax is
 already used for exclusive tags and Grouptags need their own,
 non-exclusive syntax.  This behavior is achieved with [ ].  Note: { }
 can still be used also for Grouptags but then only one of the given
-tags can be used on the headline at the same time.  Example:
+tags can be used on the heading at the same time.  Example:
 
 [ group : sub1 sub2 ]
 
@@ -3281,7 +3366,7 @@ Thanks to Jarmo Hurri for this feature.
 The new behavior is the following:
 
 - With a double prefix argument or with a single prefix argument when
-  point is before the first headline, toggle overlays in the whole
+  point is before the first heading, toggle overlays in the whole
   buffer;
 
 - With a single prefix argument, toggle overlays in the current
@@ -3350,7 +3435,7 @@ in the output, depending on the parameters.
 
 *** Extend ~org-export-first-sibling-p~ and ~org-export-last-sibling-p~
 
-These functions now support any element or object, not only headlines.
+These functions now support any element or object, not only headings.
 
 *** New function: ~org-export-table-row-in-header-p~
 
@@ -3423,9 +3508,9 @@ special blocks and images.  See docstring for more information.
 
 See the docstring for more information.
 
-*** Export unnumbered headlines
+*** Export unnumbered headings
 
-Headlines, for which the property ~UNNUMBERED~ is non-nil, are now
+Headings, for which the property ~UNNUMBERED~ is non-nil, are now
 exported without section numbers irrespective of their levels.  The
 property is inherited by children.
 
@@ -3507,7 +3592,7 @@ dedicated buffer.  It works even if buffer is currently narrowed.
 *** New function ~org-delete-indentation~ bound to ~M-^~
 
 Work as ~delete-indentation~ unless at heading, in which case text is
-added to headline text.
+added to heading text.
 
 *** Support for images in Texinfo export
 
@@ -3541,7 +3626,7 @@ See the docstring of ~org-latex-classes~ and
 
 *** None-floating tables, graphics and blocks can have captions
 
-*** `org-insert-heading' can be forced to insert top-level headline
+*** `org-insert-heading' can be forced to insert top-level heading
 
 ** Removed functions
 
@@ -3681,7 +3766,7 @@ particular test failure was introduced.
 Exact heading search for links now ignore spaces and cookies. This is
 the case for links of the form ~file:projects.org::*task title~, as well
 as links of the form ~file:projects.org::some words~ when
-~org-link-search-must-match-exact-headline~ is not nil.
+~org-link-search-must-match-exact-heading~ is not nil.
 
 *** ~org-latex-hyperref-template~, ~org-latex-title-command~ formatting
 
@@ -3868,9 +3953,9 @@ then inline code snippets will be wrapped into the formatting string.
 
 ** Miscellaneous
 
-*** "QUOTE" keywords in headlines are deprecated
+*** "QUOTE" keywords in headings are deprecated
 
-"QUOTE" keywords are an undocumented feature in Org.  When a headline
+"QUOTE" keywords are an undocumented feature in Org.  When a heading
 starts with the keyword "QUOTE", its contents are parsed as
 a ~quote-section~ and treated as an example block.  You can achieve
 the same with example blocks.
@@ -4044,10 +4129,10 @@ manual for details and check [[https://orgmode.org/worg/org-8.0.html][this Worg
 
 *** ~org-bullets.el~ by Evgeni Sabof
 
-    Display bullets instead of stars for headlines.
+    Display bullets instead of stars for headings.
 
     Also see [[https://orgmode.org/worg/org-faq.html#sec-8-12][this updated FAQ]] on how to display another character than "*"
-    for starting headlines.
+    for starting headings.
 
 *** ~org-favtable.el~ by Marc-Oliver Ihm
 
@@ -4182,12 +4267,12 @@ like this:
 : - [[https://abc.org][B]]
 
 by comparing the descriptions, not the links.
-Same when sorting headlines instead of list items.
+Same when sorting headings instead of list items.
 **** New option =orgstruct-heading-prefix-regexp=
 
 For example, setting this option to "^;;; " in Emacs lisp files and using
 =orgstruct-mode= in those files will allow you to cycle through visibility
-states as if lines starting with ";;; *..." where headlines.
+states as if lines starting with ";;; *..." where headings.
 
 In general, you want to set =orgstruct-heading-prefix-regexp= as a file
 local variable.
@@ -4326,14 +4411,14 @@ These new options are available:
 
 For example, if you locally set [[doc:org-agenda-max-todos][org-agenda-max-todos]] to 3 in an agenda
 view, the agenda will be limited to the first three todos.  Other entries
-without a TODO keyword or beyond the third TODO headline will be ignored.
+without a TODO keyword or beyond the third TODO heading will be ignored.
 
 When setting a limit (e.g. about an effort's sum), the default behavior is
 to exclude entries that cannot be checked against (e.g. entries that have
 no effort property.)  To include other entries too, you can set the limit
 to a negative number.  For example =(setq org-agenda-max-tags -3)= will not
-show the fourth tagged headline (and beyond), but it will also show
-non-tagged headlines.
+show the fourth tagged heading (and beyond), but it will also show
+non-tagged headings.
 
 **** =~= in agenda view sets temporary limits
 
@@ -4356,7 +4441,7 @@ filters, there is a new command =|= to reset all filters at once.
 **** Allow writing an agenda to an =.org= file
 
 You can now write an agenda view to an =.org= file.  It copies the
-headlines and their content (but not subheadings) into the new file.
+headings and their content (but not subheadings) into the new file.
 
 This is useful when you want to quickly share an agenda containing the full
 list of notes.
@@ -4377,7 +4462,7 @@ to display "breadcrumbs" in the agenda view.
 
 This is useful when you want to display the task hierarchy in your agenda.
 
-**** Use =%l= for displaying the headline's level in the agenda view
+**** Use =%l= for displaying the heading's level in the agenda view
 
 [[doc:org-agenda-prefix-format][org-agenda-prefix-format]] allows to use a =%l= formatter to tell Org to
 display entries with additional spaces corresponding to their level in the
@@ -4400,7 +4485,7 @@ asks for a confirmation.
 **** New option [[doc:org-agenda-search-view-max-outline-level][org-agenda-search-view-max-outline-level]]
 
 This option sets the maximum outline level to display in search view.
-E.g. when this is set to 1, the search view will only show headlines of
+E.g. when this is set to 1, the search view will only show headings of
 level 1.
 
 **** New option [[doc:org-agenda-todo-ignore-time-comparison-use-seconds][org-agenda-todo-ignore-time-comparison-use-seconds]]
@@ -4464,7 +4549,7 @@ check against the name of the buffer.
 
 Using =#+TAGS: { Tag1 : Tag2 Tag3 }= will define =Tag1= as a /group tag/
 (note the colon after =Tag1=).  If you search for =Tag1=, it will return
-headlines containing either =Tag1=, =Tag2= or =Tag3= (or any combination
+headings containing either =Tag1=, =Tag2= or =Tag3= (or any combination
 of those tags.)
 
 You can use group tags for sparse tree in an Org buffer, for creating
@@ -4500,7 +4585,7 @@ with-description and without-description links when inserting them.
 
 **** No curly braces to bracket links within internal links
 
-When storing a link to a headline like
+When storing a link to a heading like
 
 : * See [[https://orgmode.org][Org website]]
 
@@ -4848,13 +4933,13 @@ See https://orgmode.org/elpa/
      Note that if point is at the beginning of a list, it will mark
      the whole list.
 
-     To mark a subtree, you can either use =M-h= on the headline
+     To mark a subtree, you can either use =M-h= on the heading
      (since there is no ambiguity about the element you're at) or
      [[doc::org-mark-subtree][org-mark-subtree]] (=C-c @=) anywhere in the subtree.
 
      Invoking [[doc::org-mark-element][org-mark-element]] repeatedly will try to mark the next
      element on top of the previous one(s).  E.g. hitting =M-h= twice
-     on a headline will mark the current subtree and the next one on
+     on a heading will mark the current subtree and the next one on
      the same level.
 
 *** Org Agenda
@@ -5011,16 +5096,16 @@ See https://orgmode.org/elpa/
 
 **** [[doc::org-todo][org-todo]] and =org-archive-*= can now loop in the active region
 
-     When [[doc::org-loop-over-headlines-in-active-region][org-loop-over-headlines-in-active-region]] is =non-nil=, using
+     When [[doc::org-loop-over-headings-in-active-region][org-loop-over-headings-in-active-region]] is =non-nil=, using
      [[doc::org-todo][org-todo]] or =org-archive-*= commands in the active region will
-     loop over headlines.  This is handy if you want to set the TODO
+     loop over headings.  This is handy if you want to set the TODO
      keyword for several items, or archive them quickly.
 
-**** You can now set tags for headlines in a region
+**** You can now set tags for headings in a region
 
-     If [[doc::org-loop-over-headlines-in-active-region][org-loop-over-headlines-in-active-region]] is =non-nil=, then
+     If [[doc::org-loop-over-headings-in-active-region][org-loop-over-headings-in-active-region]] is =non-nil=, then
      selecting the region and hitting =C-c C-q= will set the tags for
-     all headlines in the region.
+     all headings in the region.
 
 **** New command [[doc::org-insert-drawer][org-insert-drawer]] to insert a drawer interactively
 
@@ -5029,7 +5114,7 @@ See https://orgmode.org/elpa/
      Note that the space after the hashtag is mandatory.  Comments
      with "^#+" are not supported anymore.
 
-**** New speed key =#= to toggle the COMMENT cookie on a headline
+**** New speed key =#= to toggle the COMMENT cookie on a heading
 
 **** =indent-region-function= is now set to [[doc::org-indent-region][org-indent-region]]
 
@@ -5040,7 +5125,7 @@ See https://orgmode.org/elpa/
 **** New option [[doc::org-allow-promoting-top-level-subtree][org-allow-promoting-top-level-subtree]]
 
      When =non-nil=, =S-M-<left>= will promote level-1 subtrees
-     containing other subtrees.  The level-1 headline will be
+     containing other subtrees.  The level-1 heading will be
      commented out.  You can revert to the previous state with =M-x
      undo RET=.
 
@@ -5258,7 +5343,7 @@ See https://orgmode.org/elpa/
 **** ODT: Add support for ODT export in org-bbdb.el
 **** ODT: Add support for indented tables (see [[https://orgmode.org/cgit.cgi/org-mode.git/commit/?id=e9fd33][this commit]] for details)
 **** ODT: Improve the conversion from ODT to other formats
-**** ASCII: Swap the level-1/level-2 characters to underline the headlines
+**** ASCII: Swap the level-1/level-2 characters to underline the headings
 **** Support for Chinese, simplified Chinese, Russian, Ukrainian and Japanese
 **** HTML: New option [[doc::org-export-html-date-format-string][org-export-html-date-format-string]]
 
@@ -5345,12 +5430,12 @@ that Calc formulas can operate on them.
 
 **** New option [[doc::org-ditaa-jar-option][org-ditaa-jar-option]] to specify the ditaa jar file
 
-**** New possible value for [[doc::org-loop-over-headlines-in-active-region][org-loop-over-headlines-in-active-region]]
+**** New possible value for [[doc::org-loop-over-headings-in-active-region][org-loop-over-headings-in-active-region]]
 
-     When [[doc::org-loop-over-headlines-in-active-region][org-loop-over-headlines-in-active-region]] is set to
+     When [[doc::org-loop-over-headings-in-active-region][org-loop-over-headings-in-active-region]] is set to
      =start-level=, the command will loop over the active region but
      will only act upon entries that are of the same level than the
-     first headline in the region.
+     first heading in the region.
 
 **** New option [[doc::org-habit-show-all-today][org-habit-show-all-today]]
 
@@ -5645,9 +5730,9 @@ that Calc formulas can operate on them.
 **** Org-Bibtex -- major improvements
 
      Provides support for managing bibtex bibliographical references
-     data in headline properties.  Each headline corresponds to a
+     data in heading properties.  Each heading corresponds to a
      single reference and the relevant bibliographic meta-data is
-     stored in headline properties, leaving the body of the headline
+     stored in heading properties, leaving the body of the heading
      free to hold notes and comments.  Org-bibtex is aware of all
      standard bibtex reference types and fields.
 
@@ -5655,15 +5740,15 @@ that Calc formulas can operate on them.
 
      - org-bibtex-check :: queries the user to flesh out all required
           (and with prefix argument optional) bibtex fields available
-          for the specific reference =type= of the current headline.
+          for the specific reference =type= of the current heading.
 
      - org-bibtex-create :: Create a new entry at the given level,
           using org-bibtex-check to flesh out the relevant fields.
 
      - org-bibtex-yank :: Yank a bibtex entry on the kill ring as a
-          formatted Org-mode headline into the current buffer
+          formatted Org-mode heading into the current buffer
 
-     - org-bibtex-export-to-kill-ring :: Export the current headline
+     - org-bibtex-export-to-kill-ring :: Export the current heading
           to the kill ring as a formatted bibtex entry.
 
 **** org-gnus.el now allows link creation from messages
@@ -5975,9 +6060,9 @@ that Calc formulas can operate on them.
 
     The expanded body can now be tangled, this includes variable
     values which may be the results of other source-code blocks, or
-    stored in headline properties or tables. One possible use for this
+    stored in heading properties or tables. One possible use for this
     is to allow those using org-babel for their emacs initialization
-    to store values (e.g. usernames, passwords, etc...) in headline
+    to store values (e.g. usernames, passwords, etc...) in heading
     properties or in tables.
 
     Org-babel now supports three new header arguments, and new default
@@ -6042,7 +6127,7 @@ that Calc formulas can operate on them.
 
 **** Better level cycling function
 
-     =TAB= in an empty headline cycles the level of that headline
+     =TAB= in an empty heading cycles the level of that heading
      through likely states.  Ryan Thompson implemented an improved
      version of this function, which does not depend upon when exactly
      this command is used.  Thanks to Ryan for this improvement.
diff --git a/lisp/ob-core.el b/lisp/ob-core.el
index 384c06c9a..727f9abd4 100644
--- a/lisp/ob-core.el
+++ b/lisp/ob-core.el
@@ -43,8 +43,8 @@
 (declare-function org-at-item-p "org-list" ())
 (declare-function org-at-table-p "org" (&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-goto-heading-id "ob-ref" (id))
+(declare-function org-babel-ref-heading-body "ob-ref" ())
 (declare-function org-babel-ref-parse "ob-ref" (assignment))
 (declare-function org-babel-ref-resolve "ob-ref" (ref))
 (declare-function org-babel-ref-split-args "ob-ref" (arg-string))
@@ -2828,9 +2828,9 @@ block but are passed literally to the \"example-block\"."
 		     (setq cache nil)
 		     (let ((raw (org-babel-ref-resolve id)))
 		       (if (stringp raw) raw (format "%S" raw))))
-		    ;; Return the contents of headlines literally.
-		    ((org-babel-ref-goto-headline-id id)
-		     (org-babel-ref-headline-body))
+		    ;; Return the contents of headings literally.
+		    ((org-babel-ref-goto-heading-id id)
+		     (org-babel-ref-heading-body))
 		    ;; Look for a source block named SOURCE-NAME.  If
 		    ;; found, assume it is unique; do not look after
 		    ;; `:noweb-ref' header argument.
diff --git a/lisp/ob-ref.el b/lisp/ob-ref.el
index a7ab299b2..4a17dc8cf 100644
--- a/lisp/ob-ref.el
+++ b/lisp/ob-ref.el
@@ -94,7 +94,7 @@ Emacs Lisp representation of the value of the variable."
 		    (org-babel-ref-resolve ref))
 		out))))))
 
-(defun org-babel-ref-goto-headline-id (id)
+(defun org-babel-ref-goto-heading-id (id)
   (or (let ((h (org-find-property "CUSTOM_ID" id)))
 	(when h (goto-char h)))
       (let* ((file (org-id-find-id-file id))
@@ -107,7 +107,7 @@ Emacs Lisp representation of the value of the variable."
 	  (org-show-context)
 	  t))))
 
-(defun org-babel-ref-headline-body ()
+(defun org-babel-ref-heading-body ()
   (save-restriction
     (org-narrow-to-subtree)
     (buffer-substring
@@ -182,9 +182,9 @@ Emacs Lisp representation of the value of the variable."
 				     (guard v))
 				(throw :found v))
 			       (_ (error "Reference not found")))))))
-		     ;; Check for local or global headlines by ID.
-		     (when (org-babel-ref-goto-headline-id ref)
-		       (throw :found (org-babel-ref-headline-body)))
+		     ;; Check for local or global headings by ID.
+		     (when (org-babel-ref-goto-heading-id ref)
+		       (throw :found (org-babel-ref-heading-body)))
 		     ;; Check the Library of Babel.
 		     (let ((info (cdr (assq (intern ref)
 					    org-babel-library-of-babel))))
diff --git a/lisp/oc.el b/lisp/oc.el
index 338348116..47b0597cc 100644
--- a/lisp/oc.el
+++ b/lisp/oc.el
@@ -1018,7 +1018,7 @@ the same object, call `org-cite-adjust-punctuation' first."
 (defun org-cite-parse-elements (s)
   "Parse string S as a list of Org elements.
 The return value is suitable as a replacement for a \"print_bibliography\" keyword.
-As a consequence, the function raises an error if S contains a headline."
+As a consequence, the function raises an error if S contains a heading."
   (with-temp-buffer
     (insert s)
     (pcase (org-element-contents (org-element-parse-buffer))
@@ -1026,7 +1026,7 @@ As a consequence, the function raises an error if S contains a headline."
       (`(,(and section (guard (eq 'section (org-element-type section)))))
        (org-element-contents section))
       (_
-       (error "Headlines cannot replace a keyword")))))
+       (error "Headings cannot replace a keyword")))))
 
 (defun org-cite-parse-objects (s &optional affix)
   "Parse string S as a secondary string.
@@ -1391,9 +1391,9 @@ ARG is the prefix argument received when calling `org-open-at-point', or nil."
      ((eq type 'verse-block)
       (and (>= (point) (org-element-property :contents-begin context))
 	   (< (point) (org-element-property :contents-end context))))
-     ;; In an headline or inlinetask, point must be either on the
+     ;; In an heading or inlinetask, point must be either on the
      ;; heading itself or on the blank lines below.
-     ((memq type '(headline inlinetask))
+     ((memq type '(heading inlinetask))
       (or (not (org-at-heading-p))
 	  (and (save-excursion
 		 (beginning-of-line)
diff --git a/lisp/ol-bibtex.el b/lisp/ol-bibtex.el
index 4970be9c4..28fa15511 100644
--- a/lisp/ol-bibtex.el
+++ b/lisp/ol-bibtex.el
@@ -78,7 +78,7 @@
 ;; - Run `org-bibtex' to export the current file to a .bib.
 ;;
 ;; - Run `org-bibtex-check' or `org-bibtex-check-all' to check and
-;;   fill in missing field of either the current, or all headlines
+;;   fill in missing field of either the current, or all headings
 ;;
 ;; - Run `org-bibtex-create' to add a bibtex entry
 ;;
@@ -99,8 +99,8 @@
 ;; and then implemented by Bastien Guerry.
 ;;
 ;; Eric Schulte eventually added the functions for translating between
-;; Org headlines and Bibtex entries, and for fleshing out the Bibtex
-;; fields of existing Org headlines.
+;; Org headings and Bibtex entries, and for fleshing out the Bibtex
+;; fields of existing Org headings.
 ;;
 ;; Org mode loads this module by default - if this is not what you want,
 ;; configure the variable `org-modules'.
@@ -247,18 +247,18 @@ For example setting to `BIB_' would allow interoperability with fireforg."
 	   (const nil)
 	   (string)))
 
-(defcustom org-bibtex-treat-headline-as-title t
-  "Treat headline text as title if title property is absent.
-If an entry is missing a title property, use the headline text as
+(defcustom org-bibtex-treat-heading-as-title t
+  "Treat heading text as title if title property is absent.
+If an entry is missing a title property, use the heading text as
 the property.  If this value is t, `org-bibtex-check' will ignore
 a missing title field."
   :group 'org-bibtex
   :version "24.1"
   :type 'boolean)
 
-(defcustom org-bibtex-headline-format-function
+(defcustom org-bibtex-heading-format-function
   (lambda (entry) (cdr (assq :title entry)))
-  "Function returning the headline text for `org-bibtex-write'.
+  "Function returning the heading text for `org-bibtex-write'.
 It should take a single argument, the bibtex entry (an alist as
 returned by `org-bibtex-read').  The default value simply returns
 the entry title."
@@ -279,7 +279,7 @@ not placed in the exported bibtex entry."
 (defcustom org-bibtex-key-property "CUSTOM_ID"
   "Property that holds the bibtex key.
 By default, this is CUSTOM_ID, which enables easy linking to
-bibtex headlines from within an org file.  This can be set to ID
+bibtex headings from within an org file.  This can be set to ID
 to enable global links, but only with great caution, as global
 IDs must be unique."
   :group 'org-bibtex
@@ -353,8 +353,8 @@ and `org-tags-exclude-from-inheritance'."
 	     prop)
      value)))
 
-(defun org-bibtex-headline ()
-  "Return a bibtex entry of the given headline as a string."
+(defun org-bibtex-heading ()
+  "Return a bibtex entry of the given heading as a string."
   (letrec ((val (lambda (key lst) (cdr (assoc key lst))))
 	   (to (lambda (string) (intern (concat ":" string))))
 	   (from (lambda (key) (substring (symbol-name key) 1)))
@@ -433,10 +433,10 @@ and `org-tags-exclude-from-inheritance'."
         (when (> (length result) 0) result)))))
 
 (defun org-bibtex-autokey ()
-  "Generate an autokey for the current headline."
+  "Generate an autokey for the current heading."
   (org-bibtex-put org-bibtex-key-property
                   (if org-bibtex-autogen-keys
-                      (let* ((entry (org-bibtex-headline))
+                      (let* ((entry (org-bibtex-heading))
 			     (key
 			      (with-temp-buffer
 				(insert entry)
@@ -458,7 +458,7 @@ With optional argument OPTIONAL, also prompt for optional fields."
 	(keyword (lambda (name) (intern (concat ":" (downcase name)))))
 	(name (lambda (keyword) (substring (symbol-name keyword) 1))))
     (dolist (field (append
-		    (if org-bibtex-treat-headline-as-title
+		    (if org-bibtex-treat-heading-as-title
 			(remove :title (funcall val :required (funcall val type org-bibtex-types)))
 		      (funcall val :required (funcall val type org-bibtex-types)))
 		    (when optional (funcall val :optional (funcall val type org-bibtex-types)))))
@@ -578,10 +578,10 @@ ARG, when non-nil, is a universal prefix argument.  See
 (add-hook 'org-execute-file-search-functions 'org-execute-file-search-in-bibtex)
 
 \f
-;;; Bibtex <-> Org headline translation functions
+;;; Bibtex <-> Org heading translation functions
 (defun org-bibtex (filename)
-  "Export each headline in the current file to a bibtex entry.
-Headlines are exported using `org-bibtex-headline'."
+  "Export each heading in the current file to a bibtex entry.
+Headings are exported using `org-bibtex-heading'."
   (interactive
    (list (read-file-name
 	  "Bibtex file: " nil nil nil
@@ -595,7 +595,7 @@ Headlines are exported using `org-bibtex-headline'."
                   (remove nil (org-map-entries
                                (lambda ()
                                  (condition-case nil
-                                     (org-bibtex-headline)
+                                     (org-bibtex-heading)
                                    (error (throw 'bib (point)))))))))
              (with-temp-file filename
                (insert (mapconcat #'identity bibtex-entries "\n")))
@@ -607,7 +607,7 @@ Headlines are exported using `org-bibtex-headline'."
       (message "Bibtex error at %S" (nth 4 (org-heading-components))))))
 
 (defun org-bibtex-check (&optional optional)
-  "Check the current headline for required fields.
+  "Check the current heading for required fields.
 With prefix argument OPTIONAL also prompt for optional fields."
   (interactive "P")
   (save-restriction
@@ -617,14 +617,14 @@ With prefix argument OPTIONAL also prompt for optional fields."
       (when type (org-bibtex-fleshout type optional)))))
 
 (defun org-bibtex-check-all (&optional optional)
-  "Check all headlines in the current file.
+  "Check all headings in the current file.
 With prefix argument OPTIONAL also prompt for optional fields."
   (interactive) (org-map-entries (lambda () (org-bibtex-check optional))))
 
 (defun org-bibtex-create (&optional arg nonew)
   "Create a new entry at the given level.
 With a prefix arg, query for optional fields as well.
-If nonew is t, add data to the headline of the entry at point."
+If nonew is t, add data to the heading of the entry at point."
   (interactive "P")
   (let* ((type (completing-read
 		"Type: " (mapcar (lambda (type)
@@ -633,7 +633,7 @@ If nonew is t, add data to the headline of the entry at point."
 		nil nil (when nonew
 			  (org-bibtex-get org-bibtex-type-property-name))))
 	 (type (if (keywordp type) type (intern (concat ":" type))))
-	 (org-bibtex-treat-headline-as-title (if nonew nil t)))
+	 (org-bibtex-treat-heading-as-title (if nonew nil t)))
     (unless (assoc type org-bibtex-types)
       (error "Type:%s is not known" type))
     (if nonew
@@ -710,7 +710,7 @@ Return the number of saved entries."
 	 (val (lambda (field) (cdr (assoc field entry))))
 	 (togtag (lambda (tag) (org-toggle-tag tag 'on))))
     (org-insert-heading)
-    (insert (funcall org-bibtex-headline-format-function entry))
+    (insert (funcall org-bibtex-heading-format-function entry))
     (org-bibtex-put "TITLE" (funcall val :title))
     (org-bibtex-put org-bibtex-type-property-name
 		    (downcase (funcall val :type)))
@@ -731,7 +731,7 @@ Return the number of saved entries."
     (mapc togtag org-bibtex-tags)))
 
 (defun org-bibtex-yank ()
-  "If kill ring holds a bibtex entry yank it as an Org headline."
+  "If kill ring holds a bibtex entry yank it as an Org heading."
   (interactive)
   (let (entry)
     (with-temp-buffer (yank 1) (setf entry (org-bibtex-read)))
@@ -740,7 +740,7 @@ Return the number of saved entries."
       (error "Yanked text does not appear to contain a BibTeX entry"))))
 
 (defun org-bibtex-import-from-file (file)
-  "Read bibtex entries from FILE and insert as Org headlines after point."
+  "Read bibtex entries from FILE and insert as Org headings after point."
   (interactive "fFile: ")
   (dotimes (_ (org-bibtex-read-file file))
     (save-excursion (org-bibtex-write))
@@ -748,9 +748,9 @@ Return the number of saved entries."
     (open-line 1) (forward-char 1)))
 
 (defun org-bibtex-export-to-kill-ring ()
-  "Export current headline to kill ring as bibtex entry."
+  "Export current heading to kill ring as bibtex entry."
   (interactive)
-  (let ((result (org-bibtex-headline)))
+  (let ((result (org-bibtex-heading)))
     (kill-new result) result))
 
 (defun org-bibtex-search (string)
diff --git a/lisp/ol.el b/lisp/ol.el
index 1eeb2bce1..cbed74ef2 100644
--- a/lisp/ol.el
+++ b/lisp/ol.el
@@ -338,12 +338,12 @@ another window."
 		 (const wl-other-frame))))
   :safe nil)
 
-(defcustom org-link-search-must-match-exact-headline 'query-to-create
-  "Non-nil means internal fuzzy links can only match headlines.
+(defcustom org-link-search-must-match-exact-heading 'query-to-create
+  "Non-nil means internal fuzzy links can only match headings.
 
 When nil, the a fuzzy link may point to a target or a named
 construct in the document.  When set to the special value
-`query-to-create', offer to create a new headline when none
+`query-to-create', offer to create a new heading when none
 matched.
 
 Spaces and statistics cookies are ignored during heading searches."
@@ -351,8 +351,8 @@ Spaces and statistics cookies are ignored during heading searches."
   :version "24.1"
   :type '(choice
 	  (const :tag "Use fuzzy text search" nil)
-	  (const :tag "Match only exact headline" t)
-	  (const :tag "Match exact headline or query to create it"
+	  (const :tag "Match only exact heading" t)
+	  (const :tag "Match exact heading or query to create it"
 		 query-to-create))
   :safe #'symbolp)
 
@@ -1174,7 +1174,7 @@ of matched result, which is either `dedicated' or `fuzzy'."
 	       (match-string 1 s)))
      ;; From here, we handle fuzzy links.
      ;;
-     ;; Look for targets, only if not in a headline search.
+     ;; Look for targets, only if not in a heading search.
      ((and (not starred)
 	   (let ((target (format "<<%s>>" s-multi-re)))
 	     (catch :target-match
@@ -1187,7 +1187,7 @@ of matched result, which is either `dedicated' or `fuzzy'."
 		     (goto-char (org-element-property :begin context))
 		     (throw :target-match t))))
 	       nil))))
-     ;; Look for elements named after S, only if not in a headline
+     ;; Look for elements named after S, only if not in a heading
      ;; search.
      ((and (not starred)
 	   (let ((name (format "^[ \t]*#\\+NAME: +%s[ \t]*$" s-single-re)))
@@ -1201,7 +1201,7 @@ of matched result, which is either `dedicated' or `fuzzy'."
 		     (beginning-of-line)
 		     (throw :name-match t))))
 	       nil))))
-     ;; Regular text search.  Prefer headlines in Org mode buffers.
+     ;; Regular text search.  Prefer headings in Org mode buffers.
      ;; Ignore COMMENT keyword, TODO keywords, priority cookies,
      ;; statistics cookies and tags.
      ((and (derived-mode-p 'org-mode)
@@ -1221,20 +1221,20 @@ of matched result, which is either `dedicated' or `fuzzy'."
 	       nil)))
       (beginning-of-line)
       (setq type 'dedicated))
-     ;; Offer to create non-existent headline depending on
-     ;; `org-link-search-must-match-exact-headline'.
+     ;; Offer to create non-existent heading depending on
+     ;; `org-link-search-must-match-exact-heading'.
      ((and (derived-mode-p 'org-mode)
-	   (eq org-link-search-must-match-exact-headline 'query-to-create)
+	   (eq org-link-search-must-match-exact-heading 'query-to-create)
 	   (yes-or-no-p "No match - create this as a new heading? "))
       (goto-char (point-max))
       (unless (bolp) (newline))
       (org-insert-heading nil t t)
       (insert s "\n")
       (beginning-of-line 0))
-     ;; Only headlines are looked after.  No need to process
+     ;; Only headings are looked after.  No need to process
      ;; further: throw an error.
      ((and (derived-mode-p 'org-mode)
-	   (or starred org-link-search-must-match-exact-headline))
+	   (or starred org-link-search-must-match-exact-heading))
       (goto-char origin)
       (error "No match for fuzzy expression: %s" normalized))
      ;; Regular text search.
@@ -1267,13 +1267,13 @@ of matched result, which is either `dedicated' or `fuzzy'."
     type))
 
 (defun org-link-heading-search-string (&optional string)
-  "Make search string for the current headline or STRING.
+  "Make search string for the current heading or STRING.
 
 Search string starts with an asterisk.  COMMENT keyword and
 statistics cookies are removed, and contiguous spaces are packed
 into a single one.
 
-When optional argument STRING is non-nil, assume it a headline,
+When optional argument STRING is non-nil, assume it a heading,
 without any asterisk, TODO or COMMENT keyword, and without any
 priority cookie or tag."
   (concat "*"
@@ -1651,12 +1651,12 @@ non-nil."
 						      :description)
 					   "")))
 			(error
-			 ;; Probably before first headline, link only to file.
+			 ;; Probably before first heading, link only to file.
 			 (concat "file:"
 				 (abbreviate-file-name
 				  (buffer-file-name (buffer-base-buffer))))))))
 	  (t
-	   ;; Just link to current headline.
+	   ;; Just link to current heading.
 	   (setq cpltxt (concat "file:"
 				(abbreviate-file-name
 				 (buffer-file-name (buffer-base-buffer)))))
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 44acd035a..c3651744c 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -313,7 +313,7 @@ the daily/weekly agenda, see `org-agenda-skip-function'.")
 	   (choice :tag "Setting"
 		   (list :tag "Heading for this block"
 			 (const org-agenda-overriding-header)
-			 (string :tag "Headline"))
+			 (string :tag "Heading"))
 		   (list :tag "Files to be searched"
 			 (const org-agenda-files)
 			 (list
@@ -461,7 +461,7 @@ desc     A description of the command, when omitted or nil, a default
 type     The command type, any of the following symbols:
           agenda      The daily/weekly agenda.
           todo        Entries with a specific TODO keyword, in all agenda files.
-          search      Entries containing search words entry or headline.
+          search      Entries containing search words entry or heading.
           tags        Tags/Property/TODO match in all agenda files.
           tags-todo   Tags/P/T match in all agenda files, TODO entries only.
           todo-tree   Sparse tree of specific TODO keyword in *current* file.
@@ -595,13 +595,13 @@ you can then use it to define a custom command."
 This is a list of four items:
 1. A tags/todo/property matcher string that is used to identify a project.
    See the manual for a description of tag and property searches.
-   The entire tree below a headline matched by this is considered one project.
+   The entire tree below a heading matched by this is considered one project.
 2. A list of TODO keywords identifying non-stuck projects.
-   If the project subtree contains any headline with one of these todo
+   If the project subtree contains any heading with one of these todo
    keywords, the project is considered to be not stuck.  If you specify
    \"*\" as a keyword, any TODO keyword will mark the project unstuck.
 3. A list of tags identifying non-stuck projects.
-   If the project subtree contains any headline with one of these tags,
+   If the project subtree contains any heading with one of these tags,
    the project is considered to be not stuck.  If you specify \"*\" as
    a tag, any tag will mark the project unstuck.  Note that this is about
    the explicit presence of a tag somewhere in the subtree, inherited
@@ -674,7 +674,7 @@ files will be included.")
 
 (defcustom org-agenda-restriction-lock-highlight-subtree t
   "Non-nil means highlight the whole subtree when restriction is active.
-Otherwise only highlight the headline.  Highlighting the whole subtree is
+Otherwise only highlight the heading.  Highlighting the whole subtree is
 useful to ensure no edits happen beyond the restricted region."
   :group 'org-agenda
   :type 'boolean)
@@ -1012,7 +1012,7 @@ The buffer is still writable when the hook is called.
 
 You can modify some of the buffer substrings but you should be
 extra careful not to modify the text properties of the agenda
-headlines as the agenda display heavily relies on them."
+headings as the agenda display heavily relies on them."
   :group 'org-agenda-startup
   :type 'hook)
 
@@ -1479,7 +1479,7 @@ When nil, they may also match part of a word."
 (defcustom org-agenda-search-view-max-outline-level 0
   "Maximum outline level to display in search view.
 E.g. when this is set to 1, the search view will only
-show headlines of level 1.  When set to 0, the default
+show headings of level 1.  When set to 0, the default
 value, don't limit agenda view by outline level."
   :group 'org-agenda-search-view
   :version "26.1"
@@ -1491,13 +1491,13 @@ value, don't limit agenda view by outline level."
   :tag "Org Agenda Time Grid"
   :group 'org-agenda)
 
-(defcustom org-agenda-search-headline-for-time t
-  "Non-nil means search headline for a time-of-day.
-If the headline contains a time-of-day in one format or another, it will
+(defcustom org-agenda-search-heading-for-time t
+  "Non-nil means search heading for a time-of-day.
+If the heading contains a time-of-day in one format or another, it will
 be used to sort the entry into the time sequence of items for a day.
-Some people have time stamps in the headline that refer to the creation
+Some people have time stamps in the heading that refer to the creation
 time or so, and then this produces an unwanted side effect.  If this is
-the case for your, use this variable to turn off searching the headline
+the case for your, use this variable to turn off searching the heading
 for a time."
   :group 'org-agenda-time-grid
   :type 'boolean)
@@ -1607,8 +1607,8 @@ user-defined-up    Sort according to `org-agenda-cmp-user-defined', high last.
 user-defined-down  Sort according to `org-agenda-cmp-user-defined', high first.
 habit-up           Put entries that are habits first.
 habit-down         Put entries that are habits last.
-alpha-up           Sort headlines alphabetically.
-alpha-down         Sort headlines alphabetically, reversed.
+alpha-up           Sort headings alphabetically.
+alpha-down         Sort headings alphabetically, reversed.
 
 The different possibilities will be tried in sequence, and testing stops
 if one comparison returns a \"not-equal\".  For example, the default
@@ -1826,14 +1826,14 @@ to capture the number of days."
 (defcustom org-agenda-remove-times-when-in-prefix t
   "Non-nil means remove duplicate time specifications in agenda items.
 When the format `org-agenda-prefix-format' contains a `%t' specifier, a
-time-of-day specification in a headline or diary entry is extracted and
+time-of-day specification in a heading or diary entry is extracted and
 placed into the prefix.  If this option is non-nil, the original specification
 \(a timestamp or -range, or just a plain time(range) specification like
 11:30-4pm) will be removed for agenda display.  This makes the agenda less
 cluttered.
 The option can be t or nil.  It may also be the symbol `beg', indicating
 that the time should only be removed when it is located at the beginning of
-the headline/diary entry."
+the heading/diary entry."
   :group 'org-agenda-line-format
   :type '(choice
 	  (const :tag "Always" t)
@@ -1921,7 +1921,7 @@ Nil means don't hide any tags."
   'org-agenda-remove-tags)
 
 (defcustom org-agenda-remove-tags nil
-  "Non-nil means remove the tags from the headline copy in the agenda.
+  "Non-nil means remove the tags from the heading copy in the agenda.
 When this is the symbol `prefix', only remove tags when
 `org-agenda-prefix-format' contains a `%T' specifier."
   :group 'org-agenda-line-format
@@ -2228,7 +2228,7 @@ When nil, `q' will kill the single agenda buffer."
     org-agenda-columns-active
     org-agenda-tag-filter
     org-agenda-category-filter
-    org-agenda-top-headline-filter
+    org-agenda-top-heading-filter
     org-agenda-regexp-filter
     org-agenda-effort-filter
     org-agenda-markers
@@ -2452,7 +2452,7 @@ The following commands are available:
 (org-defkey org-agenda-mode-map "|" #'org-agenda-filter-remove-all)
 (org-defkey org-agenda-mode-map "~" #'org-agenda-limit-interactively)
 (org-defkey org-agenda-mode-map "<" #'org-agenda-filter-by-category)
-(org-defkey org-agenda-mode-map "^" #'org-agenda-filter-by-top-headline)
+(org-defkey org-agenda-mode-map "^" #'org-agenda-filter-by-top-heading)
 (org-defkey org-agenda-mode-map ";" #'org-timer-set-timer)
 (org-defkey org-agenda-mode-map "\C-c\C-x_" #'org-timer-stop)
 (org-defkey org-agenda-mode-map "?" #'org-agenda-show-the-flagging-note)
@@ -2536,7 +2536,7 @@ The following commands are available:
      ["by tag" org-agenda-filter-by-tag t]
      ["by effort" org-agenda-filter-by-effort t]
      ["by regexp" org-agenda-filter-by-regexp t]
-     ["by top-level headline" org-agenda-filter-by-top-headline t]
+     ["by top-level heading" org-agenda-filter-by-top-heading t]
      "--"
      ["Remove all filtering" org-agenda-filter-remove-all t]
      "--"
@@ -2821,9 +2821,9 @@ a     Call `org-agenda-list' to display the agenda for current day or week.
 t     Call `org-todo-list' to display the global todo list.
 T     Call `org-todo-list' to display the global todo list, select only
       entries with a specific TODO keyword (the user gets a prompt).
-m     Call `org-tags-view' to display headlines with tags matching
+m     Call `org-tags-view' to display headings with tags matching
       a condition  (the user is prompted for the condition).
-M     Like `m', but select only TODO entries, no ordinary headlines.
+M     Like `m', but select only TODO entries, no ordinary headings.
 e     Export views to associated files.
 s     Search entries for keywords.
 S     Search entries for keywords, only with TODO keywords.
@@ -3360,7 +3360,7 @@ item is a list of comma-separated values, like this:
 category,head,type,todo,tags,date,time,extra,priority-l,priority-n
 
 category     The category of the item
-head         The headline, without TODO kwd, TAGS and PRIORITY
+head         The heading, without TODO kwd, TAGS and PRIORITY
 type         The type of the agenda entry, can be
                 todo               selected in TODO match
                 tagsmatch          selected in tags match
@@ -3744,7 +3744,7 @@ removed from the entry content.  Currently only `planning' is allowed here."
 (defvar org-agenda-category-filter nil)
 (defvar org-agenda-regexp-filter nil)
 (defvar org-agenda-effort-filter nil)
-(defvar org-agenda-top-headline-filter nil)
+(defvar org-agenda-top-heading-filter nil)
 
 (defvar org-agenda-represented-categories nil
   "Cache for the list of all categories in the agenda.")
@@ -3987,9 +3987,9 @@ agenda display, configure `org-agenda-finalize-hook'."
 				       (org-get-tags))))))))
 	(setq org-agenda-represented-tags nil
 	      org-agenda-represented-categories nil)
-	(when org-agenda-top-headline-filter
-	  (org-agenda-filter-top-headline-apply
-	   org-agenda-top-headline-filter))
+	(when org-agenda-top-heading-filter
+	  (org-agenda-filter-top-heading-apply
+	   org-agenda-top-heading-filter))
 	(when org-agenda-tag-filter
 	  (org-agenda-filter-apply org-agenda-tag-filter 'tag t))
 	(when (get 'org-agenda-tag-filter :preset-filter)
@@ -4423,7 +4423,7 @@ items if they have an hour specification like [h]h:mm."
 				 org-agenda-entry-types)))))
 	    (setq rtnall (append rtnall rtn)))) ;; all entries
 	(when org-agenda-include-diary
-	  (let ((org-agenda-search-headline-for-time t))
+	  (let ((org-agenda-search-heading-for-time t))
 	    (require 'diary-lib)
 	    (setq rtn (org-get-entries-from-diary date))
 	    (setq rtnall (append rtnall rtn))))
@@ -4565,7 +4565,7 @@ regular expressions that must or (when preceded with \"-\") must not
 match in the entry.  Snippets enclosed into double quotes will be taken
 as a whole, to include whitespace.
 
-- If the search string starts with an asterisk, search only in headlines.
+- If the search string starts with an asterisk, search only in headings.
 - If (possibly after the leading star) the search string starts with an
   exclamation mark, this also means to look at TODO entries only, an effect
   that can also be achieved with a prefix argument.
@@ -4940,7 +4940,7 @@ to search again: (0)[ALL]"))
 
 ;;;###autoload
 (defun org-tags-view (&optional todo-only match)
-  "Show all headlines for all `org-agenda-files' matching a TAGS criterion.
+  "Show all headings for all `org-agenda-files' matching a TAGS criterion.
 The prefix arg TODO-ONLY limits the search to TODO entries."
   (interactive "P")
   (when org-agenda-overriding-arguments
@@ -5005,7 +5005,7 @@ The prefix arg TODO-ONLY limits the search to TODO entries."
 		  (setq rtnall (append rtnall rtn))))))))
       (org-agenda--insert-overriding-header
         (with-temp-buffer
-	  (insert "Headlines with TAGS match: ")
+	  (insert "Headings with TAGS match: ")
 	  (add-text-properties (point-min) (1- (point))
 			       (list 'face 'org-agenda-structure
 				     'short-heading
@@ -5445,7 +5445,7 @@ the documentation of `org-diary'."
 			       (delq :deadline (delq :deadline* args)))))
 	     ((memq :deadline* args)
 	      (setf args (cons :deadline* (delq :deadline* args)))))
-	    ;; Collect list of headlines.  Return them flattened.
+	    ;; Collect list of headings.  Return them flattened.
 	    (let ((case-fold-search nil) results deadlines)
               (org-dlet
                   ((date date))
@@ -5710,7 +5710,7 @@ displayed in agenda view."
     (goto-char (point-min))
     (while (re-search-forward regexp nil t)
       ;; Skip date ranges, scheduled and deadlines, which are handled
-      ;; specially.  Also skip time-stamps before first headline as
+      ;; specially.  Also skip time-stamps before first heading as
       ;; there would be no entry to add to the agenda.  Eventually,
       ;; ignore clock entries.
       (catch :skip
@@ -5960,7 +5960,7 @@ then those holidays will be skipped."
 		     (encode-time  ; DATE bound by calendar
 		      0 0 0 (nth 1 date) (car date) (nth 2 date)))
 		    1 11))))
-	 (org-agenda-search-headline-for-time nil)
+	 (org-agenda-search-heading-for-time nil)
 	 marker hdmarker priority category level tags closedp type
 	 statep clockp state ee txt extra timestr rest clocked inherited-tags)
     (goto-char (point-min))
@@ -6665,7 +6665,7 @@ specifier in the format.
 DOTIME, when non-nil, indicates that a time-of-day should be extracted from
 TXT for sorting of this entry, and for the `%t' specifier in the format.
 When DOTIME is a string, this string is searched for a time before TXT is.
-TAGS can be the tags of the headline.
+TAGS can be the tags of the heading.
 Any match of REMOVE-RE will be removed from TXT."
   ;; We keep the org-prefix-* variable values along with a compiled
   ;; formatter, so that multiple agendas existing at the same time do
@@ -6713,7 +6713,7 @@ Any match of REMOVE-RE will be removed from TXT."
 	     time
 	     (ts (when dotime (concat
 			       (if (stringp dotime) dotime "")
-			       (and org-agenda-search-headline-for-time txt))))
+			       (and org-agenda-search-heading-for-time txt))))
 	     (time-of-day (and dotime (org-get-time-of-day ts)))
 	     stamp plain s0 s1 s2 rtn srp l
 	     duration breadcrumbs)
@@ -7222,7 +7222,7 @@ The optional argument TYPE tells the agenda type."
 	  ((< lb la) +1))))
 
 (defsubst org-cmp-alpha (a b)
-  "Compare the headlines, alphabetically."
+  "Compare the headings, alphabetically."
   (let* ((pla (text-property-any 0 (length a) 'org-heading t a))
 	 (plb (text-property-any 0 (length b) 'org-heading t b))
 	 (ta (and pla (substring a pla)))
@@ -7351,7 +7351,7 @@ their type."
 ;;; Agenda restriction lock
 
 (defvar org-agenda-restriction-lock-overlay (make-overlay 1 1)
-  "Overlay to mark the headline to which agenda commands are restricted.")
+  "Overlay to mark the heading to which agenda commands are restricted.")
 (overlay-put org-agenda-restriction-lock-overlay
 	     'face 'org-agenda-restriction-lock)
 (overlay-put org-agenda-restriction-lock-overlay
@@ -7380,7 +7380,7 @@ Argument ARG is the prefix argument."
 When in a restricted subtree, remove it.
 
 The restriction will span over the entire file if TYPE is `file',
-or if type is '(4), or if the cursor is before the first headline
+or if type is '(4), or if the cursor is before the first heading
 in the file. Otherwise, only apply the restriction to the current
 subtree."
   (interactive "P")
@@ -7571,7 +7571,7 @@ in the agenda."
 	 (org-agenda-keep-modes t)
 	 (tag-filter org-agenda-tag-filter)
 	 (tag-preset (get 'org-agenda-tag-filter :preset-filter))
-	 (top-hl-filter org-agenda-top-headline-filter)
+	 (top-hl-filter org-agenda-top-heading-filter)
 	 (cat-filter org-agenda-category-filter)
 	 (cat-preset (get 'org-agenda-category-filter :preset-filter))
 	 (re-filter org-agenda-regexp-filter)
@@ -7611,7 +7611,7 @@ in the agenda."
 	  org-agenda-category-filter cat-filter
 	  org-agenda-regexp-filter re-filter
 	  org-agenda-effort-filter effort-filter
-	  org-agenda-top-headline-filter top-hl-filter)
+	  org-agenda-top-heading-filter top-hl-filter)
     (message "Rebuilding agenda buffer...done")
     (put 'org-agenda-tag-filter :preset-filter tag-preset)
     (put 'org-agenda-category-filter :preset-filter cat-preset)
@@ -7625,7 +7625,7 @@ in the agenda."
       (when cat (org-agenda-filter-apply cat 'category))
       (when effort (org-agenda-filter-apply effort 'effort))
       (when re  (org-agenda-filter-apply re 'regexp)))
-    (and top-hl-filter (org-agenda-filter-top-headline-apply top-hl-filter))
+    (and top-hl-filter (org-agenda-filter-top-heading-apply top-hl-filter))
     (and cols (called-interactively-p 'any) (org-agenda-columns))
     (org-goto-line line)
     (when (called-interactively-p 'any) (recenter window-line))))
@@ -7671,8 +7671,8 @@ filter."
 	 'category))
        (t (error "No category at point"))))))
 
-(defun org-find-top-headline (&optional pos)
-  "Find the topmost parent headline and return it.
+(defun org-find-top-heading (&optional pos)
+  "Find the topmost parent heading and return it.
 POS when non-nil is the marker or buffer position to start the
 search from."
   (save-excursion
@@ -7685,20 +7685,20 @@ search from."
 	 "^\\[[0-9]+/[0-9]+\\] *\\|^\\[%[0-9]+\\] *" ""
 	 (nth 4 (org-heading-components)))))))
 
-(defvar org-agenda-filtered-by-top-headline nil)
-(defun org-agenda-filter-by-top-headline (strip)
-  "Keep only those lines that are descendants from the same top headline.
-The top headline is that of the current line.  With prefix arg STRIP, hide
+(defvar org-agenda-filtered-by-top-heading nil)
+(defun org-agenda-filter-by-top-heading (strip)
+  "Keep only those lines that are descendants from the same top heading.
+The top heading is that of the current line.  With prefix arg STRIP, hide
 all lines of the category at point."
   (interactive "P")
-  (if org-agenda-filtered-by-top-headline
+  (if org-agenda-filtered-by-top-heading
       (progn
-        (setq org-agenda-filtered-by-top-headline nil
-	      org-agenda-top-headline-filter nil)
+        (setq org-agenda-filtered-by-top-heading nil
+	      org-agenda-top-heading-filter nil)
         (org-agenda-filter-show-all-top-filter))
-    (let ((toph (org-find-top-headline (org-get-at-bol 'org-hd-marker))))
-      (if toph (org-agenda-filter-top-headline-apply toph strip)
-        (error "No top-level headline at point")))))
+    (let ((toph (org-find-top-heading (org-get-at-bol 'org-hd-marker))))
+      (if toph (org-agenda-filter-top-heading-apply toph strip)
+        (error "No top-level heading at point")))))
 
 (defvar org-agenda-regexp-filter nil)
 (defun org-agenda-filter-by-regexp (strip-or-accumulate)
@@ -7935,7 +7935,7 @@ which see."
     (org-agenda-filter-show-all-cat))
   (when org-agenda-regexp-filter
     (org-agenda-filter-show-all-re))
-  (when org-agenda-top-headline-filter
+  (when org-agenda-top-heading-filter
     (org-agenda-filter-show-all-top-filter))
   (when org-agenda-effort-filter
     (org-agenda-filter-show-all-effort))
@@ -8214,22 +8214,22 @@ grouptags."
   (when (get-char-property (point) 'invisible)
     (ignore-errors (org-agenda-previous-line))))
 
-(defun org-agenda-filter-top-headline-apply (hl &optional negative)
-  "Filter by top headline HL."
+(defun org-agenda-filter-top-heading-apply (hl &optional negative)
+  "Filter by top heading HL."
   (org-agenda-set-mode-name)
   (save-excursion
     (goto-char (point-min))
     (while (not (eobp))
       (let* ((pos (org-get-at-bol 'org-hd-marker))
-             (tophl (and pos (org-find-top-headline pos))))
+             (tophl (and pos (org-find-top-heading pos))))
         (when (and tophl (funcall (if negative 'identity 'not)
 				  (string= hl tophl)))
-          (org-agenda-filter-hide-line 'top-headline)))
+          (org-agenda-filter-hide-line 'top-heading)))
       (beginning-of-line 2)))
   (when (get-char-property (point) 'invisible)
     (org-agenda-previous-line))
-  (setq org-agenda-top-headline-filter hl
-	org-agenda-filtered-by-top-headline t))
+  (setq org-agenda-top-heading-filter hl
+	org-agenda-filtered-by-top-heading t))
 
 (defun org-agenda-filter-hide-line (type)
   "If current line is TYPE, hide it in the agenda buffer."
@@ -8266,7 +8266,7 @@ grouptags."
 (defun org-agenda-filter-show-all-cat nil
   (org-agenda-remove-filter 'category))
 (defun org-agenda-filter-show-all-top-filter nil
-  (org-agenda-remove-filter 'top-headline))
+  (org-agenda-remove-filter 'top-heading))
 
 (defun org-agenda-manipulate-query-add ()
   "Manipulate the query by adding a search term with positive selection.
@@ -8665,7 +8665,7 @@ so that the date SD will be in that range."
   (if (or org-agenda-tag-filter
 	  org-agenda-category-filter
 	  org-agenda-regexp-filter
-	  org-agenda-top-headline-filter)
+	  org-agenda-top-heading-filter)
       (user-error "Can't show entry text in filtered views")
     (setq org-agenda-entry-text-mode (or (integerp arg)
 					 (not org-agenda-entry-text-mode)))
@@ -8932,7 +8932,7 @@ When called with a prefix argument, include all archive files as well."
 Point is in the buffer where the item originated.")
 
 ;; Defined later in org-agenda.el
-(defvar org-agenda-loop-over-headlines-in-active-region nil)
+(defvar org-agenda-loop-over-headings-in-active-region nil)
 
 (defun org-agenda-do-in-region (beg end cmd &optional arg force-arg delete)
   "Between region BEG and END, call agenda command CMD.
@@ -8942,10 +8942,10 @@ deletes the agenda entry and don't move to the next entry."
   (save-excursion
     (goto-char beg)
     (let ((mend (move-marker (make-marker) end))
-	  (all (eq org-agenda-loop-over-headlines-in-active-region t))
-	  (match (and (stringp org-agenda-loop-over-headlines-in-active-region)
-		      org-agenda-loop-over-headlines-in-active-region))
-	  (level (and (eq org-agenda-loop-over-headlines-in-active-region 'start-level)
+	  (all (eq org-agenda-loop-over-headings-in-active-region t))
+	  (match (and (stringp org-agenda-loop-over-headings-in-active-region)
+		      org-agenda-loop-over-headings-in-active-region))
+	  (level (and (eq org-agenda-loop-over-headings-in-active-region 'start-level)
 		      (org-get-at-bol 'level))))
       (while (< (point) mend)
 	(let ((ov (make-overlay (point) (point-at-eol))))
@@ -8967,7 +8967,7 @@ deletes the agenda entry and don't move to the next entry."
 Pass ARG, FORCE-ARG, DELETE and BODY to `org-agenda-do-in-region'."
   (declare (debug t))
   `(if (and (called-interactively-p 'any)
-	    org-agenda-loop-over-headlines-in-active-region
+	    org-agenda-loop-over-headings-in-active-region
 	    (org-region-active-p))
        (org-agenda-do-in-region
 	(region-beginning) (region-end) ,cmd ,arg ,force-arg ,delete)
@@ -9394,7 +9394,7 @@ the dedicated frame."
 	(org-tree-to-indirect-buffer arg)))))
 
 (defvar org-last-heading-marker (make-marker)
-  "Marker pointing to the headline that last changed its TODO state
+  "Marker pointing to the heading that last changed its TODO state
 by a remote command from the agenda.")
 
 (defun org-agenda-todo-nextset ()
@@ -9407,12 +9407,12 @@ by a remote command from the agenda.")
   (interactive)
   (org-agenda-todo 'previousset))
 
-(defvar org-agenda-headline-snapshot-before-repeat)
+(defvar org-agenda-heading-snapshot-before-repeat)
 
 (defun org-agenda-todo (&optional arg)
   "Cycle TODO state of line at point, also in Org file.
 This changes the line at point, all other lines in the agenda referring to
-the same tree node, and the headline of the tree node in the Org file."
+the same tree node, and the heading of the tree node in the Org file."
   (interactive "P")
   (org-agenda-check-no-diary)
   (org-agenda-maybe-loop
@@ -9425,8 +9425,8 @@ the same tree node, and the headline of the tree node in the Org file."
 	  (hdmarker (org-get-at-bol 'org-hd-marker))
 	  (todayp (org-agenda-today-p (org-get-at-bol 'day)))
 	  (inhibit-read-only t)
-	  org-loop-over-headlines-in-active-region
-	  org-agenda-headline-snapshot-before-repeat newhead just-one)
+	  org-loop-over-headings-in-active-region
+	  org-agenda-heading-snapshot-before-repeat newhead just-one)
      (org-with-remote-undo buffer
        (with-current-buffer buffer
 	 (widen)
@@ -9436,11 +9436,11 @@ the same tree node, and the headline of the tree node in the Org file."
 	   (call-interactively 'org-todo))
 	 (and (bolp) (forward-char 1))
 	 (setq newhead (org-get-heading))
-	 (when (and org-agenda-headline-snapshot-before-repeat
-		    (not (equal org-agenda-headline-snapshot-before-repeat
+	 (when (and org-agenda-heading-snapshot-before-repeat
+		    (not (equal org-agenda-heading-snapshot-before-repeat
 				newhead))
 		    todayp)
-	   (setq newhead org-agenda-headline-snapshot-before-repeat
+	   (setq newhead org-agenda-heading-snapshot-before-repeat
 		 just-one t))
 	 (save-excursion
 	   (org-back-to-heading)
@@ -9588,7 +9588,7 @@ current line."
 (defun org-agenda-priority (&optional force-direction)
   "Set the priority of line at point, also in Org file.
 This changes the line at point, all other lines in the agenda
-referring to the same tree node, and the headline of the tree
+referring to the same tree node, and the heading of the tree
 node in the Org file.
 
 Called with one universal prefix arg, show the priority instead
@@ -9619,7 +9619,7 @@ When called programmatically, FORCE-DIRECTION can be `set', `up',
 
 ;; FIXME: should fix the tags property of the agenda line.
 (defun org-agenda-set-tags (&optional tag onoff)
-  "Set tags for the current headline."
+  "Set tags for the current heading."
   (interactive)
   (org-agenda-check-no-diary)
   (if (and (org-region-active-p) (called-interactively-p 'any))
@@ -9644,7 +9644,7 @@ When called programmatically, FORCE-DIRECTION can be `set', `up',
 	(beginning-of-line 1)))))
 
 (defun org-agenda-set-property ()
-  "Set a property for the current headline."
+  "Set a property for the current heading."
   (interactive)
   (org-agenda-check-no-diary)
   (org-agenda-maybe-loop
@@ -9663,7 +9663,7 @@ When called programmatically, FORCE-DIRECTION can be `set', `up',
 	 (call-interactively 'org-set-property))))))
 
 (defun org-agenda-set-effort ()
-  "Set the effort property for the current headline."
+  "Set the effort property for the current heading."
   (interactive)
   (org-agenda-check-no-diary)
   (org-agenda-maybe-loop
@@ -10029,7 +10029,7 @@ top-level         as top-level entries at the end of the file."
 
 (defun org-agenda-add-entry-to-org-agenda-diary-file (type text &optional d1 d2)
   "Add a diary entry with TYPE to `org-agenda-diary-file'.
-If TEXT is not empty, it will become the headline of the new entry, and
+If TEXT is not empty, it will become the heading of the new entry, and
 the resulting entry will not be shown.  When TEXT is empty, switch to
 `org-agenda-diary-file' and let the user finish the entry there."
   (let ((cw (current-window-configuration)))
@@ -10106,7 +10106,7 @@ the resulting entry will not be shown.  When TEXT is empty, switch to
 
 (defun org-agenda-insert-diary-as-top-level (text)
   "Make new entry as a top-level entry at the end of the file.
-Add TEXT as headline, and position the cursor in the second line so that
+Add TEXT as heading, and position the cursor in the second line so that
 a timestamp can be added there."
   (widen)
   (goto-char (point-max))
@@ -10198,7 +10198,7 @@ entries in that Org file."
 	 (date (calendar-gregorian-from-absolute
 		(get-text-property point 'day))))
     ;; the following 2 vars are needed in the calendar
-    (org-dlet 
+    (org-dlet
 	((displayed-month (car date))
 	 (displayed-year (nth 2 date)))
       (unwind-protect
@@ -10423,28 +10423,28 @@ bulk action."
   :version "24.1"
   :type 'boolean)
 
-(defcustom org-agenda-loop-over-headlines-in-active-region t
-  "Shall some commands act upon headlines in the active region?
+(defcustom org-agenda-loop-over-headings-in-active-region t
+  "Shall some commands act upon headings in the active region?
 
-When set to t, some commands will be performed in all headlines
+When set to t, some commands will be performed in all headings
 within the active region.
 
 When set to `start-level', some commands will be performed in all
-headlines within the active region, provided that these headlines
+headings within the active region, provided that these headings
 are of the same level than the first one.
 
 When set to a regular expression, those commands will be
-performed on the matching headlines within the active region.
+performed on the matching headings within the active region.
 
 The list of commands is: `org-agenda-schedule',
 `org-agenda-deadline', `org-agenda-date-prompt',
 `org-agenda-todo', `org-agenda-archive*', `org-agenda-kill'.
 
-See `org-loop-over-headlines-in-active-region' for the equivalent
+See `org-loop-over-headings-in-active-region' for the equivalent
 option for Org buffers."
   :type '(choice (const :tag "Don't loop" nil)
-		 (const :tag "All headlines in active region" t)
-		 (const :tag "In active region, headlines at the same level than the first one" start-level)
+		 (const :tag "All headings in active region" t)
+		 (const :tag "In active region, headings at the same level than the first one" start-level)
 		 (regexp :tag "Regular expression matcher"))
   :version "27.1"
   :package-version '(Org . "9.4")
@@ -10630,7 +10630,7 @@ The prefix arg is passed through to the command if possible."
 		(progn (message "Skipping removed entry at %s" e)
 		       (cl-incf skipped))
 	      (goto-char pos)
-	      (let (org-loop-over-headlines-in-active-region) (funcall cmd))
+	      (let (org-loop-over-headings-in-active-region) (funcall cmd))
 	      ;; `post-command-hook' is not run yet.  We make sure any
 	      ;; pending log note is processed.
 	      (when org-log-setup (org-add-log-note))
@@ -10769,12 +10769,12 @@ calling the function returns nil.  This function takes one
 argument: an entry from `org-agenda-get-day-entries'.
 
 FILTER can also be an alist with the car of each cell being
-either `headline' or `category'.  For example:
+either `heading' or `category'.  For example:
 
-  \\='((headline \"IMPORTANT\")
+  \\='((heading \"IMPORTANT\")
     (category \"Work\"))
 
-will only add headlines containing IMPORTANT or headlines
+will only add headings containing IMPORTANT or headings
 belonging to the \"Work\" category.
 
 ARGS are symbols indicating what kind of entries to consider.
@@ -10823,7 +10823,7 @@ to override `appt-message-warning-time'."
                       (and (functionp filter) (funcall filter x))
                       (and (listp filter)
                            (let ((cat-filter (cadr (assq 'category filter)))
-                                 (evt-filter (cadr (assq 'headline filter))))
+                                 (evt-filter (cadr (assq 'heading filter))))
                              (or (and (stringp cat-filter)
                                       (string-match cat-filter cat))
                                  (and (stringp evt-filter)
diff --git a/lisp/org-archive.el b/lisp/org-archive.el
index 0943869a8..b0d9930b8 100644
--- a/lisp/org-archive.el
+++ b/lisp/org-archive.el
@@ -119,11 +119,11 @@ This variable can be a list of any of the following symbols:
 
 time       The time of archiving.
 file       The file where the entry originates.
-ltags      The local tags, in the headline of the subtree.
+ltags      The local tags, in the heading of the subtree.
 itags      The tags the subtree inherits from further up the hierarchy.
 todo       The pre-archive TODO state.
 category   The category, taken from file name or #+CATEGORY lines.
-olpath     The outline path to the item.  These are all headlines above
+olpath     The outline path to the item.  These are all headings above
            the current item, separated by /, like a file path.
 
 For each symbol present in the list, a property will be created in
@@ -207,18 +207,18 @@ trees without any open TODO items and archive them (after getting
 confirmation from the user).  When called with a double prefix
 argument, find whole trees with timestamps before today and
 archive them (after getting confirmation from the user).  If the
-cursor is not at a headline when these commands are called, try
-all level 1 trees.  If the cursor is on a headline, only try the
+cursor is not at a heading when these commands are called, try
+all level 1 trees.  If the cursor is on a heading, only try the
 direct children of this heading."
   (interactive "P")
-  (if (and (org-region-active-p) org-loop-over-headlines-in-active-region)
-      (let ((cl (if (eq org-loop-over-headlines-in-active-region 'start-level)
+  (if (and (org-region-active-p) org-loop-over-headings-in-active-region)
+      (let ((cl (if (eq org-loop-over-headings-in-active-region 'start-level)
 		    'region-start-level 'region))
-	    org-loop-over-headlines-in-active-region)
+	    org-loop-over-headings-in-active-region)
 	(org-map-entries
 	 `(progn (setq org-map-continue-from (progn (org-back-to-heading) (point)))
 		 (org-archive-subtree ,find-done))
-	 org-loop-over-headlines-in-active-region
+	 org-loop-over-headings-in-active-region
 	 cl (if (org-invisible-p) (org-end-of-subtree nil t))))
     (cond
      ((equal find-done '(4))  (org-archive-all-done))
@@ -352,7 +352,7 @@ direct children of this heading."
 		      (unless (org-at-heading-p) (outline-next-heading)))
 		  (goto-char (point-max))
 		  ;; Subtree narrowing can let the buffer end on
-		  ;; a headline.  `org-paste-subtree' then deletes it.
+		  ;; a heading.  `org-paste-subtree' then deletes it.
 		  ;; To prevent this, make sure visible part of buffer
 		  ;; always terminates on a new line, while limiting
 		  ;; number of blank lines in a date tree.
@@ -426,10 +426,10 @@ sibling does not exist, it will be created at the end of the subtree.
 
 Archiving time is retained in the ARCHIVE_TIME node property."
   (interactive)
-  (if (and (org-region-active-p) org-loop-over-headlines-in-active-region)
-      (let ((cl (when (eq org-loop-over-headlines-in-active-region 'start-level)
+  (if (and (org-region-active-p) org-loop-over-headings-in-active-region)
+      (let ((cl (when (eq org-loop-over-headings-in-active-region 'start-level)
 		  'region-start-level 'region))
-	    org-loop-over-headlines-in-active-region)
+	    org-loop-over-headings-in-active-region)
 	(org-map-entries
 	 '(progn (setq org-map-continue-from
 		       (progn (org-back-to-heading)
@@ -438,7 +438,7 @@ Archiving time is retained in the ARCHIVE_TIME node property."
 				(point))))
 		 (when (org-at-heading-p)
 		   (org-archive-to-archive-sibling)))
-	 org-loop-over-headlines-in-active-region
+	 org-loop-over-headings-in-active-region
 	 cl (if (org-invisible-p) (org-end-of-subtree nil t))))
     (save-restriction
       (widen)
@@ -494,8 +494,8 @@ Archiving time is retained in the ARCHIVE_TIME node property."
 
 (defun org-archive-all-done (&optional tag)
   "Archive sublevels of the current tree without open TODO items.
-If the cursor is not on a headline, try all level 1 trees.  If
-it is on a headline, try all direct children.
+If the cursor is not on a heading, try all level 1 trees.  If
+it is on a heading, try all direct children.
 When TAG is non-nil, don't move trees, but mark them with the ARCHIVE tag."
   (org-archive-all-matches
    (lambda (_beg end)
@@ -506,8 +506,8 @@ When TAG is non-nil, don't move trees, but mark them with the ARCHIVE tag."
 
 (defun org-archive-all-old (&optional tag)
   "Archive sublevels of the current tree with timestamps prior to today.
-If the cursor is not on a headline, try all level 1 trees.  If
-it is on a headline, try all direct children.
+If the cursor is not on a heading, try all level 1 trees.  If
+it is on a heading, try all direct children.
 When TAG is non-nil, don't move trees, but mark them with the ARCHIVE tag."
   (org-archive-all-matches
    (lambda (_beg end)
@@ -527,14 +527,14 @@ When TAG is non-nil, don't move trees, but mark them with the ARCHIVE tag."
   "Archive sublevels of the current tree that match PREDICATE.
 
 PREDICATE is a function of two arguments, BEG and END, which
-specify the beginning and end of the headline being considered.
-It is called with point positioned at BEG.  The headline will be
+specify the beginning and end of the heading being considered.
+It is called with point positioned at BEG.  The heading will be
 archived if PREDICATE returns non-nil.  If the return value of
 PREDICATE is a string, it should describe the reason for
 archiving the heading.
 
-If the cursor is not on a headline, try all level 1 trees.  If it
-is on a headline, try all direct children.  When TAG is non-nil,
+If the cursor is not on a heading, try all level 1 trees.  If it
+is on a heading, try all direct children.  When TAG is non-nil,
 don't move trees, but mark them with the ARCHIVE tag."
   (let ((rea (concat ".*:" org-archive-tag ":")) re1
 	(begm (make-marker))
@@ -579,17 +579,17 @@ don't move trees, but mark them with the ARCHIVE tag."
 
 ;;;###autoload
 (defun org-toggle-archive-tag (&optional find-done)
-  "Toggle the archive tag for the current headline.
-With prefix ARG, check all children of current headline and offer tagging
+  "Toggle the archive tag for the current heading.
+With prefix ARG, check all children of current heading and offer tagging
 the children that do not contain any open TODO items."
   (interactive "P")
-  (if (and (org-region-active-p) org-loop-over-headlines-in-active-region)
-      (let ((cl (if (eq org-loop-over-headlines-in-active-region 'start-level)
+  (if (and (org-region-active-p) org-loop-over-headings-in-active-region)
+      (let ((cl (if (eq org-loop-over-headings-in-active-region 'start-level)
 		    'region-start-level 'region))
-	    org-loop-over-headlines-in-active-region)
+	    org-loop-over-headings-in-active-region)
 	(org-map-entries
 	 `(org-toggle-archive-tag ,find-done)
-	 org-loop-over-headlines-in-active-region
+	 org-loop-over-headings-in-active-region
 	 cl (if (org-invisible-p) (org-end-of-subtree nil t))))
     (if find-done
 	(org-archive-all-done 'tag)
@@ -604,13 +604,13 @@ the children that do not contain any open TODO items."
 (defun org-archive-set-tag ()
   "Set the ARCHIVE tag."
   (interactive)
-  (if (and (org-region-active-p) org-loop-over-headlines-in-active-region)
-      (let ((cl (if (eq org-loop-over-headlines-in-active-region 'start-level)
+  (if (and (org-region-active-p) org-loop-over-headings-in-active-region)
+      (let ((cl (if (eq org-loop-over-headings-in-active-region 'start-level)
 		    'region-start-level 'region))
-	    org-loop-over-headlines-in-active-region)
+	    org-loop-over-headings-in-active-region)
 	(org-map-entries
 	 'org-archive-set-tag
-	 org-loop-over-headlines-in-active-region
+	 org-loop-over-headings-in-active-region
 	 cl (if (org-invisible-p) (org-end-of-subtree nil t))))
     (org-toggle-tag org-archive-tag 'on)))
 
diff --git a/lisp/org-capture.el b/lisp/org-capture.el
index c51744680..92cb04674 100644
--- a/lisp/org-capture.el
+++ b/lisp/org-capture.el
@@ -72,7 +72,7 @@
 (defvar crm-separator)
 (defvar org-end-time-was-given)
 (defvar org-keyword-properties)
-(defvar org-remember-default-headline)
+(defvar org-remember-default-heading)
 (defvar org-remember-templates)
 (defvar org-store-link-plist)
 (defvar org-table-border-regexp)
@@ -158,7 +158,7 @@ description  A short string describing the template, will be shown during
              selection.
 
 type         The type of entry.  Valid types are:
-               entry       an Org node, with a headline.  Will be filed
+               entry       an Org node, with a heading.  Will be filed
                            as the child of the target entry or as a
                            top-level entry.  Its default template is:
                              \"* %?\n %a\"
@@ -195,7 +195,7 @@ target       Specification of where the captured item should be placed.
              (id \"id of existing Org entry\")
                  File as child of this entry, or in the body of the entry
 
-             (file+headline \"path/to/file\" \"node headline\")
+             (file+heading \"path/to/file\" \"node heading\")
                  Fast configuration if the target heading is unique in the file
 
              (file+olp \"path/to/file\" \"Level 1 heading\" \"Level 2\" ...)
@@ -296,7 +296,7 @@ properties are:
 
 The template defines the text to be inserted.  Often this is an
 Org mode entry (so the first line should start with a star) that
-will be filed as a child of the target headline.  It can also be
+will be filed as a child of the target heading.  It can also be
 freely formatted text.  Furthermore, the following %-escapes will
 be replaced with content and expanded:
 
@@ -400,15 +400,15 @@ you can escape ambiguous cases with a backward slash, e.g., \\%i."
 			  (list :tag "ID"
 				(const :format "" id)
 				(string :tag "  ID"))
-			  (list :tag "File & Headline"
-				(const :format "" file+headline)
+			  (list :tag "File & Heading"
+				(const :format "" file+heading)
 				,file-variants
-				(string :tag "  Headline"))
+				(string :tag "  Heading"))
 			  (list :tag "File & Outline path"
 				(const :format "" file+olp)
 				,file-variants
 				(repeat :tag "Outline path" :inline t
-					(string :tag "Headline")))
+					(string :tag "Heading")))
 			  (list :tag "File & Regexp"
 				(const :format "" file+regexp)
 				,file-variants
@@ -417,7 +417,7 @@ you can escape ambiguous cases with a backward slash, e.g., \\%i."
 				(const :format "" file+olp+datetree)
 				,file-variants
 				(option (repeat :tag "Outline path" :inline t
-						(string :tag "Headline"))))
+						(string :tag "Heading"))))
 			  (list :tag "File & function"
 				(const :format "" file+function)
 				,file-variants
@@ -620,7 +620,7 @@ state of Emacs, so that you can continue your work.
 
 When called interactively with a `\\[universal-argument]' prefix argument \
 GOTO, don't
-capture anything, just go to the file/headline where the selected
+capture anything, just go to the file/heading where the selected
 template stores its notes.
 
 With a `\\[universal-argument] \\[universal-argument]' prefix argument, go to \
@@ -894,7 +894,7 @@ for `entry'-type templates"))
 	 (refile-targets (org-capture-get :refile-targets 'local)))
     ;; Since `org-capture-finalize' may alter buffer contents (e.g.,
     ;; empty lines) around entry, use a marker to refer to the
-    ;; headline to be refiled.  Place the marker in the base buffer,
+    ;; heading to be refiled.  Place the marker in the base buffer,
     ;; as the current indirect one is going to be killed.
     (set-marker pos (save-excursion (org-back-to-heading t) (point)) base)
     ;; `org-capture-finalize' calls `org-capture-goto-last-stored' too
@@ -963,7 +963,7 @@ Store them in the capture property list."
 	    (org-capture-put-target-region-and-position)
 	    (goto-char position))
 	   (_ (error "Cannot find target ID \"%s\"" id))))
-	(`(file+headline ,path ,headline)
+	(`(file+heading ,path ,heading)
 	 (set-buffer (org-capture-target-buffer path))
 	 ;; Org expects the target file to be in Org mode, otherwise
 	 ;; it throws an error.  However, the default notes files
@@ -978,12 +978,12 @@ Store them in the capture property list."
 	 (widen)
 	 (goto-char (point-min))
 	 (if (re-search-forward (format org-complex-heading-regexp-format
-					(regexp-quote headline))
+					(regexp-quote heading))
 				nil t)
 	     (beginning-of-line)
 	   (goto-char (point-max))
 	   (unless (bolp) (insert "\n"))
-	   (insert "* " headline "\n")
+	   (insert "* " heading "\n")
 	   (beginning-of-line 0)))
 	(`(file+olp ,path . ,outline-path)
 	 (let ((m (org-find-olp (cons (org-capture-expand-file path)
@@ -1293,7 +1293,7 @@ may have been stored before."
 	(org-capture-mark-kill-region origin (point))
 	;; ITEM always end with a newline character.  Make sure we do
 	;; not narrow at the beginning of the next line, possibly
-	;; altering its structure (e.g., when it is a headline).
+	;; altering its structure (e.g., when it is a heading).
 	(org-capture-narrow beg (1- end))
 	(org-capture--position-cursor beg end)))))
 
@@ -1393,7 +1393,7 @@ Of course, if exact position has been required, just put it there."
     (if (org-capture-get :prepend)
 	;; Skip meta data and drawers.
 	(org-end-of-meta-data t)
-      ;; Go to end of the entry text, before the next headline.
+      ;; Go to end of the entry text, before the next heading.
       (outline-next-heading)))
    (t
     ;; Beginning or end of file.
@@ -1546,7 +1546,7 @@ Lisp programs can force the template by setting KEYS to a string."
 	 (or (org-contextualize-keys
 	      (org-capture-upgrade-templates org-capture-templates)
 	      org-capture-templates-contexts)
-	     '(("t" "Task" entry (file+headline "" "Tasks")
+	     '(("t" "Task" entry (file+heading "" "Tasks")
 		"* TODO %?\n  %u\n  %a")))))
     (if keys
 	(or (assoc keys org-capture-templates)
@@ -1776,10 +1776,10 @@ The template may still contain \"%?\" for cursor positioning."
 						(org-capture-get :buffer)))
 			    ;; Find location from where to get allowed
 			    ;; values.  If `:target-entry-p' is
-			    ;; non-nil, the current headline in the
+			    ;; non-nil, the current heading in the
 			    ;; target buffer is going to be a parent
-			    ;; headline, so location is fine.
-			    ;; Otherwise, find the parent headline in
+			    ;; heading, so location is fine.
+			    ;; Otherwise, find the parent heading in
 			    ;; the target buffer.
 			    (pom (if (org-capture-get :target-entry-p) origin
 				   (let ((level (progn
@@ -1926,7 +1926,7 @@ Assume sexps have been marked with
 		   (key (char-to-string (nth 1 entry)))
 		   (template (nth 2 entry))
 		   (file (or (nth 3 entry) org-default-notes-file))
-		   (position (or (nth 4 entry) org-remember-default-headline))
+		   (position (or (nth 4 entry) org-remember-default-heading))
 		   (type 'entry)
 		   (prepend org-reverse-note-order)
 		   immediate target jump-to-captured)
@@ -1937,7 +1937,7 @@ Assume sexps have been marked with
 		((eq position 'date-tree)
 		 (setq target (list 'file+datetree file)
 		       prepend nil))
-		(t (setq target (list 'file+headline file position))))
+		(t (setq target (list 'file+heading file position))))
 
 	       (when (string-match "%!" template)
 		 (setq template (replace-match "" t t template)
diff --git a/lisp/org-clock.el b/lisp/org-clock.el
index cd930e875..1914ebf16 100644
--- a/lisp/org-clock.el
+++ b/lisp/org-clock.el
@@ -182,7 +182,7 @@ which case all digits and capital letters are used up by the
 (defcustom org-clock-heading-function nil
   "When non-nil, should be a function to create `org-clock-heading'.
 This is the string shown in the mode line when a clock is running.
-The function is called with point at the beginning of the headline."
+The function is called with point at the beginning of the heading."
   :group 'org-clock
   :type '(choice (const nil) (function)))
 
@@ -342,7 +342,7 @@ For more information, see `org-clocktable-write-default'."
 
 ;; FIXME: translate es and nl last string "Clock summary at"
 (defcustom org-clock-clocktable-language-setup
-  '(("en" "File"     "L"  "Timestamp"  "Headline" "Time"  "ALL"   "Total time"   "File time" "Clock summary at")
+  '(("en" "File"     "L"  "Timestamp"  "Heading" "Time"  "ALL"   "Total time"   "File time" "Clock summary at")
     ("es" "Archivo"  "N"  "Fecha y hora" "Tarea" "Tiempo" "TODO" "Tiempo total" "Tiempo archivo" "Clock summary at")
     ("fr" "Fichier"  "N"  "Horodatage" "En-tête"  "Durée" "TOUT"  "Durée totale" "Durée fichier" "Horodatage sommaire à")
     ("nl" "Bestand"  "N"  "Tijdstip"   "Hoofding" "Duur"  "ALLES" "Totale duur"  "Bestandstijd" "Clock summary at")
@@ -557,7 +557,7 @@ of a different task.")
 Assume S in the English term to translate.  Return S as-is if it
 cannot be translated."
   (or (nth (pcase s
-	     ("File" 1) ("L" 2) ("Timestamp" 3) ("Headline" 4) ("Time" 5)
+	     ("File" 1) ("L" 2) ("Timestamp" 3) ("Heading" 4) ("Time" 5)
 	     ("ALL" 6) ("Total time" 7) ("File time" 8) ("Clock summary at" 9))
 	   (assoc-string language org-clock-clocktable-language-setup t))
       s))
@@ -978,7 +978,7 @@ CLOCK is a cons cell of the form (MARKER START-TIME)."
 	;; If the clocked entry contained only a clock and possibly
 	;; the associated drawer, and we either cancel it or clock it
 	;; out, `org-clock-out-remove-zero-time-clocks' may clear all
-	;; contents, and leave point on the /next/ headline.  We store
+	;; contents, and leave point on the /next/ heading.  We store
 	;; the current entry location to be able to get back here when
 	;; we need to clock in again the previously clocked task.
 	(heading (org-with-point-at (car clock)
@@ -1848,13 +1848,13 @@ With prefix arg SELECT, offer recently clocked tasks for selection."
   "Holds the file total time in minutes, after a call to `org-clock-sum'.")
 
 ;;;###autoload
-(defun org-clock-sum-today (&optional headline-filter)
+(defun org-clock-sum-today (&optional heading-filter)
   "Sum the times for each subtree for today."
   (let ((range (org-clock-special-range 'today)))
     (org-clock-sum (car range) (cadr range)
-		   headline-filter :org-clock-minutes-today)))
+		   heading-filter :org-clock-minutes-today)))
 
-(defun org-clock-sum-custom (&optional headline-filter range propname)
+(defun org-clock-sum-custom (&optional heading-filter range propname)
   "Sum the times for each subtree for today."
   (let ((r (or (and (symbolp range) (org-clock-special-range range))
 	       (org-clock-special-range
@@ -1865,16 +1865,16 @@ With prefix arg SELECT, offer recently clocked tasks for selection."
 			   "interactive")
 			 nil t))))))
     (org-clock-sum (car r) (cadr r)
-		   headline-filter (or propname :org-clock-minutes-custom))))
+		   heading-filter (or propname :org-clock-minutes-custom))))
 
 ;;;###autoload
-(defun org-clock-sum (&optional tstart tend headline-filter propname)
+(defun org-clock-sum (&optional tstart tend heading-filter propname)
   "Sum the times for each subtree.
-Puts the resulting times in minutes as a text property on each headline.
+Puts the resulting times in minutes as a text property on each heading.
 TSTART and TEND can mark a time range to be considered.
-HEADLINE-FILTER is a zero-arg function that, if specified, is called for
-each headline in the time range with point at the headline.  Headlines for
-which HEADLINE-FILTER returns nil are excluded from the clock summation.
+HEADING-FILTER is a zero-arg function that, if specified, is called for
+each heading in the time range with point at the heading.  Headings for
+which HEADING-FILTER returns nil are excluded from the clock summation.
 PROPNAME lets you set a custom text property instead of :org-clock-minutes."
   (with-silent-modifications
     (let* ((re (concat "^\\(\\*+\\)[ \t]\\|^[ \t]*"
@@ -1893,7 +1893,7 @@ PROPNAME lets you set a custom text property instead of :org-clock-minutes."
 	   time)
       (remove-text-properties (point-min) (point-max)
 			      `(,(or propname :org-clock-minutes) t
-				:org-clock-force-headline-inclusion t))
+				:org-clock-force-heading-inclusion t))
       (save-excursion
 	(goto-char (point-max))
 	(while (re-search-backward re nil t)
@@ -1914,7 +1914,7 @@ PROPNAME lets you set a custom text property instead of :org-clock-minutes."
 	    ;; A naked time.
 	    (setq t1 (+ t1 (string-to-number (match-string 5))
 			(* 60 (string-to-number (match-string 4))))))
-	   (t	 ;A headline
+	   (t	 ;A heading
 	    ;; Add the currently clocking item time to the total.
 	    (when (and org-clock-report-include-clocking-task
 		       (eq (org-clocking-buffer) (current-buffer))
@@ -1927,32 +1927,32 @@ PROPNAME lets you set a custom text property instead of :org-clock-minutes."
 				  (org-time-since org-clock-start-time))
 				 60)))
 		(setq t1 (+ t1 time))))
-	    (let* ((headline-forced
+	    (let* ((heading-forced
 		    (get-text-property (point)
-				       :org-clock-force-headline-inclusion))
-		   (headline-included
-		    (or (null headline-filter)
+				       :org-clock-force-heading-inclusion))
+		   (heading-included
+		    (or (null heading-filter)
 			(save-excursion
-			  (save-match-data (funcall headline-filter))))))
+			  (save-match-data (funcall heading-filter))))))
 	      (setq level (- (match-end 1) (match-beginning 1)))
 	      (when (>= level lmax)
 		(setq ltimes (vconcat ltimes (make-vector lmax 0)) lmax (* 2 lmax)))
 	      (when (or (> t1 0) (> (aref ltimes level) 0))
-		(when (or headline-included headline-forced)
-		  (if headline-included
+		(when (or heading-included heading-forced)
+		  (if heading-included
 		      (cl-loop for l from 0 to level do
 			       (aset ltimes l (+ (aref ltimes l) t1))))
 		  (setq time (aref ltimes level))
 		  (goto-char (match-beginning 0))
 		  (put-text-property (point) (point-at-eol)
 				     (or propname :org-clock-minutes) time)
-		  (when headline-filter
+		  (when heading-filter
 		    (save-excursion
 		      (save-match-data
 			(while (org-up-heading-safe)
 			  (put-text-property
 			   (point) (line-end-position)
-			   :org-clock-force-headline-inclusion t))))))
+			   :org-clock-force-heading-inclusion t))))))
 		(setq t1 0)
 		(cl-loop for l from level to (1- lmax) do
 			 (aset ltimes l 0)))))))
@@ -2033,18 +2033,18 @@ Use `\\[org-clock-remove-overlays]' to remove the subtree times."
 (defvar-local org-clock-overlays nil)
 
 (defun org-clock-put-overlay (time)
-  "Put an overlay on the headline at point, displaying TIME.
+  "Put an overlay on the heading at point, displaying TIME.
 Create a new overlay and store it in `org-clock-overlays', so
 that it will be easy to remove.  This function assumes point is
-on a headline."
+on a heading."
   (org-match-line org-complex-heading-regexp)
   (goto-char (match-beginning 4))
-  (let* ((headline (match-string 4))
-	 (text (concat headline
+  (let* ((heading (match-string 4))
+	 (text (concat heading
 		       (org-add-props
 			   (make-string
 			    (max (- (- 60 (current-column))
-				    (org-string-width headline)
+				    (org-string-width heading)
 				    (length (org-get-at-bol 'line-prefix)))
 				 0)
 			    ?\·)
@@ -2579,7 +2579,7 @@ from the dynamic block definition."
 	 (properties (plist-get params :properties))
 	 (time-columns
 	  (if (or compact? (< maxlevel 2)) 1
-	    ;; Deepest headline level is a hard limit for the number
+	    ;; Deepest heading level is a hard limit for the number
 	    ;; of time columns.
 	    (let ((levels
 		   (cl-mapcan
@@ -2640,7 +2640,7 @@ from the dynamic block definition."
        (if properties			;properties columns, maybe
 	   (make-string (length properties) ?|)
 	 "")
-       (format "<%d>| |\n" narrow)))	;headline and time columns
+       (format "<%d>| |\n" narrow)))	;heading and time columns
 
     ;; Insert the table header line
     (insert-before-markers
@@ -2659,7 +2659,7 @@ from the dynamic block definition."
      (if properties			;properties columns, maybe
 	 (concat (mapconcat #'identity properties "|") "|")
        "")
-     (concat (org-clock--translate "Headline" lang)"|")
+     (concat (org-clock--translate "Heading" lang)"|")
      (concat (org-clock--translate "Time" lang) "|")
      (make-string (max 0 (1- time-columns)) ?|) ;other time columns
      (if (eq formula '%) "%|\n" "\n"))
@@ -2728,18 +2728,18 @@ from the dynamic block definition."
 
 	  ;; Get the list of node entries and iterate over it
 	  (when (> maxlevel 0)
-	    (pcase-dolist (`(,level ,headline ,tgs ,ts ,time ,props) entries)
+	    (pcase-dolist (`(,level ,heading ,tgs ,ts ,time ,props) entries)
 	      (when narrow-cut-p
-		(setq headline
+		(setq heading
 		      (if (and (string-match
 				(format "\\`%s\\'" org-link-bracket-re)
-				headline)
+				heading)
 			       (match-end 2))
 			  (format "[[%s][%s]]"
-				  (match-string 1 headline)
-				  (org-shorten-string (match-string 2 headline)
+				  (match-string 1 heading)
+				  (org-shorten-string (match-string 2 heading)
 						      narrow))
-			(org-shorten-string headline narrow))))
+			(org-shorten-string heading narrow))))
 	      (cl-flet ((format-field (f) (format (cond ((not emph) "%s |")
 							((= level 1) "*%s* |")
 							((= level 2) "/%s/ |")
@@ -2760,7 +2760,7 @@ from the dynamic block definition."
 		 (if indent		;indentation
 		     (org-clocktable-indent-string level)
 		   "")
-		 (format-field headline)
+		 (format-field heading)
 		 ;; Empty fields for higher levels.
 		 (make-string (max 0 (1- (min time-columns level))) ?|)
 		 (format-field (org-duration-from-minutes time))
@@ -2900,17 +2900,17 @@ the correct buffer is current, and that the wanted restriction is
 in place.
 The return value will be a list with the file name and the total
 file time (in minutes) as 1st and 2nd elements.  The third element
-of this list will be a list of headline entries.  Each entry has the
+of this list will be a list of heading entries.  Each entry has the
 following structure:
 
-  (LEVEL HEADLINE TAGS TIMESTAMP TIME PROPERTIES)
+  (LEVEL HEADING TAGS TIMESTAMP TIME PROPERTIES)
 
-LEVEL:      The level of the headline, as an integer.  This will be
+LEVEL:      The level of the heading, as an integer.  This will be
             the reduced level, so 1,2,3,... even if only odd levels
             are being used.
-HEADLINE:   The text of the headline.  Depending on PARAMS, this may
+HEADING:   The text of the heading.  Depending on PARAMS, this may
             already be formatted like a link.
-TAGS:       The list of tags of the headline.
+TAGS:       The list of tags of the heading.
 TIMESTAMP:  If PARAMS require it, this will be a time stamp found in the
             entry, any of SCHEDULED, DEADLINE, NORMAL, or first inactive,
             in this sequence.
@@ -2970,11 +2970,11 @@ PROPERTIES: The list properties specified in the `:properties' parameter
 	  (when (and time (> time 0) (org-at-heading-p))
 	    (let ((level (org-reduced-level (org-current-level))))
 	      (when (<= level maxlevel)
-		(let* ((headline (org-get-heading t t t t))
+		(let* ((heading (org-get-heading t t t t))
 		       (hdl
-			(if (not link) headline
+			(if (not link) heading
 			  (let ((search
-				 (org-link-heading-search-string headline)))
+				 (org-link-heading-search-string heading)))
 			    (org-link-make-string
 			     (if (not (buffer-file-name)) search
 			       (format "file:%s::%s" (buffer-file-name) search))
@@ -2985,7 +2985,7 @@ PROPERTIES: The list properties specified in the `:properties' parameter
 			      (org-link-display-format
 			       (replace-regexp-in-string
 				"\\[[0-9]*\\(?:%\\|/[0-9]*\\)\\]" ""
-				headline)))))))
+				heading)))))))
 		       (tgs (and tags (org-get-tags)))
 		       (tsp
 			(and timestamp
diff --git a/lisp/org-colview.el b/lisp/org-colview.el
index 2e1c29a99..d93623ff8 100644
--- a/lisp/org-colview.el
+++ b/lisp/org-colview.el
@@ -33,7 +33,7 @@
 
 (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-clock-sum-today "org-clock" (&optional heading-filter))
 (declare-function org-element-extract-element "org-element" (element))
 (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))
@@ -85,7 +85,7 @@ or (LABEL SUMMARIZE COLLECT) where
   a string summarizing the list of values.
 
   COLLECT is a function called with one argument, a property
-  name.  It is called in the context of a headline and must
+  name.  It is called in the context of a heading and must
   return the collected property, or the empty string.  You can
   use this to only collect a property if a related conditional
   properties is set, e.g., to return VACATION_DAYS only if
@@ -609,7 +609,7 @@ Where possible, use the standard interface for changing this line."
 	    ("CLOCKSUM"
 	     (user-error "This special column cannot be edited"))
 	    ("ITEM"
-	     (lambda () (org-with-point-at pom (org-edit-headline))))
+	     (lambda () (org-with-point-at pom (org-edit-heading))))
 	    ("TODO"
 	     (lambda ()
 	       (org-with-point-at pom (call-interactively #'org-todo))))
@@ -663,7 +663,7 @@ Where possible, use the standard interface for changing this line."
 	(with-silent-modifications
 	  (remove-text-properties (max (point-min) (1- bol)) eol '(read-only t)))
 	(org-columns--call action))
-      ;; Some properties can modify headline (e.g., "TODO"), and
+      ;; Some properties can modify heading (e.g., "TODO"), and
       ;; possible shuffle overlays.  Make sure they are still all at
       ;; the right place on the current line.
       (let ((org-columns-inhibit-recalculation)) (org-columns-redo))
@@ -724,7 +724,7 @@ an integer, select that value."
 		       (`(,_ ,_ ,_ ,(or "X" "X/" "X%") ,_) '("[ ]" "[X]")))
 		     (org-colview-construct-allowed-dates value))))
 	    (if previous (reverse all) all))))
-    (when (equal key "ITEM") (error "Cannot edit item headline from here"))
+    (when (equal key "ITEM") (error "Cannot edit item heading from here"))
     (unless (or allowed (member key '("SCHEDULED" "DEADLINE" "CLOCKSUM")))
       (error "Allowed values for this property have not been defined"))
     (let* ((l (length allowed))
@@ -757,7 +757,7 @@ an integer, select that value."
 	  (remove-text-properties (line-end-position 0) (line-end-position)
 				  '(read-only t))
 	  (org-columns--call action))
-	;; Some properties can modify headline (e.g., "TODO"), and
+	;; Some properties can modify heading (e.g., "TODO"), and
 	;; possible shuffle overlays.  Make sure they are still all at
 	;; the right place on the current line.
 	(let ((org-columns-inhibit-recalculation)) (org-columns-redo))
@@ -837,9 +837,9 @@ Also sets `org-columns-top-level-marker' to the new position."
   "Turn on column view on an Org mode file.
 
 Column view applies to the whole buffer if point is before the first
-headline.  Otherwise, it applies to the first ancestor setting
+heading.  Otherwise, it applies to the first ancestor setting
 \"COLUMNS\" property.  If there is none, it defaults to the current
-headline.  With a `\\[universal-argument]' prefix \ argument, GLOBAL,
+heading.  With a `\\[universal-argument]' prefix \ argument, GLOBAL,
 turn on column view for the whole buffer unconditionally.
 
 When COLUMNS-FMT-STRING is non-nil, use it as the column format."
@@ -1413,7 +1413,7 @@ This includes objects that may not be duplicated within
 a document, e.g., a target, or those forbidden in tables, e.g.,
 an inline src-block."
   (let ((data (org-element-parse-secondary-string
-	       item (org-element-restriction 'headline))))
+	       item (org-element-restriction 'heading))))
     (org-element-map data
 	'(footnote-reference inline-babel-call inline-src-block target
 			     radio-target statistics-cookie)
@@ -1460,7 +1460,7 @@ PARAMS is a property list of parameters:
 
 `:maxlevel'
 
-    When set to a number, don't capture headlines below this level.
+    When set to a number, don't capture headings below this level.
 
 `:skip-empty-rows'
 
@@ -1614,7 +1614,7 @@ PARAMS is a property list of parameters:
     (when org-agenda-columns-compute-summary-properties
       (org-agenda-colview-compute org-columns-current-fmt-compiled))
     (save-excursion
-      ;; Collect properties for each headline in current view.
+      ;; Collect properties for each heading in current view.
       (goto-char (point-min))
       (let (cache)
 	(while (not (eobp))
diff --git a/lisp/org-compat.el b/lisp/org-compat.el
index ff992f344..6d3ae4f01 100644
--- a/lisp/org-compat.el
+++ b/lisp/org-compat.el
@@ -363,6 +363,150 @@ Counting starts at 1."
 
 (define-obsolete-function-alias 'org-file-url-p 'org-url-p "9.5")
 
+;; /s/headline/heading
+(define-obsolete-function-alias 'org-babel-ref-goto-headline-id
+  'org-babel-ref-goto-heading-id "9.5")
+(define-obsolete-function-alias 'org-babel-ref-headline-body
+  'org-babel-ref-heading-body "9.5")
+(define-obsolete-function-alias 'org-bibtex-headline
+  'org-bibtex-heading "9.5")
+(define-obsolete-function-alias 'org-find-top-headline
+  'org-find-top-heading "9.5")
+(define-obsolete-function-alias 'org-agenda-filter-by-top-headline
+  'org-agenda-filter-by-top-heading "9.5")
+(define-obsolete-function-alias 'org-agenda-filter-top-headline-apply
+  'org-agenda-filter-top-heading-apply "9.5")
+(define-obsolete-function-alias 'org-add-log-current-headline
+  'org-add-log-current-heading "9.5")
+(define-obsolete-function-alias 'org-element-headline-parser
+  'org-element-heading-parser "9.5")
+(define-obsolete-function-alias 'org-element-headline-interpreter
+  'org-element-heading-interpreter "9.5")
+(define-obsolete-function-alias 'org-indent-notify-modified-headline
+  'org-indent-notify-modified-heading "9.5")
+(define-obsolete-function-alias 'org-mouse-end-headline
+  'org-mouse-end-heading "9.5")
+(define-obsolete-function-alias 'org-mouse-show-headlines
+  'org-mouse-show-heading "9.5")
+(define-obsolete-function-alias 'org-first-headline-recenter
+  'org-first-heading-recenter "9.5")
+(define-obsolete-function-alias 'org-edit-headline
+  'org-edit-heading "9.5")
+(define-obsolete-function-alias 'org-find-exact-headline-in-buffer
+  'org-find-exact-heading-in-buffer "9.5")
+(define-obsolete-function-alias 'org-point-at-end-of-empty-headline
+  'org-point-at-end-of-empty-heading "9.5")
+(define-obsolete-function-alias 'org-ascii-headline
+  'org-ascii-heading "9.5")
+(define-obsolete-function-alias 'org-ascii-filter-headline-blank-lines
+  'org-ascii-filter-heading-blank-lines "9.5")
+(define-obsolete-function-alias 'org-beamer-headline
+  'org-beamer-heading "9.5")
+(define-obsolete-function-alias 'org-html--format-toc-headline
+  'org-html--format-toc-heading "9.5")
+(define-obsolete-function-alias 'org-html-headline
+  'org-html-heading "9.5")
+(define-obsolete-function-alias 'org-html-format-headline-default-function
+  'org-html-format-heading-default-function "9.5")
+(define-obsolete-function-alias 'org-icalendar-blocked-headline-p
+  'org-icalendar-blocked-heading-p "9.5")
+(define-obsolete-function-alias 'org-koma-letter-headline
+  'org-koma-letter-heading "9.5")
+(define-obsolete-function-alias 'org-koma-letter--keyword-or-headline
+  'org-koma-letter--keyword-or-heading "9.5")
+(define-obsolete-function-alias 'org-latex-headline
+  'org-latex-heading "9.5")
+(define-obsolete-function-alias 'org-latex-format-headline-default-function
+  'org-latex-format-heading-default-function "9.5")
+(define-obsolete-function-alias 'org-man-headline
+  'org-man-heading "9.5")
+(define-obsolete-function-alias 'org-md--headline-referred-p
+  'org-md--heading-referred-p "9.5")
+(define-obsolete-function-alias 'org-md--headline-title
+  'org-md--heading-title "9.5")
+(define-obsolete-function-alias 'org-md-headline
+  'org-md-heading "9.5")
+(define-obsolete-function-alias 'org-odt-format-headline--wrap
+  'org-odt-format-heading--wrap "9.5")
+(define-obsolete-function-alias 'org-odt-headline
+  'org-odt-heading "9.5")
+(define-obsolete-function-alias 'org-odt-format-headline-default-function
+  'org-odt-format-heading-default-function "9.5")
+(define-obsolete-function-alias 'org-org-headline
+  'org-org-heading "9.5")
+(define-obsolete-function-alias 'org-texinfo--normalize-headlines
+  'org-texinfo--normalize-heading "9.5")
+(define-obsolete-function-alias 'org-texinfo-headline
+  'org-texinfo-heading "9.5")
+(define-obsolete-function-alias 'org-texinfo-format-headline-default-function
+  'org-texinfo-format-heading-default-function "9.5")
+(define-obsolete-function-alias 'org-export--collect-headline-numbering
+  'org-export--collect-heading-numbering "9.5")
+(define-obsolete-function-alias 'org-export-get-headline-number
+  'org-export-get-heading-number "9.5")
+(define-obsolete-function-alias 'org-export-numbered-headline-p
+  'org-export-numbered-heading-p "9.5")
+(define-obsolete-function-alias 'org-export-collect-headlines
+  'org-export-collect-heading "9.5")
+(define-obsolete-function-alias 'org-export-get-parent-headline
+  'org-export-get-parent-heading "9.5")
+
+(define-obsolete-variable-alias 'org-agenda-top-headline-filter
+  'org-agenda-top-heading-filter "9.5")
+(define-obsolete-variable-alias 'org-agenda-filtered-by-top-headline
+  'org-agenda-filtered-by-top-heading "9.5")
+(define-obsolete-variable-alias 'org-agenda-loop-over-headlines-in-active-region
+  'org-agenda-loop-over-heading-in-active-region "9.5")
+(define-obsolete-variable-alias 'org-remember-default-headline
+  'org-remember-default-heading "9.5")
+(define-obsolete-variable-alias 'org-indent-modified-headline-flag
+  'org-indent-modified-heading-flag "9.5")
+(define-obsolete-variable-alias 'org-loop-over-headlines-in-active-region
+  'org-loop-over-heading-in-active-region "9.5")
+(define-obsolete-variable-alias 'org-link-search-must-match-exact-headline
+  'org-link-search-must-match-exact-heading "9.5")
+(define-obsolete-variable-alias 'org-export-filter-headline-functions
+  'org-export-filter-heading-functions "9.5")
+(define-obsolete-variable-alias 'org-bibtex-treat-headline-as-title
+  'org-bibtex-treat-heading-as-title "9.5")
+(define-obsolete-variable-alias 'org-bibtex-headline-format-function
+  'org-bibtex-heading-format-function "9.5")
+(define-obsolete-variable-alias 'org-link-search-must-match-exact-headline
+  'org-link-search-must-match-exact-heading "9.5")
+(define-obsolete-variable-alias 'org-agenda-search-headline-for-time
+  'org-agenda-search-heading-for-time "9.5")
+(define-obsolete-variable-alias 'org-agenda-loop-over-headlines-in-active-region
+  'org-agenda-loop-over-heading-in-active-region "9.5")
+(define-obsolete-variable-alias 'org-loop-over-headlines-in-active-region
+  'org-loop-over-heading-in-active-region "9.5")
+(define-obsolete-variable-alias 'org-fontify-todo-headline
+  'org-fontify-todo-heading "9.5")
+(define-obsolete-variable-alias 'org-fontify-done-headline
+  'org-fontify-done-heading "9.5")
+(define-obsolete-variable-alias 'org-ascii-headline-spacing
+  'org-ascii-heading-spacing "9.5")
+(define-obsolete-variable-alias 'org-html-format-headline-function
+  'org-html-format-heading-function "9.5")
+(define-obsolete-variable-alias 'org-html-self-link-headlines
+  'org-html-self-link-heading "9.5")
+(define-obsolete-variable-alias 'org-koma-letter-headline-is-opening-maybe
+  'org-koma-letter-heading-is-opening-maybe "9.5")
+(define-obsolete-variable-alias 'org-latex-format-headline-function
+  'org-latex-format-heading-function "9.5")
+(define-obsolete-variable-alias 'org-md-headline-style
+  'org-md-heading-style "9.5")
+(define-obsolete-variable-alias 'org-odt-format-headline-function
+  'org-odt-format-heading-function "9.5")
+(define-obsolete-variable-alias 'org-texinfo-format-headline-function
+  'org-texinfo-format-heading-function "9.5")
+(define-obsolete-variable-alias 'org-export-headline-levels
+  'org-export-heading-levels "9.5")
+
+
+;;;; Faces from previous releases now obsolete.
+(define-obsolete-face-alias 'org-headline-todo 'org-heading-todo "9.5")
+(define-obsolete-face-alias 'org-headline-done 'org-heading-done "9.5")
+
 (defun org-in-fixed-width-region-p ()
   "Non-nil if point in a fixed-width region."
   (save-match-data
@@ -648,17 +792,17 @@ use of this function is for the stuck project list."
 (define-obsolete-function-alias 'org-get-tags-at 'org-get-tags "9.2")
 
 (defun org-get-local-tags ()
-  "Get a list of tags defined in the current headline."
+  "Get a list of tags defined in the current heading."
   (declare (obsolete "use `org-get-tags' instead." "9.2"))
   (org-get-tags nil 'local))
 
 (defun org-get-local-tags-at (&optional pos)
-  "Get a list of tags defined in the current headline."
+  "Get a list of tags defined in the current heading."
   (declare (obsolete "use `org-get-tags' instead." "9.2"))
   (org-get-tags pos 'local))
 
 (defun org-get-tags-string ()
-  "Get the TAGS string in the current headline."
+  "Get the TAGS string in the current heading."
   (declare (obsolete "use `org-make-tag-string' instead." "9.2"))
   (org-make-tag-string (org-get-tags nil t)))
 
@@ -909,7 +1053,7 @@ attention to case differences."
   :group 'org-structure)
 
 (defcustom org-imenu-depth 2
-  "The maximum level for Imenu access to Org headlines.
+  "The maximum level for Imenu access to Org headings.
 This also applied for speedbar access."
   :group 'org-imenu-and-speedbar
   :type 'integer)
@@ -930,11 +1074,11 @@ This also applied for speedbar access."
 	  (last-level 0))
      (while (re-search-backward re nil t)
        (let ((level (org-reduced-level (funcall outline-level)))
-	     (headline (org-no-properties
+	     (heading (org-no-properties
 			(org-link-display-format (org-get-heading t t t t)))))
-	 (when (and (<= level org-imenu-depth) (org-string-nw-p headline))
+	 (when (and (<= level org-imenu-depth) (org-string-nw-p heading))
 	   (let* ((m (point-marker))
-		  (item (propertize headline 'org-imenu-marker m 'org-imenu t)))
+		  (item (propertize heading 'org-imenu-marker m 'org-imenu t)))
 	     (push m org-imenu-markers)
 	     (if (>= level last-level)
 		 (push (cons item m) (aref subs level))
@@ -1020,8 +1164,8 @@ To get rid of the restriction, use `\\[org-agenda-remove-restriction-lock]'."
 
 ;;;; Add Log
 
-(defun org-add-log-current-headline ()
-  "Return current headline or nil.
+(defun org-add-log-current-heading ()
+  "Return current heading or nil.
 This function ignores inlinetasks.  It is meant to be used as
 `add-log-current-defun-function' value."
   (org-with-limited-levels (org-get-heading t t t t)))
@@ -1053,7 +1197,7 @@ ELEMENT is the element at point."
 (defun org-mode-flyspell-verify ()
   "Function used for `flyspell-generic-check-word-predicate'."
   (if (org-at-heading-p)
-      ;; At a headline or an inlinetask, check title only.
+      ;; At a heading or an inlinetask, check title only.
       (and (save-excursion (beginning-of-line)
 			   (and (let ((case-fold-search t))
 				  (not (looking-at-p "\\*+ END[ \t]*$")))
diff --git a/lisp/org-crypt.el b/lisp/org-crypt.el
index 103baeb49..e9dbd8fc1 100644
--- a/lisp/org-crypt.el
+++ b/lisp/org-crypt.el
@@ -31,7 +31,7 @@
 ;; 2. Set the encryption key to use in the `org-crypt-key' variable,
 ;;    or use `M-x org-set-property' to set the property CRYPTKEY to
 ;;    any address in your public keyring.  The text of the entry (but
-;;    not its properties or headline) will be encrypted for this user.
+;;    not its properties or heading) will be encrypted for this user.
 ;;    For them to read it, the corresponding secret key must be
 ;;    located in the secret key ring of the account where you try to
 ;;    decrypt it.  This makes it possible to leave secure notes that
@@ -205,7 +205,7 @@ Assume `epg-context' is set."
 
 ;;;###autoload
 (defun org-encrypt-entry ()
-  "Encrypt the content of the current headline."
+  "Encrypt the content of the current heading."
   (interactive)
   (unless (org-at-encrypted-entry-p)
     (require 'epg)
@@ -248,7 +248,7 @@ Assume `epg-context' is set."
 
 ;;;###autoload
 (defun org-decrypt-entry ()
-  "Decrypt the content of the current headline."
+  "Decrypt the content of the current heading."
   (interactive)
   (pcase (org-at-encrypted-entry-p)
     (`(,beg . ,end)
diff --git a/lisp/org-datetree.el b/lisp/org-datetree.el
index ac491878c..be575ba49 100644
--- a/lisp/org-datetree.el
+++ b/lisp/org-datetree.el
@@ -55,7 +55,7 @@ Added time stamp is active unless value is `inactive'."
 If KEEP-RESTRICTION is non-nil, do not widen the buffer.
 When it is nil, the buffer will be widened to make sure an existing date
 tree can be found.  If it is the symbol `subtree-at-point', then the tree
-will be built under the headline at point."
+will be built under the heading at point."
   (org-datetree--find-create-group d 'day keep-restriction))
 
 ;;;###autoload
@@ -66,7 +66,7 @@ entries grouped by month instead of days.
 If KEEP-RESTRICTION is non-nil, do not widen the buffer.
 When it is nil, the buffer will be widened to make sure an existing date
 tree can be found.  If it is the symbol `subtree-at-point', then the tree
-will be built under the headline at point."
+will be built under the heading at point."
   (org-datetree--find-create-group d 'month keep-restriction))
 
 (defun org-datetree--find-create-group
@@ -114,7 +114,7 @@ Compared to `org-datetree-find-date-create' this function creates
 entries ordered by week instead of months.
 When it is nil, the buffer will be widened to make sure an existing date
 tree can be found.  If it is the symbol `subtree-at-point', then the tree
-will be built under the headline at point."
+will be built under the heading at point."
   (setq-local org-datetree-base-level 1)
   (save-restriction
     (if (eq keep-restriction 'subtree-at-point)
diff --git a/lisp/org-element.el b/lisp/org-element.el
index 006e75a66..23a148f5d 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -147,7 +147,7 @@ specially in `org-element--object-lex'.")
   "Build variable syntax regexps."
   (setq org-element-paragraph-separate
 	(concat "^\\(?:"
-		;; Headlines, inlinetasks.
+		;; Headings, inlinetasks.
 		"\\*+ " "\\|"
 		;; Footnote definitions.
 		"\\[fn:[-_[:word:]]+\\]" "\\|"
@@ -236,14 +236,14 @@ specially in `org-element--object-lex'.")
 (defconst org-element-all-elements
   '(babel-call center-block clock comment comment-block diary-sexp drawer
 	       dynamic-block example-block export-block fixed-width
-	       footnote-definition headline horizontal-rule inlinetask item
+	       footnote-definition heading horizontal-rule inlinetask item
 	       keyword latex-environment node-property paragraph plain-list
 	       planning property-drawer quote-block section
 	       special-block src-block table table-row verse-block)
   "Complete list of element types.")
 
 (defconst org-element-greater-elements
-  '(center-block drawer dynamic-block footnote-definition headline inlinetask
+  '(center-block drawer dynamic-block footnote-definition heading inlinetask
 		 item plain-list property-drawer quote-block section
 		 special-block table)
   "List of recursive element types aka Greater Elements.")
@@ -353,7 +353,7 @@ Don't modify it, set `org-element-affiliated-keywords' instead.")
       (citation citation-reference)
       (citation-reference ,@minimal-set)
       (footnote-reference ,@standard-set)
-      (headline ,@standard-set-no-line-break)
+      (heading ,@standard-set-no-line-break)
       (inlinetask ,@standard-set-no-line-break)
       (italic ,@standard-set)
       (item ,@standard-set-no-line-break)
@@ -384,12 +384,12 @@ a list of types that can be contained within an element or object
 of such type.
 
 This alist also applies to secondary string.  For example, an
-`headline' type element doesn't directly contain objects, but
+`heading' type element doesn't directly contain objects, but
 still has an entry since one of its properties (`:title') does.")
 
 (defconst org-element-secondary-value-alist
   '((citation :prefix :suffix)
-    (headline :title)
+    (heading :title)
     (inlinetask :title)
     (item :tag)
     (citation-reference :prefix :suffix))
@@ -682,7 +682,7 @@ is cleared and contents are removed in the process."
 ;; Similarly, interpreting functions must follow the naming
 ;; convention: org-element-TYPE-interpreter.
 ;;
-;; With the exception of `headline' and `item' types, greater elements
+;; With the exception of `heading' and `item' types, greater elements
 ;; cannot contain other greater elements of their own type.
 ;;
 ;; Beside implementing a parser and an interpreter, adding a new
@@ -945,10 +945,10 @@ CONTENTS is the contents of the footnote-definition."
 	      (concat (make-string pre-blank ?\n) contents)))))
 
 
-;;;; Headline
+;;;; Heading
 
 (defun org-element--get-node-properties ()
-  "Return node properties associated to headline at point.
+  "Return node properties associated to heading at point.
 Upcase property names.  It avoids confusion between properties
 obtained through property drawer and default properties from the
 parser (e.g. `:end' and :END:).  Return value is a plist."
@@ -966,7 +966,7 @@ parser (e.g. `:end' and :END:).  Return value is a plist."
 	properties))))
 
 (defun org-element--get-time-properties ()
-  "Return time properties associated to headline at point.
+  "Return time properties associated to heading at point.
 Return value is a plist."
   (save-excursion
     (when (progn (forward-line) (looking-at org-planning-line-re))
@@ -983,10 +983,10 @@ Return value is a plist."
 		  (t (setq plist (plist-put plist :closed time))))))
 	plist))))
 
-(defun org-element-headline-parser (limit &optional raw-secondary-p)
-  "Parse a headline.
+(defun org-element-heading-parser (limit &optional raw-secondary-p)
+  "Parse a heading.
 
-Return a list whose CAR is `headline' and CDR is a plist
+Return a list whose CAR is `heading' and CDR is a plist
 containing `:raw-value', `:title', `:begin', `:end',
 `:pre-blank', `:contents-begin' and `:contents-end', `:level',
 `:priority', `:tags', `:todo-keyword', `:todo-type', `:scheduled',
@@ -1000,10 +1000,10 @@ beginning (e.g., `:CUSTOM_ID').
 
 LIMIT is a buffer position bounding the search.
 
-When RAW-SECONDARY-P is non-nil, headline's title will not be
+When RAW-SECONDARY-P is non-nil, heading's title will not be
 parsed as a secondary string, but as a plain string instead.
 
-Assume point is at beginning of the headline."
+Assume point is at beginning of the heading."
   (save-excursion
     (let* ((begin (point))
 	   (level (prog1 (org-reduced-level (skip-chars-forward "*"))
@@ -1045,8 +1045,8 @@ Assume point is at beginning of the headline."
 			      (progn (goto-char end)
 				     (skip-chars-backward " \r\t\n")
 				     (line-beginning-position 2)))))
-      (let ((headline
-	     (list 'headline
+      (let ((heading
+	     (list 'heading
 		   (nconc
 		    (list :raw-value raw-value
 			  :begin begin
@@ -1072,7 +1072,7 @@ Assume point is at beginning of the headline."
 		    time-props
 		    standard-props))))
 	(org-element-put-property
-	 headline :title
+	 heading :title
 	 (if raw-secondary-p raw-value
 	   (org-element--parse-objects
 	    (progn (goto-char title-start)
@@ -1082,22 +1082,22 @@ Assume point is at beginning of the headline."
 		   (skip-chars-backward " \t")
 		   (point))
 	    nil
-	    (org-element-restriction 'headline)
-	    headline)))))))
+	    (org-element-restriction 'heading)
+	    heading)))))))
 
-(defun org-element-headline-interpreter (headline contents)
-  "Interpret HEADLINE element as Org syntax.
+(defun org-element-heading-interpreter (heading contents)
+  "Interpret HEADING element as Org syntax.
 CONTENTS is the contents of the element."
-  (let* ((level (org-element-property :level headline))
-	 (todo (org-element-property :todo-keyword headline))
-	 (priority (org-element-property :priority headline))
+  (let* ((level (org-element-property :level heading))
+	 (todo (org-element-property :todo-keyword heading))
+	 (priority (org-element-property :priority heading))
 	 (title (org-element-interpret-data
-		 (org-element-property :title headline)))
-	 (tags (let ((tag-list (org-element-property :tags headline)))
+		 (org-element-property :title heading)))
+	 (tags (let ((tag-list (org-element-property :tags heading)))
 		 (and tag-list
 		      (format ":%s:" (mapconcat #'identity tag-list ":")))))
-	 (commentedp (org-element-property :commentedp headline))
-	 (pre-blank (or (org-element-property :pre-blank headline) 0))
+	 (commentedp (org-element-property :commentedp heading))
+	 (pre-blank (or (org-element-property :pre-blank heading) 0))
 	 (heading
 	  (concat (make-string (if org-odd-levels-only (1- (* level 2)) level)
 			       ?*)
@@ -1106,7 +1106,7 @@ CONTENTS is the contents of the element."
 		  (and priority (format " [#%c]" priority))
 		  " "
 		  (if (and org-footnote-section
-			   (org-element-property :footnote-section-p headline))
+			   (org-element-property :footnote-section-p heading))
 		      org-footnote-section
 		    title))))
     (concat
@@ -1621,7 +1621,7 @@ containing `:begin', `:end', `:contents-begin', `contents-end',
 `:post-blank' and `:post-affiliated' keywords."
   (save-excursion
     ;; Beginning of section is the beginning of the first non-blank
-    ;; line after previous headline.
+    ;; line after previous heading.
     (let ((begin (point))
 	  (end (progn (org-with-limited-levels (outline-next-heading))
 		      (point)))
@@ -3319,8 +3319,8 @@ Assume point is at the beginning of the link."
 	  (setq type "custom-id")
 	  (setq path (substring raw-link 1)))
 	 ;; Fuzzy type: Internal link either matches a target, an
-	 ;; headline name or nothing.  PATH is the target or
-	 ;; headline's name.
+	 ;; heading name or nothing.  PATH is the target or
+	 ;; heading's name.
 	 (t
 	  (setq type "fuzzy")
 	  (setq path raw-link))))
@@ -3970,7 +3970,7 @@ Possible types are defined in `org-element-all-elements'.
 LIMIT bounds the search.
 
 Optional argument GRANULARITY determines the depth of the
-recursion.  Allowed values are `headline', `greater-element',
+recursion.  Allowed values are `heading', `greater-element',
 `element', `object' or nil.  When it is broader than `object' (or
 nil), secondary values will not be parsed, since they only
 contain objects.
@@ -3999,10 +3999,10 @@ element it has to parse."
        ((eq mode 'table-row) (org-element-table-row-parser limit))
        ;; Node Property.
        ((eq mode 'node-property) (org-element-node-property-parser limit))
-       ;; Headline.
+       ;; Heading.
        ((org-with-limited-levels (org-at-heading-p))
-        (org-element-headline-parser limit raw-secondary-p))
-       ;; Sections (must be checked after headline).
+        (org-element-heading-parser limit raw-secondary-p))
+       ;; Sections (must be checked after heading).
        ((eq mode 'section) (org-element-section-parser limit))
        ((eq mode 'first-section)
 	(org-element-section-parser
@@ -4236,9 +4236,9 @@ buffer.
 Optional argument GRANULARITY determines the depth of the
 recursion.  It can be set to the following symbols:
 
-`headline'          Only parse headlines.
+`heading'          Only parse headings.
 `greater-element'   Don't recurse into greater elements except
-		    headlines and sections.  Thus, elements
+		    headings and sections.  Thus, elements
 		    parsed are the top-level ones.
 `element'           Parse everything but objects and plain text.
 `object'            Parse the complete buffer (default).
@@ -4278,7 +4278,7 @@ This function assumes that current major mode is `org-mode'."
     (org-element--parse-elements
      (point-at-bol) (point-max)
      ;; Start in `first-section' mode so text before the first
-     ;; headline belongs to a section.
+     ;; heading belongs to a section.
      'first-section nil granularity visible-only (list 'org-data nil))))
 
 (defun org-element-parse-secondary-string (string restriction &optional parent)
@@ -4350,10 +4350,10 @@ and `example-block' elements in it:
 
   (org-element-map tree \\='(example-block src-block) #\\='identity)
 
-The following snippet will find the first headline with a level
+The following snippet will find the first heading with a level
 of 1 and a \"phone\" tag, and will return its beginning position:
 
-  (org-element-map tree \\='headline
+  (org-element-map tree \\='heading
    (lambda (hl)
      (and (= (org-element-property :level hl) 1)
           (member \"phone\" (org-element-property :tags hl))
@@ -4492,7 +4492,7 @@ If PARENT? is non-nil, assume the next element or object will be
 located inside the current one.  "
   (if parent?
       (pcase type
-	(`headline 'section)
+	(`heading 'section)
 	((and (guard (eq mode 'first-section)) `section) 'top-comment)
 	(`inlinetask 'planning)
 	(`plain-list 'item)
@@ -4526,8 +4526,8 @@ elements.
 Elements are accumulated into ACC."
   (save-excursion
     (goto-char beg)
-    ;; When parsing only headlines, skip any text before first one.
-    (when (and (eq granularity 'headline) (not (org-at-heading-p)))
+    ;; When parsing only headings, skip any text before first one.
+    (when (and (eq granularity 'heading) (not (org-at-heading-p)))
       (org-with-limited-levels (outline-next-heading)))
     (let (elements)
       (while (< (point) end)
@@ -4549,13 +4549,13 @@ Elements are accumulated into ACC."
 	     ((not cbeg))
 	     ;; Greater element: parse it between `contents-begin' and
 	     ;; `contents-end'.  Ensure GRANULARITY allows recursion,
-	     ;; or ELEMENT is a headline, in which case going inside
+	     ;; or ELEMENT is a heading, in which case going inside
 	     ;; is mandatory, in order to get sub-level headings.
 	     ((and (memq type org-element-greater-elements)
 		   (or (memq granularity '(element object nil))
 		       (and (eq granularity 'greater-element)
 			    (eq type 'section))
-		       (eq type 'headline)))
+		       (eq type 'heading)))
 	      (org-element--parse-elements
 	       cbeg (org-element-property :contents-end element)
 	       ;; Possibly switch to a special mode.
@@ -5607,7 +5607,7 @@ request."
   "Parse elements in current section, down to POS.
 
 Start parsing from the closest between the last known element in
-cache or headline above.  Return the smallest element containing
+cache or heading above.  Return the smallest element containing
 POS.
 
 When optional argument SYNCP is non-nil, return the parent of the
@@ -5624,7 +5624,7 @@ the process stopped before finding the expected result."
             element next mode)
        (cond
         ;; Nothing in cache before point: start parsing from first
-        ;; element following headline above, or first element in
+        ;; element following heading above, or first element in
         ;; buffer.
         ((not cached)
          (if (org-with-limited-levels (outline-previous-heading))
@@ -5637,9 +5637,9 @@ the process stopped before finding the expected result."
         ;; Cache returned exact match: return it.
         ((= pos begin)
 	 (throw 'exit (if syncp (org-element-property :parent cached) cached)))
-        ;; There's a headline between cached value and POS: cached
+        ;; There's a heading between cached value and POS: cached
         ;; value is invalid.  Start parsing from first element
-        ;; following the headline.
+        ;; following the heading.
         ((re-search-backward
           (org-with-limited-levels org-outline-regexp-bol) begin t)
          (forward-line)
@@ -5749,14 +5749,14 @@ the process stopped before finding the expected result."
    ":\\(?:\\w\\|[-_]\\)+:[ \t]*$"
    "\\)")
   "Regexp matching a sensitive line, structure wise.
-A sensitive line is a headline, inlinetask, block, drawer, or
+A sensitive line is a heading, inlinetask, block, drawer, or
 latex-environment boundary.  When such a line is modified,
 structure changes in the document may propagate in the whole
 section, possibly making cache invalid.")
 
 (defvar org-element--cache-change-warning nil
   "Non-nil when a sensitive line is about to be changed.
-It is a symbol among nil, t and `headline'.")
+It is a symbol among nil, t and `heading'.")
 
 (defun org-element--cache-before-change (beg end)
   "Request extension of area going to be modified if needed.
@@ -5771,7 +5771,7 @@ text.  See `before-change-functions' for more information."
 	     (save-match-data
 	       (if (and (org-with-limited-levels (org-at-heading-p))
 			(= (line-end-position) bottom))
-		   'headline
+		   'heading
 		 (let ((case-fold-search t))
 		   (re-search-forward
 		    org-element--cache-sensitive-re bottom t)))))))))
@@ -5790,11 +5790,11 @@ that range.  See `after-change-functions' for more information."
 	     (bottom (save-excursion (goto-char end) (line-end-position))))
 	 ;; Determine if modified area needs to be extended, according
 	 ;; to both previous and current state.  We make a special
-	 ;; case for headline editing: if a headline is modified but
+	 ;; case for heading editing: if a heading is modified but
 	 ;; not removed, do not extend.
 	 (when (pcase org-element--cache-change-warning
 		 (`t t)
-		 (`headline
+		 (`heading
 		  (not (and (org-with-limited-levels (org-at-heading-p))
 			    (= (line-end-position) bottom))))
 		 (_
@@ -6009,11 +6009,11 @@ element ending there."
      (cond
       ;; Within blank lines at the beginning of buffer, return nil.
       ((bobp) nil)
-      ;; Within blank lines right after a headline, return that
-      ;; headline.
+      ;; Within blank lines right after a heading, return that
+      ;; heading.
       ((org-with-limited-levels (org-at-heading-p))
        (beginning-of-line)
-       (org-element-headline-parser (point-max) t))
+       (org-element-heading-parser (point-max) t))
       ;; Otherwise parse until we find element containing ORIGIN.
       (t
        (when (org-element--cache-active-p)
@@ -6079,8 +6079,8 @@ Providing it allows for quicker computation."
 	     (if (and (>= pos (point)) (< pos (match-end 0)))
 		 (narrow-to-region (point) (match-end 0))
 	       (throw 'objects-forbidden element)))))
-	;; At an headline or inlinetask, objects are in title.
-	((memq type '(headline inlinetask))
+	;; At an heading or inlinetask, objects are in title.
+	((memq type '(heading inlinetask))
 	 (let ((case-fold-search nil))
 	   (goto-char (org-element-property :begin element))
 	   (looking-at org-complex-heading-regexp)
diff --git a/lisp/org-faces.el b/lisp/org-faces.el
index a4fb0f0a9..7856cf88c 100644
--- a/lisp/org-faces.el
+++ b/lisp/org-faces.el
@@ -41,7 +41,7 @@
   '((default :inherit fixed-pitch)
     (((background light)) (:foreground "white"))
     (((background dark)) (:foreground "black")))
-  "Face used to hide leading stars in headlines.
+  "Face used to hide leading stars in headings.
 The foreground color of this face should be equal to the background
 color of the frame."
   :group 'org-faces)
@@ -61,35 +61,35 @@ color of the frame."
   :group 'org-faces)
 
 (defface org-level-1 '((t :inherit outline-1))
-  "Face used for level 1 headlines."
+  "Face used for level 1 headings."
   :group 'org-faces)
 
 (defface org-level-2 '((t :inherit outline-2))
-  "Face used for level 2 headlines."
+  "Face used for level 2 headings."
   :group 'org-faces)
 
 (defface org-level-3 '((t :inherit outline-3))
-  "Face used for level 3 headlines."
+  "Face used for level 3 headings."
   :group 'org-faces)
 
 (defface org-level-4 '((t :inherit outline-4))
-  "Face used for level 4 headlines."
+  "Face used for level 4 headings."
   :group 'org-faces)
 
 (defface org-level-5 '((t :inherit outline-5))
-  "Face used for level 5 headlines."
+  "Face used for level 5 headings."
   :group 'org-faces)
 
 (defface org-level-6 '((t :inherit outline-6))
-  "Face used for level 6 headlines."
+  "Face used for level 6 headings."
   :group 'org-faces)
 
 (defface org-level-7 '((t :inherit outline-7))
-  "Face used for level 7 headlines."
+  "Face used for level 7 headings."
   :group 'org-faces)
 
 (defface org-level-8 '((t :inherit outline-8))
-  "Face used for level 8 headlines."
+  "Face used for level 8 headings."
   :group 'org-faces)
 
 (defface org-special-keyword '((t :inherit font-lock-keyword-face))
@@ -165,7 +165,7 @@ set the properties in the `org-column' face.  For example, set
   :group 'org-faces)
 
 (defface org-archived '((t :inherit shadow))
-  "Face for headline with the ARCHIVE tag."
+  "Face for heading with the ARCHIVE tag."
   :group 'org-faces)
 
 (defface org-cite '((t :inherit link))
@@ -267,22 +267,22 @@ is of course immediately visible, but for example a passed deadline is
 of the frame, for example."
   :group 'org-faces)
 
-(defface org-headline-todo	  ;Copied from `font-lock-string-face'
+(defface org-heading-todo	  ;Copied from `font-lock-string-face'
   '((((class color) (min-colors 16) (background light)) (:foreground "Red4"))
     (((class color) (min-colors 16) (background dark)) (:foreground "Pink2"))
     (((class color) (min-colors 8)  (background light)) (:bold t)))
-  "Face used to indicate that a headline is marked as TODO.
-This face is only used if `org-fontify-todo-headline' is set.  If applies
-to the part of the headline after the TODO keyword."
+  "Face used to indicate that a heading is marked as TODO.
+This face is only used if `org-fontify-todo-heading' is set.  If applies
+to the part of the heading after the TODO keyword."
   :group 'org-faces)
 
-(defface org-headline-done	  ;Copied from `font-lock-string-face'
+(defface org-heading-done	  ;Copied from `font-lock-string-face'
   '((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
     (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
     (((class color) (min-colors 8)  (background light)) (:bold nil)))
-  "Face used to indicate that a headline is DONE.
-This face is only used if `org-fontify-done-headline' is set.  If applies
-to the part of the headline after the DONE keyword."
+  "Face used to indicate that a heading is DONE.
+This face is only used if `org-fontify-done-heading' is set.  If applies
+to the part of the heading after the DONE keyword."
   :group 'org-faces)
 
 (defcustom org-faces-easy-properties
@@ -651,8 +651,8 @@ month and 365.24 days for a year)."
 		org-level-5 org-level-6 org-level-7 org-level-8))
 
 (defcustom org-n-level-faces (length org-level-faces)
-  "The number of different faces to be used for headlines.
-Org mode defines 8 different headline faces, so this can be at most 8.
+  "The number of different faces to be used for headings.
+Org mode defines 8 different heading faces, so this can be at most 8.
 If it is less than 8, the level-1 face gets re-used for level N+1 etc."
   :type 'integer
   :group 'org-faces)
diff --git a/lisp/org-feed.el b/lisp/org-feed.el
index 5df3b6976..68ae53a46 100644
--- a/lisp/org-feed.el
+++ b/lisp/org-feed.el
@@ -118,7 +118,7 @@ URL          the Feed URL
 file         the target Org file where entries should be listed, when
              nil the target becomes the current buffer (may be an
              indirect buffer) each time the feed update is invoked
-headline     the headline under which entries should be listed
+heading     the heading under which entries should be listed
 
 Additional arguments can be given using keyword-value pairs.  Many of these
 specify functions that receive one or a list of \"entries\" as their single
@@ -144,7 +144,7 @@ Here are the keyword-value pair allows in `org-feed-alist'.
 
 :template template-string
      The default action on new items in the feed is to add them as children
-     under the headline for the feed.  The template describes how the entry
+     under the heading for the feed.  The template describes how the entry
      should be formatted.  If not given, it defaults to
      `org-feed-default-template'.
 
@@ -161,13 +161,13 @@ Here are the keyword-value pair allows in `org-feed-alist'.
      list.  The handler should do what needs to be done, and org-feed will
      mark all items given to this handler as \"handled\", i.e. they will not
      be passed to this handler again in future readings of the feed.
-     When the handler is called, point will be at the feed headline.
+     When the handler is called, point will be at the feed heading.
 
 :changed-handler function
      This function gets passed a list of all entries that have been
      handled before, but are now still in the feed and have *changed*
      since last handled (as evidenced by a different sha1 hash).
-     When the handler is called, point will be at the feed headline.
+     When the handler is called, point will be at the feed heading.
 
 :parse-feed function
      This function gets passed a buffer, and should return a list
@@ -187,7 +187,7 @@ Here are the keyword-value pair allows in `org-feed-alist'.
 		(string :tag "Name")
 		(string :tag "Feed URL")
 		(file :tag "File for inbox")
-		(string :tag "Headline for inbox")
+		(string :tag "Heading for inbox")
 		(repeat :inline t
 			(choice
 			 (list :inline t :tag "Filter"
@@ -306,7 +306,7 @@ it can be a list structured like an entry in `org-feed-alist'."
 	  (url (nth 1 feed))
 	  (file (or (nth 2 feed) (buffer-file-name (or (buffer-base-buffer)
 						       (current-buffer)))))
-	  (headline (nth 3 feed))
+	  (heading (nth 3 feed))
 	  (filter (nth 1 (memq :filter feed)))
 	  (formatter (nth 1 (memq :formatter feed)))
 	  (new-handler (nth 1 (memq :new-handler feed)))
@@ -330,7 +330,7 @@ it can be a list structured like an entry in `org-feed-alist'."
       (ignore-errors (kill-buffer feed-buffer))
       (save-excursion
 	(save-window-excursion
-	  (setq inbox-pos (org-feed-goto-inbox-internal file headline))
+	  (setq inbox-pos (org-feed-goto-inbox-internal file heading))
 	  (setq old-status (org-feed-read-previous-status inbox-pos drawer))
 	  ;; Add the "handled" status to the appropriate entries
 	  (setq entries (mapcar (lambda (e)
@@ -420,7 +420,7 @@ it can be a list structured like an entry in `org-feed-alist'."
 	  (message "Added %d new item%s from feed %s to file %s, heading %s"
 		   (length new) (if (> (length new) 1) "s" "")
 		   name
-		   (file-name-nondirectory file) headline)
+		   (file-name-nondirectory file) heading)
 	  (run-hooks 'org-feed-after-adding-hook)
 	  (length new))))))
 
@@ -452,7 +452,7 @@ it can be a list structured like an entry in `org-feed-alist'."
 
 (defun org-feed-goto-inbox-internal (file heading)
   "Find or create HEADING in FILE.
-Switch to that buffer, and return the position of that headline."
+Switch to that buffer, and return the position of that heading."
   (find-file file)
   (widen)
   (goto-char (point-min))
@@ -496,7 +496,7 @@ This will find DRAWER and extract the alist."
       (insert (pp-to-string status)))))
 
 (defun org-feed-add-items (pos entries)
-  "Add the formatted items to the headline as POS."
+  "Add the formatted items to the heading as POS."
   (let (entry level)
     (save-excursion
       (goto-char pos)
diff --git a/lisp/org-footnote.el b/lisp/org-footnote.el
index c8c4dae80..8c9842520 100644
--- a/lisp/org-footnote.el
+++ b/lisp/org-footnote.el
@@ -261,9 +261,9 @@ otherwise."
        ((eq type 'verse-block)
 	(and (>= (point) (org-element-property :contents-begin context))
 	     (< (point) (org-element-property :contents-end context))))
-       ;; In an headline or inlinetask, point must be either on the
+       ;; In an heading or inlinetask, point must be either on the
        ;; heading itself or on the blank lines below.
-       ((memq type '(headline inlinetask))
+       ((memq type '(heading inlinetask))
 	(or (not (org-at-heading-p))
 	    (and (save-excursion
 		   (beginning-of-line)
@@ -515,7 +515,7 @@ This function is meant to be used for fontification only."
 	       (save-excursion
 		 (end-of-line)
 		 ;; Footnotes definitions are separated by new
-		 ;; headlines, another footnote definition or 2 blank
+		 ;; headings, another footnote definition or 2 blank
 		 ;; lines.
 		 (let ((end (match-end 0))
 		       (lim (save-excursion
diff --git a/lisp/org-goto.el b/lisp/org-goto.el
index 940bb7345..f32152904 100644
--- a/lisp/org-goto.el
+++ b/lisp/org-goto.el
@@ -38,7 +38,7 @@
 (defconst org-goto-help
   "Browse buffer copy, to find location or copy text.%s
 RET=jump to location             C-g=quit and return to previous location
-\[Up]/[Down]=next/prev headline   TAB=cycle visibility   [/] org-occur")
+\[Up]/[Down]=next/prev heading   TAB=cycle visibility   [/] org-occur")
 
 
 \f
@@ -62,7 +62,7 @@ Allowed values are:
 
 `outline-path-completion'
 
-  Headlines in the current buffer are offered via completion.
+  Headings in the current buffer are offered via completion.
   This is the interface also used by the refile command."
   :group 'org-goto
   :type '(choice
@@ -137,7 +137,7 @@ When nil, you can use these keybindings to navigate the buffer:
   (define-key org-goto-local-auto-isearch-map [return] nil))
 
 (defun org-goto--local-search-headings (string bound noerror)
-  "Search and make sure that any matches are in headlines."
+  "Search and make sure that any matches are in headings."
   (catch 'return
     (while (if isearch-forward
                (search-forward string bound noerror)
@@ -254,7 +254,7 @@ into the tree in that copy, use org-occur and incremental search
 to find a location.  When pressing RET or `Q', the command
 returns to the original buffer in which the visibility is still
 unchanged.  After RET it will also jump to the location selected
-in the indirect buffer and expose the headline hierarchy above.
+in the indirect buffer and expose the heading hierarchy above.
 
 With a prefix argument, use the alternative interface: e.g., if
 `org-goto-interface' is `outline' use `outline-path-completion'."
diff --git a/lisp/org-id.el b/lisp/org-id.el
index 784f41ccd..ddf575415 100644
--- a/lisp/org-id.el
+++ b/lisp/org-id.el
@@ -110,7 +110,7 @@ use-existing
       Use existing ID, do not create one.
 
 nil   Never use an ID to make a link, instead link using a text search for
-      the headline text."
+      the heading text."
   :group 'org-link-store
   :group 'org-id
   :version "24.3"
@@ -297,7 +297,7 @@ In any case, the ID of the entry is returned."
 (defun org-id-get-with-outline-path-completion (&optional targets)
   "Use `outline-path-completion' to retrieve the ID of an entry.
 TARGETS may be a setting for `org-refile-targets' to define
-eligible headlines.  When omitted, all headlines in the current
+eligible headings.  When omitted, all headings in the current
 file are eligible.  This function returns the ID of the entry.
 If necessary, the ID is created."
   (let* ((org-refile-targets (or targets '((nil . (:maxlevel . 10)))))
diff --git a/lisp/org-indent.el b/lisp/org-indent.el
index ea7ea071b..5339fc9f0 100644
--- a/lisp/org-indent.el
+++ b/lisp/org-indent.el
@@ -71,9 +71,9 @@ Delay used when the buffer to initialize isn't current.")
 (defvar org-indent--initial-marker nil
   "Position of initialization before interrupt.
 This is used locally in each buffer being initialized.")
-(defvar org-indent-modified-headline-flag nil
-  "Non-nil means the last deletion operated on a headline.
-It is modified by `org-indent-notify-modified-headline'.")
+(defvar org-indent-modified-heading-flag nil
+  "Non-nil means the last deletion operated on a heading.
+It is modified by `org-indent-notify-modified-heading'.")
 
 
 (defcustom org-indent-boundary-char ?\s
@@ -110,16 +110,16 @@ useful to make it ever so slightly different."
   "Vector containing line prefixes strings for regular text.")
 
 (defvar org-indent--heading-line-prefixes nil
-  "Vector containing line prefix strings for headlines.")
+  "Vector containing line prefix strings for headings.")
 
 (defvar org-indent--inlinetask-line-prefixes nil
   "Vector containing line prefix strings for inline tasks.")
 
 (defconst org-indent--deepest-level 50
-  "Maximum theoretical headline depth.")
+  "Maximum theoretical heading depth.")
 
 (defun org-indent--compute-prefixes ()
-  "Compute prefix strings for regular text and headlines."
+  "Compute prefix strings for regular text and headings."
   (setq org-indent--heading-line-prefixes
 	(make-vector org-indent--deepest-level nil))
   (setq org-indent--inlinetask-line-prefixes
@@ -130,7 +130,7 @@ useful to make it ever so slightly different."
     (let ((indentation (if (<= n 1) 0
 			 (* (1- org-indent-indentation-per-level)
 			    (1- n)))))
-      ;; Headlines line prefixes.
+      ;; Headings line prefixes.
       (let ((heading-prefix (make-string indentation ?*)))
 	(aset org-indent--heading-line-prefixes
 	      n
@@ -175,8 +175,8 @@ during idle time."
     (setq-local org-indent--initial-marker (copy-marker 1))
     (when org-indent-mode-turns-off-org-adapt-indentation
       ;; Don't turn off `org-adapt-indentation' when its value is
-      ;; 'headline-data, just indent headline data specially.
-      (or (eq org-adapt-indentation 'headline-data)
+      ;; 'heading-data, just indent heading data specially.
+      (or (eq org-adapt-indentation 'heading-data)
 	  (setq-local org-adapt-indentation nil)))
     (when org-indent-mode-turns-on-hiding-stars
       (setq-local org-hide-leading-stars t))
@@ -192,7 +192,7 @@ during idle time."
 		    #'org-indent-remove-properties-from-string))
     (add-hook 'after-change-functions 'org-indent-refresh-maybe nil 'local)
     (add-hook 'before-change-functions
-	      'org-indent-notify-modified-headline nil 'local)
+	      'org-indent-notify-modified-heading nil 'local)
     (and font-lock-mode (org-restart-font-lock))
     (org-indent-remove-properties (point-min) (point-max))
     ;; Submit current buffer to initialize agent.  If it's the first
@@ -221,7 +221,7 @@ during idle time."
 		       #'org-indent-remove-properties-from-string))
     (remove-hook 'after-change-functions 'org-indent-refresh-maybe 'local)
     (remove-hook 'before-change-functions
-		 'org-indent-notify-modified-headline 'local)
+		 'org-indent-notify-modified-heading 'local)
     (org-with-wide-buffer
      (org-indent-remove-properties (point-min) (point-max)))
     (and font-lock-mode (org-restart-font-lock))
@@ -331,7 +331,7 @@ stopped."
 	    (level (or (org-current-level) 0))
 	    (time-limit (and delay (org-time-add nil delay))))
        ;; For each line, set `line-prefix' and `wrap-prefix'
-       ;; properties depending on the type of line (headline, inline
+       ;; properties depending on the type of line (heading, inline
        ;; task, item or other).
        (with-silent-modifications
 	 (while (and (<= (point) end) (not (eobp)))
@@ -348,12 +348,12 @@ stopped."
 		    (time-add (current-idle-time) org-indent-agent-resume-delay)
 		    nil #'org-indent-initialize-agent))
 	     (throw 'interrupt (point)))
-	    ;; Headline or inline task.
+	    ;; Heading or inline task.
 	    ((looking-at org-outline-regexp)
 	     (let* ((nstars (- (match-end 0) (match-beginning 0) 1))
 		    (type (or (looking-at-p limited-re) 'inlinetask)))
 	       (org-indent-set-line-properties nstars 0 type)
-	       ;; At an headline, define new value for LEVEL.
+	       ;; At an heading, define new value for LEVEL.
 	       (unless (eq type 'inlinetask) (setq level nstars))))
 	    ;; List item: `wrap-prefix' is set where body starts.
 	    ((org-at-item-p)
@@ -364,27 +364,27 @@ stopped."
 	     (org-indent-set-line-properties
 	      level
 	      (current-indentation)
-	      ;; When adapt indentation is 'headline-data, use
+	      ;; When adapt indentation is 'heading-data, use
 	      ;; `org-indent--heading-line-prefixes' for setting
-	      ;; headline data indentation.
-	      (and (eq org-adapt-indentation 'headline-data)
+	      ;; heading data indentation.
+	      (and (eq org-adapt-indentation 'heading-data)
 		   (or (org-at-planning-p)
 		       (org-at-clock-log-p)
 		       (looking-at-p org-property-start-re)
 		       (looking-at-p org-property-end-re)
 		       (looking-at-p org-property-re))))))))))))
 
-(defun org-indent-notify-modified-headline (beg end)
-  "Set `org-indent-modified-headline-flag' depending on context.
+(defun org-indent-notify-modified-heading (beg end)
+  "Set `org-indent-modified-heading-flag' depending on context.
 
 BEG and END are the positions of the beginning and end of the
 range of deleted text.
 
 This function is meant to be called by `before-change-functions'.
 Flag will be non-nil if command is going to modify or delete an
-headline."
+heading."
   (when org-indent-mode
-    (setq org-indent-modified-headline-flag
+    (setq org-indent-modified-heading-flag
 	  (org-with-wide-buffer
 	   (goto-char beg)
 	   (save-match-data
@@ -400,10 +400,10 @@ range of inserted text.  DUMMY is an unused argument.
 This function is meant to be called by `after-change-functions'."
   (when org-indent-mode
     (save-match-data
-      ;; If a headline was modified or inserted, set properties until
-      ;; next headline.
+      ;; If a heading was modified or inserted, set properties until
+      ;; next heading.
       (org-with-wide-buffer
-       (if (or org-indent-modified-headline-flag
+       (if (or org-indent-modified-heading-flag
 	       (save-excursion
 		 (goto-char beg)
 		 (beginning-of-line)
@@ -413,7 +413,7 @@ This function is meant to be called by `after-change-functions'."
 			(goto-char end)
 			(org-with-limited-levels (outline-next-heading))
 			(point))))
-	     (setq org-indent-modified-headline-flag nil)
+	     (setq org-indent-modified-heading-flag nil)
 	     (org-indent-add-properties beg end))
 	 ;; Otherwise, only set properties on modified area.
 	 (org-indent-add-properties beg end))))))
diff --git a/lisp/org-inlinetask.el b/lisp/org-inlinetask.el
index f19353bc8..b7a63094a 100644
--- a/lisp/org-inlinetask.el
+++ b/lisp/org-inlinetask.el
@@ -40,7 +40,7 @@
 ;; parent into children.
 ;;
 ;; Special fontification of inline tasks, so that they can be
-;; immediately recognized.  From the stars of the headline, only last
+;; immediately recognized.  From the stars of the heading, only last
 ;; two will be visible, the others will be hidden using the `org-hide'
 ;; face.
 ;;
@@ -49,7 +49,7 @@
 ;;
 ;; If you need to have a time planning line (DEADLINE etc), drawers,
 ;; for example LOGBOOK of PROPERTIES, or even normal text as part of
-;; the inline task, you must add an "END" headline with the same
+;; the inline task, you must add an "END" heading with the same
 ;; number of stars.
 ;;
 ;; As an example, here are two valid inline tasks:
@@ -86,7 +86,7 @@
   :group 'org-structure)
 
 (defcustom org-inlinetask-min-level 15
-  "Minimum level a headline must have before it is treated as an inline task.
+  "Minimum level a heading must have before it is treated as an inline task.
 Don't set it to something higher than `29' or clocking will break since this
 is the hardcoded maximum number of stars `org-clock-sum' will work with.
 
@@ -277,7 +277,7 @@ If the task has an end part, also demote it."
 (defvar org-indent-indentation-per-level) ; defined in org-indent.el
 
 (defface org-inlinetask '((t :inherit shadow))
-  "Face for inlinetask headlines."
+  "Face for inlinetask headings."
   :group 'org-faces)
 
 (defun org-inlinetask-fontify (limit)
diff --git a/lisp/org-keys.el b/lisp/org-keys.el
index 8f25bda2e..2991d62e2 100644
--- a/lisp/org-keys.el
+++ b/lisp/org-keys.el
@@ -674,19 +674,19 @@ COMMANDS is a list of alternating OLDDEF NEWDEF command names."
 ;;; Speed keys
 
 (defcustom org-use-speed-commands nil
-  "Non-nil means activate single letter commands at beginning of a headline.
+  "Non-nil means activate single letter commands at beginning of a heading.
 This may also be a function to test for appropriate locations where speed
 commands should be active.
 
 For example, to activate speed commands when the point is on any
-star at the beginning of the headline, you can do this:
+star at the beginning of the heading, you can do this:
 
   (setq org-use-speed-commands
       (lambda () (and (looking-at org-outline-regexp) (looking-back \"^\\**\"))))"
   :group 'org-structure
   :type '(choice
 	  (const :tag "Never" nil)
-	  (const :tag "At beginning of headline stars" t)
+	  (const :tag "At beginning of heading stars" t)
 	  (function)))
 
 (defcustom org-speed-command-hook
@@ -770,14 +770,14 @@ The cdr is either a command to be called interactively, a
 function to be called, or a form to be evaluated.
 
 An entry that is just a list with a single string will be
-interpreted as a descriptive headline that will be added when
+interpreted as a descriptive heading that will be added when
 listing the speed commands in the Help buffer using the `?' speed
 command."
   :group 'org-structure
   :package-version '(Org . "9.5")
   :type '(repeat :value ("k" . ignore)
 		 (choice :value ("k" . ignore)
-			 (list :tag "Descriptive Headline" (string :tag "Headline"))
+			 (list :tag "Descriptive Heading" (string :tag "Heading"))
 			 (cons :tag "Letter and Command"
 			       (string :tag "Command letter")
 			       (choice
@@ -820,7 +820,7 @@ command."
     (setq truncate-lines t)))
 
 (defun org-speed-move-safe (cmd)
-  "Execute CMD, but make sure that the cursor always ends up in a headline.
+  "Execute CMD, but make sure that the cursor always ends up in a heading.
 If not, return to the original position and throw an error."
   (interactive)
   (let ((pos (point)))
diff --git a/lisp/org-lint.el b/lisp/org-lint.el
index 003fee0fa..a3fd2ee6d 100644
--- a/lisp/org-lint.el
+++ b/lisp/org-lint.el
@@ -544,14 +544,14 @@ Use :header-args: instead"
   (org-element-map ast 'drawer
     (lambda (d)
       (when (equal (org-element-property :drawer-name d) "PROPERTIES")
-	(let ((headline? (org-element-lineage d '(headline)))
+	(let ((heading? (org-element-lineage d '(heading)))
 	      (before
 	       (mapcar #'org-element-type
 		       (assq d (reverse (org-element-contents
 					 (org-element-property :parent d)))))))
 	  (list (org-element-property :post-affiliated d)
-		(if (or (and headline? (member before '(nil (planning))))
-			(and (null headline?) (member before '(nil (comment)))))
+		(if (or (and heading? (member before '(nil (planning))))
+			(and (null heading?) (member before '(nil (comment)))))
 		    "Incorrect contents for PROPERTIES drawer"
 		  "Incorrect location for PROPERTIES drawer")))))))
 
@@ -625,7 +625,7 @@ in description"
 		(let* ((visiting (if file (find-buffer-visiting file)
 				   (current-buffer)))
 		       (buffer (or visiting (find-file-noselect file)))
-		       (org-link-search-must-match-exact-headline t))
+		       (org-link-search-must-match-exact-heading t))
 		  (unwind-protect
 		      (with-current-buffer buffer
 			(when (and search
@@ -913,7 +913,7 @@ Use \"export %s\" instead"
     reports))
 
 (defun org-lint-extraneous-element-in-footnote-section (ast)
-  (org-element-map ast 'headline
+  (org-element-map ast 'heading
     (lambda (h)
       (and (org-element-property :footnote-section-p h)
 	   (org-element-map (org-element-contents h)
@@ -923,14 +923,14 @@ Use \"export %s\" instead"
 				    property-drawer section)))
 		org-element-all-elements)
 	     (lambda (e)
-	       (not (and (eq (org-element-type e) 'headline)
+	       (not (and (eq (org-element-type e) 'heading)
 			 (org-element-property :commentedp e))))
 	     nil t '(footnote-definition property-drawer))
 	   (list (org-element-property :begin h)
 		 "Extraneous elements in footnote section are not exported")))))
 
 (defun org-lint-quote-section (ast)
-  (org-element-map ast '(headline inlinetask)
+  (org-element-map ast '(heading inlinetask)
     (lambda (h)
       (let ((title (org-element-property :raw-value h)))
 	(and (or (string-prefix-p "QUOTE " title)
@@ -1115,7 +1115,7 @@ Use \"export %s\" instead"
     reports))
 
 (defun org-lint-spurious-colons (ast)
-  (org-element-map ast '(headline inlinetask)
+  (org-element-map ast '(heading inlinetask)
     (lambda (h)
       (when (member "" (org-element-property :tags h))
 	(list (org-element-property :begin h)
diff --git a/lisp/org-list.el b/lisp/org-list.el
index d2ce1297c..cc86333b9 100644
--- a/lisp/org-list.el
+++ b/lisp/org-list.el
@@ -91,7 +91,7 @@
 (defvar org-drawer-regexp)
 (defvar org-element-all-objects)
 (defvar org-inhibit-startup)
-(defvar org-loop-over-headlines-in-active-region)
+(defvar org-loop-over-headings-in-active-region)
 (defvar org-odd-levels-only)
 (defvar org-outline-regexp-bol)
 (defvar org-scheduled-string)
@@ -2353,7 +2353,7 @@ When there is an active region, toggle status or presence of the
 first checkbox there, and make every item inside have the same
 status or presence, respectively.
 
-If point is on a headline, apply this to all checkbox items in
+If point is on a heading, apply this to all checkbox items in
 the text below the heading, taking as reference the first item in
 subtree, ignoring planning line and any drawer following it."
   (interactive "P")
@@ -2884,7 +2884,7 @@ a function to be called with point at the beginning of the
 record.  It must return a value that is compatible with COMPARE-FUNC,
 the function used to compare entries.
 
-Sorting is done against the visible part of the headlines, it
+Sorting is done against the visible part of the headings, it
 ignores hidden links.
 
 A non-nil value for INTERACTIVE? is used to signal that this
@@ -2983,8 +2983,8 @@ function is being called interactively."
   "Convert headings or normal lines to items, items to normal lines.
 If there is no active region, only the current line is considered.
 
-If the first non blank line in the region is a headline, convert
-all headlines to items, shifting text accordingly.
+If the first non blank line in the region is a heading, convert
+all headings to items, shifting text accordingly.
 
 If it is an item, convert all items to normal lines.
 
@@ -3052,7 +3052,7 @@ With a prefix argument ARG, change the region in a single item."
 	;; Case 2. Start at an heading: convert to items.
 	((org-at-heading-p)
 	 ;; Remove metadata
-	 (let (org-loop-over-headlines-in-active-region)
+	 (let (org-loop-over-headings-in-active-region)
 	   (org-list--delete-metadata))
 	 (let* ((bul (org-list-bullet-string "-"))
 		(bul-len (length bul))
@@ -3070,12 +3070,12 @@ With a prefix argument ARG, change the region in a single item."
 	     (let* ((level (org-reduced-level (org-outline-level)))
 		    (delta (max 0 (- level ref-level)))
 		    (todo-state (org-get-todo-state)))
-	       ;; If current headline is less indented than the first
+	       ;; If current heading is less indented than the first
 	       ;; one, set it as reference, in order to preserve
 	       ;; subtrees.
 	       (when (< level ref-level) (setq ref-level level))
 	       ;; Remove metadata
-	       (let (org-loop-over-headlines-in-active-region)
+	       (let (org-loop-over-headings-in-active-region)
 		 (org-list--delete-metadata))
 	       ;; Remove stars and TODO keyword.
 	       (let ((case-fold-search nil)) (looking-at org-todo-line-regexp))
diff --git a/lisp/org-macro.el b/lisp/org-macro.el
index c3fbce172..695f3a5c4 100644
--- a/lisp/org-macro.el
+++ b/lisp/org-macro.el
@@ -68,7 +68,7 @@
 (declare-function vc-call "vc-hooks" (fun file &rest args) t)
 (declare-function vc-exec-after "vc-dispatcher" (code))
 
-(defvar org-link-search-must-match-exact-headline)
+(defvar org-link-search-must-match-exact-heading)
 
 ;;; Variables
 
@@ -320,7 +320,7 @@ by `org-link-search', or the empty string."
   (save-excursion
     (when (org-string-nw-p location)
       (condition-case _
-	  (let ((org-link-search-must-match-exact-headline t))
+	  (let ((org-link-search-must-match-exact-heading t))
 	    (org-link-search location nil t))
         (error
 	 (error "Macro property failed: cannot find location %s" location))))
diff --git a/lisp/org-macs.el b/lisp/org-macs.el
index 77458db96..636f10e56 100644
--- a/lisp/org-macs.el
+++ b/lisp/org-macs.el
@@ -1130,7 +1130,7 @@ the value in cadr."
   "Non-nil if the character after POS is invisible.
 If POS is nil, use `point' instead.  When optional argument
 FOLDING-ONLY is non-nil, only consider invisible parts due to
-folding of a headline, a block or a drawer, i.e., not because of
+folding of a heading, a block or a drawer, i.e., not because of
 fontification."
   (let ((value (get-char-property (or pos (point)) 'invisible)))
     (cond ((not value) nil)
diff --git a/lisp/org-mobile.el b/lisp/org-mobile.el
index e51258af0..f34724cbc 100644
--- a/lisp/org-mobile.el
+++ b/lisp/org-mobile.el
@@ -248,7 +248,7 @@ colon will be passed to the action function as the first argument
 variable.
 
 The car of each elements of the alist is an actions string.  The
-cdr is a function that is called with the cursor on the headline
+cdr is a function that is called with the cursor on the heading
 of that entry.  It should accept three arguments, the :data part,
 the old and new values for the entry.")
 
diff --git a/lisp/org-mouse.el b/lisp/org-mouse.el
index b31867033..fecf5a85b 100644
--- a/lisp/org-mouse.el
+++ b/lisp/org-mouse.el
@@ -31,7 +31,7 @@
 ;; * subtree expansion/collapse (org-cycle) with the left mouse button
 ;; * several context menus on the right mouse button:
 ;;    + general text
-;;    + headlines
+;;    + headings
 ;;    + timestamps
 ;;    + priorities
 ;;    + links
@@ -177,7 +177,7 @@ Changing this variable requires a restart of Emacs to get activated."
 	      (const :tag "Mouse-3 shows context menu" context-menu)
 	      (const :tag "C-mouse-1 and mouse-3 move trees" move-tree)
 	      (const :tag "S-mouse-2 and drag-mouse-3 yank link" yank-link)
-	      (const :tag "Activate headline stars" activate-stars)
+	      (const :tag "Activate heading stars" activate-stars)
 	      (const :tag "Activate item bullets" activate-bullets)
 	      (const :tag "Activate checkboxes" activate-checkboxes)))
 
@@ -186,8 +186,8 @@ Changing this variable requires a restart of Emacs to get activated."
   (beginning-of-line)
   (re-search-forward regexp (point-at-eol) t))
 
-(defun org-mouse-end-headline ()
-  "Go to the end of current headline (ignoring tags)."
+(defun org-mouse-end-heading ()
+  "Go to the end of current heading (ignoring tags)."
   (interactive)
   (end-of-line)
   (skip-chars-backward "\t ")
@@ -354,8 +354,8 @@ nor a function, elements of KEYWORDS are used directly."
 	:style radio
 	:selected ,(not (member (match-string group) keywords))]))))
 
-(defun org-mouse-show-headlines ()
-  "Change the visibility of the current org buffer to only show headlines."
+(defun org-mouse-show-headings ()
+  "Change the visibility of the current org buffer to only show headings."
   (interactive)
   (let ((this-command 'org-cycle)
 	(last-command 'org-cycle)
@@ -364,13 +364,13 @@ nor a function, elements of KEYWORDS are used directly."
     (org-cycle '(4))))
 
 (defun org-mouse-show-overview ()
-  "Change visibility of current org buffer to first-level headlines only."
+  "Change visibility of current org buffer to first-level headings only."
   (interactive)
   (let ((org-cycle-global-status nil))
     (org-cycle '(4))))
 
 (defun org-mouse-set-priority (priority)
-  "Set the priority of the current headline to PRIORITY."
+  "Set the priority of the current heading to PRIORITY."
   (org-priority priority))
 
 (defvar org-mouse-priority-regexp "\\[#\\([A-Z]\\)\\]"
@@ -379,8 +379,8 @@ Differs from `org-priority-regexp' in that it doesn't contain the
 leading `.*?'.")
 
 (defun org-mouse-get-priority (&optional default)
-  "Return the priority of the current headline.
-DEFAULT is returned if no priority is given in the headline."
+  "Return the priority of the current heading.
+DEFAULT is returned if no priority is given in the heading."
   (save-excursion
     (if (org-mouse-re-search-line org-mouse-priority-regexp)
 	(match-string 1)
@@ -485,7 +485,7 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
   (popup-menu
    `("Main Menu"
      ["Show Overview" org-mouse-show-overview t]
-     ["Show Headlines" org-mouse-show-headlines t]
+     ["Show Headings" org-mouse-show-headings t]
      ["Show All" org-show-all t]
      ["Remove Highlights" org-remove-occur-highlights
       :visible org-occur-highlights]
@@ -786,10 +786,10 @@ This means, between the beginning of line and the point."
 	  (setq org-table-formula-debug (not org-table-formula-debug))
 	  :style toggle :selected org-table-formula-debug]
 	 )))
-     ((and (assq :headline contextlist) (not (eolp)))
+     ((and (assq :heading contextlist) (not (eolp)))
       (let ((priority (org-mouse-get-priority t)))
 	(popup-menu
-	 `("Headline Menu"
+	 `("Heading Menu"
 	   ("Tags and Priorities"
 	    ,@(org-mouse-keyword-menu
 	       (org-mouse-priority-list)
@@ -809,15 +809,15 @@ This means, between the beginning of line and the point."
 	   ,@(if org-mouse-direct '("--") nil)
 	   ["New Heading" org-mouse-insert-heading :visible org-mouse-direct]
 	   ["Set Deadline"
-	    (progn (org-mouse-end-headline) (insert " ") (org-deadline))
+	    (progn (org-mouse-end-heading) (insert " ") (org-deadline))
 	    :active (not (save-excursion
 			   (org-mouse-re-search-line org-deadline-regexp)))]
 	   ["Schedule Task"
-	    (progn (org-mouse-end-headline) (insert " ") (org-schedule))
+	    (progn (org-mouse-end-heading) (insert " ") (org-schedule))
 	    :active (not (save-excursion
 			   (org-mouse-re-search-line org-scheduled-regexp)))]
 	   ["Insert Timestamp"
-	    (progn (org-mouse-end-headline) (insert " ") (org-time-stamp nil)) t]
+	    (progn (org-mouse-end-heading) (insert " ") (org-time-stamp nil)) t]
 					;	 ["Timestamp (inactive)" org-time-stamp-inactive t]
 	   "--"
 	   ["Archive Subtree" org-archive-subtree]
@@ -897,7 +897,7 @@ This means, between the beginning of line and the point."
             (defadvice org-open-at-point (around org-mouse-open-at-point activate)
               (let ((context (org-context)))
                 (cond
-                 ((assq :headline-stars context) (org-cycle))
+                 ((assq :heading-stars context) (org-cycle))
                  ((assq :checkbox context) (org-toggle-checkbox))
                  ((assq :item-bullet context)
                   (let ((org-cycle-include-plain-lists t)) (org-cycle)))
diff --git a/lisp/org-num.el b/lisp/org-num.el
index 46f8e7cd7..44ec172d3 100644
--- a/lisp/org-num.el
+++ b/lisp/org-num.el
@@ -1,4 +1,4 @@
-;;; org-num.el --- Dynamic Headlines Numbering  -*- lexical-binding: t; -*-
+;;; org-num.el --- Dynamic Headings Numbering  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
@@ -22,7 +22,7 @@
 
 ;;; Commentary:
 
-;; This library provides dynamic numbering for Org headlines.  Use
+;; This library provides dynamic numbering for Org headings.  Use
 ;;
 ;;     <M-x org-num-mode>
 ;;
@@ -41,10 +41,10 @@
 ;; position, of overlays in `org-num--overlays'.  These overlays are
 ;; marked with the `org-num' property set to a non-nil value.
 ;;
-;; Overlays store the level of the headline in the `level' property,
+;; Overlays store the level of the heading in the `level' property,
 ;; and the face used for the numbering in `numbering-face'.
 ;;
-;; The `skip' property is set to t when the corresponding headline has
+;; The `skip' property is set to t when the corresponding heading has
 ;; some characteristic -- e.g., a node property, or a tag -- that
 ;; prevents it from being numbered.
 ;;
@@ -82,12 +82,12 @@
 
 (defcustom org-num-face nil
   "Face to use for numbering.
-When nil, use the same face as the headline.  This value is
+When nil, use the same face as the heading.  This value is
 ignored if `org-num-format-function' specifies a face for its
 output."
   :group 'org-appearance
   :package-version '(Org . "9.3")
-  :type '(choice (const :tag "Like the headline" nil)
+  :type '(choice (const :tag "Like the heading" nil)
                  (face :tag "Use face"))
   :safe (lambda (val) (or (null val) (facep val))))
 
@@ -103,8 +103,8 @@ Any `face' text property on the returned string overrides
   :safe nil)
 
 (defcustom org-num-max-level nil
-  "Level below which headlines are not numbered.
-When set to nil, all headlines are numbered."
+  "Level below which headings are not numbered.
+When set to nil, all headings are numbered."
   :group 'org-appearance
   :package-version '(Org . "9.3")
   :type '(choice (const :tag "Number everything" nil)
@@ -150,23 +150,23 @@ control tag inheritance."
 ;;; Internal Variables
 
 (defconst org-num--comment-re (format "\\`%s\\(?: \\|$\\)" org-comment-string)
-  "Regexp matching a COMMENT keyword at headline beginning.")
+  "Regexp matching a COMMENT keyword at heading beginning.")
 
 (defvar-local org-num--overlays nil
   "Ordered list of overlays used for numbering outlines.")
 
 (defvar-local org-num--skip-level nil
-  "Level below which headlines from current tree are not numbered.
-When nil, all headlines are numbered.  It is used to handle
+  "Level below which headings from current tree are not numbered.
+When nil, all headings are numbered.  It is used to handle
 inheritance of no-numbering attributes.")
 
 (defvar-local org-num--numbering nil
-  "Current headline numbering.
+  "Current heading numbering.
 A numbering is a list of integers, in reverse order.  So numbering
-for headline \"1.2.3\" is (3 2 1).")
+for heading \"1.2.3\" is (3 2 1).")
 
 (defvar-local org-num--missing-overlay nil
-  "Buffer position signaling a headline without an overlay.")
+  "Buffer position signaling a heading without an overlay.")
 
 (defvar-local org-num--invalid-flag nil
   "Non-nil means an overlay became invalid since last update.")
@@ -174,8 +174,8 @@ for headline \"1.2.3\" is (3 2 1).")
 \f
 ;;; Internal Functions
 
-(defsubst org-num--headline-regexp ()
-  "Return regexp matching a numbered headline."
+(defsubst org-num--heading-regexp ()
+  "Return regexp matching a numbered heading."
   (if (null org-num-max-level) (org-with-limited-levels org-outline-regexp-bol)
     (format "^\\*\\{1,%d\\} "
             (if org-odd-levels-only (1- (* 2 org-num-max-level))
@@ -201,13 +201,13 @@ Update `org-num--invalid-flag' accordingly."
   (setq org-num--overlays nil))
 
 (defun org-num--make-overlay (numbering level skip)
-  "Return overlay for numbering headline at point.
+  "Return overlay for numbering heading at point.
 
 NUMBERING is the numbering to use, as a list of integers, or nil
 if nothing should be displayed.  LEVEL is the level of the
-headline.  SKIP is its skip value.
+heading.  SKIP is its skip value.
 
-Assume point is at a headline."
+Assume point is at a heading."
   (let ((after-edit-functions
          (list (lambda (o &rest _) (org-num--invalidate-overlay o))))
         (o (save-excursion
@@ -220,7 +220,7 @@ Assume point is at a headline."
     (overlay-put o 'numbering-face
                  (or org-num-face
                      ;; Compute face that would be used at the
-                     ;; headline.  We cannot extract it from the
+                     ;; heading.  We cannot extract it from the
                      ;; buffer: at the time the overlay is created,
                      ;; Font Lock has not proceeded yet.
                      (nth (if org-cycle-level-faces
@@ -243,8 +243,8 @@ nil if nothing should be displayed.  Assume OVERLAY is valid."
     (overlay-put overlay 'after-string display)))
 
 (defun org-num--skip-value ()
-  "Return skip value for headline at point.
-Value is t when headline should not be numbered, and nil
+  "Return skip value for heading at point.
+Value is t when heading should not be numbered, and nil
 otherwise."
   (org-match-line org-complex-heading-regexp)
   (let ((title (match-string 4))
@@ -268,9 +268,9 @@ otherwise."
              t))))
 
 (defun org-num--current-numbering (level skip)
-  "Return numbering for current headline.
-LEVEL is headline's level, and SKIP its skip value.  Return nil
-if headline should be skipped."
+  "Return numbering for current heading.
+LEVEL is heading's level, and SKIP its skip value.  Return nil
+if heading should be skipped."
   (cond
    ;; Skipped by inheritance.
    ((and org-num--skip-level (> level org-num--skip-level)) nil)
@@ -283,7 +283,7 @@ if headline should be skipped."
     (let ((last-level (length org-num--numbering)))
       (setq org-num--numbering
             (cond
-             ;; First headline : nil => (1), or (1 0)...
+             ;; First heading : nil => (1), or (1 0)...
              ((null org-num--numbering) (cons 1 (make-list (1- level) 0)))
              ;; Sibling: (1 1) => (2 1).
              ((= level last-level)
@@ -303,16 +303,16 @@ When START or END are nil, use buffer boundaries.  Narrowing, if
 any, is ignored.  Return the list of created overlays, newest
 first."
   (org-with-point-at (or start 1)
-    ;; Do not match headline starting at START.
+    ;; Do not match heading starting at START.
     (when start (end-of-line))
-    (let ((regexp (org-num--headline-regexp))
+    (let ((regexp (org-num--heading-regexp))
           (new nil))
       (while (re-search-forward regexp end t)
         (let* ((level (org-reduced-level
                        (- (match-end 0) (match-beginning 0) 1)))
                (skip (org-num--skip-value))
                (numbering (org-num--current-numbering level skip)))
-          ;; Apply numbering to current headline.  Store overlay for
+          ;; Apply numbering to current heading.  Store overlay for
           ;; the return value.
           (push (org-num--make-overlay numbering level skip)
                 new)))
@@ -391,7 +391,7 @@ See this variable for the meaning of BEG and END."
   (setq org-num--missing-overlay nil)
   (save-match-data
     (org-with-point-at beg
-      (let ((regexp (org-num--headline-regexp)))
+      (let ((regexp (org-num--heading-regexp)))
         ;; At this point, directly altered overlays between BEG and
         ;; END are marked as invalid and will trigger a full update.
         ;; However, there are still two cases to handle.
@@ -400,16 +400,16 @@ See this variable for the meaning of BEG and END."
         ;; to an indirect change.  That happens when the skip value --
         ;; see `org-num--skip-value' -- of the heading BEG belongs to
         ;; is altered, or when deleting the newline character right
-        ;; before the next headline.
+        ;; before the next heading.
         (save-excursion
-          ;; Bail out if we're before first headline or within
-          ;; a headline too deep to be numbered.
+          ;; Bail out if we're before first heading or within
+          ;; a heading too deep to be numbered.
           (when (and (org-with-limited-levels
                       (ignore-errors (org-back-to-heading t)))
                      (looking-at regexp))
             (pcase (get-char-property-and-overlay (point) 'org-num)
               (`(nil)
-               ;; At a headline, without a numbering overlay: change
+               ;; At a heading, without a numbering overlay: change
                ;; just created one.  Mark it for parsing.
                (setq org-num--missing-overlay (point)))
               (`(t . ,o)
@@ -427,7 +427,7 @@ See this variable for the meaning of BEG and END."
             (_ nil)))
         ;; Second, if nothing is marked as invalid, and therefore if
         ;; no full update is due so far, changes may still have
-        ;; created new headlines, at BEG -- which is actually handled
+        ;; created new headings, at BEG -- which is actually handled
         ;; by the previous phase --, or, in case of a multi-line
         ;; insertion, at END, or in-between.
         (unless (or org-num--invalid-flag
@@ -435,10 +435,10 @@ See this variable for the meaning of BEG and END."
                     (<= end (line-end-position))) ;single line change
           (forward-line)
           (when (or (re-search-forward regexp end 'move)
-                    ;; Check if change created a headline after END.
+                    ;; Check if change created a heading after END.
                     (progn (skip-chars-backward "*") (looking-at regexp)))
             (setq org-num--missing-overlay (line-beginning-position))))))
-    ;; Update numbering only if a headline was altered or created.
+    ;; Update numbering only if a heading was altered or created.
     (when (or org-num--missing-overlay org-num--invalid-flag)
       (org-num--update))))
 
@@ -453,12 +453,12 @@ NUMBERING is a list of numbers."
 
 ;;;###autoload
 (define-minor-mode org-num-mode
-  "Dynamic numbering of headlines in an Org buffer."
+  "Dynamic numbering of headings in an Org buffer."
   :lighter " o#"
   (cond
    (org-num-mode
     (unless (derived-mode-p 'org-mode)
-      (user-error "Cannot activate headline numbering outside Org mode"))
+      (user-error "Cannot activate heading numbering outside Org mode"))
     (setq org-num--numbering nil)
     (setq org-num--overlays (nreverse (org-num--number-region nil nil)))
     (add-hook 'after-change-functions #'org-num--verify nil t)
diff --git a/lisp/org-pcomplete.el b/lisp/org-pcomplete.el
index 171167bfb..af5e08cd6 100644
--- a/lisp/org-pcomplete.el
+++ b/lisp/org-pcomplete.el
@@ -107,14 +107,14 @@ The return value is a string naming the thing at point."
 		(skip-chars-backward "a-zA-Z")
 		(char-before)))
       (cons "tex" nil))
-     ;; Tags on a headline.
+     ;; Tags on a heading.
      ((and (org-match-line
 	    (format "\\*+ \\(?:.+? \\)?\\(:\\)\\(\\(?::\\|%s\\)+\\)?[ \t]*$"
 		    org-tag-re))
 	   (or (org-point-in-group (point) 2)
 	       (= (point) (match-end 1))))
       (cons "tag" nil))
-     ;; TODO keywords on an empty headline.
+     ;; TODO keywords on an empty heading.
      ((and (string-match "^\\*+ +\\S-*$" line-to-here)
 	   (looking-at-p "[ \t]*$"))
       (cons "todo" nil))
diff --git a/lisp/org-refile.el b/lisp/org-refile.el
index 678759e10..41513ddf7 100644
--- a/lisp/org-refile.el
+++ b/lisp/org-refile.el
@@ -74,16 +74,16 @@ This is a list of cons cells.  Each cell contains:
 - A specification of how to find candidate refile targets.  This may be
   any of:
   - a cons cell (:tag . \"TAG\") to identify refile targets by a tag.
-    This tag has to be present in all target headlines, inheritance will
+    This tag has to be present in all target headings, inheritance will
     not be considered.
   - a cons cell (:todo . \"KEYWORD\") to identify refile targets by
     todo keyword.
   - a cons cell (:regexp . \"REGEXP\") with a regular expression matching
-    headlines that are refiling targets.
-  - a cons cell (:level . N).  Any headline of level N is considered a target.
+    headings that are refiling targets.
+  - a cons cell (:level . N).  Any heading of level N is considered a target.
     Note that, when `org-odd-levels-only' is set, level corresponds to
     order in hierarchy, not to the number of stars.
-  - a cons cell (:maxlevel . N).  Any headline with level <= N is a target.
+  - a cons cell (:maxlevel . N).  Any heading with level <= N is a target.
     Note that, when `org-odd-levels-only' is set, level corresponds to
     order in hierarchy, not to the number of stars.
 
@@ -92,9 +92,9 @@ The union of these sets is presented (with completion) to
 the user by `org-refile'.
 
 You can set the variable `org-refile-target-verify-function' to a function
-to verify each headline found by the simple criteria above.
+to verify each heading found by the simple criteria above.
 
-When this variable is nil, all top-level headlines in the current buffer
+When this variable is nil, all top-level headings in the current buffer
 are used, equivalent to the value `((nil . (:level . 1))'."
   :group 'org-refile
   :type '(repeat
@@ -103,7 +103,7 @@ are used, equivalent to the value `((nil . (:level . 1))'."
 		   (const :tag "All agenda files" org-agenda-files)
 		   (const :tag "Current buffer" nil)
 		   (function) (variable) (file))
-	   (choice :tag "Identify target headline by"
+	   (choice :tag "Identify target heading by"
 		   (cons :tag "Specific tag" (const :value :tag) (string))
 		   (cons :tag "TODO keyword" (const :value :todo) (string))
 		   (cons :tag "Regular expression" (const :value :regexp) (regexp))
@@ -111,10 +111,10 @@ are used, equivalent to the value `((nil . (:level . 1))'."
 		   (cons :tag "Max Level number" (const :value :maxlevel) (integer))))))
 
 (defcustom org-refile-target-verify-function nil
-  "Function to verify if the headline at point should be a refile target.
+  "Function to verify if the heading at point should be a refile target.
 The function will be called without arguments, with point at the
-beginning of the headline.  It should return t and leave point
-where it is if the headline is a valid target for refiling.
+beginning of the heading.  It should return t and leave point
+where it is if the heading is a valid target for refiling.
 
 If the target should not be selected, the function must return nil.
 In addition to this, it may move point to a place from where the search
@@ -143,7 +143,7 @@ if you find that easier, \
 
 (defcustom org-refile-use-outline-path nil
   "Non-nil means provide refile targets as paths.
-So a level 3 headline will be available as level1/level2/level3.
+So a level 3 heading will be available as level1/level2/level3.
 
 When the value is `file', also include the file name (without directory)
 into the path.  In this case, you can also stop the completion after
@@ -164,7 +164,7 @@ When `buffer-name', use the buffer name."
   "Non-nil means complete the outline path in hierarchical steps.
 When Org uses the refile interface to select an outline path (see
 `org-refile-use-outline-path'), the completion of the path can be
-done in a single go, or it can be done in steps down the headline
+done in a single go, or it can be done in steps down the heading
 hierarchy.  Going in steps is probably the best if you do not use
 a special completion package like `ido' or `icicles'.  However,
 when using these packages, going in one step can be very fast,
@@ -195,7 +195,7 @@ heading."
 By default `org-refile' doesn't allow refiling regions if they
 don't contain a set of subtrees, but it might be convenient to
 do so sometimes: in that case, the first line of the region is
-converted to a headline before refiling."
+converted to a heading before refiling."
   :group 'org-refile
   :version "24.1"
   :type 'boolean)
@@ -430,12 +430,12 @@ RFLOC can be a refile location obtained in a different way.  It
 should be a list with the following 4 elements:
 
 1. Name - an identifier for the refile location, typically the
-headline text
+heading text
 2. File - the file the refile location is in
 3. nil - used for generating refile location candidates, not
 needed when passing RFLOC
 4. Position - the position in the specified file of the
-headline to refile under
+heading to refile under
 
 MSG is a string to replace \"Refile\" in the default prompt with
 another verb.  E.g. `org-refile-copy' sets this parameter to \"Copy\".
@@ -550,7 +550,7 @@ prefix argument (`C-u C-u C-u C-c C-w')."
 	       (org-paste-subtree level nil nil t)
 	       ;; Record information, according to `org-log-refile'.
 	       ;; Do not prompt for a note when refiling multiple
-	       ;; headlines, however.  Simply add a time stamp.
+	       ;; headings, however.  Simply add a time stamp.
 	       (cond
 		((not org-log-refile))
 		(regionp
@@ -561,7 +561,7 @@ prefix argument (`C-u C-u C-u C-c C-w')."
 		(t
 		 (org-add-log-setup 'refile nil nil org-log-refile)))
 	       (and org-auto-align-tags
-		    (let ((org-loop-over-headlines-in-active-region nil))
+		    (let ((org-loop-over-headings-in-active-region nil))
 		      (org-align-tags)))
 	       (let ((bookmark-name (plist-get org-bookmark-names-plist
 					       :last-refile)))
@@ -677,7 +677,7 @@ this function appends the default value from
 	(user-error "Invalid target location")))))
 
 (defun org-refile-check-position (refile-pointer)
-  "Check if the refile pointer matches the headline to which it points."
+  "Check if the refile pointer matches the heading to which it points."
   (let* ((file (nth 1 refile-pointer))
 	 (re (nth 2 refile-pointer))
 	 (pos (nth 3 refile-pointer))
diff --git a/lisp/org.el b/lisp/org.el
index eca12a5e7..e26c98d4a 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -100,15 +100,15 @@
 ;; `org-outline-regexp' ought to be a defconst but is let-bound in
 ;; some places -- e.g. see the macro `org-with-limited-levels'.
 (defvar org-outline-regexp "\\*+ "
-  "Regexp to match Org headlines.")
+  "Regexp to match Org headings.")
 
 (defvar org-outline-regexp-bol "^\\*+ "
-  "Regexp to match Org headlines.
+  "Regexp to match Org headings.
 This is similar to `org-outline-regexp' but additionally makes
 sure that we are at the beginning of the line.")
 
 (defvar org-heading-regexp "^\\(\\*+\\)\\(?: +\\(.*?\\)\\)?[ \t]*$"
-  "Matches a headline, putting stars and text into groups.
+  "Matches a heading, putting stars and text into groups.
 Stars are put in group 1 and the trimmed body in group 2.")
 
 (declare-function calendar-check-holidays "holidays" (date))
@@ -141,7 +141,7 @@ Stars are put in group 1 and the trimmed body in group 2.")
 (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 "org-clock" (&optional tstart tend heading-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))
@@ -574,19 +574,19 @@ Group 1 contains drawer's name or \"END\".")
 	  org-clock-drawer-end-re "\\)\n?")
   "Matches an entire clock drawer.")
 
-;;;; Headline
+;;;; Heading
 
 (defconst org-heading-keyword-regexp-format
   "^\\(\\*+\\)\\(?: +%s\\)\\(?: +\\(.*?\\)\\)?[ \t]*$"
-  "Printf format for a regexp matching a headline with some keyword.
-This regexp will match the headline of any node which has the
+  "Printf format for a regexp matching a heading with some keyword.
+This regexp will match the heading of any node which has the
 exact keyword that is put into the format.  The keyword isn't in
 any group by default, but the stars and the body are.")
 
 (defconst org-heading-keyword-maybe-regexp-format
   "^\\(\\*+\\)\\(?: +%s\\)?\\(?: +\\(.*?\\)\\)?[ \t]*$"
-  "Printf format for a regexp matching a headline, possibly with some keyword.
-This regexp can match any headline with the specified keyword, or
+  "Printf format for a regexp matching a heading, possibly with some keyword.
+This regexp can match any heading with the specified keyword, or
 without a keyword.  The keyword isn't in any group by default,
 but the stars and the body are.")
 
@@ -605,7 +605,7 @@ without the enclosing colons.")
 
 (defconst org-tag-line-re
   "^\\*+ \\(?:.*[ \t]\\)?\\(:\\([[:alnum:]_@#%:]+\\):\\)[ \t]*$"
-  "Regexp matching tags in a headline.
+  "Regexp matching tags in a heading.
 Tags are stored in match group 1.  Match group 2 stores the tags
 without the enclosing colons.")
 
@@ -874,7 +874,7 @@ outside these special contexts, under control of this variable.
 
 The default of this variable is nil, to avoid confusing behavior.  Shifted
 cursor keys will then execute Org commands in the following contexts:
-- on a headline, changing TODO state (left/right) and priority (up/down)
+- on a heading, changing TODO state (left/right) and priority (up/down)
 - on a time stamp, changing the time
 - in a plain list item, changing the bullet type
 - in a property definition line, switching between allowed values
@@ -889,7 +889,7 @@ cycling will no longer happen anywhere in an item line, but only
 if the cursor is exactly on the bullet.
 
 If you set this variable to the symbol `always', then the keys
-will not be special in headlines, property lines, item lines, and
+will not be special in headings, property lines, item lines, and
 table cells, to make shift selection work there as well.  If this is
 what you want, you can use the following alternative commands:
 `\\[org-todo]' and `\\[org-priority]' \
@@ -907,18 +907,18 @@ will still edit the time stamp - this is just too good to give up."
 	  (const :tag "When outside special context" t)
 	  (const :tag "Everywhere except timestamps" always)))
 
-(defcustom org-loop-over-headlines-in-active-region t
-  "Shall some commands act upon headlines in the active region?
+(defcustom org-loop-over-headings-in-active-region t
+  "Shall some commands act upon headings in the active region?
 
-When set to t, some commands will be performed in all headlines
+When set to t, some commands will be performed in all headings
 within the active region.
 
 When set to `start-level', some commands will be performed in all
-headlines within the active region, provided that these headlines
+headings within the active region, provided that these headings
 are of the same level than the first one.
 
 When set to a string, those commands will be performed on the
-matching headlines within the active region.  Such string must be
+matching headings within the active region.  Such string must be
 a tags/property/todo match as it is used in the agenda tags view.
 
 The list of commands is: `org-schedule', `org-deadline',
@@ -927,11 +927,11 @@ The list of commands is: `org-schedule', `org-deadline',
 `org-archive-to-archive-sibling'.  The archiving commands skip
 already archived entries.
 
-See `org-agenda-loop-over-headlines-in-active-region' for the
+See `org-agenda-loop-over-headings-in-active-region' for the
 equivalent option for agenda views."
   :type '(choice (const :tag "Don't loop" nil)
-		 (const :tag "All headlines in active region" t)
-		 (const :tag "In active region, headlines at the same level than the first one" start-level)
+		 (const :tag "All headings in active region" t)
+		 (const :tag "In active region, headings at the same level than the first one" start-level)
 		 (string :tag "Tags/Property/Todo matcher"))
   :package-version '(Org . "9.4")
   :group 'org-todo
@@ -961,7 +961,7 @@ time."
 	  (const :tag "fold: show three levels" show3levels)
 	  (const :tag "fold: show four levels" show4evels)
 	  (const :tag "fold: show five levels" show5levels)
-	  (const :tag "content: all headlines" content)
+	  (const :tag "content: all headings" content)
 	  (const :tag "show everything, even drawers" showeverything)))
 
 (defcustom org-startup-truncated t
@@ -1197,27 +1197,27 @@ or context.  Valid contexts are
 
 Allowed visibility spans are
 
-  minimal        show current headline; if point is not on headline,
+  minimal        show current heading; if point is not on heading,
                  also show entry
 
-  local          show current headline, entry and next headline
+  local          show current heading, entry and next heading
 
-  ancestors      show current headline and its direct ancestors; if
-                 point is not on headline, also show entry
+  ancestors      show current heading and its direct ancestors; if
+                 point is not on heading, also show entry
 
   ancestors-full show current subtree and its direct ancestors
 
-  lineage        show current headline, its direct ancestors and all
-                 their children; if point is not on headline, also show
+  lineage        show current heading, its direct ancestors and all
+                 their children; if point is not on heading, also show
                  entry and first child
 
-  tree           show current headline, its direct ancestors and all
-                 their children; if point is not on headline, also show
+  tree           show current heading, its direct ancestors and all
+                 their children; if point is not on heading, also show
                  entry and all children
 
-  canonical      show current headline, its direct ancestors along with
+  canonical      show current heading, its direct ancestors along with
                  their entries and children; if point is not located on
-                 the headline, also show current entry and all children
+                 the heading, also show current entry and all children
 
 As special cases, a nil or t value means show all contexts in
 `minimal' or `canonical' view, respectively.
@@ -1456,9 +1456,9 @@ is not set."
 
 (defcustom org-cycle-max-level nil
   "Maximum level which should still be subject to visibility cycling.
-Levels higher than this will, for cycling, be treated as text, not a headline.
+Levels higher than this will, for cycling, be treated as text, not a heading.
 When `org-odd-levels-only' is set, a value of N in this variable actually
-means 2N-1 stars as the limiting headline.
+means 2N-1 stars as the limiting heading.
 When nil, cycle all levels.
 Note that the limiting level of cycling is also influenced by
 `org-inlinetask-min-level'.  When `org-cycle-max-level' is not set but
@@ -1480,12 +1480,12 @@ This can also be set in on a per-file basis with
   :type 'boolean)
 
 (defcustom org-cycle-global-at-bob nil
-  "Cycle globally if cursor is at beginning of buffer and not at a headline.
+  "Cycle globally if cursor is at beginning of buffer and not at a heading.
 
 This makes it possible to do global cycling without having to use `S-TAB'
 or `\\[universal-argument] TAB'.  For this special case to work, the first \
 line of the buffer
-must not be a headline -- it may be empty or some other text.
+must not be a heading -- it may be empty or some other text.
 
 When used in this way, `org-cycle-hook' is disabled temporarily to make
 sure the cursor stays at the beginning of the buffer.
@@ -1498,10 +1498,10 @@ the buffer."
 (defcustom org-cycle-level-after-item/entry-creation t
   "Non-nil means cycle entry level or item indentation in new empty entries.
 
-When the cursor is at the end of an empty headline, i.e., with only stars
+When the cursor is at the end of an empty heading, i.e., with only stars
 and maybe a TODO keyword, TAB will then switch the entry to become a child,
 and then all possible ancestor states, before returning to the original state.
-This makes data entry extremely fast:  M-RET to create a new headline,
+This makes data entry extremely fast:  M-RET to create a new heading,
 on TAB to make it a child, two or more tabs to make it a (grand-)uncle.
 
 When the cursor is at the end of an empty plain list item, one TAB will
@@ -1515,26 +1515,26 @@ higher up in the item hierarchy."
 nil         Never
 white       Only in completely white lines
 whitestart  Only at the beginning of lines, before the first non-white char
-t           Everywhere except in headlines
-exc-hl-bol  Everywhere except at the start of a headline
+t           Everywhere except in headings
+exc-hl-bol  Everywhere except at the start of a heading
 If TAB is used in a place where it does not emulate TAB, the current subtree
 visibility is cycled."
   :group 'org-cycle
   :type '(choice (const :tag "Never" nil)
 		 (const :tag "Only in completely white lines" white)
 		 (const :tag "Before first char in a line" whitestart)
-		 (const :tag "Everywhere except in headlines" t)
-		 (const :tag "Everywhere except at bol in headlines" exc-hl-bol)))
+		 (const :tag "Everywhere except in headings" t)
+		 (const :tag "Everywhere except at bol in headings" exc-hl-bol)))
 
 (defcustom org-cycle-separator-lines 2
   "Number of empty lines needed to keep an empty line between collapsed trees.
 If you leave an empty line between the end of a subtree and the following
-headline, this empty line is hidden when the subtree is folded.
+heading, this empty line is hidden when the subtree is folded.
 Org mode will leave (exactly) one empty line visible if the number of
 empty lines is equal or larger to the number given in this variable.
 So the default 2 means at least 2 empty lines after the end of a subtree
 are needed to produce free space between a collapsed subtree and the
-following headline.
+following heading.
 
 If the number is negative, and the number of empty lines is at least -N,
 all empty lines are shown.
@@ -1593,10 +1593,10 @@ lines to the buffer:
   "Non-nil means adapt indentation to outline node level.
 
 When set to t, Org assumes that you write outlines by indenting
-text in each node to align with the headline, after the stars.
+text in each node to align with the heading, after the stars.
 
-When this variable is set to `headline-data', Org only adapts the
-indentation of the data lines right below the headline, such as
+When this variable is set to `heading-data', Org only adapts the
+indentation of the data lines right below the heading, such as
 planning/clock lines and property/logbook drawers.
 
 The following issues are influenced by this variable:
@@ -1604,14 +1604,14 @@ The following issues are influenced by this variable:
 - The indentation is increased by one space in a demotion
   command, and decreased by one in a promotion command.  However,
   in the latter case, if shifting some line in the entry body
-  would alter document structure (e.g., insert a new headline),
+  would alter document structure (e.g., insert a new heading),
   indentation is not changed at all.
 
 - Property drawers and planning information is inserted indented
   when this variable is set.  When nil, they will not be indented.
 
 - TAB indents a line relative to current level.  The lines below
-  a headline will be indented when this variable is set to t.
+  a heading will be indented when this variable is set to t.
 
 Note that this is all about true indentation, by adding and
 removing space characters.  See also \"org-indent.el\" which does
@@ -1620,24 +1620,24 @@ time in Emacs."
   :group 'org-edit-structure
   :type '(choice
 	  (const :tag "Adapt indentation for all lines" t)
-	  (const :tag "Adapt indentation for headline data lines"
-		 headline-data)
+	  (const :tag "Adapt indentation for heading data lines"
+		 heading-data)
 	  (const :tag "Do not adapt indentation at all" nil))
-  :safe (lambda (x) (memq x '(t nil headline-data))))
+  :safe (lambda (x) (memq x '(t nil heading-data))))
 
 (defvaralias 'org-special-ctrl-a 'org-special-ctrl-a/e)
 
 (defcustom org-special-ctrl-a/e nil
-  "Non-nil means `C-a' and `C-e' behave specially in headlines and items.
+  "Non-nil means `C-a' and `C-e' behave specially in headings and items.
 
 When t, `C-a' will bring back the cursor to the beginning of the
-headline text, i.e. after the stars and after a possible TODO
+heading text, i.e. after the stars and after a possible TODO
 keyword.  In an item, this will be the position after bullet and
 check-box, if any.  When the cursor is already at that position,
 another `C-a' will bring it to the beginning of the line.
 
-`C-e' will jump to the end of the headline, ignoring the presence
-of tags in the headline.  A second `C-e' will then jump to the
+`C-e' will jump to the end of the heading, ignoring the presence
+of tags in the heading.  A second `C-e' will then jump to the
 true end of the line, after any tags.  This also means that, when
 this variable is non-nil, `C-e' also will never jump beyond the
 end of the heading of a folded section, i.e. not after the
@@ -1666,20 +1666,20 @@ This may also be a cons cell where the behavior for `C-a' and
 			(const :tag "reversed: after tags first" reversed)))))
 
 (defcustom org-special-ctrl-k nil
-  "Non-nil means `C-k' will behave specially in headlines.
+  "Non-nil means `C-k' will behave specially in headings.
 When nil, `C-k' will call the default `kill-line' command.
-When t, the following will happen while the cursor is in the headline:
+When t, the following will happen while the cursor is in the heading:
 
-- When at the beginning of a headline, kill the entire subtree.
-- When in the middle of the headline text, kill the text up to the tags.
-- When after the headline text and before the tags, kill all the tags."
+- When at the beginning of a heading, kill the entire subtree.
+- When in the middle of the heading text, kill the text up to the tags.
+- When after the heading text and before the tags, kill all the tags."
   :group 'org-edit-structure
   :type 'boolean)
 
 (defcustom org-ctrl-k-protect-subtree nil
   "Non-nil means, do not delete a hidden subtree with `C-k'.
 When set to the symbol `error', simply throw an error when `C-k' is
-used to kill (part-of) a headline that has hidden text behind it.
+used to kill (part-of) a heading that has hidden text behind it.
 Any other non-nil value will result in a query to the user, if it is
 OK to kill that hidden subtree.  When nil, kill without remorse."
   :group 'org-edit-structure
@@ -1740,7 +1740,7 @@ new line.
 You may also set this option in a different way for different
 contexts.  Valid contexts are:
 
-headline  when creating a new headline
+heading  when creating a new heading
 item      when creating a new item
 table     in a table field
 default   the value to be used for all contexts not explicitly
@@ -1753,7 +1753,7 @@ default   the value to be used for all contexts not explicitly
 	  (repeat :greedy t :tag "Individual contexts"
 		  (cons
 		   (choice :tag "Context"
-			   (const headline)
+			   (const heading)
 			   (const item)
 			   (const table)
 			   (const default))
@@ -1828,7 +1828,7 @@ doesn't specify any upper case character."
 	  (const :tag "Case-insensitive" t)
 	  (const :tag "Case-insensitive for lower case searches only" smart)))
 
-(defcustom org-occur-hook '(org-first-headline-recenter)
+(defcustom org-occur-hook '(org-first-heading-recenter)
   "Hook that is run after `org-occur' has constructed a sparse tree.
 This can be used to recenter the window to show as much of the structure
 as possible."
@@ -1861,7 +1861,7 @@ angle     Links in angular brackets that may contain whitespace like
           <bbdb:Carsten Dominik>.
 plain     Plain links in normal text, no whitespace, like https://gnu.org.
 radio     Text that is matched by a radio target, see manual for details.
-tag       Tag settings in a headline (link to tag search).
+tag       Tag settings in a heading (link to tag search).
 date      Time stamps (link to calendar).
 footnote  Footnote labels.
 
@@ -1906,7 +1906,7 @@ Interested libraries should add to this list.")
 Each sequence starts with a symbol, either `sequence' or `type',
 indicating if the keywords should be interpreted as a sequence of
 action steps, or as different types of TODO items.  The first
-keywords are states requiring action - these states will select a headline
+keywords are states requiring action - these states will select a heading
 for inclusion into the global TODO list Org produces.  If one of the
 \"keywords\" is the vertical bar, \"|\", the remaining keywords
 signify that no further action is necessary.  If \"|\" is not found,
@@ -2030,7 +2030,7 @@ are followed by a letter in parenthesis, like TODO(t)."
 
 (defcustom org-provide-todo-statistics t
   "Non-nil means update todo statistics after insert and toggle.
-ALL-HEADLINES means update todo statistics by including headlines
+ALL-HEADINGS means update todo statistics by including headings
 with no TODO keyword as well, counting them as not done.
 A list of TODO keywords means the same, but skip keywords that are
 not in this list.
@@ -2043,7 +2043,7 @@ current entry each time a todo state is changed."
   :group 'org-todo
   :type '(choice
 	  (const :tag "Yes, only for TODO entries" t)
-	  (const :tag "Yes, including all entries" all-headlines)
+	  (const :tag "Yes, including all entries" all-headings)
 	  (repeat :tag "Yes, for TODOs in this list"
 		  (string :tag "TODO keyword"))
 	  (list :tag "Yes, for TODOs and DONEs in these lists"
@@ -2319,7 +2319,7 @@ because Agenda Log mode depends on the format of these entries."
 
 (defcustom org-log-into-drawer nil
   "Non-nil means insert state change notes and time stamps into a drawer.
-When nil, state changes notes will be inserted after the headline and
+When nil, state changes notes will be inserted after the heading and
 any scheduling and clock lines, but not inside a drawer.
 
 The value of this variable should be the name of the drawer to use.
@@ -2363,7 +2363,7 @@ be used instead of the default value."
 
 (defcustom org-log-state-notes-insert-after-drawers nil
   "Non-nil means insert state change notes after any drawers in entry.
-Only the drawers that *immediately* follow the headline and the
+Only the drawers that *immediately* follow the heading and the
 deadline/scheduled line are skipped.
 When nil, insert notes right after the heading and perhaps the line
 with deadline/scheduling if present.
@@ -2518,9 +2518,9 @@ See also `org-priority-default'."
 (defvaralias 'org-get-priority-function 'org-priority-get-priority-function)
 (defcustom org-priority-get-priority-function nil
   "Function to extract the priority from a string.
-The string is normally the headline.  If this is nil, Org
+The string is normally the heading.  If this is nil, Org
 computes the priority from the priority cookie like [#A] in the
-headline.  It returns an integer, increasing by 1000 for each
+heading.  It returns an integer, increasing by 1000 for each
 priority level.
 
 The user can set a different function here, which should take a
@@ -2888,18 +2888,18 @@ displaying the tags menu is not even shown, until you press `C-c' again."
 This is an undocumented feature, you should not rely on it.")
 
 (defcustom org-tags-column -77
-  "The column to which tags should be indented in a headline.
+  "The column to which tags should be indented in a heading.
 If this number is positive, it specifies the column.  If it is negative,
 it means that the tags should be flushright to that column.  For example,
 -80 works well for a normal 80 character screen.
-When 0, place tags directly after headline text, with only one space in
+When 0, place tags directly after heading text, with only one space in
 between."
   :group 'org-tags
   :type 'integer)
 
 (defcustom org-auto-align-tags t
-  "Non-nil keeps tags aligned when modifying headlines.
-Some operations (i.e. demoting) change the length of a headline and
+  "Non-nil keeps tags aligned when modifying headings.
+Some operations (i.e. demoting) change the length of a heading and
 therefore shift the tags around.  With this option turned on, after
 each such operation the tags are again aligned to `org-tags-column'."
   :group 'org-tags
@@ -2946,7 +2946,7 @@ see the variable `org-use-tag-inheritance'."
    (t (error "Invalid setting of `org-use-tag-inheritance'"))))
 
 (defcustom org-tags-match-list-sublevels t
-  "Non-nil means list also sublevels of headlines matching a search.
+  "Non-nil means list also sublevels of headings matching a search.
 This variable applies to tags/property searches, and also to stuck
 projects because this search is based on a tags match as well.
 
@@ -2954,7 +2954,7 @@ When set to the symbol `indented', sublevels are indented with
 leading dots.
 
 Because of tag inheritance (see variable `org-use-tag-inheritance'),
-the sublevels of a headline matching a tag search often also match
+the sublevels of a heading matching a tag search often also match
 the same search.  Listing all of them can create very long lists.
 Setting this variable to nil causes subtrees of a match to be skipped.
 
@@ -3579,15 +3579,15 @@ Make sure that you only list packages here which:
   :group 'org)
 
 (defcustom org-level-color-stars-only nil
-  "Non-nil means fontify only the stars in each headline.
-When nil, the entire headline is fontified.
+  "Non-nil means fontify only the stars in each heading.
+When nil, the entire heading is fontified.
 Changing it requires restart of `font-lock-mode' to become effective
 also in regions already fontified."
   :group 'org-appearance
   :type 'boolean)
 
 (defcustom org-hide-leading-stars nil
-  "Non-nil means hide the first N-1 stars in a headline.
+  "Non-nil means hide the first N-1 stars in a heading.
 This works by using the face `org-hide' for these stars.  This
 face is white for a light background, and black for a dark
 background.  You may have to customize the face `org-hide' to
@@ -3623,21 +3623,21 @@ hide them with `org-toggle-custom-properties-visibility'."
   :version "24.3"
   :type '(repeat (string :tag "Property Name")))
 
-(defcustom org-fontify-todo-headline nil
-  "Non-nil means change the face of a headline if it is marked as TODO.
-Normally, only the TODO/DONE keyword indicates the state of a headline.
-When this is non-nil, the headline after the keyword is set to the
-`org-headline-todo' as an additional indication."
+(defcustom org-fontify-todo-heading nil
+  "Non-nil means change the face of a heading if it is marked as TODO.
+Normally, only the TODO/DONE keyword indicates the state of a heading.
+When this is non-nil, the heading after the keyword is set to the
+`org-heading-todo' as an additional indication."
   :group 'org-appearance
   :package-version '(Org . "9.4")
   :type 'boolean
   :safe t)
 
-(defcustom org-fontify-done-headline t
-  "Non-nil means change the face of a headline if it is marked DONE.
-Normally, only the TODO/DONE keyword indicates the state of a headline.
-When this is non-nil, the headline after the keyword is set to the
-`org-headline-done' as an additional indication."
+(defcustom org-fontify-done-heading t
+  "Non-nil means change the face of a heading if it is marked DONE.
+Normally, only the TODO/DONE keyword indicates the state of a heading.
+When this is non-nil, the heading after the keyword is set to the
+`org-heading-done' as an additional indication."
   :group 'org-appearance
   :package-version '(Org . "9.4")
   :type 'boolean)
@@ -3857,7 +3857,7 @@ This is needed for font-lock setup.")
 (defvar org-clock-marker (make-marker)
   "Marker recording the last clock-in.")
 (defvar org-clock-hd-marker (make-marker)
-  "Marker recording the last clock-in, but the headline position.")
+  "Marker recording the last clock-in, but the heading position.")
 (defvar org-clock-heading ""
   "The heading of the current clock entry.")
 (defun org-clocking-buffer ()
@@ -3906,7 +3906,7 @@ This function is meant to be added to the user configuration."
 
 The value of this variable is a string, consisting of two parts,
 separated by a double-colon.  The first part is a filename and
-the second part is a headline.
+the second part is a heading.
 
 When the filename is omitted, archiving happens in the same file.
 %s in the filename will be replaced by the current file
@@ -3915,7 +3915,7 @@ is useful to keep archived entries from contributing to the
 Org Agenda.
 
 The archived entries will be filed as subtrees of the specified
-headline.  When the headline is omitted, the subtrees are simply
+heading.  When the heading is omitted, the subtrees are simply
 filed away at the end of the file, as top-level entries.  Also in
 the heading you can use %s to represent the file name, this can be
 useful when using the same archive for a number of different files.
@@ -3926,14 +3926,14 @@ Here are a few examples:
 	Projects.org_archive, as top-level trees.  This is the default.
 
 \"::* Archived Tasks\"
-	Archive in the current file, under the top-level headline
+	Archive in the current file, under the top-level heading
 	\"* Archived Tasks\".
 
 \"~/org/archive.org::\"
 	Archive in file ~/org/archive.org (absolute path), as top-level trees.
 
 \"~/org/archive.org::* From %s\"
-	Archive in file ~/org/archive.org (absolute path), under headlines
+	Archive in file ~/org/archive.org (absolute path), under headings
         \"From FILENAME\" where file name is the current file name.
 
 \"~/org/datetree.org::datetree/* Finished Tasks\"
@@ -4042,7 +4042,7 @@ STATE should be one of the symbols listed in the docstring of
    (let ((case-fold-search nil)
 	 (re (concat org-outline-regexp-bol ".*:" org-archive-tag ":")))
      (goto-char beg)
-     ;; Include headline point is currently on.
+     ;; Include heading point is currently on.
      (beginning-of-line)
      (while (and (< (point) end) (re-search-forward re end t))
        (when (member org-archive-tag (org-get-tags nil t))
@@ -4084,35 +4084,35 @@ Since TODO keywords are case-sensitive, `case-fold-search' is
 expected to be bound to nil when matching against this regexp.")
 
 (defvar-local org-not-done-heading-regexp nil
-  "Matches a TODO headline that is not done.
+  "Matches a TODO heading that is not done.
 Since TODO keywords are case-sensitive, `case-fold-search' is
 expected to be bound to nil when matching against this regexp.")
 
 (defvar-local org-todo-line-regexp nil
-  "Matches a headline and puts TODO state into group 2 if present.
+  "Matches a heading and puts TODO state into group 2 if present.
 Since TODO keywords are case-sensitive, `case-fold-search' is
 expected to be bound to nil when matching against this regexp.")
 
 (defvar-local org-complex-heading-regexp nil
-  "Matches a headline and puts everything into groups:
+  "Matches a heading and puts everything into groups:
 
 group 1: Stars
 group 2: The TODO keyword, maybe
 group 3: Priority cookie
-group 4: True headline
+group 4: True heading
 group 5: Tags
 
 Since TODO keywords are case-sensitive, `case-fold-search' is
 expected to be bound to nil when matching against this regexp.")
 
 (defvar-local org-complex-heading-regexp-format nil
-  "Printf format to make regexp to match an exact headline.
-This regexp will match the headline of any node which has the
-exact headline text that is put into the format, but may have any
+  "Printf format to make regexp to match an exact heading.
+This regexp will match the heading of any node which has the
+exact heading text that is put into the format, but may have any
 TODO state, priority and tags.")
 
 (defvar-local org-todo-line-tags-regexp nil
-  "Matches a headline and puts TODO state into group 2 if present.
+  "Matches a heading and puts TODO state into group 2 if present.
 Also put tags into group 4 if tags are present.")
 
 (defconst org-plain-time-of-day-regexp
@@ -4887,7 +4887,7 @@ The following commands are available:
   ;; Next error for sparse trees
   (setq-local next-error-function 'org-occur-next-match)
   ;; Make commit log messages from Org documents easier.
-  (setq-local add-log-current-defun-function #'org-add-log-current-headline)
+  (setq-local add-log-current-defun-function #'org-add-log-current-heading)
   ;; Make sure dependence stuff works reliably, even for users who set it
   ;; too late :-(
   (if org-enforce-todo-dependencies
@@ -5081,8 +5081,8 @@ stacked delimiters is N.  Escaping delimiters is not possible."
 		   (not (and (equal marker "+")
 			     (org-match-line
 			      "[ \t]*\\(|[-+]+|?\\|\\+[-+]+\\+\\)[ \t]*$")))
-		   ;; Do not match headline stars.  Do not consider
-		   ;; stars of a headline as closing marker for bold
+		   ;; Do not match heading stars.  Do not consider
+		   ;; stars of a heading as closing marker for bold
 		   ;; markup either.
 		   (not (and (equal marker "*")
 			     (save-excursion
@@ -5257,7 +5257,7 @@ See also the `org-block' face."
 
 (defcustom org-allow-promoting-top-level-subtree nil
   "When non-nil, allow promoting a top level subtree.
-The leading star of the top level headline will be replaced
+The leading star of the top level heading will be replaced
 by a #."
   :type 'boolean
   :version "24.1"
@@ -5595,7 +5595,7 @@ highlighting was done, nil otherwise."
 (defun org-outline-level ()
   "Compute the outline level of the heading at point.
 
-If this is called at a normal headline, the level is the number
+If this is called at a normal heading, the level is the number
 of stars.  Use `org-reduced-level' to remove the effect of
 `org-odd-levels'.  Unlike to `org-current-level', this function
 takes into consideration inlinetasks."
@@ -5663,7 +5663,7 @@ needs to be inserted at a specific position in the font-lock sequence.")
 	 (list
 	  ;; Call the hook
 	  '(org-font-lock-hook)
-	  ;; Headlines
+	  ;; Headings
 	  `(,(if org-fontify-whole-heading-line
 		 "^\\(\\**\\)\\(\\* \\)\\(.*\n?\\)"
 	       "^\\(\\**\\)\\(\\* \\)\\(.*\\)")
@@ -5702,21 +5702,21 @@ needs to be inserted at a specific position in the font-lock sequence.")
 			org-todo-regexp)
 		'(2 (org-get-todo-face 2) prepend))
 	  ;; TODO
-	  (when org-fontify-todo-headline
+	  (when org-fontify-todo-heading
 	    (list (format org-heading-keyword-regexp-format
 			  (concat
 			   "\\(?:"
 			   (mapconcat 'regexp-quote org-not-done-keywords "\\|")
 			   "\\)"))
-		  '(2 'org-headline-todo prepend)))
+		  '(2 'org-heading-todo prepend)))
 	  ;; DONE
-	  (when org-fontify-done-headline
+	  (when org-fontify-done-heading
 	    (list (format org-heading-keyword-regexp-format
 			  (concat
 			   "\\(?:"
 			   (mapconcat 'regexp-quote org-done-keywords "\\|")
 			   "\\)"))
-		  '(2 'org-headline-done prepend)))
+		  '(2 'org-heading-done prepend)))
 	  ;; Priorities
 	  '(org-font-lock-add-priority-faces)
 	  ;; Tags
@@ -5858,7 +5858,7 @@ needs to be inserted at a specific position in the font-lock sequence.")
       (buffer-string))))
 
 (defun org-get-level-face (n)
-  "Get the right face for match N in font-lock matching of headlines."
+  "Get the right face for match N in font-lock matching of headings."
   (let* ((org-l0 (- (match-end 2) (match-beginning 1) 1))
 	 (org-l (if org-odd-levels-only (1+ (/ org-l0 2)) org-l0))
 	 (org-f (if org-cycle-level-faces
@@ -6005,7 +6005,7 @@ and subscripts."
 	 (delete-overlay o))))
 
 (defun org-show-empty-lines-in-parent ()
-  "Move to the parent and re-show empty lines before visible headlines."
+  "Move to the parent and re-show empty lines before visible headings."
   (save-excursion
     (let ((context (if (org-up-heading-safe) 'children 'overview)))
       (org-cycle-show-empty-lines context))))
@@ -6035,8 +6035,8 @@ open and agenda-wise Org files."
   (pos-visible-in-window-p
    (save-excursion (org-end-of-subtree t) (point))))
 
-(defun org-first-headline-recenter ()
-  "Move cursor to the first headline and recenter the headline."
+(defun org-first-heading-recenter ()
+  "Move cursor to the first heading and recenter the heading."
   (let ((window (get-buffer-window)))
     (when window
       (goto-char (point-min))
@@ -6044,9 +6044,9 @@ open and agenda-wise Org files."
 	(set-window-start window (line-beginning-position))))))
 
 \f
-;;; Visibility (headlines, blocks, drawers)
+;;; Visibility (headings, blocks, drawers)
 
-;;;; Headlines visibility
+;;;; Headings visibility
 
 (defun org-show-entry ()
   "Show the body directly following its heading.
@@ -6308,8 +6308,8 @@ in special contexts.
 When this function is called with a `\\[universal-argument]' prefix, rotate \
 the entire
 buffer through 3 states (global cycling)
-  1. OVERVIEW: Show only top-level headlines.
-  2. CONTENTS: Show all headlines of all levels, but no body text.
+  1. OVERVIEW: Show only top-level headings.
+  2. CONTENTS: Show all headings of all levels, but no body text.
   3. SHOW ALL: Show everything.
 
 With a `\\[universal-argument] \\[universal-argument]' prefix argument, \
@@ -6323,31 +6323,31 @@ any drawers.
 
 When inside a table, re-align the table and move to the next field.
 
-When point is at the beginning of a headline, rotate the subtree started
+When point is at the beginning of a heading, rotate the subtree started
 by this line through 3 different states (local cycling)
-  1. FOLDED:   Only the main headline is shown.
-  2. CHILDREN: The main headline and the direct children are shown.
+  1. FOLDED:   Only the main heading is shown.
+  2. CHILDREN: The main heading and the direct children are shown.
                From this state, you can move to one of the children
                and zoom in further.
   3. SUBTREE:  Show the entire subtree, including body text.
 If there is no subtree, switch directly from CHILDREN to FOLDED.
 
-When point is at the beginning of an empty headline and the variable
+When point is at the beginning of an empty heading and the variable
 `org-cycle-level-after-item/entry-creation' is set, cycle the level
-of the headline by demoting and promoting it to likely levels.  This
+of the heading by demoting and promoting it to likely levels.  This
 speeds up creation document structure by pressing `TAB' once or several
-times right after creating a new headline.
+times right after creating a new heading.
 
 When there is a numeric prefix, go up to a heading with level ARG, do
 a `show-subtree' and return to the previous cursor position.  If ARG
 is negative, go up that many levels.
 
-When point is not at the beginning of a headline, execute the global
+When point is not at the beginning of a heading, execute the global
 binding for `TAB', which is re-indenting the line.  See the option
 `org-cycle-emulate-tab' for details.
 
 As a special case, if point is at the very beginning of the buffer, if
-there is no headline there, and if the variable `org-cycle-global-at-bob'
+there is no heading there, and if the variable `org-cycle-global-at-bob'
 is non-nil, this function acts as if called with prefix argument \
 \(`\\[universal-argument] TAB',
 same as `S-TAB') also when called without prefix argument."
@@ -6419,7 +6419,7 @@ Use `\\[org-edit-special]' to edit table.el tables"))
 	      (call-interactively #'org-table-next-field)))
 	   ((run-hook-with-args-until-success
 	     'org-tab-after-check-for-table-hook))
-	   ;; At an item/headline: delegate to `org-cycle-internal-local'.
+	   ;; At an item/heading: delegate to `org-cycle-internal-local'.
 	   ((and (or (and org-cycle-include-plain-lists
 			  (let ((item (org-element-lineage element
 							   '(item plain-list)
@@ -6493,7 +6493,7 @@ Use `\\[org-edit-special]' to edit table.el tables"))
 (defun org-cycle-internal-local ()
   "Do the local cycling action."
   (let ((goal-column 0) eoh eol eos has-children children-skipped struct)
-    ;; First, determine end of headline (EOH), end of subtree or item
+    ;; First, determine end of heading (EOH), end of subtree or item
     ;; (EOS), and if item or heading has children (HAS-CHILDREN).
     (save-excursion
       (if (org-at-item-p)
@@ -6597,7 +6597,7 @@ Use `\\[org-edit-special]' to edit table.el tables"))
 (defun org-global-cycle (&optional arg)
   "Cycle the global visibility.  For details see `org-cycle'.
 With `\\[universal-argument]' prefix ARG, switch to startup visibility.
-With a numeric prefix, show all headlines up to that level."
+With a numeric prefix, show all headings up to that level."
   (interactive "P")
   (cond
    ((integerp arg)
@@ -6663,7 +6663,7 @@ With a numeric prefix, show all headlines up to that level."
 	    (org-end-of-subtree)))))))
 
 (defun org-overview ()
-  "Switch to overview mode, showing only top-level headlines."
+  "Switch to overview mode, showing only top-level headings."
   (interactive)
   (org-show-all '(headings drawers))
   (save-excursion
@@ -6680,7 +6680,7 @@ With a numeric prefix, show all headlines up to that level."
         (org-flag-region last (point) t 'outline)))))
 
 (defun org-content (&optional arg)
-  "Show all headlines in the buffer, like a table of contents.
+  "Show all headings in the buffer, like a table of contents.
 With numerical argument N, show content up to level N."
   (interactive "p")
   (org-show-all '(headings drawers))
@@ -6749,11 +6749,11 @@ This function is the default value of the hook `org-cycle-hook'."
 	(org-cycle-show-empty-lines 'overview)))))
 
 (defun org-cycle-show-empty-lines (state)
-  "Show empty lines above all visible headlines.
+  "Show empty lines above all visible headings.
 The region to be covered depends on STATE when called through
 `org-cycle-hook'.  Lisp program can use t for STATE to get the
 entire buffer covered.  Note that an empty line is only shown if there
-are at least `org-cycle-separator-lines' empty lines before the headline."
+are at least `org-cycle-separator-lines' empty lines before the heading."
   (when (/= org-cycle-separator-lines 0)
     (save-excursion
       (let* ((n (abs org-cycle-separator-lines))
@@ -6809,7 +6809,7 @@ be shown."
 DETAIL is either nil, `minimal', `local', `ancestors',
 `ancestors-full', `lineage', `tree', `canonical' or t.  See
 `org-show-context-detail' for more information."
-  ;; Show current heading and possibly its entry, following headline
+  ;; Show current heading and possibly its entry, following heading
   ;; or all children.
   (if (and (org-at-heading-p) (not (eq detail 'local)))
       (org-flag-heading nil)
@@ -6843,7 +6843,7 @@ DETAIL is either nil, `minimal', `local', `ancestors',
   "Hook run before revealing a location.")
 
 (defun org-reveal (&optional siblings)
-  "Show current entry, hierarchy above it, and the following headline.
+  "Show current entry, hierarchy above it, and the following heading.
 
 This can be used to show a consistent set of context around
 locations exposed with `org-show-context'.
@@ -6957,12 +6957,12 @@ frame is not changed."
 
 ;;;; Structure editing
 
-;;; Inserting headlines
+;;; Inserting headings
 
 (defun org--blank-before-heading-p (&optional parent)
   "Non-nil when an empty line should precede a new heading here.
 When optional argument PARENT is non-nil, consider parent
-headline instead of current one."
+heading instead of current one."
   (pcase (assq 'heading org-blank-before-new-entry)
     (`(heading . auto)
      (save-excursion
@@ -6986,13 +6986,13 @@ headline instead of current one."
   "Insert a new heading or an item with the same depth at point.
 
 If point is at the beginning of a heading, insert a new heading
-or a new headline above the current one.  When at the beginning
+or a new heading above the current one.  When at the beginning
 of a regular line of text, turn it into a heading.
 
 If point is in the middle of a line, split it and create a new
-headline with the text in the current line after point (see
+heading with the text in the current line after point (see
 `org-M-RET-may-split-line' on how to modify this behavior).  As
-a special case, on a headline, splitting can only happen on the
+a special case, on a heading, splitting can only happen on the
 title itself.  E.g., this excludes breaking stars or tags.
 
 With a `\\[universal-argument]' prefix, set \
@@ -7007,7 +7007,7 @@ above the current heading.  For example, if point is within a
 2nd-level heading, then it will insert a 2nd-level heading at
 the end of the 1st-level parent subtree.
 
-When INVISIBLE-OK is set, stop at invisible headlines when going
+When INVISIBLE-OK is set, stop at invisible headings when going
 back.  This is important for non-interactive uses of the
 command.
 
@@ -7023,9 +7023,9 @@ unconditionally."
 	  (and (not invisible-ok)
 	       (invisible-p (max (1- (point)) (point-min)))))
       ;; Position point at the location of insertion.  Make sure we
-      ;; end up on a visible headline if INVISIBLE-OK is nil.
+      ;; end up on a visible heading if INVISIBLE-OK is nil.
       (org-with-limited-levels
-       (if (not level) (outline-next-heading) ;before first headline
+       (if (not level) (outline-next-heading) ;before first heading
 	 (org-back-to-heading invisible-ok)
 	 (when (equal arg '(16)) (org-up-heading-safe))
 	 (org-end-of-subtree)))
@@ -7039,14 +7039,14 @@ unconditionally."
       (unless (and blank? (org-previous-line-empty-p))
 	(org-N-empty-lines-before-current (if blank? 1 0)))
       (insert stars " ")
-      ;; When INVISIBLE-OK is non-nil, ensure newly created headline
+      ;; When INVISIBLE-OK is non-nil, ensure newly created heading
       ;; is visible.
       (unless invisible-ok
 	(pcase (get-char-property-and-overlay (point) 'invisible)
 	  (`(outline . ,o)
 	   (move-overlay o (overlay-start o) (line-end-position 0)))
 	  (_ nil))))
-     ;; At a headline...
+     ;; At a heading...
      ((org-at-heading-p)
       (cond ((bolp)
 	     (when blank? (save-excursion (insert "\n")))
@@ -7054,10 +7054,10 @@ unconditionally."
 	     (unless (and blank? (org-previous-line-empty-p))
 	       (org-N-empty-lines-before-current (if blank? 1 0)))
 	     (end-of-line))
-	    ((and (org-get-alist-option org-M-RET-may-split-line 'headline)
+	    ((and (org-get-alist-option org-M-RET-may-split-line 'heading)
 		  (org-match-line org-complex-heading-regexp)
 		  (org-pos-in-match-range (point) 4))
-	     ;; Grab the text that should moved to the new headline.
+	     ;; Grab the text that should moved to the new heading.
 	     ;; Preserve tags.
 	     (let ((split (delete-and-extract-region (point) (match-end 4))))
 	       (if (looking-at "[ \t]*$") (replace-match "")
@@ -7070,14 +7070,14 @@ unconditionally."
 	     (end-of-line)
 	     (when blank? (insert "\n"))
 	     (insert "\n" stars " "))))
-     ;; On regular text, turn line into a headline or split, if
+     ;; On regular text, turn line into a heading or split, if
      ;; appropriate.
      ((bolp)
       (insert stars " ")
       (unless (and blank? (org-previous-line-empty-p))
         (org-N-empty-lines-before-current (if blank? 1 0))))
      (t
-      (unless (org-get-alist-option org-M-RET-may-split-line 'headline)
+      (unless (org-get-alist-option org-M-RET-may-split-line 'heading)
         (end-of-line))
       (insert "\n" stars " ")
       (unless (and blank? (org-previous-line-empty-p))
@@ -7111,7 +7111,7 @@ Return nil before first heading."
 	(looking-at org-complex-heading-regexp)
 	(let ((todo (and (not no-todo) (match-string 2)))
 	      (priority (and (not no-priority) (match-string 3)))
-	      (headline (pcase (match-string 4)
+	      (heading (pcase (match-string 4)
 			  (`nil "")
 			  ((and (guard no-comment) h)
 			   (replace-regexp-in-string
@@ -7121,7 +7121,7 @@ Return nil before first heading."
 			  (h h)))
 	      (tags (and (not no-tags) (match-string 5))))
 	  (mapconcat #'identity
-		     (delq nil (list todo priority headline tags))
+		     (delq nil (list todo priority heading tags))
 		     " "))))))
 
 (defun org-heading-components ()
@@ -7131,7 +7131,7 @@ This is a list with the following elements:
 - the reduced level, different if `org-odd-levels-only' is set.
 - the TODO keyword, or nil
 - the priority character, like ?A, or nil if no priority is given
-- the headline text itself, or the tags string if no headline text
+- the heading text itself, or the tags string if no heading text
 - the tags string, or nil."
   (save-excursion
     (org-back-to-heading t)
@@ -7149,8 +7149,8 @@ This is a list with the following elements:
     (org-back-to-heading t)
     (buffer-substring (point-at-bol 2) (org-end-of-subtree t))))
 
-(defun org-edit-headline (&optional heading)
-  "Edit the current headline.
+(defun org-edit-heading (&optional heading)
+  "Edit the current heading.
 Set it to HEADING when provided."
   (interactive)
   (org-with-wide-buffer
@@ -7301,18 +7301,18 @@ headings in the region."
 	    ((equal (char-after) ?\s) (forward-char 1))))))
 
 (defun org-current-level ()
-  "Return the level of the current entry, or nil if before the first headline.
+  "Return the level of the current entry, or nil if before the first heading.
 The level is the number of stars at the beginning of the
-headline.  Use `org-reduced-level' to remove the effect of
+heading.  Use `org-reduced-level' to remove the effect of
 `org-odd-levels'.  Unlike to `org-outline-level', this function
 ignores inlinetasks."
   (let ((level (org-with-limited-levels (org-outline-level))))
     (and (> level 0) level)))
 
 (defun org-get-previous-line-level ()
-  "Return the outline depth of the last headline before the current line.
-Returns 0 for the first headline in the buffer, and nil if before the
-first headline."
+  "Return the outline depth of the last heading before the current line.
+Returns 0 for the first heading in the buffer, and nil if before the
+first heading."
   (and (org-current-level)
        (or (and (/= (line-beginning-position) (point-min))
 		(save-excursion (beginning-of-line 0) (org-current-level)))
@@ -7328,7 +7328,7 @@ This takes into account the setting of `org-odd-levels-only'."
 
 (defun org-level-increment ()
   "Return the number of stars that will be added or removed at a
-time to headlines when structure editing, based on the value of
+time to headings when structure editing, based on the value of
 `org-odd-levels-only'."
   (if org-odd-levels-only 2 1))
 
@@ -7379,17 +7379,17 @@ odd number.  Returns values greater than 0."
      (run-hooks 'org-after-demote-entry-hook))))
 
 (defun org-cycle-level ()
-  "Cycle the level of an empty headline through possible states.
+  "Cycle the level of an empty heading through possible states.
 This goes first to child, then to parent, level, then up the hierarchy.
 After top level, it switches back to sibling level."
   (interactive)
   (let ((org-adapt-indentation nil))
-    (when (org-point-at-end-of-empty-headline)
+    (when (org-point-at-end-of-empty-heading)
       (setq this-command 'org-cycle-level) ; Only needed for caching
       (let ((cur-level (org-current-level))
             (prev-level (org-get-previous-line-level)))
         (cond
-         ;; If first headline in file, promote to top-level.
+         ;; If first heading in file, promote to top-level.
          ((= prev-level 0)
           (cl-loop repeat (/ (- cur-level 1) (org-level-increment))
 		   do (org-do-promote)))
@@ -7448,7 +7448,7 @@ DIFF is an integer.  Indentation is done according to the
 following rules:
 
   - Planning information and property drawers are always indented
-    according to the new level of the headline;
+    according to the new level of the heading;
 
   - Footnote definitions and their contents are ignored;
 
@@ -7508,7 +7508,7 @@ Assume point is at a heading or an inlinetask beginning."
 			     (goto-char (org-element-property :end e))))))
 		((looking-at-p org-outline-regexp) (forward-line))
 		;; Give up if shifting would move before column 0 or
-		;; if it would introduce a headline or a footnote
+		;; if it would introduce a heading or a footnote
 		;; definition.
 		(t
 		 (skip-chars-forward " \t")
@@ -7604,12 +7604,12 @@ case."
 ;;; Vertical tree motion, cutting and pasting of subtrees
 
 (defun org-move-subtree-up (&optional arg)
-  "Move the current subtree up past ARG headlines of the same level."
+  "Move the current subtree up past ARG headings of the same level."
   (interactive "p")
   (org-move-subtree-down (- (prefix-numeric-value arg))))
 
 (defun org-move-subtree-down (&optional arg)
-  "Move the current subtree down past ARG headlines of the same level."
+  "Move the current subtree down past ARG headings of the same level."
   (interactive "p")
   (setq arg (prefix-numeric-value arg))
   (org-preserve-local-variables
@@ -7723,16 +7723,16 @@ useful if the caller implements cut-and-paste as copy-then-paste-then-cut."
 		(length org-subtree-clip))))))
 
 (defun org-paste-subtree (&optional level tree for-yank remove)
-  "Paste the clipboard as a subtree, with modification of headline level.
+  "Paste the clipboard as a subtree, with modification of heading level.
 
-The entire subtree is promoted or demoted in order to match a new headline
+The entire subtree is promoted or demoted in order to match a new heading
 level.
 
-If the cursor is at the beginning of a headline, the same level as
-that headline is used to paste the tree.
+If the cursor is at the beginning of a heading, the same level as
+that heading is used to paste the tree.
 
 If not, the new level is derived from the *visible* headings
-before and after the insertion point, and taken to be the inferior headline
+before and after the insertion point, and taken to be the inferior heading
 level of the two.  So if the previous visible heading is level 3 and the
 next is level 4 (or vice versa), level 4 will be used for insertion.
 This makes sure that the subtree remains an independent subtree and does
@@ -7765,7 +7765,7 @@ When REMOVE is non-nil, remove the subtree from the clipboard."
 	   (cond
 	    (level (prefix-numeric-value level))
 	    ;; When point is after the stars in an otherwise empty
-	    ;; headline, use the number of stars as the forced level.
+	    ;; heading, use the number of stars as the forced level.
 	    ((and (org-match-line "^\\*+[ \t]*$")
 		  (not (eq ?* (char-after))))
 	     (org-outline-level))
@@ -7793,7 +7793,7 @@ When REMOVE is non-nil, remove the subtree from the clipboard."
      (when (and force-level (not level))
        (delete-region (line-beginning-position) (point)))
      ;; Paste before the next visible heading or at end of buffer,
-     ;; unless point is at the beginning of a headline.
+     ;; unless point is at the beginning of a heading.
      (unless (and (bolp) (org-at-heading-p))
        (org-next-visible-heading 1)
        (unless (bolp) (insert "\n")))
@@ -7831,8 +7831,8 @@ When REMOVE is non-nil, remove the subtree from the clipboard."
 
 (defun org-kill-is-subtree-p (&optional txt)
   "Check if the current kill is an outline subtree, or a set of trees.
-Returns nil if kill does not start with a headline, or if the first
-headline level is not the largest headline level in the tree.
+Returns nil if kill does not start with a heading, or if the first
+heading level is not the largest heading level in the tree.
 So this will actually accept several entries of equal levels as well,
 which is OK for `org-paste-subtree'.
 If optional TXT is given, check this string instead of the current kill."
@@ -8040,13 +8040,13 @@ of strings describing the outline path for that entry, in reverse
 order.")
 
 (defun org--get-outline-path-1 (&optional use-cache)
-  "Return outline path to current headline.
+  "Return outline path to current heading.
 
 Outline path is a list of strings, in reverse order.  When
 optional argument USE-CACHE is non-nil, make use of a cache.  See
 `org-get-outline-path' for details.
 
-Assume buffer is widened and point is on a headline."
+Assume buffer is widened and point is on a heading."
   (or (and use-cache (cdr (assq (point) org-outline-path-cache)))
       (let ((p (point))
 	    (heading (let ((case-fold-search nil))
@@ -8073,12 +8073,12 @@ Assume buffer is widened and point is on a headline."
 (defun org-get-outline-path (&optional with-self use-cache)
   "Return the outline path to the current entry.
 
-An outline path is a list of ancestors for current headline, as
+An outline path is a list of ancestors for current heading, as
 a list of strings.  Statistics cookies are removed and links are
 replaced with their description, if any, or their path otherwise.
 
 When optional argument WITH-SELF is non-nil, the path also
-includes the current headline.
+includes the current heading.
 
 When optional argument USE-CACHE is non-nil, cache outline paths
 between calls to this function so as to avoid backtracking.  This
@@ -8245,7 +8245,7 @@ compare entries.
 Comparing entries ignores case by default.  However, with an optional argument
 WITH-CASE, the sorting considers case as well.
 
-Sorting is done against the visible part of the headlines, it ignores hidden
+Sorting is done against the visible part of the headings, it ignores hidden
 links.
 
 When sorting is done, call `org-after-sorting-entries-or-items-hook'.
@@ -8267,7 +8267,7 @@ function is being called interactively."
       (setq start (point)))
      ((or (org-at-heading-p)
           (ignore-errors (progn (org-back-to-heading) t)))
-      ;; we will sort the children of the current headline
+      ;; we will sort the children of the current heading
       (org-back-to-heading)
       (setq start (point)
 	    end (progn (org-end-of-subtree t t)
@@ -8579,8 +8579,8 @@ the value of the drawer property."
 The refresh happens only for the current entry, or the whole
 sub-tree if optional argument INHERIT is non-nil.
 
-If point is before first headline, the function applies to the
-part before the first headline.  In that particular case, when
+If point is before first heading, the function applies to the
+part before the first heading.  In that particular case, when
 optional argument INHERIT is non-nil, it refreshes properties for
 the whole buffer."
   (save-excursion
@@ -8940,7 +8940,7 @@ When point is a footnote definition, move to the first reference
 found.  If it is on a reference, move to the associated
 definition.
 
-When point is on a headline, display a list of every link in the
+When point is on a heading, display a list of every link in the
 entry, so it is possible to pick one, or all, of them.  If point
 is on a tag, call `org-tags-view' instead.
 
@@ -8959,7 +8959,7 @@ a link."
 	    (org-element-lineage
 	     (org-element-context)
 	     '(citation citation-reference clock comment comment-block
-                        footnote-definition footnote-reference headline
+                        footnote-definition footnote-reference heading
                         inline-src-block inlinetask keyword link node-property
                         planning src-block timestamp)
 	     t))
@@ -8971,9 +8971,9 @@ a link."
        ;; looks like a link under point in some specific places.
        ((memq type '(comment comment-block node-property keyword))
 	(call-interactively #'org-open-at-point-global))
-       ;; On a headline or an inlinetask, but not on a timestamp,
+       ;; On a heading or an inlinetask, but not on a timestamp,
        ;; a link, a footnote reference or a citation.
-       ((memq type '(headline inlinetask))
+       ((memq type '(heading inlinetask))
 	(org-match-line org-complex-heading-regexp)
 	(let ((tags-beg (match-beginning 5))
 	      (tags-end (match-end 5)))
@@ -9640,7 +9640,7 @@ transformed into canonical form." )
 Each function takes arguments (NEW-MARK OLD-MARK) and returns either
 nil or a string to be used for the todo mark." )
 
-(defvar org-agenda-headline-snapshot-before-repeat)
+(defvar org-agenda-heading-snapshot-before-repeat)
 
 (defun org-current-effective-time ()
   "Return current time adjusted for `org-extend-today-until' variable."
@@ -9725,10 +9725,10 @@ When called through ELisp, arg is also interpreted in the following way:
 \"WAITING\"     -> switch to the specified keyword, but only if it
                  really is a member of `org-todo-keywords'."
   (interactive "P")
-  (if (and (org-region-active-p) org-loop-over-headlines-in-active-region)
-      (let ((cl (if (eq org-loop-over-headlines-in-active-region 'start-level)
+  (if (and (org-region-active-p) org-loop-over-headings-in-active-region)
+      (let ((cl (if (eq org-loop-over-headings-in-active-region 'start-level)
 		    'region-start-level 'region))
-	    org-loop-over-headlines-in-active-region)
+	    org-loop-over-headings-in-active-region)
 	(org-map-entries
 	 (lambda () (org-todo arg))
 	 nil cl
@@ -9908,10 +9908,10 @@ When called through ELisp, arg is also interpreted in the following way:
 	    (put-text-property (point-at-bol) (point-at-eol) 'org-todo-head head)
 	    ;; Do we need to trigger a repeat?
 	    (when now-done-p
-	      (when (boundp 'org-agenda-headline-snapshot-before-repeat)
-		;; This is for the agenda, take a snapshot of the headline.
+	      (when (boundp 'org-agenda-heading-snapshot-before-repeat)
+		;; This is for the agenda, take a snapshot of the heading.
 		(save-match-data
-		  (setq org-agenda-headline-snapshot-before-repeat
+		  (setq org-agenda-heading-snapshot-before-repeat
 			(org-get-heading))))
 	      (org-auto-repeat-maybe org-state))
 	    ;; Fixup cursor location if close to the keyword.
@@ -10125,7 +10125,7 @@ all statistics cookies in the buffer."
 
 (defvar org-entry-property-inherited-from) ;; defined below
 (defun org-update-parent-todo-statistics ()
-  "Update any statistics cookie in the parent of the current headline.
+  "Update any statistics cookie in the parent of the current heading.
 When `org-hierarchical-todo-statistics' is nil, statistics will cover
 the entire subtree and this will travel up the hierarchy and update
 statistics everywhere."
@@ -10148,10 +10148,10 @@ statistics everywhere."
 	;; Three situations are to consider:
 
 	;; 1. if `org-hierarchical-todo-statistics' is nil, repeat up
-	;;    to the top-level ancestor on the headline;
+	;;    to the top-level ancestor on the heading;
 
 	;; 2. If parent has "recursive" property, repeat up to the
-	;;    headline setting that property, taking inheritance into
+	;;    heading setting that property, taking inheritance into
 	;;    account;
 
 	;; 3. Else, move up to direct parent and proceed only once.
@@ -10174,7 +10174,7 @@ statistics everywhere."
 	    		  (> (setq l1 (length (match-string 1))) level))
 	    	(setq kwd (and (or recursive (= l1 ltoggle))
 	    		       (match-string 2)))
-	    	(if (or (eq org-provide-todo-statistics 'all-headlines)
+	    	(if (or (eq org-provide-todo-statistics 'all-headings)
 			(and (eq org-provide-todo-statistics t)
 			     (or (member kwd org-done-keywords)))
 	    		(and (listp org-provide-todo-statistics)
@@ -10190,7 +10190,7 @@ statistics everywhere."
 		  (and (eq org-provide-todo-statistics t)
 		       kwd
 		       (setq cnt-all (1+ cnt-all))))
-		(when (or (and (member org-provide-todo-statistics '(t all-headlines))
+		(when (or (and (member org-provide-todo-statistics '(t all-headings))
 			       (member kwd org-done-keywords))
 			  (and (listp org-provide-todo-statistics)
 			       (listp (car org-provide-todo-statistics))
@@ -10224,7 +10224,7 @@ and the number of done entries.
 For example, the following function, when added to this hook, will switch
 an entry to DONE when all children are done, and back to TODO when new
 entries are set to a TODO status.  Note that this hook is only called
-when there is a statistics cookie in the headline!
+when there is a statistics cookie in the heading!
 
  (defun org-summary-todo (n-done n-not-done)
    \"Switch entry to DONE when all subentries are done, to TODO otherwise.\"
@@ -10436,7 +10436,7 @@ repeater from there instead."
 (defvar org-log-note-how nil)
 (defvar org-log-note-extra)
 (defun org-auto-repeat-maybe (done-word)
-  "Check if the current headline contains a repeated time-stamp.
+  "Check if the current heading contains a repeated time-stamp.
 
 If yes, set TODO state back to what it was and change the base date
 of repeating deadline/scheduled time stamps to new date.
@@ -10560,9 +10560,9 @@ enough to shift date past today.  Continue? "
       (message msg))))
 
 (defun org-show-todo-tree (arg)
-  "Make a compact tree which shows all headlines marked with TODO.
+  "Make a compact tree which shows all headings marked with TODO.
 The tree will show the lines where the regexp matches, and all higher
-headlines above the match.
+headings above the match.
 With a `\\[universal-argument]' prefix, prompt for a regexp to match.
 With a numeric prefix N, construct a sparse tree for the Nth element
 of `org-todo-keywords-1'."
@@ -10675,11 +10675,11 @@ With two universal prefix arguments, prompt for a warning delay.
 With argument TIME, set the deadline at the corresponding date.  TIME
 can either be an Org date like \"2011-07-24\" or a delta like \"+2d\"."
   (interactive "P")
-  (if (and (org-region-active-p) org-loop-over-headlines-in-active-region)
+  (if (and (org-region-active-p) org-loop-over-headings-in-active-region)
       (org-map-entries
        (lambda () (org--deadline-or-schedule arg 'deadline time))
        nil
-       (if (eq org-loop-over-headlines-in-active-region 'start-level)
+       (if (eq org-loop-over-headings-in-active-region 'start-level)
 	   'region-start-level
 	 'region)
        (lambda () (when (org-invisible-p) (org-end-of-subtree nil t))))
@@ -10696,11 +10696,11 @@ With two universal prefix arguments, prompt for a delay cookie.
 With argument TIME, scheduled at the corresponding date.  TIME can
 either be an Org date like \"2011-07-24\" or a delta like \"+2d\"."
   (interactive "P")
-  (if (and (org-region-active-p) org-loop-over-headlines-in-active-region)
+  (if (and (org-region-active-p) org-loop-over-headings-in-active-region)
       (org-map-entries
        (lambda () (org--deadline-or-schedule arg 'scheduled time))
        nil
-       (if (eq org-loop-over-headlines-in-active-region 'start-level)
+       (if (eq org-loop-over-headings-in-active-region 'start-level)
 	   'region-start-level
 	 'region)
        (lambda () (when (org-invisible-p) (org-end-of-subtree nil t))))
@@ -11243,7 +11243,7 @@ match is found."
       (user-error "No more matches"))))
 
 (defun org-highlight-new-match (beg end)
-  "Highlight from BEG to END and mark the highlight is an occur headline."
+  "Highlight from BEG to END and mark the highlight is an occur heading."
   (let ((ov (make-overlay beg end)))
     (overlay-put ov 'face 'secondary-selection)
     (overlay-put ov 'org-type 'org-occur)
@@ -11444,24 +11444,24 @@ as N.")
 (defvar org--matcher-tags-todo-only nil)
 
 (defun org-scan-tags (action matcher todo-only &optional start-level)
-  "Scan headline tags with inheritance and produce output ACTION.
+  "Scan heading tags with inheritance and produce output ACTION.
 
 ACTION can be `sparse-tree' to produce a sparse tree in the current buffer,
 or `agenda' to produce an entry list for an agenda view.  It can also be
-a Lisp form or a function that should be called at each matched headline, in
+a Lisp form or a function that should be called at each matched heading, in
 this case the return value is a list of all return values from these calls.
 
 MATCHER is a function accepting three arguments, returning
-a non-nil value whenever a given set of tags qualifies a headline
+a non-nil value whenever a given set of tags qualifies a heading
 for inclusion.  See `org-make-tags-matcher' for more information.
 As a special case, it can also be set to t (respectively nil) in
-order to match all (respectively none) headline.
+order to match all (respectively none) heading.
 
 When TODO-ONLY is non-nil, only lines with a TODO keyword are
 included in the output.
 
 START-LEVEL can be a string with asterisks, reducing the scope to
-headlines matching this string."
+headings matching this string."
   (require 'org-agenda)
   (let* ((re (concat "^"
 		     (if start-level
@@ -11522,7 +11522,7 @@ headlines matching this string."
 	    (setq tags (org-split-string tags ":")
 		  tags-alist
 		  (cons (cons level tags) tags-alist)))
-	  ;; compile tags for current headline
+	  ;; compile tags for current heading
 	  (setq tags-list
 		(if org-use-tag-inheritance
 		    (apply 'append (mapcar 'cdr (reverse tags-alist)))
@@ -11561,7 +11561,7 @@ headlines matching this string."
 			  (or (not org-agenda-tags-todo-honor-ignore-options)
 			      (not (org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item))))))
 
-	    ;; select this headline
+	    ;; select this heading
 	    (cond
 	     ((eq action 'sparse-tree)
 	      (and org-highlight-sparse-tree-matches
@@ -11691,12 +11691,12 @@ Returns a cons of the selection string MATCH and a function
 implementing the matcher.
 
 The matcher is to be called at an Org entry, with point on the
-headline, and returns non-nil if the entry matches the selection
+heading, and returns non-nil if the entry matches the selection
 string MATCH.  It must be called with three arguments: the TODO
 keyword at the entry (or nil if none), the list of all tags at
 the entry including inherited ones and the reduced level of the
-headline.  Additionally, the category of the entry, if any, must
-be specified as the text property `org-category' on the headline.
+heading.  Additionally, the category of the entry, if any, must
+be specified as the text property `org-category' on the heading.
 
 This function sets the variable `org--matcher-tags-todo-only' to
 a non-nil value if the matcher restricts matching to TODO
@@ -11973,8 +11973,8 @@ If ONOFF is `on' or `off', don't toggle but set to this state."
       res)))
 
 (defun org--align-tags-here (to-col)
-  "Align tags on the current headline to TO-COL.
-Assume point is on a headline.  Preserve point when aligning
+  "Align tags on the current heading to TO-COL.
+Assume point is on a heading.  Preserve point when aligning
 tags."
   (when (org-match-line org-tag-line-re)
     (let* ((tags-start (match-beginning 1))
@@ -12015,7 +12015,7 @@ unconditionally do not
 offer the fast tag selection interface.
 
 If a region is active, set tags in the region according to the
-setting of `org-loop-over-headlines-in-active-region'.
+setting of `org-loop-over-headings-in-active-region'.
 
 This function is for interactive use only;
 in Lisp code use `org-set-tags' instead."
@@ -12024,12 +12024,12 @@ in Lisp code use `org-set-tags' instead."
 	 (unless (equal '(16) arg) org-use-fast-tag-selection)))
     (cond
      ((equal '(4) arg) (org-align-tags t))
-     ((and (org-region-active-p) org-loop-over-headlines-in-active-region)
-      (let (org-loop-over-headlines-in-active-region) ;  hint: infinite recursion.
+     ((and (org-region-active-p) org-loop-over-headings-in-active-region)
+      (let (org-loop-over-headings-in-active-region) ;  hint: infinite recursion.
 	(org-map-entries
 	 #'org-set-tags-command
 	 nil
-	 (if (eq org-loop-over-headlines-in-active-region 'start-level)
+	 (if (eq org-loop-over-headings-in-active-region 'start-level)
 	     'region-start-level
 	   'region)
 	 (lambda () (when (org-invisible-p) (org-end-of-subtree nil t))))))
@@ -12106,7 +12106,7 @@ visible part of the buffer."
 TAGS may be a tags string like \":aa:bb:cc:\", or a list of tags.
 If TAGS is nil or the empty string, all tags are removed.
 
-This function assumes point is on a headline."
+This function assumes point is on a heading."
   (org-with-wide-buffer
    (let ((tags (pcase tags
 		 ((pred listp) tags)
@@ -12123,7 +12123,7 @@ This function assumes point is on a headline."
 		    (line-end-position)))
        (skip-chars-backward " \t")
        (delete-region (point) (line-end-position))
-       ;; Deleting white spaces may break an otherwise empty headline.
+       ;; Deleting white spaces may break an otherwise empty heading.
        ;; Re-introduce one space in this case.
        (unless (org-at-heading-p) (insert " "))
        (when tags
@@ -12230,7 +12230,7 @@ Also insert END."
 (defvar org-last-tag-selection-key nil)
 (defun org-fast-tag-selection (current inherited table &optional todo-table)
   "Fast tag selection with single keys.
-CURRENT is the current list of tags in the headline, INHERITED is the
+CURRENT is the current list of tags in the heading, INHERITED is the
 list of inherited tags, and TABLE is an alist of tags and corresponding keys,
 possibly with grouping information.  TODO-TABLE is a similar table with
 TODO keywords, should these have keys assigned to them.
@@ -12447,25 +12447,25 @@ TAGS is a list of strings."
     (format ":%s:" (mapconcat #'identity tags ":"))))
 
 (defun org--get-local-tags ()
-  "Return list of tags for the current headline.
-Assume point is at the beginning of the headline."
+  "Return list of tags for the current heading.
+Assume point is at the beginning of the heading."
   (and (looking-at org-tag-line-re)
        (split-string (match-string-no-properties 2) ":" t)))
 
 (defun org-get-tags (&optional pos local)
-  "Get the list of tags specified in the current headline.
+  "Get the list of tags specified in the current heading.
 
-When argument POS is non-nil, retrieve tags for headline at POS.
+When argument POS is non-nil, retrieve tags for heading at POS.
 
 According to `org-use-tag-inheritance', tags may be inherited
-from parent headlines, and from the whole document, through
+from parent headings, and from the whole document, through
 `org-file-tags'.  In this case, the returned list of tags
 contains tags in this order: file tags, tags inherited from
-parent headlines, local tags.  If a tag appears multiple times,
+parent headings, local tags.  If a tag appears multiple times,
 only the most local tag is returned.
 
 However, when optional argument LOCAL is non-nil, only return
-tags specified at the headline.
+tags specified at the heading.
 
 Inherited tags have the `inherited' text property."
   (if (and org-trust-scanner-tags
@@ -12500,16 +12500,16 @@ Inherited tags have the `inherited' text property."
 (defvar org-agenda-skip-comment-trees)
 (defvar org-agenda-skip-function)
 (defun org-map-entries (func &optional match scope &rest skip)
-  "Call FUNC at each headline selected by MATCH in SCOPE.
+  "Call FUNC at each heading selected by MATCH in SCOPE.
 
 FUNC is a function or a lisp form.  The function will be called without
-arguments, with the cursor positioned at the beginning of the headline.
+arguments, with the cursor positioned at the beginning of the heading.
 The return values of all calls to the function will be collected and
 returned as a list.
 
 The call to FUNC will be wrapped into a save-excursion form, so FUNC
 does not need to preserve point.  After evaluation, the cursor will be
-moved to the end of the line (presumably of the headline of the
+moved to the end of the line (presumably of the heading of the
 processed entry) and search continues from there.  Under some
 circumstances, this may not produce the wanted results.  For example,
 if you have removed (e.g. archived) the current (sub)tree it could
@@ -12519,8 +12519,8 @@ FUNC set the variable `org-map-continue-from' to the desired buffer
 position.
 
 MATCH is a tags/property/todo match as it is used in the agenda tags view.
-Only headlines that are matched by this query will be considered during
-the iteration.  When MATCH is nil or t, all headlines will be
+Only headings that are matched by this query will be considered during
+the iteration.  When MATCH is nil or t, all headings will be
 visited by the iteration.
 
 SCOPE determines the scope of this command.  It can be any of:
@@ -12673,7 +12673,7 @@ Modifications are made by side-effect.  Return new alist."
 (defun org-get-property-block (&optional beg force)
   "Return the (beg . end) range of the body of the property drawer.
 BEG is the beginning of the current subtree or the beginning of
-the document if before the first headline.  If it is not given,
+the document if before the first heading.  If it is not given,
 it will be found.  If the drawer does not exist, create it if
 FORCE is non-nil, or return nil."
   (org-with-wide-buffer
@@ -12943,7 +12943,7 @@ strings."
 				 (when (= (length ts) 2) (throw 'next ts)))))
 			   ts)))))
 		(goto-char beg)
-		;; First look for timestamps within headline.
+		;; First look for timestamps within heading.
 		(let ((ts (funcall find-ts (line-end-position) nil)))
 		  (if (= (length ts) 2) (setq props (nconc ts props))
 		    ;; Then find timestamps in the section, skipping
@@ -13297,7 +13297,7 @@ COLUMN formats in the current buffer."
 	     ;; It can happen, for example, in the following
 	     ;; situation:
 	     ;;
-	     ;; * Headline
+	     ;; * Heading
 	     ;;   :PROPERTIES:
 	     ;;   ...
 	     ;;   :END:
@@ -13415,7 +13415,7 @@ Point is left between drawer's boundaries."
 	      (beginning-of-line)
 	      (when (save-excursion
 		      (re-search-forward org-outline-regexp-bol rend t))
-		(user-error "Drawers cannot contain headlines"))
+		(user-error "Drawers cannot contain headings"))
 	      ;; Position point at the beginning of the first
 	      ;; non-blank line in region.  Insert drawer's opening
 	      ;; there, then indent it.
@@ -13730,7 +13730,7 @@ only headings."
        (when (org-at-heading-p)
 	 (point-marker))))))
 
-(defun org-find-exact-headline-in-buffer (heading &optional buffer pos-only)
+(defun org-find-exact-heading-in-buffer (heading &optional buffer pos-only)
   "Find node HEADING in BUFFER.
 Return a marker to the heading if it was found, or nil if not.
 If POS-ONLY is set, return just the position instead of a marker.
@@ -13749,8 +13749,8 @@ a priority cookie and tags in the standard locations."
 	   (move-marker (make-marker) (match-beginning 0))))))))
 
 (defun org-find-exact-heading-in-directory (heading &optional dir)
-  "Find Org node headline HEADING in all \".org\" files in directory DIR.
-When the target headline is found, return a marker to this location."
+  "Find Org node heading HEADING in all \".org\" files in directory DIR.
+When the target heading is found, return a marker to this location."
   (let ((files (directory-files (or dir default-directory)
 				t "\\`[^.#].*\\.org\\'"))
 	visiting m buffer)
@@ -13759,7 +13759,7 @@ When the target headline is found, return a marker to this location."
         (message "trying %s" file)
         (setq visiting (org-find-base-buffer-visiting file))
         (setq buffer (or visiting (find-file-noselect file)))
-        (setq m (org-find-exact-headline-in-buffer
+        (setq m (org-find-exact-heading-in-buffer
                  heading buffer))
         (when (and (not m) (not visiting)) (kill-buffer buffer))
         (and m (throw 'found m))))))
@@ -15782,7 +15782,7 @@ It makes sense to do so if `org-cdlatex-mode' is active and if the cursor is
      ;; Before any word on the line: No expansion possible.
      ((save-excursion (skip-chars-backward " \t") (bolp)) nil)
      ;; Just after first word on the line: Expand it.  Make sure it
-     ;; cannot happen on headlines, though.
+     ;; cannot happen on headings, though.
      ((save-excursion
 	(skip-chars-backward "a-zA-Z0-9*")
 	(skip-chars-backward " \t")
@@ -16804,9 +16804,9 @@ The detailed reaction depends on the user option `org-catch-invisible-edits'."
 	    (user-error "Edit in invisible region aborted, repeat to confirm with text visible"))))))))
 
 (defun org-fix-tags-on-the-fly ()
-  "Align tags in headline at point.
+  "Align tags in heading at point.
 Unlike `org-align-tags', this function does nothing if point is
-either not currently on a tagged headline or on a tag."
+either not currently on a tagged heading or on a tag."
   (when (and (org-match-line org-tag-line-re)
 	     (< (point) (match-beginning 1)))
     (org-align-tags)))
@@ -16935,7 +16935,7 @@ cycling) will not occur.")
   "Hook for functions to attach themselves to TAB.
 See `org-ctrl-c-ctrl-c-hook' for more information.
 This hook runs after it has been established that the cursor is not in a
-table, but before checking if the cursor is in a headline or if global cycling
+table, but before checking if the cursor is in a heading or if global cycling
 should be done.
 If any function in this hook returns t, not other actions like visibility
 cycling will be done.")
@@ -17011,13 +17011,13 @@ See `org-ctrl-c-ctrl-c-hook' for more information.")
 
 (defun org-modifier-cursor-error ()
   "Throw an error, a modified cursor command was applied in wrong context."
-  (user-error "This command is active in special context like tables, headlines or items"))
+  (user-error "This command is active in special context like tables, headings or items"))
 
 (defun org-shiftselect-error ()
   "Throw an error because Shift-Cursor command was applied in wrong context."
   (if (and (boundp 'shift-select-mode) shift-select-mode)
       (user-error "To use shift-selection with Org mode, customize `org-support-shift-select'")
-    (user-error "This command works only in special context like headlines or timestamps")))
+    (user-error "This command works only in special context like headings or timestamps")))
 
 (defun org-call-for-shift-select (cmd)
   (let ((this-command-keys-shift-translated t))
@@ -17124,7 +17124,7 @@ and returns at first non-nil value."
 	      (save-excursion
 		(goto-char (region-beginning))
 		(org-at-heading-p)))))
-    (when (org-check-for-hidden 'headlines) (org-hidden-tree-error))
+    (when (org-check-for-hidden 'headings) (org-hidden-tree-error))
     (call-interactively 'org-do-promote))
    ;; At an inline task.
    ((org-at-heading-p)
@@ -17162,7 +17162,7 @@ and returns at first non-nil value."
 	      (save-excursion
 		(goto-char (region-beginning))
 		(org-at-heading-p)))))
-    (when (org-check-for-hidden 'headlines) (org-hidden-tree-error))
+    (when (org-check-for-hidden 'headings) (org-hidden-tree-error))
     (call-interactively 'org-do-demote))
    ;; At an inline task.
    ((org-at-heading-p)
@@ -17177,12 +17177,12 @@ and returns at first non-nil value."
    (t (call-interactively 'forward-word))))
 
 (defun org-check-for-hidden (what)
-  "Check if there are hidden headlines/items in the current visual line.
-WHAT can be either `headlines' or `items'.  If the current line is
+  "Check if there are hidden headings/items in the current visual line.
+WHAT can be either `headings' or `items'.  If the current line is
 an outline or item heading and it has a folded subtree below it,
 this function returns t, nil otherwise."
   (let ((re (cond
-	     ((eq what 'headlines) org-outline-regexp-bol)
+	     ((eq what 'headings) org-outline-regexp-bol)
 	     ((eq what 'items) (org-item-beginning-re))
 	     (t (error "This should not happen"))))
 	beg end)
@@ -17330,7 +17330,7 @@ individual commands for more information."
 This does one of the following:
 
 - switch a timestamp at point one day into the future
-- on a headline, switch to the next TODO keyword
+- on a heading, switch to the next TODO keyword
 - on an item, switch entire list to the next bullet type
 - on a property line, switch to the next allowed value
 - on a clocktable definition line, move time block into the future
@@ -17370,7 +17370,7 @@ This does one of the following:
 This does one of the following:
 
 - switch a timestamp at point one day into the past
-- on a headline, switch to the previous TODO keyword.
+- on a heading, switch to the previous TODO keyword.
 - on an item, switch entire list to the previous bullet type
 - on a property line, switch to the previous allowed value
 - on a clocktable definition line, move time block into the past
@@ -17597,7 +17597,7 @@ Otherwise, return a user error."
 	   (_ (user-error "No special environment to edit here"))))))))
 
 (defun org-ctrl-c-ctrl-c (&optional arg)
-  "Set tags in headline, or update according to changed information at point.
+  "Set tags in heading, or update according to changed information at point.
 
 This command does many different things, depending on context:
 
@@ -17610,7 +17610,7 @@ This command does many different things, depending on context:
 
 - If the cursor is on a statistics cookie, update it.
 
-- If the cursor is in a headline, in an agenda or an org buffer,
+- If the cursor is in a heading, in an agenda or an org buffer,
   prompt for tags and insert them into the current line, aligned
   to `org-tags-column'.  When called with prefix arg, realign all
   tags in the current buffer.
@@ -17708,7 +17708,7 @@ This command does many different things, depending on context:
 	 (goto-char (org-element-property :post-affiliated context))
 	 (call-interactively 'org-footnote-action))
 	(`footnote-reference (call-interactively #'org-footnote-action))
-	((or `headline `inlinetask)
+	((or `heading `inlinetask)
 	 (save-excursion (goto-char (org-element-property :begin context))
 			 (call-interactively #'org-set-tags-command)))
 	(`item
@@ -17896,7 +17896,7 @@ Move point to the beginning of first heading or end of buffer."
 (defun org-delete-indentation (&optional arg)
   "Join current line to previous and fix whitespace at join.
 
-If previous line is a headline add to headline title.  Otherwise
+If previous line is a heading add to heading title.  Otherwise
 the function calls `delete-indentation'.
 
 I.e. with a non-nil optional argument, join the line with the
@@ -17907,7 +17907,7 @@ region."
 	(beginning-of-line (if arg 1 0))
 	(let ((case-fold-search nil))
 	  (looking-at org-complex-heading-regexp)))
-      ;; At headline.
+      ;; At heading.
       (let ((tags-column (when (match-beginning 5)
 			   (save-excursion (goto-char (match-beginning 5))
 					   (current-column))))
@@ -17999,9 +17999,9 @@ object (e.g., within a comment).  In these case, you need to use
      ((and (not (bolp))
 	   (let ((case-fold-search nil))
 	     (org-match-line org-complex-heading-regexp)))
-      ;; At headline.  Split line.  However, if point is on keyword,
+      ;; At heading.  Split line.  However, if point is on keyword,
       ;; priority cookie or tags, do not break any of them: add
-      ;; a newline after the headline instead.
+      ;; a newline after the heading instead.
       (let ((tags-column (and (match-beginning 5)
 			      (save-excursion (goto-char (match-beginning 5))
 					      (current-column))))
@@ -18095,8 +18095,8 @@ point into heading.
 
 In a region:
 
-- If the first non blank line is a headline, remove the stars
-  from all headlines in the region.
+- If the first non blank line is a heading, remove the stars
+  from all headings in the region.
 
 - If it is a normal line, turn each and every normal line (i.e.,
   not an heading or an item) in the region into headings.  If you
@@ -18147,7 +18147,7 @@ number of stars to add."
 	     (looking-at org-outline-regexp) (replace-match "")
 	     (setq toggled t))
 	   (forward-line)))
-	;; Case 2. Started at an item: change items into headlines.
+	;; Case 2. Started at an item: change items into headings.
 	;;         One star will be added by `org-list-to-subtree'.
 	((org-at-item-p)
 	 (while (< (point) end)
@@ -18167,7 +18167,7 @@ number of stars to add."
 	     (setq toggled t))
 	   (forward-line)))
 	;; Case 3. Started at normal text: make every line an heading,
-	;;         skipping headlines and items.
+	;;         skipping headings and items.
 	(t (let* ((stars
 		   (make-string
 		    (if (numberp nstars) nstars (or (org-current-level) 0)) ?*))
@@ -18715,11 +18715,11 @@ Each context entry is a list with a symbol naming the context, and
 two positions indicating start and end of the context.  Possible
 contexts are:
 
-:headline         anywhere in a headline
-:headline-stars   on the leading stars in a headline
-:todo-keyword     on a TODO keyword (including DONE) in a headline
-:tags             on the TAGS in a headline
-:priority         on the priority cookie in a headline
+:heading         anywhere in a heading
+:heading-stars   on the leading stars in a heading
+:todo-keyword     on a TODO keyword (including DONE) in a heading
+:tags             on the TAGS in a heading
+:priority         on the priority cookie in a heading
 :item             on the first line of a plain list item
 :item-bullet      on the bullet/number of a plain list item
 :checkbox         on the checkbox in a plain list item
@@ -18743,11 +18743,11 @@ and :keyword."
     ;; First the large context
     (cond
      ((org-at-heading-p t)
-      (push (list :headline (point-at-bol) (point-at-eol)) clist)
+      (push (list :heading (point-at-bol) (point-at-eol)) clist)
       (when (progn
 	      (beginning-of-line 1)
 	      (looking-at org-todo-line-tags-regexp))
-	(push (org-point-in-group p 1 :headline-stars) clist)
+	(push (org-point-in-group p 1 :heading-stars) clist)
 	(push (org-point-in-group p 2 :todo-keyword) clist)
 	(push (org-point-in-group p 4 :tags) clist))
       (goto-char p)
@@ -18832,7 +18832,7 @@ and :keyword."
 Also return a non-nil value when point is on one of the matches.
 
 Optional arguments LIM-UP and LIM-DOWN bound the search; they are
-buffer positions.  Default values are the positions of headlines
+buffer positions.  Default values are the positions of headings
 surrounding the point.
 
 The functions returns a cons cell whose car (resp. cdr) is the
@@ -18970,7 +18970,7 @@ earliest time on the cursor date that Org treats as that date
   "Mark the current subtree.
 This puts point at the start of the current subtree, and mark at
 the end.  If a numeric prefix UP is given, move up into the
-hierarchy of headlines by UP levels before marking the subtree."
+hierarchy of headings by UP levels before marking the subtree."
   (interactive "P")
   (org-with-limited-levels
    (cond ((org-at-heading-p) (beginning-of-line))
@@ -18997,7 +18997,7 @@ ELEMENT."
       (contentsp
        (cl-case type
 	 ((diary-sexp footnote-definition) 0)
-	 ((headline inlinetask nil)
+	 ((heading inlinetask nil)
 	  (if (not org-adapt-indentation) 0
 	    (let ((level (org-current-level)))
 	      (if level (1+ level) 0))))
@@ -19005,7 +19005,7 @@ ELEMENT."
 	 (t
 	  (goto-char start)
 	  (current-indentation))))
-      ((memq type '(headline inlinetask nil))
+      ((memq type '(heading inlinetask nil))
        (if (org-match-line "[ \t]*$")
 	   (org--get-expected-indentation element t)
 	 0))
@@ -19107,7 +19107,7 @@ Alignment is done according to `org-property-format', which see."
 
 Indentation is done according to the following rules:
 
-  - Footnote definitions, diary sexps, headlines and inline tasks
+  - Footnote definitions, diary sexps, headings and inline tasks
     have to start at column 0.
 
   - On the very first line of an element, consider, in order, the
@@ -19147,7 +19147,7 @@ list structure.  Instead, use \\<org-mode-map>`\\[org-shiftmetaleft]' or \
 Also align node properties according to `org-property-format'."
   (interactive)
   (unless (or (org-at-heading-p)
-              (and (eq org-adapt-indentation 'headline-data)
+              (and (eq org-adapt-indentation 'heading-data)
                    (not (or (org-at-clock-log-p)
                             (org-at-planning-p)))
                    (save-excursion
@@ -19664,7 +19664,7 @@ region only contains such lines."
       ;; Remove fixed width marker only in a fixed-with element.
       ;;
       ;; Add fixed width maker in paragraphs, in blank lines after
-      ;; elements or at the beginning of a headline or an inlinetask,
+      ;; elements or at the beginning of a heading or an inlinetask,
       ;; and before any one-line elements (e.g., a clock).
       (progn
         (beginning-of-line)
@@ -19675,7 +19675,7 @@ region only contains such lines."
                  (looking-at "[ \t]*\\(:\\(?: \\|$\\)\\)"))
             (replace-match
 	     "" nil nil nil (if (= (line-end-position) (match-end 0)) 0 1)))
-           ((and (memq type '(babel-call clock comment diary-sexp headline
+           ((and (memq type '(babel-call clock comment diary-sexp heading
 					 horizontal-rule keyword paragraph
 					 planning))
 		 (<= (org-element-property :post-affiliated element) (point)))
@@ -20117,10 +20117,10 @@ package ox-bibtex by Taru Karttunen."
 (defun org-beginning-of-line (&optional n)
   "Go to the beginning of the current visible line.
 
-If this is a headline, and `org-special-ctrl-a/e' is not nil or
+If this is a heading, and `org-special-ctrl-a/e' is not nil or
 symbol `reversed', on the first attempt move to where the
-headline text starts, and only move to beginning of line when the
-cursor is already before the start of the text of the headline.
+heading text starts, and only move to beginning of line when the
+cursor is already before the start of the text of the heading.
 
 If `org-special-ctrl-a/e' is symbol `reversed' then go to the
 start of the text on the second attempt.
@@ -20149,7 +20149,7 @@ With argument N not nil or 1, move forward N - 1 lines first."
      ;; out.
      ((and (bound-and-true-p visual-line-mode) (not (bolp))))
      ((let ((case-fold-search nil)) (looking-at org-complex-heading-regexp))
-      ;; At a headline, special position is before the title, but
+      ;; At a heading, special position is before the title, but
       ;; after any TODO keyword or priority cookie.
       (let ((refpos (min (1+ (or (match-end 3) (match-end 2) (match-end 1)))
 			 (line-end-position)))
@@ -20180,10 +20180,10 @@ With argument N not nil or 1, move forward N - 1 lines first."
 (defun org-end-of-line (&optional n)
   "Go to the end of the line, but before ellipsis, if any.
 
-If this is a headline, and `org-special-ctrl-a/e' is not nil or
+If this is a heading, and `org-special-ctrl-a/e' is not nil or
 symbol `reversed', ignore tags on the first attempt, and only
 move to after the tags when the cursor is already beyond the end
-of the headline.
+of the heading.
 
 If `org-special-ctrl-a/e' is symbol `reversed' then ignore tags
 on the second attempt.
@@ -20199,7 +20199,7 @@ With argument N not nil or 1, move forward N - 1 lines first."
 	(beginning-of-visual-line n)
       (move-beginning-of-line n))
     (cond
-     ;; At a headline, with tags.
+     ;; At a heading, with tags.
      ((and special
 	   (save-excursion
 	     (beginning-of-line)
@@ -20215,7 +20215,7 @@ With argument N not nil or 1, move forward N - 1 lines first."
 			       (end-of-visual-line)
 			       (point)))))
 	;; If `end-of-visual-line' brings us before end of line or
-	;; even tags, i.e., the headline spans over multiple visual
+	;; even tags, i.e., the heading spans over multiple visual
 	;; lines, move there.
 	(cond ((and visual-end
 		    (< visual-end tags)
@@ -20300,7 +20300,7 @@ depending on context."
     (when (and (get-char-property (line-end-position) 'invisible)
 	       org-ctrl-k-protect-subtree
 	       (or (eq org-ctrl-k-protect-subtree 'error)
-		   (not (y-or-n-p "Kill hidden subtree along with headline? "))))
+		   (not (y-or-n-p "Kill hidden subtree along with heading? "))))
       (user-error
        (substitute-command-keys
 	"`\\[org-kill-line]' aborted as it would kill a hidden subtree")))
@@ -20323,7 +20323,7 @@ depending on context."
 This command will look at the current kill and check if is a single
 subtree, or a series of subtrees[1].  If it passes the test, and if the
 cursor is at the beginning of a line or after the stars of a currently
-empty headline, then the yank is handled specially.  How exactly depends
+empty heading, then the yank is handled specially.  How exactly depends
 on the value of the following variables.
 
 `org-yank-folded-subtrees'
@@ -20425,7 +20425,7 @@ interactive command with similar behavior."
   (condition-case nil
       (outline-back-to-heading invisible-ok)
     (error
-     (user-error "Before first headline at position %d in buffer %s"
+     (user-error "Before first heading at position %d in buffer %s"
 		 (point) (current-buffer)))))
 
 (defun org-back-to-heading-or-point-min (&optional invisible-ok)
@@ -20445,27 +20445,27 @@ instead of back to heading."
      (null (re-search-backward org-outline-regexp-bol nil t)))))
 
 (defun org-at-heading-p (&optional _)
-  "Non-nil when on a headline."
+  "Non-nil when on a heading."
   (outline-on-heading-p t))
 
 (defun org-in-commented-heading-p (&optional no-inheritance)
   "Non-nil if point is under a commented heading.
-This function also checks ancestors of the current headline,
+This function also checks ancestors of the current heading,
 unless optional argument NO-INHERITANCE is non-nil."
   (cond
    ((org-before-first-heading-p) nil)
-   ((let ((headline (nth 4 (org-heading-components))))
-      (and headline
+   ((let ((heading (nth 4 (org-heading-components))))
+      (and heading
 	   (let ((case-fold-search nil))
 	     (string-match-p (concat "^" org-comment-string "\\(?: \\|$\\)")
-			     headline)))))
+			     heading)))))
    (no-inheritance nil)
    (t
     (save-excursion (and (org-up-heading-safe) (org-in-commented-heading-p))))))
 
 (defun org-in-archived-heading-p (&optional no-inheritance)
   "Non-nil if point is under an archived heading.
-This function also checks ancestors of the current headline,
+This function also checks ancestors of the current heading,
 unless optional argument NO-INHERITANCE is non-nil."
   (cond
    ((org-before-first-heading-p) nil)
@@ -20501,8 +20501,8 @@ unless optional argument NO-INHERITANCE is non-nil."
     (move-beginning-of-line 1)
     (looking-at org-block-regexp)))
 
-(defun org-point-at-end-of-empty-headline ()
-  "If point is at the end of an empty headline, return t, else nil.
+(defun org-point-at-end-of-empty-heading ()
+  "If point is at the end of an empty heading, return t, else nil.
 If the heading only contains a TODO keyword, it is still considered
 empty."
   (let ((case-fold-search nil))
@@ -20529,7 +20529,7 @@ With argument, move up ARG levels."
 (defun org-up-heading-safe ()
   "Move to the heading line of which the present line is a subheading.
 This version will not throw an error.  It will return the level of the
-headline found, or nil if no higher level is found.
+heading found, or nil if no higher level is found.
 
 Also, this function will be a lot faster than `outline-up-heading',
 because it relies on stars being the outline starters.  This can really
@@ -20562,8 +20562,8 @@ make a significant difference in outlines with very many siblings."
   "Move to the heading line of which the present is a subheading, or point-min.
 This version is needed to make point-min behave like a virtual
 heading of level 0 for property-inheritance.  It will return the
-level of the headline found (down to 0) or nil if already at a
-point before the first headline or at point-min."
+level of the heading found (down to 0) or nil if already at a
+point before the first heading or at point-min."
   (when (ignore-errors (org-back-to-heading t))
     (if (< 1 (funcall outline-level))
 	(org-up-heading-safe)
@@ -20604,7 +20604,7 @@ move point."
 	nil))))
 
 (defun org-show-siblings ()
-  "Show all siblings of the current headline."
+  "Show all siblings of the current heading."
   (save-excursion
     (while (org-goto-sibling) (org-flag-heading nil)))
   (save-excursion
@@ -20670,7 +20670,7 @@ If there is no such heading, return nil."
   "Goto to the end of a subtree."
   ;; This contains an exact copy of the original function, but it uses
   ;; `org-back-to-heading-or-point-min', to make it work also in invisible
-  ;; trees and before first headline.  And is uses an invisible-ok argument.
+  ;; trees and before first heading.  And is uses an invisible-ok argument.
   ;; Under Emacs this is not needed, but the old outline.el needs this fix.
   ;; Furthermore, when used inside Org, finding the end of a large subtree
   ;; with many children and grandchildren etc, this can be much faster
@@ -20760,7 +20760,7 @@ non-nil it will also look at invisible ones."
     (if (org-before-first-heading-p)
 	(if backward? (goto-char (point-min)) (outline-next-heading))
       (org-back-to-heading invisible-ok)
-      (unless backward? (end-of-line))	;do not match current headline
+      (unless backward? (end-of-line))	;do not match current heading
       (let ((level (- (match-end 0) (match-beginning 0) 1))
 	    (f (if backward? #'re-search-backward #'re-search-forward))
 	    (count (if arg (abs arg) 1))
@@ -21066,7 +21066,7 @@ See `org-backward-paragraph'."
 	   ;; There is a blank line above.  Move there.
 	   ((and (org-previous-line-empty-p)
                  (let ((lep (line-end-position 0)))
-                   ;; When the first headline start at point 2, don't choke while
+                   ;; When the first heading start at point 2, don't choke while
                    ;; checking with `org-invisible-p'.
                    (or (= lep 1)
 		       (not (org-invisible-p (1- (line-end-position 0)))))))
@@ -21148,11 +21148,11 @@ Move to the previous element at the same level, when possible."
   (interactive)
   (cond ((bobp) (user-error "Cannot move further up"))
 	((org-with-limited-levels (org-at-heading-p))
-	 ;; At a headline, move to the previous one, if any, or stay
+	 ;; At a heading, move to the previous one, if any, or stay
 	 ;; here.
 	 (let ((origin (point)))
 	   (org-with-limited-levels (org-backward-heading-same-level 1))
-	   ;; When current headline has no sibling above, move to its
+	   ;; When current heading has no sibling above, move to its
 	   ;; parent.
 	   (when (= (point) origin)
 	     (or (org-with-limited-levels (org-up-heading-safe))
@@ -21207,9 +21207,9 @@ Move to the previous element at the same level, when possible."
   (interactive)
   (let ((elem (or (org-element-at-point)
 		  (user-error "No element at point"))))
-    (if (eq (org-element-type elem) 'headline)
+    (if (eq (org-element-type elem) 'heading)
 	;; Preserve point when moving a whole tree, even if point was
-	;; on blank lines below the headline.
+	;; on blank lines below the heading.
 	(let ((offset (skip-chars-backward " \t\n")))
 	  (unwind-protect (org-move-subtree-up)
 	    (forward-char (- offset))))
@@ -21245,8 +21245,8 @@ Move to the previous element at the same level, when possible."
     (goto-char (org-element-property :end elem))
     (let ((next-elem (org-element-at-point)))
       (when (or (org-element-nested-p elem next-elem)
-		(and (eq (org-element-type next-elem) 'headline)
-		     (not (eq (org-element-type elem) 'headline))))
+		(and (eq (org-element-type next-elem) 'heading)
+		     (not (eq (org-element-type elem) 'heading))))
 	(goto-char pos)
 	(user-error "Cannot drag element forward"))
       ;; Compute new position of point: it's shifted by NEXT-ELEM
@@ -21314,7 +21314,7 @@ ones already marked."
   (interactive)
   (let ((elem (org-element-at-point)))
     (cond
-     ((eq (car elem) 'headline)
+     ((eq (car elem) 'heading)
       (narrow-to-region
        (org-element-property :begin elem)
        (org-element-property :end elem)))
@@ -21347,7 +21347,7 @@ modified."
 	   (unindent-tree
 	    (lambda (contents)
 	      (dolist (element (reverse contents))
-		(if (memq (org-element-type element) '(headline section))
+		(if (memq (org-element-type element) '(heading section))
 		    (funcall unindent-tree (org-element-contents element))
 		  (save-excursion
 		    (save-restriction
@@ -21393,7 +21393,7 @@ Started from `gnus-info-find-node'."
                      (export-block . "(org) ASCII/Latin-1/UTF-8 export")
                      (fixed-width . ,default-org-info-node)
                      (footnote-definition . "(org) Creating Footnotes")
-                     (headline . "(org) Document Structure")
+                     (heading . "(org) Document Structure")
                      (horizontal-rule . "(org) Built-in Table Editor")
                      (inlinetask . ,default-org-info-node)
                      (item . "(org) Plain Lists")
diff --git a/lisp/ox-ascii.el b/lisp/ox-ascii.el
index d1762d41c..e0275c29c 100644
--- a/lisp/ox-ascii.el
+++ b/lisp/ox-ascii.el
@@ -44,7 +44,7 @@
 ;; overriding `org-ascii-charset' variable on the fly by the ext-plist
 ;; mechanism.
 ;;
-;; We also install a filter for headlines and sections, in order to
+;; We also install a filter for headings and sections, in order to
 ;; control blank lines separating them in output string.
 
 (org-export-define-backend 'ascii
@@ -60,7 +60,7 @@
     (export-snippet . org-ascii-export-snippet)
     (fixed-width . org-ascii-fixed-width)
     (footnote-reference . org-ascii-footnote-reference)
-    (headline . org-ascii-headline)
+    (heading . org-ascii-heading)
     (horizontal-rule . org-ascii-horizontal-rule)
     (inline-src-block . org-ascii-inline-src-block)
     (inlinetask . org-ascii-inlinetask)
@@ -116,10 +116,10 @@
 	(?u "As UTF-8 file"
 	    (lambda (a s v b)
 	      (org-ascii-export-to-ascii a s v b '(:ascii-charset utf-8))))))
-  :filters-alist '((:filter-headline . org-ascii-filter-headline-blank-lines)
+  :filters-alist '((:filter-heading . org-ascii-filter-heading-blank-lines)
 		   (:filter-parse-tree org-ascii-filter-paragraph-spacing
 				       org-ascii-filter-comment-spacing)
-		   (:filter-section . org-ascii-filter-headline-blank-lines))
+		   (:filter-section . org-ascii-filter-heading-blank-lines))
   :options-alist
   '((:subtitle "SUBTITLE" nil nil parse)
     (:ascii-bullets nil nil org-ascii-bullets)
@@ -129,7 +129,7 @@
     (:ascii-format-drawer-function nil nil org-ascii-format-drawer-function)
     (:ascii-format-inlinetask-function
      nil nil org-ascii-format-inlinetask-function)
-    (:ascii-headline-spacing nil nil org-ascii-headline-spacing)
+    (:ascii-heading-spacing nil nil org-ascii-heading-spacing)
     (:ascii-indented-line-width nil nil org-ascii-indented-line-width)
     (:ascii-inlinetask-width nil nil org-ascii-inlinetask-width)
     (:ascii-inner-margin nil nil org-ascii-inner-margin)
@@ -172,7 +172,7 @@ This number includes margin size, as set in
 
 (defcustom org-ascii-inner-margin 2
   "Width of the inner margin, in number of characters.
-Inner margin is applied between each headline."
+Inner margin is applied between each heading."
   :group 'org-export-ascii
   :version "24.4"
   :package-version '(Org . "8.0")
@@ -204,11 +204,11 @@ This number ignores any margin."
   :package-version '(Org . "8.0")
   :type 'integer)
 
-(defcustom org-ascii-headline-spacing '(1 . 2)
-  "Number of blank lines inserted around headlines.
+(defcustom org-ascii-heading-spacing '(1 . 2)
+  "Number of blank lines inserted around headings.
 
 This variable can be set to a cons cell.  In that case, its car
-represents the number of blank lines present before headline
+represents the number of blank lines present before heading
 contents whereas its cdr reflects the number of blank lines after
 contents.
 
@@ -273,8 +273,8 @@ and whose value is a list of characters.
 
 For each supported charset, this variable associates a sequence
 of underline characters.  In a sequence, the characters will be
-used in order for headlines level 1, 2, ...  If no character is
-available for a given level, the headline won't be underlined."
+used in order for headings level 1, 2, ...  If no character is
+available for a given level, the heading won't be underlined."
   :group 'org-export-ascii
   :version "24.4"
   :package-version '(Org . "8.0")
@@ -292,7 +292,7 @@ available for a given level, the headline won't be underlined."
 (defcustom org-ascii-bullets '((ascii ?* ?+ ?-)
 			       (latin1 ?§ ?¶)
 			       (utf-8 ?◊))
-  "Bullet characters for headlines converted to lists in ASCII export.
+  "Bullet characters for headings converted to lists in ASCII export.
 
 Alist whose key is a symbol among `ascii', `latin1' and `utf-8'
 and whose value is a list of characters.
@@ -307,18 +307,18 @@ representation."
   :version "24.4"
   :package-version '(Org . "8.0")
   :type '(list
-	  (cons :tag "Bullet characters for low level headlines"
+	  (cons :tag "Bullet characters for low level headings"
 		(const :tag "ASCII charset" ascii)
 		(repeat character))
-	  (cons :tag "Bullet characters for low level headlines"
+	  (cons :tag "Bullet characters for low level headings"
 		(const :tag "Latin-1 charset" latin1)
 		(repeat character))
-	  (cons :tag "Bullet characters for low level headlines"
+	  (cons :tag "Bullet characters for low level headings"
 		(const :tag "UTF-8 charset" utf-8)
 		(repeat character))))
 
 (defcustom org-ascii-links-to-notes t
-  "Non-nil means convert links to notes before the next headline.
+  "Non-nil means convert links to notes before the next heading.
 When nil, the link will be exported in place.  If the line
 becomes long in this way, it will be wrapped."
   :group 'org-export-ascii
@@ -435,7 +435,7 @@ nil to ignore the inline task."
 ;; `org-ascii--list-tables' does the same for table elements.
 
 ;; The third category includes general helper functions.
-;; `org-ascii--build-title' creates the title for a given headline
+;; `org-ascii--build-title' creates the title for a given heading
 ;; or inlinetask element.  `org-ascii--build-caption' returns the
 ;; caption string associated to a table or a src-block.
 ;; `org-ascii--describe-links' creates notes about links for
@@ -551,9 +551,9 @@ INFO is a plist used as a communication channel."
   "Return maximum text width for ELEMENT's contents.
 INFO is a plist used as a communication channel."
   (pcase (org-element-type element)
-    ;; Elements with an absolute width: `headline' and `inlinetask'.
+    ;; Elements with an absolute width: `heading' and `inlinetask'.
     (`inlinetask (plist-get info :ascii-inlinetask-width))
-    (`headline
+    (`heading
      (- (plist-get info :ascii-text-width)
         (let ((low-level-rank (org-export-low-level-p element info)))
           (if low-level-rank (* low-level-rank 2)
@@ -572,14 +572,14 @@ INFO is a plist used as a communication channel."
                ;; No inlinetask: Remove global margin from text width.
                (- (plist-get info :ascii-text-width)
                   (plist-get info :ascii-global-margin)
-                  (let ((parent (org-export-get-parent-headline element)))
+                  (let ((parent (org-export-get-parent-heading element)))
                     ;; Inner margin doesn't apply to text before first
-                    ;; headline.
+                    ;; heading.
                     (if (not parent) 0
                       (let ((low-level-rank
                              (org-export-low-level-p parent info)))
                         ;; Inner margin doesn't apply to contents of
-                        ;; low level headlines, since they've got their
+                        ;; low level headings, since they've got their
                         ;; own indentation mechanism.
                         (if low-level-rank (* low-level-rank 2)
                           (plist-get info :ascii-inner-margin)))))))))
@@ -638,7 +638,7 @@ Return value is a symbol among `left', `center', `right' and
     (element info text-width &optional underline notags toc)
   "Format ELEMENT title and return it.
 
-ELEMENT is either an `headline' or `inlinetask' element.  INFO is
+ELEMENT is either an `heading' or `inlinetask' element.  INFO is
 a plist used as a communication channel.  TEXT-WIDTH is an
 integer representing the maximum length of a line.
 
@@ -651,19 +651,19 @@ the title.
 
 When optional argument TOC is non-nil, use optional title if
 possible.  It doesn't apply to `inlinetask' elements."
-  (let* ((headlinep (eq (org-element-type element) 'headline))
+  (let* ((headingp (eq (org-element-type element) 'heading))
 	 (numbers
-	  ;; Numbering is specific to headlines.
-	  (and headlinep
-	       (org-export-numbered-headline-p element info)
-	       (let ((numbering (org-export-get-headline-number element info)))
+	  ;; Numbering is specific to headings.
+	  (and headingp
+	       (org-export-numbered-heading-p element info)
+	       (let ((numbering (org-export-get-heading-number element info)))
 		 (if toc (format "%d. " (org-last numbering))
 		   (concat (mapconcat #'number-to-string numbering ".")
 			   " ")))))
 	 (text
 	  (org-trim
 	   (org-export-data
-	    (if (and toc headlinep) (org-export-get-alt-title element info)
+	    (if (and toc headingp) (org-export-get-alt-title element info)
 	      (org-element-property :title element))
 	    info)))
 	 (todo
@@ -689,9 +689,9 @@ possible.  It doesn't apply to `inlinetask' elements."
 		(max (- text-width  (1+ (string-width first-part)))
 		     (string-width tags)))
 	tags))
-     ;; Maybe underline text, if ELEMENT type is `headline' and an
+     ;; Maybe underline text, if ELEMENT type is `heading' and an
      ;; underline character has been defined.
-     (when (and underline headlinep)
+     (when (and underline headingp)
        (let ((under-char
 	      (nth (1- (org-export-get-relative-level element info))
 		   (cdr (assq (plist-get info :ascii-charset)
@@ -760,17 +760,17 @@ contents according to the specified scope."
 	    (- (plist-get info :ascii-text-width)
 	       (plist-get info :ascii-global-margin)))))
      (mapconcat
-      (lambda (headline)
-	(let* ((level (org-export-get-relative-level headline info))
+      (lambda (heading)
+	(let* ((level (org-export-get-relative-level heading info))
 	       (indent (* (1- level) 3)))
 	  (concat
 	   (unless (zerop indent) (concat (make-string (1- indent) ?.) " "))
 	   (org-ascii--build-title
-	    headline info (- text-width indent) nil
+	    heading info (- text-width indent) nil
 	    (or (not (plist-get info :with-tags))
 		(eq (plist-get info :with-tags) 'not-in-toc))
 	    'toc))))
-      (org-export-collect-headlines info n scope) "\n"))))
+      (org-export-collect-headings info n scope) "\n"))))
 
 (defun org-ascii--list-listings (keyword info)
   "Return a list of listings.
@@ -854,7 +854,7 @@ generation.  INFO is a plist used as a communication channel."
 
 (defun org-ascii--unique-links (element info)
   "Return a list of unique link references in ELEMENT.
-ELEMENT is either a headline element or a section element.  INFO
+ELEMENT is either a heading element or a section element.  INFO
 is a plist used as a communication channel."
   (let* (seen
 	 (unique-link-p
@@ -879,11 +879,11 @@ is a plist used as a communication channel."
 		(push footprint seen) link)))))
     (org-element-map (if (eq (org-element-type element) 'section)
 			 element
-		       ;; In a headline, only retrieve links in title
+		       ;; In a heading, only retrieve links in title
 		       ;; and relative section, not in children.
 		       (list (org-element-property :title element)
 			     (car (org-element-contents element))))
-	'link unique-link-p info nil 'headline t)))
+	'link unique-link-p info nil 'heading t)))
 
 (defun org-ascii--describe-datum (datum info)
   "Describe DATUM object or element.
@@ -892,11 +892,11 @@ If DATUM is a string, consider it to be a file name, per
 as a plist."
   (pcase (org-element-type datum)
     (`plain-text (format "See file %s" datum)) ;External file
-    (`headline
+    (`heading
      (format (org-ascii--translate "See section %s" info)
-	     (if (org-export-numbered-headline-p datum info)
+	     (if (org-export-numbered-heading-p datum info)
 		 (mapconcat #'number-to-string
-			    (org-export-get-headline-number datum info)
+			    (org-export-get-heading-number datum info)
 			    ".")
 	       (org-export-data (org-element-property :title datum) info))))
     (_
@@ -906,11 +906,11 @@ as a plist."
 	   ;; container it refers to.
 	   (enumerable
 	    (org-element-lineage datum
-				 '(headline paragraph src-block table) t)))
+				 '(heading paragraph src-block table) t)))
        (pcase (org-element-type enumerable)
-	 (`headline
+	 (`heading
 	  (format (org-ascii--translate "See section %s" info)
-		  (if (org-export-numbered-headline-p enumerable info)
+		  (if (org-export-numbered-heading-p enumerable info)
 		      (mapconcat #'number-to-string number ".")
 		    (org-export-data
 		     (org-element-property :title enumerable) info))))
@@ -1292,36 +1292,36 @@ CONTENTS is nil.  INFO is a plist holding contextual information."
   (format "[%s]" (org-export-get-footnote-number footnote-reference info)))
 
 
-;;;; Headline
+;;;; Heading
 
-(defun org-ascii-headline (headline contents info)
-  "Transcode a HEADLINE element from Org to ASCII.
-CONTENTS holds the contents of the headline.  INFO is a plist
+(defun org-ascii-heading (heading contents info)
+  "Transcode a HEADING element from Org to ASCII.
+CONTENTS holds the contents of the heading.  INFO is a plist
 holding contextual information."
   ;; Don't export footnote section, which will be handled at the end
   ;; of the template.
-  (unless (org-element-property :footnote-section-p headline)
-    (let* ((low-level (org-export-low-level-p headline info))
-	   (width (org-ascii--current-text-width headline info))
+  (unless (org-element-property :footnote-section-p heading)
+    (let* ((low-level (org-export-low-level-p heading info))
+	   (width (org-ascii--current-text-width heading info))
 	   ;; Export title early so that any link in it can be
 	   ;; exported and seen in `org-ascii--unique-links'.
-	   (title (org-ascii--build-title headline info width (not low-level)))
-	   ;; Blank lines between headline and its contents.
-	   ;; `org-ascii-headline-spacing', when set, overwrites
+	   (title (org-ascii--build-title heading info width (not low-level)))
+	   ;; Blank lines between heading and its contents.
+	   ;; `org-ascii-heading-spacing', when set, overwrites
 	   ;; original buffer's spacing.
 	   (pre-blanks
-	    (make-string (or (car (plist-get info :ascii-headline-spacing))
-			     (org-element-property :pre-blank headline)
+	    (make-string (or (car (plist-get info :ascii-heading-spacing))
+			     (org-element-property :pre-blank heading)
 			     0)
 			 ?\n))
 	   (links (and (plist-get info :ascii-links-to-notes)
 		       (org-ascii--describe-links
-			(org-ascii--unique-links headline info) width info)))
+			(org-ascii--unique-links heading info) width info)))
 	   ;; Re-build contents, inserting section links at the right
 	   ;; place.  The cost is low since build results are cached.
 	   (body
 	    (if (not (org-string-nw-p links)) contents
-	      (let* ((contents (org-element-contents headline))
+	      (let* ((contents (org-element-contents heading))
 		     (section (let ((first (car contents)))
 				(and (eq (org-element-type first) 'section)
 				     first))))
@@ -1343,7 +1343,7 @@ holding contextual information."
 	    (concat bullet title "\n" pre-blanks
 		    ;; Contents, indented by length of bullet.
 		    (org-ascii--indent-string body (length bullet))))
-	;; Else: Standard headline.
+	;; Else: Standard heading.
 	(concat title "\n" pre-blanks body)))))
 
 
@@ -1401,7 +1401,7 @@ of the parameters."
       (make-string width (if utf8p ?━ ?_)))
      ;; Flush the inlinetask to the right.
      (- (plist-get info :ascii-text-width) (plist-get info :ascii-global-margin)
-	(if (not (org-export-get-parent-headline inlinetask)) 0
+	(if (not (org-export-get-parent-heading inlinetask)) 0
 	  (plist-get info :ascii-inner-margin))
 	(org-ascii--current-text-width inlinetask info)))))
 
@@ -1517,7 +1517,7 @@ information."
       (org-ascii--justify-element
        (let ((case-fold-search t))
 	 (cond
-	  ((string-match-p "\\<headlines\\>" value)
+	  ((string-match-p "\\<headings\\>" value)
 	   (let ((depth (and (string-match "\\<[0-9]+\\>" value)
 			     (string-to-number (match-string 0 value))))
 		 (scope
@@ -1594,10 +1594,10 @@ INFO is a plist holding contextual information."
 			     (org-ascii--describe-datum destination info)))))
 	  ;; External file.
 	  (`plain-text destination)
-	  (`headline
-	   (if (org-export-numbered-headline-p destination info)
+	  (`heading
+	   (if (org-export-numbered-heading-p destination info)
 	       (mapconcat #'number-to-string
-			  (org-export-get-headline-number destination info)
+			  (org-export-get-heading-number destination info)
 			  ".")
 	     (org-export-data (org-element-property :title destination) info)))
 	  ;; Handle enumerable elements and targets within them.
@@ -1742,7 +1742,7 @@ contextual information."
   (let ((links
 	 (and (plist-get info :ascii-links-to-notes)
 	      ;; Take care of links in first section of the document.
-	      (not (org-element-lineage section '(headline)))
+	      (not (org-element-lineage section '(heading)))
 	      (org-ascii--describe-links
 	       (org-ascii--unique-links section info)
 	       (org-ascii--current-text-width section info)
@@ -1750,9 +1750,9 @@ contextual information."
     (org-ascii--indent-string
      (if (not (org-string-nw-p links)) contents
        (concat (org-element-normalize-string contents) "\n\n" links))
-     ;; Do not apply inner margin if parent headline is low level.
-     (let ((headline (org-export-get-parent-headline section)))
-       (if (or (not headline) (org-export-low-level-p headline info)) 0
+     ;; Do not apply inner margin if parent heading is low level.
+     (let ((heading (org-export-get-parent-heading section)))
+       (if (or (not heading) (org-export-low-level-p heading info)) 0
 	 (plist-get info :ascii-inner-margin))))))
 
 
@@ -2025,19 +2025,19 @@ contextual information."
 \f
 ;;; Filters
 
-(defun org-ascii-filter-headline-blank-lines (headline _backend info)
-  "Filter controlling number of blank lines after a headline.
+(defun org-ascii-filter-heading-blank-lines (heading _backend info)
+  "Filter controlling number of blank lines after a heading.
 
-HEADLINE is a string representing a transcoded headline.  BACKEND
+HEADING is a string representing a transcoded heading.  BACKEND
 is symbol specifying back-end used for export.  INFO is plist
 containing the communication channel.
 
 This function only applies to `ascii' back-end.  See
-`org-ascii-headline-spacing' for information."
-  (let ((headline-spacing (plist-get info :ascii-headline-spacing)))
-    (if (not headline-spacing) headline
-      (let ((blanks (make-string (1+ (cdr headline-spacing)) ?\n)))
-	(replace-regexp-in-string "\n\\(?:\n[ \t]*\\)*\\'" blanks headline)))))
+`org-ascii-heading-spacing' for information."
+  (let ((heading-spacing (plist-get info :ascii-heading-spacing)))
+    (if (not heading-spacing) heading
+      (let ((blanks (make-string (1+ (cdr heading-spacing)) ?\n)))
+	(replace-regexp-in-string "\n\\(?:\n[ \t]*\\)*\\'" blanks heading)))))
 
 (defun org-ascii-filter-paragraph-spacing (tree _backend info)
   "Filter controlling number of blank lines between paragraphs.
@@ -2101,7 +2101,7 @@ asynchronously.  The resulting buffer should be accessible
 through the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
@@ -2136,7 +2136,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
diff --git a/lisp/ox-beamer.el b/lisp/ox-beamer.el
index 4b24e8ed3..ae9f56370 100644
--- a/lisp/ox-beamer.el
+++ b/lisp/ox-beamer.el
@@ -53,21 +53,21 @@
   :version "24.2")
 
 (defcustom org-beamer-frame-level 1
-  "The level at which headlines become frames.
+  "The level at which headings become frames.
 
-Headlines at a lower level will be translated into a sectioning
+Headings at a lower level will be translated into a sectioning
 structure.  At a higher level, they will be translated into
 blocks.
 
-If a headline with a \"BEAMER_env\" property set to \"frame\" is
+If a heading with a \"BEAMER_env\" property set to \"frame\" is
 found within a tree, its level locally overrides this number.
 
-This variable has no effect on headlines with the \"BEAMER_env\"
+This variable has no effect on headings with the \"BEAMER_env\"
 property set to either \"ignoreheading\", \"appendix\", or
 \"note\", which will respectively, be invisible, become an
 appendix or a note.
 
-This integer is relative to the minimal level of a headline
+This integer is relative to the minimal level of a heading
 within the parse tree, defined as 1."
   :group 'org-export-beamer
   :type 'integer)
@@ -109,10 +109,10 @@ open    The opening template for the environment, with the following escapes
         %R   the raw BEAMER_act value
         %o   the options argument, with square brackets
         %O   the raw BEAMER_opt value
-        %h   the headline text
-        %r   the raw headline text (i.e. without any processing)
-        %H   if there is headline text, that raw text in {} braces
-        %U   if there is headline text, that raw text in [] brackets
+        %h   the heading text
+        %r   the raw heading text (i.e. without any processing)
+        %H   if there is heading text, that raw text in {} braces
+        %U   if there is heading text, that raw text in [] brackets
 close   The closing string of the environment."
   :group 'org-export-beamer
   :version "24.4"
@@ -238,7 +238,7 @@ Return overlay specification, as a string, or nil."
 	      (if a (org-beamer-export-to-pdf t s v b)
 		(org-open-file (org-beamer-export-to-pdf nil s v b)))))))
   :options-alist
-  '((:headline-levels nil "H" org-beamer-frame-level)
+  '((:heading-levels nil "H" org-beamer-frame-level)
     (:latex-class "LATEX_CLASS" nil "beamer" t)
     (:beamer-subtitle-format nil nil org-beamer-subtitle-format)
     (:beamer-column-view-format "COLUMNS" nil org-beamer-column-view-format)
@@ -255,7 +255,7 @@ Return overlay specification, as a string, or nil."
   :translate-alist '((bold . org-beamer-bold)
 		     (export-block . org-beamer-export-block)
 		     (export-snippet . org-beamer-export-snippet)
-		     (headline . org-beamer-headline)
+		     (heading . org-beamer-heading)
 		     (item . org-beamer-item)
 		     (keyword . org-beamer-keyword)
 		     (link . org-beamer-link)
@@ -305,33 +305,33 @@ channel."
 	   value))))
 
 
-;;;; Headline
+;;;; Heading
 ;;
-;; The main function to translate a headline is
-;; `org-beamer-headline'.
+;; The main function to translate a heading is
+;; `org-beamer-heading'.
 ;;
-;; Depending on the level at which a headline is considered as
-;; a frame (given by `org-beamer--frame-level'), the headline is
+;; Depending on the level at which a heading is considered as
+;; a frame (given by `org-beamer--frame-level'), the heading is
 ;; either a section (`org-beamer--format-section'), a frame
 ;; (`org-beamer--format-frame') or a block
 ;; (`org-beamer--format-block').
 ;;
-;; `org-beamer-headline' also takes care of special environments
+;; `org-beamer-heading' also takes care of special environments
 ;; like "ignoreheading", "note", "noteNH", "appendix" and
 ;; "againframe".
 
-(defun org-beamer--get-label (headline info)
-  "Return label for HEADLINE, as a string.
+(defun org-beamer--get-label (heading info)
+  "Return label for HEADING, as a string.
 
 INFO is a plist used as a communication channel.
 
 The value is either the label specified in \"BEAMER_opt\"
 property, the custom ID, if there is one and
 `:latex-prefer-user-labels' property has a non-nil value, or
-a unique internal label.  This function assumes HEADLINE will be
+a unique internal label.  This function assumes HEADING will be
 treated as a frame."
   (cond
-   ((let ((opt (org-element-property :BEAMER_OPT headline)))
+   ((let ((opt (org-element-property :BEAMER_OPT heading)))
       (and (stringp opt)
 	   (string-match "\\(?:^\\|,\\)label=\\(.*?\\)\\(?:$\\|,\\)" opt)
 	   (let ((label (match-string 1 opt)))
@@ -339,39 +339,39 @@ treated as a frame."
 		 (substring label 1 -1)
 	       label)))))
    ((and (plist-get info :latex-prefer-user-labels)
-	 (org-element-property :CUSTOM_ID headline)))
-   (t (format "sec:%s" (org-export-get-reference headline info)))))
+	 (org-element-property :CUSTOM_ID heading)))
+   (t (format "sec:%s" (org-export-get-reference heading info)))))
 
-(defun org-beamer--frame-level (headline info)
-  "Return frame level in subtree containing HEADLINE.
+(defun org-beamer--frame-level (heading info)
+  "Return frame level in subtree containing HEADING.
 INFO is a plist used as a communication channel."
   (or
    ;; 1. Look for "frame" environment in parents, starting from the
    ;;    farthest.
    (catch 'exit
-     (dolist (parent (nreverse (org-element-lineage headline)))
+     (dolist (parent (nreverse (org-element-lineage heading)))
        (let ((env (org-element-property :BEAMER_ENV parent)))
 	 (when (and env (member-ignore-case env '("frame" "fullframe")))
 	   (throw 'exit (org-export-get-relative-level parent info))))))
-   ;; 2. Look for "frame" environment in HEADLINE.
-   (let ((env (org-element-property :BEAMER_ENV headline)))
+   ;; 2. Look for "frame" environment in HEADING.
+   (let ((env (org-element-property :BEAMER_ENV heading)))
      (and env (member-ignore-case env '("frame" "fullframe"))
-	  (org-export-get-relative-level headline info)))
+	  (org-export-get-relative-level heading info)))
    ;; 3. Look for "frame" environment in sub-tree.
-   (org-element-map headline 'headline
+   (org-element-map heading 'heading
      (lambda (hl)
        (let ((env (org-element-property :BEAMER_ENV hl)))
 	 (when (and env (member-ignore-case env '("frame" "fullframe")))
 	   (org-export-get-relative-level hl info))))
      info 'first-match)
    ;; 4. No "frame" environment in tree: use default value.
-   (plist-get info :headline-levels)))
+   (plist-get info :heading-levels)))
 
-(defun org-beamer--format-section (headline contents info)
-  "Format HEADLINE as a sectioning part.
-CONTENTS holds the contents of the headline.  INFO is a plist
+(defun org-beamer--format-section (heading contents info)
+  "Format HEADING as a sectioning part.
+CONTENTS holds the contents of the heading.  INFO is a plist
 used as a communication channel."
-  (let ((latex-headline
+  (let ((latex-heading
 	 (org-export-with-backend
 	  ;; We create a temporary export back-end which behaves the
 	  ;; same as current one, but adds "\protect" in front of the
@@ -388,43 +388,43 @@ used as a communication channel."
              (mapcar (lambda (type) (cons type protected-output))
 		     '(bold footnote-reference italic strike-through timestamp
 			    underline))))
-	  headline
+	  heading
 	  contents
 	  info))
-	(mode-specs (org-element-property :BEAMER_ACT headline)))
+	(mode-specs (org-element-property :BEAMER_ACT heading)))
     (if (and mode-specs
 	     (string-match "\\`\\\\\\(.*?\\)\\(?:\\*\\|\\[.*\\]\\)?{"
-			   latex-headline))
+			   latex-heading))
 	;; Insert overlay specifications.
-	(replace-match (concat (match-string 1 latex-headline)
+	(replace-match (concat (match-string 1 latex-heading)
 			       (format "<%s>" mode-specs))
-		       nil nil latex-headline 1)
-      latex-headline)))
+		       nil nil latex-heading 1)
+      latex-heading)))
 
-(defun org-beamer--format-frame (headline contents info)
-  "Format HEADLINE as a frame.
-CONTENTS holds the contents of the headline.  INFO is a plist
+(defun org-beamer--format-frame (heading contents info)
+  "Format HEADING as a frame.
+CONTENTS holds the contents of the heading.  INFO is a plist
 used as a communication channel."
   (let ((fragilep
-	 ;; FRAGILEP is non-nil when HEADLINE contains an element
+	 ;; FRAGILEP is non-nil when HEADING contains an element
 	 ;; among `org-beamer-verbatim-elements'.
-	 (org-element-map headline org-beamer-verbatim-elements 'identity
+	 (org-element-map heading org-beamer-verbatim-elements 'identity
 			  info 'first-match)))
     (concat "\\begin{frame}"
 	    ;; Overlay specification, if any. When surrounded by
 	    ;; square brackets, consider it as a default
 	    ;; specification.
-	    (let ((action (org-element-property :BEAMER_ACT headline)))
+	    (let ((action (org-element-property :BEAMER_ACT heading)))
 	      (cond
 	       ((not action) "")
 	       ((string-match "\\`\\[.*\\]\\'" action )
 		(org-beamer--normalize-argument action 'defaction))
 	       (t (org-beamer--normalize-argument action 'action))))
 	    ;; Options, if any.
-	    (let* ((beamer-opt (org-element-property :BEAMER_OPT headline))
+	    (let* ((beamer-opt (org-element-property :BEAMER_OPT heading))
 		   (options
 		    ;; Collect nonempty options from default value and
-		    ;; headline's properties.
+		    ;; heading's properties.
 		    (cl-remove-if-not #'org-string-nw-p
 		     (append
 		      (org-split-string
@@ -450,7 +450,7 @@ used as a communication channel."
 			 (not (cl-some (lambda (s) (string-match-p "^label=" s))
 				       options))
 			 (list
-			  (let ((label (org-beamer--get-label headline info)))
+			  (let ((label (org-beamer--get-label heading info)))
 			    ;; Labels containing colons need to be
 			    ;; wrapped within braces.
 			    (format (if (string-match-p ":" label)
@@ -462,11 +462,11 @@ used as a communication channel."
 	       (mapconcat #'identity (append label fragile options) ",")
 	       'option))
 	    ;; Title.
-	    (let ((env (org-element-property :BEAMER_ENV headline)))
+	    (let ((env (org-element-property :BEAMER_ENV heading)))
 	      (format "{%s}"
 		      (if (and env (equal (downcase env) "fullframe")) ""
 			(org-export-data
-			 (org-element-property :title headline) info))))
+			 (org-element-property :title heading) info))))
 	    "\n"
 	    ;; The following workaround is required in fragile frames
 	    ;; as Beamer will append "\par" to the beginning of the
@@ -479,16 +479,16 @@ used as a communication channel."
 	      (replace-regexp-in-string "\\`\n*" "\\& " (or contents "")))
 	    "\\end{frame}")))
 
-(defun org-beamer--format-block (headline contents info)
-  "Format HEADLINE as a block.
-CONTENTS holds the contents of the headline.  INFO is a plist
+(defun org-beamer--format-block (heading contents info)
+  "Format HEADING as a block.
+CONTENTS holds the contents of the heading.  INFO is a plist
 used as a communication channel."
-  (let* ((column-width (org-element-property :BEAMER_COL headline))
+  (let* ((column-width (org-element-property :BEAMER_COL heading))
 	 ;; ENVIRONMENT defaults to "block" if none is specified and
 	 ;; there is no column specification.  If there is a column
 	 ;; specified but still no explicit environment, ENVIRONMENT
 	 ;; is "column".
-	 (environment (let ((env (org-element-property :BEAMER_ENV headline)))
+	 (environment (let ((env (org-element-property :BEAMER_ENV heading)))
 			(cond
 			 ;; "block" is the fallback environment.
 			 ((and (not env) (not column-width)) "block")
@@ -496,46 +496,46 @@ used as a communication channel."
 			 ((not env) "column")
 			 ;; Use specified environment.
 			 (t env))))
-	 (raw-title (org-element-property :raw-value headline))
+	 (raw-title (org-element-property :raw-value heading))
 	 (env-format
 	  (cond ((member environment '("column" "columns")) nil)
 		((assoc environment
 			(append (plist-get info :beamer-environments-extra)
 				org-beamer-environments-default)))
-		(t (user-error "Wrong block type at a headline named \"%s\""
+		(t (user-error "Wrong block type at a heading named \"%s\""
 			       raw-title))))
-	 (title (org-export-data (org-element-property :title headline) info))
-	 (raw-options (org-element-property :BEAMER_OPT headline))
+	 (title (org-export-data (org-element-property :title heading) info))
+	 (raw-options (org-element-property :BEAMER_OPT heading))
 	 (options (if raw-options
 		      (org-beamer--normalize-argument raw-options 'option)
 		    ""))
 	 ;; Start a "columns" environment when explicitly requested or
-	 ;; when there is no previous headline or the previous
-	 ;; headline do not have a BEAMER_column property.
+	 ;; when there is no previous heading or the previous
+	 ;; heading do not have a BEAMER_column property.
 	 (parent-env (org-element-property
-		      :BEAMER_ENV (org-export-get-parent-headline headline)))
+		      :BEAMER_ENV (org-export-get-parent-heading heading)))
 	 (start-columns-p
 	  (or (equal environment "columns")
 	      (and column-width
 		   (not (and parent-env
 			     (equal (downcase parent-env) "columns")))
-		   (or (org-export-first-sibling-p headline info)
+		   (or (org-export-first-sibling-p heading info)
 		       (not (org-element-property
 			     :BEAMER_COL
 			     (org-export-get-previous-element
-			      headline info)))))))
+			      heading info)))))))
 	 ;; End the "columns" environment when explicitly requested or
-	 ;; when there is no next headline or the next headline do not
+	 ;; when there is no next heading or the next heading do not
 	 ;; have a BEAMER_column property.
 	 (end-columns-p
 	  (or (equal environment "columns")
 	      (and column-width
 		   (not (and parent-env
 			     (equal (downcase parent-env) "columns")))
-		   (or (org-export-last-sibling-p headline info)
+		   (or (org-export-last-sibling-p heading info)
 		       (not (org-element-property
 			     :BEAMER_COL
-			     (org-export-get-next-element headline info))))))))
+			     (org-export-get-next-element heading info))))))))
     (concat
      (when start-columns-p
        ;; Column can accept options only when the environment is
@@ -545,7 +545,7 @@ used as a communication channel."
      (when column-width
        (format "\\begin{column}%s{%s}\n"
 	       ;; One can specify placement for column only when
-	       ;; HEADLINE stands for a column on its own.
+	       ;; HEADING stands for a column on its own.
 	       (if (equal environment "column") options "")
 	       (format "%s\\columnwidth" column-width)))
      ;; Block's opening string.
@@ -558,7 +558,7 @@ used as a communication channel."
 	  ;; brackets, it is a default overlay specification and
 	  ;; overlay specification is empty.  Otherwise, it is an
 	  ;; overlay specification and the default one is nil.
-	  (let ((action (org-element-property :BEAMER_ACT headline)))
+	  (let ((action (org-element-property :BEAMER_ACT heading)))
 	    (cond
 	     ((not action) (list (cons "a" "") (cons "A" "") (cons "R" "")))
 	     ((and (string-prefix-p "[" action)
@@ -586,32 +586,32 @@ used as a communication channel."
      (when column-width "\\end{column}\n")
      (when end-columns-p "\\end{columns}"))))
 
-(defun org-beamer-headline (headline contents info)
-  "Transcode HEADLINE element into Beamer code.
-CONTENTS is the contents of the headline.  INFO is a plist used
+(defun org-beamer-heading (heading contents info)
+  "Transcode HEADING element into Beamer code.
+CONTENTS is the contents of the heading.  INFO is a plist used
 as a communication channel."
-  (unless (org-element-property :footnote-section-p headline)
-    (let ((level (org-export-get-relative-level headline info))
-	  (frame-level (org-beamer--frame-level headline info))
-	  (environment (let ((env (org-element-property :BEAMER_ENV headline)))
+  (unless (org-element-property :footnote-section-p heading)
+    (let ((level (org-export-get-relative-level heading info))
+	  (frame-level (org-beamer--frame-level heading info))
+	  (environment (let ((env (org-element-property :BEAMER_ENV heading)))
 			 (or (org-string-nw-p env) "block"))))
       (cond
        ;; Case 1: Resume frame specified by "BEAMER_ref" property.
        ((equal environment "againframe")
-	(let ((ref (org-element-property :BEAMER_REF headline)))
+	(let ((ref (org-element-property :BEAMER_REF heading)))
 	  ;; Reference to frame being resumed is mandatory.  Ignore
-	  ;; the whole headline if it isn't provided.
+	  ;; the whole heading if it isn't provided.
 	  (when (org-string-nw-p ref)
 	    (concat "\\againframe"
 		    ;; Overlay specification.
-		    (let ((overlay (org-element-property :BEAMER_ACT headline)))
+		    (let ((overlay (org-element-property :BEAMER_ACT heading)))
 		      (when overlay
 			(org-beamer--normalize-argument
 			 overlay
 			 (if (string-match "\\`\\[.*\\]\\'" overlay) 'defaction
 			   'action))))
 		    ;; Options.
-		    (let ((options (org-element-property :BEAMER_OPT headline)))
+		    (let ((options (org-element-property :BEAMER_OPT heading)))
 		      (when options
 			(org-beamer--normalize-argument options 'option)))
 		    ;; Resolve reference provided by "BEAMER_ref"
@@ -625,29 +625,29 @@ as a communication channel."
 				info)
 			     (org-export-resolve-fuzzy-link
 			      `(link (:path
-				      ;; Look for headlines only.
+				      ;; Look for headings only.
 				      ,(if (eq (string-to-char ref) ?*) ref
 					 (concat "*" ref))))
 			      info))))
 		      ;; Now use user-defined label provided in TARGET
-		      ;; headline, or fallback to standard one.
+		      ;; heading, or fallback to standard one.
 		      (format "{%s}" (org-beamer--get-label target info)))))))
        ;; Case 2: Creation of an appendix is requested.
        ((equal environment "appendix")
 	(concat "\\appendix"
-		(org-element-property :BEAMER_ACT headline)
+		(org-element-property :BEAMER_ACT heading)
 		"\n"
-		(make-string (org-element-property :pre-blank headline) ?\n)
+		(make-string (org-element-property :pre-blank heading) ?\n)
 		contents))
        ;; Case 3: Ignore heading.
        ((equal environment "ignoreheading")
-	(concat (make-string (org-element-property :pre-blank headline) ?\n)
+	(concat (make-string (org-element-property :pre-blank heading) ?\n)
 		contents))
-       ;; Case 4: HEADLINE is a note.
+       ;; Case 4: HEADING is a note.
        ((member environment '("note" "noteNH"))
         (concat "\\note"
 		;; Overlay specification.
-		(let ((overlay (org-element-property :BEAMER_ACT headline)))
+		(let ((overlay (org-element-property :BEAMER_ACT heading)))
 		  (when overlay
 		    (org-beamer--normalize-argument
 		     overlay
@@ -657,19 +657,19 @@ as a communication channel."
                         (concat (and (equal environment "note")
                                      (concat
                                       (org-export-data
-                                       (org-element-property :title headline)
+                                       (org-element-property :title heading)
 				       info)
                                       "\n"))
 				(org-trim contents)))))
-       ;; Case 5: HEADLINE is a frame.
+       ;; Case 5: HEADING is a frame.
        ((= level frame-level)
-	(org-beamer--format-frame headline contents info))
+	(org-beamer--format-frame heading contents info))
        ;; Case 6: Regular section, extracted from
        ;; `org-latex-classes'.
        ((< level frame-level)
-	(org-beamer--format-section headline contents info))
-       ;; Case 7: Otherwise, HEADLINE is a block.
-       (t (org-beamer--format-block headline contents info))))))
+	(org-beamer--format-section heading contents info))
+       ;; Case 7: Otherwise, HEADING is a block.
+       (t (org-beamer--format-block heading contents info))))))
 
 
 ;;;; Item
@@ -709,11 +709,11 @@ CONTENTS is nil.  INFO is a plist used as a communication
 channel."
   (let ((key (org-element-property :key keyword))
 	(value (org-element-property :value keyword)))
-    ;; Handle specifically BEAMER and TOC (headlines only) keywords.
+    ;; Handle specifically BEAMER and TOC (headings only) keywords.
     ;; Otherwise, fallback to `latex' back-end.
     (cond
      ((equal key "BEAMER") value)
-     ((and (equal key "TOC") (string-match "\\<headlines\\>" value))
+     ((and (equal key "TOC") (string-match "\\<headings\\>" value))
       (let ((depth (or (and (string-match "[0-9]+" value)
 			    (string-to-number (match-string 0 value)))
 		       (plist-get info :with-toc)))
@@ -829,7 +829,7 @@ holding export options."
 		    (:beamer-inner-theme "\\useinnertheme")
 		    (:beamer-outer-theme "\\useoutertheme"))
 		  ""))
-     ;; Possibly limit depth for headline numbering.
+     ;; Possibly limit depth for heading numbering.
      (let ((sec-num (plist-get info :section-numbers)))
        (when (integerp sec-num)
 	 (format "\\setcounter{secnumdepth}{%d}\n" sec-num)))
@@ -972,7 +972,7 @@ asynchronously.  The resulting buffer should be accessible
 through the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
@@ -1007,7 +1007,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
@@ -1041,7 +1041,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
diff --git a/lisp/ox-html.el b/lisp/ox-html.el
index bd6771a76..80091b1cb 100644
--- a/lisp/ox-html.el
+++ b/lisp/ox-html.el
@@ -64,7 +64,7 @@
     (export-snippet . org-html-export-snippet)
     (fixed-width . org-html-fixed-width)
     (footnote-reference . org-html-footnote-reference)
-    (headline . org-html-headline)
+    (heading . org-html-heading)
     (horizontal-rule . org-html-horizontal-rule)
     (inline-src-block . org-html-inline-src-block)
     (inlinetask . org-html-inlinetask)
@@ -140,7 +140,7 @@
     (:html-footnote-separator nil nil org-html-footnote-separator)
     (:html-footnotes-section nil nil org-html-footnotes-section)
     (:html-format-drawer-function nil nil org-html-format-drawer-function)
-    (:html-format-headline-function nil nil org-html-format-headline-function)
+    (:html-format-heading-function nil nil org-html-format-heading-function)
     (:html-format-inlinetask-function
      nil nil org-html-format-inlinetask-function)
     (:html-home/up-format nil nil org-html-home/up-format)
@@ -155,7 +155,7 @@
     (:html-postamble-format nil nil org-html-postamble-format)
     (:html-preamble-format nil nil org-html-preamble-format)
     (:html-prefer-user-labels nil nil org-html-prefer-user-labels)
-    (:html-self-link-headlines nil nil org-html-self-link-headlines)
+    (:html-self-link-headings nil nil org-html-self-link-headings)
     (:html-table-align-individual-fields
      nil nil org-html-table-align-individual-fields)
     (:html-table-caption-above nil nil org-html-table-caption-above)
@@ -223,8 +223,8 @@
     "progress" "section" "summary" "video")
   "New elements in html5.
 
-For blocks that should contain headlines, use the HTML_CONTAINER
-property on the headline itself.")
+For blocks that should contain headings, use the HTML_CONTAINER
+property on the heading itself.")
 
 (defconst org-html-special-string-regexps
   '(("\\\\-" . "&#x00ad;")		; shy
@@ -544,7 +544,7 @@ export back-end currently used."
 			 (string-match "\\<view:nil\\>" opt)))))
     (let* ((template (plist-get exp-plist :html-infojs-template))
 	   (ptoc (plist-get exp-plist :with-toc))
-	   (hlevels (plist-get exp-plist :headline-levels))
+	   (hlevels (plist-get exp-plist :heading-levels))
 	   (sdepth hlevels)
 	   (tdepth (if (integerp ptoc) (min ptoc hlevels) hlevels))
 	   (options (plist-get exp-plist :infojs-opt))
@@ -689,12 +689,12 @@ by the footnotes themselves."
   :group 'org-export-html
   :type 'string)
 
-;;;; Headline
+;;;; Heading
 
 (defcustom org-html-toplevel-hlevel 2
   "The <H> level for level 1 headings in HTML export.
-This is also important for the classes that will be wrapped around headlines
-and outline structure.  If this variable is 1, the top-level headlines will
+This is also important for the classes that will be wrapped around headings
+and outline structure.  If this variable is 1, the top-level headings will
 be <h1>, and the corresponding classes will be outline-1, section-number-1,
 and outline-text-1.  If this is 2, all of these will get a 2 instead.
 The default for this variable is 2, because we use <h1> for formatting the
@@ -702,15 +702,15 @@ document title."
   :group 'org-export-html
   :type 'integer)
 
-(defcustom org-html-format-headline-function
-  'org-html-format-headline-default-function
-  "Function to format headline text.
+(defcustom org-html-format-heading-function
+  'org-html-format-heading-default-function
+  "Function to format heading text.
 
 This function will be called with six arguments:
 TODO      the todo keyword (string or nil).
 TODO-TYPE the type of todo (symbol: `todo', `done', nil)
-PRIORITY  the priority of the headline (integer or nil)
-TEXT      the main headline text (string).
+PRIORITY  the priority of the heading (integer or nil)
+TEXT      the main heading text (string).
 TAGS      the tags (string or nil).
 INFO      the export options (plist).
 
@@ -731,8 +731,8 @@ but without \"name\" attribute."
   :package-version '(Org . "8.0")
   :type 'boolean)
 
-(defcustom org-html-self-link-headlines nil
-  "When non-nil, the headlines contain a hyperlink to themselves."
+(defcustom org-html-self-link-headings nil
+  "When non-nil, the headings contain a hyperlink to themselves."
   :group 'org-export-html
   :package-version '(Org . "9.3")
   :type 'boolean
@@ -1650,13 +1650,13 @@ DATUM is an element or a `target' type object.  INFO is the
 current export state, as a plist.
 
 When NAMED-ONLY is non-nil and DATUM has no NAME keyword, return
-nil.  This doesn't apply to headlines, inline tasks, radio
+nil.  This doesn't apply to headings, inline tasks, radio
 targets and targets."
   (let* ((type (org-element-type datum))
 	 (user-label
 	  (org-element-property
 	   (pcase type
-	     ((or `headline `inlinetask) :CUSTOM_ID)
+	     ((or `heading `inlinetask) :CUSTOM_ID)
 	     ((or `radio-target `target) :value)
 	     (_ :name))
 	   datum)))
@@ -1664,10 +1664,10 @@ targets and targets."
      ((and user-label
 	   (or (plist-get info :html-prefer-user-labels)
 	       ;; Used CUSTOM_ID property unconditionally.
-	       (memq type '(headline inlinetask))))
+	       (memq type '(heading inlinetask))))
       user-label)
      ((and named-only
-	   (not (memq type '(headline inlinetask radio-target target)))
+	   (not (memq type '(heading inlinetask radio-target target)))
 	   (not user-label))
       nil)
      (t
@@ -2310,10 +2310,10 @@ a plist used as a communication channel.  Optional argument SCOPE
 is an element defining the scope of the table.  Return the table
 of contents as a string, or nil if it is empty."
   (let ((toc-entries
-	 (mapcar (lambda (headline)
-		   (cons (org-html--format-toc-headline headline info)
-			 (org-export-get-relative-level headline info)))
-		 (org-export-collect-headlines info depth scope))))
+	 (mapcar (lambda (heading)
+		   (cons (org-html--format-toc-heading heading info)
+			 (org-export-get-relative-level heading info)))
+		 (org-export-collect-headings info depth scope))))
     (when toc-entries
       (let ((toc (concat "<div id=\"text-table-of-contents\" role=\"doc-toc\">"
 			 (org-html--toc-text toc-entries)
@@ -2340,7 +2340,7 @@ and value is its relative level, as an integer."
     (concat
      (mapconcat
       (lambda (entry)
-	(let ((headline (car entry))
+	(let ((heading (car entry))
 	      (level (cdr entry)))
 	  (concat
 	   (let* ((cnt (- level prev-level))
@@ -2351,36 +2351,36 @@ and value is its relative level, as an integer."
 	       times (cond ((> cnt 0) "\n<ul>\n<li>")
 			   ((< cnt 0) "</li>\n</ul>\n")))
 	      (if (> cnt 0) "\n<ul>\n<li>" "</li>\n<li>")))
-	   headline)))
+	   heading)))
       toc-entries "")
      (org-html--make-string (- prev-level start-level) "</li>\n</ul>\n"))))
 
-(defun org-html--format-toc-headline (headline info)
-  "Return an appropriate table of contents entry for HEADLINE.
+(defun org-html--format-toc-heading (heading info)
+  "Return an appropriate table of contents entry for HEADING.
 INFO is a plist used as a communication channel."
-  (let* ((headline-number (org-export-get-headline-number headline info))
+  (let* ((heading-number (org-export-get-heading-number heading info))
 	 (todo (and (plist-get info :with-todo-keywords)
-		    (let ((todo (org-element-property :todo-keyword headline)))
+		    (let ((todo (org-element-property :todo-keyword heading)))
 		      (and todo (org-export-data todo info)))))
-	 (todo-type (and todo (org-element-property :todo-type headline)))
+	 (todo-type (and todo (org-element-property :todo-type heading)))
 	 (priority (and (plist-get info :with-priority)
-			(org-element-property :priority headline)))
+			(org-element-property :priority heading)))
 	 (text (org-export-data-with-backend
-		(org-export-get-alt-title headline info)
+		(org-export-get-alt-title heading info)
 		(org-export-toc-entry-backend 'html)
 		info))
 	 (tags (and (eq (plist-get info :with-tags) t)
-		    (org-export-get-tags headline info))))
+		    (org-export-get-tags heading info))))
     (format "<a href=\"#%s\">%s</a>"
 	    ;; Label.
-	    (org-html--reference headline info)
+	    (org-html--reference heading info)
 	    ;; Body.
 	    (concat
-	     (and (not (org-export-low-level-p headline info))
-		  (org-export-numbered-headline-p headline info)
-		  (concat (mapconcat #'number-to-string headline-number ".")
+	     (and (not (org-export-low-level-p heading info))
+		  (org-export-numbered-heading-p heading info)
+		  (concat (mapconcat #'number-to-string heading-number ".")
 			  ". "))
-	     (apply (plist-get info :html-format-headline-function)
+	     (apply (plist-get info :html-format-heading-function)
 		    todo todo-type priority text tags :section-number nil)))))
 
 (defun org-html-list-of-listings (info)
@@ -2597,55 +2597,55 @@ CONTENTS is nil.  INFO is a plist holding contextual information."
       (org-html--anchor
        id n (format " class=\"footref\" href=\"#fn.%d\" role=\"doc-backlink\"" n) info)))))
 
-;;;; Headline
+;;;; Heading
 
-(defun org-html-headline (headline contents info)
-  "Transcode a HEADLINE element from Org to HTML.
-CONTENTS holds the contents of the headline.  INFO is a plist
+(defun org-html-heading (heading contents info)
+  "Transcode a HEADING element from Org to HTML.
+CONTENTS holds the contents of the heading.  INFO is a plist
 holding contextual information."
-  (unless (org-element-property :footnote-section-p headline)
-    (let* ((numberedp (org-export-numbered-headline-p headline info))
-           (numbers (org-export-get-headline-number headline info))
-           (level (+ (org-export-get-relative-level headline info)
+  (unless (org-element-property :footnote-section-p heading)
+    (let* ((numberedp (org-export-numbered-heading-p heading info))
+           (numbers (org-export-get-heading-number heading info))
+           (level (+ (org-export-get-relative-level heading info)
                      (1- (plist-get info :html-toplevel-hlevel))))
            (todo (and (plist-get info :with-todo-keywords)
-                      (let ((todo (org-element-property :todo-keyword headline)))
+                      (let ((todo (org-element-property :todo-keyword heading)))
                         (and todo (org-export-data todo info)))))
-           (todo-type (and todo (org-element-property :todo-type headline)))
+           (todo-type (and todo (org-element-property :todo-type heading)))
            (priority (and (plist-get info :with-priority)
-                          (org-element-property :priority headline)))
-           (text (org-export-data (org-element-property :title headline) info))
+                          (org-element-property :priority heading)))
+           (text (org-export-data (org-element-property :title heading) info))
            (tags (and (plist-get info :with-tags)
-                      (org-export-get-tags headline info)))
-           (full-text (funcall (plist-get info :html-format-headline-function)
+                      (org-export-get-tags heading info)))
+           (full-text (funcall (plist-get info :html-format-heading-function)
                                todo todo-type priority text tags info))
            (contents (or contents ""))
-	   (id (org-html--reference headline info))
+	   (id (org-html--reference heading info))
 	   (formatted-text
-	    (if (plist-get info :html-self-link-headlines)
+	    (if (plist-get info :html-self-link-headings)
 		(format "<a href=\"#%s\">%s</a>" id full-text)
 	      full-text)))
-      (if (org-export-low-level-p headline info)
+      (if (org-export-low-level-p heading info)
           ;; This is a deep sub-tree: export it as a list item.
           (let* ((html-type (if numberedp "ol" "ul")))
 	    (concat
-	     (and (org-export-first-sibling-p headline info)
+	     (and (org-export-first-sibling-p heading info)
 		  (apply #'format "<%s class=\"org-%s\">\n"
 			 (make-list 2 html-type)))
 	     (org-html-format-list-item
 	      contents (if numberedp 'ordered 'unordered)
 	      nil info nil
 	      (concat (org-html--anchor id nil nil info) formatted-text)) "\n"
-	     (and (org-export-last-sibling-p headline info)
+	     (and (org-export-last-sibling-p heading info)
 		  (format "</%s>\n" html-type))))
-	;; Standard headline.  Export it as a section.
+	;; Standard heading.  Export it as a section.
         (let ((extra-class
-	       (org-element-property :HTML_CONTAINER_CLASS headline))
-	      (headline-class
-	       (org-element-property :HTML_HEADLINE_CLASS headline))
-              (first-content (car (org-element-contents headline))))
+	       (org-element-property :HTML_CONTAINER_CLASS heading))
+	      (heading-class
+	       (org-element-property :HTML_HEADING_CLASS heading))
+              (first-content (car (org-element-contents heading))))
           (format "<%s id=\"%s\" class=\"%s\">%s%s</%s>\n"
-                  (org-html--container headline info)
+                  (org-html--container heading info)
                   (format "outline-container-%s" id)
                   (concat (format "outline-%d" level)
                           (and extra-class " ")
@@ -2653,8 +2653,8 @@ holding contextual information."
                   (format "\n<h%d id=\"%s\"%s>%s</h%d>\n"
                           level
                           id
-			  (if (not headline-class) ""
-			    (format " class=\"%s\"" headline-class))
+			  (if (not heading-class) ""
+			    (format " class=\"%s\"" heading-class))
                           (concat
                            (and numberedp
                                 (format
@@ -2669,12 +2669,12 @@ holding contextual information."
                   ;; `org-info.js'.
                   (if (eq (org-element-type first-content) 'section) contents
                     (concat (org-html-section first-content "" info) contents))
-                  (org-html--container headline info)))))))
+                  (org-html--container heading info)))))))
 
-(defun org-html-format-headline-default-function
+(defun org-html-format-heading-default-function
     (todo _todo-type priority text tags info)
-  "Default format function for a headline.
-See `org-html-format-headline-function' for details."
+  "Default format function for a heading.
+See `org-html-format-heading-function' for details."
   (let ((todo (org-html--todo todo info))
 	(priority (org-html--priority priority info))
 	(tags (org-html--tags tags info)))
@@ -2683,9 +2683,9 @@ See `org-html-format-headline-function' for details."
 	    text
 	    (and tags "&#xa0;&#xa0;&#xa0;") tags)))
 
-(defun org-html--container (headline info)
-  (or (org-element-property :HTML_CONTAINER headline)
-      (if (= 1 (org-export-get-relative-level headline info))
+(defun org-html--container (heading info)
+  (or (org-element-property :HTML_CONTAINER heading)
+      (if (= 1 (org-export-get-relative-level heading info))
 	  (plist-get info :html-container)
 	"div")))
 
@@ -2734,7 +2734,7 @@ holding contextual information."
   "Default format function for inlinetasks.
 See `org-html-format-inlinetask-function' for details."
   (format "<div class=\"inlinetask\">\n<b>%s</b>%s\n%s</div>"
-	  (org-html-format-headline-default-function
+	  (org-html-format-heading-default-function
 	   todo todo-type priority text tags info)
 	  (org-html-close-tag "br" nil info)
 	  contents))
@@ -2761,7 +2761,7 @@ INFO is a plist holding contextual information.  See
 
 (defun org-html-format-list-item (contents type checkbox info
 					   &optional term-counter-id
-					   headline)
+					   heading)
   "Format a list item into HTML."
   (let ((class (if checkbox
 		   (format " class=\"%s\""
@@ -2769,7 +2769,7 @@ INFO is a plist holding contextual information.  See
 	(checkbox (concat (org-html-checkbox checkbox info)
 			  (and checkbox " ")))
 	(br (org-html-close-tag "br" nil info))
-	(extra-newline (if (and (org-string-nw-p contents) headline) "\n" "")))
+	(extra-newline (if (and (org-string-nw-p contents) heading) "\n" "")))
     (concat
      (pcase type
        (`ordered
@@ -2777,13 +2777,13 @@ INFO is a plist holding contextual information.  See
 	       (extra (if counter (format " value=\"%s\"" counter) "")))
 	  (concat
 	   (format "<li%s%s>" class extra)
-	   (when headline (concat headline br)))))
+	   (when heading (concat heading br)))))
        (`unordered
 	(let* ((id term-counter-id)
 	       (extra (if id (format " id=\"%s\"" id) "")))
 	  (concat
 	   (format "<li%s%s>" class extra)
-	   (when headline (concat headline br)))))
+	   (when heading (concat heading br)))))
        (`descriptive
 	(let* ((term term-counter-id))
 	  (setq term (or term "(no term)"))
@@ -2825,7 +2825,7 @@ CONTENTS is nil.  INFO is a plist holding contextual information."
      ((string= key "TOC")
       (let ((case-fold-search t))
 	(cond
-	 ((string-match "\\<headlines\\>" value)
+	 ((string-match "\\<headings\\>" value)
 	  (let ((depth (and (string-match "\\<[0-9]+\\>" value)
 			    (string-to-number (match-string 0 value))))
 		(scope
@@ -3090,7 +3090,7 @@ INFO is a plist holding contextual information.  See
 	    ;; Maybe turn ".org" into ".html".
 	    (setq raw-path (funcall link-org-files-as-html-maybe raw-path info))
 	    ;; Add search option, if any.  A search option can be
-	    ;; relative to a custom-id, a headline title, a name or
+	    ;; relative to a custom-id, a heading title, a name or
 	    ;; a target.
 	    (let ((option (org-element-property :search-option link)))
 	      (if (not option) raw-path
@@ -3138,7 +3138,7 @@ INFO is a plist holding contextual information.  See
 		  (org-export-get-reference destination info)
 		  attributes
 		  desc))))
-     ;; Links pointing to a headline: Find destination and build
+     ;; Links pointing to a heading: Find destination and build
      ;; appropriate referencing command.
      ((member type '("custom-id" "fuzzy" "id"))
       (let ((destination (if (string= type "fuzzy")
@@ -3159,21 +3159,21 @@ INFO is a plist holding contextual information.  See
 		   (or desc
 		       (org-export-data
 			(org-element-property :raw-link link) info))))
-	  ;; Link points to a headline.
-	  (`headline
+	  ;; Link points to a heading.
+	  (`heading
 	   (let ((href (org-html--reference destination info))
 		 ;; What description to use?
 		 (desc
-		  ;; Case 1: Headline is numbered and LINK has no
+		  ;; Case 1: Heading is numbered and LINK has no
 		  ;; description.  Display section number.
-		  (if (and (org-export-numbered-headline-p destination info)
+		  (if (and (org-export-numbered-heading-p destination info)
 			   (not desc))
 		      (mapconcat #'number-to-string
-				 (org-export-get-headline-number
+				 (org-export-get-heading-number
 				  destination info) ".")
-		    ;; Case 2: Either the headline is un-numbered or
+		    ;; Case 2: Either the heading is un-numbered or
 		    ;; LINK has a custom description.  Display LINK's
-		    ;; description or headline's title.
+		    ;; description or heading's title.
 		    (or desc
 			(org-export-data
 			 (org-element-property :title destination) info)))))
@@ -3412,17 +3412,17 @@ holding contextual information."
   "Transcode a SECTION element from Org to HTML.
 CONTENTS holds the contents of the section.  INFO is a plist
 holding contextual information."
-  (let ((parent (org-export-get-parent-headline section)))
-    ;; Before first headline: no container, just return CONTENTS.
+  (let ((parent (org-export-get-parent-heading section)))
+    ;; Before first heading: no container, just return CONTENTS.
     (if (not parent) contents
       ;; Get div's class and id references.
       (let* ((class-num (+ (org-export-get-relative-level parent info)
 			   (1- (plist-get info :html-toplevel-hlevel))))
 	     (section-number
-	      (and (org-export-numbered-headline-p parent info)
+	      (and (org-export-numbered-heading-p parent info)
 		   (mapconcat
 		    #'number-to-string
-		    (org-export-get-headline-number parent info) "-"))))
+		    (org-export-get-heading-number parent info) "-"))))
         ;; Build return value.
 	(format "<div class=\"outline-text-%d\" id=\"text-%s\">\n%s</div>\n"
 		class-num
@@ -3797,7 +3797,7 @@ asynchronously.  The resulting buffer should be accessible
 through the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
@@ -3842,7 +3842,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
diff --git a/lisp/ox-icalendar.el b/lisp/ox-icalendar.el
index 54004045c..71ccf1f0e 100644
--- a/lisp/ox-icalendar.el
+++ b/lisp/ox-icalendar.el
@@ -212,7 +212,7 @@ These are entries like in the diary, but directly in an Org file."
   :type 'boolean)
 
 (defcustom org-icalendar-include-body t
-  "Amount of text below headline to be included in iCalendar export.
+  "Amount of text below heading to be included in iCalendar export.
 This is a number of characters that should maximally be included.
 Properties, scheduling and clocking lines will always be removed.
 The text will be inserted into the DESCRIPTION field."
@@ -279,7 +279,7 @@ re-read the iCalendar file.")
   :translate-alist '((clock . ignore)
 		     (footnote-definition . ignore)
 		     (footnote-reference . ignore)
-		     (headline . org-icalendar-entry)
+		     (heading . org-icalendar-entry)
 		     (inlinetask . ignore)
 		     (planning . ignore)
 		     (section . ignore)
@@ -301,7 +301,7 @@ re-read the iCalendar file.")
     (:icalendar-use-deadline nil nil org-icalendar-use-deadline)
     (:icalendar-use-scheduled nil nil org-icalendar-use-scheduled))
   :filters-alist
-  '((:filter-headline . org-icalendar-clear-blank-lines))
+  '((:filter-heading . org-icalendar-clear-blank-lines))
   :menu-entry
   '(?c "Export to iCalendar"
        ((?f "Current file" org-icalendar-export-to-ics)
@@ -315,7 +315,7 @@ re-read the iCalendar file.")
 ;;; Internal Functions
 
 (defun org-icalendar-create-uid (file &optional bell)
-  "Set ID property on headlines missing it in FILE.
+  "Set ID property on headings missing it in FILE.
 When optional argument BELL is non-nil, inform the user with
 a message if the file was modified."
   (let (modified-flag)
@@ -331,12 +331,12 @@ a message if the file was modified."
       (message "ID properties created in file \"%s\"" file)
       (sit-for 2))))
 
-(defun org-icalendar-blocked-headline-p (headline info)
-  "Non-nil when HEADLINE is considered to be blocked.
+(defun org-icalendar-blocked-heading-p (heading info)
+  "Non-nil when HEADING is considered to be blocked.
 
 INFO is a plist used as a communication channel.
 
-A headline is blocked when either
+A heading is blocked when either
 
   - it has children which are not all in a completed state;
 
@@ -347,13 +347,13 @@ A headline is blocked when either
     done first or is a child of a blocked grandparent entry."
   (or
    ;; Check if any child is not done.
-   (org-element-map (org-element-contents headline) 'headline
+   (org-element-map (org-element-contents heading) 'heading
      (lambda (hl) (eq (org-element-property :todo-type hl) 'todo))
      info 'first-match)
    ;; Check :ORDERED: node property.
    (catch 'blockedp
-     (let ((current headline))
-       (dolist (parent (org-element-lineage headline))
+     (let ((current heading))
+       (dolist (parent (org-element-lineage heading))
 	 (cond
 	  ((not (org-element-property :todo-keyword parent))
 	   (throw 'blockedp nil))
@@ -442,7 +442,7 @@ format (e.g. \"Europe/London\").  In either case, the value of
 
 (defun org-icalendar-get-categories (entry info)
   "Return categories according to `org-icalendar-categories'.
-ENTRY is a headline or an inlinetask element.  INFO is a plist
+ENTRY is a heading or an inlinetask element.  INFO is a plist
 used as a communication channel."
   (mapconcat
    #'identity
@@ -515,20 +515,20 @@ or subject for the event."
 \f
 ;;; Filters
 
-(defun org-icalendar-clear-blank-lines (headline _back-end _info)
-  "Remove blank lines in HEADLINE export.
-HEADLINE is a string representing a transcoded headline.
+(defun org-icalendar-clear-blank-lines (heading _back-end _info)
+  "Remove blank lines in HEADING export.
+HEADING is a string representing a transcoded heading.
 BACK-END and INFO are ignored."
-  (replace-regexp-in-string "^\\(?:[ \t]*\n\\)+" "" headline))
+  (replace-regexp-in-string "^\\(?:[ \t]*\n\\)+" "" heading))
 
 
 \f
 ;;; Transcode Functions
 
-;;;; Headline and Inlinetasks
+;;;; Heading and Inlinetasks
 
 ;; The main function is `org-icalendar-entry', which extracts
-;; information from a headline or an inlinetask (summary,
+;; information from a heading or an inlinetask (summary,
 ;; description...) and then delegates code generation to
 ;; `org-icalendar--vtodo' and `org-icalendar--vevent', depending
 ;; on the component needed.
@@ -539,10 +539,10 @@ BACK-END and INFO are ignored."
 (defun org-icalendar-entry (entry contents info)
   "Transcode ENTRY element into iCalendar format.
 
-ENTRY is either a headline or an inlinetask.  CONTENTS is
+ENTRY is either a heading or an inlinetask.  CONTENTS is
 ignored.  INFO is a plist used as a communication channel.
 
-This function is called on every headline, the section below
+This function is called on every heading, the section below
 it (minus inlinetasks) being its contents.  It tries to create
 VEVENT and VTODO components out of scheduled date, deadline date,
 plain timestamps, diary sexps.  It also calls itself on every
@@ -550,7 +550,7 @@ inlinetask within the section."
   (unless (org-element-property :footnote-section-p entry)
     (let* ((type (org-element-type entry))
 	   ;; Determine contents really associated to the entry.  For
-	   ;; a headline, limit them to section, if any.  For an
+	   ;; a heading, limit them to section, if any.  For an
 	   ;; inlinetask, this is every element within the task.
 	   (inside
 	    (if (eq type 'inlinetask)
@@ -575,7 +575,7 @@ inlinetask within the section."
 		      :CLASS entry
 		      (org-property-inherit-p "CLASS"))))
 	     ;; Build description of the entry from associated section
-	     ;; (headline) or contents (inlinetask).
+	     ;; (heading) or contents (inlinetask).
 	     (desc
 	      (org-icalendar-cleanup-string
 	       (or (org-element-property :DESCRIPTION entry)
@@ -618,7 +618,7 @@ inlinetask within the section."
 		 (org-icalendar--vevent
 		  entry scheduled (concat "SC-" uid)
 		  (concat "S: " summary) loc desc cat tz class)))
-	  ;; When collecting plain timestamps from a headline and its
+	  ;; When collecting plain timestamps from a heading and its
 	  ;; title, skip inlinetasks since collection will happen once
 	  ;; ENTRY is one of them.
 	  (let ((counter 0))
@@ -636,7 +636,7 @@ inlinetask within the section."
 		   (let ((uid (format "TS%d-%s" (cl-incf counter) uid)))
 		     (org-icalendar--vevent
 		      entry ts uid summary loc desc cat tz class))))
-	       info nil (and (eq type 'headline) 'inlinetask))
+	       info nil (and (eq type 'heading) 'inlinetask))
 	     ""))
 	  ;; Task: First check if it is appropriate to export it.  If
 	  ;; so, call `org-icalendar--vtodo' to transcode it into
@@ -645,14 +645,14 @@ inlinetask within the section."
 		     (cl-case (plist-get info :icalendar-include-todo)
 		       (all t)
 		       (unblocked
-			(and (eq type 'headline)
-			     (not (org-icalendar-blocked-headline-p
+			(and (eq type 'heading)
+			     (not (org-icalendar-blocked-heading-p
 				   entry info))))
 		       ((t) (eq todo-type 'todo))))
 	    (org-icalendar--vtodo entry uid summary loc desc cat tz class))
 	  ;; Diary-sexp: Collect every diary-sexp element within ENTRY
 	  ;; and its title, and transcode them.  If ENTRY is
-	  ;; a headline, skip inlinetasks: they will be handled
+	  ;; a heading, skip inlinetasks: they will be handled
 	  ;; separately.
 	  (when org-icalendar-include-sexps
 	    (let ((counter 0))
@@ -666,12 +666,12 @@ inlinetask within the section."
 			      (org-element-property :value sexp)
 			      (format "DS%d-%s" (cl-incf counter) uid)
 			      summary))
-			   info nil (and (eq type 'headline) 'inlinetask))
+			   info nil (and (eq type 'heading) 'inlinetask))
 			 "")))))
-       ;; If ENTRY is a headline, call current function on every
+       ;; If ENTRY is a heading, call current function on every
        ;; inlinetask within it.  In agenda export, this is independent
        ;; from the mark (or lack thereof) on the entry.
-       (when (eq type 'headline)
+       (when (eq type 'heading)
 	 (mapconcat #'identity
 		    (org-element-map inside 'inlinetask
 		      (lambda (task) (org-icalendar-entry task nil info))
@@ -683,7 +683,7 @@ inlinetask within the section."
     (entry timestamp uid summary location description categories timezone class)
   "Create a VEVENT component.
 
-ENTRY is either a headline or an inlinetask element.  TIMESTAMP
+ENTRY is either a heading or an inlinetask element.  TIMESTAMP
 is a timestamp object defining the date-time of the event.  UID
 is the unique identifier for the event.  SUMMARY defines a short
 summary or subject for the event.  LOCATION defines the intended
@@ -725,7 +725,7 @@ Return VEVENT component as a string."
   (entry uid summary location description categories timezone class)
   "Create a VTODO component.
 
-ENTRY is either a headline or an inlinetask element.  UID is the
+ENTRY is either a heading or an inlinetask element.  UID is the
 unique identifier for the task.  SUMMARY defines a short summary
 or subject for the task.  LOCATION defines the intended venue for
 the task.  DESCRIPTION provides the complete description of the
@@ -862,7 +862,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
diff --git a/lisp/ox-koma-letter.el b/lisp/ox-koma-letter.el
index 55b66a814..61843d987 100644
--- a/lisp/ox-koma-letter.el
+++ b/lisp/ox-koma-letter.el
@@ -53,7 +53,7 @@
 ;; be specified using "special headings" with the special tags
 ;; specified in `org-koma-letter-special-tags-in-letter'.  LaTeX line
 ;; breaks are not necessary for TO_ADDRESS, FROM_ADDRESS and LOCATION.
-;; If both a headline and a keyword specify a to or from address the
+;; If both a heading and a keyword specify a to or from address the
 ;; value is determined in accordance with
 ;; `org-koma-letter-prefer-special-headings'.
 ;;
@@ -117,17 +117,17 @@
 ;;       \includegraphics{logo.pdf}
 ;;       \includegraphics{logo.png}
 ;;
-;; Headlines are in general ignored.  However, headlines with special
+;; Headings are in general ignored.  However, headings with special
 ;; tags can be used for specified contents like postscript (ps),
 ;; carbon copy (cc), enclosures (encl) and code to be inserted after
 ;; \end{letter} (after_letter).  Specials tags are defined in
 ;; `org-koma-letter-special-tags-after-closing' and
 ;; `org-koma-letter-special-tags-after-letter'.  Currently members of
 ;; `org-koma-letter-special-tags-after-closing' used as macros and the
-;; content of the headline is the argument.
+;; content of the heading is the argument.
 ;;
-;; Headlines with to and from may also be used rather than the keyword
-;; approach described above.  If both a keyword and a headline with
+;; Headings with to and from may also be used rather than the keyword
+;; approach described above.  If both a keyword and a heading with
 ;; information is present precedence is determined by
 ;; `org-koma-letter-prefer-special-headings'.
 ;;
@@ -257,7 +257,7 @@ Moreover, when:
   (1) Either `org-koma-letter-prefer-special-headings' is non-nil
       or there is no LOCATION keyword or the LOCATION keyword is
       empty;
-  (2) the letter contains a headline with the special
+  (2) the letter contains a heading with the special
       tag \"location\";
 then the location will be set as the content of the location
 special heading.
@@ -274,10 +274,10 @@ This option can also be set with the OPENING keyword.  Moreover,
 when:
   (1) Either `org-koma-letter-prefer-special-headings' is non-nil
       or the CLOSING keyword is empty
-  (2) `org-koma-letter-headline-is-opening-maybe' is non-nil;
-  (3) the letter contains a headline without a special
+  (2) `org-koma-letter-heading-is-opening-maybe' is non-nil;
+  (3) the letter contains a heading without a special
       tag (e.g. \"to\" or \"ps\");
-then the opening will be implicitly set as the untagged headline title."
+then the opening will be implicitly set as the untagged heading title."
   :group 'org-export-koma-letter
   :type 'string)
 
@@ -287,8 +287,8 @@ This option can also be set with the CLOSING keyword.  Moreover,
 when:
   (1) Either `org-koma-letter-prefer-special-headings' is non-nil
       or the CLOSING keyword is empty;
-  (2) `org-koma-letter-headline-is-opening-maybe' is non-nil;
-  (3) the letter contains a headline with the special
+  (2) `org-koma-letter-heading-is-opening-maybe' is non-nil;
+  (3) the letter contains a heading with the special
       tag \"closing\";
 then the opening will be set as the title of the closing special
 heading title."
@@ -301,8 +301,8 @@ This option can also be set with the SIGNATURE keyword.
 Moreover, when:
   (1) Either `org-koma-letter-prefer-special-headings' is non-nil
       or there is no CLOSING keyword or the CLOSING keyword is empty;
-  (2) `org-koma-letter-headline-is-opening-maybe' is non-nil;
-  (3) the letter contains a headline with the special
+  (2) `org-koma-letter-heading-is-opening-maybe' is non-nil;
+  (3) the letter contains a heading with the special
       tag \"closing\";
 then the signature will be  set as the content of the
 closing special heading.
@@ -312,7 +312,7 @@ Note if the content is empty the signature will not be set."
   :type 'string)
 
 (defcustom org-koma-letter-prefer-special-headings nil
-  "Non-nil means prefer headlines over keywords for TO and FROM.
+  "Non-nil means prefer headings over keywords for TO and FROM.
 This option can also be set with the OPTIONS keyword, e.g.:
 \"special-headings:t\"."
   :group 'org-export-koma-letter
@@ -457,8 +457,8 @@ The value must be a member of `org-latex-classes'."
   :group 'org-export-koma-letter
   :type 'string)
 
-(defcustom org-koma-letter-headline-is-opening-maybe t
-  "Non-nil means a headline may be used as an opening and closing.
+(defcustom org-koma-letter-heading-is-opening-maybe t
+  "Non-nil means a heading may be used as an opening and closing.
 See also `org-koma-letter-opening' and
 `org-koma-letter-closing'."
   :group 'org-export-koma-letter
@@ -523,7 +523,7 @@ e.g. \"title-subject:t\"."
     (:with-place nil "place" org-koma-letter-use-place)
     (:with-subject nil "subject" org-koma-letter-subject-format)
     (:with-title-as-subject nil "title-subject" org-koma-letter-prefer-subject)
-    (:with-headline-opening nil nil org-koma-letter-headline-is-opening-maybe)
+    (:with-heading-opening nil nil org-koma-letter-heading-is-opening-maybe)
     ;; Special properties non-nil when a setting happened in buffer.
     ;; They are used to prioritize in-buffer settings over "lco"
     ;; files.  See `org-koma-letter-template'.
@@ -545,7 +545,7 @@ e.g. \"title-subject:t\"."
     (:inbuffer-with-place nil "place" 'koma-letter:empty))
   :translate-alist '((export-block . org-koma-letter-export-block)
                      (export-snippet . org-koma-letter-export-snippet)
-                     (headline . org-koma-letter-headline)
+                     (heading . org-koma-letter-heading)
                      (keyword . org-koma-letter-keyword)
                      (template . org-koma-letter-template))
   :menu-entry
@@ -570,7 +570,7 @@ e.g. \"title-subject:t\"."
 ;; Thanks, Luis!
 
 (defun org-koma-letter--get-tagged-contents (key)
-  "Get contents from a headline tagged with KEY.
+  "Get contents from a heading tagged with KEY.
 The contents is stored in `org-koma-letter-special-contents'."
   (let ((value (cdr (assoc-string (org-koma-letter--get-value key)
                                   org-koma-letter-special-contents))))
@@ -648,53 +648,53 @@ channel."
     (if (equal key "KOMA-LETTER") value
       (org-export-with-backend 'latex keyword contents info))))
 
-;; Headline
+;; Heading
 
-(defun org-koma-letter-headline (headline contents info)
-  "Transcode a HEADLINE element from Org to LaTeX.
-CONTENTS holds the contents of the headline.  INFO is a plist
+(defun org-koma-letter-heading (heading contents info)
+  "Transcode a HEADING element from Org to LaTeX.
+CONTENTS holds the contents of the heading.  INFO is a plist
 holding contextual information.
 
-Note that if a headline is tagged with a tag from
+Note that if a heading is tagged with a tag from
 `org-koma-letter-special-tags' it will not be exported, but
 stored in `org-koma-letter-special-contents' and included at the
 appropriate place."
-  (let ((special-tag (org-koma-letter--special-tag headline info)))
+  (let ((special-tag (org-koma-letter--special-tag heading info)))
     (if (not special-tag)
         contents
       (push (cons special-tag contents) org-koma-letter-special-contents)
       "")))
 
-(defun org-koma-letter--special-tag (headline info)
-  "Non-nil if HEADLINE is a special headline.
+(defun org-koma-letter--special-tag (heading info)
+  "Non-nil if HEADING is a special heading.
 INFO is a plist holding contextual information.  Return first
-special tag headline."
+special tag heading."
   (let ((special-tags (append
                        (plist-get info :special-tags-in-letter)
                        (plist-get info :special-tags-after-closing)
                        (plist-get info :special-tags-after-letter))))
     (cl-some (lambda (tag) (and (assoc-string tag special-tags) tag))
-	     (org-export-get-tags headline info))))
+	     (org-export-get-tags heading info))))
 
-(defun org-koma-letter--keyword-or-headline (plist-key pred info)
+(defun org-koma-letter--keyword-or-heading (plist-key pred info)
   "Return the correct version of opening or closing.
 PLIST-KEY should be a key in info, typically :opening
-or :closing.  PRED is a predicate run on headline to determine
-which title to use which takes two arguments, a headline element
+or :closing.  PRED is a predicate run on heading to determine
+which title to use which takes two arguments, a heading element
 and an info plist.  INFO is a plist holding contextual
 information.  Return the preferred candidate for the exported of
 PLIST-KEY."
   (let* ((keyword-candidate (plist-get info plist-key))
-         (headline-candidate (when (and (plist-get info :with-headline-opening)
+         (heading-candidate (when (and (plist-get info :with-heading-opening)
                                         (or (plist-get info :special-headings)
                                             (not keyword-candidate)))
                                (org-element-map (plist-get info :parse-tree)
-                                   'headline
+                                   'heading
                                  (lambda (h)
                                    (and (funcall pred h info)
 					(org-element-property :title h)))
                                  info t))))
-    (org-export-data (or headline-candidate keyword-candidate "") info)))
+    (org-export-data (or heading-candidate keyword-candidate "") info)))
 
 ;;;; Template
 
@@ -766,7 +766,7 @@ holding export options."
                   "\\mbox{}"))))
    ;; Opening.
    (format "\\opening{%s}\n\n"
-           (org-koma-letter--keyword-or-headline
+           (org-koma-letter--keyword-or-heading
             :opening
 	    (lambda (h i)
 	      (not (org-koma-letter--special-tag h i)))
@@ -775,7 +775,7 @@ holding export options."
    contents
    ;; Closing.
    (format "\\closing{%s}\n"
-	   (org-koma-letter--keyword-or-headline
+	   (org-koma-letter--keyword-or-heading
 	    :closing
 	    (lambda (h i)
 	      (let ((special-tag (org-koma-letter--special-tag h i)))
@@ -857,7 +857,7 @@ a communication channel."
                   (if (plist-get info :with-from-logo) "true" "false")))
      ;; Signature.
      (let* ((heading-val
-             (and (plist-get info :with-headline-opening)
+             (and (plist-get info :with-heading-opening)
                   (pcase (org-koma-letter--get-tagged-contents 'closing)
                     ((and (pred org-string-nw-p) closing) (org-trim closing))
                     (_ nil))))
@@ -912,7 +912,7 @@ asynchronously.  The resulting buffer should be accessible
 through the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
@@ -949,7 +949,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
@@ -987,7 +987,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 99076f8b9..c663761a0 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -54,7 +54,7 @@
     (fixed-width . org-latex-fixed-width)
     (footnote-definition . org-latex-footnote-definition)
     (footnote-reference . org-latex-footnote-reference)
-    (headline . org-latex-headline)
+    (heading . org-latex-heading)
     (horizontal-rule . org-latex-horizontal-rule)
     (inline-src-block . org-latex-inline-src-block)
     (inlinetask . org-latex-inlinetask)
@@ -127,7 +127,7 @@
     (:latex-footnote-defined-format nil nil org-latex-footnote-defined-format)
     (:latex-footnote-separator nil nil org-latex-footnote-separator)
     (:latex-format-drawer-function nil nil org-latex-format-drawer-function)
-    (:latex-format-headline-function nil nil org-latex-format-headline-function)
+    (:latex-format-heading-function nil nil org-latex-format-heading-function)
     (:latex-format-inlinetask-function nil nil org-latex-format-inlinetask-function)
     (:latex-hyperref-template nil nil org-latex-hyperref-template t)
     (:latex-image-default-scale nil nil org-latex-image-default-scale)
@@ -363,7 +363,7 @@ advance.  One reason to do this is that it allows you to refer to
 various elements using a single label both in Org's link syntax
 and in embedded LaTeX code.
 
-For example, when this variable is non-nil, a headline like this:
+For example, when this variable is non-nil, a heading like this:
 
   ** Some section
      :PROPERTIES:
@@ -394,7 +394,7 @@ numbers, and the following punctuation: `_' `.' `-' `:'.)  There
 are no such limitations on CUSTOM_ID and NAME when this variable
 is nil.
 
-For headlines that do not define the CUSTOM_ID property or
+For headings that do not define the CUSTOM_ID property or
 elements without a NAME, Org will continue to use its default
 labeling scheme to generate labels and resolve links into proper
 references."
@@ -533,8 +533,8 @@ should have a %s to represent the section title.
 
 Instead of a list of sectioning commands, you can also specify
 a function name.  That function will be called with two
-parameters, the (reduced) level of the headline, and a predicate
-non-nil when the headline should be numbered.  It must return
+parameters, the (reduced) level of the heading, and a predicate
+non-nil when the heading should be numbered.  It must return
 a format string in which the section title will be added."
   :group 'org-export-latex
   :type '(repeat
@@ -643,17 +643,17 @@ precedence over this variable."
   :type '(choice (const :tag "No template" nil)
 		 (string :tag "Format string")))
 
-;;;; Headline
+;;;; Heading
 
-(defcustom org-latex-format-headline-function
-  'org-latex-format-headline-default-function
-  "Function for formatting the headline's text.
+(defcustom org-latex-format-heading-function
+  'org-latex-format-heading-default-function
+  "Function for formatting the heading's text.
 
 This function will be called with six arguments:
 TODO      the todo keyword (string or nil)
 TODO-TYPE the type of todo (symbol: `todo', `done', nil)
-PRIORITY  the priority of the headline (integer or nil)
-TEXT      the main headline text (string)
+PRIORITY  the priority of the heading (integer or nil)
+TEXT      the main heading text (string)
 TAGS      the tags (list of strings or nil)
 INFO      the export options (plist)
 
@@ -1295,7 +1295,7 @@ Eventually, if FULL is non-nil, wrap label within \"\\label{}\"."
 	 (user-label
 	  (org-element-property
 	   (cl-case type
-	     ((headline inlinetask) :CUSTOM_ID)
+	     ((heading inlinetask) :CUSTOM_ID)
 	     (target :value)
 	     (otherwise :name))
 	   datum))
@@ -1304,7 +1304,7 @@ Eventually, if FULL is non-nil, wrap label within \"\\label{}\"."
 	       (if (and user-label (plist-get info :latex-prefer-user-labels))
 		   user-label
 		 (concat (pcase type
-			   (`headline "sec:")
+			   (`heading "sec:")
 			   (`table "tab:")
 			   (`latex-environment
 			    (and (string-match-p
@@ -1710,7 +1710,7 @@ holding export options."
      (org-latex--insert-compiler info)
      ;; Document class and packages.
      (org-latex-make-preamble info)
-     ;; Possibly limit depth for headline numbering.
+     ;; Possibly limit depth for heading numbering.
      (let ((sec-num (plist-get info :section-numbers)))
        (when (integerp sec-num)
 	 (format "\\setcounter{secnumdepth}{%d}\n" sec-num)))
@@ -1947,16 +1947,16 @@ CONTENTS is nil.  INFO is a plist holding contextual information."
 	  (org-latex--delayed-footnotes-definitions def info))))))))
 
 
-;;;; Headline
+;;;; Heading
 
-(defun org-latex-headline (headline contents info)
-  "Transcode a HEADLINE element from Org to LaTeX.
-CONTENTS holds the contents of the headline.  INFO is a plist
+(defun org-latex-heading (heading contents info)
+  "Transcode a HEADING element from Org to LaTeX.
+CONTENTS holds the contents of the heading.  INFO is a plist
 holding contextual information."
-  (unless (org-element-property :footnote-section-p headline)
+  (unless (org-element-property :footnote-section-p heading)
     (let* ((class (plist-get info :latex-class))
-	   (level (org-export-get-relative-level headline info))
-	   (numberedp (org-export-numbered-headline-p headline info))
+	   (level (org-export-get-relative-level heading info))
+	   (numberedp (org-export-numbered-heading-p heading info))
 	   (class-sectioning (assoc class (plist-get info :latex-classes)))
 	   ;; Section formatting will set two placeholders: one for
 	   ;; the title and the other for the contents.
@@ -1995,58 +1995,58 @@ holding contextual information."
                (verbatim . (lambda (o _ _) (org-latex--protect-texttt (org-element-property :value o)))))))
 	   (text
 	    (org-export-data-with-backend
-	     (org-element-property :title headline) section-back-end info))
+	     (org-element-property :title heading) section-back-end info))
 	   (todo
 	    (and (plist-get info :with-todo-keywords)
-		 (let ((todo (org-element-property :todo-keyword headline)))
+		 (let ((todo (org-element-property :todo-keyword heading)))
 		   (and todo (org-export-data todo info)))))
-	   (todo-type (and todo (org-element-property :todo-type headline)))
+	   (todo-type (and todo (org-element-property :todo-type heading)))
 	   (tags (and (plist-get info :with-tags)
-		      (org-export-get-tags headline info)))
+		      (org-export-get-tags heading info)))
 	   (priority (and (plist-get info :with-priority)
-			  (org-element-property :priority headline)))
-	   ;; Create the headline text along with a no-tag version.
+			  (org-element-property :priority heading)))
+	   ;; Create the heading text along with a no-tag version.
 	   ;; The latter is required to remove tags from toc.
-	   (full-text (funcall (plist-get info :latex-format-headline-function)
+	   (full-text (funcall (plist-get info :latex-format-heading-function)
 			       todo todo-type priority text tags info))
-	   ;; Associate \label to the headline for internal links.
-	   (headline-label (org-latex--label headline info t t))
+	   ;; Associate \label to the heading for internal links.
+	   (heading-label (org-latex--label heading info t t))
 	   (pre-blanks
-	    (make-string (org-element-property :pre-blank headline) ?\n)))
-      (if (or (not section-fmt) (org-export-low-level-p headline info))
+	    (make-string (org-element-property :pre-blank heading) ?\n)))
+      (if (or (not section-fmt) (org-export-low-level-p heading info))
 	  ;; This is a deep sub-tree: export it as a list item.  Also
-	  ;; export as items headlines for which no section format has
+	  ;; export as items headings for which no section format has
 	  ;; been found.
 	  (let ((low-level-body
 		 (concat
-		  ;; If headline is the first sibling, start a list.
-		  (when (org-export-first-sibling-p headline info)
+		  ;; If heading is the first sibling, start a list.
+		  (when (org-export-first-sibling-p heading info)
 		    (format "\\begin{%s}\n" (if numberedp 'enumerate 'itemize)))
-		  ;; Itemize headline
+		  ;; Itemize heading
 		  "\\item"
 		  (and full-text
 		       (string-match-p "\\`[ \t]*\\[" full-text)
 		       "\\relax")
 		  " " full-text "\n"
-		  headline-label
+		  heading-label
 		  pre-blanks
 		  contents)))
-	    ;; If headline is not the last sibling simply return
+	    ;; If heading is not the last sibling simply return
 	    ;; LOW-LEVEL-BODY.  Otherwise, also close the list, before
 	    ;; any blank line.
-	    (if (not (org-export-last-sibling-p headline info)) low-level-body
+	    (if (not (org-export-last-sibling-p heading info)) low-level-body
 	      (replace-regexp-in-string
 	       "[ \t\n]*\\'"
 	       (format "\n\\\\end{%s}" (if numberedp 'enumerate 'itemize))
 	       low-level-body)))
-	;; This is a standard headline.  Export it as a section.  Add
+	;; This is a standard heading.  Export it as a section.  Add
 	;; an alternative heading when possible, and when this is not
 	;; identical to the usual heading.
 	(let ((opt-title
-	       (funcall (plist-get info :latex-format-headline-function)
+	       (funcall (plist-get info :latex-format-heading-function)
 			todo todo-type priority
 			(org-export-data-with-backend
-			 (org-export-get-alt-title headline info)
+			 (org-export-get-alt-title heading info)
 			 section-back-end info)
 			(and (eq (plist-get info :with-tags) t) tags)
 			info))
@@ -2056,13 +2056,13 @@ holding contextual information."
 		contents
 		(let ((case-fold-search t)
 		      (section
-		       (let ((first (car (org-element-contents headline))))
+		       (let ((first (car (org-element-contents heading))))
 			 (and (eq (org-element-type first) 'section) first))))
 		  (org-element-map section 'keyword
 		    (lambda (k)
 		      (and (equal (org-element-property :key k) "TOC")
 			   (let ((v (org-element-property :value k)))
-			     (and (string-match-p "\\<headlines\\>" v)
+			     (and (string-match-p "\\<headings\\>" v)
 				  (string-match-p "\\<local\\>" v)
 				  (format "\\stopcontents[level-%d]" level)))))
 		    info t)))))
@@ -2076,16 +2076,16 @@ holding contextual information."
 		      (replace-regexp-in-string
 		       "\\[" "(" (replace-regexp-in-string "\\]" ")" opt-title))
 		      full-text
-		      (concat headline-label pre-blanks contents))
+		      (concat heading-label pre-blanks contents))
 	    ;; Impossible to add an alternative heading.  Fallback to
 	    ;; regular sectioning format string.
 	    (format section-fmt full-text
-		    (concat headline-label pre-blanks contents))))))))
+		    (concat heading-label pre-blanks contents))))))))
 
-(defun org-latex-format-headline-default-function
+(defun org-latex-format-heading-default-function
     (todo _todo-type priority text tags _info)
-  "Default format function for a headline.
-See `org-latex-format-headline-function' for details."
+  "Default format function for a heading.
+See `org-latex-format-heading-function' for details."
   (concat
    (and todo (format "{\\bfseries\\sffamily %s} " todo))
    (and priority (format "\\framebox{\\#%c} " priority))
@@ -2285,9 +2285,9 @@ CONTENTS is nil.  INFO is a plist holding contextual information."
      ((string= key "TOC")
       (let ((case-fold-search t))
 	(cond
-	 ((string-match-p "\\<headlines\\>" value)
+	 ((string-match-p "\\<headings\\>" value)
 	  (let* ((localp (string-match-p "\\<local\\>" value))
-		 (parent (org-element-lineage keyword '(headline)))
+		 (parent (org-element-lineage keyword '(heading)))
 		 (level (if (not (and localp parent)) 0
 			  (org-export-get-relative-level parent info)))
 		 (depth
@@ -2597,7 +2597,7 @@ INFO is a plist holding contextual information.  See
 	  (format "\\hyperref[%s]{%s}"
 		  (org-export-get-reference destination info)
 		  desc))))
-     ;; Links pointing to a headline: Find destination and build
+     ;; Links pointing to a heading: Find destination and build
      ;; appropriate referencing command.
      ((member type '("custom-id" "fuzzy" "id"))
       (let ((destination
@@ -2615,14 +2615,14 @@ INFO is a plist holding contextual information.  See
 		   (or desc
 		       (org-export-data
 			(org-element-property :raw-link link) info))))
-	  ;; LINK points to a headline.  If headlines are numbered
-	  ;; and the link has no description, display headline's
-	  ;; number.  Otherwise, display description or headline's
+	  ;; LINK points to a heading.  If headings are numbered
+	  ;; and the link has no description, display heading's
+	  ;; number.  Otherwise, display description or heading's
 	  ;; title.
-	  (headline
+	  (heading
 	   (let ((label (org-latex--label destination info t)))
 	     (if (and (not desc)
-		      (org-export-numbered-headline-p destination info))
+		      (org-export-numbered-heading-p destination info))
 		 (format org-latex-reference-command label)
 	       (format "\\hyperref[%s]{%s}" label
 		       (or desc
@@ -3614,7 +3614,7 @@ asynchronously.  The resulting buffer should be accessible
 through the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
@@ -3658,7 +3658,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
@@ -3690,7 +3690,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
diff --git a/lisp/ox-man.el b/lisp/ox-man.el
index 27d2dedb8..ed331e467 100644
--- a/lisp/ox-man.el
+++ b/lisp/ox-man.el
@@ -64,7 +64,7 @@
     (fixed-width . org-man-fixed-width)
     (footnote-definition . org-man-footnote-definition)
     (footnote-reference . org-man-footnote-reference)
-    (headline . org-man-headline)
+    (heading . org-man-heading)
     (horizontal-rule . org-man-horizontal-rule)
     (inline-babel-call . org-man-inline-babel-call)
     (inline-src-block . org-man-inline-src-block)
@@ -440,13 +440,13 @@ CONTENTS is nil.  INFO is a plist holding contextual information."
 ;; Footnote References are Ignored
 
 
-;;; Headline
+;;; Heading
 
-(defun org-man-headline (headline contents info)
-  "Transcode a HEADLINE element from Org to Man.
-CONTENTS holds the contents of the headline.  INFO is a plist
+(defun org-man-heading (heading contents info)
+  "Transcode a HEADING element from Org to Man.
+CONTENTS holds the contents of the heading.  INFO is a plist
 holding contextual information."
-  (let* ((level (org-export-get-relative-level headline info))
+  (let* ((level (org-export-get-relative-level heading info))
 	 ;; Section formatting will set two placeholders: one for the
 	 ;; title and the other for the contents.
 	 (section-fmt
@@ -455,34 +455,34 @@ holding contextual information."
 	    (2 ".SS \"%s\"\n%s")
 	    (3 ".SS \"%s\"\n%s")
 	    (_ nil)))
-	 (text (org-export-data (org-element-property :title headline) info)))
+	 (text (org-export-data (org-element-property :title heading) info)))
 
     (cond
      ;; Case 1: This is a footnote section: ignore it.
-     ((org-element-property :footnote-section-p headline) nil)
+     ((org-element-property :footnote-section-p heading) nil)
 
      ;; Case 2. This is a deep sub-tree: export it as a list item.
-     ;;         Also export as items headlines for which no section
+     ;;         Also export as items headings for which no section
      ;;         format has been found.
-     ((or (not section-fmt) (org-export-low-level-p headline info))
+     ((or (not section-fmt) (org-export-low-level-p heading info))
       ;; Build the real contents of the sub-tree.
       (let ((low-level-body
 	     (concat
-	      ;; If the headline is the first sibling, start a list.
-	      (when (org-export-first-sibling-p headline info)
+	      ;; If the heading is the first sibling, start a list.
+	      (when (org-export-first-sibling-p heading info)
 		(format "%s\n" ".RS"))
-	      ;; Itemize headline
+	      ;; Itemize heading
 	      ".TP\n.ft I\n" text "\n.ft\n"
 	      contents ".RE")))
-	;; If headline is not the last sibling simply return
+	;; If heading is not the last sibling simply return
 	;; LOW-LEVEL-BODY.  Otherwise, also close the list, before any
 	;; blank line.
-	(if (not (org-export-last-sibling-p headline info)) low-level-body
+	(if (not (org-export-last-sibling-p heading info)) low-level-body
 	  (replace-regexp-in-string
 	   "[ \t\n]*\\'" ""
 	   low-level-body))))
 
-     ;; Case 3. Standard headline.  Export it as a section.
+     ;; Case 3. Standard heading.  Export it as a section.
      (t (format section-fmt text contents )))))
 
 ;;; Horizontal Rule
@@ -1066,7 +1066,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
@@ -1099,7 +1099,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
diff --git a/lisp/ox-md.el b/lisp/ox-md.el
index d288aba4c..c644b1d4b 100644
--- a/lisp/ox-md.el
+++ b/lisp/ox-md.el
@@ -43,8 +43,8 @@
   :version "24.4"
   :package-version '(Org . "8.0"))
 
-(defcustom org-md-headline-style 'atx
-  "Style used to format headlines.
+(defcustom org-md-heading-style 'atx
+  "Style used to format headings.
 This variable can be set to either `atx' or `setext'."
   :group 'org-export-md
   :type '(choice
@@ -93,7 +93,7 @@ The %s will be replaced by the footnote reference itself."
 		     (example-block . org-md-example-block)
 		     (export-block . org-md-export-block)
 		     (fixed-width . org-md-example-block)
-		     (headline . org-md-headline)
+		     (heading . org-md-heading)
 		     (horizontal-rule . org-md-horizontal-rule)
 		     (inline-src-block . org-md-verbatim)
 		     (inlinetask . org-md--convert-to-html)
@@ -120,7 +120,7 @@ The %s will be replaced by the footnote reference itself."
   :options-alist
   '((:md-footnote-format nil nil org-md-footnote-format)
     (:md-footnotes-section nil nil org-md-footnotes-section)
-    (:md-headline-style nil nil org-md-headline-style)))
+    (:md-heading-style nil nil org-md-heading-style)))
 
 \f
 ;;; Filters
@@ -159,17 +159,17 @@ Assume BACKEND is `md'."
 \f
 ;;; Internal functions
 
-(defun org-md--headline-referred-p (headline info)
-  "Non-nil when HEADLINE is being referred to.
+(defun org-md--heading-referred-p (heading info)
+  "Non-nil when HEADING is being referred to.
 INFO is a plist used as a communication channel.  Links and table
-of contents can refer to headlines."
-  (unless (org-element-property :footnote-section-p headline)
+of contents can refer to headings."
+  (unless (org-element-property :footnote-section-p heading)
     (or
-     ;; Global table of contents includes HEADLINE.
+     ;; Global table of contents includes HEADING.
      (and (plist-get info :with-toc)
-	  (memq headline
-		(org-export-collect-headlines info (plist-get info :with-toc))))
-     ;; A local table of contents includes HEADLINE.
+	  (memq heading
+		(org-export-collect-headings info (plist-get info :with-toc))))
+     ;; A local table of contents includes HEADING.
      (cl-some
       (lambda (h)
 	(let ((section (car (org-element-contents h))))
@@ -180,30 +180,30 @@ of contents can refer to headlines."
 	       (when (equal "TOC" (org-element-property :key keyword))
 		 (let ((case-fold-search t)
 		       (value (org-element-property :value keyword)))
-		   (and (string-match-p "\\<headlines\\>" value)
+		   (and (string-match-p "\\<headings\\>" value)
 			(let ((n (and
 				  (string-match "\\<[0-9]+\\>" value)
 				  (string-to-number (match-string 0 value))))
 			      (local? (string-match-p "\\<local\\>" value)))
-			  (memq headline
-				(org-export-collect-headlines
+			  (memq heading
+				(org-export-collect-headings
 				 info n (and local? keyword))))))))
 	     info t))))
-      (org-element-lineage headline))
-     ;; A link refers internally to HEADLINE.
+      (org-element-lineage heading))
+     ;; A link refers internally to HEADING.
      (org-element-map (plist-get info :parse-tree) 'link
        (lambda (link)
-	 (eq headline
+	 (eq heading
 	     (pcase (org-element-property :type link)
 	       ((or "custom-id" "id") (org-export-resolve-id-link link info))
 	       ("fuzzy" (org-export-resolve-fuzzy-link link info))
 	       (_ nil))))
        info t))))
 
-(defun org-md--headline-title (style level title &optional anchor tags)
-  "Generate a headline title in the preferred Markdown headline style.
+(defun org-md--heading-title (style level title &optional anchor tags)
+  "Generate a heading title in the preferred Markdown heading style.
 STYLE is the preferred style (`atx' or `setext').  LEVEL is the
-header level.  TITLE is the headline title.  ANCHOR is the HTML
+header level.  TITLE is the heading title.  ANCHOR is the HTML
 anchor tag for the section as a string.  TAGS are the tags set on
 the section."
   (let ((anchor-lines (and anchor (concat anchor "\n\n"))))
@@ -229,36 +229,36 @@ When optional argument SCOPE is non-nil, build a table of
 contents according to the specified element."
   (concat
    (unless scope
-     (let ((style (plist-get info :md-headline-style))
+     (let ((style (plist-get info :md-heading-style))
 	   (title (org-html--translate "Table of Contents" info)))
-       (org-md--headline-title style 1 title nil)))
+       (org-md--heading-title style 1 title nil)))
    (mapconcat
-    (lambda (headline)
+    (lambda (heading)
       (let* ((indentation
 	      (make-string
-	       (* 4 (1- (org-export-get-relative-level headline info)))
+	       (* 4 (1- (org-export-get-relative-level heading info)))
 	       ?\s))
 	     (bullet
-	      (if (not (org-export-numbered-headline-p headline info)) "-   "
+	      (if (not (org-export-numbered-heading-p heading info)) "-   "
 		(let ((prefix
-		       (format "%d." (org-last (org-export-get-headline-number
-						headline info)))))
+		       (format "%d." (org-last (org-export-get-heading-number
+						heading info)))))
 		  (concat prefix (make-string (max 1 (- 4 (length prefix)))
 					      ?\s)))))
 	     (title
 	      (format "[%s](#%s)"
 		      (org-export-data-with-backend
-		       (org-export-get-alt-title headline info)
+		       (org-export-get-alt-title heading info)
 		       (org-export-toc-entry-backend 'md)
 		       info)
-		      (or (org-element-property :CUSTOM_ID headline)
-			  (org-export-get-reference headline info))))
+		      (or (org-element-property :CUSTOM_ID heading)
+			  (org-export-get-reference heading info))))
 	     (tags (and (plist-get info :with-tags)
 			(not (eq 'not-in-toc (plist-get info :with-tags)))
 			(org-make-tag-string
-			 (org-export-get-tags headline info)))))
+			 (org-export-get-tags heading info)))))
 	(concat indentation bullet title tags)))
-    (org-export-collect-headlines info n scope) "\n")
+    (org-export-collect-headings info n scope) "\n")
    "\n"))
 
 (defun org-md--footnote-formatted (footnote info)
@@ -279,11 +279,11 @@ INFO is a plist used as a communication channel."
   (let* ((fn-alist (org-export-collect-footnote-definitions info))
          (fn-alist (cl-loop for (n _type raw) in fn-alist collect
                             (cons n (org-trim (org-export-data raw info)))))
-         (headline-style (plist-get info :md-headline-style))
+         (heading-style (plist-get info :md-heading-style))
          (section-title (org-html--translate "Footnotes" info)))
     (when fn-alist
       (format (plist-get info :md-footnotes-section)
-              (org-md--headline-title headline-style 1 section-title)
+              (org-md--heading-title heading-style 1 section-title)
               (mapconcat (lambda (fn) (org-md--footnote-formatted fn info))
                          fn-alist
                          "\n")))))
@@ -343,51 +343,51 @@ CONTENTS is nil.  INFO is a plist holding contextual information."
     (org-export-with-backend 'html export-block contents info)))
 
 
-;;;; Headline
+;;;; Heading
 
-(defun org-md-headline (headline contents info)
-  "Transcode HEADLINE element into Markdown format.
-CONTENTS is the headline contents.  INFO is a plist used as
+(defun org-md-heading (heading contents info)
+  "Transcode HEADING element into Markdown format.
+CONTENTS is the heading contents.  INFO is a plist used as
 a communication channel."
-  (unless (org-element-property :footnote-section-p headline)
-    (let* ((level (org-export-get-relative-level headline info))
-	   (title (org-export-data (org-element-property :title headline) info))
+  (unless (org-element-property :footnote-section-p heading)
+    (let* ((level (org-export-get-relative-level heading info))
+	   (title (org-export-data (org-element-property :title heading) info))
 	   (todo (and (plist-get info :with-todo-keywords)
 		      (let ((todo (org-element-property :todo-keyword
-							headline)))
+							heading)))
 			(and todo (concat (org-export-data todo info) " ")))))
 	   (tags (and (plist-get info :with-tags)
-		      (let ((tag-list (org-export-get-tags headline info)))
+		      (let ((tag-list (org-export-get-tags heading info)))
 			(and tag-list
 			     (concat "     " (org-make-tag-string tag-list))))))
 	   (priority
 	    (and (plist-get info :with-priority)
-		 (let ((char (org-element-property :priority headline)))
+		 (let ((char (org-element-property :priority heading)))
 		   (and char (format "[#%c] " char)))))
-	   ;; Headline text without tags.
+	   ;; Heading text without tags.
 	   (heading (concat todo priority title))
-	   (style (plist-get info :md-headline-style)))
+	   (style (plist-get info :md-heading-style)))
       (cond
-       ;; Cannot create a headline.  Fall-back to a list.
-       ((or (org-export-low-level-p headline info)
+       ;; Cannot create a heading.  Fall-back to a list.
+       ((or (org-export-low-level-p heading info)
 	    (not (memq style '(atx setext)))
 	    (and (eq style 'atx) (> level 6))
 	    (and (eq style 'setext) (> level 2)))
 	(let ((bullet
-	       (if (not (org-export-numbered-headline-p headline info)) "-"
+	       (if (not (org-export-numbered-heading-p heading info)) "-"
 		 (concat (number-to-string
-			  (car (last (org-export-get-headline-number
-				      headline info))))
+			  (car (last (org-export-get-heading-number
+				      heading info))))
 			 "."))))
 	  (concat bullet (make-string (- 4 (length bullet)) ?\s) heading tags "\n\n"
 		  (and contents (replace-regexp-in-string "^" "    " contents)))))
        (t
 	(let ((anchor
-	       (and (org-md--headline-referred-p headline info)
+	       (and (org-md--heading-referred-p heading info)
 		    (format "<a id=\"%s\"></a>"
-			    (or (org-element-property :CUSTOM_ID headline)
-				(org-export-get-reference headline info))))))
-	  (concat (org-md--headline-title style level heading anchor tags)
+			    (or (org-element-property :CUSTOM_ID heading)
+				(org-export-get-reference heading info))))))
+	  (concat (org-md--heading-title style level heading anchor tags)
 		  contents)))))))
 
 ;;;; Horizontal Rule
@@ -449,7 +449,7 @@ channel."
      (let ((case-fold-search t)
 	   (value (org-element-property :value keyword)))
        (cond
-	((string-match-p "\\<headlines\\>" value)
+	((string-match-p "\\<headings\\>" value)
 	 (let ((depth (and (string-match "\\<[0-9]+\\>" value)
 			   (string-to-number (match-string 0 value))))
 	       (scope
@@ -534,14 +534,14 @@ INFO is a plist holding contextual information.  See
 	   (let ((path (funcall link-org-files-as-md destination)))
 	     (if (not desc) (format "<%s>" path)
 	       (format "[%s](%s)" desc path))))
-	  (`headline
+	  (`heading
 	   (format
 	    "[%s](#%s)"
 	    ;; Description.
 	    (cond ((org-string-nw-p desc))
-		  ((org-export-numbered-headline-p destination info)
+		  ((org-export-numbered-heading-p destination info)
 		   (mapconcat #'number-to-string
-			      (org-export-get-headline-number destination info)
+			      (org-export-get-heading-number destination info)
 			      "."))
 		  (t (org-export-data (org-element-property :title destination)
 				      info)))
@@ -719,7 +719,7 @@ asynchronously.  The resulting buffer should be accessible
 through the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
@@ -756,7 +756,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
diff --git a/lisp/ox-odt.el b/lisp/ox-odt.el
index fa4430482..00960efbd 100644
--- a/lisp/ox-odt.el
+++ b/lisp/ox-odt.el
@@ -48,7 +48,7 @@
     (fixed-width . org-odt-fixed-width)
     (footnote-definition . org-odt-footnote-definition)
     (footnote-reference . org-odt-footnote-reference)
-    (headline . org-odt-headline)
+    (heading . org-odt-heading)
     (horizontal-rule . org-odt-horizontal-rule)
     (inline-src-block . org-odt-inline-src-block)
     (inlinetask . org-odt-inlinetask)
@@ -105,7 +105,7 @@
     (:odt-display-outline-level nil nil org-odt-display-outline-level)
     (:odt-fontify-srcblocks nil nil org-odt-fontify-srcblocks)
     (:odt-format-drawer-function nil nil org-odt-format-drawer-function)
-    (:odt-format-headline-function nil nil org-odt-format-headline-function)
+    (:odt-format-heading-function nil nil org-odt-format-heading-function)
     (:odt-format-inlinetask-function nil nil org-odt-format-inlinetask-function)
     (:odt-inline-formula-rules nil nil org-odt-inline-formula-rules)
     (:odt-inline-image-rules nil nil org-odt-inline-image-rules)
@@ -651,20 +651,20 @@ The default value simply returns the value of CONTENTS."
   :type 'function)
 
 
-;;;; Headline
+;;;; Heading
 
-(defcustom org-odt-format-headline-function
-  'org-odt-format-headline-default-function
-  "Function to format headline text.
+(defcustom org-odt-format-heading-function
+  'org-odt-format-heading-default-function
+  "Function to format heading text.
 
 This function will be called with 5 arguments:
 TODO      the todo keyword (string or nil).
 TODO-TYPE the type of todo (symbol: `todo', `done', nil)
-PRIORITY  the priority of the headline (integer or nil)
-TEXT      the main headline text (string).
+PRIORITY  the priority of the heading (integer or nil)
+TEXT      the main heading text (string).
 TAGS      the tags string, separated with colons (string or nil).
 
-The function result will be used as headline text."
+The function result will be used as heading text."
   :group 'org-export-odt
   :version "26.1"
   :package-version '(Org . "8.3")
@@ -1098,11 +1098,11 @@ specifying the depth of the table."
   </text:index-body>
 </text:table-of-content>"))
 
-(cl-defun org-odt-format-toc-headline
+(cl-defun org-odt-format-toc-heading
     (todo _todo-type priority text tags
-	  &key _level section-number headline-label &allow-other-keys)
+	  &key _level section-number heading-label &allow-other-keys)
   (format "<text:a xlink:type=\"simple\" xlink:href=\"#%s\">%s</text:a>"
-	  headline-label
+	  heading-label
 	  (concat
 	   ;; Section number.
 	   (and section-number (concat section-number ". "))
@@ -1137,7 +1137,7 @@ a plist containing current export properties.  Optional argument
 SCOPE, when non-nil, defines the scope of the table.  Return the
 table of contents as a string, or nil."
   (cl-assert (wholenump depth))
-  ;; When a headline is marked as a radio target, as in the example below:
+  ;; When a heading is marked as a radio target, as in the example below:
   ;;
   ;; ** <<<Some Heading>>>
   ;;    Some text.
@@ -1149,21 +1149,21 @@ table of contents as a string, or nil."
   ;;
   ;; Likewise, links, footnote references and regular targets are also
   ;; suppressed.
-  (let* ((headlines (org-export-collect-headlines info depth scope))
+  (let* ((headings (org-export-collect-headings info depth scope))
 	 (backend (org-export-toc-entry-backend
 		      (org-export-backend-name (plist-get info :back-end)))))
-    (when headlines
+    (when headings
       (org-odt--format-toc
        (and (not scope) (org-export-translate "Table of Contents" :utf-8 info))
        (mapconcat
-	(lambda (headline)
-	  (let* ((entry (org-odt-format-headline--wrap
-			 headline backend info 'org-odt-format-toc-headline))
-		 (level (org-export-get-relative-level headline info))
+	(lambda (heading)
+	  (let* ((entry (org-odt-format-heading--wrap
+			 heading backend info 'org-odt-format-toc-heading))
+		 (level (org-export-get-relative-level heading info))
 		 (style (format "Contents_20_%d" level)))
 	    (format "\n<text:p text:style-name=\"%s\">%s</text:p>"
 		    style entry)))
-	headlines "\n")
+	headings "\n")
        depth))))
 
 
@@ -1554,7 +1554,7 @@ original parsed data.  INFO is a plist holding export options."
       (let* ((with-toc (plist-get info :with-toc))
 	     (depth (and with-toc (if (wholenump with-toc)
 				      with-toc
-				    (plist-get info :headline-levels)))))
+				    (plist-get info :heading-levels)))))
 	(when depth (insert (or (org-odt-toc depth info) ""))))
       ;; Contents.
       (insert contents)
@@ -1749,84 +1749,84 @@ CONTENTS is nil.  INFO is a plist holding contextual information."
 	   (funcall --format-footnote-definition n def))))))))
 
 
-;;;; Headline
+;;;; Heading
 
-(defun org-odt-format-headline--wrap (headline backend info
+(defun org-odt-format-heading--wrap (heading backend info
 					       &optional format-function
 					       &rest extra-keys)
-  "Transcode a HEADLINE element using BACKEND.
+  "Transcode a HEADING element using BACKEND.
 INFO is a plist holding contextual information."
   (setq backend (or backend (plist-get info :back-end)))
-  (let* ((level (+ (org-export-get-relative-level headline info)))
-	 (headline-number (org-export-get-headline-number headline info))
-	 (section-number (and (org-export-numbered-headline-p headline info)
+  (let* ((level (+ (org-export-get-relative-level heading info)))
+	 (heading-number (org-export-get-heading-number heading info))
+	 (section-number (and (org-export-numbered-heading-p heading info)
 			      (mapconcat 'number-to-string
-					 headline-number ".")))
+					 heading-number ".")))
 	 (todo (and (plist-get info :with-todo-keywords)
-		    (let ((todo (org-element-property :todo-keyword headline)))
+		    (let ((todo (org-element-property :todo-keyword heading)))
 		      (and todo
 			   (org-export-data-with-backend todo backend info)))))
-	 (todo-type (and todo (org-element-property :todo-type headline)))
+	 (todo-type (and todo (org-element-property :todo-type heading)))
 	 (priority (and (plist-get info :with-priority)
-			(org-element-property :priority headline)))
+			(org-element-property :priority heading)))
 	 (text (org-export-data-with-backend
-		(org-element-property :title headline) backend info))
+		(org-element-property :title heading) backend info))
 	 (tags (and (plist-get info :with-tags)
-		    (org-export-get-tags headline info)))
-	 (headline-label (org-export-get-reference headline info))
+		    (org-export-get-tags heading info)))
+	 (heading-label (org-export-get-reference heading info))
 	 (format-function
 	  (if (functionp format-function) format-function
 	    (cl-function
 	     (lambda (todo todo-type priority text tags
-		      &key _level _section-number _headline-label
+		      &key _level _section-number _heading-label
 		      &allow-other-keys)
-	       (funcall (plist-get info :odt-format-headline-function)
+	       (funcall (plist-get info :odt-format-heading-function)
 			todo todo-type priority text tags))))))
     (apply format-function
 	   todo todo-type priority text tags
-	   :headline-label headline-label
+	   :heading-label heading-label
 	   :level level
 	   :section-number section-number extra-keys)))
 
-(defun org-odt-headline (headline contents info)
-  "Transcode a HEADLINE element from Org to ODT.
-CONTENTS holds the contents of the headline.  INFO is a plist
+(defun org-odt-heading (heading contents info)
+  "Transcode a HEADING element from Org to ODT.
+CONTENTS holds the contents of the heading.  INFO is a plist
 holding contextual information."
   ;; Case 1: This is a footnote section: ignore it.
-  (unless (org-element-property :footnote-section-p headline)
-    (let* ((full-text (org-odt-format-headline--wrap headline nil info))
+  (unless (org-element-property :footnote-section-p heading)
+    (let* ((full-text (org-odt-format-heading--wrap heading nil info))
 	   ;; Get level relative to current parsed data.
-	   (level (org-export-get-relative-level headline info))
-	   (numbered (org-export-numbered-headline-p headline info))
-	   ;; Get canonical label for the headline.
-	   (id (org-export-get-reference headline info))
+	   (level (org-export-get-relative-level heading info))
+	   (numbered (org-export-numbered-heading-p heading info))
+	   ;; Get canonical label for the heading.
+	   (id (org-export-get-reference heading info))
 	   ;; Extra targets.
 	   (extra-targets
-	    (let ((id (org-element-property :ID headline)))
+	    (let ((id (org-element-property :ID heading)))
 	      (if id (org-odt--target "" (concat "ID-" id)) "")))
 	   ;; Title.
 	   (anchored-title (org-odt--target full-text id)))
       (cond
        ;; Case 2. This is a deep sub-tree: export it as a list item.
-       ;;         Also export as items headlines for which no section
+       ;;         Also export as items headings for which no section
        ;;         format has been found.
-       ((org-export-low-level-p headline info)
+       ((org-export-low-level-p heading info)
 	;; Build the real contents of the sub-tree.
 	(concat
-	 (and (org-export-first-sibling-p headline info)
+	 (and (org-export-first-sibling-p heading info)
 	      (format "\n<text:list text:style-name=\"%s\" %s>"
 		      ;; Choose style based on list type.
 		      (if numbered "OrgNumberedList" "OrgBulletedList")
 		      ;; If top-level list, re-start numbering.  Otherwise,
 		      ;; continue numbering.
 		      (format "text:continue-numbering=\"%s\""
-			      (let* ((parent (org-export-get-parent-headline
-					      headline)))
+			      (let* ((parent (org-export-get-parent-heading
+					      heading)))
 				(if (and parent
 					 (org-export-low-level-p parent info))
 				    "true" "false")))))
-	 (let ((headline-has-table-p
-		(let ((section (assq 'section (org-element-contents headline))))
+	 (let ((heading-has-table-p
+		(let ((section (assq 'section (org-element-contents heading))))
 		  (assq 'table (and section (org-element-contents section))))))
 	   (format "\n<text:list-item>\n%s\n%s"
 		   (concat
@@ -1834,12 +1834,12 @@ holding contextual information."
 			    "Text_20_body"
 			    (concat extra-targets anchored-title))
 		    contents)
-		   (if headline-has-table-p
+		   (if heading-has-table-p
 		       "</text:list-header>"
 		     "</text:list-item>")))
-	 (and (org-export-last-sibling-p headline info)
+	 (and (org-export-last-sibling-p heading info)
 	      "</text:list>")))
-       ;; Case 3. Standard headline.  Export it as a section.
+       ;; Case 3. Standard heading.  Export it as a section.
        (t
 	(concat
 	 (format
@@ -1851,10 +1851,10 @@ holding contextual information."
 	  (concat extra-targets anchored-title))
 	 contents))))))
 
-(defun org-odt-format-headline-default-function
+(defun org-odt-format-heading-default-function
   (todo todo-type priority text tags)
-  "Default format function for a headline.
-See `org-odt-format-headline-function' for details."
+  "Default format function for a heading.
+See `org-odt-format-heading-function' for details."
   (concat
    ;; Todo.
    (when todo
@@ -1939,7 +1939,7 @@ See `org-odt-format-inlinetask-function' for details."
 	   (concat
 	    (format "\n<text:p text:style-name=\"%s\">%s</text:p>"
 		    "OrgInlineTaskHeading"
-		    (org-odt-format-headline-default-function
+		    (org-odt-format-heading-default-function
 		     todo todo-type priority name tags))
 	    contents)
 	   nil nil "OrgInlineTaskFrame" " style:rel-width=\"100%\"")))
@@ -1988,10 +1988,10 @@ information."
      ((string= key "TOC")
       (let ((case-fold-search t))
 	(cond
-	 ((string-match-p "\\<headlines\\>" value)
+	 ((string-match-p "\\<headings\\>" value)
 	  (let ((depth (or (and (string-match "\\<[0-9]+\\>" value)
 				(string-to-number (match-string 0 value)))
-			   (plist-get info :headline-levels)))
+			   (plist-get info :heading-levels)))
 		(scope
 		 (cond
 		  ((string-match ":target +\\(\".+?\"\\|\\S-+\\)" value) ;link
@@ -2053,12 +2053,12 @@ CONTENTS is nil.  INFO is a plist holding contextual information."
 
 (defun org-odt--enumerate (element info &optional predicate n)
   (when predicate (cl-assert (funcall predicate element info)))
-  (let* ((--numbered-parent-headline-at-<=-n
+  (let* ((--numbered-parent-heading-at-<=-n
 	  (lambda (element n info)
 	    (cl-loop for x in (org-element-lineage element)
-		     thereis (and (eq (org-element-type x) 'headline)
+		     thereis (and (eq (org-element-type x) 'heading)
 				  (<= (org-export-get-relative-level x info) n)
-				  (org-export-numbered-headline-p x info)
+				  (org-export-numbered-heading-p x info)
 				  x))))
 	 (--enumerate
 	  (lambda (element scope info &optional predicate)
@@ -2071,7 +2071,7 @@ CONTENTS is nil.  INFO is a plist holding contextual information."
 		       (eq element el)
 		       counter))
 		info 'first-match))))
-	 (scope (funcall --numbered-parent-headline-at-<=-n
+	 (scope (funcall --numbered-parent-heading-at-<=-n
 			 element
 			 (or n (plist-get info :odt-display-outline-level))
 			 info))
@@ -2081,7 +2081,7 @@ CONTENTS is nil.  INFO is a plist holding contextual information."
 	   ;; Section number.
 	   (and scope
 		(mapconcat 'number-to-string
-			   (org-export-get-headline-number scope info) "."))
+			   (org-export-get-heading-number scope info) "."))
 	   ;; Separator.
 	   (and scope ".")
 	   ;; Ordinal.
@@ -2594,7 +2594,7 @@ Return nil, otherwise."
 			    (t nil))))))))
 
 (defun org-odt-link--infer-description (destination info)
-  ;; DESTINATION is a headline or an element (like paragraph,
+  ;; DESTINATION is a heading or an element (like paragraph,
   ;; verse-block etc) to which a "#+NAME: label" can be attached.
 
   ;; Note that labels that are attached to captioned entities - inline
@@ -2610,7 +2610,7 @@ Return nil, otherwise."
   (let* ((genealogy (org-element-lineage destination))
 	 (data (reverse genealogy))
 	 (label (let ((type (org-element-type destination)))
-		  (if (memq type '(headline target))
+		  (if (memq type '(heading target))
 		      (org-export-get-reference destination info)
 		    (error "FIXME: Unable to resolve %S" destination)))))
     (or
@@ -2628,59 +2628,59 @@ Return nil, otherwise."
 					'ordered)
 				(1+ (length (org-export-get-previous-element
 					     item info t))))))
-	    ;; Locate top-most listified headline.
-	    (listified-headlines
+	    ;; Locate top-most listified heading.
+	    (listified-headings
 	     (cl-loop for x on data
-		      when (and (eq (org-element-type (car x)) 'headline)
+		      when (and (eq (org-element-type (car x)) 'heading)
 				(org-export-low-level-p (car x) info))
 		      return x))
-	    ;; Get listified headline numbers.
-	    (listified-headline-nos
-	     (cl-loop for el in listified-headlines
-		      when (eq (org-element-type el) 'headline)
-		      collect (when (org-export-numbered-headline-p el info)
+	    ;; Get listified heading numbers.
+	    (listified-heading-nos
+	     (cl-loop for el in listified-headings
+		      when (eq (org-element-type el) 'heading)
+		      collect (when (org-export-numbered-heading-p el info)
 				(1+ (length (org-export-get-previous-element
 					     el info t)))))))
-       ;; Combine item numbers from both the listified headlines and
+       ;; Combine item numbers from both the listified headings and
        ;; regular list items.
 
        ;; Case 1: Check if all the parents of list item are numbered.
        ;; If yes, link to the item proper.
-       (let ((item-numbers (append listified-headline-nos item-numbers)))
+       (let ((item-numbers (append listified-heading-nos item-numbers)))
 	 (when (and item-numbers (not (memq nil item-numbers)))
 	   (format "<text:bookmark-ref text:reference-format=\"number-all-superior\" text:ref-name=\"%s\">%s</text:bookmark-ref>"
 		   label
 		   (mapconcat (lambda (n) (if (not n) " "
 				       (concat (number-to-string n) ".")))
 			      item-numbers "")))))
-     ;; Case 2: Locate a regular and numbered headline in the
+     ;; Case 2: Locate a regular and numbered heading in the
      ;; hierarchy.  Display its section number.
-     (let ((headline
+     (let ((heading
 	    (and
-	     ;; Test if destination is a numbered headline.
-	     (org-export-numbered-headline-p destination info)
+	     ;; Test if destination is a numbered heading.
+	     (org-export-numbered-heading-p destination info)
 	     (cl-loop for el in (cons destination genealogy)
-		      when (and (eq (org-element-type el) 'headline)
+		      when (and (eq (org-element-type el) 'heading)
 				(not (org-export-low-level-p el info))
-				(org-export-numbered-headline-p el info))
+				(org-export-numbered-heading-p el info))
 		      return el))))
        ;; We found one.
-       (when headline
+       (when heading
 	 (format "<text:bookmark-ref text:reference-format=\"chapter\" text:ref-name=\"OrgXref.%s\">%s</text:bookmark-ref>"
 		 label
-		 (mapconcat 'number-to-string (org-export-get-headline-number
-					       headline info) "."))))
-     ;; Case 4: Locate a regular headline in the hierarchy.  Display
+		 (mapconcat 'number-to-string (org-export-get-heading-number
+					       heading info) "."))))
+     ;; Case 4: Locate a regular heading in the hierarchy.  Display
      ;; its title.
-     (let ((headline (cl-loop for el in (cons destination genealogy)
-			      when (and (eq (org-element-type el) 'headline)
+     (let ((heading (cl-loop for el in (cons destination genealogy)
+			      when (and (eq (org-element-type el) 'heading)
 					(not (org-export-low-level-p el info)))
 			      return el)))
        ;; We found one.
-       (when headline
+       (when heading
 	 (format "<text:bookmark-ref text:reference-format=\"text\" text:ref-name=\"OrgXref.%s\">%s</text:bookmark-ref>"
 		 label
-		 (let ((title (org-element-property :title headline)))
+		 (let ((title (org-element-property :title heading)))
 		   (org-export-data title info)))))
      (error "FIXME?"))))
 
@@ -2723,17 +2723,17 @@ INFO is a plist holding contextual information.  See
 	   "<text:bookmark-ref text:reference-format=\"text\" text:ref-name=\"OrgXref.%s\">%s</text:bookmark-ref>"
 	   (org-export-get-reference destination info)
 	   desc))))
-     ;; Links pointing to a headline: Find destination and build
+     ;; Links pointing to a heading: Find destination and build
      ;; appropriate referencing command.
      ((member type '("custom-id" "fuzzy" "id"))
       (let ((destination (if (string= type "fuzzy")
 			     (org-export-resolve-fuzzy-link link info)
 			   (org-export-resolve-id-link link info))))
 	(cl-case (org-element-type destination)
-	  ;; Fuzzy link points to a headline.  If there's
+	  ;; Fuzzy link points to a heading.  If there's
 	  ;; a description, create a hyperlink.  Otherwise, try to
 	  ;; provide a meaningful description.
-	  (headline
+	  (heading
 	   (if (not desc) (org-odt-link--infer-description destination info)
 	     (let ((label
 		    (or (and (string= type "custom-id")
@@ -3463,11 +3463,11 @@ pertaining to indentation here."
 		    (apply #'nconc
 			   (cl-loop
 			    for el in genealogy
-			    when (and (eq (org-element-type el) 'headline)
+			    when (and (eq (org-element-type el) 'heading)
 				      (org-export-low-level-p el info))
 			    collect
 			    (list el
-				  (assq 'headline
+				  (assq 'heading
 					(org-element-contents
 					 (org-export-get-parent el)))))))
 		   parent-list)
@@ -3496,7 +3496,7 @@ pertaining to indentation here."
 			      parent-list info)
 		     '("</text:list-header>" . "<text:list-header>"))
 		    (t '("</text:list-item>" . "<text:list-item>"))))))
-	       ;; Handle low-level headlines.
+	       ;; Handle low-level headings.
 	       (cl-loop for el in llh-genealogy
 			with step = 'item collect
 			(cl-case step
@@ -3505,7 +3505,7 @@ pertaining to indentation here."
 			   (setq parent-list el)
 			   (cons "</text:list>"
 				 (format "\n<text:list text:style-name=\"%s\" %s>"
-					 (if (org-export-numbered-headline-p
+					 (if (org-export-numbered-heading-p
 					      el info)
 					     "OrgNumberedList"
 					   "OrgBulletedList")
@@ -3569,13 +3569,13 @@ pertaining to indentation here."
     ;; account the following facts:
     ;;
     ;; - Description lists are simulated as plain lists.
-    ;; - Low-level headlines can be listified.
+    ;; - Low-level headings can be listified.
     ;; - In Org mode, a table can occur not only as a regular list
     ;;   item, but also within description lists and low-level
-    ;;   headlines.
+    ;;   headings.
 
     ;; See `org-odt-translate-description-lists' and
-    ;; `org-odt-translate-low-level-headlines' for how this is
+    ;; `org-odt-translate-low-level-headings' for how this is
     ;; tackled.
 
     (concat "\n"
@@ -4153,7 +4153,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
diff --git a/lisp/ox-org.el b/lisp/ox-org.el
index c2b85473c..27b83ee7e 100644
--- a/lisp/ox-org.el
+++ b/lisp/ox-org.el
@@ -66,7 +66,7 @@ setting of `org-html-htmlize-output-type' is `css'."
     (fixed-width . org-org-identity)
     (footnote-definition . ignore)
     (footnote-reference . org-org-identity)
-    (headline . org-org-headline)
+    (heading . org-org-heading)
     (horizontal-rule . org-org-identity)
     (inline-babel-call . org-org-identity)
     (inline-src-block . org-org-identity)
@@ -112,15 +112,15 @@ setting of `org-html-htmlize-output-type' is `css'."
   :filters-alist '((:filter-parse-tree . org-org--add-missing-sections)))
 
 (defun org-org--add-missing-sections (tree _backend _info)
-  "Ensure each headline has an associated section.
+  "Ensure each heading has an associated section.
 
 TREE is the parse tree being exported.
 
-Footnotes relative to the headline are inserted in the section,
+Footnotes relative to the heading are inserted in the section,
 using `org-org-section'.  However, this function is not called if
-the headline doesn't contain any section in the first place, so
+the heading doesn't contain any section in the first place, so
 we make sure it is always called."
-  (org-element-map tree 'headline
+  (org-element-map tree 'heading
     (lambda (h)
       (let ((first-child (car (org-element-contents h)))
 	    (new-section (org-element-create 'section)))
@@ -144,19 +144,19 @@ CONTENTS is its contents, as a string or nil.  INFO is ignored."
      "^[ \t]*#\\+ATTR_[-_A-Za-z0-9]+:\\(?: .*\\)?\n" ""
      (org-export-expand blob contents t))))
 
-(defun org-org-headline (headline contents info)
-  "Transcode HEADLINE element back into Org syntax.
+(defun org-org-heading (heading contents info)
+  "Transcode HEADING element back into Org syntax.
 CONTENTS is its contents, as a string or nil.  INFO is ignored."
-  (unless (org-element-property :footnote-section-p headline)
+  (unless (org-element-property :footnote-section-p heading)
     (unless (plist-get info :with-todo-keywords)
-      (org-element-put-property headline :todo-keyword nil))
+      (org-element-put-property heading :todo-keyword nil))
     (unless (plist-get info :with-tags)
-      (org-element-put-property headline :tags nil))
+      (org-element-put-property heading :tags nil))
     (unless (plist-get info :with-priority)
-      (org-element-put-property headline :priority nil))
-    (org-element-put-property headline :level
-			      (org-export-get-relative-level headline info))
-    (org-element-headline-interpreter headline contents)))
+      (org-element-put-property heading :priority nil))
+    (org-element-put-property heading :level
+			      (org-export-get-relative-level heading info))
+    (org-element-heading-interpreter heading contents)))
 
 (defun org-org-keyword (keyword _contents _info)
   "Transcode KEYWORD element back into Org syntax.
@@ -218,12 +218,12 @@ a communication channel."
   (concat
    (org-element-normalize-string contents)
    ;; Insert footnote definitions appearing for the first time in this
-   ;; section, or in the relative headline title.  Indeed, some of
+   ;; section, or in the relative heading title.  Indeed, some of
    ;; them may not be available to narrowing so we make sure all of
    ;; them are included in the result.
    (let ((footnotes
 	  (org-element-map
-	      (list (org-export-get-parent-headline section) section)
+	      (list (org-export-get-parent-heading section) section)
 	      'footnote-reference
 	    (lambda (fn)
 	      (and (eq (org-element-property :type fn) 'standard)
@@ -234,7 +234,7 @@ a communication channel."
 			    (org-export-data
 			     (org-export-get-footnote-definition fn info)
 			     info)))))
-	    info nil 'headline t)))
+	    info nil 'heading t)))
      (and footnotes (concat "\n" (mapconcat #'identity footnotes "\n"))))))
 
 ;;;###autoload
@@ -252,7 +252,7 @@ asynchronously.  The resulting buffer should be accessible
 through the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
@@ -287,7 +287,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
diff --git a/lisp/ox-publish.el b/lisp/ox-publish.el
index 3b9666ddb..46cd45046 100644
--- a/lisp/ox-publish.el
+++ b/lisp/ox-publish.el
@@ -163,7 +163,7 @@ included.  See the back-end documentation for more information.
   :creator                  `org-export-creator-string'
   :email                    `user-mail-address'
   :exclude-tags             `org-export-exclude-tags'
-  :headline-levels          `org-export-headline-levels'
+  :heading-levels          `org-export-heading-levels'
   :language                 `org-export-default-language'
   :preserve-breaks          `org-export-preserve-breaks'
   :section-numbers          `org-export-with-section-numbers'
@@ -1024,7 +1024,7 @@ The index relative to current file is stored as an alist.  An
 association has the following shape: (TERM FILE-NAME PARENT),
 where TERM is the indexed term, as a string, FILE-NAME is the
 original full path of the file where the term in encountered, and
-PARENT is a reference to the headline, if any, containing the
+PARENT is a reference to the heading, if any, containing the
 original index keyword.  When non-nil, this reference is a cons
 cell.  Its CAR is a symbol among `id', `custom-id' and `name' and
 its CDR is a string."
@@ -1035,7 +1035,7 @@ its CDR is a string."
       (org-element-map (plist-get info :parse-tree) 'keyword
 	(lambda (k)
 	  (when (equal (org-element-property :key k) "INDEX")
-	    (let ((parent (org-export-get-parent-headline k)))
+	    (let ((parent (org-export-get-parent-heading k)))
 	      (list (org-element-property :value k)
 		    file
 		    (cond
@@ -1124,7 +1124,7 @@ publishing directory."
 \f
 ;;; External Fuzzy Links Resolution
 ;;
-;; This part implements tools to resolve [[file.org::*Some headline]]
+;; This part implements tools to resolve [[file.org::*Some heading]]
 ;; links, where "file.org" belongs to the current project.
 
 (defun org-publish--store-crossrefs (output _backend info)
@@ -1160,7 +1160,7 @@ option, e.g.,
   [[file:file.org::#custom-id][description]]
   [[file:file.org::fuzzy][description]]
 
-When PREFER-CUSTOM is non-nil, and SEARCH targets a headline in
+When PREFER-CUSTOM is non-nil, and SEARCH targets a heading in
 FILE, return its custom ID, if any.
 
 It only makes sense to use this if export back-end builds
@@ -1171,7 +1171,7 @@ references with `org-export-get-reference'."
 	     (substring search 1)
 	   (with-current-buffer (find-file-noselect file)
 	     (org-with-point-at 1
-	       (let ((org-link-search-must-match-exact-headline t))
+	       (let ((org-link-search-must-match-exact-heading t))
 		 (condition-case err
 		     (org-link-search search nil t)
 		   (error
diff --git a/lisp/ox-texinfo.el b/lisp/ox-texinfo.el
index 5d09cc222..b9a3bf4d6 100644
--- a/lisp/ox-texinfo.el
+++ b/lisp/ox-texinfo.el
@@ -49,7 +49,7 @@
     (fixed-width . org-texinfo-fixed-width)
     (footnote-definition . org-texinfo-footnote-definition)
     (footnote-reference . org-texinfo-footnote-reference)
-    (headline . org-texinfo-headline)
+    (heading . org-texinfo-heading)
     (inline-src-block . org-texinfo-inline-src-block)
     (inlinetask . org-texinfo-inlinetask)
     (italic . org-texinfo-italic)
@@ -82,8 +82,8 @@
     (verbatim . org-texinfo-verbatim)
     (verse-block . org-texinfo-verse-block))
   :filters-alist
-  '((:filter-headline . org-texinfo--filter-section-blank-lines)
-    (:filter-parse-tree . org-texinfo--normalize-headlines)
+  '((:filter-heading . org-texinfo--filter-section-blank-lines)
+    (:filter-parse-tree . org-texinfo--normalize-headings)
     (:filter-section . org-texinfo--filter-section-blank-lines)
     (:filter-final-output . org-texinfo--untabify))
   :menu-entry
@@ -107,7 +107,7 @@
     (:texinfo-printed-title "TEXINFO_PRINTED_TITLE" nil nil t)
     ;; Other variables.
     (:texinfo-classes nil nil org-texinfo-classes)
-    (:texinfo-format-headline-function nil nil org-texinfo-format-headline-function)
+    (:texinfo-format-heading-function nil nil org-texinfo-format-heading-function)
     (:texinfo-node-description-column nil nil org-texinfo-node-description-column)
     (:texinfo-active-timestamp-format nil nil org-texinfo-active-timestamp-format)
     (:texinfo-inactive-timestamp-format nil nil org-texinfo-inactive-timestamp-format)
@@ -209,17 +209,17 @@ section string and will be replaced by the title of the section."
 			       (string :tag "unnumbered-no-toc")
 			       (string :tag "         appendix")))))))
 
-;;;; Headline
+;;;; Heading
 
-(defcustom org-texinfo-format-headline-function
-  'org-texinfo-format-headline-default-function
-  "Function to format headline text.
+(defcustom org-texinfo-format-heading-function
+  'org-texinfo-format-heading-default-function
+  "Function to format heading text.
 
 This function will be called with 5 arguments:
 TODO      the todo keyword (string or nil).
 TODO-TYPE the type of todo (symbol: `todo', `done', nil)
-PRIORITY  the priority of the headline (integer or nil)
-TEXT      the main headline text (string).
+PRIORITY  the priority of the heading (integer or nil)
+TEXT      the main heading text (string).
 TAGS      the tags as a list of strings (list of strings or nil).
 
 The function result will be used in the section format string."
@@ -414,27 +414,27 @@ If two strings share the same prefix (e.g. \"ISO-8859-1\" and
   "Remove TAB characters in string S."
   (replace-regexp-in-string "\t" (make-string tab-width ?\s) s))
 
-(defun org-texinfo--filter-section-blank-lines (headline _backend _info)
+(defun org-texinfo--filter-section-blank-lines (heading _backend _info)
   "Filter controlling number of blank lines after a section."
-  (replace-regexp-in-string "\n\\(?:\n[ \t]*\\)*\\'" "\n\n" headline))
+  (replace-regexp-in-string "\n\\(?:\n[ \t]*\\)*\\'" "\n\n" heading))
 
-(defun org-texinfo--normalize-headlines (tree _backend info)
-  "Normalize headlines in TREE.
+(defun org-texinfo--normalize-headings (tree _backend info)
+  "Normalize headings in TREE.
 
 BACK-END is the symbol specifying back-end used for export. INFO
 is a plist used as a communication channel.
 
-Make sure every headline in TREE contains a section, since those
+Make sure every heading in TREE contains a section, since those
 are required to install a menu.  Also put exactly one blank line
 at the end of each section.
 
 Return new tree."
-  (org-element-map tree 'headline
+  (org-element-map tree 'heading
     (lambda (hl)
       (org-element-put-property hl :post-blank 1)
       (let ((contents (org-element-contents hl)))
 	(when contents
-	  (let ((first (org-element-map contents '(headline section)
+	  (let ((first (org-element-map contents '(heading section)
 			 #'identity info t)))
 	    (unless (eq (org-element-type first) 'section)
 	      (apply #'org-element-set-contents
@@ -467,7 +467,7 @@ INFO is a plist used as a communication channel.  See
 
 (defun org-texinfo--get-node (datum info)
   "Return node or anchor associated to DATUM.
-DATUM is a headline, a radio-target or a target.  INFO is a plist
+DATUM is a heading, a radio-target or a target.  INFO is a plist
 used as a communication channel.  The function guarantees the
 node or anchor name is unique."
   (let ((cache (plist-get info :texinfo-node-cache)))
@@ -476,7 +476,7 @@ node or anchor name is unique."
 	       (basename
 		(org-texinfo--sanitize-node
 		 (pcase (org-element-type datum)
-		   (`headline
+		   (`heading
 		    (org-texinfo--sanitize-title
 		     (org-export-get-alt-title datum info) info))
 		   (`radio-target
@@ -491,10 +491,10 @@ node or anchor name is unique."
 	  ;; node names collide -- e.g., they have the same title --
 	  ;; within the same hierarchy, the second one would get the
 	  ;; smaller node name.  This is counter-intuitive.
-	  ;; Consequently, we ensure that every parent headline gets
+	  ;; Consequently, we ensure that every parent heading gets
 	  ;; its node beforehand.  As a recursive operation, this
 	  ;; achieves the desired effect.
-	  (let ((parent (org-element-lineage datum '(headline))))
+	  (let ((parent (org-element-lineage datum '(heading))))
 	    (when (and parent (not (assq parent cache)))
 	      (org-texinfo--get-node parent info)
 	      (setq cache (plist-get info :texinfo-node-cache))))
@@ -577,9 +577,9 @@ INFO is a plist holding export options."
 CONTENTS is the transcoded contents string.  INFO is a plist
 holding export options."
   (let ((title (org-export-data (plist-get info :title) info))
-	;; Copying data is the contents of the first headline in
+	;; Copying data is the contents of the first heading in
 	;; parse tree with a non-nil copying property.
-	(copying (org-element-map (plist-get info :parse-tree) 'headline
+	(copying (org-element-map (plist-get info :parse-tree) 'heading
 		   (lambda (hl)
 		     (and (org-not-nil (org-element-property :COPYING hl))
 			  (org-element-contents hl)))
@@ -684,7 +684,7 @@ holding export options."
      (format "@top %s\n" title)
      (let* ((first-section
 	     (org-element-map (plist-get info :parse-tree) 'section
-	       #'identity info t '(headline)))
+	       #'identity info t '(heading)))
 	    (top-contents
 	     (org-export-data (org-element-contents first-section) info)))
        (and (org-string-nw-p top-contents) (concat "\n" top-contents)))
@@ -861,30 +861,30 @@ plist holding contextual information."
                 (org-trim data)
               data))))
 
-;;;; Headline
+;;;; Heading
 
-(defun org-texinfo-headline (headline contents info)
-  "Transcode a HEADLINE element from Org to Texinfo.
-CONTENTS holds the contents of the headline.  INFO is a plist
+(defun org-texinfo-heading (heading contents info)
+  "Transcode a HEADING element from Org to Texinfo.
+CONTENTS holds the contents of the heading.  INFO is a plist
 holding contextual information."
   (cond
-   ((org-element-property :footnote-section-p headline) nil)
-   ((org-not-nil (org-export-get-node-property :COPYING headline t)) nil)
+   ((org-element-property :footnote-section-p heading) nil)
+   ((org-not-nil (org-export-get-node-property :COPYING heading t)) nil)
    (t
-    (let* ((index (let ((i (org-export-get-node-property :INDEX headline t)))
+    (let* ((index (let ((i (org-export-get-node-property :INDEX heading t)))
 		    (and (member i '("cp" "fn" "ky" "pg" "tp" "vr")) i)))
-	   (numbered? (org-export-numbered-headline-p headline info))
-	   (notoc? (org-export-excluded-from-toc-p headline info))
+	   (numbered? (org-export-numbered-heading-p heading info))
+	   (notoc? (org-export-excluded-from-toc-p heading info))
 	   (command
 	    (and
-             (not (org-export-low-level-p headline info))
+             (not (org-export-low-level-p heading info))
 	     (let ((sections (org-texinfo--sectioning-structure info)))
-               (pcase (nth (1- (org-export-get-relative-level headline info))
+               (pcase (nth (1- (org-export-get-relative-level heading info))
 			   sections)
 		 (`(,numbered ,unnumbered ,unnumbered-no-toc ,appendix)
 		  (cond
 		   ((org-not-nil
-		     (org-export-get-node-property :APPENDIX headline t))
+		     (org-export-get-node-property :APPENDIX heading t))
 		    appendix)
 		   (numbered? numbered)
 		   (index unnumbered)
@@ -895,42 +895,42 @@ holding contextual information."
 				(plist-get info :texinfo-class)))))))
 	   (todo
 	    (and (plist-get info :with-todo-keywords)
-		 (let ((todo (org-element-property :todo-keyword headline)))
+		 (let ((todo (org-element-property :todo-keyword heading)))
 		   (and todo (org-export-data todo info)))))
-	   (todo-type (and todo (org-element-property :todo-type headline)))
+	   (todo-type (and todo (org-element-property :todo-type heading)))
 	   (tags (and (plist-get info :with-tags)
-		      (org-export-get-tags headline info)))
+		      (org-export-get-tags heading info)))
 	   (priority (and (plist-get info :with-priority)
-			  (org-element-property :priority headline)))
+			  (org-element-property :priority heading)))
 	   (text (org-texinfo--sanitize-title
-		  (org-element-property :title headline) info))
+		  (org-element-property :title heading) info))
 	   (full-text
-	    (funcall (plist-get info :texinfo-format-headline-function)
+	    (funcall (plist-get info :texinfo-format-heading-function)
 		     todo todo-type priority text tags))
 	   (contents
 	    (concat "\n"
 		    (if (org-string-nw-p contents) (concat "\n" contents) "")
 		    (and index (format "\n@printindex %s\n" index))))
-           (node (org-texinfo--get-node headline info)))
+           (node (org-texinfo--get-node heading info)))
       (if (not command)
-	  (concat (and (org-export-first-sibling-p headline info)
+	  (concat (and (org-export-first-sibling-p heading info)
 		       (format "@%s\n" (if numbered? 'enumerate 'itemize)))
 		  (format "@item\n@anchor{%s}%s\n" node full-text)
 		  contents
-		  (if (org-export-last-sibling-p headline info)
+		  (if (org-export-last-sibling-p heading info)
 		      (format "@end %s" (if numbered? 'enumerate 'itemize))
 		    "\n"))
 	(concat
-	 ;; Even if HEADLINE is using @subheading and al., leave an
+	 ;; Even if HEADING is using @subheading and al., leave an
 	 ;; anchor so cross-references in the Org document still work.
 	 (format (if notoc? "@anchor{%s}\n" "@node %s\n") node)
 	 (format command full-text)
 	 contents))))))
 
-(defun org-texinfo-format-headline-default-function
+(defun org-texinfo-format-heading-default-function
   (todo _todo-type priority text tags)
-  "Default format function for a headline.
-See `org-texinfo-format-headline-function' for details."
+  "Default format function for a heading.
+See `org-texinfo-format-heading-function' for details."
   (concat (and todo (format "@strong{%s} " todo))
 	  (and priority (format "@emph{#%s} " priority))
 	  text
@@ -1093,16 +1093,16 @@ INFO is a plist holding contextual information.  See
 	  (`plain-text
 	   (if desc (format "@uref{file://%s,%s}" destination desc)
 	     (format "@uref{file://%s}" destination)))
-	  ((or `headline
-	       ;; Targets within headlines cannot be turned into
-	       ;; @anchor{}, so we refer to the headline parent
+	  ((or `heading
+	       ;; Targets within headings cannot be turned into
+	       ;; @anchor{}, so we refer to the heading parent
 	       ;; directly.
 	       (and `target
-		    (guard (eq 'headline
+		    (guard (eq 'heading
 			       (org-element-type
 				(org-element-property :parent destination))))))
-	   (let ((headline (org-element-lineage destination '(headline) t)))
-	     (org-texinfo--@ref headline desc info)))
+	   (let ((heading (org-element-lineage destination '(heading) t)))
+	     (org-texinfo--@ref heading desc info)))
 	  (_ (org-texinfo--@ref destination desc info)))))
      ((string= type "mailto")
       (format "@email{%s}"
@@ -1153,7 +1153,7 @@ current state of the export, as a plist."
 (defun org-texinfo-make-menu (scope info &optional master)
   "Create the menu for inclusion in the Texinfo document.
 
-SCOPE is a headline or a full parse tree.  INFO is the
+SCOPE is a heading or a full parse tree.  INFO is the
 communication channel, as a plist.
 
 When optional argument MASTER is non-nil, generate a master menu,
@@ -1179,7 +1179,7 @@ including detailed node listing."
 
 (defun org-texinfo--build-menu (scope info &optional level)
   "Build menu for entries within SCOPE.
-SCOPE is a headline or a full parse tree.  INFO is a plist
+SCOPE is a heading or a full parse tree.  INFO is a plist
 containing contextual information.  When optional argument LEVEL
 is an integer, build the menu recursively, down to this depth."
   (cond
@@ -1201,7 +1201,7 @@ is an integer, build the menu recursively, down to this depth."
 
 (defun org-texinfo--format-entries (entries info)
   "Format all direct menu entries in SCOPE, as a string.
-SCOPE is either a headline or a full Org document.  INFO is
+SCOPE is either a heading or a full Org document.  INFO is
 a plist containing contextual information."
   (org-element-normalize-string
    (mapconcat
@@ -1225,7 +1225,7 @@ a plist containing contextual information."
 
 (defun org-texinfo--menu-entries (scope info)
   "List direct children in SCOPE needing a menu entry.
-SCOPE is a headline or a full parse tree.  INFO is a plist
+SCOPE is a heading or a full parse tree.  INFO is a plist
 holding contextual information."
   (let* ((cache (or (plist-get info :texinfo-entries-cache)
 		    (plist-get (plist-put info :texinfo-entries-cache
@@ -1240,7 +1240,7 @@ holding contextual information."
 		  (lambda (h)
 		    (or (org-not-nil (org-export-get-node-property :COPYING h t))
                         (< max-depth (org-export-get-relative-level h info))))
-		  (org-export-collect-headlines info 1 scope))
+		  (org-export-collect-headings info 1 scope))
 	         cache)))))
 
 ;;;; Node Property
@@ -1400,7 +1400,7 @@ contextual information."
   "Transcode a SECTION element from Org to Texinfo.
 CONTENTS holds the contents of the section.  INFO is a plist
 holding contextual information."
-  (let ((parent (org-export-get-parent-headline section)))
+  (let ((parent (org-export-get-parent-heading section)))
     (when parent   ;first section is handled in `org-texinfo-template'
       (org-trim
        (concat contents
@@ -1628,7 +1628,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
@@ -1679,7 +1679,7 @@ asynchronously.  The resulting file should be accessible through
 the `org-export-stack' interface.
 
 When optional argument SUBTREEP is non-nil, export the sub-tree
-at point, extracting information from the headline properties
+at point, extracting information from the heading properties
 first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
diff --git a/lisp/ox.el b/lisp/ox.el
index 16b87a7ed..86a6b8906 100644
--- a/lisp/ox.el
+++ b/lisp/ox.el
@@ -100,7 +100,7 @@
 ;; options, shared between every exporter, and how they are acquired.
 
 (defconst org-export-max-depth 19
-  "Maximum nesting depth for headlines, counting from 0.")
+  "Maximum nesting depth for headings, counting from 0.")
 
 (defconst org-export-options-alist
   '((:title "TITLE" nil nil parse)
@@ -111,7 +111,7 @@
     (:select-tags "SELECT_TAGS" nil org-export-select-tags split)
     (:exclude-tags "EXCLUDE_TAGS" nil org-export-exclude-tags split)
     (:creator "CREATOR" nil org-export-creator-string)
-    (:headline-levels nil "H" org-export-headline-levels)
+    (:heading-levels nil "H" org-export-heading-levels)
     (:preserve-breaks nil "\\n" org-export-preserve-breaks)
     (:section-numbers nil "num" org-export-with-section-numbers)
     (:time-stamp-file nil "timestamp" org-export-time-stamp-file)
@@ -152,7 +152,7 @@ like (KEYWORD OPTION DEFAULT BEHAVIOR) where:
 
 KEYWORD is a string representing a buffer keyword, or nil.  Each
   property defined this way can also be set, during subtree
-  export, through a headline property named after the keyword
+  export, through a heading property named after the keyword
   with the \"EXPORT_\" prefix (i.e. DATE keyword and EXPORT_DATE
   property).
 OPTION is a string that could be found in an #+OPTIONS: line.
@@ -195,7 +195,7 @@ Properties redefined there have precedence over these.")
     (:filter-fixed-width . org-export-filter-fixed-width-functions)
     (:filter-footnote-definition . org-export-filter-footnote-definition-functions)
     (:filter-footnote-reference . org-export-filter-footnote-reference-functions)
-    (:filter-headline . org-export-filter-headline-functions)
+    (:filter-heading . org-export-filter-heading-functions)
     (:filter-horizontal-rule . org-export-filter-horizontal-rule-functions)
     (:filter-inline-babel-call . org-export-filter-inline-babel-call-functions)
     (:filter-inline-src-block . org-export-filter-inline-src-block-functions)
@@ -333,22 +333,22 @@ according to the back-end used.")
   :tag "Org Export General"
   :group 'org-export)
 
-(defcustom org-export-with-archived-trees 'headline
+(defcustom org-export-with-archived-trees 'heading
   "Whether sub-trees with the ARCHIVE tag should be exported.
 
 This can have three different values:
 nil         Do not export, pretend this tree is not present.
 t           Do export the entire tree.
-`headline'  Only export the headline, but skip the tree below it.
+`heading'  Only export the heading, but skip the tree below it.
 
 This option can also be set with the OPTIONS keyword,
 e.g. \"arch:nil\"."
   :group 'org-export-general
   :type '(choice
 	  (const :tag "Not at all" nil)
-	  (const :tag "Headline only" headline)
+	  (const :tag "Heading only" heading)
 	  (const :tag "Entirely" t))
-  :safe (lambda (x) (memq x '(t nil headline))))
+  :safe (lambda (x) (memq x '(t nil heading))))
 
 (defcustom org-export-with-author t
   "Non-nil means insert author name into the exported file.
@@ -508,8 +508,8 @@ t           Allow export of math snippets."
 	  (const :tag "Leave math verbatim" verbatim))
   :safe (lambda (x) (memq x '(t nil verbatim))))
 
-(defcustom org-export-headline-levels 3
-  "The last level which is still exported as a headline.
+(defcustom org-export-heading-levels 3
+  "The last level which is still exported as a heading.
 
 Inferior levels will usually produce itemize or enumerate lists
 when exported, but back-end behavior may differ.
@@ -605,10 +605,10 @@ e.g. \"prop:t\"."
 			(and (listp x) (cl-every #'stringp x)))))
 
 (defcustom org-export-with-section-numbers t
-  "Non-nil means add section numbers to headlines when exporting.
+  "Non-nil means add section numbers to headings when exporting.
 
 When set to an integer n, numbering will only happen for
-headlines whose relative level is higher or equal to n.
+headings whose relative level is higher or equal to n.
 
 This option can also be set with the OPTIONS keyword,
 e.g. \"num:t\"."
@@ -714,13 +714,13 @@ frequently in plain text."
 (defcustom org-export-with-toc t
   "Non-nil means create a table of contents in exported files.
 
-The table of contents contains headlines with levels up to
-`org-export-headline-levels'.
+The table of contents contains headings with levels up to
+`org-export-heading-levels'.
 
 When this variable is set to an integer N, include levels up to
 N in the table of contents.  Although it may then be different
-from `org-export-headline-levels', it is cannot be larger than
-the number of headline levels.
+from `org-export-heading-levels', it is cannot be larger than
+the number of heading levels.
 
 When nil, no table of contents is created.
 
@@ -746,10 +746,10 @@ e.g. \"|:nil\"."
   :safe #'booleanp)
 
 (defcustom org-export-with-tags t
-  "If nil, do not export tags, just remove them from headlines.
+  "If nil, do not export tags, just remove them from headings.
 
 If this is the symbol `not-in-toc', tags will be removed from
-table of contents entries, but still be shown in the headlines of
+table of contents entries, but still be shown in the headings of
 the document.
 
 This option can also be set with the OPTIONS keyword,
@@ -1415,7 +1415,7 @@ specific items to read, if any."
 Optional argument BACKEND is an export back-end, as returned by,
 e.g., `org-export-create-backend'.  It specifies back-end used
 for export.  Return options as a plist."
-  ;; For each buffer keyword, create a headline property setting the
+  ;; For each buffer keyword, create a heading property setting the
   ;; same property in communication channel.  The name for the
   ;; property is the keyword with "EXPORT_" appended to it.
   (org-with-wide-buffer
@@ -1427,7 +1427,7 @@ for export.  Return options as a plist."
 	  (let ((o (org-entry-get (point) "EXPORT_OPTIONS" 'selective)))
 	    (and o (org-export--parse-option-keyword o backend))))
 	 ;; Take care of EXPORT_TITLE.  If it isn't defined, use
-	 ;; headline's title (with no todo keyword, priority cookie or
+	 ;; heading's title (with no todo keyword, priority cookie or
 	 ;; tag) as its fallback value.
 	 (cache (list
 		 (cons "TITLE"
@@ -1611,9 +1611,9 @@ BLOB is the element or object considered."
 ;; `org-export--populate-ignore-list' lists elements and objects that
 ;; should be skipped during export, `org-export--get-min-level' gets
 ;; the minimal exportable level, used as a basis to compute relative
-;; level for headlines.  Eventually
-;; `org-export--collect-headline-numbering' builds an alist between
-;; headlines and their numbering.
+;; level for headings.  Eventually
+;; `org-export--collect-heading-numbering' builds an alist between
+;; headings and their numbering.
 
 (defun org-export--collect-tree-properties (data info)
   "Extract tree properties from parse tree.
@@ -1623,12 +1623,12 @@ is a list holding export options.
 
 Following tree properties are set or updated:
 
-`:headline-offset' Offset between true level of headlines and
-		   local level.  An offset of -1 means a headline
+`:heading-offset' Offset between true level of headings and
+		   local level.  An offset of -1 means a heading
 		   of level 2 should be considered as a level
-		   1 headline in the context.
+		   1 heading in the context.
 
-`:headline-numbering' Alist of all headlines as key and the
+`:heading-numbering' Alist of all headings as key and the
 		      associated numbering as value.
 
 `:id-alist' Alist of all ID references as key and associated file
@@ -1637,17 +1637,17 @@ Following tree properties are set or updated:
 Return updated plist."
   ;; Install the parse tree in the communication channel.
   (setq info (plist-put info :parse-tree data))
-  ;; Compute `:headline-offset' in order to be able to use
+  ;; Compute `:heading-offset' in order to be able to use
   ;; `org-export-get-relative-level'.
   (setq info
 	(plist-put info
-		   :headline-offset
+		   :heading-offset
 		   (- 1 (org-export--get-min-level data info))))
   ;; From now on, properties order doesn't matter: get the rest of the
   ;; tree properties.
   (org-combine-plists
    info
-   (list :headline-numbering (org-export--collect-headline-numbering data info)
+   (list :heading-numbering (org-export--collect-heading-numbering data info)
 	 :id-alist
 	 (org-element-map data 'link
 	   (lambda (l)
@@ -1657,39 +1657,39 @@ Return updated plist."
 		    (and file (cons id (file-relative-name file))))))))))
 
 (defun org-export--get-min-level (data options)
-  "Return minimum exportable headline's level in DATA.
+  "Return minimum exportable heading's level in DATA.
 DATA is parsed tree as returned by `org-element-parse-buffer'.
 OPTIONS is a plist holding export options."
   (catch 'exit
     (let ((min-level 10000))
       (dolist (datum (org-element-contents data))
-	(when (and (eq (org-element-type datum) 'headline)
+	(when (and (eq (org-element-type datum) 'heading)
 		   (not (org-element-property :footnote-section-p datum))
 		   (not (memq datum (plist-get options :ignore-list))))
 	  (setq min-level (min (org-element-property :level datum) min-level))
 	  (when (= min-level 1) (throw 'exit 1))))
-      ;; If no headline was found, for the sake of consistency, set
+      ;; If no heading was found, for the sake of consistency, set
       ;; minimum level to 1 nonetheless.
       (if (= min-level 10000) 1 min-level))))
 
-(defun org-export--collect-headline-numbering (data options)
-  "Return numbering of all exportable, numbered headlines in a parse tree.
+(defun org-export--collect-heading-numbering (data options)
+  "Return numbering of all exportable, numbered headings in a parse tree.
 
 DATA is the parse tree.  OPTIONS is the plist holding export
 options.
 
-Return an alist whose key is a headline and value is its
+Return an alist whose key is a heading and value is its
 associated numbering \(in the shape of a list of numbers) or nil
 for a footnotes section."
   (let ((numbering (make-vector org-export-max-depth 0)))
-    (org-element-map data 'headline
-      (lambda (headline)
-	(when (and (org-export-numbered-headline-p headline options)
-		   (not (org-element-property :footnote-section-p headline)))
+    (org-element-map data 'heading
+      (lambda (heading)
+	(when (and (org-export-numbered-heading-p heading options)
+		   (not (org-element-property :footnote-section-p heading)))
 	  (let ((relative-level
-		 (1- (org-export-get-relative-level headline options))))
+		 (1- (org-export-get-relative-level heading options))))
 	    (cons
-	     headline
+	     heading
 	     (cl-loop
 	      for n across numbering
 	      for idx from 0 to org-export-max-depth
@@ -1699,35 +1699,35 @@ for a footnotes section."
       options)))
 
 (defun org-export--selected-trees (data info)
-  "List headlines and inlinetasks with a select tag in their tree.
+  "List headings and inlinetasks with a select tag in their tree.
 DATA is parsed data as returned by `org-element-parse-buffer'.
 INFO is a plist holding export options."
   (let ((select (cl-mapcan (lambda (tag) (org-tags-expand tag t))
 			   (plist-get info :select-tags))))
     (if (cl-some (lambda (tag) (member tag select)) (plist-get info :filetags))
-	;; If FILETAGS contains a select tag, every headline or
+	;; If FILETAGS contains a select tag, every heading or
 	;; inlinetask is returned.
-	(org-element-map data '(headline inlinetask) #'identity)
+	(org-element-map data '(heading inlinetask) #'identity)
       (letrec ((selected-trees nil)
 	       (walk-data
 		(lambda (data genealogy)
 		  (let ((type (org-element-type data)))
 		    (cond
-		     ((memq type '(headline inlinetask))
+		     ((memq type '(heading inlinetask))
 		      (let ((tags (org-element-property :tags data)))
 			(if (cl-some (lambda (tag) (member tag select)) tags)
 			    ;; When a select tag is found, mark full
-			    ;; genealogy and every headline within the
+			    ;; genealogy and every heading within the
 			    ;; tree as acceptable.
 			    (setq selected-trees
 				  (append
 				   genealogy
-				   (org-element-map data '(headline inlinetask)
+				   (org-element-map data '(heading inlinetask)
 				     #'identity)
 				   selected-trees))
-			  ;; If at a headline, continue searching in
+			  ;; If at a heading, continue searching in
 			  ;; tree, recursively.
-			  (when (eq type 'headline)
+			  (when (eq type 'heading)
 			    (dolist (el (org-element-contents data))
 			      (funcall walk-data el (cons data genealogy)))))))
 		     ((or (eq type 'org-data)
@@ -1740,9 +1740,9 @@ INFO is a plist holding export options."
 (defun org-export--skip-p (datum options selected excluded)
   "Non-nil when element or object DATUM should be skipped during export.
 OPTIONS is the plist holding export options.  SELECTED, when
-non-nil, is a list of headlines or inlinetasks belonging to
+non-nil, is a list of headings or inlinetasks belonging to
 a tree with a select tag.  EXCLUDED is a list of tags, as
-strings.  Any headline or inlinetask marked with one of those is
+strings.  Any heading or inlinetask marked with one of those is
 not exported."
   (cl-case (org-element-type datum)
     ((comment comment-block)
@@ -1772,7 +1772,7 @@ not exported."
     (fixed-width (not (plist-get options :with-fixed-width)))
     ((footnote-definition footnote-reference)
      (not (plist-get options :with-footnotes)))
-    ((headline inlinetask)
+    ((heading inlinetask)
      (let ((with-tasks (plist-get options :with-tasks))
 	   (todo (org-element-property :todo-keyword datum))
 	   (todo-type (org-element-property :todo-type datum))
@@ -1898,11 +1898,11 @@ Return a string."
 		 ((not type)
 		  (mapconcat (lambda (obj) (org-export-data obj info)) data ""))
 		 ;; Element/Object without contents or, as a special
-		 ;; case, headline with archive tag and archived trees
+		 ;; case, heading with archive tag and archived trees
 		 ;; restricted to title only.
 		 ((or (not (org-element-contents data))
-		      (and (eq type 'headline)
-			   (eq (plist-get info :with-archived-trees) 'headline)
+		      (and (eq type 'heading)
+			   (eq (plist-get info :with-archived-trees) 'heading)
 			   (org-element-property :archivedp data)))
 		  (let ((transcoder (org-export-transcoder data info)))
 		    (or (and (functionp transcoder)
@@ -2195,8 +2195,8 @@ Each filter is called with three arguments: the transcoded data,
 as a string, the back-end, as a symbol, and the communication
 channel, as a plist.  It must return a string or nil.")
 
-(defvar org-export-filter-headline-functions nil
-  "List of functions applied to a transcoded headline.
+(defvar org-export-filter-heading-functions nil
+  "List of functions applied to a transcoded heading.
 Each filter is called with three arguments: the transcoded data,
 as a string, the back-end, as a symbol, and the communication
 channel, as a plist.  It must return a string or nil.")
@@ -2518,8 +2518,8 @@ Return the updated communication channel."
 ;; `org-export-expand-include-keyword' and
 ;; `org-export--prepare-file-contents'.  Structure wise, including
 ;; a whole Org file in a buffer often makes little sense.  For
-;; example, if the file contains a headline and the include keyword
-;; was within an item, the item should contain the headline.  That's
+;; example, if the file contains a heading and the include keyword
+;; was within an item, the item should contain the heading.  That's
 ;; why file inclusion should be done before any structure can be
 ;; associated to the file, that is before parsing.
 ;;
@@ -2644,7 +2644,7 @@ from tree."
   (letrec ((ignore nil)
 	   ;; First find trees containing a select tag, if any.
 	   (selected (org-export--selected-trees data info))
-	   ;; List tags that prevent export of headlines.
+	   ;; List tags that prevent export of headings.
 	   (excluded (cl-mapcan (lambda (tag) (org-tags-expand tag t))
 				(plist-get info :exclude-tags)))
 	   (walk-data
@@ -2658,11 +2658,11 @@ from tree."
 		  (if (org-export--skip-p data info selected excluded)
 		      (if (memq type '(table-cell table-row)) (push data ignore)
 			(org-element-extract-element data))
-		    (if (and (eq type 'headline)
+		    (if (and (eq type 'heading)
 			     (eq (plist-get info :with-archived-trees)
-				 'headline)
+				 'heading)
 			     (org-element-property :archivedp data))
-			;; If headline is archived but tree below has
+			;; If heading is archived but tree below has
 			;; to be skipped, remove contents.
 			(org-element-set-contents data)
 		      ;; Move into recursive objects/elements.
@@ -2683,7 +2683,7 @@ from tree."
 		   f)
 		  (t nil))))))
     ;; If a select tag is active, also ignore the section before the
-    ;; first headline, if any.
+    ;; first heading, if any.
     (when selected
       (let ((first-element (car (org-element-contents data))))
 	(when (eq (org-element-type first-element) 'section)
@@ -2791,7 +2791,7 @@ containing their first reference."
    ((null definitions))
    ;; If there is a footnote section, insert definitions there.
    ((let ((footnote-section
-	   (org-element-map tree 'headline
+	   (org-element-map tree 'heading
 	     (lambda (h) (and (org-element-property :footnote-section-p h) h))
 	     nil t)))
       (and footnote-section
@@ -2803,7 +2803,7 @@ containing their first reference."
    (org-footnote-section
     (org-element-adopt-elements
      tree
-     (org-element-create 'headline
+     (org-element-create 'heading
 			 (list :footnote-section-p t
 			       :level 1
 			       :title org-footnote-section
@@ -2914,7 +2914,7 @@ narrowed part.
 If a region is active, transcode that region.
 
 When optional argument SUBTREEP is non-nil, transcode the
-sub-tree at point, extracting information from the headline
+sub-tree at point, extracting information from the heading
 properties first.
 
 When optional argument VISIBLE-ONLY is non-nil, don't export
@@ -2934,7 +2934,7 @@ Return code as a string."
     (save-restriction
       ;; Narrow buffer to an appropriate region or subtree for
       ;; parsing.  If parsing subtree, be sure to remove main
-      ;; headline, planning data and property drawer.
+      ;; heading, planning data and property drawer.
       (cond ((org-region-active-p)
 	     (narrow-to-region (region-beginning) (region-end)))
 	    (subtreep
@@ -3248,7 +3248,7 @@ storing and resolving footnotes.  It is created automatically."
 			 ((string-match "\\<src\\(?: +\\(.*\\)\\)?" value)
 			  'literal)))
 		   ;; Minimal level of included file defaults to the
-		   ;; child level of the current headline, if any, or
+		   ;; child level of the current heading, if any, or
 		   ;; one.  It only applies is the file is meant to be
 		   ;; included as an Org one.
 		   (minlevel
@@ -3340,7 +3340,7 @@ Return a string of lines to be included in the format expected by
       (let ((org-inhibit-startup t)) (org-mode)))
     (condition-case err
 	;; Enforce consistent search.
-	(let ((org-link-search-must-match-exact-headline nil))
+	(let ((org-link-search-must-match-exact-heading nil))
 	  (org-link-search location))
       (error
        (error "%s for %s::%s" (error-message-string err) file location)))
@@ -3351,7 +3351,7 @@ Return a string of lines to be included in the format expected by
        (or contents-begin (org-element-property :begin element))
        (org-element-property (if contents-begin :contents-end :end) element))
       (when (and only-contents
-		 (memq (org-element-type element) '(headline inlinetask)))
+		 (memq (org-element-type element) '(heading inlinetask)))
 	;; Skip planning line and property-drawer.
 	(goto-char (point-min))
 	(when (looking-at-p org-planning-line-re) (forward-line))
@@ -3423,10 +3423,10 @@ Optional argument IND, when non-nil, is an integer specifying the
 global indentation of returned contents.  Since its purpose is to
 allow an included file to stay in the same environment it was
 created (e.g., a list item), it doesn't apply past the first
-headline encountered.
+heading encountered.
 
 Optional argument MINLEVEL, when non-nil, is an integer
-specifying the level that any top-level headline in the included
+specifying the level that any top-level heading in the included
 file should have.
 
 Optional argument ID is an integer that will be inserted before
@@ -3502,7 +3502,7 @@ is to happen."
     (forward-line)
     (delete-region (point) (point-max))
     ;; If IND is set, preserve indentation of include keyword until
-    ;; the first headline encountered.
+    ;; the first heading encountered.
     (when (and ind (> ind 0))
       (unless (eq major-mode 'org-mode)
 	(let ((org-inhibit-startup t)) (org-mode)))
@@ -3515,9 +3515,9 @@ is to happen."
 			   'footnote-definition))
 	    (insert ind-str))
 	  (forward-line))))
-    ;; When MINLEVEL is specified, compute minimal level for headlines
-    ;; in the file (CUR-MIN), and remove stars to each headline so
-    ;; that headlines with minimal level have a level of MINLEVEL.
+    ;; When MINLEVEL is specified, compute minimal level for headings
+    ;; in the file (CUR-MIN), and remove stars to each heading so
+    ;; that headings with minimal level have a level of MINLEVEL.
     (when minlevel
       (unless (eq major-mode 'org-mode)
 	(let ((org-inhibit-startup t)) (org-mode)))
@@ -3727,7 +3727,7 @@ applied."
 ;;
 ;; `org-export-collect-footnote-definitions' is a tool to list
 ;; actually used footnotes definitions in the whole parse tree, or in
-;; a headline, in order to add footnote listings throughout the
+;; a heading, in order to add footnote listings throughout the
 ;; transcoded data.
 ;;
 ;; `org-export-footnote-first-reference-p' is a predicate used by some
@@ -3902,62 +3902,62 @@ process, leading to a different order when footnotes are nested."
        (or data (plist-get info :parse-tree)) info body-first))))
 
 
-;;;; For Headlines
+;;;; For Headings
 ;;
-;; `org-export-get-relative-level' is a shortcut to get headline
-;; level, relatively to the lower headline level in the parsed tree.
+;; `org-export-get-relative-level' is a shortcut to get heading
+;; level, relatively to the lower heading level in the parsed tree.
 ;;
-;; `org-export-get-headline-number' returns the section number of an
-;; headline, while `org-export-number-to-roman' allows it to be
+;; `org-export-get-heading-number' returns the section number of an
+;; heading, while `org-export-number-to-roman' allows it to be
 ;; converted to roman numbers.  With an optional argument,
-;; `org-export-get-headline-number' returns a number to unnumbered
-;; headlines (used for internal id).
+;; `org-export-get-heading-number' returns a number to unnumbered
+;; headings (used for internal id).
 ;;
 ;; `org-export-low-level-p', `org-export-first-sibling-p' and
 ;; `org-export-last-sibling-p' are three useful predicates when it
-;; comes to fulfill the `:headline-levels' property.
+;; comes to fulfill the `:heading-levels' property.
 ;;
 ;; `org-export-get-tags', `org-export-get-category' and
 ;; `org-export-get-node-property' extract useful information from an
-;; headline or a parent headline.  They all handle inheritance.
+;; heading or a parent heading.  They all handle inheritance.
 ;;
 ;; `org-export-get-alt-title' tries to retrieve an alternative title,
 ;; as a secondary string, suitable for table of contents.  It falls
 ;; back onto default title.
 
-(defun org-export-get-relative-level (headline info)
-  "Return HEADLINE relative level within current parsed tree.
+(defun org-export-get-relative-level (heading info)
+  "Return HEADING relative level within current parsed tree.
 INFO is a plist holding contextual information."
-  (+ (org-element-property :level headline)
-     (or (plist-get info :headline-offset) 0)))
+  (+ (org-element-property :level heading)
+     (or (plist-get info :heading-offset) 0)))
 
-(defun org-export-low-level-p (headline info)
-  "Non-nil when HEADLINE is considered as low level.
+(defun org-export-low-level-p (heading info)
+  "Non-nil when HEADING is considered as low level.
 
 INFO is a plist used as a communication channel.
 
-A low level headlines has a relative level greater than
-`:headline-levels' property value.
+A low level headings has a relative level greater than
+`:heading-levels' property value.
 
-Return value is the difference between HEADLINE relative level
+Return value is the difference between HEADING relative level
 and the last level being considered as high enough, or nil."
-  (let ((limit (plist-get info :headline-levels)))
+  (let ((limit (plist-get info :heading-levels)))
     (when (wholenump limit)
-      (let ((level (org-export-get-relative-level headline info)))
+      (let ((level (org-export-get-relative-level heading info)))
         (and (> level limit) (- level limit))))))
 
-(defun org-export-get-headline-number (headline info)
-  "Return numbered HEADLINE numbering as a list of numbers.
+(defun org-export-get-heading-number (heading info)
+  "Return numbered HEADING numbering as a list of numbers.
 INFO is a plist holding contextual information."
-  (and (org-export-numbered-headline-p headline info)
-       (cdr (assq headline (plist-get info :headline-numbering)))))
+  (and (org-export-numbered-heading-p heading info)
+       (cdr (assq heading (plist-get info :heading-numbering)))))
 
-(defun org-export-numbered-headline-p (headline info)
-  "Return a non-nil value if HEADLINE element should be numbered.
+(defun org-export-numbered-heading-p (heading info)
+  "Return a non-nil value if HEADING element should be numbered.
 INFO is a plist used as a communication channel."
-  (unless (org-not-nil (org-export-get-node-property :UNNUMBERED headline t))
+  (unless (org-not-nil (org-export-get-node-property :UNNUMBERED heading t))
     (let ((sec-num (plist-get info :section-numbers))
-	  (level (org-export-get-relative-level headline info)))
+	  (level (org-export-get-relative-level heading info)))
       (if (wholenump sec-num) (<= level sec-num) sec-num))))
 
 (defun org-export-number-to-roman (n)
@@ -3979,14 +3979,14 @@ INFO is a plist used as a communication channel."
 (defun org-export-get-tags (element info &optional tags inherited)
   "Return list of tags associated to ELEMENT.
 
-ELEMENT has either an `headline' or an `inlinetask' type.  INFO
+ELEMENT has either an `heading' or an `inlinetask' type.  INFO
 is a plist used as a communication channel.
 
 When non-nil, optional argument TAGS should be a list of strings.
 Any tag belonging to this list will also be removed.
 
 When optional argument INHERITED is non-nil, tags can also be
-inherited from parent headlines and FILETAGS keywords."
+inherited from parent headings and FILETAGS keywords."
   (cl-remove-if
    (lambda (tag) (member tag tags))
    (if (not inherited) (org-element-property :tags element)
@@ -3994,7 +3994,7 @@ inherited from parent headlines and FILETAGS keywords."
      (let ((current-tag-list (org-element-property :tags element)))
        (dolist (parent (org-element-lineage element))
 	 (dolist (tag (org-element-property :tags parent))
-	   (when (and (memq (org-element-type parent) '(headline inlinetask))
+	   (when (and (memq (org-element-type parent) '(heading inlinetask))
 		      (not (member tag current-tag-list)))
 	     (push tag current-tag-list))))
        ;; Add FILETAGS keywords and return results.
@@ -4007,13 +4007,13 @@ PROPERTY is an upcase symbol (e.g., `:COOKIE_DATA').  DATUM is an
 element or object.
 
 If optional argument INHERITED is non-nil, the value can be
-inherited from a parent headline.
+inherited from a parent heading.
 
 Return value is a string or nil."
-  (let ((headline (if (eq (org-element-type datum) 'headline) datum
-		    (org-export-get-parent-headline datum))))
+  (let ((heading (if (eq (org-element-type datum) 'heading) datum
+		    (org-export-get-parent-heading datum))))
     (if (not inherited) (org-element-property property datum)
-      (let ((parent headline))
+      (let ((parent heading))
 	(catch 'found
 	  (while parent
 	    (when (plist-member (nth 1 parent) property)
@@ -4025,7 +4025,7 @@ Return value is a string or nil."
 
 INFO is a plist used as a communication channel.
 
-CATEGORY is automatically inherited from a parent headline, from
+CATEGORY is automatically inherited from a parent heading, from
 #+CATEGORY: keyword or created out of original file name.  If all
 fail, the fall-back value is \"???\"."
   (or (org-export-get-node-property :CATEGORY blob t)
@@ -4038,17 +4038,17 @@ fail, the fall-back value is \"???\"."
 	(and file (file-name-sans-extension (file-name-nondirectory file))))
       "???"))
 
-(defun org-export-get-alt-title (headline _)
-  "Return alternative title for HEADLINE, as a secondary string.
+(defun org-export-get-alt-title (heading _)
+  "Return alternative title for HEADING, as a secondary string.
 If no optional title is defined, fall-back to the regular title."
-  (let ((alt (org-element-property :ALT_TITLE headline)))
+  (let ((alt (org-element-property :ALT_TITLE heading)))
     (if alt (org-element-parse-secondary-string
-	     alt (org-element-restriction 'headline) headline)
-      (org-element-property :title headline))))
+	     alt (org-element-restriction 'heading) heading)
+      (org-element-property :title heading))))
 
 (defun org-export-first-sibling-p (blob info)
   "Non-nil when BLOB is the first sibling in its parent.
-BLOB is an element or an object.  If BLOB is a headline, non-nil
+BLOB is an element or an object.  If BLOB is a heading, non-nil
 means it is the first sibling in the sub-tree.  INFO is a plist
 used as a communication channel."
   (memq (org-element-type (org-export-get-previous-element blob info))
@@ -4060,7 +4060,7 @@ DATUM is an element or an object.  INFO is a plist used as
 a communication channel."
   (let ((next (org-export-get-next-element datum info)))
     (or (not next)
-	(and (eq 'headline (org-element-type datum))
+	(and (eq 'heading (org-element-type datum))
 	     (> (org-element-property :level datum)
 		(org-element-property :level next))))))
 
@@ -4106,7 +4106,7 @@ meant to be translated with `org-export-data' or alike."
 ;; (i.e. links with "fuzzy" as type) within the parsed tree, and
 ;; returns an appropriate unique identifier.
 ;;
-;; `org-export-resolve-id-link' returns the first headline with
+;; `org-export-resolve-id-link' returns the first heading with
 ;; specified id or custom-id in parse tree, the path to the external
 ;; file with the id.
 ;;
@@ -4258,14 +4258,14 @@ error if no block contains REF."
 
 A search cell follows the pattern (TYPE . SEARCH) where
 
-  TYPE is a symbol among `headline', `custom-id', `target' and
+  TYPE is a symbol among `heading', `custom-id', `target' and
   `other'.
 
   SEARCH is the string a link is expected to match.  More
   accurately, it is
 
-    - headline's title, as a list of strings, if TYPE is
-      `headline'.
+    - heading's title, as a list of strings, if TYPE is
+      `heading'.
 
     - CUSTOM_ID value, as a string, if TYPE is `custom-id'.
 
@@ -4277,14 +4277,14 @@ A search cell follows the pattern (TYPE . SEARCH) where
 A search cell is the internal representation of a fuzzy link.  It
 ignores white spaces and statistics cookies, if applicable."
   (pcase (org-element-type datum)
-    (`headline
+    (`heading
      (let ((title (split-string
 		   (replace-regexp-in-string
 		    "\\[[0-9]*\\(?:%\\|/[0-9]*\\)\\]" " "
 		    (org-element-property :raw-value datum)))))
        (delq nil
 	     (list
-	      (cons 'headline title)
+	      (cons 'heading title)
 	      (cons 'other title)
 	      (let ((custom-id (org-element-property :custom-id datum)))
 		(and custom-id (cons 'custom-id custom-id)))))))
@@ -4298,10 +4298,10 @@ ignores white spaces and statistics cookies, if applicable."
 (defun org-export-string-to-search-cell (s)
   "Return search cells associated to string S.
 S is either the path of a fuzzy link or a search option, i.e., it
-tries to match either a headline (through custom ID or title),
+tries to match either a heading (through custom ID or title),
 a target or a named element."
   (pcase (string-to-char s)
-    (?* (list (cons 'headline (split-string (substring s 1)))))
+    (?* (list (cons 'heading (split-string (substring s 1)))))
     (?# (list (cons 'custom-id (substring s 1))))
     ((let search (split-string s))
      (list (cons 'target search) (cons 'other search)))))
@@ -4325,7 +4325,7 @@ Return value can be an object or an element:
 - If LINK path exactly matches the name affiliated keyword
   (i.e. #+NAME: path) of an element, return that element.
 
-- If LINK path exactly matches any headline name, return that
+- If LINK path exactly matches any heading name, return that
   element.
 
 - Otherwise, throw an error.
@@ -4356,31 +4356,31 @@ significant."
 	 search-cells
 	 ;; There can be multiple matches for un-typed searches, i.e.,
 	 ;; for searches not starting with # or *.  In this case,
-	 ;; prioritize targets and names over headline titles.
+	 ;; prioritize targets and names over heading titles.
 	 ;; Matching both a name and a target is not valid, and
 	 ;; therefore undefined.
 	 (or (cl-some (lambda (datum)
-			(and (not (eq (org-element-type datum) 'headline))
+			(and (not (eq (org-element-type datum) 'heading))
 			     datum))
 		      matches)
 	     (car matches))
 	 link-cache)))))
 
 (defun org-export-resolve-id-link (link info)
-  "Return headline referenced as LINK destination.
+  "Return heading referenced as LINK destination.
 
 INFO is a plist used as a communication channel.
 
-Return value can be the headline element matched in current parse
+Return value can be the heading element matched in current parse
 tree or a file name.  Assume LINK type is either \"id\" or
 \"custom-id\".  Throw an error if no match is found."
   (let ((id (org-element-property :path link)))
     ;; First check if id is within the current parse tree.
-    (or (org-element-map (plist-get info :parse-tree) 'headline
-	  (lambda (headline)
-	    (when (or (equal (org-element-property :ID headline) id)
-		      (equal (org-element-property :CUSTOM_ID headline) id))
-	      headline))
+    (or (org-element-map (plist-get info :parse-tree) 'heading
+	  (lambda (heading)
+	    (when (or (equal (org-element-property :ID heading) id)
+		      (equal (org-element-property :CUSTOM_ID heading) id))
+	      heading))
 	  info 'first-match)
 	;; Otherwise, look for external files.
 	(cdr (assoc id (plist-get info :id-alist)))
@@ -4414,7 +4414,7 @@ INFO is a plist holding contextual information.
 
 Return value can be an object or an element:
 
-- If LINK path matches an ID or a custom ID, return the headline.
+- If LINK path matches an ID or a custom ID, return the heading.
 
 - If LINK path matches a fuzzy link, return its destination.
 
@@ -4543,23 +4543,23 @@ accepts two arguments: the element or object being considered and
 the plist used as a communication channel.  This allows counting
 only a certain type of object (i.e. inline images).
 
-Return value is a list of numbers if ELEMENT is a headline or an
+Return value is a list of numbers if ELEMENT is a heading or an
 item.  It is nil for keywords.  It represents the footnote number
 for footnote definitions and footnote references.  If ELEMENT is
 a target, return the same value as if ELEMENT was the closest
-table, item or headline containing the target.  In any other
+table, item or heading containing the target.  In any other
 case, return the sequence number of ELEMENT among elements or
 objects of the same type."
   ;; Ordinal of a target object refer to the ordinal of the closest
-  ;; table, item, or headline containing the object.
+  ;; table, item, or heading containing the object.
   (when (eq (org-element-type element) 'target)
     (setq element
 	  (org-element-lineage
 	   element
-	   '(footnote-definition footnote-reference headline item table))))
+	   '(footnote-definition footnote-reference heading item table))))
   (cl-case (org-element-type element)
-    ;; Special case 1: A headline returns its number as a list.
-    (headline (org-export-get-headline-number element info))
+    ;; Special case 1: A heading returns its number as a list.
+    (heading (org-export-get-heading-number element info))
     ;; Special case 2: An item returns its number as a list.
     (item (let ((struct (org-element-property :structure element)))
 	    (org-list-get-item-number
@@ -5253,8 +5253,8 @@ return nil."
 
 ;;;; For Tables of Contents
 ;;
-;; `org-export-collect-headlines' builds a list of all exportable
-;; headline elements, maybe limited to a certain depth.  One can then
+;; `org-export-collect-headings' builds a list of all exportable
+;; heading elements, maybe limited to a certain depth.  One can then
 ;; easily parse it and transcode it.
 ;;
 ;; Building lists of tables, figures or listings is quite similar.
@@ -5265,34 +5265,34 @@ return nil."
 ;; `org-export-toc-entry-backend' builds a special anonymous back-end
 ;; useful to export table of contents' entries.
 
-(defun org-export-collect-headlines (info &optional n scope)
-  "Collect headlines in order to build a table of contents.
+(defun org-export-collect-headings (info &optional n scope)
+  "Collect headings in order to build a table of contents.
 
 INFO is a plist used as a communication channel.
 
 When optional argument N is an integer, it specifies the depth of
 the table of contents.  Otherwise, it is set to the value of the
-last headline level.  See `org-export-headline-levels' for more
+last heading level.  See `org-export-heading-levels' for more
 information.
 
 Optional argument SCOPE, when non-nil, is an element.  If it is
-a headline, only children of SCOPE are collected.  Otherwise,
-collect children of the headline containing provided element.  If
-there is no such headline, collect all headlines.  In any case,
-argument N becomes relative to the level of that headline.
+a heading, only children of SCOPE are collected.  Otherwise,
+collect children of the heading containing provided element.  If
+there is no such heading, collect all headings.  In any case,
+argument N becomes relative to the level of that heading.
 
-Return a list of all exportable headlines as parsed elements.
+Return a list of all exportable headings as parsed elements.
 Footnote sections are ignored."
   (let* ((scope (cond ((not scope) (plist-get info :parse-tree))
-		      ((eq (org-element-type scope) 'headline) scope)
-		      ((org-export-get-parent-headline scope))
+		      ((eq (org-element-type scope) 'heading) scope)
+		      ((org-export-get-parent-heading scope))
 		      (t (plist-get info :parse-tree))))
-	 (limit (plist-get info :headline-levels))
+	 (limit (plist-get info :heading-levels))
 	 (n (if (not (wholenump n)) limit
 	      (min (if (eq (org-element-type scope) 'org-data) n
 		     (+ (org-export-get-relative-level scope info) n))
 		   limit))))
-    (org-element-map (org-element-contents scope) 'headline
+    (org-element-map (org-element-contents scope) 'heading
       (lambda (h)
 	(and (not (org-element-property :footnote-section-p h))
 	     (not (equal "notoc"
@@ -5351,19 +5351,19 @@ INFO is a plist used as a communication channel.
 Return a list of `src-block' elements with a caption."
   (org-export-collect-elements 'src-block info))
 
-(defun org-export-excluded-from-toc-p (headline info)
-  "Non-nil if HEADLINE should be excluded from tables of contents.
+(defun org-export-excluded-from-toc-p (heading info)
+  "Non-nil if HEADING should be excluded from tables of contents.
 
 INFO is a plist used as a communication channel.
 
-Note that such headlines are already excluded from
-`org-export-collect-headlines'.  Therefore, this function is not
-necessary if you only need to list headlines in the table of
+Note that such headings are already excluded from
+`org-export-collect-headings'.  Therefore, this function is not
+necessary if you only need to list headings in the table of
 contents.  However, it is useful if some additional processing is
-required on headlines excluded from table of contents."
-  (or (org-element-property :footnote-section-p headline)
-      (org-export-low-level-p headline info)
-      (equal "notoc" (org-export-get-node-property :UNNUMBERED headline t))))
+required on headings excluded from table of contents."
+  (or (org-element-property :footnote-section-p heading)
+      (org-export-low-level-p heading info)
+      (equal "notoc" (org-export-get-node-property :UNNUMBERED heading t))))
 
 (defun org-export-toc-entry-backend (parent &rest transcoders)
   "Return an export back-end appropriate for table of contents entries.
@@ -5674,8 +5674,8 @@ Return the new string."
 ;;
 ;; Here are various functions to retrieve information about the
 ;; neighborhood of a given element or object.  Neighbors of interest
-;; are direct parent (`org-export-get-parent'), parent headline
-;; (`org-export-get-parent-headline'), first element containing an
+;; are direct parent (`org-export-get-parent'), parent heading
+;; (`org-export-get-parent-heading'), first element containing an
 ;; object, (`org-export-get-parent-element'), parent table
 ;; (`org-export-get-parent-table'), previous element or object
 ;; (`org-export-get-previous-element') and next element or object
@@ -5683,10 +5683,10 @@ Return the new string."
 
 ;; defsubst org-export-get-parent must be defined before first use
 
-(defun org-export-get-parent-headline (blob)
-  "Return BLOB parent headline or nil.
+(defun org-export-get-parent-heading (blob)
+  "Return BLOB parent heading or nil.
 BLOB is the element or object being considered."
-  (org-element-lineage blob '(headline)))
+  (org-element-lineage blob '(heading)))
 
 (defun org-export-get-parent-element (object)
   "Return first element containing OBJECT or nil.
diff --git a/testing/examples/include.org b/testing/examples/include.org
index f4dcc2052..e334fd479 100644
--- a/testing/examples/include.org
+++ b/testing/examples/include.org
@@ -17,7 +17,7 @@ body
 2
 3
 
-* A headline with a table
+* A heading with a table
 :PROPERTIES:
 :CUSTOM_ID: ht
 :END:
@@ -25,7 +25,7 @@ body
 #+NAME: tbl
 | 1 |
 
-* drawer-headline
+* drawer-heading
 :PROPERTIES:
 :CUSTOM_ID: dh
 :END:
diff --git a/testing/examples/pub/a.org b/testing/examples/pub/a.org
index daa82f1aa..92499f3fd 100644
--- a/testing/examples/pub/a.org
+++ b/testing/examples/pub/a.org
@@ -1,9 +1,9 @@
 #+title: A
 #+date: <2014-03-04 Tue>
 
-* Headline1
+* Heading1
 :PROPERTIES:
 :CUSTOM_ID: a1
 :END:
 
-[[file:b.org::*Headline1]]
+[[file:b.org::*Heading1]]
diff --git a/testing/examples/pub/b.org b/testing/examples/pub/b.org
index 261152e99..1fcc630c4 100644
--- a/testing/examples/pub/b.org
+++ b/testing/examples/pub/b.org
@@ -1,7 +1,7 @@
 #+title: b
 #+date: <2012-03-29 Thu>
 
-* Headline1
+* Heading1
 :PROPERTIES:
 :CUSTOM_ID: b1
 :END:
diff --git a/testing/lisp/test-ob-exp.el b/testing/lisp/test-ob-exp.el
index 6cd7514a5..fb5433459 100644
--- a/testing/lisp/test-ob-exp.el
+++ b/testing/lisp/test-ob-exp.el
@@ -39,7 +39,7 @@ Current buffer is a copy of the original buffer."
        (progn ,@body))))
 
 (ert-deftest test-ob-exp/org-babel-exp-src-blocks/w-no-headers ()
-  "Testing export without any headlines in the Org mode file."
+  "Testing export without any headings in the Org mode file."
   (require 'ox-ascii)
   (let ((text-file (concat (file-name-sans-extension org-test-no-heading-file)
 			   ".txt")))
@@ -68,7 +68,7 @@ Current buffer is a copy of the original buffer."
     (when (get-buffer name) (kill-buffer name))))
 
 (ert-deftest test-ob-exp/org-babel-exp-src-blocks/w-no-headers2 ()
-  "Testing export without any headlines in the Org file."
+  "Testing export without any headings in the Org file."
   (let ((html-file (concat (file-name-sans-extension
 			    org-test-link-in-heading-file)
 			   ".html")))
@@ -464,15 +464,15 @@ be evaluated."
 	(org-babel-exp-process-buffer)
 	(buffer-string))))))
 
-(ert-deftest ob-export/export-under-commented-headline ()
+(ert-deftest ob-export/export-under-commented-heading ()
   "Test evaluation of code blocks under COMMENT headings."
   (let ((org-export-use-babel t)
 	(org-babel-inline-result-wrap "=%s="))
-    ;; Do not eval block in a commented headline.
+    ;; Do not eval block in a commented heading.
     (should
      (string-match
       ": 2"
-      (org-test-with-temp-text "* Headline
+      (org-test-with-temp-text "* Heading
 #+BEGIN_SRC emacs-lisp :exports results
 \(+ 1 1)
 #+END_SRC"
@@ -481,7 +481,7 @@ be evaluated."
     (should-not
      (string-match
       ": 2"
-      (org-test-with-temp-text "* COMMENT Headline
+      (org-test-with-temp-text "* COMMENT Heading
 #+BEGIN_SRC emacs-lisp :exports results
 \(+ 1 1)
 #+END_SRC"
@@ -491,23 +491,23 @@ be evaluated."
     (should
      (string-match
       "=2="
-      (org-test-with-temp-text "* Headline
+      (org-test-with-temp-text "* Heading
 src_emacs-lisp{(+ 1 1)}"
 	(org-babel-exp-process-buffer)
 	(buffer-string))))
     (should-not
      (string-match
       "=2="
-      (org-test-with-temp-text "* COMMENT Headline
+      (org-test-with-temp-text "* COMMENT Heading
 src_emacs-lisp{(+ 1 1)}"
 	(org-babel-exp-process-buffer)
 	(buffer-string))))
-    ;; Also check parent headlines.
+    ;; Also check parent headings.
     (should-not
      (string-match
       ": 2"
       (org-test-with-temp-text "
-* COMMENT Headline
+* COMMENT Heading
 ** Children
 #+BEGIN_SRC emacs-lisp :exports results
 \(+ 1 1)
diff --git a/testing/lisp/test-ob.el b/testing/lisp/test-ob.el
index 88ecb62b5..021fcbfe9 100644
--- a/testing/lisp/test-ob.el
+++ b/testing/lisp/test-ob.el
@@ -812,7 +812,7 @@ x
   baz
 #+end_src"
 	    (org-babel-expand-noweb-references))))
-  ;; Respect COMMENT headlines
+  ;; Respect COMMENT headings
   (should
    (equal "C"
 	  (org-test-with-temp-text "
@@ -943,14 +943,14 @@ x
 #+END_SRC
 "
      (org-babel-execute-maybe) t))
-  ;; Escape headlines when producing an example block.
+  ;; Escape headings when producing an example block.
   (should
    (string-match-p
-    ",\\* Not an headline"
+    ",\\* Not an heading"
     (org-test-with-temp-text
 	"
 <point>#+BEGIN_SRC emacs-lisp
-\"* Not an headline\"
+\"* Not an heading\"
 #+END_SRC
 "
       (let ((org-babel-min-lines-for-block-output 1)) (org-babel-execute-maybe))
@@ -970,11 +970,11 @@ x
   ;; No escaping is done with other blocks or raw type.
   (should-not
    (string-match-p
-    ",\\* Not an headline"
+    ",\\* Not an heading"
     (org-test-with-temp-text
 	"
 <point>#+BEGIN_SRC emacs-lisp
-\"* Not an headline\"
+\"* Not an heading\"
 #+END_SRC
 "
       (let ((org-babel-min-lines-for-block-output 10))
@@ -982,22 +982,22 @@ x
       (buffer-string))))
   (should-not
    (string-match-p
-    ",\\* Not an headline"
+    ",\\* Not an heading"
     (org-test-with-temp-text
 	"
 <point>#+BEGIN_SRC emacs-lisp :results raw
-\"* Not an headline\"
+\"* Not an heading\"
 #+END_SRC
 "
       (org-babel-execute-maybe)
       (buffer-string))))
   (should-not
    (string-match-p
-    ",\\* Not an headline"
+    ",\\* Not an heading"
     (org-test-with-temp-text
 	"
 <point>#+BEGIN_SRC emacs-lisp :results drawer
-\"* Not an headline\"
+\"* Not an heading\"
 #+END_SRC
 "
       (org-babel-execute-maybe)
@@ -1644,18 +1644,18 @@ echo \"$data\"
    (equal
     "#+begin_example
 line 1
-,* headline 2
-,* headline 3
-,* headline 4
-,* headline 5
+,* heading 2
+,* heading 3
+,* heading 4
+,* heading 5
 #+end_example
 "
     (org-test-with-temp-text "#+begin_src emacs-lisp :wrap example
 \"line 1
-,* headline 2
-,* headline 3
-,* headline 4
-,* headline 5
+,* heading 2
+,* heading 3
+,* heading 4
+,* heading 5
 \"
 #+end_src
 "
diff --git a/testing/lisp/test-ol.el b/testing/lisp/test-ol.el
index ddcc570b3..cd1ba0510 100644
--- a/testing/lisp/test-ol.el
+++ b/testing/lisp/test-ol.el
@@ -125,7 +125,7 @@
 
 (ert-deftest test-ol/store-link ()
   "Test `org-store-link' specifications."
-  ;; On a headline, link to that headline.  Use heading as the
+  ;; On a heading, link to that heading.  Use heading as the
   ;; description of the link.
   (should
    (let (org-store-link-props org-stored-links)
@@ -133,7 +133,7 @@
        (let ((file (buffer-file-name)))
 	 (equal (format "[[file:%s::*H1][H1]]" file)
 		(org-store-link nil))))))
-  ;; On a headline, remove TODO and COMMENT keywords, priority cookie,
+  ;; On a heading, remove TODO and COMMENT keywords, priority cookie,
   ;; and tags.
   (should
    (let (org-store-link-props org-stored-links)
@@ -159,7 +159,7 @@
        (let ((file (buffer-file-name)))
 	 (equal (format "[[file:%s::*H1][H1]]" file)
 		(org-store-link nil))))))
-  ;; On a headline, remove any link from description.
+  ;; On a heading, remove any link from description.
   (should
    (let (org-store-link-props org-stored-links)
      (org-test-with-temp-text-in-file "* [[#l][d]]"
@@ -329,7 +329,7 @@
        (let ((file (buffer-file-name)))
 	 (equal (format "[[file:%s::two]]" file file)
 		(org-store-link nil))))))
-  ;; Context also ignore statistics cookies and special headlines
+  ;; Context also ignore statistics cookies and special headings
   ;; data.
   (should
    (let ((org-stored-links nil)
diff --git a/testing/lisp/test-org-attach.el b/testing/lisp/test-org-attach.el
index 6caf93861..cad252487 100644
--- a/testing/lisp/test-org-attach.el
+++ b/testing/lisp/test-org-attach.el
@@ -133,7 +133,7 @@
 		      (mapcar (lambda (x) (string-equal "ATTACH" x))
 			      (plist-get
 			       (plist-get
-				(org-element-at-point) 'headline) :tags))))
+				(org-element-at-point) 'heading) :tags))))
        (delete-file a-filename)))))
 
 (ert-deftest test-org-attach/dired-attach-to-next-best-subtree/2 ()
diff --git a/testing/lisp/test-org-capture.el b/testing/lisp/test-org-capture.el
index ea42fa374..22f30b581 100644
--- a/testing/lisp/test-org-capture.el
+++ b/testing/lisp/test-org-capture.el
@@ -113,7 +113,7 @@
 
 (ert-deftest test-org-capture/refile ()
   "Test `org-capture-refile' specifications."
-  ;; When refiling, make sure the headline being refiled is the one
+  ;; When refiling, make sure the heading being refiled is the one
   ;; being captured.  In particular, empty lines after the entry may
   ;; be removed, and we don't want to shift onto the next heading.
   (should
@@ -122,7 +122,7 @@
     (org-test-with-temp-text-in-file "* A\n* B\n"
       (let* ((file (buffer-file-name))
 	     (org-capture-templates
-	      `(("t" "Todo" entry (file+headline ,file "A") "** H1 %?"))))
+	      `(("t" "Todo" entry (file+heading ,file "A") "** H1 %?"))))
 	(org-capture nil "t")
 	(insert "\n")
 	(cl-letf (((symbol-function 'org-refile)
@@ -141,7 +141,7 @@
        (org-test-with-temp-text-in-file "* A"
 	 (let* ((file2 (buffer-file-name))
 		(org-capture-templates
-		 `(("t" "Todo" entry (file+headline ,file2 "A")
+		 `(("t" "Todo" entry (file+heading ,file2 "A")
 		    "** H1 %?" :jump-to-captured t))))
 	   (org-capture nil "t")
 	   (cl-letf (((symbol-function 'org-refile-get-location)
@@ -160,7 +160,7 @@
     (org-test-with-temp-text-in-file "* A\n* B\n"
       (let* ((file (buffer-file-name))
 	     (org-capture-templates
-	      `(("t" "Todo" entry (file+headline ,file "A") "** H1 %?"))))
+	      `(("t" "Todo" entry (file+heading ,file "A") "** H1 %?"))))
 	(org-capture nil "t")
 	(goto-char (point-max))
 	(insert "Capture text")
@@ -199,14 +199,14 @@
 
 (ert-deftest test-org-capture/entry ()
   "Test `entry' type in capture template."
-  ;; Do not break next headline.
+  ;; Do not break next heading.
   (should
    (equal
     "* A\n** H1 Capture text\n* B\n"
     (org-test-with-temp-text-in-file "* A\n* B\n"
       (let* ((file (buffer-file-name))
 	     (org-capture-templates
-	      `(("t" "Todo" entry (file+headline ,file "A") "** H1 %?"))))
+	      `(("t" "Todo" entry (file+heading ,file "A") "** H1 %?"))))
 	(org-capture nil "t")
 	(insert "Capture text")
 	(org-capture-finalize))
@@ -218,7 +218,7 @@
     (org-test-with-temp-text-in-file "* A"
       (let* ((file (buffer-file-name))
 	     (org-capture-templates
-	      `(("t" "Test" entry (file+headline ,file "A") "** H\nFoo"
+	      `(("t" "Test" entry (file+heading ,file "A") "** H\nFoo"
 		 :immediate-finish t))))
 	(org-capture nil "t")
 	(org-capture '(16))
@@ -228,7 +228,7 @@
    (org-test-with-temp-text-in-file ""
      (let* ((file (buffer-file-name))
 	    (org-capture-templates
-	     `(("t" "Test" entry (file+headline ,file "A") "** "
+	     `(("t" "Test" entry (file+heading ,file "A") "** "
 		:immediate-finish t))))
        (org-capture nil "t")
        (buffer-string))))
@@ -264,7 +264,7 @@
     (org-test-with-temp-text-in-file "* A\n- list 1\n\n\n1. list 2"
       (let* ((file (buffer-file-name))
 	     (org-capture-templates
-	      `(("t" "Item" item (file+headline ,file "A") "- X"))))
+	      `(("t" "Item" item (file+heading ,file "A") "- X"))))
 	(org-capture nil "t")
 	(org-capture-finalize))
       (buffer-string))))
@@ -297,7 +297,7 @@
     (org-test-with-temp-text-in-file "* A"
       (let* ((file (buffer-file-name))
 	     (org-capture-templates
-	      `(("t" "Item" item (file+headline ,file "A") "- X"))))
+	      `(("t" "Item" item (file+heading ,file "A") "- X"))))
 	(org-capture nil "t")
 	(org-capture-finalize))
       (buffer-string))))
@@ -308,7 +308,7 @@
     (org-test-with-temp-text-in-file "* A\n- 1\n- 2"
       (let* ((file (buffer-file-name))
 	     (org-capture-templates
-	      `(("t" "Item" item (file+headline ,file "A") "- X"
+	      `(("t" "Item" item (file+heading ,file "A") "- X"
 		 :prepend t))))
 	(org-capture nil "t")
 	(org-capture-finalize))
@@ -322,7 +322,7 @@
     (org-test-with-temp-text-in-file "* A\nSome text"
       (let* ((file (buffer-file-name))
 	     (org-capture-templates
-	      `(("t" "Item" item (file+headline ,file "A") "- X"
+	      `(("t" "Item" item (file+heading ,file "A") "- X"
 		 :prepend t))))
 	(org-capture nil "t")
 	(org-capture-finalize))
@@ -343,7 +343,7 @@
     (org-test-with-temp-text-in-file "* A\nSCHEDULED: <2012-03-29 Thu>\nText"
       (let* ((file (buffer-file-name))
 	     (org-capture-templates
-	      `(("t" "Item" item (file+headline ,file "A") "- X"
+	      `(("t" "Item" item (file+heading ,file "A") "- X"
 		 :prepend t))))
 	(org-capture nil "t")
 	(org-capture-finalize))
@@ -356,7 +356,7 @@
     (org-test-with-temp-text-in-file "* A\n- 1\n  - 2"
       (let* ((file (buffer-file-name))
 	     (org-capture-templates
-	      `(("t" "Item" item (file+headline ,file "A") "- X"))))
+	      `(("t" "Item" item (file+heading ,file "A") "- X"))))
 	(org-capture nil "t")
 	(org-capture-finalize))
       (buffer-string))))
@@ -459,7 +459,7 @@
 	(org-capture nil "t")
 	(org-capture-finalize))
       (buffer-string))))
-  ;; Do not break next headline.
+  ;; Do not break next heading.
   (should-not
    (equal
     "- A\n- X\nFoo* H"
@@ -523,7 +523,7 @@
 	  (org-test-with-temp-text-in-file "* Foo\n| a |\n* Inbox\n| b |\n"
 	    (let* ((file (buffer-file-name))
 		   (org-capture-templates
-		    `(("t" "Table" table-line (file+headline ,file "Inbox")
+		    `(("t" "Table" table-line (file+heading ,file "Inbox")
 		       "| x |" :immediate-finish t))))
 	      (org-capture nil "t"))
 	    (buffer-string))))
@@ -537,7 +537,7 @@
 	  (org-test-with-temp-text-in-file "* Inbox\n| a |\n\n| b |\n"
 	    (let* ((file (buffer-file-name))
 		   (org-capture-templates
-		    `(("t" "Table" table-line (file+headline ,file "Inbox")
+		    `(("t" "Table" table-line (file+heading ,file "Inbox")
 		       "| x |" :immediate-finish t))))
 	      (org-capture nil "t"))
 	    (buffer-string))))
@@ -699,7 +699,7 @@
 		       :immediate-finish t :prepend t))))
 	      (org-capture nil "t")
 	      (buffer-string)))))
-  ;; When a headline is specified, add it at the beginning of the
+  ;; When a heading is specified, add it at the beginning of the
   ;; entry, past any meta-data, or at its end, depending on
   ;; `:prepend'.
   (should
@@ -708,7 +708,7 @@
 	      "* A\nSCHEDULED: <2012-03-29 Thu>\nSome text.\n* B"
 	    (let* ((file (buffer-file-name))
 		   (org-capture-templates
-		    `(("t" "Text" plain (file+headline ,file "A") "Foo"
+		    `(("t" "Text" plain (file+heading ,file "A") "Foo"
 		       :immediate-finish t))))
 	      (org-capture nil "t")
 	      (buffer-string)))))
@@ -718,7 +718,7 @@
 	      "* A\nSCHEDULED: <2012-03-29 Thu>\nSome text.\n* B"
 	    (let* ((file (buffer-file-name))
 		   (org-capture-templates
-		    `(("t" "Text" plain (file+headline ,file "A") "Foo"
+		    `(("t" "Text" plain (file+heading ,file "A") "Foo"
 		       :immediate-finish t :prepend t))))
 	      (org-capture nil "t")
 	      (buffer-string)))))
diff --git a/testing/lisp/test-org-clock.el b/testing/lisp/test-org-clock.el
index d2179e1ec..61cdb3d2b 100644
--- a/testing/lisp/test-org-clock.el
+++ b/testing/lisp/test-org-clock.el
@@ -277,7 +277,7 @@ the buffer."
   "Test insert clocktable dynamic block with `org-dynamic-block-insert-dblock'."
   (should
    (equal
-    "| Headline     | Time   |
+    "| Heading      | Time   |
 |--------------+--------|
 | *Total time* | *1:00* |
 |--------------+--------|
@@ -302,7 +302,7 @@ the buffer."
   ;; Relative time: Previous two days.
   (should
    (equal
-    "| Headline                     | Time   |      |
+    "| Heading                      | Time   |      |
 |------------------------------+--------+------|
 | *Total time*                 | *8:00* |      |
 |------------------------------+--------+------|
@@ -318,7 +318,7 @@ the buffer."
   ;; Relative time: Yesterday until now.
   (should
    (equal
-    "| Headline                     | Time   |      |
+    "| Heading                      | Time   |      |
 |------------------------------+--------+------|
 | *Total time*                 | *6:00* |      |
 |------------------------------+--------+------|
@@ -334,7 +334,7 @@ the buffer."
   ;; Test `untilnow' block.
   (should
    (equal
-    "| Headline                     | Time   |      |
+    "| Heading                      | Time   |      |
 |------------------------------+--------+------|
 | *Total time*                 | *6:00* |      |
 |------------------------------+--------+------|
@@ -351,7 +351,7 @@ the buffer."
   ;; Test match filtering.
   (should
    (equal
-    "| Headline     | Time   |      |
+    "| Heading      | Time   |      |
 |--------------+--------+------|
 | *Total time* | *2:00* |      |
 |--------------+--------+------|
@@ -367,7 +367,7 @@ the buffer."
   ;; Test tags column.
   (should
    (equal
-    "| Tags | Headline     | Time   |      |
+    "| Tags | Heading      | Time   |      |
 |------+--------------+--------+------|
 |      | *Total time* | *1:00* |      |
 |------+--------------+--------+------|
@@ -383,7 +383,7 @@ the buffer."
   ;; line, and ignore "file" column.
   (should
    (equal
-    "| Headline     | Time   |     |
+    "| Heading      | Time   |     |
 |--------------+--------+-----|
 | *Total time* | *8:40* | foo |
 |--------------+--------+-----|
@@ -409,7 +409,7 @@ CLOCK: [2012-03-29 Thu 16:00]--[2012-03-29 Thu 17:00] =>  1:00"
 (ert-deftest test-org-clock/clocktable/maxlevel ()
   "Test \":maxlevel\" parameter in Clock table."
   (should
-   (equal "| Headline     | Time   |      |
+   (equal "| Heading      | Time   |      |
 |--------------+--------+------|
 | *Total time* | *6:00* |      |
 |--------------+--------+------|
@@ -422,7 +422,7 @@ CLOCK: [2016-12-28 Wed 11:09]--[2016-12-28 Wed 15:09] =>  4:00
 CLOCK: [2016-12-28 Wed 13:09]--[2016-12-28 Wed 15:09] =>  2:00"
             (test-org-clock-clocktable-contents ":maxlevel 3"))))
   (should
-   (equal "| Headline     | Time   |      |
+   (equal "| Heading      | Time   |      |
 |--------------+--------+------|
 | *Total time* | *6:00* |      |
 |--------------+--------+------|
@@ -435,7 +435,7 @@ CLOCK: [2016-12-28 Wed 11:09]--[2016-12-28 Wed 15:09] =>  4:00
 CLOCK: [2016-12-28 Wed 13:09]--[2016-12-28 Wed 15:09] =>  2:00"
             (test-org-clock-clocktable-contents ":maxlevel 2"))))
   (should
-   (equal "| Headline     | Time   |
+   (equal "| Heading      | Time   |
 |--------------+--------|
 | *Total time* | *6:00* |
 |--------------+--------|
@@ -448,7 +448,7 @@ CLOCK: [2016-12-28 Wed 13:09]--[2016-12-28 Wed 15:09] =>  2:00"
             (test-org-clock-clocktable-contents ":maxlevel 1"))))
   ;; Special ":maxlevel 0" case: only report total file time.
   (should
-   (equal "| Headline     | Time   |
+   (equal "| Heading      | Time   |
 |--------------+--------|
 | *Total time* | *6:00* |
 |--------------+--------|"
@@ -464,7 +464,7 @@ CLOCK: [2016-12-28 Wed 13:09]--[2016-12-28 Wed 15:09] =>  2:00"
   ;; Test ":formula %".  Handle various duration formats.
   (should
    (equal
-    "| Headline     |   Time |     % |
+    "| Heading      |   Time |     % |
 |--------------+--------+-------|
 | *Total time* | *6:00* | 100.0 |
 |--------------+--------+-------|
@@ -478,7 +478,7 @@ CLOCK: [2016-12-28 Wed 13:09]--[2016-12-28 Wed 15:09] =>  2:00"
       (test-org-clock-clocktable-contents ":maxlevel 1 :formula %"))))
   (should
    (equal
-    "| Headline     |    Time |     % |
+    "| Heading      |    Time |     % |
 |--------------+---------+-------|
 | *Total time* | *28:00* | 100.0 |
 |--------------+---------+-------|
@@ -492,7 +492,7 @@ CLOCK: [2016-12-28 Wed 13:09]--[2016-12-28 Wed 15:09] =>  2:00"
       (test-org-clock-clocktable-contents ":maxlevel 1 :formula %"))))
   ;; Properly align column with different depths.
   (should
-   (equal "| Headline      | Time   |      |      |     % |
+   (equal "| Heading       | Time   |      |      |     % |
 |---------------+--------+------+------+-------|
 | *Total time*  | *1:00* |      |      | 100.0 |
 |---------------+--------+------+------+-------|
@@ -528,7 +528,7 @@ CLOCK: [2016-12-28 Wed 13:09]--[2016-12-28 Wed 15:09] =>  2:00"
   ;; Test foreign translation
   (should
    (equal
-    "| Headline     | Time    |
+    "| Heading      | Time    |
 |--------------+---------|
 | *Total time* | *26:00* |
 |--------------+---------|
@@ -562,7 +562,7 @@ CLOCK: [2016-12-28 Wed 13:09]--[2016-12-28 Wed 15:09] =>  2:00"
   ;; Unknown translation fall backs to "en".
   (should
    (equal
-    "| Headline     | Time    |
+    "| Heading      | Time    |
 |--------------+---------|
 | *Total time* | *26:00* |
 |--------------+---------|
@@ -575,14 +575,14 @@ CLOCK: [2016-12-28 Wed 13:09]--[2016-12-28 Wed 15:09] =>  2:00"
 (ert-deftest test-org-clock/clocktable/link ()
   "Test \":link\" parameter in Clock table."
   ;; If there is no file attached to the document, link directly to
-  ;; the headline.
+  ;; the heading.
   (should
    (string-match-p "| +\\[\\[\\*Foo]\\[Foo]] +| 26:00 +|"
 		   (org-test-with-temp-text
 		       "* Foo
 CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
 		     (test-org-clock-clocktable-contents ":link t"))))
-  ;; Otherwise, link to the headline in the current file.
+  ;; Otherwise, link to the heading in the current file.
   (should
    (string-match-p
     "| \\[\\[file:filename::\\*Foo]\\[Foo]] +| 26:00 +|"
@@ -597,7 +597,7 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
       (org-table-align)
       (buffer-substring-no-properties (point-min) (point-max)))))
   ;; Ignore TODO keyword, priority cookie, COMMENT and tags in
-  ;; headline.
+  ;; heading.
   (should
    (string-match-p
     "| \\[\\[\\*Foo]\\[Foo]] +| 26:00 +|"
@@ -626,7 +626,7 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
 	"* Foo :tag:
 CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
       (test-org-clock-clocktable-contents ":link t :lang en"))))
-  ;; Remove statistics cookie from headline description.
+  ;; Remove statistics cookie from heading description.
   (should
    (string-match-p
     "| \\[\\[\\*Foo]\\[Foo]] +| 26:00 +|"
@@ -660,10 +660,10 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
 
 (ert-deftest test-org-clock/clocktable/compact ()
   "Test \":compact\" parameter in Clock table."
-  ;; With :compact, all headlines are in the same column.
+  ;; With :compact, all headings are in the same column.
   (should
    (equal
-    "| Headline     | Time    |
+    "| Heading      | Time    |
 |--------------+---------|
 | *Total time* | *26:00* |
 |--------------+---------|
@@ -674,7 +674,7 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
       (test-org-clock-clocktable-contents ":compact t"))))
   (should
    (equal
-    "| Headline     |    Time |
+    "| Heading      |    Time |
 |--------------+---------|
 | *Total time* | *52:00* |
 |--------------+---------|
@@ -689,7 +689,7 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
   ;; :maxlevel does not affect :compact parameter.
   (should
    (equal
-    "| Headline     |    Time |
+    "| Heading      |    Time |
 |--------------+---------|
 | *Total time* | *52:00* |
 |--------------+---------|
@@ -704,7 +704,7 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
   ;; :compact implies a non-nil :indent parameter.
   (should
    (equal
-    "| Headline     |    Time |
+    "| Heading      |    Time |
 |--------------+---------|
 | *Total time* | *52:00* |
 |--------------+---------|
@@ -719,7 +719,7 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
   ;; :compact implies a nil :level parameter.
   (should
    (equal
-    "| Headline     |    Time |
+    "| Heading      |    Time |
 |--------------+---------|
 | *Total time* | *52:00* |
 |--------------+---------|
@@ -737,7 +737,7 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
   ;; Include a new column with list properties.
   (should
    (equal
-    "| A | Headline     | Time    |
+    "| A | Heading      | Time    |
 |---+--------------+---------|
 |   | *Total time* | *26:00* |
 |---+--------------+---------|
@@ -751,7 +751,7 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
       (test-org-clock-clocktable-contents ":properties (\"A\")"))))
   (should
    (equal
-    "| A | Headline     | Time    |       |
+    "| A | Heading      | Time    |       |
 |---+--------------+---------+-------|
 |   | *Total time* | *52:00* |       |
 |---+--------------+---------+-------|
@@ -769,7 +769,7 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
   ;; Handle missing properties.
   (should
    (equal
-    "| A | Headline     | Time    |
+    "| A | Heading      | Time    |
 |---+--------------+---------|
 |   | *Total time* | *26:00* |
 |---+--------------+---------|
@@ -784,11 +784,11 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
 
 (ert-deftest test-org-clock/clocktable/tcolumns ()
   "Test \":tcolumns\" parameter in Clock table."
-  ;; When :tcolumns is smaller than the deepest headline level, lump
+  ;; When :tcolumns is smaller than the deepest heading level, lump
   ;; lower levels in the last column.
   (should
    (equal
-    "| Headline     |    Time |
+    "| Heading      |    Time |
 |--------------+---------|
 | *Total time* | *52:00* |
 |--------------+---------|
@@ -800,11 +800,11 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00
 ** Bar
 CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
       (test-org-clock-clocktable-contents ":tcolumns 1"))))
-  ;; :tcolumns cannot create more columns than the deepest headline
+  ;; :tcolumns cannot create more columns than the deepest heading
   ;; level.
   (should
    (equal
-    "| Headline     | Time    |       |
+    "| Heading      | Time    |       |
 |--------------+---------+-------|
 | *Total time* | *52:00* |       |
 |--------------+---------+-------|
@@ -816,10 +816,10 @@ CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00
 ** Bar
 CLOCK: [2016-12-27 Wed 13:09]--[2016-12-28 Wed 15:09] => 26:00"
       (test-org-clock-clocktable-contents ":tcolumns 3"))))
-  ;; Pathological case: when no headline contributes to the total
+  ;; Pathological case: when no heading contributes to the total
   ;; time, there is only one time column.
   (should
-   (equal "| Headline     | Time   |
+   (equal "| Heading      | Time   |
 |--------------+--------|
 | *Total time* | *0:00* |"
           (org-test-with-temp-text
@@ -1138,7 +1138,7 @@ CLOCK: [2018-10-29 Mon 08:00]--[2018-10-29 Mon 16:00] =>  8:00"
   ;; 2017-09-30 should include the time clocked on 2017-10-01 before
   ;; 04:00.
   (should
-   (equal "| Headline     | Time   |
+   (equal "| Heading      | Time   |
 |--------------+--------|
 | *Total time* | *2:00* |
 |--------------+--------|
@@ -1186,7 +1186,7 @@ CLOCK: [2017-10-02 Mon 11:00]--[2017-10-02 Mon 13:00] =>  2:00"
   ;; Test that hidefiles removes the file column.
   (should
    (equal
-    "| Headline     | Time   |
+    "| Heading      | Time   |
 |--------------+--------|
 | *Total time* | *1:00* |
 |--------------+--------|
diff --git a/testing/lisp/test-org-colview.el b/testing/lisp/test-org-colview.el
index 64da5611d..f813aa8e1 100644
--- a/testing/lisp/test-org-colview.el
+++ b/testing/lisp/test-org-colview.el
@@ -67,7 +67,7 @@
 
 (ert-deftest test-org-colview/columns-scope ()
   "Test `org-columns' scope."
-  ;; Before the first headline, view all document.
+  ;; Before the first heading, view all document.
   (should
    (equal
     '("H1" "H2" "H3")
@@ -85,7 +85,7 @@
       (let ((org-columns-default-format "%ITEM")) (org-columns))
       (org-map-entries
        (lambda () (get-char-property (point) 'org-columns-value))))))
-  ;; Otherwise, view tree starting at the current headline.
+  ;; Otherwise, view tree starting at the current heading.
   (should
    (equal
     '(nil "H2" "H3" nil)
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index ea9f97a64..6e49c9702 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -59,7 +59,7 @@ Some other text
     "alpha"
     (org-element-property
      :name
-     (org-test-with-temp-text "* Some \\alpha headline\n\\beta entity."
+     (org-test-with-temp-text "* Some \\alpha heading\n\\beta entity."
        (org-element-map (org-element-parse-buffer) 'entity 'identity nil t)))))
   ;; Apply NO-RECURSION argument.
   (should-not
@@ -81,7 +81,7 @@ Some other text
 (ert-deftest test-org-element/put-property ()
   "Test `org-element-put-property' specifications."
   ;; Standard test.
-  (org-test-with-temp-text "* Headline\n *a*"
+  (org-test-with-temp-text "* Heading\n *a*"
     (let ((tree (org-element-parse-buffer)))
       (org-element-put-property
        (org-element-map tree 'bold 'identity nil t) :test 1)
@@ -96,7 +96,7 @@ Some other text
   ;; Accept multiple entries.
   (should
    (equal '("b" (italic nil "a"))
-	  (org-test-with-temp-text "* Headline\n *a*"
+	  (org-test-with-temp-text "* Heading\n *a*"
 	    (let ((tree (org-element-parse-buffer)))
 	      (org-element-set-contents
 	       (org-element-map tree 'bold 'identity nil t) "b" '(italic nil "a"))
@@ -105,7 +105,7 @@ Some other text
   ;; Accept atoms and elements.
   (should
    (equal '("b")
-	  (org-test-with-temp-text "* Headline\n *a*"
+	  (org-test-with-temp-text "* Heading\n *a*"
 	    (let ((tree (org-element-parse-buffer)))
 	      (org-element-set-contents
 	       (org-element-map tree 'bold 'identity nil t) "b")
@@ -113,7 +113,7 @@ Some other text
 	       (org-element-map tree 'bold 'identity nil t))))))
   (should
    (equal '((italic nil "b"))
-	  (org-test-with-temp-text "* Headline\n *a*"
+	  (org-test-with-temp-text "* Heading\n *a*"
 	    (let ((tree (org-element-parse-buffer)))
 	      (org-element-set-contents
 	       (org-element-map tree 'bold 'identity nil t) '(italic nil "b"))
@@ -121,7 +121,7 @@ Some other text
 	       (org-element-map tree 'bold 'identity nil t))))))
   ;; Allow nil contents.
   (should-not
-   (org-test-with-temp-text "* Headline\n *a*"
+   (org-test-with-temp-text "* Heading\n *a*"
      (let ((tree (org-element-parse-buffer)))
        (org-element-set-contents (org-element-map tree 'bold 'identity nil t))
        (org-element-contents (org-element-map tree 'bold 'identity nil t))))))
@@ -131,7 +131,7 @@ Some other text
   ;; In a secondary string, return property name.
   (should
    (eq :title
-       (org-test-with-temp-text "* Headline *object*"
+       (org-test-with-temp-text "* Heading *object*"
 	 (org-element-map (org-element-parse-buffer) 'bold
 	   (lambda (object) (org-element-secondary-p object))
 	   nil t))))
@@ -165,8 +165,8 @@ Some other text
 ;;   (should
 ;;    (eq 'object
 ;;        (let* ((datum '(foo nil))
-;; 	      (headline `(headline (:title (,datum)))))
-;; 	 (org-element-put-property datum :parent headline)
+;; 	      (heading `(heading (:title (,datum)))))
+;; 	 (org-element-put-property datum :parent heading)
 ;; 	 (org-element-class datum)))))
 
 (ert-deftest test-org-element/adopt-elements ()
@@ -174,7 +174,7 @@ Some other text
   ;; Adopt an element.
   (should
    (equal '(plain-text italic)
-	  (org-test-with-temp-text "* Headline\n *a*"
+	  (org-test-with-temp-text "* Heading\n *a*"
 	    (let ((tree (org-element-parse-buffer)))
 	      (org-element-adopt-elements
 	       (org-element-map tree 'bold 'identity nil t) '(italic nil "a"))
@@ -184,7 +184,7 @@ Some other text
   ;; Adopt a string.
   (should
    (equal '("a" "b")
-	  (org-test-with-temp-text "* Headline\n *a*"
+	  (org-test-with-temp-text "* Heading\n *a*"
 	    (let ((tree (org-element-parse-buffer)))
 	      (org-element-adopt-elements
 	       (org-element-map tree 'bold 'identity nil t) "b")
@@ -196,9 +196,9 @@ Some other text
   ;; Extract a greater element.
   (should
    (equal '(org-data nil)
-	  (org-test-with-temp-text "* Headline"
+	  (org-test-with-temp-text "* Heading"
 	    (let* ((tree (org-element-parse-buffer))
-		   (element (org-element-map tree 'headline 'identity nil t)))
+		   (element (org-element-map tree 'heading 'identity nil t)))
 	      (org-element-extract-element element)
 	      tree))))
   ;; Extract an element.
@@ -223,7 +223,7 @@ Some other text
      'identity))
   (should-not
    (org-element-map
-       (org-test-with-temp-text "* Headline *bold*"
+       (org-test-with-temp-text "* Heading *bold*"
 	 (let* ((tree (org-element-parse-buffer))
 		(element (org-element-map tree 'bold 'identity nil t)))
 	   (org-element-extract-element element)
@@ -234,7 +234,7 @@ Some other text
   (should-not
    (org-element-property
     :parent
-    (org-test-with-temp-text "* Headline\n  Paragraph with *bold* text."
+    (org-test-with-temp-text "* Heading\n  Paragraph with *bold* text."
       (let* ((tree (org-element-parse-buffer))
 	     (element (org-element-map tree 'bold 'identity nil t)))
 	(org-element-extract-element element))))))
@@ -257,24 +257,24 @@ Some other text
     '(entity italic)
     (org-test-with-temp-text "* /A/\n  Paragraph."
       (let* ((tree (org-element-parse-buffer))
-	     (headline (org-element-map tree 'headline 'identity nil t))
+	     (heading (org-element-map tree 'heading 'identity nil t))
 	     (italic (org-element-map tree 'italic 'identity nil t)))
 	(org-element-insert-before '(entity (:name "\\alpha")) italic)
-	(org-element-map (org-element-property :title headline) '(entity italic)
+	(org-element-map (org-element-property :title heading) '(entity italic)
 	  #'org-element-type))))))
 
 (ert-deftest test-org-element/set-element ()
   "Test `org-element-set-element' specifications."
   ;; Check if new element is inserted.
   (should
-   (org-test-with-temp-text "* Headline\n*a*"
+   (org-test-with-temp-text "* Heading\n*a*"
      (let* ((tree (org-element-parse-buffer))
 	    (bold (org-element-map tree 'bold 'identity nil t)))
        (org-element-set-element bold '(italic nil "b"))
        (org-element-map tree 'italic 'identity))))
   ;; Check if old element is removed.
   (should-not
-   (org-test-with-temp-text "* Headline\n*a*"
+   (org-test-with-temp-text "* Heading\n*a*"
      (let* ((tree (org-element-parse-buffer))
 	    (bold (org-element-map tree 'bold 'identity nil t)))
        (org-element-set-element bold '(italic nil "b"))
@@ -282,7 +282,7 @@ Some other text
   ;; Check if :parent property is correctly set.
   (should
    (eq 'paragraph
-       (org-test-with-temp-text "* Headline\n*a*"
+       (org-test-with-temp-text "* Heading\n*a*"
 	 (let* ((tree (org-element-parse-buffer))
 		(bold (org-element-map tree 'bold 'identity nil t)))
 	   (org-element-set-element bold '(italic nil "b"))
@@ -292,7 +292,7 @@ Some other text
   ;; Allow to replace strings with elements.
   (should
    (equal '("b")
-	  (org-test-with-temp-text "* Headline"
+	  (org-test-with-temp-text "* Heading"
 	    (let* ((tree (org-element-parse-buffer))
 		   (text (org-element-map tree 'plain-text 'identity nil t)))
 	      (org-element-set-element text (list 'bold nil "b"))
@@ -882,9 +882,9 @@ Some other text
 	 (org-element-type (org-element-at-point)))))
   ;; Properly un-escape code.
   (should
-   (equal "* Headline\n #+keyword:\nText\n"
+   (equal "* Heading\n #+keyword:\nText\n"
 	  (org-test-with-temp-text
-	      "#+BEGIN_EXAMPLE\n,* Headline\n ,#+keyword:\nText\n#+END_EXAMPLE"
+	      "#+BEGIN_EXAMPLE\n,* Heading\n ,#+keyword:\nText\n#+END_EXAMPLE"
 	    (org-element-property :value (org-element-at-point)))))
   ;; Handle non-empty blank line at the end of buffer.
   (should
@@ -1182,84 +1182,84 @@ Some other text
 	 (org-element-parse-buffer) 'footnote-reference 'identity))))
 
 
-;;;; Headline
+;;;; Heading
 
-(ert-deftest test-org-element/headline-todo-keyword ()
+(ert-deftest test-org-element/heading-todo-keyword ()
   "Test todo keyword recognition."
   ;; Reference test.
-  (org-test-with-temp-text "* TODO Headline"
+  (org-test-with-temp-text "* TODO Heading"
     (let ((org-todo-keywords '((sequence "TODO" "DONE"))))
       (should (org-element-property :todo-keyword (org-element-at-point)))))
-  ;; Todo keyword is prefix of headlines first word.
-  (org-test-with-temp-text "* TODOHeadline"
+  ;; Todo keyword is prefix of headings first word.
+  (org-test-with-temp-text "* TODOHeading"
     (let ((org-todo-keywords '((sequence "TODO" "DONE"))))
       (should-not (org-element-property :todo-keyword (org-element-at-point))))))
 
-(ert-deftest test-org-element/headline-comment-keyword ()
+(ert-deftest test-org-element/heading-comment-keyword ()
   "Test COMMENT keyword recognition."
   ;; Reference test.
-  (org-test-with-temp-text "* Headline"
+  (org-test-with-temp-text "* Heading"
     (let ((org-comment-string "COMMENT"))
       (should-not (org-element-property :commentedp (org-element-at-point)))))
   ;; Standard position.
-  (org-test-with-temp-text "* COMMENT Headline"
+  (org-test-with-temp-text "* COMMENT Heading"
     (let ((org-comment-string "COMMENT")
-	  (headline (org-element-at-point)))
-      (should (org-element-property :commentedp headline))
-      (should (equal (org-element-property :raw-value headline) "Headline"))))
+	  (heading (org-element-at-point)))
+      (should (org-element-property :commentedp heading))
+      (should (equal (org-element-property :raw-value heading) "Heading"))))
   ;; Case sensitivity.
-  (org-test-with-temp-text "* COMMENT Headline"
+  (org-test-with-temp-text "* COMMENT Heading"
     (let* ((org-comment-string "Comment")
-	   (headline (org-element-at-point)))
-      (should-not (org-element-property :commentedp headline))
-      (should (equal (org-element-property :raw-value headline)
-		     "COMMENT Headline"))))
+	   (heading (org-element-at-point)))
+      (should-not (org-element-property :commentedp heading))
+      (should (equal (org-element-property :raw-value heading)
+		     "COMMENT Heading"))))
   ;; With another keyword.
-  (org-test-with-temp-text "* TODO COMMENT Headline"
+  (org-test-with-temp-text "* TODO COMMENT Heading"
     (let* ((org-comment-string "COMMENT")
 	   (org-todo-keywords '((sequence "TODO" "DONE")))
-	   (headline (org-element-at-point)))
-      (should (org-element-property :commentedp headline))
-      (should (equal (org-element-property :raw-value headline) "Headline"))))
+	   (heading (org-element-at-point)))
+      (should (org-element-property :commentedp heading))
+      (should (equal (org-element-property :raw-value heading) "Heading"))))
   ;; With the keyword only.
   (org-test-with-temp-text "* COMMENT"
     (let* ((org-comment-string "COMMENT")
-	   (headline (org-element-at-point)))
-      (should (org-element-property :commentedp headline))
-      (should (equal (org-element-property :raw-value headline) "")))))
+	   (heading (org-element-at-point)))
+      (should (org-element-property :commentedp heading))
+      (should (equal (org-element-property :raw-value heading) "")))))
 
-(ert-deftest test-org-element/headline-archive-tag ()
+(ert-deftest test-org-element/heading-archive-tag ()
   "Test ARCHIVE tag recognition."
   ;; Reference test.
   (should-not
-   (org-test-with-temp-text "* Headline"
+   (org-test-with-temp-text "* Heading"
      (let ((org-archive-tag "ARCHIVE"))
        (org-element-property :archivedp (org-element-at-point)))))
   ;; Single tag.
-  (org-test-with-temp-text "* Headline :ARCHIVE:"
+  (org-test-with-temp-text "* Heading :ARCHIVE:"
     (let ((org-archive-tag "ARCHIVE"))
-      (let ((headline (org-element-at-point)))
-	(should (org-element-property :archivedp headline)))))
+      (let ((heading (org-element-at-point)))
+	(should (org-element-property :archivedp heading)))))
   ;; Multiple tags.
-  (org-test-with-temp-text "* Headline :test:ARCHIVE:"
+  (org-test-with-temp-text "* Heading :test:ARCHIVE:"
     (let ((org-archive-tag "ARCHIVE"))
-      (let ((headline (org-element-at-point)))
-	(should (org-element-property :archivedp headline)))))
+      (let ((heading (org-element-at-point)))
+	(should (org-element-property :archivedp heading)))))
   ;; Tag is case-sensitive.
   (should-not
-   (org-test-with-temp-text "* Headline :ARCHIVE:"
+   (org-test-with-temp-text "* Heading :ARCHIVE:"
      (let ((org-archive-tag "Archive"))
        (org-element-property :archivedp (org-element-at-point))))))
 
-(ert-deftest test-org-element/headline-properties ()
+(ert-deftest test-org-element/heading-properties ()
   "Test properties from property drawer."
   ;; All properties from property drawer have their symbol upper
   ;; cased.
   (should
-   (org-test-with-temp-text "* Headline\n:PROPERTIES:\n:foo: bar\n:END:"
+   (org-test-with-temp-text "* Heading\n:PROPERTIES:\n:foo: bar\n:END:"
      (org-element-property :FOO (org-element-at-point))))
   (should-not
-   (org-test-with-temp-text "* Headline\n:PROPERTIES:\n:foo: bar\n:END:"
+   (org-test-with-temp-text "* Heading\n:PROPERTIES:\n:foo: bar\n:END:"
      (org-element-property :foo (org-element-at-point))))
   ;; Also parse properties associated in inlinetasks.
   (when (featurep 'org-inlinetask)
@@ -1273,7 +1273,7 @@ Some other text
   ;; Do not find property drawer in a verbatim area.
   (should-not
    (org-test-with-temp-text
-       "* Headline
+       "* Heading
 #+BEGIN_EXAMPLE
 :PROPERTIES:
 :foo: bar
@@ -1284,7 +1284,7 @@ Some other text
   (when (featurep 'org-inlinetask)
     (should-not
      (org-test-with-temp-text
-	 "* Headline
+	 "* Heading
 *************** Inlinetask
 :PROPERTIES:
 :foo: bar
@@ -1294,7 +1294,7 @@ Some other text
 	:FOO (let ((org-inlinetask-min-level 15)) (org-element-at-point))))))
   ;; Do not find incomplete drawers.
   (should-not
-   (org-test-with-temp-text "* Headline\n:PROPERTIES:\n:foo: bar"
+   (org-test-with-temp-text "* Heading\n:PROPERTIES:\n:foo: bar"
      (org-element-property :FOO (org-element-at-point)))))
 
 
@@ -2064,7 +2064,7 @@ e^{i\\pi}+1=0
 	      (list (org-element-property :key element)
 		    (org-element-property :value element))))))
   ;; The insides of property blocks on document level are parsed the
-  ;; same way as headline property blocks.  I.e. the concept of
+  ;; same way as heading property blocks.  I.e. the concept of
   ;; `node-property' apply also for properties in those blocks.
   (should
    (equal '("abc" "value")
@@ -2227,7 +2227,7 @@ Outside list"
     :scheduled
     (org-test-with-temp-text "* H\n<point>SCHEDULED: <2012-03-29 thu.>"
       (org-element-at-point))))
-  ;; Planning line only exists right after a headline.
+  ;; Planning line only exists right after a heading.
   (should-not
    (eq 'planning
        (org-test-with-temp-text "DEADLINE: <2012-03-29 thu.>"
@@ -2362,22 +2362,22 @@ Outside list"
   "Test `section' parser."
   ;; Standard test.
   (should
-   (org-test-with-temp-text "* Headline\nText"
+   (org-test-with-temp-text "* Heading\nText"
      (org-element-map (org-element-parse-buffer) 'section 'identity)))
-  ;; There's a section before the first headline.
+  ;; There's a section before the first heading.
   (should
    (org-test-with-temp-text "Text"
      (org-element-map (org-element-parse-buffer) 'section 'identity)))
   ;; A section cannot be empty.
   (should-not
-   (org-test-with-temp-text "* Headline 1\n* Headline 2"
+   (org-test-with-temp-text "* Heading 1\n* Heading 2"
      (org-element-map (org-element-parse-buffer) 'section 'identity)))
   ;; A section doesn't contain sub-trees.
   (should-not
    (org-test-with-temp-text "* Head\nText\n** Sub-Head"
      (org-element-map
       (org-element-map (org-element-parse-buffer) 'section 'identity nil t)
-      'headline 'identity))))
+      'heading 'identity))))
 
 
 ;;;; Special Block
@@ -2432,9 +2432,9 @@ Outside list"
      (org-element-map (org-element-parse-buffer) 'src-block 'identity)))
   ;; Properly un-escape code.
   (should
-   (equal "* Headline\n #+keyword\nText\n"
+   (equal "* Heading\n #+keyword\nText\n"
 	  (org-test-with-temp-text
-	      "#+BEGIN_SRC org\n,* Headline\n ,#+keyword\nText\n#+END_SRC"
+	      "#+BEGIN_SRC org\n,* Heading\n ,#+keyword\nText\n#+END_SRC"
 	    (org-element-property :value (org-element-at-point)))))
   ;; Handle non-empty blank line at the end of buffer.
   (should
@@ -2792,46 +2792,46 @@ Outside list"
    (equal (org-test-parse-and-interpret "[fn:1]\n\nparagraph")
 	  "[fn:1]\n\nparagraph\n")))
 
-(ert-deftest test-org-element/headline-interpreter ()
-  "Test headline and section interpreters."
+(ert-deftest test-org-element/heading-interpreter ()
+  "Test heading and section interpreters."
   ;; 1. Standard test.
-  (should (equal (org-test-parse-and-interpret "* Headline") "* Headline\n"))
+  (should (equal (org-test-parse-and-interpret "* Heading") "* Heading\n"))
   ;; 2. With TODO keywords.
   (should
    (equal (let ((org-todo-keywords '((sequence "TODO" "DONE"))))
-	    (org-test-parse-and-interpret "* TODO Headline"))
-	  "* TODO Headline\n"))
+	    (org-test-parse-and-interpret "* TODO Heading"))
+	  "* TODO Heading\n"))
   ;; 3. With tags...
   ;;
   ;; 3.1. ... and a positive `org-tags-column' value.
   (should
    (equal (let ((org-tags-column 20))
-	    (org-test-parse-and-interpret "* Headline :tag:"))
-	  "* Headline          :tag:\n"))
+	    (org-test-parse-and-interpret "* Heading :tag:"))
+	  "* Heading           :tag:\n"))
   ;; 3.2. ... and a negative `org-tags-column' value.
   (should
    (equal (let ((org-tags-column -20))
-	    (org-test-parse-and-interpret "* Headline :tag:"))
-	  "* Headline     :tag:\n"))
+	    (org-test-parse-and-interpret "* Heading :tag:"))
+	  "* Heading      :tag:\n"))
   ;; 3.3. ... and a null `org-tags-column' value.
   (should
    (equal (let ((org-tags-column 0))
-	    (org-test-parse-and-interpret "* Headline     :tag:"))
-	  "* Headline :tag:\n"))
+	    (org-test-parse-and-interpret "* Heading     :tag:"))
+	  "* Heading :tag:\n"))
   ;; 4. With priority cookie.
   (should
-   (equal (org-test-parse-and-interpret "* [#B] Headline")
-	  "* [#B] Headline\n"))
+   (equal (org-test-parse-and-interpret "* [#B] Heading")
+	  "* [#B] Heading\n"))
   ;; 5. With comment keyword.
   (should
    (equal (let ((org-comment-string "COMMENT"))
-	    (org-test-parse-and-interpret "* COMMENT Headline"))
-	  "* COMMENT Headline\n"))
+	    (org-test-parse-and-interpret "* COMMENT Heading"))
+	  "* COMMENT Heading\n"))
   ;; 6. Keep same number of blank lines before body.
   (should
    (equal (org-test-parse-and-interpret
-	   "* Headline\n\n\nText after two blank lines.")
-	  "* Headline\n\n\nText after two blank lines.\n"))
+	   "* Heading\n\n\nText after two blank lines.")
+	  "* Heading\n\n\nText after two blank lines.\n"))
   ;; 8. Preserve `org-odd-levels-only' state.
   (should
    (equal "* H\n*** H2\n"
@@ -3009,8 +3009,8 @@ CLOCK: [2012-01-01 sun. 00:01]--[2012-01-01 sun. 00:02] =>  0:01"))))
    (equal
     (let ((org-src-preserve-indentation t))
       (org-test-parse-and-interpret
-       "#+BEGIN_EXAMPLE\n,* Headline\n,#+KEYWORD: value\nText\n#+END_EXAMPLE"))
-    "#+begin_example\n,* Headline\n,#+KEYWORD: value\nText\n#+end_example\n"))
+       "#+BEGIN_EXAMPLE\n,* Heading\n,#+KEYWORD: value\nText\n#+END_EXAMPLE"))
+    "#+begin_example\n,* Heading\n,#+KEYWORD: value\nText\n#+end_example\n"))
   ;; Accept missing final newline in value.
   (should
    (equal
@@ -3074,10 +3074,10 @@ CLOCK: [2012-01-01 sun. 00:01]--[2012-01-01 sun. 00:02] =>  0:01"))))
   "Test planning interpreter."
   (should
    (string-match
-    "\\* Headline
+    "\\* Heading
 DEADLINE: <2012-03-29 .*?> SCHEDULED: <2012-03-29 .*?> CLOSED: \\[2012-03-29 .*?\\]"
     (org-test-parse-and-interpret
-     "* Headline
+     "* Heading
 DEADLINE: <2012-03-29 thu.> SCHEDULED: <2012-03-29 thu.> CLOSED: [2012-03-29 thu.]"))))
 
 (ert-deftest test-org-element/property-drawer-interpreter ()
@@ -3109,8 +3109,8 @@ DEADLINE: <2012-03-29 thu.> SCHEDULED: <2012-03-29 thu.> CLOSED: [2012-03-29 thu
     (let ((org-edit-src-content-indentation 2)
 	  (org-src-preserve-indentation nil))
       (org-test-parse-and-interpret
-       "#+BEGIN_SRC org\n,* Headline\n,#+KEYWORD: value\nText\n#+END_SRC"))
-    "#+begin_src org\n  ,* Headline\n  ,#+KEYWORD: value\n  Text\n#+end_src\n"))
+       "#+BEGIN_SRC org\n,* Heading\n,#+KEYWORD: value\nText\n#+END_SRC"))
+    "#+begin_src org\n  ,* Heading\n  ,#+KEYWORD: value\n  Text\n#+end_src\n"))
   ;; Do not apply `org-edit-src-content-indentation' when preserving
   ;; indentation.
   (should
@@ -3467,13 +3467,13 @@ DEADLINE: <2012-03-29 thu.> SCHEDULED: <2012-03-29 thu.> CLOSED: [2012-03-29 thu
 Centered paragraph.
 #+END_CENTER
 Paragraph \\alpha."
-    ;; 1.1. Granularity set to `headline' should parse every headline
+    ;; 1.1. Granularity set to `heading' should parse every heading
     ;;      in buffer, and only them.
-    (let ((tree (org-element-parse-buffer 'headline)))
-      (should (= 2 (length (org-element-map tree 'headline 'identity))))
+    (let ((tree (org-element-parse-buffer 'heading)))
+      (should (= 2 (length (org-element-map tree 'heading 'identity))))
       (should-not (org-element-map tree 'paragraph 'identity)))
     ;; 1.2. Granularity set to `greater-element' should not enter
-    ;;      greater elements excepted headlines and sections.
+    ;;      greater elements excepted headings and sections.
     (let ((tree (org-element-parse-buffer 'greater-element)))
       (should (= 1 (length (org-element-map tree 'center-block 'identity))))
       (should (= 1 (length (org-element-map tree 'paragraph 'identity))))
@@ -3493,14 +3493,14 @@ Paragraph \\alpha."
   ;; should be parsed.
   (should
    (stringp
-    (org-test-with-temp-text "* Headline"
-      (let ((headline
-	     (org-element-map (org-element-parse-buffer 'headline) 'headline
+    (org-test-with-temp-text "* Heading"
+      (let ((heading
+	     (org-element-map (org-element-parse-buffer 'heading) 'heading
 	       #'identity nil 'first-match)))
-	(org-element-property :title headline)))))
+	(org-element-property :title heading)))))
   (should
    (stringp
-    (org-test-with-temp-text "* Headline\n- tag :: item"
+    (org-test-with-temp-text "* Heading\n- tag :: item"
       (let ((item (org-element-map (org-element-parse-buffer 'element) 'item
 		    #'identity nil 'first-match)))
 	(org-element-property :tag item)))))
@@ -3516,15 +3516,15 @@ Paragraph \\alpha."
   ;; With a default granularity, secondary strings should be parsed.
   (should
    (listp
-    (org-test-with-temp-text "* Headline"
-      (let ((headline
-	     (org-element-map (org-element-parse-buffer) 'headline
+    (org-test-with-temp-text "* Heading"
+      (let ((heading
+	     (org-element-map (org-element-parse-buffer) 'heading
 	       #'identity nil 'first-match)))
-	(org-element-property :title headline)))))
+	(org-element-property :title heading)))))
   ;; `org-element-at-point' should never parse a secondary string.
   (should-not
    (listp
-    (org-test-with-temp-text "* Headline"
+    (org-test-with-temp-text "* Heading"
       (org-element-property :title (org-element-at-point)))))
   ;; Preserve current local variables when parsing a secondary string.
   (should
@@ -3552,7 +3552,7 @@ Text
 	  (org-test-with-temp-text
 	      "* H1\n** H2\n** H3 :visible:\n** H4\n** H5 :visible:"
 	    (org-occur ":visible:")
-	    (org-element-map (org-element-parse-buffer nil t) 'headline
+	    (org-element-map (org-element-parse-buffer nil t) 'heading
 	      (lambda (hl) (org-element-property :raw-value hl))))))
   (should
    (equal "Test"
@@ -3600,7 +3600,7 @@ Text
 		    :parent (org-element-map tree 'italic 'identity nil t))))
       (should parent)
       (should (eq parent
-		  (org-element-map tree 'headline 'identity nil t))))))
+		  (org-element-map tree 'heading 'identity nil t))))))
 
 
 \f
@@ -3693,8 +3693,8 @@ Text
 	 (progn (search-forward "A")
 		(org-element-type
 		 (org-element-property :parent (org-element-at-point)))))))
-  ;; Special case: at a blank line just below a headline, return that
-  ;; headline.
+  ;; Special case: at a blank line just below a heading, return that
+  ;; heading.
   (should
    (equal "H1" (org-test-with-temp-text "* H1\n  \n* H2\n"
 		 (forward-line)
@@ -3763,7 +3763,7 @@ Text
   ;; Find objects in secondary strings.
   (should
    (eq 'underline
-       (org-test-with-temp-text "* Headline _<point>with_ underlining"
+       (org-test-with-temp-text "* Heading _<point>with_ underlining"
 	 (org-element-type (org-element-context)))))
   ;; Find objects in objects.
   (should
@@ -3823,7 +3823,7 @@ Text
    (eq 'underline
        (org-test-with-temp-text "Some *text with _under<point>line_ text*"
 	 (org-element-type (org-element-context (org-element-at-point))))))
-  ;; Special case: bold object at the beginning of a headline.
+  ;; Special case: bold object at the beginning of a heading.
   (should
    (eq 'bold
        (org-test-with-temp-text "* *bo<point>ld*"
@@ -3841,11 +3841,11 @@ Text
   ;; Special case: tags looking like a link.
   (should-not
    (eq 'link
-       (org-test-with-temp-text "* Headline :file<point>:tags:"
+       (org-test-with-temp-text "* Heading :file<point>:tags:"
 	 (org-element-type (org-element-context)))))
   (should
    (eq 'link
-       (org-test-with-temp-text "* Headline :file<point>:tags: :real:tag:"
+       (org-test-with-temp-text "* Heading :file<point>:tags: :real:tag:"
 	 (org-element-type (org-element-context))))))
 
 
@@ -3863,7 +3863,7 @@ Text
 	      "* H1\n** H2\n#+BEGIN_CENTER\n*bold<point>*\n#+END_CENTER"
 	    (mapcar #'car (org-element-lineage (org-element-context))))))
   (should
-   (equal '(paragraph center-block section headline headline org-data)
+   (equal '(paragraph center-block section heading heading org-data)
 	  (org-test-with-temp-text
 	      "* H1\n** H2\n#+BEGIN_CENTER\n*bold<point>*\n#+END_CENTER"
 	    (mapcar #'car
diff --git a/testing/lisp/test-org-footnote.el b/testing/lisp/test-org-footnote.el
index 6d8ba2f44..6968f77e3 100644
--- a/testing/lisp/test-org-footnote.el
+++ b/testing/lisp/test-org-footnote.el
@@ -58,7 +58,7 @@
     (org-test-with-temp-text " <point>"
       (let ((org-footnote-auto-label t)) (org-footnote-new))
       (buffer-string))))
-  ;; In an headline or inlinetask, point must be either on the
+  ;; In an heading or inlinetask, point must be either on the
   ;; heading itself or on the blank lines below.
   (should (org-test-with-temp-text "* H<point>" (org-footnote-new) t))
   (should
@@ -375,9 +375,9 @@ Text[fn:1][fn:2]
     "
 Text[fn:1]
 
-* Headline
+* Heading
 
-* Other headline
+* Other heading
 
 * Footnotes
 
@@ -390,11 +390,11 @@ Text[fn:1]
 
 \[fn:1] Def 1
 
-* Headline
+* Heading
 
 ** Footnotes
 
-* Other headline"
+* Other heading"
       (let ((org-footnote-section "Footnotes")) (org-footnote-sort))
       (buffer-string))))
   ;; Ignore anonymous footnotes.
diff --git a/testing/lisp/test-org-list.el b/testing/lisp/test-org-list.el
index 3689a172f..a77c792e7 100644
--- a/testing/lisp/test-org-list.el
+++ b/testing/lisp/test-org-list.el
@@ -584,7 +584,7 @@ b. Item 2<point>"
    (equal
     '(outline outline)
     (org-test-with-temp-text
-	"* Headline\n<point>- item 1\n  body 1\n- item 2\n  body 2"
+	"* Heading\n<point>- item 1\n  body 1\n- item 2\n  body 2"
       (let ((org-cycle-include-plain-lists t))
 	(org-cycle)
 	(search-forward "- item 2")
@@ -597,7 +597,7 @@ b. Item 2<point>"
 	      (search-backward " body 2")
 	      (org-invisible-p2))))))
   ;; Preserve children visibility.
-  (org-test-with-temp-text "* Headline
+  (org-test-with-temp-text "* Heading
 - item 1
   - sub-item 1
     sub-body 1
@@ -683,7 +683,7 @@ b. Item 2<point>"
 	    (let ((org-list-use-circular-motion t)) (org-move-item-up))
 	    (buffer-string))))
   ;; Preserve item visibility.
-  (org-test-with-temp-text "* Headline\n- item 1\n  body 1\n- item 2\n  body 2"
+  (org-test-with-temp-text "* Heading\n- item 1\n  body 1\n- item 2\n  body 2"
     (let ((org-cycle-include-plain-lists t))
       (search-forward "- item 1")
       (org-cycle)
@@ -695,7 +695,7 @@ b. Item 2<point>"
     (search-forward " body 1")
     (should (org-invisible-p2)))
   ;; Preserve children visibility.
-  (org-test-with-temp-text "* Headline
+  (org-test-with-temp-text "* Heading
 - item 1
   - sub-item 1
     sub-body 1
@@ -946,7 +946,7 @@ b. Item 2<point>"
 
 (ert-deftest test-org-list/update-checkbox-count ()
   "Test `org-update-checkbox-count' specifications."
-  ;; From a headline.
+  ;; From a heading.
   (should
    (string-match "\\[0/1\\]"
 		 (org-test-with-temp-text "* [/]\n- [ ] item"
@@ -1079,13 +1079,13 @@ b. Item 2<point>"
 	  (org-test-with-temp-text "- line"
 	    (org-toggle-item nil)
 	    (buffer-string))))
-  ;; Convert headlines to items.
+  ;; Convert headings to items.
   (should
    (equal "- line"
 	  (org-test-with-temp-text "* line"
 	    (org-toggle-item nil)
 	    (buffer-string))))
-  ;; When converting a headline to a list item, TODO keywords become
+  ;; When converting a heading to a list item, TODO keywords become
   ;; checkboxes.
   (should
    (equal "- [X] line"
@@ -1097,7 +1097,7 @@ b. Item 2<point>"
 	  (org-test-with-temp-text "* TODO line"
 	    (org-toggle-item nil)
 	    (buffer-string))))
-  ;; When turning headlines into items, make sure planning info line
+  ;; When turning headings into items, make sure planning info line
   ;; and properties drawers are removed.  This also includes empty
   ;; lines following them.
   (should
@@ -1122,8 +1122,8 @@ b. Item 2<point>"
 	  (org-test-with-temp-text "<point> \n* H :tag:"
 	    (org-toggle-item nil)
 	    (buffer-string))))
-  ;; When a region is marked and first line is a headline, all
-  ;; headlines are turned into items.
+  ;; When a region is marked and first line is a heading, all
+  ;; headings are turned into items.
   (should
    (equal "- H1\n  - H2"
 	  (org-test-with-temp-text "* H1\n** H2"
@@ -1140,7 +1140,7 @@ b. Item 2<point>"
 	    (goto-char (point-max))
 	    (org-toggle-item nil)
 	    (buffer-string))))
-  ;; When turning headlines into items, make sure headings contents
+  ;; When turning headings into items, make sure headings contents
   ;; are kept within items.
   (should
    (equal "- H1\n  Text"
diff --git a/testing/lisp/test-org-macro.el b/testing/lisp/test-org-macro.el
index 1b4b791ca..9d52df485 100644
--- a/testing/lisp/test-org-macro.el
+++ b/testing/lisp/test-org-macro.el
@@ -107,9 +107,9 @@
 
 (ert-deftest test-org-macro/property ()
   "Test {{{property}}} macro."
-  ;; With only one argument, retrieve property from current headline.
+  ;; With only one argument, retrieve property from current heading.
   ;; Otherwise, the second argument is a search option to get the
-  ;; property from another headline.
+  ;; property from another heading.
   (should
    (equal "1"
           (org-test-with-temp-text
diff --git a/testing/lisp/test-org-num.el b/testing/lisp/test-org-num.el
index 7a247b04a..d52e84b19 100644
--- a/testing/lisp/test-org-num.el
+++ b/testing/lisp/test-org-num.el
@@ -76,7 +76,7 @@
 
 (ert-deftest test-org-num/skip-numbering ()
   "Test various skip numbering parameters."
-  ;; Skip commented headlines.
+  ;; Skip commented headings.
   (should
    (equal '(nil "1 ")
           (org-test-with-temp-text "* H1\n* COMMENT H2"
@@ -156,7 +156,7 @@
             (let ((org-num-skip-unnumbered t)) (org-num-mode 1))
             (mapcar (lambda (o) (overlay-get o 'after-string))
                     (overlays-in (point-min) (point-max))))))
-  ;; Do not choke on empty headlines.
+  ;; Do not choke on empty headings.
   (should
    (equal '("1 ")
           (org-test-with-temp-text "* "
@@ -178,7 +178,7 @@
 
 (ert-deftest test-org-num/update ()
   "Test numbering update after a buffer modification."
-  ;; Headlines created at BEG.
+  ;; Headings created at BEG.
   (should
    (equal "1 "
           (org-test-with-temp-text "X* H"
@@ -200,7 +200,7 @@
             (insert " ")
             (overlay-get (car (overlays-at (line-beginning-position)))
                          'after-string))))
-  ;; Headlines created at END.
+  ;; Headings created at END.
   (should
    (equal '("1 ")
           (org-test-with-temp-text "X<point> H"
@@ -215,7 +215,7 @@
             (insert "\n")
             (mapcar (lambda (o) (overlay-get o 'after-string))
                     (overlays-in (point-min) (point-max))))))
-  ;; Headlines created between BEG and END.
+  ;; Headings created between BEG and END.
   (should
    (equal '("1.1 " "1 ")
           (org-test-with-temp-text ""
@@ -223,7 +223,7 @@
             (insert "\n* H\n** H2")
             (mapcar (lambda (o) (overlay-get o 'after-string))
                     (overlays-in (point-min) (point-max))))))
-  ;; Change level of a headline.
+  ;; Change level of a heading.
   (should
    (equal '("0.1 ")
           (org-test-with-temp-text "* H"
@@ -255,7 +255,7 @@
               (insert "o"))
             (mapcar (lambda (o) (overlay-get o 'after-string))
                     (overlays-in (point-min) (point-max))))))
-  ;; Invalidate an overlay and insert new headlines.
+  ;; Invalidate an overlay and insert new headings.
   (should
    (equal '("1.2 " "1.1 " "1 ")
           (org-test-with-temp-text
@@ -265,7 +265,7 @@
               (insert "\n** H2\n** H3\n")
               (mapcar (lambda (o) (overlay-get o 'after-string))
                       (overlays-in (point-min) (point-max)))))))
-  ;; Invalidate two overlays: current headline and next one.
+  ;; Invalidate two overlays: current heading and next one.
   (should
    (equal '("1 ")
           (org-test-with-temp-text
diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el
index de3c6f3c9..681d20f4e 100644
--- a/testing/lisp/test-org.el
+++ b/testing/lisp/test-org.el
@@ -29,7 +29,7 @@
 
 (ert-deftest test-org/toggle-comment ()
   "Test `org-toggle-comment' specifications."
-  ;; Simple headline.
+  ;; Simple heading.
   (should
    (equal "* Test"
 	  (org-test-with-temp-text "* COMMENT Test"
@@ -40,7 +40,7 @@
 	  (org-test-with-temp-text "* Test"
 	    (org-toggle-comment)
 	    (buffer-string))))
-  ;; Headline with a regular keyword.
+  ;; Heading with a regular keyword.
   (should
    (equal "* TODO Test"
 	  (org-test-with-temp-text "* TODO COMMENT Test"
@@ -51,7 +51,7 @@
 	  (org-test-with-temp-text "* TODO Test"
 	    (org-toggle-comment)
 	    (buffer-string))))
-  ;; Empty headline.
+  ;; Empty heading.
   (should
    (equal "* "
 	  (org-test-with-temp-text "* COMMENT"
@@ -62,7 +62,7 @@
 	  (org-test-with-temp-text "* "
 	    (org-toggle-comment)
 	    (buffer-string))))
-  ;; Headline with a single keyword.
+  ;; Heading with a single keyword.
   (should
    (equal "* TODO "
 	  (org-test-with-temp-text "* TODO COMMENT"
@@ -73,15 +73,15 @@
 	  (org-test-with-temp-text "* TODO"
 	    (org-toggle-comment)
 	    (buffer-string))))
-  ;; Headline with a keyword, a priority cookie and contents.
+  ;; Heading with a keyword, a priority cookie and contents.
   (should
-   (equal "* TODO [#A] Headline"
-	  (org-test-with-temp-text "* TODO [#A] COMMENT Headline"
+   (equal "* TODO [#A] Heading"
+	  (org-test-with-temp-text "* TODO [#A] COMMENT Heading"
 	    (org-toggle-comment)
 	    (buffer-string))))
   (should
-   (equal "* TODO [#A] COMMENT Headline"
-	  (org-test-with-temp-text "* TODO [#A] Headline"
+   (equal "* TODO [#A] COMMENT Heading"
+	  (org-test-with-temp-text "* TODO [#A] Heading"
 	    (org-toggle-comment)
 	    (buffer-string)))))
 
@@ -103,8 +103,8 @@
 	    (buffer-string))))
   ;; No region selected, and a comment on this line: indent it.
   (should
-   (equal "* Headline\n  # Comment"
-	  (org-test-with-temp-text "* Headline\n# <point>Comment"
+   (equal "* Heading\n  # Comment"
+	  (org-test-with-temp-text "* Heading\n# <point>Comment"
 	    (let ((org-adapt-indentation t))
 	      (call-interactively #'org-comment-dwim))
 	    (buffer-string))))
@@ -499,7 +499,7 @@
 	  (org-test-with-temp-text "\n* T\n"
 	    (let ((org-adapt-indentation nil)) (org-insert-property-drawer))
 	    (buffer-string))))
-  ;; Insert drawer right after headline if there is no planning line,
+  ;; Insert drawer right after heading if there is no planning line,
   ;; or after it otherwise.
   (should
    (equal "* H\n:PROPERTIES:\n:END:\nParagraph"
@@ -879,7 +879,7 @@
 
 (ert-deftest test-org/indent-line ()
   "Test `org-indent-line' specifications."
-  ;; Do not indent diary sexps, footnote definitions or headlines.
+  ;; Do not indent diary sexps, footnote definitions or headings.
   (should
    (zerop
     (org-test-with-temp-text "%%(org-calendar-holiday)"
@@ -895,13 +895,13 @@
     (org-test-with-temp-text "* H"
       (org-indent-line)
       (org-get-indentation))))
-  ;; Do not indent before first headline.
+  ;; Do not indent before first heading.
   (should
    (zerop
     (org-test-with-temp-text ""
       (org-indent-line)
       (org-get-indentation))))
-  ;; Indent according to headline level otherwise, unless
+  ;; Indent according to heading level otherwise, unless
   ;; `org-adapt-indentation' is nil.
   (should
    (= 2
@@ -1207,7 +1207,7 @@
 		    "foo<point> \n bar"
 		  (org-delete-indentation t)
 		  (buffer-string))))
-  ;; At headline text should be appended to the headline text.
+  ;; At heading text should be appended to the heading text.
   (should
    (equal"* foo bar :tag:"
 	 (let (org-auto-align-tags)
@@ -1247,7 +1247,7 @@
   (should
    (org-test-with-temp-text "Link [[target<point>]] <<target>>"
      (let ((org-return-follows-link t)
-	   (org-link-search-must-match-exact-headline nil))
+	   (org-link-search-must-match-exact-heading nil))
        (org-return))
      (looking-at-p "<<target>>")))
   (should-not
@@ -1261,13 +1261,13 @@
   (should
    (org-test-with-temp-text "Link [[target][/descipt<point>ion/]] <<target>>"
      (let ((org-return-follows-link t)
-	   (org-link-search-must-match-exact-headline nil))
+	   (org-link-search-must-match-exact-heading nil))
        (org-return))
      (looking-at-p "<<target>>")))
   (should-not
    (org-test-with-temp-text "Link [[target]]<point> <<target>>"
      (let ((org-return-follows-link t)
-	   (org-link-search-must-match-exact-headline nil))
+	   (org-link-search-must-match-exact-heading nil))
        (org-return))
      (looking-at-p "<<target>>")))
   ;; When `org-return-follows-link' is non-nil, tolerate links and
@@ -1275,7 +1275,7 @@
   (should
    (org-test-with-temp-text "# Comment [[target<point>]]\n <<target>>"
      (let ((org-return-follows-link t)
-	   (org-link-search-must-match-exact-headline nil))
+	   (org-link-search-must-match-exact-heading nil))
        (org-return))
      (looking-at-p "<<target>>")))
   (should-not
@@ -1285,7 +1285,7 @@
   (should-not
    (org-test-with-temp-text "# Comment [[target]]<point>\n <<target>>"
      (let ((org-return-follows-link t)
-	   (org-link-search-must-match-exact-headline nil))
+	   (org-link-search-must-match-exact-heading nil))
        (org-return))
      (looking-at-p "<<target>>")))
   ;; Non-nil `org-return-follows-link' ignores read-only state of
@@ -1293,7 +1293,7 @@
   (should
    (org-test-with-temp-text "Link [[target<point>]] <<target>>"
      (let ((org-return-follows-link t)
-	   (org-link-search-must-match-exact-headline nil))
+	   (org-link-search-must-match-exact-heading nil))
        (setq buffer-read-only t)
        (call-interactively #'org-return))
      (looking-at-p "<<target>>")))
@@ -1302,14 +1302,14 @@
    (org-test-with-temp-text
        "[[target][This is a very\n long description<point>]]\n <<target>>"
      (let ((org-return-follows-link t)
-	   (org-link-search-must-match-exact-headline nil))
+	   (org-link-search-must-match-exact-heading nil))
        (org-return))
      (looking-at-p "<<target>>")))
   (should-not
    (org-test-with-temp-text
        "[[target][This is a very\n long description]]<point>\n <<target>>"
      (let ((org-return-follows-link t)
-	   (org-link-search-must-match-exact-headline nil))
+	   (org-link-search-must-match-exact-heading nil))
        (org-return))
      (looking-at-p "<<target>>")))
   ;; However, do not open link when point is in a table.
@@ -1328,14 +1328,14 @@
 	  (org-test-with-temp-text "- A\n<point>- B"
 	    (org-return t)
 	    (buffer-string))))
-  ;; On tags part of a headline, add a newline below it instead of
+  ;; On tags part of a heading, add a newline below it instead of
   ;; breaking it.
   (should
    (equal "* H :tag:\n"
 	  (org-test-with-temp-text "* H :<point>tag:"
 	    (org-return)
 	    (buffer-string))))
-  ;; Before headline text, add a newline below it instead of breaking
+  ;; Before heading text, add a newline below it instead of breaking
   ;; it.
   (should
    (equal "* TODO H :tag:\n"
@@ -1352,20 +1352,20 @@
 	  (org-test-with-temp-text "* <point>Todo"
 	    (org-return)
 	    (buffer-string))))
-  ;; At headline text, break headline text but preserve tags.
+  ;; At heading text, break heading text but preserve tags.
   (should
    (equal "* TODO [#B] foo    :tag:\nbar"
 	  (let (org-auto-align-tags)
 	    (org-test-with-temp-text "* TODO [#B] foo<point>bar :tag:"
 	      (org-return)
 	      (buffer-string)))))
-  ;; At bol of headline insert newline.
+  ;; At bol of heading insert newline.
   (should
    (equal "\n* h"
 	  (org-test-with-temp-text "<point>* h"
 	    (org-return)
 	    (buffer-string))))
-  ;; Refuse to leave invalid headline in buffer.
+  ;; Refuse to leave invalid heading in buffer.
   (should
    (equal "* h\n"
 	  (org-test-with-temp-text "*<point> h"
@@ -1517,20 +1517,20 @@
 
 (ert-deftest test-org/insert-heading ()
   "Test `org-insert-heading' specifications."
-  ;; In an empty buffer, insert a new headline.
+  ;; In an empty buffer, insert a new heading.
   (should
    (equal "* "
 	  (org-test-with-temp-text ""
 	    (org-insert-heading)
 	    (buffer-string))))
-  ;; At the beginning of a line, turn it into a headline.
+  ;; At the beginning of a line, turn it into a heading.
   (should
    (equal "* P"
 	  (org-test-with-temp-text "<point>P"
 	    (org-insert-heading)
 	    (buffer-string))))
   ;; In the middle of a line, split the line if allowed, otherwise,
-  ;; insert the headline at its end.
+  ;; insert the heading at its end.
   (should
    (equal "Para\n* graph"
 	  (org-test-with-temp-text "Para<point>graph"
@@ -1543,23 +1543,23 @@
 	    (let ((org-M-RET-may-split-line '((default . nil))))
 	      (org-insert-heading))
 	    (buffer-string))))
-  ;; At the beginning of a headline, create one above.
+  ;; At the beginning of a heading, create one above.
   (should
    (equal "* \n* H"
 	  (org-test-with-temp-text "* H"
 	    (org-insert-heading)
 	    (buffer-string))))
-  ;; In the middle of a headline, split it if allowed.
+  ;; In the middle of a heading, split it if allowed.
   (should
    (equal "* H\n* 1"
 	  (org-test-with-temp-text "* H<point>1"
-	    (let ((org-M-RET-may-split-line '((headline . t))))
+	    (let ((org-M-RET-may-split-line '((heading . t))))
 	      (org-insert-heading))
 	    (buffer-string))))
   (should
    (equal "* H1\n* "
 	  (org-test-with-temp-text "* H<point>1"
-	    (let ((org-M-RET-may-split-line '((headline . nil))))
+	    (let ((org-M-RET-may-split-line '((heading . nil))))
 	      (org-insert-heading))
 	    (buffer-string))))
   ;; However, splitting cannot happen on TODO keywords, priorities or
@@ -1567,22 +1567,22 @@
   (should
    (equal "* TODO H1\n* "
 	  (org-test-with-temp-text "* TO<point>DO H1"
-	    (let ((org-M-RET-may-split-line '((headline . t))))
+	    (let ((org-M-RET-may-split-line '((heading . t))))
 	      (org-insert-heading))
 	    (buffer-string))))
   (should
    (equal "* [#A] H1\n* "
 	  (org-test-with-temp-text "* [#<point>A] H1"
-	    (let ((org-M-RET-may-split-line '((headline . t))))
+	    (let ((org-M-RET-may-split-line '((heading . t))))
 	      (org-insert-heading))
 	    (buffer-string))))
   (should
    (equal "* H1 :tag:\n* "
 	  (org-test-with-temp-text "* H1 :ta<point>g:"
-	    (let ((org-M-RET-may-split-line '((headline . t))))
+	    (let ((org-M-RET-may-split-line '((heading . t))))
 	      (org-insert-heading))
 	    (buffer-string))))
-  ;; New headline level depends on the level of the headline above.
+  ;; New heading level depends on the level of the heading above.
   (should
    (equal "** H\n** P"
 	  (org-test-with-temp-text "** H\n<point>P"
@@ -1599,7 +1599,7 @@
 	  (org-test-with-temp-text "** H"
 	    (org-insert-heading)
 	    (buffer-string))))
-  ;; When called with one universal argument, insert a new headline at
+  ;; When called with one universal argument, insert a new heading at
   ;; the end of the current subtree, independently on the position of
   ;; point.
   (should
@@ -1616,7 +1616,7 @@
       (let ((org-insert-heading-respect-content nil))
 	(org-insert-heading '(4)))
       (buffer-string))))
-  ;; When called with two universal arguments, insert a new headline
+  ;; When called with two universal arguments, insert a new heading
   ;; at the end of the grandparent subtree.
   (should
    (equal "* H1\n** H3\n- item\n** H2\n** "
@@ -1661,7 +1661,7 @@
 	    (let ((org-blank-before-new-entry '((heading . auto))))
 	      (org-insert-heading))
 	    (buffer-string))))
-  ;; Corner case: correctly insert a headline after an empty one.
+  ;; Corner case: correctly insert a heading after an empty one.
   (should
    (equal "* \n* "
 	  (org-test-with-temp-text "* <point>"
@@ -1671,7 +1671,7 @@
    (org-test-with-temp-text "* <point>\n"
      (org-insert-heading)
      (looking-at-p "\n\\'")))
-  ;; Do not insert spurious headlines when inserting a new headline.
+  ;; Do not insert spurious headings when inserting a new heading.
   (should
    (equal "* H1\n* H2\n* \n"
 	  (org-test-with-temp-text "* H1\n* H2<point>\n"
@@ -1686,7 +1686,7 @@
      (let ((org-blank-before-new-entry '((heading . nil))))
        (org-insert-heading '(4)))
      (invisible-p (line-end-position 0))))
-  ;; Properly handle empty lines when forcing a headline below current
+  ;; Properly handle empty lines when forcing a heading below current
   ;; one.
   (should
    (equal "* H1\n\n* H\n\n* "
@@ -1702,7 +1702,7 @@
    (org-test-with-temp-text "* H1\n Body"
      (org-insert-todo-heading-respect-content)
      (nth 2 (org-heading-components))))
-  ;; Add headline at the end of the first subtree
+  ;; Add heading at the end of the first subtree
   (should
    (equal
     "* TODO "
@@ -1860,7 +1860,7 @@
 	    (org-toggle-fixed-width)
 	    (buffer-string))))
   ;; No region: Toggle on marker in blank lines after elements or just
-  ;; after a headline.
+  ;; after a heading.
   (should
    (equal "* H\n: "
 	  (org-test-with-temp-text "* H\n"
@@ -1874,10 +1874,10 @@
 	    (org-toggle-fixed-width)
 	    (buffer-string))))
   ;; No region: Toggle on marker in front of one line elements (e.g.,
-  ;; headlines, clocks)
+  ;; headings, clocks)
   (should
-   (equal ": * Headline"
-	  (org-test-with-temp-text "* Headline"
+   (equal ": * Heading"
+	  (org-test-with-temp-text "* Heading"
 	    (org-toggle-fixed-width)
 	    (buffer-string))))
   (should
@@ -1962,7 +1962,7 @@
 	  (org-test-with-temp-text "a<point>bc\n123"
 	    (org-kill-line)
 	    (buffer-string))))
-  ;; When `org-special-ctrl-k' is non-nil and point is at a headline,
+  ;; When `org-special-ctrl-k' is non-nil and point is at a heading,
   ;; kill until tags.
   (should
    (equal "* A :tag:"
@@ -1980,7 +1980,7 @@
 	      (org-kill-line))
 	    (buffer-string))))
   ;; However, if point is at the beginning of the line, kill whole
-  ;; headline.
+  ;; heading.
   (should
    (equal ""
 	  (org-test-with-temp-text "* AB :tag:"
@@ -2007,7 +2007,7 @@
 
 
 \f
-;;; Headline
+;;; Heading
 
 (ert-deftest test-org/get-heading ()
   "Test `org-get-heading' specifications."
@@ -2087,7 +2087,7 @@
    (equal "TODO [#A] H"
 	  (org-test-with-temp-text "* TODO [#A] COMMENT H"
 	    (org-get-heading nil nil nil t))))
-  ;; On an empty headline, return value is consistent.
+  ;; On an empty heading, return value is consistent.
   (should (equal "" (org-test-with-temp-text "* " (org-get-heading))))
   (should (equal "" (org-test-with-temp-text "* " (org-get-heading t))))
   (should (equal "" (org-test-with-temp-text "* " (org-get-heading nil t))))
@@ -2097,52 +2097,52 @@
 
 (ert-deftest test-org/in-commented-heading-p ()
   "Test `org-in-commented-heading-p' specifications."
-  ;; Commented headline.
+  ;; Commented heading.
   (should
-   (org-test-with-temp-text "* COMMENT Headline\nBody"
+   (org-test-with-temp-text "* COMMENT Heading\nBody"
      (goto-char (point-max))
      (org-in-commented-heading-p)))
   ;; Commented ancestor.
   (should
-   (org-test-with-temp-text "* COMMENT Headline\n** Level 2\nBody"
+   (org-test-with-temp-text "* COMMENT Heading\n** Level 2\nBody"
      (goto-char (point-max))
      (org-in-commented-heading-p)))
   ;; Comment keyword is case-sensitive.
   (should-not
-   (org-test-with-temp-text "* Comment Headline\nBody"
+   (org-test-with-temp-text "* Comment Heading\nBody"
      (goto-char (point-max))
      (org-in-commented-heading-p)))
   ;; Keyword is standalone.
   (should-not
-   (org-test-with-temp-text "* COMMENTHeadline\nBody"
+   (org-test-with-temp-text "* COMMENTHeading\nBody"
      (goto-char (point-max))
      (org-in-commented-heading-p)))
   ;; Optional argument.
   (should-not
-   (org-test-with-temp-text "* COMMENT Headline\n** Level 2\nBody"
+   (org-test-with-temp-text "* COMMENT Heading\n** Level 2\nBody"
      (goto-char (point-max))
      (org-in-commented-heading-p t))))
 
 (ert-deftest test-org/in-archived-heading-p ()
   "Test `org-in-archived-heading-p' specifications."
-  ;; Archived headline.
+  ;; Archived heading.
   (should
-   (org-test-with-temp-text "* Headline :ARCHIVE:\nBody"
+   (org-test-with-temp-text "* Heading :ARCHIVE:\nBody"
      (goto-char (point-max))
      (org-in-archived-heading-p)))
   ;; Archived ancestor.
   (should
-   (org-test-with-temp-text "* Headline :ARCHIVE:\n** Level 2\nBody"
+   (org-test-with-temp-text "* Heading :ARCHIVE:\n** Level 2\nBody"
      (goto-char (point-max))
      (org-in-archived-heading-p)))
   ;; Optional argument.
   (should-not
-   (org-test-with-temp-text "* Headline :ARCHIVE:\n** Level 2\nBody"
+   (org-test-with-temp-text "* Heading :ARCHIVE:\n** Level 2\nBody"
      (goto-char (point-max))
      (org-in-archived-heading-p t)))
    ;; Archive tag containing ARCHIVE as substring
    (should-not
-    (org-test-with-temp-text "* Headline :NOARCHIVE:\n** Level 2\nBody"
+    (org-test-with-temp-text "* Heading :NOARCHIVE:\n** Level 2\nBody"
      (goto-char (point-max))
      (org-in-archived-heading-p))))
 
@@ -2192,16 +2192,16 @@
 
 (ert-deftest test-org/get-outline-path ()
   "Test `org-get-outline-path' specifications."
-  ;; Top-level headlines have no outline path.
+  ;; Top-level headings have no outline path.
   (should-not
    (org-test-with-temp-text "* H"
      (org-get-outline-path)))
-  ;; Otherwise, outline path is the path leading to the headline.
+  ;; Otherwise, outline path is the path leading to the heading.
   (should
    (equal '("H")
 	  (org-test-with-temp-text "* H\n** S<point>"
 	    (org-get-outline-path))))
-  ;; Find path even when point is not on a headline.
+  ;; Find path even when point is not on a heading.
   (should
    (equal '("H")
 	  (org-test-with-temp-text "* H\n** S\nText<point>"
@@ -2246,7 +2246,7 @@
 	    (org-get-outline-path nil t)
 	    (search-forward "S2")
 	    (org-get-outline-path nil t))))
-  ;; Do not choke on empty headlines.
+  ;; Do not choke on empty headings.
   (should
    (org-test-with-temp-text "* H\n** <point>"
      (org-get-outline-path)))
@@ -2381,44 +2381,44 @@ SCHEDULED: <2014-03-04 tue.>"
 	    (let (org-odd-levels-only)
 	      (org-map-entries #'point "yes&no"))))))
 
-(ert-deftest test-org/edit-headline ()
-  "Test `org-edit-headline' specifications."
+(ert-deftest test-org/edit-heading ()
+  "Test `org-edit-heading' specifications."
   (should
    (equal "* B"
 	  (org-test-with-temp-text "* A"
-	    (org-edit-headline "B")
+	    (org-edit-heading "B")
 	    (buffer-string))))
   ;; Handle empty headings.
   (should
    (equal "* "
 	  (org-test-with-temp-text "* A"
-	    (org-edit-headline "")
+	    (org-edit-heading "")
 	    (buffer-string))))
   (should
    (equal "* A"
 	  (org-test-with-temp-text "* "
-	    (org-edit-headline "A")
+	    (org-edit-heading "A")
 	    (buffer-string))))
   ;; Handle TODO keywords and priority cookies.
   (should
    (equal "* TODO B"
 	  (org-test-with-temp-text "* TODO A"
-	    (org-edit-headline "B")
+	    (org-edit-heading "B")
 	    (buffer-string))))
   (should
    (equal "* [#A] B"
 	  (org-test-with-temp-text "* [#A] A"
-	    (org-edit-headline "B")
+	    (org-edit-heading "B")
 	    (buffer-string))))
   (should
    (equal "* TODO [#A] B"
 	  (org-test-with-temp-text "* TODO [#A] A"
-	    (org-edit-headline "B")
+	    (org-edit-heading "B")
 	    (buffer-string))))
   ;; Handle tags.
   (equal "* B :tag:"
 	 (org-test-with-temp-text "* A :tag:"
-	   (let ((org-tags-column 4)) (org-edit-headline "B"))
+	   (let ((org-tags-column 4)) (org-edit-heading "B"))
 	   (buffer-string))))
 
 
@@ -2680,7 +2680,7 @@ SCHEDULED: <2014-03-04 tue.>"
 ;;;; Fuzzy Links
 
 ;; Fuzzy links [[text]] encompass links to a target (<<text>>), to
-;; a named element (#+name: text) and to headlines (* Text).
+;; a named element (#+name: text) and to headings (* Text).
 
 (ert-deftest test-org/fuzzy-links ()
   "Test fuzzy links specifications."
@@ -2688,37 +2688,37 @@ SCHEDULED: <2014-03-04 tue.>"
   (should
    (org-test-with-temp-text
        "#+NAME: Test\n|a|b|\n<<Test>>\n* Test\n<point>[[Test]]"
-     (let ((org-link-search-must-match-exact-headline nil)) (org-open-at-point))
+     (let ((org-link-search-must-match-exact-heading nil)) (org-open-at-point))
      (looking-at "<<Test>>")))
   ;; Then fuzzy link points to an element with a given name.
   (should
    (org-test-with-temp-text "Test\n#+NAME: Test\n|a|b|\n* Test\n<point>[[Test]]"
-     (let ((org-link-search-must-match-exact-headline nil)) (org-open-at-point))
+     (let ((org-link-search-must-match-exact-heading nil)) (org-open-at-point))
      (looking-at "#\\+NAME: Test")))
-  ;; A target still lead to a matching headline otherwise.
+  ;; A target still lead to a matching heading otherwise.
   (should
    (org-test-with-temp-text "* Head1\n* Head2\n*Head3\n<point>[[Head2]]"
-     (let ((org-link-search-must-match-exact-headline nil)) (org-open-at-point))
+     (let ((org-link-search-must-match-exact-heading nil)) (org-open-at-point))
      (looking-at "\\* Head2")))
   ;; With a leading star in link, enforce heading match.
   (should
    (org-test-with-temp-text "* Test\n<<Test>>\n<point>[[*Test]]"
-     (let ((org-link-search-must-match-exact-headline nil)) (org-open-at-point))
+     (let ((org-link-search-must-match-exact-heading nil)) (org-open-at-point))
      (looking-at "\\* Test")))
   ;; With a leading star in link, enforce exact heading match, even
-  ;; with `org-link-search-must-match-exact-headline' set to nil.
+  ;; with `org-link-search-must-match-exact-heading' set to nil.
   (should-error
    (org-test-with-temp-text "* Test 1\nFoo Bar\n<point>[[*Test]]"
-     (let ((org-link-search-must-match-exact-headline nil))
+     (let ((org-link-search-must-match-exact-heading nil))
        (org-open-at-point))))
-  ;; Handle non-nil `org-link-search-must-match-exact-headline'.
+  ;; Handle non-nil `org-link-search-must-match-exact-heading'.
   (should
    (org-test-with-temp-text "* Test\nFoo Bar\n<point>[[Test]]"
-     (let ((org-link-search-must-match-exact-headline t)) (org-open-at-point))
+     (let ((org-link-search-must-match-exact-heading t)) (org-open-at-point))
      (looking-at "\\* Test")))
   (should
    (org-test-with-temp-text "* Test\nFoo Bar\n<point>[[*Test]]"
-     (let ((org-link-search-must-match-exact-headline t)) (org-open-at-point))
+     (let ((org-link-search-must-match-exact-heading t)) (org-open-at-point))
      (looking-at "\\* Test")))
   ;; Heading match should not care about spaces, cookies, TODO
   ;; keywords, priorities, and tags.  However, TODO keywords are
@@ -2728,13 +2728,13 @@ SCHEDULED: <2014-03-04 tue.>"
 	  "** TODO [#A] [/]  Test [1/2] [33%] 1 \t  2 [%] :work:urgent: "))
      (org-test-with-temp-text
 	 (co