Commit Graph

25278 Commits

Author SHA1 Message Date
Stefan Kangas 13d97ee18c
Prefer "website" to "homepage"
Emacs now advises using "website" (instead of "homepage") and
consequently to use the "URL" comment header instead of "Homepage".

* README:
* README_ELPA:
* doc/org-guide.org (Creating Footnotes):
* doc/org-manual.org (Creating Footnotes):
* etc/styles/README (URL): Prefer "website" to "homepage".

* lisp/*.el:
* mk/org-fixup.el: Replace the "Homepage" header comment with "URL".
2022-06-26 10:10:48 +08:00
Ihor Radchenko 197d500607
org-element-cache: Setup before/after-change-functions in indirect buffers
* lisp/org-element.el (org-element--cache-setup-change-functions): New
function setting up `org-element--cache-before-change' and
`org-element--cache-after-change'.
(org-element-cache-reset): Setup before/after-change-functions inside
indirect buffers.
2022-06-25 16:10:22 +08:00
Ihor Radchenko 620fb24050
org-keys: Do not rely on deprecated boolean value of `window-system'
* lisp/org-keys.el: Do not rely on boolean value of `window-system'.
Such usage is deprecated.  Use `display-graphic-p' instead.
2022-06-25 16:05:16 +08:00
Stefan Kangas db3870bfc0
Avoid treating a number as an enum in manual
* doc/org-manual.org (The Agenda Dispatcher): Avoid treating
number as enum.  The previous formatting contained "1." list at
the beginning of line.
2022-06-25 13:43:06 +08:00
Ihor Radchenko bcfed0f341
org-cycle.el: New custom setting `org-cycle-hide-drawer-startup'
* lisp/org-cycle.el (org-cycle-hide-drawer-startup):
* lisp/org-cycle.el (org-cycle-set-startup-visibility): Add new
customization to control initial folding state of the drawers.
* lisp/org.el (org-startup-options): Provide #+STARTUP option for the
new setting.

Fixes https://list.orgmode.org/m235gww8wg.fsf@ntnu.no/T/#u
2022-06-25 13:17:45 +08:00
Robert Pluim 2b1b428918
org.el (org-read-date): Point to Info documentation
* lisp/org.el (org-read-date): Add reference to Info documentation,
mainly because that describes all the available calendar navigation
commands.
2022-06-23 21:27:21 +08:00
Ihor Radchenko dbcc2e04f9
Merge branch 'bugfix' 2022-06-23 21:21:19 +08:00
David Lukes 0dc27a8837
oc-basic.el: Stringify year from CSL-JSON date-parts
* lisp/oc-basic.el (org-cite-basic--parse-json): Make sure year
extracted from date-parts is returned as string.  Raise error if
original type other than number or string.

The stringifiation is motivated by errors like the following on Emacs 28
with nativecomp:

Error during redisplay: (jit-lock-function 544) signaled
(wrong-type-argument "Argument is not a string or a secondary string:
2007")

Additionally, the type check will warn users about problems in their
CSL-JSON bibliographies.

Fixes https://list.orgmode.org/875ykv4k2q.fsf@localhost/T/#t

TINYCHANGE
2022-06-23 21:20:53 +08:00
Ihor Radchenko 7c61a3a801
org-unfontify-region: Handle invisible parts of links
* lisp/org.el (org-unfontify-region): Reveal folded parts of links.

Fixes https://orgmode.org/list/m2wndakbk0.fsf@ntnu.no
2022-06-21 20:26:22 +08:00
Stefan Kangas e7e37c5b26 org-agenda.el: Improve docstrings of agenda date navigation commands
* lisp/org-agenda.el (org-agenda-goto-date)
(org-agenda-goto-today, org-agenda-later, org-agenda-earlier):
Improve documentation and add crossreferences.
2022-06-21 08:03:53 +03:00
Daniel Fleischer 4a0d951c64 ox-latex tabbing environment support
* lisp/ox-latex.el: New `org-latex--align-string-tabbing',
`org-table--org-tabbing' functions.  Modified `org-latex-table-cell' to
use optional tabbing delimiters.

* etc/ORG-NEWS: support in ox-latex for tabbing environment.

* doc/org-manual.org: mention support for new environment.

Created-by: Bob Vergauwen <emacs@vergauwen.me>
2022-06-21 07:34:21 +03:00
Ihor Radchenko f77800c68b
org-persist: Avoid overwriting / re-reading unchanged persisted data
* lisp/org-persist.el (org-persist--read-cache):
(org-persist--write-cache): New variables holding previously written /
read data.
(org-persist-read): Avoid re-reading data from FS when the writing has
been performed in the same Emacs session.
(org-persist-write): Do not overwrite unchanged data.
2022-06-21 09:46:59 +08:00
Ihor Radchenko d687aa1786
org-persist: Display read errors in echo area
* lisp/org-persist.el (org-persist--read-elisp-file): Do not silently
ignore "Invalid read syntax" error.  Report it via message.  Yet
making the error less intrusive compared to `warn'.
2022-06-21 09:46:58 +08:00
Ihor Radchenko 1c54d75cca
org-persist--gc-expired-p: Fix expiry check
* lisp/org-persist.el (org-persist--gc-expired-p): Fix comparison when
expiry date is set to number of days.  The old code flipped the check
and treated all the recent entries as expired.
2022-06-21 09:46:57 +08:00
Kyle Meyer 4f454b18e4 Merge branch 'bugfix' 2022-06-19 16:32:55 -04:00
Stefan Kangas 02a22d6fad Backport commit 9a4862a97 from Emacs
doc/misc/org.org: Remove spurious markup.
9a4862a9738c2abab8fb4fb2e4e57b69dea679d7
Stefan Kangas
Wed Jun 8 13:16:32 2022 +0200
2022-06-19 16:29:01 -04:00
Stefan Kangas 45174d62b9
Remove XEmacs and ancient Emacs compat code
* lisp/org-colview.el (org-columns-remove-overlays):
* lisp/org-ctags.el (org-ctags-find-tag-interactive):
* lisp/org-macs.el (org-fit-window-to-buffer):
* lisp/org-mouse.el (org-mouse-show-context-menu):
* lisp/org-table.el (org-table-fedit-lisp-indent):
* lisp/org.el (org-version, org-reload):
* lisp/ox-html.el (org-html-template, org-html--build-meta-info):
Remove Emacs 21 and 22 compat code.

* lisp/ol-eww.el (org-eww-copy-for-org-mode):
* lisp/ol-w3m.el (org-w3m-copy-for-org-mode):
* lisp/org-clock.el (org-clock-select-task):
* lisp/org-macs.el (org-fit-window-to-buffer):
* lisp/org-refile.el (org-refile):
* lisp/org.el (org-change-tag-in-region): Remove XEmacs compat code.

* lisp/org-goto.el (org-goto--set-map):
* lisp/org-macs.el (org-fit-window-to-buffer):
* lisp/org-table.el (orgtbl-mode):
* lisp/org.el (org-setup-filling): Remove XEmacs or Emacs 19 or 20
compat code.  (It is one of these; not clear which.)
2022-06-18 15:43:30 +08:00
Ihor Radchenko 9632401dc6
Auto-Upcase/downcase #+begin/#+end in structure templates
* lisp/org-tempo.el (org-tempo-add-block):
* lisp/org.el (org-insert-structure-template): When inserting
 #+begin_type/#+end_type, follow type's case.  TYPE will become
 #+BEGIN_TYPE and type will become #+bein_type.

(org-insert-structure-template): Make sure that we use
case-insensitive match even when user changes case-fold-search value.

(org-structure-template-alist): Clarify selection of #+BEGIN/END
vs. #+begin/end in the docstring.

* etc/ORG-NEWS (Structure templates now respect case used in
~org-structure-template-alist~): Document the change.
2022-06-18 14:25:53 +08:00
Ihor Radchenko 65e19a0812
org-table.el: Fix orgtbl-mode not remapping delete key
* lisp/org-table.el (orgtbl-setup): Remap `delete-forward-char' in
addition to `delete-char'.  The former is called in Emacs >26.

Partially fixes
https://orgmode.org/list/1AD1B9B7-5A15-4F86-9274-B04B83694C85@misasa.okayama-u.ac.jp
2022-06-18 14:18:00 +08:00
Allen Li bfd63cc4f2
org: Improve org-todo handling of negative prefix args
* lisp/org.el (org-todo): Handle -1 prefix args consistently and error
on other negative args.
2022-06-18 14:07:11 +08:00
Sébastien Miquel 9fb9a2bdfb
org.el (org-format-latex-header): Put DEFAULT-PACKAGES before PACKAGES
* lisp/org.el (org-format-latex-header): Put DEFAULT-PACKAGES before
PACKAGES, as per org-latex-packages-alist's documentation.

`org-format-latex-header' is mostly used to generate in-buffer images
from LaTeX fragments.  For LaTeX document export, the header is
generated by `org-splice-latex-header' ond `org-latex-classes' instead
and the default and documented behaviour is to insert DEFAULT-PACKAGES
before PACKAGES.

See also
https://list.orgmode.org/877d5gg5rt.fsf@localhost/T/#m2ad2f3b1509e1af72016e8e6fad3557ff3083046
2022-06-18 12:46:53 +08:00
Ihor Radchenko 811deae32d
Revert "org-export-data: Concatenate strings in temporary buffer for performance"
This reverts commit a158b263a6.
The commit actually makes not measurable performance difference.
2022-06-17 19:32:44 +08:00
Ihor Radchenko 9b00f4bf1d
org-persist: Fix expiry check
* lisp/org-persist.el (org-persist--gc-expired-p): Fix incorrect plist
key.
2022-06-17 19:23:28 +08:00
Ihor Radchenko 41b7410a8c
doc/Makefile: Limit memory consumption when generating docs
* doc/Makefile: Do not disable garbage collection completely (as it
was after 3684c7967) when generating docs.  Use no too large 50Mb
`gc-cons-threshold' instead.

See
https://yhetil.org/emacs-devel/9778F176-E724-4E61-B0FB-327BCDD316C0@acm.org
for the testing behind the 50Mb constant.
2022-06-17 13:18:39 +08:00
Robert Pluim e9da29b6fa
Escape single left quotes in docstrings
* lisp/ob-core.el (org-babel-default-header-args):
* lisp/ob-julia.el (org-babel-julia-evaluate-external-process):
(org-babel-julia-evaluate-session):
* lisp/ob-lua.el (org-babel-lua-read-string):
* lisp/ob-table.el (org-sbe):
* lisp/oc-basic.el (org-cite-basic--shorten-names):
* lisp/org-agenda.el (org-agenda-sorting-strategy):
(org-agenda--mark-blocked-entry):
(org-agenda-set-restriction-lock):
* lisp/org-fold-core.el (org-fold-core--specs):
(org-fold-core-remove-folding-spec):
(org-fold-core-get-folding-spec):
(org-fold-core--isearch-overlays):
* lisp/org-plot.el (org--plot/prime-factors):
* lisp/org-table.el (org-table-collapse-header):
* lisp/org.el (org-special-ctrl-o):
(org-latex-to-html-convert-command):
* lisp/ox-html.el (org-html--unlabel-latex-environment):
* lisp/ox-publish.el (org-publish-find-property):
Use \\=' when there's a need for a single left quote in a docstring.

The emacs-29 byte compiler complains about such usage.
2022-06-16 20:51:02 +08:00
Ihor Radchenko 65e92c4383
doc/org-manual.org: Fix un-escaped macro
* doc/org-manual.org (Key bindings in Texinfo export): Escape macro
definition inside example block.
2022-06-16 20:26:32 +08:00
Ihor Radchenko 0cc4f492fe
org-manual: Fix example block with unsupported language name parameter
* doc/org-manual.org (Breaking Down Tasks into Subtasks): Remove
unsupported LANG parameter from #+begin_example LANG.
2022-06-16 20:24:36 +08:00
Ihor Radchenko 707d3a093b
org-cycle-list-bullet: Preserve relative point position
* lisp/org-list.el (org-cycle-list-bullet): Keep point position
relative to bullet beginning/end when changing the list bullet.

* testing/lisp/test-org-list.el (test-org-list/cycle-bullet): Add
tests.

Fixes https://orgmode.org/list/m2wndjfi32.fsf@gmail.com
2022-06-16 20:08:49 +08:00
Ihor Radchenko 3bbbf77f36
org-babel-exp-process-buffer: Improve performance
* lisp/ob-exp.el (org-babel-exp-src-block): New optional argument
providing ELEMENT at point.
(org-babel-exp-code-template): Use lower-case #+begin/#+end lines to
avoid triggering source code block changes when the blocks are
exported with :exports code and also contain lower-case
 #+begin/#+end.  We prefer lower-case default because other parts of
 Org, like `org-insert-structure-template' default to lower-case as
 well.
(org-babel-exp-process-buffer): Do no disable cache as changes are not
expected to be as frequent anymore.  Pass pre-calculated element at
point to inner function calls to `org-in-commented-heading-p',
`org-in-archived-heading-p', `org-element-context', and
`org-babel-exp-src-block'.  Do not force-replace source block contents
when no change is required.
* testing/lisp/test-ob-exp.el (ob-export/export-with-results-before-block):
(ob-export/body-with-coderef):
(ob-exp/src-block-with-affiliated-keyword): Update tests according to
the new `org-babel-exp-code-template'.
2022-06-16 13:21:39 +08:00
Ihor Radchenko 8f59e8d93f
Fix native-comp warnings
* lisp/org-fold.el (org-fold-show-set-visibility--text-properties):
Resolve unused variable warning.

* lisp/ob-core.el (org-attach-dir):
* lisp/ob-latex.el (org-at-heading-p):
(org-back-to-heading):
(org-next-visible-heading):
* lisp/org.el (org-agenda-todo-yesterday):
* lisp/ox-ascii.el (org-at-heading-p):
(org-back-to-heading):
(org-next-visible-heading):
* lisp/ox-html.el (org-at-heading-p):
(org-back-to-heading):
(org-next-visible-heading):
* lisp/ox-icalendar.el (org-at-heading-p):
(org-back-to-heading):
(org-next-visible-heading):
* lisp/ox-latex.el (engrave-faces-latex-gen-preamble-line):
(engrave-faces-get-theme):
(engrave-faces-latex-output-style):
(engrave-faces-current-preset-style):
(engrave-faces-latex-mathescape):
* lisp/ox-odt.el (org-at-heading-p):
(org-back-to-heading):
(org-next-visible-heading):
* lisp/ox-publish.el (org-at-heading-p):
(org-back-to-heading):
(org-next-visible-heading):
* lisp/ox.el (org-at-heading-p):
(org-back-to-heading):
(org-next-visible-heading): Add declarations.
2022-06-16 13:19:10 +08:00
Ihor Radchenko e273fa96e5
Fix function declarations
* lisp/org-macro.el (org-file-contents):
* lisp/ob-exp.el (org-in-commented-heading-p):
(org-in-archived-heading-p): Add missing argument to function
declarations.
2022-06-16 12:35:52 +08:00
Ihor Radchenko b061e7b61c
org-cite-list-citations: Cache footnote-definition searches
* lisp/oc.el (org-cite-list-citations): Avoid quadratic complexity.
Pre-calculate list of all footnote definitions and cache the footnote
label search hits.  Do not make `org-element-map' accumulate unused
result.
2022-06-16 10:43:29 +08:00
Ihor Radchenko 37a447ae08
org-element-map: Avoid repetitive `plist-get' call
* lisp/org-element.el (org-element-map): Do not call `(plist-get info
:ignore-list)' on every iteration.
2022-06-16 09:28:27 +08:00
Ihor Radchenko a158b263a6
org-export-data: Concatenate strings in temporary buffer for performance
* lisp/ox.el (org-export-data): Use temporary buffer to collect export
data instead of `mapconcat'.  Using buffer puts less load on garbage
collector.
2022-06-16 08:32:25 +08:00
Ihor Radchenko 3684c79672
doc/Makefile: Disable GC during export
* doc/Makefile (org.texi):
(orgguide.texi): Set `gc-cons-threshold` to `most-positive=fixnum' and
thus disable garbage collection while exporting manuals.  This reduces
the manual generation time.
2022-06-16 08:32:24 +08:00
Ihor Radchenko 076dd92acc
org-export-as: Do not update buffer settings when not modified
* lisp/ox.el (org-export-as): Use `buffer-chars-modified-tick' and
avoid extra invocations of `org-set-regexps-and-options' and
`org-update-radio-target-regexp' when the buffer is not changed.
Also, disable folding checks.  Folding is irrelevant inside export
buffer.
2022-06-16 08:32:20 +08:00
Ignacio Casso aa789b89d7
Do not mark buffer as modified with org-preserve-local-variables
* lisp/org-macs.el (org-preserve-local-variables): Do not mark buffer
as modified or alter `buffer-undo-list' when body does not actually
modify the buffer.

This commit fixes a bug with `org-copy-subtree', which marked the
buffer as modified and added an entry to the undo list when the visited
file had local variables.
2022-06-14 22:02:10 +08:00
Ignacio Casso f9ea6c61ed
Use `set-default-toplevel-value' in `defcustom' setters
* lisp/ob-lilypond.el (org-babel-lilypond-commands):
* lisp/ob-shell.el (org-babel-shell-names):
* lisp/org-capture.el (org-capture-templates):
* lisp/org-clock.el (org-clock-ask-before-exiting):
* lisp/org-duration.el (org-duration-units):
* lisp/org-faces.el (org-set-tag-faces):
* lisp/org-footnote.el (org-footnote-section):
* lisp/org-list.el (org-plain-list-ordered-item-terminator):
(org-list-allow-alphabetical):
* lisp/org.el (org-babel-do-load-languages):
(org-set-modules):
(org-export-backends):
(org-use-fast-todo-selection):
(org-enforce-todo-dependencies):
(org-enforce-todo-checkbox-dependencies):
(org-display-custom-times):
(org-set-packages-alist):
(org-set-emph-re):
* lisp/ox-odt.el (org-odt-schema-dir): Use
`set-default-toplevel-value' instead of `set' or `set-default' in
`defcustom' :set argument.

This commit fixes a bug that occurred when using an autoload function
inside a let-binding for a custom variable when the feature defining
both the function and the custom variable had not been loaded yet.

See bug#54399 and
https://lists.gnu.org/archive/html/emacs-orgmode/2022-03/msg00085.html,
https://lists.gnu.org/archive/html/emacs-orgmode/2022-06/msg00226.html
2022-06-14 21:54:45 +08:00
Ryan Scott 226119124d
ob-core.el/babel: Special handling for attachment links in src block
* ob-core.el (org-babel-merge-params): Specifying the symbol 'attach`
or string "'attach" as the value of the `:dir' header now functions as
":dir (org-attach-dir nil t) :mkdirp t".
(org-babel-result-to-file): Optional TYPE argument accepts symbol
'attachment to fixup up paths under `(org-attach-dir)' and use the
link type "attachment:" when that is detected.
(org-babel-insert-result): Pass symbol `attachment' as TYPE to
`org-babel-result-to-file'.
* org-attach.el (org-attach-dir): Added autoload header to simplify
dependencies necessary to support this feature (called in
`org-babel-merge-params').
* test-ob.el (test-ob-core/dir-attach): Added unit test for the new
attach feature.
2022-06-14 21:44:25 +08:00
Robert Pluim 3baac35b55 Don't quote symbols in defcustom types
* lisp/org-fold-core.el (org-fold-core-style):
* lisp/org-persist.el (org-persist-remote-files):
(org-persist-default-expiry):
Don't quote the symbol given as value for a const.
2022-06-14 16:05:17 +03:00
Ihor Radchenko 0cdbc63a0b
org-mode: Do not re-bind `bidi-paragraph-direction'
* lisp/org.el (org-mode): Remove the old performance workaround for
right-to-left text in Org buffers.  With newer Emacs settings, it is
the 'left-to-right value of `bidi-paragraph-direction' that causes the
slowdown; not the vice versa.

Old discussion on overriding the defaults:
https://lists.gnu.org/archive/html/emacs-devel/2011-09/msg00285.html
The new discussion with example file demonstrating the performance
problem:
https://orgmode.org/list/87a6iqo7x8.fsf@localhost
2022-06-14 13:16:15 +08:00
TEC ae168d5c8c
org-lint: don't complain about #+include URL
* lisp/org-lint.el (org-lint-wrong-include-link-parameter): When the
included file is a URL, skip the usual file checks.
2022-06-12 18:02:25 +08:00
TEC e3bf83fe82
ox: Support #+include-ing URLs
* lisp/ox.el (org-export--prepare-file-contents,
org-export--inclusion-absolute-lines): Replace instances of
`(insert-file-contents FILE)' with `(insert (org-file-contents FILE))',
as in `org--collect-keywords-1'.
(org-export-expand-include-keyword): Tweak to accept a URL as FILE, and
not perform the standard "file exists and is readable" check.

* etc/ORG-NEWS: Mention this change in behaviour.
2022-06-12 18:02:25 +08:00
Ihor Radchenko f5c9ce8f06
org-babel-exp-process-buffer: Disable edit control while processing
* lisp/ob-exp.el (org-babel-exp-process-buffer): Do not track buffer
changes in element cache and org-fold after-change hooks while
updating src blocks.  `org-babel-exp-process-buffer' makes a large
number of changes, which would overload the element cache and degrade
performance.
2022-06-12 14:11:11 +08:00
Ihor Radchenko 84c89ea7cb
org-export-resolve-id-link: Pre-cache all the ids in the parse tree
* lisp/ox.el (org-export-resolve-id-link): Pre-cache all the ids in
the parse tree for faster lookup.
2022-06-12 13:32:35 +08:00
Ihor Radchenko 792cd4b0a6
org-export-resolve-fuzyy-link: Pre-cache all possible search cells
* lisp/ox.el (org-export-resolve-fuzzy-link): Before matching LINK,
pre-process and cache all the non-nil search cells in the parse tree.
When matching, use the pre-processed info.  Fix the :test function for
the cache hash table.
2022-06-12 13:06:47 +08:00
Ihor Radchenko f51c286716
org-export-get-footnote-definition: Pre-cache references in parse tree
* lisp/ox.el (org-export-get-footnote-definition): Pre-process parse
tree once to filter out all non-footnote elements.  This speeds up
subsequent footnote definition searches.
2022-06-12 13:05:16 +08:00
Ihor Radchenko 147ca39750
org-in-commented-heading-p: Do not parse section unless already cached
* lisp/org.el (org-in-commented-heading-p): When element at point is
not yet in cache, parse the parent headline instead of also parsing
section up to point.
2022-06-12 13:04:25 +08:00
Ihor Radchenko 2f8e688516
org-back-to-heading-or-point-min: Rely less on cache
* lisp/org.el (org-before-first-heading-p): Do not try to parse the
whole section when there is no cached element at point.
2022-06-12 13:03:30 +08:00
Ihor Radchenko 8a0b03fb3b
org-element-headline-parser: Fix headings like * COMMENTnospace
* lisp/org-element.el (org-element-headline-parser): Do not parse
headings like * COMMENTnospace as commented.
2022-06-12 13:02:39 +08:00