fork of org mode
Go to file
Tom Gillespie 04d2828ad9 org: Fix verbatim block fontification to end blocks on headlines
* lisp/org.el (org-fontify-meta-lines-and-blocks-1): Enhance regex
for finding the end of blocks (i.e., `beg-of-endline') to detect
headlines (i.e., (rx bol (one-or-more "*") space) so that fontification
matches the behavior of org mode (i.e., that headlines are healines,
even in vertabim).

This change aligns the behavior and the visual appearance of verbatim
blocks that contain headlines. When `font-lock-mode' is enabled this
change makes situations like those in (info "(org) Literal Examples")
literally jump off the page.

Overview of new fontification

Source                | fontification before | fontification after  |
\#+BEGIN_EXAMPLE      | org-block-begin-line | org-block-begin-line |
I look verbatim!      | org-block            | org-block            |
* Org headers in      | org-block            | org-level-1          |
verbatim blocks       | org-block            | nil                  |
** highly accordingly | org-block            | org-level-2          |
\#+END_EXAMPLE        | org-block-end-line   | org-meta-line        |

This commit also makes some improvements to the reability of
org-fontify-meta-lines-and-blocks-1.

1. Use the `rx' macro for better readability. Note that the strings
below return with literal tabs when using `rx'. Expansion included for
reference here.

Begin regex.
old: "^\\([ \t]*#\\(\\(\\+[a-zA-Z]+:?\\| \\|$\\)\\(_\\([a-zA-Z]+\\)\\)?\\)[ \t]*\\(\\([^ \t\n]*\\)[ \t]*\\(.*\\)\\)\\)"
new: "^\\([[:blank:]]*#\\(\\(\\+[A-Za-z]+:?\\|[[:space:]]\\|$\\)\\(_\\([A-Za-z]+\\)\\)?\\)[[:blank:]]*\\(\\([^	\n ]*\\)[[:blank:]]*\\(.*\\)\\)\\)"

End regex. Note match-string call is stringified for documentation here.
old:                        (concat "^[ \t]*#\\+end" (match-string 4) "\\>.*")
new: "\\(?:\\(^\\(?:\\*+[[:space:]]\\|[[:blank:]]*#\\+end(match-string 4)\\>.*\\)\\)\\)"

Caption regex:
old: "\\([ \t]*#\\+caption\\(?:\\[.*\\]\\)?:\\)[ \t]*"
new: "\\([[:blank:]]*#\\+caption\\(?:\\[.*]\\)?:\\)[[:blank:]]*"

2. Refactor fontification of #+end blocks for readability and to reduce
the number of calls to point-max to one per branch.

TINYCHANGE
2019-12-19 14:07:33 +01:00
contrib org-screen.el: Replace obsolete function 2019-12-16 23:01:37 -05:00
doc org-manual: Fix typo 2019-12-17 10:33:41 +01:00
etc Backport commit b0f20651e from Emacs 2019-12-11 21:22:50 -05:00
lisp org: Fix verbatim block fontification to end blocks on headlines 2019-12-19 14:07:33 +01:00
mk server.mk: Add orgguide to ELPA package 2019-12-15 22:38:25 -05:00
testing org-clock: Fix locale issues in tests 2019-11-24 17:27:53 +01:00
.dir-locals.el Remove non-existing variable in .dir-locals 2019-02-14 00:05:00 +01:00
.gitignore Ignore orgguide spawns 2019-03-19 02:25:18 +01:00
.gitmodules updated jump submodule for those behind http proxy 2013-06-06 14:36:24 -06:00
COPYING Add COPYING and fix other related issues. 2012-09-24 19:15:42 +02:00
Makefile Use https for links to orgmode.org 2018-01-19 18:14:58 +01:00
README Fix typos in README 2018-01-14 17:46:14 +01:00
README_ELPA Use https for links to orgmode.org 2018-01-19 18:14:58 +01:00
README_contribute README_contribute: don't mention repo.or.cz mirror 2018-02-27 08:36:13 +01:00
README_git Use https for links to orgmode.org 2018-01-19 18:14:58 +01:00
README_maintainer Fix typos 2019-11-16 17:17:36 -05:00
request-assign-future.txt request-assign-future.txt: Use "Emacs" instead of "Org-mode, which is part of Emacs" 2014-02-07 09:24:52 +01:00

README

This is a distribution of Org, a plain text notes and project planning
tool for Emacs.

The homepage of Org is at:
  https://orgmode.org

The installations instructions are at:
  https://orgmode.org/org.html#Installation

This distribution contains:

README
    This file.

COPYING
    The GNU General Public License.

Makefile
    The makefile to compile and install Org.  For installation
    instructions, see the manual or the more detailed procedure
    on Worg: https://orgmode.org/worg/dev/org-build-system.html

mk/
    Files needed for building Org.

lisp/
    Directory with all the Emacs Lisp files that make up Org.

doc/
    The documentation files.  org.texi is the source of the
    documentation, org.html and org.pdf are formatted versions of it.

contrib/
    A directory with third-party additions for Org.  Some really cool
    stuff is in there.

etc/
    Files needed for the ODT exporter.

testing/
    Testing suite for Org.

request-assign-future.txt
    The form that contributors have to sign and get processed with
    the FSF before contributed changes can be integrated into the Org
    core.  All files in this distribution except the contrib/ directory
    have copyright assigned to the FSF.