diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 5a94e737e..a60248589 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -40,6 +40,105 @@ The cache state is saved between Emacs sessions. Enabled by default. The cache persistence can be controlled via ~org-element-cache-persistent~. +*** Users experiencing performance issues can use new folding backend + +The old folding backend used in Org is poorly scalable when the file +size increases beyond few Mbs. The symptoms usually include slow +cursor motion, especially in long-running Emacs sessions. + +A new optimised folding backend is now available, and enabled by +default. To disable it, put the following to the Emacs config *before* +loading Org: + +#+begin_src emacs-lisp +(setq org-fold-core-style 'overlays) +#+end_src + +Even more performance optimisation can be enabled by customising +=org-fold-core--optimise-for-huge-buffers=. However, this option may +be dangerous. Please, read the variable docstring carefully to +understand the possible consequences. + +When =org-fold-core-style= is set to =text-properties=, several new +features will become available and several notable changes will happen +to the Org behaviour. The new features and changes are listed below. + +**** Hidden parts of the links can now be searched and revealed during isearch + +In the past, hidden parts of the links could not be searched using +isearch (=C-s=). Now, they are searchable by default. The hidden +match is also revealed temporarily during isearch. + +To restore the old behaviour add the following core to your Emacs +config: + +#+begin_src emacs-lisp +(defun org-hidden-link-ignore-isearch () + "Do not match hidden parts of links during isearch." + (org-fold-core-set-folding-spec-property 'org-link :isearch-open nil) + (org-fold-core-set-folding-spec-property 'org-link :isearch-ignore t)) +(add-hook 'org-mode-hook #'org-hidden-link-ignore-isearch) +#+end_src + +See docstring of =org-fold-core--specs= to see more details about +=:isearch-open= and =:isearch-ignore= properties. + +**** =org-catch-invisible-edits= now works for hidden parts of the links and for emphasis markers + +In the past, user could edit invisible parts of the links and emphasis markers. Now, the editing is respecting the value of =org-catch-invisible-edits=. + +Note that hidden parts of sub-/super-scripts are still not handled. + +**** Breaking structure of folded elements automatically reveals the folded text + +In the past, the user could be left with unfoldable text after breaking the org structure. + +For example, if + +#+begin_src org +:DRAWER: +like this +:END: +#+end_src + +is folded and then edited into + +#+begin_src org +DRAWER: +like this +:END: +#+end_src +The hidden text would not be revealed. + +Now, breaking structure of drawers, blocks, and headings automatically +reveals the folded text. + +**** Folding state of the drawers is now preserved when cycling headline visibility + +In the past drawers were folded every time a headline is unfolded. + +Now, it is not the case anymore. The drawer folding state is +preserved. The initial folding state of all the drawers in buffer is +set according to the startup visibility settings. + +To restore the old behaviour, add the following code to Emacs config: + +#+begin_src emacs-lisp +(add-hook 'org-cycle-hook #'org-cycle-hide-drawers) +#+end_src + +Note that old behaviour may cause performance issues when cycling +headline visibility in large buffers. + +**** =outline-*= functions may no longer work correctly in Org mode + +The new folding backend breaks some of the =outline-*= functions that +rely on the details of visibility state implementation in +=outline.el=. The old Org folding backend was compatible with the +=outline.el= folding, but it is not the case anymore with the new +backend. From now on, using =outline-*= functions is strongly +discouraged when working with Org files. + ** New features *** New library =org-persist.el= implements variable persistence across Emacs sessions @@ -98,6 +197,11 @@ argument. ~org-get-tags~ now accepts Org element or buffer position as first argument. +*** =org-at-heading-p= now recognises optional argument. Its meaning is inverted. + +=org-at-heading-p= now returns t by default on headings inside folds. +Passing optional argument will produce the old behaviour. + ** Miscellaneous *** Styles are customizable in ~biblatex~ citation processor