ORG-NEWS (329136B)
1 ORG NEWS -- history of user-visible changes. -*- mode: org; coding: utf-8 -*- 2 3 #+STARTUP: overview 4 5 #+LINK: doc https://orgmode.org/worg/doc.html#%s 6 #+LINK: msg https://list.orgmode.org/%s/ 7 #+LINK: git https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=%s 8 9 Copyright (C) 2012-2024 Free Software Foundation, Inc. 10 See the end of the file for license conditions. 11 12 Please send Org bug reports to mailto:emacs-orgmode@gnu.org. 13 14 * Version 9.7 15 16 ** Important announcements and breaking changes 17 18 # Here, we list the *most important* changes and changes that _likely_ 19 # require user action for most Org mode users. 20 # Sorted from most important to least important. 21 *** Arbitrary shell commands may no longer run when turning on Org mode 22 23 This is for security reasons, to avoid running malicious commands. 24 25 *** =python-mode.el (MELPA)= support in =ob-python.el= is removed 26 27 =python-mode.el= support has been removed from =ob-python.el=. The 28 related customization =org-babel-python-mode= has been changed to a 29 constant. 30 31 If you still want to use python-mode with ob-python, you might 32 consider [[https://gitlab.com/jackkamm/ob-python-mode-mode][ob-python-mode-mode]], where the code to support python-mode 33 has been ported to. 34 *** It is no longer possible to reveal hidden parts of the links during isearch 35 36 Org 9.6 introduced support for searching hidden parts of the links. 37 38 Unfortunately, we had to drop this support because its implementation 39 turned out to be unreliable for many users. Proper implementation 40 would require patching =isearch.el= and possibly a number of external 41 libraries implementing isearch equivalents. It cannot be done on Org 42 side alone. 43 44 *** =ox-latex=: ~org-latex-line-break-safe~ is deprecated 45 46 ~org-latex-line-break-safe~ constant was previously introduced to deal 47 with edge cases when LaTeX interprets [...] as LaTeX command 48 argument. However, it caused a number of other issues and proved 49 itself not to be as "safe" as it supposed to be. 50 51 We now use a Pandoc's approach to deal with the same problem, 52 utilizing ={[}= to escape =[...]= instances where needed. 53 54 *** ~tab-width~ value is now assumed to be 8 55 56 Org mode now assumes tab width to be 8 characters, when calculating 57 list and other indentation. ~tab-width~ is also set to 8 when Org 58 major mode is loaded. 59 60 This is done to improve consistency of the markup for lists, where 61 indentation affects list items. 62 63 Users with non-default values of ~tab-width~ should avoid overriding 64 the value of 8 set by Org mode. If the custom ~tab-width~ value is 65 _smaller_ than 8, the existing Org documents can be converted to the 66 new standard tab width using the following helper command: 67 68 #+begin_src emacs-lisp 69 (defun org-compat-adjust-tab-width-in-buffer (old-width) 70 "Adjust visual indentation from `tab-width' equal OLD-WIDTH to 8." 71 (interactive "nOld `tab-width': ") 72 (cl-assert (derived-mode-p 'org-mode)) 73 (unless (= old-width 8) 74 (org-with-wide-buffer 75 (goto-char (point-min)) 76 (let (bound 77 (repl (if (< old-width 8) 78 (make-string old-width ?\s) 79 (concat "\t" (make-string (- old-width 8) ?\s))))) 80 (while (re-search-forward "^ *\t" nil t) 81 (skip-chars-forward " \t") 82 (setq bound (point-marker)) 83 (forward-line 0) 84 (while (search-forward "\t" bound t) 85 (replace-match repl))))))) 86 #+end_src 87 88 *** ~org-ctags~ is not activated by default any more 89 90 To follow Emacs [[info:elisp#Coding Conventions][coding conventions]] and to avoid confusion of users 91 who accidentally get ~org-ctags~ autoloaded due to help completion, 92 the library does not modify ~org-open-link-functions~ during loading 93 any more. Run ~org-ctags-enable~ to setup hooks and advices: 94 95 #+begin_src emacs-lisp 96 (with-eval-after-load "org-ctags" 97 (org-ctags-enable)) 98 #+end_src 99 100 *** "Priority" used to sort items in agenda is renamed to "urgency" 101 102 Previously, ~priority-up~ and ~priority-down~ in 103 ~org-agenda-sorting-strategy~ used a composite rank depending on 104 item's priority (=[#A]=, =[#B]=, =[#C]=, etc) and overdue time to 105 order agenda items (see "11.4.3 Sorting of agenda items" section of 106 Org manual). 107 108 Now, this composite rank is renamed to =urgency= and the relevant 109 sorting strategies are renamed to ~urgency-up~ and ~urgency-down~. 110 ~priority-up~ and ~priority-down~ sort by item's priority only. 111 112 Users relying on the previous composite ranking should adjust their 113 agenda sorting settings. 114 115 *** ~org-priority-show~ command no longer adjusts for scheduled/deadline 116 117 In agenda views, ~org-priority-show~ command previously displayed the 118 composite rank consisting of the item priority and overdue. This is 119 no longer the case. The displayed and returned value only depends on 120 the item priority now. 121 122 The behavior in Org buffers is unchanged. 123 124 *** =ox-icalendar.el= line ending fix may affect downstream packages 125 126 iCalendar export now uses dos-style CRLF ("\r\n") line endings 127 throughout, as required by the iCalendar specification (RFC 5545). 128 Previously, the export used an inconsistent mix of dos and unix line 129 endings. 130 131 This might cause errors in external packages that parse output from 132 ox-icalendar. In particular, older versions of org-caldav may 133 encounter issues, and users are advised to update to the most recent 134 version of org-caldav. See [[https://github.com/dengste/org-caldav/commit/618bf4cdc9be140ca1993901d017b7f18297f1b8][this org-caldav commit]] for more information. 135 136 *** Icalendar export of unscheduled TODOs no longer have start time of today 137 138 For TODOs without a scheduled start time, ox-icalendar no longer 139 forces them to have a scheduled start time of today when exporting. 140 141 Instead, the new customization ~org-icalendar-todo-unscheduled-start~ 142 controls the exported start date for unscheduled tasks. Its default 143 is ~recurring-deadline-warning~ which will export unscheduled tasks 144 with no start date, unless it has a recurring deadline (in which case 145 the iCalendar spec demands a start date, and 146 ~org-deadline-warning-days~ is used for that). 147 148 To revert to the old behavior, set 149 ~org-icalendar-todo-unscheduled-start~ to ~current-datetime~. 150 151 *** Built-in HTML, LaTeX, Man, Markdown, ODT, and Texinfo exporters preserve the link protocol during export 152 153 Previously, some link types where not exported as =protocol:uri= but 154 as bare =uri=. This is now changed. 155 156 When a link is known by Org mode and does not have a custom ~:export~ 157 parameter (see A.3 Adding Hyperlink Types section of the manual), the 158 link protocol is now not stripped. 159 160 For example, if one adds a link type =tel=, but does not define 161 ~:export~ parameter 162 : (org-link-set-parameters "tel") 163 =[[tel:12345][John Doe]]= link will be correctly exported to LaTeX as 164 =\href{tel:12345}{John Doe}=, not =\href{12345}{John Doe}=. 165 166 However, links like =[[elisp:(+ 1 2)]]= will be exported as 167 =\url{elisp:(+ 1 2)}=, which may be somewhat unexpected. 168 169 *** =ox-html=: When exporting footnotes with custom non-number names, the names are used as link anchors 170 171 Previously, link anchors for footnote references and footnote 172 definitions were based on the footnote number: =fn.1=, =fnr.15=, etc. 173 174 Now, when the footnote has a non-number name, it is used as an anchor: 175 =fn.name=, =fnr.name=. 176 177 *** =ox-org= disables citation processors by default 178 179 Previously, when exporting to Org, all the citations and 180 =print_bibliography= keywords, were transformed according to the 181 chosen citation processor. 182 183 This is no longer the case. All the citation-related markup is now 184 exported as is. 185 186 The previous behavior can be reverted by setting new custom option 187 ~org-org-with-cite-processors~. 188 189 *** ODT export no longer opens the exported file in the background 190 191 ODT exporter used to open the exported file in ~archive-mode~ "for 192 examination". This was not documented, was done in the background, 193 and is not consistent with all other export backends. Now, this 194 feature is removed. 195 196 *** Inline image width value in =#+attr_org= is preferred over other =#+attr_...= keywords 197 198 Previously, when ~org-image-actual-width~ is a list or nil, Org used the 199 first =#+attr_...= keyword containing =:width ...= to compute the inline 200 image width. Now, =#+attr_org=, if present, takes precedence. 201 In the following example the image preview has width of 75% 202 while earlier versions pick 33%. 203 204 : #+attr_html: :width 33% 205 : #+attr_org: :width 0.75 206 : [[image.png]] 207 208 *** ~org-latex-to-mathml-convert-command~ and ~org-latex-to-html-convert-command~ may need to be adjusted 209 210 Previously, =%i= placeholders in the 211 ~org-latex-to-mathml-convert-command~ and 212 ~org-latex-to-html-convert-command~ user options were replaced with 213 raw LaTeX fragment text, potentially triggering shell-expansion and 214 incorrect result. 215 216 Now, the =%i= placeholders are shell-escaped to prevent shell 217 expansion. 218 219 If you have single or double quotes around =%i= then update 220 customizations and remove quotes. 221 222 *** ~org-insert-subheading~ no longer inserts a sub-heading above current when point is at the beginning of line 223 224 Previously, calling ~org-insert-subheading~ on 225 226 : * Heading 1 227 : <point>* Heading 2 228 229 yielded 230 231 : * Heading 1 232 : ** <point> 233 : * Heading 2 234 235 This is no longer the case. The sub-heading is always created below 236 current heading (prefix arguments have the same meaning as in 237 ~org-insert-heading~): 238 239 : * Heading 1 240 : * Heading 2 241 : ** <point> 242 243 *** It is no longer allowed to tangle into the same file as Org source 244 245 Previously, =file.org= with the following contents 246 247 : #+begin_src org :tangle file.org 248 : Text 249 : #+end_src 250 251 would overwrite itself. 252 253 Now, an error is thrown. 254 255 ** New features 256 257 # We list the most important features, and the features that may 258 # require user action to be used. 259 260 *** Images and files in clipboard can be pasted 261 262 Org asks the user what must be done when pasting images and files 263 copied to the clipboard from a file manager using the ~yank-media~ 264 command. The default action can be set by customizing 265 ~org-yank-dnd-method~. The ~yank-media~ command was added in Emacs 29. 266 267 Images can be saved to a separate directory instead of being attached, 268 customize ~org-yank-image-save-method~. 269 270 Image filename chosen can be customized by setting 271 ~org-yank-image-file-name-function~ which by default autogenerates a 272 filename based on the current time. 273 274 Note that ~yank-media~, as of Emacs 30, does not yet support Windows 275 (Emacs bug#71909) and may not be always reliable on Mac (Emacs 276 bug#71731). 277 278 *** Files and images can be attached by dropping onto Emacs 279 280 By default, Org asks the user what to do with the dropped file like 281 for pasted files. The same user option ~org-yank-dnd-method~ is 282 respected. 283 284 Images dropped also respect the value of ~org-yank-image-save-method~ 285 when ~org-yank-dnd-method~ is =attach=. 286 287 *** Alignment of image previews can be customized 288 289 Previously, all the image previews were always left-aligned. 290 291 Now, you can customize image previews to be left-aligned, centered, or right-aligned. 292 293 The customization can be done globally, via ~org-image-align~, or per 294 image, using =#+attr_...:=. Example: 295 296 : #+attr_org: :align center 297 : [[/path/to/image/file/png]] 298 : 299 : or 300 : 301 : #+attr_org: :center t 302 : [[/path/to/image/file/png]] 303 304 When =#+attr_org= is not present, ~:align~ and ~:center~ attributes 305 from other =#+attr_...:= keywords will be used. 306 307 *** =id:= links support search options; ~org-id-store-link~ adds search option by default 308 309 Adding search option by ~org-id-store-link~ can be disabled by setting 310 ~org-id-link-use-context~ to ~nil~, or toggled for a single call by 311 passing universal argument. 312 313 When using this feature, IDs should not include =::=, which is used in 314 links to indicate the start of the search string. For backwards 315 compatibility, existing IDs including =::= will still be matched (but 316 cannot be used together with search option). A new org-lint checker 317 has been added to warn about this. 318 319 *** Org mode no longer disallows configuring ~display-buffer-alist~ to open Org popups in other frame 320 321 Previously, Org mode disallowed pop-up frames when displaying dispatch buffers. 322 This is no longer the case. ~display-buffer-alist~ is fully obeyed. 323 324 ~org-switch-to-buffer-other-window~ and ~org-no-popups~ are now deprecated. 325 326 *** Asynchronous code evaluatation in ~ob-shell~ 327 328 Running shell blocks with the ~:session~ header freezes Emacs until 329 execution completes. The new ~:async~ header allows users to continue 330 editing with Emacs while a ~:session~ block executes. 331 332 *** Add support for repeating tasks in iCalendar export 333 334 Repeating Scheduled and Deadline timestamps in TODOs are now exported 335 as recurring tasks in iCalendar export. 336 337 In case the TODO has just a single planning timestamp (Scheduled or 338 Deadline, but not both), its repeater is used as the iCalendar 339 recurrence rule (RRULE). 340 341 If the TODO has both Scheduled and Deadline planning timestamps, then 342 the following cases are implemented: 343 344 - If both have the same repeater, then it is used as the RRULE. 345 - Scheduled has repeater but Deadline does not: the Scheduled repeater 346 is used as RRULE, and Deadline is used as UNTIL (the end date for 347 the repeater). This is similar to ~repeated-after-deadline~ in 348 ~org-agenda-skip-scheduled-if-deadline-is-shown~. 349 350 The following 2 cases are not yet implemented, and the repeater is 351 skipped (with a warning) if the ox-icalendar export encounters them: 352 353 - Deadline has a repeater but Scheduled does not. 354 - Scheduled and Deadline have different repeaters. 355 356 Also note that only vanilla repeaters are currently exported; the 357 special repeaters ~++~ and ~.+~ are skipped. 358 359 *** Babel references =FILE:REFERENCE= now search current buffer when =FILE= does not exist 360 361 When =FILE= does not exist, the reference is searched in the current 362 file, using the verbatim reference. This way, 363 =:var table=tbl:example= will be searched inside the current buffer. 364 365 *** Folded lines can now extend their face beyond ellipsis 366 367 Previously, ~:extend t~ face attribute did not make folded headlines, 368 blocks, and drawers extend their face beyond end of line. 369 370 Now, the ellipsis and trailing newline use the same face as the last 371 character before the fold. 372 373 *** iCalendar export now supports multiline =SUMMARY=, =LOCATION=, and =DESCRIPTION= properties 374 375 Previously, it was not possible to specify multi-line location, 376 summary, or description when exporting to iCalendar. 377 378 In the following example, =LOCATION= was exported as "Someplace", 379 ignoring the other lines. 380 381 #+begin_src org 382 ,* heading with multi-line property 383 :PROPERTIES: 384 :LOCATION: Someplace 385 :LOCATION+: Some Street 5 386 :LOCATION+: 12345 Small Town 387 :END: 388 #+end_src 389 390 Now, =SUMMARY+=, =LOCATION+=, and =DESCRIPTION+= properties can be 391 used to create multi-line values. 392 393 In the above example, =LOCATION= is now exported as 394 395 : Someplace 396 : Some Street 5 397 : 12345 Small Town 398 399 *** Org export backends can now disable citation processors 400 401 A new global export option ~:with-cite-processors~, when set to nil, 402 disables citation processors completely. This option is available to 403 export backends via ~:options-alist~ when defining the backend. 404 405 The backends disabling citation processors must take care about 406 exporting citation objects and =print_bibliography= keywords via 407 transcoders. 408 409 Users can disable citations processors by customizing new 410 ~org-export-process-citations~ option. 411 412 *** Org babel backends are now expected to define an additional API function ~org-babel-session-buffer:<lang>~ 413 414 Org babel now uses session buffer (if it exists) to retrieve 415 ~default-directory~ environment during src block evaluation. 416 417 By default, buffer named like session is checked. All the backends 418 that create sessions inside buffers named differently should provide a 419 function ~org-babel-session-buffer:<lang>~. The function must accept 420 two arguments - session name and info list (as returned by 421 ~org-babel-get-src-block-info~); and return the session buffer name. 422 423 *** ~org-paste-subtree~ now handles =C-u= and =C-u C-u= prefix arguments specially 424 425 With =C-u= prefix argument, force inserting a sibling heading below. 426 With =C-u C-u= prefix argument, force inserting a child heading. 427 428 *** ~org-metaup~ and ~org-metadown~ now act on headings in region 429 430 When region is active and starts at a heading, ~org-metaup~ and 431 ~org-metadown~ will move all the selected subtrees. 432 433 *** Many structure editing commands now do not deactivate region 434 435 Moving, promoting, and demoting of headings and items in region now do 436 not deactivate Transient mark mode. 437 438 Users can thus conveniently select multiple headings/items and use, 439 for example, =M-<down>=/=M-<up>= repeatedly without losing the 440 selection. 441 442 *** Capture templates now support ~(here)~ as a target 443 444 A capture template can target ~(here)~ which is the equivalent of 445 invoking a capture template with a zero prefix. 446 447 *** =colview= dynamic block supports custom formatting function 448 449 The =colview= dynamic block understands a new ~:formatter~ parameter, 450 which specifies a user-supplied function to format and insert the data 451 in the dynamic block. 452 453 A global default formatting function for =colview= dynamic blocks can 454 be set via the new option ~org-columns-dblock-formatter~ which 455 defaults to the new function ~org-columns-dblock-write-default~, that 456 implements the previous (fixed) formatting behavior. Hence, the 457 default behavior is identical to previous versions. 458 459 The global default function can be overridden for any given =colview= 460 dynamic block individually by specifying a custom formatter function 461 using the new ~:formatter~ parameter on the block's =BEGIN= line. 462 463 This new feature replicates the ~:formatter~ option already available 464 for =clocktable= dynamic blocks. 465 466 *** =colview= dynamic block can link to headlines 467 468 The =colview= dynamic block understands a new ~:link~ parameter, which 469 when non-~nil~ causes =ITEM= headlines in the table to be linked to 470 their origins. 471 472 *** =ob-tangle.el=: New flag to remove tangle targets before writing 473 474 When ~org-babel-tangle-remove-file-before-write~ is set to ~t~ the 475 tangle target is removed before writing. This will allow overwriting 476 read-only tangle targets. However, when tangle target is a symlink, 477 this will convert the tangle target into an ordinary file. 478 479 The default value is ~auto~ -- overwrite tangle targets when they are 480 read-only. 481 482 *** ~org-bibtex-yank~ accepts a prefix argument 483 484 When called with a prefix argument, ~org-bibtex-yank~ adds data to the 485 headline of the entry at point instead of creating a new one. 486 487 *** =ob-plantuml.el=: Support tikz file format output 488 489 =ob-plantuml.el= now output =tikz= :file format via 490 =-tlatex:nopreamble= option. So that the output tikz file can be an 491 input into the exported latex correctly. 492 493 For example, exporting the following to LaTeX 494 495 #+begin_src plantuml :file test.tikz :exports results 496 Bob -> Alice : Hello World! 497 #+end_src 498 499 will include the generated =.tikz= into the exported LaTeX source. 500 501 *** =UNNUMBERED= property inheritance is now honored by ~org-num-mode~ 502 503 When ~org-num-skip-unnumbered~ is non-nil, ~org-num-mode~ now honors 504 ~org-use-property-inheritance~ for =UNNUMBERED= property (see manual 505 section "Property Inheritance"). Previously, only local =UNNUMBERED= 506 property was taken into account. 507 508 Users can add ="UNNUMBERED"= to ~org-use-property-inheritance~ and set 509 ~org-numb-skip-unnumbered~ to ~t~ to make ~org-num-mode~ skip 510 numbering of all the sub-headings with non-nil =UNNUMBERED= property. 511 512 *** ~org-insert-todo-heading-respect-content~ now accepts prefix arguments 513 514 The prefix arguments are passed to ~org-insert-todo-heading~. 515 516 *** Make ~ob-sqlite~ use in-memory databases by default 517 518 ~sqlite~ source blocks with no ~:db~ header argument now make SQLite 519 use a temporary in-memory database instead of throwing an error, 520 matching the behavior of the official ~sqlite3~ shell. As a result, 521 ~sqlite~ source blocks are now usable out of the box, that is with no 522 header arguments. 523 524 *** ~org-return~ now acts on citations at point 525 526 When ~org-return-follows-link~ is non-nil and cursor is over an 527 org-cite citation, ~org-return~ will call ~org-open-at-point~. 528 529 *** ~org-tags-view~ supports more property operators 530 531 It supports inequality operators ~!=~ and ~/=~ in addition to the less 532 common (BASIC? Pascal? SQL?) ~<>~. And it supports starred versions 533 of all relational operators (~<*~, ~=*~, ~!=*~, etc.) that work like 534 the regular, unstarred operators but match a headline only if the 535 tested property is actually present. 536 537 *** =ob-python.el=: Support for more result types and plotting 538 539 =ob-python= now converts the following objects to org-mode tables when 540 ":results table" header arg is set: 541 542 - Dictionaries 543 - Numpy arrays 544 - Pandas DataFrames 545 - Pandas Series 546 547 When the header argument =:results graphics= is set, =ob-python= will 548 use matplotlib to save graphics. The behavior depends on whether value 549 or output results are used. For value results, the last line should 550 return a matplotlib Figure object to plot. For output results, the 551 current figure (as returned by =pyplot.gcf()=) is cleared before 552 evaluation, and then plotted afterwards. 553 554 *** =ob-maxima.el=: Support for ~batch~ and ~draw~ 555 556 =ob-maxima= has two new header arguments: ~:batch~ and 557 ~:graphics-pkg~. 558 559 The ~:batch~ header argument can be set to one of Maxima's file 560 loaders (~batch~, ~load~ or ~batchload~); the default remains 561 ~batchload~. The ~:graphics-pkg~ header argument can be set to one of 562 Maxima's graphics packages (~draw~ or ~plot~); the default remains 563 ~plot~. The graphics terminal is now determined from the file-ending 564 of the file-name set in the ~:file~ header argument. 565 566 *** =ob-calc.el=: Support for tables in ~:var~ 567 568 =ob-calc= now supports tables in ~:var~. They are converted to a 569 matrix or a vector depending on the dimensionality of the table. A 570 table with a single row is converted to a vector, the rest are 571 converted to a matrix. 572 573 *** ox-texinfo always generates a ~@direntry~ 574 575 We use defaults based on the file name and title of the document, and 576 place the entry in the ~Misc~ category if ~TEXINFO_DIR_CATEGORY~ is missing. 577 578 =TEXINFO_DIR_TITLE= is renamed to =TEXINFO_DIR_NAME=. 579 The old name is obsolete. 580 581 ** New and changed options 582 583 # Changes dealing with changing default values of customizations, 584 # adding new customizations, or changing the interpretation of the 585 # existing customizations. 586 587 *** Org mode faces are now consistently combined, with markup faces taking precedence over the containing element faces 588 589 Previously, fontification of inline source blocks, macros, footnotes, 590 target links, timestamps, radio targets, targets, inline export 591 snippets, verbatim code, and COMMENT keyword in headings replaced the 592 containing element fontification. Now, this is changed - the inner 593 markup faces and the containing element faces are combined, with 594 "inner" faces taking precedence; just as for all other markup. 595 596 *** Org mode now fontifies whole table lines (including newline) according to ~org-table~ face 597 598 Previously, leading indentation and trailing newline in table rows 599 were not fontified using ~org-table~ face. ~default~ face was used instead. 600 This made it impossible to scale line height when ~org-table~ face has 601 smaller height than default (Emacs calculates line height using the tallest face). 602 603 Now, new ~org-table-row~ face is used on the whole table row lines, 604 including indentation and the final newline. This face, by default, 605 inherits from ~org-table~ face. 606 607 If the new behavior is not desired, ~org-table-row~ face can be 608 changed to inherit from ~default~ face. See "Customizing Faces" 609 section of Emacs manual or "Face Attribute Functions" section of Elisp 610 manual. 611 612 ~org-table~ takes precedence over ~org-table-row~ for the parts of 613 table rows without indentation and newline. 614 615 *** ~org-auto-align-tags~ is now respected universally 616 617 Previously, only a subset of Org editing commands respected 618 ~org-auto-align-tags~ option. Now, it is no longer the case. All the 619 editing commands, including typing (~org-self-insert-command~) and 620 deletion respect the option. 621 622 ~org-auto-align-tags~ is still enabled by default. For users who 623 customized ~org-auto-align-tags~ to nil, ~org-edit-headline~, 624 ~org-priority~, ~org-set-tags~, ~org-entry-put~, ~org-kill-line~, and 625 typing/deleting in headlines will no longer unconditionally auto-align 626 the tags. 627 628 *** New export option ~org-export-expand-links~ 629 630 The new option makes Org expand environment variables in link and INCLUDE paths. 631 The option is on by default. 632 633 Users who do not want variable expansion can set 634 ~org-export-expand-links~ variable to nil or provide 635 =expand-links:nil= in-file export option. 636 637 *** New hook ~org-after-note-stored-hook~ 638 639 This new hook runs when a note has been stored. 640 641 *** New option controlling how Org mode sorts things ~org-sort-function~ 642 643 Sorting of agenda items, tables, menus, headlines, etc can now be 644 controlled using a new custom option ~org-sort-function~. 645 646 By default, Org mode sorts things according to the operating system 647 language. However, language sorting rules may or may not produce good 648 results depending on the use case. For example, multi-language 649 documents may be sorted weirdly when sorting rules for system language 650 are applied on the text written using different language. Also, some 651 operations systems (e.g. MacOS), do not provide accurate string 652 sorting rules. 653 654 Org mode provides 3 possible values for ~org-sort-function~: 655 1. (default) Sort using system language rules. 656 2. Sort using string comparison (~compare-strings~), making use of UTF 657 case conversion. This may work better for mixed-language documents 658 and on MacOS. 659 3. Custom function, if the above does not fit the needs. 660 661 *** =ob-latex= now uses a new option ~org-babel-latex-process-alist~ to generate png output 662 663 Previously, =ob-latex= used ~org-preview-latex-default-process~ from 664 ~org-preview-latex-process-alist~ to produce png output. Now, the 665 process settings are separated into a new dedicated option 666 ~org-babel-latex-process-alist~. 667 668 The default value is pulled from =dvipng= process type from 669 ~org-preview-latex-process-alist~, preserving the existing behavior. 670 However, the output is now immune to changes in 671 ~org-preview-latex-default-process~ and can be customized 672 independently of the image preview settings. 673 674 *** New option ~org-babel-lua-multiple-values-separator~ 675 676 The string that separates the values of multi-valued results returned 677 from Lua code blocks. 678 679 *** =.avif= images are now recognized in ~org-html-inline-image-rules~ 680 681 In =ox-html=, =.avif= image links are now inlined by default. 682 683 *** New option ~org-beamer-frame-environment~ 684 685 The new option defines name of an alternative environment to be used 686 for fragile beamer frames. This option is needed to work around 687 beamer bug with frame contents containing literal =\end{frame}= string 688 (for example, inside example blocks). See 689 https://github.com/josephwright/beamer/issues/360 690 691 The default value is =orgframe=. 692 693 The option should normally not be changed, except when you need to put 694 =\end{orgframe}= string inside beamer frames. 695 696 A checker has been added to =M-x org-lint= to detect instances of 697 ~org-beamer-frame-environment~ in Org documents. 698 699 *** New option ~org-export-process-citations~ 700 701 The new option controls whether to use citation processors to process 702 citations. 703 704 *** New option ~org-org-with-cite-processors~ 705 706 The new option controls whether to use citation processors to process 707 citations when exporting to Org. 708 709 *** New option ~org-org-with-special-rows~ 710 711 The new options controls whether to export special table rows in 712 Org-Org (=ox-org=) export. The default value is ~t~. 713 714 *** New option ~org-babel-comint-fallback-regexp-threshold~ 715 716 Org babel is often using Emacs's interactive REPL feature to implement 717 :session functionality in code blocks. However, Emacs's REPLs use 718 heuristics to detect which lines in the REPL buffer correspond to 719 output and which lines are user prompts. 720 721 Normally, Org babel changes the default prompt to something unique. It 722 avoids incorrect detection of code block output. 723 724 Sometimes, the Org-configured prompt is changed manually by users or 725 when running a sub-REPL (for example, when running ssh/python 726 interpreter inside shell). 727 728 The new option controls Org mode's heuristics for catching 729 user-changed prompt in interactive Org babel sessions. When Org mode 730 cannot find REPL's prompt for more than 731 ~org-babel-comint-fallback-regexp-threshold~ seconds, imprecise 732 generic prompt is tried to detect whether the code block output has 733 arrived. 734 735 Users who often work with altering REPL prompts may consider reducing 736 the default 5 second value of the new option. 737 738 *** ~repeated-after-deadline~ value of ~org-agenda-skip-scheduled-if-deadline-is-shown~ is moved to a new customization 739 740 A new custom option ~org-agenda-skip-scheduled-repeats-after-deadline~ 741 is introduced in place of ~repeated-after-deadline~ value of 742 ~org-agenda-skip-scheduled-if-deadline-is-shown~. 743 744 The following example would no longer show in the agenda as scheduled 745 after January 5th with the new customization set to ~t~. 746 747 : * TODO Do me every day until Jan, 5th (inclusive) 748 : SCHEDULED: <2024-01-03 Wed +1d> DEADLINE: <2024-01-05 Fri> 749 750 The old customization will continue to work, ensuring backwards compatibility. 751 752 *** New custom setting ~org-icalendar-ttl~ for the ~ox-icalendar~ backend 753 754 The option ~org-icalendar-ttl~ allows to advise a subscriber to the 755 exported =.ics= file to reload after the given time interval. 756 757 This is useful i.e. if a calendar server subscribes to your exported 758 file and that file is updated regularly. 759 760 See IETF RFC 5545, Section 3.3.6 Duration and 761 https://en.wikipedia.org/wiki/ICalendar#Other_component_types for 762 details. 763 764 Default for ~org-icalendar-ttl~ is ~nil~. In that case the setting 765 will not be used in the exported ICS file. 766 767 The option may also be set using the =ICAL-TTL= keyword. 768 769 *** The default value of ~org-attach-store-link-p~ is now ~attached~ 770 771 Now, after attaching a file, =[[attach:...]]= link to the attached file 772 is stored. It can later be inserted using =M-x org-insert-link=. 773 774 *** ~org-link-descriptive~ can now be set per-buffer via =#+STARTUP= options 775 776 In addition to ~org-link-descriptive~ custom option, link display can 777 now be controlled per-buffer as: 778 779 : #+STARTUP: literallinks 780 : #+STARTUP: descriptivelinks 781 782 *** New option ~org-fast-tag-selection-maximum-tags~ 783 784 You can now limit the total number of tags displayed in the fast tag 785 selection interface. Useful in buffers with huge number of tags. 786 787 *** New variable ~org-clock-out-removed-last-clock~ 788 789 The variable is intended to be used by ~org-clock-out-hook~. It is a 790 flag used to signal when the =CLOCK= line has been removed. This can 791 happen when ~org-clock-out-remove-zero-time-clocks~ is customized to 792 be non-nil. 793 794 *** ~org-info-other-documents~ is now a custom option 795 796 Users can now extend the value of ~org-info-other-documents~ to 797 specify Urls to third-party (non-Emacs) online info nodes when 798 exporting =info:= links. 799 800 *** ~org-export-smart-quotes-alist~ is now a custom option 801 802 Previously, smart quotes rules for different languages where 803 hard-coded. Now, they can be customized by users. 804 805 *** Commands affected by ~org-fold-catch-invisible-edits~ can now be customized 806 807 New user option ~org-fold-catch-invisible-edits-commands~ controls 808 which commands trigger checking for invisible edits. 809 810 The full list of affected commands is: 811 - ~org-self-insert-command~ 812 - ~org-delete-backward-char~ 813 - ~org-delete-char~ 814 - ~org-meta-return~ 815 - ~org-return~ (not checked in earlier Org versions) 816 817 *** New customization ~org-image-max-width~ limiting the displayed inline image width 818 819 New custom variable ~org-image-max-width~ limits the maximum inline 820 image width, but only when the inline image width is not explicitly 821 set via ~org-image-actual-width~, =ORG-IMAGE-ACTUAL-WIDTH= property, 822 or =#+ATTR*= keyword. 823 824 By default, when ~org-image-actual-width~ is set to t, 825 ~org-image-max-width~ takes effect. Its default value is set to 826 ~fill-column~, limiting the image previews to ~fill-column~ number of 827 characters. 828 829 To fall back to previous defaults, where the inline image width is not 830 constrained, set ~org-image-max-width~ to nil. 831 832 *** ~org-src-block-faces~ now accepts empty string ~""~ as language name 833 834 It is now possible to customize face of source blocks without language specifier. 835 836 : #+begin_src 837 : Source block with no language 838 : #+end_src 839 840 For example, to set ~highlight~ face, use 841 842 #+begin_src emacs-lisp 843 (setq org-src-fontify-natively t) 844 (add-to-list 'org-src-block-faces '("" highlight)) 845 #+end_src 846 847 *** New ~org-cite-natbib-export-bibliography~ option defining fallback bibliography style 848 849 ~natbib~ citation export processor now uses 850 ~org-cite-natbib-export-bibliography~ (defaults to ~unsrtnat~) as a 851 fallback bibliography style if none is specified by user in 852 =#+cite_export:= keyword. 853 854 Previously, export would fail without explicitly selected bibliography 855 style. 856 857 *** New escape in ~org-beamer-environments-extra~ for labels in Beamer export 858 The escape =%l= in ~org-beamer-environments-extra~ inserts the label 859 obtained from ~org-beamer--get-label~. This is added to the default 860 environments =theorem=, =definition=, =example=, and =exampleblock= in 861 ~org-beamer-environments-default~. 862 863 *** ~org-clock-x11idle-program-name~ now defaults to =xprintidle=, when available 864 865 When =xprintidle= executable is available at =org-clock= load time, it 866 is used as the default value for ~org-clock-x11idle-program-name~. 867 The old =x11idle= default is used as the fallback. 868 869 =xprintidle= is available as system package in most Linux 870 distributions, unlike ancient =x11idle= that is distributed via WORG. 871 872 *** New options for the "csl" citation export processor's LaTeX output 873 874 The ~org-cite-csl-latex-label-separator~ and 875 ~org-cite-csl-latex-label-width-per-char~ options allow the user to 876 control the indentation of entries for labeled bibliography styles 877 when the "csl" citation processor is used for LaTeX export. The 878 indentation length is computed as the sum of 879 ~org-cite-csl-latex-label-separator~ and the maximal label width, for 880 example: 881 882 #+begin_example 883 indentation length 884 <-------------------------> 885 max. label width separator 886 <---------------><--------> 887 [Doe22] John Doe. A title... 888 [DoeSmithJones19] John Doe, Jane Smith and... 889 [SmithDoe02] Jane Smith and John Doe... 890 #+end_example 891 892 The maximal label width, in turn, is calculated as the product of 893 ~org-cite-csl-latex-label-width-per-char~ and the maximal label length 894 measured in characters. 895 896 The ~org-cite-csl-latex-preamble~ option makes it possible to 897 customize the entire LaTeX fragment that the "csl" citation processor 898 injects into the preamble. 899 900 *** New ~org-latex-listings-src-omit-language~ option for LaTeX export 901 902 The ~org-latex-listings-src-omit-language~ option allows omitting the 903 =language= parameter in the exported =lstlisting= environment. This 904 is necessary when the =listings= backend delegates listing generation 905 to another package like =fancyvrb= using the following setup in the 906 document header: 907 908 #+BEGIN_src org 909 ,#+LATEX_HEADER: \RequirePackage{fancyvrb} 910 ,#+LATEX_HEADER: \DefineVerbatimEnvironment{verbatim}{Verbatim}{...whatever...} 911 ,#+LATEX_HEADER: \DefineVerbatimEnvironment{lstlisting}{Verbatim}{...whatever...} 912 #+END_src 913 914 *** New face: ~org-agenda-calendar-daterange~ 915 The face ~org-agenda-calendar-daterange~ is used to show entries with 916 a date range in the agenda. It inherits from the default face in 917 order to remain backward-compatible. 918 919 *** New ~org-babel-clojurescript-backend~ option to choose ClojureScript backend 920 921 Before, a ClojureScript source block used the same backend as Clojure, 922 configured in ~org-babel-clojure-backend~ and relied on an undocumented 923 ~:target~ parameter. 924 925 Now, there's ~org-babel-clojurescript-backend~ to determine the 926 backend used for evaluation of ClojureScript. 927 928 *** Support for Clojure CLI in ~ob-clojure~ 929 930 ~ob-clojure~ now supports executing babel source blocks with the 931 official [[https://clojure.org/guides/deps_and_cli][Clojure CLI tools]]. 932 The command can be customized with ~ob-clojure-cli-command~. 933 934 *** New customization options for ~org-export-dispatch~ 935 936 New custom variables ~org-export-body-only~, 937 ~org-export-visible-only~, and ~org-export-force-publishing~ allow the 938 default settings of "Body only", "Visible only", and "Force 939 publishing" in the ~org-export-dispatch~ UI to be customized, 940 respectively. 941 942 *** New option ~org-icalendar-todo-unscheduled-start~ to control unscheduled TODOs in ox-icalendar 943 944 ~org-icalendar-todo-unscheduled-start~ controls how ox-icalendar 945 exports the starting datetime for unscheduled TODOs. Note this option 946 only has an effect when ~org-icalendar-include-todo~ is non-nil. 947 948 By default, ox-icalendar will not export a start datetime for 949 unscheduled TODOs, except in cases where the iCalendar spec demands a 950 start (specifically, for recurring deadlines, in which case 951 ~org-deadline-warning-days~ is used). 952 953 Currently implemented options are: 954 955 - ~recurring-deadline-warning~: The default as described above. 956 - ~deadline-warning~: Use ~org-deadline-warning-days~ to set the start 957 time if the unscheduled task has a deadline (recurring or not). 958 - ~current-datetime~: Revert to old behavior, using the current 959 datetime as the start of unscheduled tasks. 960 - ~nil~: Never add a start time for unscheduled tasks. For repeating 961 tasks this technically violates the iCalendar spec, but some 962 iCalendar programs support this usage. 963 964 *** Capture template expansion now supports ID links 965 966 The capture template expansion element =%K= creates links using 967 ~org-store-link~, which respects the values of ~org-id-link-to-use-id~. 968 969 *** Changes to ~org-babel-python-command~, and new session/nonsession specific options 970 971 The default Python command used by interactive sessions has been 972 changed to match ~python-shell-interpreter~ and 973 ~python-shell-interpreter-args~ by default. The default Python 974 command for nonsessions has not changed. 975 976 New options ~org-babel-python-command-nonsession~ and 977 ~org-babel-python-command-session~ control the default Python command 978 for nonsessions and sessions, respectively. By default, 979 ~org-babel-python-command-session~ is ~auto~, which means to use the 980 configuration for ~python-shell-interpreter(-args)~ as default. 981 982 The old option ~org-babel-python-command~ has been changed to have 983 default value of ~auto~. When not ~auto~, it overrides both 984 ~org-babel-python-command-nonsession~ and 985 ~org-babel-python-command-session~. Therefore, users who had 986 previously set ~org-babel-python-command~ will not experience any 987 changes. 988 989 Likewise, users who had neither set ~org-babel-python-command~ nor 990 ~python-shell-interpreter(-args)~ will not see any changes -- ~python~ 991 remains the default command. 992 993 The main change will be for users who did not configure 994 ~org-babel-python-command~, but did configure 995 ~python-shell-interpreter~, e.g. to use IPython. In this case, 996 ~ob-python~ will now start interactive sessions in a more consistent 997 manner with ~run-python~. 998 999 *** New hook option ~org-indent-post-buffer-init-functions~ 1000 1001 This allows to run functions after ~org-indent~ initializes a buffer to 1002 enrich its properties. 1003 *** New option ~org-agenda-start-with-archives-mode~ 1004 1005 This option starts the agenda to automatically include archives, 1006 propagating the value for this variable to ~org-agenda-archives-mode~. 1007 For acceptable values and their meaning, see the value of that variable. 1008 1009 *** New option ~org-id-link-consider-parent-id~ to allow =id:= links to parent headlines 1010 1011 For =id:= links, when this option is enabled, ~org-store-link~ will 1012 look for ids from parent/ancestor headlines, if the current headline 1013 does not have an id. 1014 1015 Combined with the new ability for =id:= links to use search options 1016 [fn:: when =org-id-link-use-context= is =t=, which is the default], 1017 this allows linking to specific headlines without requiring every 1018 headline to have an id property, as long as the headline is unique 1019 within a subtree that does have an id property. 1020 1021 For example, given this org file: 1022 1023 #+begin_src org 1024 ,* Parent 1025 :PROPERTIES: 1026 :ID: abc 1027 :END: 1028 ,** Child 1 1029 ,** Child 2 1030 #+end_src 1031 1032 Storing a link with point at "Child 1" will produce a link 1033 =<id:abc::*Child 1>=, which precisely links to the "Child 1" headline 1034 even though it does not have its own ID. By giving files top-level id 1035 properties, links to headlines in the file can also be made more 1036 robust by using the file id instead of the file path. 1037 1038 *** New option ~latex-default-footnote-command~ to customize the LaTeX footnote command 1039 1040 This new option allows you to define the LaTeX command the Org mode 1041 footnotes are converted to (for example ~\sidenote{%s%s}~ instead of 1042 the default ~\footnote{%s%s}~). 1043 1044 The option can be customized either by 1045 1046 1. setting the global variable in the ~org-export-latex~ customization 1047 group or 1048 2. by setting the file local keyword =LATEX_FOOTNOTE_COMMAND= 1049 1050 *** Options for ~#+cite_export: biblatex~ can use the package's option syntax 1051 1052 When using =biblatex= to export bibliographies, you can use the format 1053 as specified in the =biblatex= package documentation as 1054 =key=val,key=val,...= 1055 1056 *** New option ~org-columns-dblock-formatter~ 1057 1058 =colview= dynamic blocks now understand a new ~:formatter~ parameter 1059 to use a specific function for formatting and inserting the contents 1060 of the dynamic block. This new option can be used to set the global 1061 default formatting function that will be used for =colview= dynamic 1062 blocks that do not specify any ~:formatter~ parameter. Its default 1063 value (the new function ~org-columns-dblock-write-default~) yields the 1064 previous (fixed) formatting behavior. 1065 1066 *** New allowed value of ~org-md-headline-style~ to mix ATX and Setext style headlines 1067 1068 Setting ~org-md-headline-style~ to ~'mixed~ will export headline 1069 levels one and two as Setext style headlines, and headline levels 1070 three through six will be exported as ATX style headlines. 1071 1072 *** ~org-footnote-new~ can be configured to create anonymous footnotes 1073 1074 When ~org-footnote-auto-label~ is set to ~'anonymous~, create 1075 anonymous footnotes automatically with ~org-footnote-new~. 1076 1077 The same can be done via startup options: 1078 : #+STARTUP: fnanon 1079 1080 *** New final hooks for Modifier-Cursor keys 1081 1082 Final hooks are added to the following commands: 1083 - ~org-metaleft-final-hook~ to ~org-metaleft~ (bound to =M-<left>=). 1084 - ~org-metaright-final-hook~ to ~org-metaright~ (bound to 1085 =M-<right>=). 1086 - ~org-metaup-final-hook~ to ~org-metaup~ (bound to =M-<up>=). 1087 - ~org-metadown-final-hook~ to ~org-metadown~ (bound to =M-<down>=). 1088 - ~org-shiftmetaleft-final-hook~ to ~org-shiftmetaleft~ (bound to 1089 =M-S-<left>=). 1090 - ~org-shiftmetaright-final-hook~ to ~org-shiftmetaright~ (bound to 1091 =M-S-<right>=). 1092 - ~org-shiftmetaup-final-hook~ to ~org-shiftmetaup~ (bound to 1093 =M-S-<up>=). 1094 - ~org-shiftmetadown-final-hook~ to ~org-shiftmetadown~ (bound to 1095 =M-S-<down>=). 1096 1097 ** Major changes and additions to Org element API and Org syntax 1098 *** Diary type timestamps now support optional time/timerange 1099 1100 Previously, diary type timestamps could not specify time. 1101 Now, it is allowed to add a time or time range: 1102 1103 : <%%(diary-float t 4 2) 22:00-23:00> 1104 : <%%(diary-float t 4 2) 10:30> 1105 1106 The parsed representation of such timestamps will have ~:hour-start~, 1107 ~:minute-start~, ~:hour-end~, ~:minute-end~, and ~:range-type~ 1108 properties set appropriately. In addition, a new ~:diary-sexp~ 1109 property will store the diary sexp value. 1110 1111 For example, 1112 1113 : <%%(diary-float t 4 2) 22:00-23:00> 1114 1115 will have the following properties 1116 1117 #+begin_src emacs-lisp 1118 :type: diary 1119 :range-type: timerange 1120 :raw-value: "<%%(diary-float t 4 2) 22:00-23:00>" 1121 :year-start: nil 1122 :month-start: nil 1123 :day-start: nil 1124 :hour-start: 22 1125 :minute-start: 0 1126 :year-end: nil 1127 :month-end: nil 1128 :day-end: nil 1129 :hour-end: 23 1130 :minute-end: 0 1131 :diary-sexp: "(diary-float t 4 2)" 1132 #+end_src 1133 1134 *** Underline syntax now takes priority over subscript when both are applicable 1135 1136 Previously, Org mode interpreted =(_text_)= as subscript. 1137 Now, the interpretation is changed to underline. 1138 1139 =(_text_)= matches both subscript and underline markup. The 1140 interpretation is changed to keep consistency with other emphasis like 1141 =(*bold*)=. 1142 1143 Most of the users should not be affected by this change - it only applies when character immediately preceding =_= is one of =-=, =(=, ='=, and ={=. 1144 1145 *** New term: "syntax node" 1146 1147 To reduce confusion with "element" referring to both "syntax element" 1148 and "element/object" class, we now prefer using "syntax node" when 1149 referring to generic Org syntax elements. "Elements" and "objects" 1150 now refer to different syntax node classes of paragraph-like nodes and 1151 markup-like nodes. 1152 1153 *** New element type ~anonymous~ 1154 1155 Secondary strings can now be recognized as ~anonymous~ type to 1156 distinguish from non-elements. With a new optional argument, 1157 ~org-element-type~ will return ~anonymous~ for secondary strings 1158 instead of nil. 1159 1160 The new element type can be used in ~org-element-lineage~, 1161 ~org-element-map~, and other functions that filter by element type. 1162 1163 *** Internal structure of Org parse tree has been changed 1164 1165 The code relying upon the previously used =(TYPE PROPERTIES-PLIST CONTENTS-LIST)= 1166 structure may no longer work. Please use ~org-element-create~, 1167 ~org-element-property~, and other Org element API functions to work 1168 with Org syntax trees. 1169 1170 Some syntax node properties are no longer stored as property list elements. 1171 Instead, they are kept in a special vector value of a new 1172 =:standard-properties= property. This is done to improve performance. 1173 1174 If there is a need to traverse all the node properties, a new API 1175 function ~org-element-properties-map~ can be used. 1176 1177 Properties and their values can now be deferred to avoid overheads 1178 when parsing. They are calculated lazily, when the value/property is 1179 requested by ~org-element-property~ and other getter functions. Using 1180 ~plist-get~ to retrieve values of =PROPERTIES-PLIST= is not 1181 recommended as deferred properties will not be resolved in such 1182 scenario. 1183 1184 New special property =:secondary= is used internally to record which 1185 properties store secondary objects. 1186 1187 New special property =:deferred= is used to keep information how to 1188 calculate property names lazily. 1189 1190 See the commentary in =lisp/org-element-ast.el= for more details. 1191 1192 *** Multiple affiliated keyword values are now stored in the order they appear in buffer 1193 1194 Previously, 1195 1196 : #+caption: foo 1197 : #+caption: bar 1198 : Paragraph 1199 1200 would have its =:caption= property set to ~(("bar") ("foo"))~ in reverse order. 1201 1202 Now, the order is not reversed: ~(("foo") ("bar"))~. 1203 1204 *** Some property values may now be calculated lazily and require original Org buffer to be live 1205 1206 ~org-element-at-point~, ~org-element-context~, and 1207 ~org-element-at-point-no-context~ may now not calculate all the 1208 property values at the call time. Instead, the calculation will be 1209 deferred until ~org-element-property~ or the equivalent getter 1210 function is called. The property names may not all be calculated as 1211 well. 1212 1213 It may often be necessary to have the original Org buffer open when 1214 resolving the deferred values. 1215 1216 One can ensure that all the deferred values are resolved using new 1217 function ~org-element-resolve-deferred~ and new optional argument for 1218 ~org-element-property~. 1219 1220 ~org-element-parse-buffer~ and ~org-element-parse-secondary-string~ 1221 will resolve all the deferred values by default. No adjustment is 1222 needed for their users. 1223 1224 *** New API functions and macros 1225 **** New property accessors and setters 1226 1227 New functions to retrieve and set (via ~setf~) commonly used element properties: 1228 - =:begin= :: ~org-element-begin~ 1229 - =:end= :: ~org-element-end~ 1230 - =:contents-begin= :: ~org-element-contents-begin~ 1231 - =:contents-end= :: ~org-element-contents-end~ 1232 - =:post-affiliated= :: ~org-element-post-affiliated~ 1233 - =:post-blank= :: ~org-element-post-blank~ 1234 - =:parent= :: ~org-element-parent~ 1235 1236 **** New macro ~org-element-with-enabled-cache~ 1237 1238 The macro arranges the element cache to be active during =BODY= execution. 1239 When cache is enabled, the macro is identical to ~progn~. When cache 1240 is disabled, the macro arranges a new fresh cache that is discarded 1241 upon completion of =BODY=. 1242 1243 **** New function ~org-element-property-raw~ 1244 1245 This function is like ~org-element-property~ but does not try to 1246 resolve deferred properties. 1247 1248 ~org-element-property-raw~ can be used with ~setf~. 1249 1250 **** New function ~org-element-put-property-2~ 1251 1252 Like ~org-element-put-property~, but the argument list is changed to have 1253 =NODE= as the last argument. Useful with threading macros like 1254 ~thread-last~. 1255 1256 **** New function ~org-element-properties-resolve~ 1257 1258 This function resolves all the deferred values in a =NODE=, modifying 1259 the =NODE= for side effect. 1260 1261 **** New functions ~org-element-properties-map~ and ~org-element-properties-mapc~ 1262 1263 New functions to map over =NODE= properties. 1264 1265 **** New function ~org-element-ast-map~ 1266 1267 This is a more general equivalent of ~org-element-map~. It allows 1268 more precise control over recursion into secondary strings. 1269 1270 **** New function ~org-element-lineage-map~ 1271 1272 Traverse syntax tree ancestor list, applying arbitrary function to 1273 each ancestor. 1274 1275 **** New function ~org-element-property-inherited~ 1276 1277 Like ~org-element-property~, but can be used to retrieve and combine 1278 multiple different properties for a given =NODE= and its parents. 1279 1280 *** ~org-element-cache-map~ can now be used even when element cache is disabled 1281 1282 *** =org-element= API functions and macros can now accept syntax nodes as =POM= argument 1283 1284 The following functions are updated: 1285 - ~org-agenda-entry-get-agenda-timestamp~ 1286 - ~org-element-at-point~ 1287 - ~org-is-habit-p~ 1288 - ~org-id-get~ 1289 - ~org-with-point-at~ 1290 - ~org-entry-properties~ 1291 - ~org-entry-get~ 1292 - ~org-entry-delete~ 1293 - ~org-entry-add-to-multivalued-property~ 1294 - ~org-entry-remove-from-multivalued-property~ 1295 - ~org-entry-member-in-multivalued-property~ 1296 - ~org-entry-put-multivalued-property~ 1297 - ~org-entry-get-with-inheritance~ 1298 - ~org-entry-put~ 1299 - ~org-read-property-value~ 1300 - ~org-property-get-allowed-values~ 1301 1302 *** ~org-element-map~ now traverses main value in dual keywords before the secondary value 1303 1304 The traverse order for dual keywords is reversed. The main value is 1305 now traversed first, followed by the secondary value. 1306 1307 *** Org parse tree is now non-printable 1308 1309 Org parser now assigns a new property =:buffer= that holds 1310 non-printable buffer object. This makes syntax tree non-printable. 1311 Using ~print~/~read~ is no longer safe. 1312 1313 *** Some Org API functions no longer preserve match data 1314 1315 ~org-element-at-point~, ~org-element-context~, ~org-get-category~, and 1316 ~org-get-tags~ may modify the match data. 1317 1318 The relevant function docstrings now explicitly mention that match 1319 data may be modified. 1320 1321 *** ~org-element-create~ now treats a single ~anonymous~ =CHILDREN= argument as a list of child nodes 1322 1323 When =CHILDREN= is a single anonymous node, use its contents as children 1324 nodes. This way, 1325 1326 : (org-element-create 'section nil (org-element-contents node)) 1327 1328 will yield expected results with contents of another node adopted into 1329 a newly created one. 1330 1331 Previously, one had to use 1332 1333 : (apply #'org-element-create 'section nil (org-element-contents node)) 1334 *** New property ~:range-type~ for org-element timestamp object 1335 1336 ~org-element-timestamp-parser~ now adds =:range-type= property to each 1337 timestamp object. Possible values: ~timerange~, ~daterange~, ~nil~. 1338 1339 ~org-element-timestamp-interpreter~ takes into account this property 1340 and returns an appropriate timestamp string. 1341 1342 *** New properties =:repeater-deadline-value= and =:repeater-deadline-unit= for org-element timestamp object 1343 1344 ~org-element-timestamp-parser~ now adds =:repeater-deadline-value= and 1345 =:repeater-deadline-unit= properties to each timestamp object that has 1346 a repeater deadline. For example, in =<2012-03-29 Thu ++1y/2y>=, =2y= 1347 is the repeater deadline with a value of =2= and unit of =y=. See 1348 "5.3.3 Tracking your habits" section in the manual. 1349 1350 Possible values for =:repeater-deadline-value=: ~positive integer~, ~nil~. 1351 1352 Possible values for =:repeater-deadline-unit=: ~hour~, ~day~, ~week~, 1353 ~month~, ~year~. 1354 1355 ~org-element-timestamp-interpreter~ takes into account these properties 1356 and returns an appropriate timestamp string. 1357 1358 *** =org-link= store functions are passed an ~interactive?~ argument 1359 1360 The ~:store:~ functions set for link types using 1361 ~org-link-set-parameters~ are now passed an ~interactive?~ argument, 1362 indicating whether ~org-store-link~ was called interactively. 1363 1364 Existing store functions will continue to work. 1365 1366 ** New functions and changes in function arguments 1367 1368 # This also includes changes in function behavior from Elisp perspective. 1369 1370 *** ~org-babel-lilypond-compile-lilyfile~ ignores optional second argument 1371 1372 The =TEST= parameter is better served by Emacs debugging tools. 1373 1374 *** ~org-print-speed-command~ is now an internal function 1375 1376 The old name is marked obsolete and the new name is 1377 ~org--print-speed-command~. 1378 1379 This function was always aimed for internal use when building speed 1380 command help buffer. Now, it is stated explicitly. 1381 1382 *** When ~org-link-file-path-type~ is a function, its argument is now a filename as it is read by ~org-insert-link~; not an absolute path 1383 1384 Previously, when ~org-link-file-path-type~ is set to a function, the 1385 function argument was the filename from the link expanded via 1386 ~expand-file-name~. Now, a bare filename is passed to the function. 1387 1388 *** ~org-create-file-search-functions~ can use ~org-list-store-props~ to suggest link description 1389 1390 In Org <9.0, ~org-create-file-search-functions~ could set ~description~ 1391 variable to suggest link description for the stored link. However, 1392 this feature stopped working since Org 9.0 switched to lexical binding. 1393 1394 Now, it is again possible for ~org-create-file-search-functions~ to 1395 supply link descriptions using ~(org-list-store-props :description 1396 "suggested description")~ in the search function body. 1397 1398 *** New API functions to store data within ~org-element-cache~ 1399 1400 Elisp programs can now store data inside Org element cache. 1401 1402 The data will remain stored as long as the Org buffer text associated 1403 with the cached elements remains unchanged. 1404 1405 Two options are available: 1406 - Store the data until any text within element boundaries is changed 1407 - Store the data, but ignore any changes inside element contents that 1408 do not affect the high-level element structure. For example, 1409 changes inside subheadings can be ignored for the data stored 1410 inside parent heading element. 1411 1412 The new functions are: ~org-element-cache-store-key~ and 1413 ~org-element-cache-get-key~. 1414 1415 *** New optional argument =UPDATE-HEADING= for ~org-bibtex-yank~ 1416 1417 When the new argument is non-nil, add data to the headline of the 1418 entry at point. 1419 1420 *** ~org-fold-hide-drawer-all~ is now interactive 1421 1422 ~org-fold-hide-drawer-all~ is now a command, accepting two optional 1423 arguments - region to act on. 1424 1425 *** =TYPES= argument in ~org-element-lineage~ can now be a symbol 1426 1427 When =TYPES= is symbol, only check syntax nodes of that type. 1428 1429 *** New optional argument =KEEP-CONTENTS= for ~org-element-copy~ 1430 1431 With the new argument, the contents is copied recursively. 1432 1433 *** ~org-element-property~ can now be used with ~setf~ 1434 1435 *** New optional arguments for ~org-element-property~ 1436 1437 The value of the new optional argument =DFLT= is returned if the 1438 property with given name is not present. Same as =DEFAULT= argument 1439 for ~alist-get~. 1440 1441 New optional argument =FORCE-UNDEFER= modifies the =NODE=, storing the 1442 resolved deferred values. 1443 1444 See the top comment in =lisp/org-element-ast.el= for more details 1445 about the deferred values. 1446 1447 *** New optional argument =NO-UNDEFER= in ~org-element-map~ and changed argument conventions 1448 1449 New optional argument =NO-UNDEFER=, when non-nil, will make 1450 ~org-element-map~ keep deferred secondary string values in their raw 1451 form. See the top comment in =lisp/org-element-ast.el= for more 1452 details about the deferred values. 1453 1454 =TYPES= argument can now be set to ~t~. This will match all the 1455 syntax nodes when traversing the tree. 1456 1457 ~FUN~ can now be a lisp form that will be evaluated with symbol ~node~ 1458 assigned to the current syntax node. 1459 1460 ~FUN~ can now throw ~:org-element-skip~ signal to skip recursing into 1461 current element children and secondary strings. 1462 1463 *** New optional argument =KEEP-DEFERRED= in ~org-element-parse-buffer~ 1464 1465 When non-nil, the deferred values and properties will not be resolved. 1466 See the top comment in =lisp/org-element-ast.el= for more details 1467 about the deferred values. 1468 1469 *** New optional argument =ANONYMOUS= for ~org-element-type~ 1470 1471 When the new argument is non-nil, return symbol ~anonymous~ for anonymous elements. 1472 Previously, ~nil~ would be returned. 1473 1474 *** ~org-element-adopt-elements~ is renamed to ~org-element-adopt~ 1475 1476 The old name is kept as an alias. The new name creates less confusion 1477 as the function can also act on objects. 1478 1479 *** ~org-element-extract-element~ is renamed to ~org-element-extract~ 1480 1481 The old name is kept as an alias. The new name creates less confusion 1482 as the function can also act on objects. 1483 1484 *** ~org-element-set-element~ is renamed to ~org-element-set~ 1485 1486 The old name is kept as an alias. The new name creates less confusion 1487 as the function can also act on objects. 1488 1489 *** ~org-export-get-parent~ is renamed to ~org-element-parent~ and moved to =lisp/org-element.el= 1490 1491 *** ~org-export-get-parent-element~ is renamed to ~org-element-parent-element~ and moved to =lisp/org-element.el= 1492 1493 *** ~org-insert-heading~ optional argument =TOP= is now =LEVEL= 1494 1495 A numeric value forces a heading at that level to be inserted. For 1496 backwards compatibility, non-numeric non-nil values insert level 1 1497 headings as before. 1498 1499 *** New optional argument for ~org-id-get~ 1500 1501 New optional argument =INHERIT= means inherited ID properties from 1502 parent entries are considered when getting an entry's ID (see 1503 ~org-id-link-consider-parent-id~ option). 1504 1505 *** New optional argument for ~org-link-search~ 1506 1507 If a missing heading is created to match the search string, the new 1508 optional argument =NEW-HEADING-CONTAINER= specifies where in the 1509 buffer it will be added. If not specified, new headings are created 1510 at level 1 at the end of the accessible part of the buffer, as before. 1511 1512 ** Miscellaneous 1513 *** Add completion for links to man pages 1514 1515 Completion is enabled for links to man pages added using ~org-insert-link~: 1516 =C-c C-l man RET emacscl TAB= to get =emacsclient=. Of course, the ~ol-man~ 1517 library should be loaded first. 1518 1519 *** Datetree structure headlines can now be complex 1520 1521 TODO state, priority, tags, statistics cookies, and COMMENT keywords 1522 are allowed in the tree structure. 1523 1524 *** Org links now support ~thing-at-point~ 1525 1526 You can now retrieve the destination of a link by calling 1527 ~(thing-at-point 'url)~. Requires Emacs 28 or newer. 1528 1529 In Emacs 30 or newer, ~forward-thing~ and ~bounds-of-thing-at-point~ 1530 is also supported for links. 1531 1532 *** Add support for ~logind~ idle time in ~org-user-idle-seconds~ 1533 1534 When Emacs is built with =dbus= support and 1535 the =org.freedesktop.login1= interface is available, fallback to 1536 checking the =IdleSinceHint= property when 1537 determining =org-user-idle-seconds= as the penultimate step. 1538 1539 *** =colview= dynamic block now writes column width specifications 1540 1541 When column format contains width specifications, =colview= dynamic 1542 block now writes these specifications as column width in the generated 1543 tables and automatically shrinks the columns on display. 1544 1545 Example: 1546 1547 : * PROYECTO EMACS 1548 : :PROPERTIES: 1549 : :COLUMNS: %10ITEM(PROJECT) 1550 : :END: 1551 : 1552 : Before 1553 : 1554 : #+BEGIN: columnview :id local 1555 : | PROJECT | 1556 : |----------------| 1557 : | PROYECTO EMACS | 1558 : #+END: 1559 : 1560 : After 1561 : 1562 : #+BEGIN: columnview :id local 1563 : | <10> | 1564 : | PROJECT | 1565 : |----------------| 1566 : | PROYECTO EMACS | 1567 : #+END: 1568 1569 *** =ob-lua=: Support all types and multiple values in results 1570 1571 Lua code blocks can now return values of any type and can also return 1572 multiple values. Previously, values of certain types were incorrectly 1573 converted to the empty string =""=, which broke HTML export for inline 1574 code blocks, and multiple values were incorrectly concatenated, where 1575 ~return 1, 2, 3~ was evaluated as =123=. 1576 1577 Multiple values are comma-separated by default, so that they work well 1578 with inline code blocks. To change the string used as the separator, 1579 customize ~org-babel-lua-multiple-values-separator~. 1580 1581 *** ~org-store-link~ now moves an already stored link to front of the ~org-stored-links~ 1582 1583 Previously, when the link to be stored were stored already, 1584 ~org-store-link~ displayed a message and did nothing. 1585 1586 Now, ~org-store-link~ moves the stored link to front of the list of 1587 stored links. This way, the link will show up first in the completion 1588 and when inserting all the stored links with ~org-insert-all-links~. 1589 1590 *** ob-python now sets ~python-shell-buffer-name~ in Org edit buffers 1591 1592 When editing a Python src block, the editing buffer is now associated 1593 with the Python shell specified by the src block's ~:session~ header, 1594 which means users can now send code directly from the edit buffer, 1595 e.g., using ~C-c C-c~, to the session specified in the Org buffer. 1596 1597 *** ~org-edit-special~ no longer force-starts session in R and Julia source blocks 1598 1599 Previously, when R/Julia source block had =:session= header argument 1600 set to a session name with "earmuffs" (like =*session-name*=), 1601 ~org-edit-special~ always started a session, if it does not exist. 1602 1603 Now, ~org-edit-special~ arranges that a new session with correct name 1604 is initiated only when user explicitly executes R/Julia-mode commands 1605 that trigger session interactions (requires ESS 24.01.0 or newer). 1606 The same session will remain available in the context of Org babel. 1607 1608 *** ~org-store-link~ behavior storing additional =CUSTOM_ID= links has changed 1609 1610 Previously, when storing =id:= link, ~org-store-link~ stored an 1611 additional "human readable" link using a node's =CUSTOM_ID= property. 1612 1613 This behavior has been expanded to store an additional =CUSTOM_ID= 1614 link when storing any type of external link type in an Org file, not 1615 just =id:= links. 1616 1617 *** =org-habit.el= now optionally inherits ~:STYLE: habit~ properties 1618 1619 Currently, the ~STYLE~ property of habits is not inherited when searching 1620 for entries. 1621 1622 This change allows the property to be inherited optionally by customizing 1623 the ~org-use-property-inheritance~ variable. 1624 1625 This change aims to provide more flexibility in managing habits, allowing 1626 users to dedicate separate subtrees or files to habits without manually 1627 setting the ~STYLE~ property for each sub-task. 1628 1629 The change is breaking when ~org-use-property-inheritance~ is set to ~t~. 1630 1631 *** =ox-org= preserves header arguments in src blocks 1632 1633 Previously, all the header arguments where stripped from src blocks 1634 during export. Now, header arguments are preserved. 1635 1636 *** =ox-org= now exports special table rows by default 1637 1638 Previously, when exporting to Org, special table rows (for example, 1639 width cookies) were not exported. Now, they are exported by default. 1640 1641 You can customize new option ~org-org-with-special-rows~ to fall back to previous behavior. 1642 1643 *** ~org-agenda-search-headline-for-time~ now ignores all the timestamp in headings 1644 1645 Previously, ~org-agenda-search-headline-for-time~ made Org agenda 1646 match anything resembling time inside headings. Even when the time 1647 was a part of a timestamp. 1648 1649 Now, all the timestamps in headings are ignored when searching the time. 1650 1651 *** =org-crypt.el= now applies initial visibility settings to decrypted entries 1652 1653 Previously, all the text was unfolded unconditionally, including property drawers. 1654 1655 *** Blank lines after removed objects are now retained during export 1656 1657 When certain objects in Org document are to be excluded from export, 1658 spaces after these objects were previously removed as well. 1659 1660 For example, if ~org-export-with-footnotes~ is set to nil, the footnote in 1661 1662 : Pellentesque dapibus suscipit ligula.[fn:1] Donec posuere augue in quam. 1663 1664 would be removed, leading to the following exported ASCII document 1665 1666 : Pellentesque dapibus suscipit ligula.Donec posuere augue in quam. 1667 1668 This is because spaces after footnote (and other markup) are 1669 considered a part of the preceding AST object in Org. 1670 1671 Now, unless there is a whitespace before an object to be removed, 1672 spaces are preserved during export: 1673 1674 : Pellentesque dapibus suscipit ligula. Donec posuere augue in quam. 1675 1676 *** Remove undocumented ~:target~ header parameter in ~ob-clojure~ 1677 1678 The ~:target~ header was only used internally to distinguish 1679 from Clojure and ClojureScript. 1680 This is now handled with an optional function parameter in 1681 the respective functions that need this information. 1682 1683 *** New org-entity alias: =\P= for =\para= 1684 1685 For symmetry with =\S= and =\sect= for the section symbol, =\P= has 1686 been added as an another form for the pilcrow symbol currently 1687 available as =\para=. 1688 1689 *** ~org-table-to-lisp~ no longer clobbers the regexp global state 1690 1691 It does no longer use regexps. 1692 1693 It is also faster. Large tables can be read quickly. 1694 1695 * Version 9.6 1696 1697 ** Important announcements and breaking changes 1698 *** =python-mode.el (MELPA)= support in =ob-python.el= is deprecated 1699 1700 We no longer aim to support third-party =python-mode.el= implementation of Python REPL. 1701 Only the built-in =python.el= will be supported from now on. 1702 1703 We still keep the old, partially broken, code in =ob-python.el= for 1704 the time being. It will be removed in the next release. 1705 1706 See https://orgmode.org/list/87r0yk7bx8.fsf@localhost for more details. 1707 1708 *** Element cache is enabled by default and works for headings 1709 1710 The old element cache code has been refactored. Emacs does not hang 1711 anymore when the cache is enabled. 1712 1713 When cache is enabled, ~org-element-at-point~ for headings is 1714 guaranteed to return valid =:parent= property. The highest-level 1715 headings contain new =org-data= element as their parent. 1716 1717 The new =org-data= element provides properties from top-level property 1718 drawer, buffer-global category, and =:path= property containing file 1719 path for file Org buffers. 1720 1721 The new cache still need to be tested extensively. Please, report any 1722 warning coming from element cache. If you see warnings regularly, it 1723 would be helpful to set ~org-element--cache-self-verify~ to 1724 ='backtrace= and provide the backtrace to Org mailing list. 1725 1726 *** Element cache persists across Emacs sessions 1727 1728 The cache state is saved between Emacs sessions. Enabled by default. 1729 1730 The cache persistence can be controlled via 1731 ~org-element-cache-persistent~. 1732 1733 *** Users experiencing performance issues can use new folding backend 1734 1735 The old folding backend used in Org is poorly scalable when the file 1736 size increases beyond few Mbs. The symptoms usually include slow 1737 cursor motion, especially in long-running Emacs sessions. 1738 1739 A new optimized folding backend is now available, and enabled by 1740 default. To disable it, put the following to the Emacs config *before* 1741 loading Org: 1742 1743 #+begin_src emacs-lisp 1744 (setq org-fold-core-style 'overlays) 1745 #+end_src 1746 1747 Even more performance optimization can be enabled by customizing 1748 =org-fold-core--optimise-for-huge-buffers=. However, this option may 1749 be dangerous. Please, read the variable docstring carefully to 1750 understand the possible consequences. 1751 1752 When =org-fold-core-style= is set to =text-properties=, several new 1753 features will become available and several notable changes will happen 1754 to the Org behavior. The new features and changes are listed below. 1755 1756 **** Hidden parts of the links can now be searched and revealed during isearch 1757 1758 [2024-06-09 Sun] Since Org 9.7, this is no longer working. See 1759 changes for Org 9.7. 1760 1761 In the past, hidden parts of the links could not be searched using 1762 isearch (=C-s=). Now, they are searchable by default. The hidden 1763 match is also revealed temporarily during isearch. 1764 1765 To restore the old behavior add the following core to your Emacs 1766 config: 1767 1768 #+begin_src emacs-lisp 1769 (defun org-hidden-link-ignore-isearch () 1770 "Do not match hidden parts of links during isearch." 1771 (org-fold-core-set-folding-spec-property 'org-link :isearch-open nil) 1772 (org-fold-core-set-folding-spec-property 'org-link :isearch-ignore t)) 1773 (add-hook 'org-mode-hook #'org-hidden-link-ignore-isearch) 1774 #+end_src 1775 1776 See docstring of =org-fold-core--specs= to see more details about 1777 =:isearch-open= and =:isearch-ignore= properties. 1778 1779 **** =org-catch-invisible-edits= now works for hidden parts of the links and for emphasis markers 1780 1781 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=. 1782 1783 Note that hidden parts of sub-/super-scripts are still not handled. 1784 1785 **** Breaking structure of folded elements automatically reveals the folded text 1786 1787 In the past, the user could be left with unfoldable text after breaking the org structure. 1788 1789 For example, if 1790 1791 #+begin_src org 1792 :DRAWER: 1793 like this 1794 :END: 1795 #+end_src 1796 1797 is folded and then edited into 1798 1799 #+begin_src org 1800 DRAWER: 1801 like this 1802 :END: 1803 #+end_src 1804 The hidden text would not be revealed. 1805 1806 Now, breaking structure of drawers, blocks, and headings automatically 1807 reveals the folded text. 1808 1809 **** Folding state of the drawers is now preserved when cycling headline visibility 1810 1811 In the past drawers were folded every time a headline is unfolded. 1812 1813 Now, it is not the case anymore. The drawer folding state is 1814 preserved. The initial folding state of all the drawers in buffer is 1815 set according to the startup visibility settings. 1816 1817 To restore the old behavior, add the following code to Emacs config: 1818 1819 #+begin_src emacs-lisp 1820 (add-hook 'org-cycle-hook #'org-cycle-hide-drawers) 1821 #+end_src 1822 1823 Note that old behavior may cause performance issues when cycling 1824 headline visibility in large buffers. 1825 1826 **** =outline-*= functions may no longer work correctly in Org mode 1827 1828 The new folding backend breaks some of the =outline-*= functions that 1829 rely on the details of visibility state implementation in 1830 =outline.el=. The old Org folding backend was compatible with the 1831 =outline.el= folding, but it is not the case anymore with the new 1832 backend. From now on, using =outline-*= functions is strongly 1833 discouraged when working with Org files. 1834 1835 *** HTML export uses MathJax 3+ instead of MathJax 2 1836 1837 Org now uses MathJax 3 by default instead of MathJax 2. During HTML 1838 exports, Org automatically converts all legacy MathJax 2 options to 1839 the corresponding MathJax 3+ options, except for the ~path~ option in 1840 which now /must/ point to a file containing MathJax version 3 or 1841 later. The new Org does /not/ work with the legacy MathJax 2. 1842 1843 Further, if you need to use a non-default ~font~ or ~linebreaks~ (now 1844 ~overflow~), then the ~path~ must point to MathJax 4 or later. 1845 1846 See the updated ~org-html-mathjax-options~ for more details. 1847 1848 MathJax 3, a ground-up rewrite of MathJax 2 came out in 2019. The new 1849 version brings modularity, better and faster rendering, improved LaTeX 1850 support, and more. 1851 1852 For more information about new features, see: 1853 1854 https://docs.mathjax.org/en/latest/upgrading/whats-new-3.0.html 1855 https://docs.mathjax.org/en/latest/upgrading/whats-new-3.1.html 1856 https://docs.mathjax.org/en/latest/upgrading/whats-new-3.2.html 1857 1858 MathJax 3 comes with useful extensions. For instance, you can typeset 1859 calculus with the ~physics~ extension or chemistry with the ~mhchem~ 1860 extension, like in LaTeX. 1861 1862 Note that the Org manual does not discuss loading of MathJax 1863 extensions via ~+HTML_MATHJAX~ anymore. It has never worked anyway. 1864 To actually load extensions, consult the official documentation: 1865 1866 https://docs.mathjax.org/en/latest/input/tex/extensions.html 1867 1868 Lastly, MathJax 3 changed the default JavaScript content delivery 1869 network (CDN) provider from CloudFlare to jsDelivr. You can find the 1870 new terms of service, including the privacy policy, at 1871 https://www.jsdelivr.com/terms. 1872 1873 *** List references in source block variable assignments are now proper lists 1874 1875 List representation of named lists is now converted to a simple list 1876 as promised by the manual section [[info:org#Environment of a Code Block][org#Environment of a Code Block]]. 1877 Previously, it was converted to a list of lists. 1878 1879 Before: 1880 1881 #+begin_src org 1882 ,#+NAME: example-list 1883 - simple 1884 - not 1885 - nested 1886 - list 1887 1888 ,#+BEGIN_SRC emacs-lisp :var x=example-list :results value 1889 (format "%S" x) 1890 ,#+END_SRC 1891 1892 ,#+RESULTS: 1893 : (("simple" (unordered ("not") ("nested"))) ("list")) 1894 #+end_src 1895 1896 After: 1897 1898 #+begin_src org 1899 ,#+BEGIN_SRC emacs-lisp :var x=example-list :results value 1900 (format "%S" x) 1901 ,#+END_SRC 1902 1903 ,#+RESULTS: 1904 : ("simple" "list") 1905 #+end_src 1906 1907 1908 ** New features 1909 *** Column view: new commands to move rows up & down 1910 You can move rows up & down in column view with 1911 ~org-columns-move-row-up~ and ~org-columns-move-row-down~. 1912 Keybindings are the same as ~org-move-subtree-up~ and ~org-move-subtree-down~ 1913 =M-<up>= and =M-<down>=. 1914 *** Clock table can now produce quarterly reports 1915 1916 =:step= clock table parameter can now be set to =quarter=. 1917 *** Publishing now supports links to encrypted Org files 1918 1919 Links to other published Org files are automatically converted to the 1920 corresponding html links. Now, this feature is also available when 1921 links point to encrypted Org files, like 1922 =[[file:foo.org.gpg::Heading]]=. 1923 1924 *** Interactive commands now support escaping text inside comment blocks 1925 1926 ~org-edit-special~ and ~org-insert-structure-template~ now handle 1927 comment blocks. 1928 1929 See [[*New command ~org-edit-comment-block~ to edit comment block at 1930 point]]. 1931 1932 *** New customization option =org-property-separators= 1933 A new alist variable to control how properties are combined. 1934 1935 If a property is specified multiple times with a =+=, like 1936 1937 #+begin_src org 1938 :PROPERTIES: 1939 :EXPORT_FILE_NAME: some/path 1940 :EXPORT_FILE_NAME+: to/file 1941 :END: 1942 #+end_src 1943 1944 the old behavior was to always combine them with a single space 1945 (=some/path to/file=). For the new variable, the car of each item in 1946 the alist should be either a list of property names or a regular 1947 expression, while the cdr should be the separator to use when 1948 combining that property. 1949 1950 The default value for the separator is a single space, if none of the 1951 provided items in the alist match a given property. 1952 1953 For example, in order to combine =EXPORT_FILE_NAME= properties with a 1954 forward slash =/=, one can use 1955 1956 #+begin_src emacs-lisp 1957 (setq org-property-separators '((("EXPORT_FILE_NAME") . "/"))) 1958 #+end_src 1959 1960 The example above would then produce the property value 1961 =some/path/to/file=. 1962 1963 *** New library =org-persist.el= implements variable persistence across Emacs sessions 1964 1965 The library stores variable data in ~org-persist-directory~ (set to XDG 1966 cache dir by default). 1967 1968 The entry points are ~org-persist-register~, ~org-persist-unregister~, 1969 ~org-persist-read~, and ~org-persist-read-all~. Storing circular 1970 structures is supported. Storing references between different 1971 variables is also supported (see =:inherit= key in 1972 ~org-persist-register~). 1973 1974 The library permits storing buffer-local variables. Such variables 1975 are linked to the buffer text, file =inode=, and file path. 1976 1977 *** New =:options= attribute when exporting tables to LaTeX 1978 1979 The =:options= attribute allows adding an optional argument with a 1980 list of various table options (between brackets in LaTeX export), 1981 since certain tabular environments, such as longtblr of the 1982 tabularray LaTeX package, provides this structure. 1983 1984 *** New =:compact= attribute when exporting lists to Texinfo 1985 1986 The =:compact= attribute allows exporting multiple description list 1987 items to one =@item= command and one or more =@itemx= commands. This 1988 feature can also be enabled for all description lists in a file using 1989 the =compact-itemx= export option, or globally using the 1990 ~org-texinfo-compact-itemx~ variable. 1991 1992 *** New shorthands recognized when exporting to Texinfo 1993 1994 Items in a description list that begin with =Function:=, =Variable:= 1995 or certain related prefixes are converted using Texinfo definition 1996 commands. 1997 *** New =:noweb-prefix= babel header argument 1998 1999 =:noweb-prefix= can be set to =no= to prevent the prefix characters 2000 from being repeated when expanding a multiline noweb reference. 2001 2002 *** New =:noweb= babel header argument value =strip-tangle= 2003 2004 =:noweb= can be set to =strip-tangle= to strip the noweb syntax references 2005 before tangling. 2006 2007 *** New LaTeX source block backend using =engraved-faces-latex= 2008 2009 When ~org-latex-src-block-backend~ is set to ~engraved~, 2010 =engrave-faces-latex= from [[http://elpa.gnu.org/packages/engrave-faces.html][engrave-faces]] is used to transcode source 2011 blocks to LaTeX. This requires the =fvextra=, =float=, and (by 2012 default, but not necessarily) =tcolorbox= LaTeX packages be 2013 installed. It uses Emacs's font-lock information, and so tends to 2014 produce results superior to Minted or Listings. 2015 *** Support for =#+include=-ing URLs 2016 2017 =#+include: FILE= will now accept URLs as the file. 2018 *** Structure templates now respect case used in ~org-structure-template-alist~ 2019 2020 The block type in ~org-structure-template-alist~ is not case-sensitive. 2021 When the block type starts from the upper case, structure template 2022 will now insert =#+BEGIN_TYPE=. Previously, lower-case =#+begin_type= was inserted unconditionally. 2023 *** New ox-latex tabbing support for tables. 2024 2025 LaTeX tables can now be exported to the latex tabbing environment 2026 tabbing environment]]. 2027 This is done by adding =#+ATTR_LATEX: :mode tabbing= at the top 2028 of the table. 2029 The default column width is set to 1/n times the latex textwidth, 2030 where n is the number of columns. 2031 This behavior can be changed by supplying a =:align= parameter. 2032 2033 The tabbing environment can be useful when generating simple tables which 2034 can be span multiple pages and when table cells are allowed to overflow. 2035 *** Support for =nocite= citations and sub-bibliographies in the "csl" export processor 2036 2037 The "csl" citation export processor now supports =nocite= style 2038 citations that add items to the printed bibliography without visible 2039 references in the text. Using the key =*= in a nocite citation, for 2040 instance, 2041 2042 #+begin_src org 2043 [cite/n:@*] 2044 #+end_src 2045 2046 includes all available items in the printed bibliography. 2047 2048 The "csl" export processor now also supports sub-bibliographies that 2049 show only a subset of the references based on some criterion. For 2050 example, 2051 2052 #+begin_src org 2053 #+print_bibliography: :type book :keyword ai 2054 #+end_src 2055 2056 prints a sub-bibliography containing the book entries with =ai= among 2057 their keywords. 2058 *** New =:filetitle= option for clock table 2059 2060 The =:filetitle= option for clock tables can be set to ~t~ to show org 2061 file title (set by =#+title:=) in the File column instead of the 2062 file name. For example: 2063 2064 #+begin_src org 2065 ,#+BEGIN: clocktable :scope agenda :maxlevel 2 :block thisweek :filetitle t 2066 #+end_src 2067 2068 If a file does not have a title, the table will show the file name 2069 instead. 2070 *** New =org-md-toplevel-hlevel= variable for Markdown export 2071 2072 The =org-md-toplevel-hlevel= customization variable sets the heading 2073 level used for top level headings, much like how 2074 =org-html-toplevel-hlevel= sets the heading level used for top level 2075 headings in HTML export. 2076 *** Babel: new syntax to pass the contents of a src block as argument 2077 2078 Use the header argument =:var x=code-block[]= or 2079 : #+CALL: fn(x=code-block[]) 2080 to pass the contents of a named code block as a string argument. 2081 *** New property =ORG-IMAGE-ACTUAL-WIDTH= for overriding global ~org-image-actual-width~ 2082 2083 The new property =ORG-IMAGE-ACTUAL-WIDTH= can override the global 2084 variable ~org-image-actual-width~ value for inline images display width. 2085 2086 *** Outline cycling can now include inline image visibility 2087 2088 New ~org-cycle-hook~ function ~org-cycle-display-inline-images~ for 2089 auto-displaying inline images in the visible parts of the subtree. 2090 This behavior is controlled by new custom option 2091 ~org-cycle-inline-images-display~. 2092 2093 *** New ~org-babel-tangle-finished-hook~ hook run at the very end of ~org-babel-tangle~ 2094 2095 This provides a proper counterpart to ~org-babel-pre-tangle-hook~, as 2096 ~org-babel-post-tangle-hook~ is run 2097 per-tangle-destination. ~org-babel-tangle-finished-hook~ is just run 2098 once after the post tangle hooks. 2099 2100 *** New =:backend= header argument for clojure code blocks 2101 2102 The =:backend= header argument on clojure code blocks can override the 2103 value of ~org-babel-clojure-backend~. For example: 2104 2105 #+begin_src clojure :backend babashka 2106 (range 2) 2107 #+end_src 2108 2109 *** New =:results discard= header argument 2110 2111 Unlike =:results none=, the return value of code blocks called with 2112 =:results discard= header argument is always ~nil~. Org does not 2113 attempt to analyze the results and simply returns nil. This can be 2114 useful when the code block is used for side effects only but generates 2115 large outputs that may be slow to analyze for Org. 2116 2117 *** Add Capture template hook properties 2118 2119 Capture templates can now attach template specific hooks via the 2120 following properties: ~:hook~, ~:prepare-finalize~, 2121 ~:before-finalize~, ~:after-finalize~. These nullary functions run 2122 prior to their global counterparts for the selected template. 2123 2124 ** New options 2125 *** New option ~org-columns-checkbox-allowed-values~ 2126 2127 This would allow to use more than two states ("[ ]", "[X]") in 2128 columns with SUMMARY-TYPE that use checkbox ("X", "X/", "X%"). 2129 For example you can add an intermediate state ("[-]"). 2130 Or empty state ("") to remove checkbox. 2131 2132 *** A new option for custom setting ~org-refile-use-outline-path~ to show document title in refile targets 2133 2134 Setting ~org-refile-use-outline-path~ to ~'title~ will show title 2135 instead of the file name in refile targets. If the document do not have 2136 a title, the filename will be used, similar to ~'file~ option. 2137 2138 *** A new option for custom setting ~org-agenda-show-outline-path~ to show document title 2139 2140 Setting ~org-agenda-show-outline-path~ to ~'title~ will show title 2141 instead of the file name at the beginning of the outline. The title of 2142 the document can be set by special keyword =#+title:=. 2143 2144 *** New custom settings =org-icalendar-scheduled-summary-prefix= and =org-icalendar-deadline-summary-prefix= 2145 2146 These settings allow users to define prefixes for exported summary 2147 lines in ICS exports. The customization can be used to disable 2148 the prefixes completely or make them a little bit more verbose 2149 (e.g. "Deadline: " instead of the default "DL: "). 2150 2151 The same settings can also be applied via corresponding exporter 2152 options: 2153 =:icalendar-scheduled-summary-prefix=, 2154 =:icalendar-deadline-summary-prefix= 2155 2156 *** A new custom setting =org-hide-drawer-startup= to control initial folding state of drawers 2157 2158 Previously, all the drawers were always folded when opening an Org 2159 file. This only had an effect on the drawers outside folded 2160 headlines. The drawers inside folded headlines were re-folded because 2161 =org-cycle-hide-drawers= was present inside =org-cycle-hook=. 2162 2163 With the new folding backend, running =org-cycle-hide-drawers= is no 2164 longer needed if all the drawers are truly folded on startup: [[*Folding 2165 state of the drawers is now preserved when cycling headline 2166 visibility]]. However, this has an unwanted effect when a user does 2167 not want the drawers to be folded (see [[https://orgmode.org/list/m2r14f407q.fsf@ntnu.no][this bug report]]). 2168 2169 The new custom setting gives more control over initial folding state 2170 of the drawers. When set to =nil= (default is =t=), the drawers are 2171 not folded on startup. 2172 2173 The folding state can also be controlled on per-file basis using 2174 =STARTUP= keyword: 2175 2176 : #+startup: hidedrawers 2177 : #+startup: nohidedrawers 2178 2179 *** New custom setting ~org-icalendar-force-alarm~ 2180 2181 The new setting, when set to non-nil, makes Org create alarm at the 2182 event time when the alarm time is set to 0. The default value is 2183 nil -- do not create alarms at the event time. 2184 2185 *** New special value ~'attach~ for src block =:dir= option 2186 2187 Passing the symbol ~attach~ or string ="'attach"= (with quotes) to the =:dir= 2188 option of a src block is now equivalent to =:dir (org-attach-dir) :mkdir yes= 2189 and any file results with a path descended from the attachment directory will 2190 use =attachment:= style links instead of the standard =file:= link type. 2191 2192 ** New functions and changes in function arguments 2193 *** New function ~org-get-title~ to get =#+TITLE:= property from buffers 2194 2195 A function to collect the document title from the org-mode buffer. 2196 2197 *** ~org-fold-show-entry~ does not fold drawers by default anymore 2198 2199 ~org-fold-show-entry~ now accepts an optional argument HIDE-DRAWERS. 2200 When the argument is non-nil, the function folds all the drawers 2201 inside entry. This was the default previously. 2202 2203 Now, ~org-fold-show-entry~ does not fold drawers by default. 2204 2205 *** New command ~org-edit-comment-block~ to edit comment block at point 2206 2207 As the contents of comments blocks is not parsed as Org markup, the 2208 headlines and keywords inside should be escaped, similar to src 2209 blocks, example blocks, and export blocks. This in inconvenient to do 2210 manually and ~org-edit-special~ is usually advised to edit text in 2211 such kind of blocks. 2212 2213 Now, comment block editing is also supported via this new function. 2214 2215 *** New function ~org-element-cache-map~ for quick mapping across Org elements 2216 2217 When element cache is enabled, the new function provides the best 2218 possible performance to map across large Org buffers. 2219 2220 It is recommended to provide =:next-re= and =:fail-re= parameters for 2221 best speed. 2222 2223 Diagnostic information about execution speed can be provided according 2224 to ~org-element--cache-map-statistics~ and 2225 ~org-element--cache-map-statistics-threshold~. 2226 2227 ~org-scan-tags~ and tag views in agenda utilize the new function. 2228 *** New function ~org-element-at-point-no-context~ 2229 2230 This function is like ~org-element-at-point~, but it does not try to 2231 update the cache and does not guarantee correct =:parent= properties 2232 for =headline= elements. 2233 2234 This function is faster than ~org-element-at-point~ when used together 2235 with frequent buffer edits. 2236 *** Various Org API functions now use cache and accept Org elements as optional arguments 2237 2238 ~org-in-archived-heading-p~, ~org-in-commented-heading-p~, 2239 ~org-up-heading-safe~, ~org-end-of-subtree~, ~org-goto-first-child~, 2240 ~org-back-to-heading~, ~org-entry-get-with-inheritance~, and 2241 ~org-narrow-to-subtree~ all accept Org element as an extra optional 2242 argument. 2243 2244 ~org-get-tags~ now accepts Org element or buffer position as first 2245 argument. 2246 2247 *** New function ~org-texinfo-kbd-macro~ 2248 2249 This function is intended for us in the definition of a ~kbd~ macro in 2250 files that are exported to Texinfo. 2251 2252 *** =org-at-heading-p= now recognizes optional argument. Its meaning is inverted. 2253 2254 =org-at-heading-p= now returns t by default on headings inside folds. 2255 Passing optional argument will produce the old behavior. 2256 2257 *** =org-babel-execute:plantuml= can output ASCII graphs in the buffer 2258 2259 Previously, executing PlantUML src blocks always exported to a file. Now, if 2260 :results is set to a value which does not include "file", no file will be 2261 exported and an ASCII graph will be inserted below the src block. 2262 2263 ** Removed or renamed functions and variables 2264 *** =org-plantump-executable-args= is renamed and applies to jar as well 2265 2266 The new variable name is =org-plantuml-args=. It now applies to both 2267 jar PlantUML file and executable. 2268 *** Default values and interpretations of ~org-time-stamp-formats~ and ~org-time-stamp-custom-formats~ are changed 2269 2270 Leading =<= and trailing =>= in the default values of 2271 ~org-time-stamp-formats~ and ~org-time-stamp-custom-formats~ are 2272 stripped. 2273 2274 The Org functions that are using these variables also ignore leading 2275 and trailing brackets (=<...>= and =[...]=, if present). 2276 2277 This change makes the Org code more consistent and also makes the 2278 docstring for ~org-time-stamp-custom-formats~ accurate. 2279 2280 No changes on the user side are needed if 2281 ~org-time-stamp-custom-formats~ was customized. 2282 *** ~org-timestamp-format~ is renamed to ~org-format-timestamp~ 2283 2284 The old function name is similar to other ~org-time-stamp-format~ 2285 function. The new name emphasizes that ~org-format-timestamp~ works 2286 on =timestamp= objects. 2287 2288 *** Updated argument list in ~org-time-stamp-format~ 2289 2290 New =custom= argument in ~org-time-stamp-format~ makes the function 2291 use ~org-time-stamp-custom-formats~ instead of 2292 ~org-time-stamp-formats~ to determine the format. 2293 2294 Optional argument =long= is renamed to =with-time=, emphasizing that it refers to time stamp format with time specification. 2295 2296 Optional argument =inactive= can now have a value =no-brackets= to 2297 return format string with brackets stripped. 2298 2299 ** Miscellaneous 2300 *** SQL Babel ~:dbconnection~ parameter can be mixed with other SQL Babel parameters 2301 2302 Before you could either specify SQL parameters like ~:dbhost~, 2303 ~:dbuser~, ~:database~, etc or a ~:dbconnection~ parameter which looks 2304 up all other parameters from the ~sql-connection-alist~ variable. Now 2305 it's possible to specify a ~:dbconnection~ and additionally other 2306 parameters that will add or overwrite the parameters coming from 2307 ~sql-connection-alist~. 2308 2309 E.g. if you have a connection in your ~sql-connection-alist~ to a 2310 server that has many databases, you don't need an entry for every 2311 database but instead can just specify ~:database~ next to your 2312 ~:dbconnection~ parameter. 2313 2314 *** Post-processing code blocks can return an empty list 2315 2316 When the result of a regular code block is nil, then that was already 2317 treated as an empty list. Now that is also the case for code blocks 2318 that post-process the result of another block. 2319 2320 *** Styles are customizable in ~biblatex~ citation processor 2321 2322 It is now possible to add new styles or modify old ones in ~biblatex~ 2323 citation processor. See ~org-cite-biblatex-styles~ for more 2324 information. 2325 2326 *** Citation processors can declare styles dynamically 2327 2328 When a citation processor is registered, it is now possible to set 2329 ~:cite-styles~ key to a function, which will be called whenever the 2330 list of styles is required. 2331 2332 *** Org also searches for CSL style files in default directory 2333 2334 When CSL style file name is relative, Org first looks into 2335 default-directory before trying ~org-cite-csl-styles-dir~. 2336 2337 *** Users can add checkers to the linting process 2338 2339 The function ~org-lint-add-checker~ allows one to add personal checks 2340 when calling ~org-lint~. See its docstring for more information. 2341 2342 *** New =transparent-image-converter= property for =dvipng= 2343 2344 The =dvipng= option in ~org-preview-latex-process-alist~ has a new 2345 property =transparent-image-converter= which is used instead of 2346 =image-converter= when producing transparent images. 2347 2348 *** =:tangle-mode= now accepts more permissions formats 2349 2350 Previously =:tangle-mode (identity #o755)= was the only reasonable way 2351 to set the file mode. ~org-babel-interpret-file-mode~ has been 2352 introduced which will accept three new formats: 2353 + Short octals, e.g. =:tangle-mode o755= 2354 + ls-style, e.g. =:tangle-mode rwxrw-rw-= 2355 + chmod-style, e.g. =:tangle-mode u+x= 2356 2357 Chmod-style permissions are based on the new variable 2358 ~org-babel-tangle-default-file-mode~. 2359 2360 *** A new custom setting =org-agenda-clock-report-header= to add a header to org agenda clock report 2361 2362 *** ~org-latex-listings~ has been replaced with ~org-latex-src-block-backend~ 2363 2364 ~org-latex-listings~ has been renamed to better reflect the current 2365 purpose of the variable. The replacement variable 2366 ~org-latex-src-block-backend~ acts in exactly the same way, however it 2367 accepts =listings= and =verbatim= in place of =t= and =nil= (which 2368 still work, but are no longer listed as valid options). 2369 2370 *** ~org-link-parameters~ has a new ~:insert-description~ parameter 2371 2372 The value of ~:insert-description~ is used as the initial input when 2373 prompting for a link description. It can be a string (used as-is) or 2374 a function (called with the same arguments as 2375 ~org-make-link-description-function~ to return a string to use). 2376 2377 An example of a such function for =info:= links is 2378 ~org-info-description-as-command~. To access a manual section outside 2379 of Org, description may be pasted to shell prompt or evaluated within 2380 Emacs using =M-:= (wrapped into parenthesis). For example, 2381 description of the =info:org#Tags= link is =info "(org) Tags"=. To 2382 restore earlier behavior add to your Emacs init file the following: 2383 #+begin_src elisp :results silent :eval never-export 2384 (with-eval-after-load 'ol-info 2385 (org-link-set-parameters "info" :insert-description nil)) 2386 #+end_src 2387 2388 *** New list of languages for LaTeX export: ~org-latex-language-alist~ 2389 2390 ~org-latex-language-alist~ unifies into a single list the old language 2391 lists for the =babel= and =polyglossia= LaTeX packages: 2392 ~org-latex-babel-language-alist~ and 2393 ~org-latex-polyglossia-language-alist~, respectively, which are 2394 declared obsolete. 2395 2396 This new list captures the current state of art regarding language 2397 support in LaTeX. The new =babel= syntax for loading languages via 2398 =ini= files and the new command =\babelprovide= (see: 2399 https://mirrors.ctan.org/macros/latex/required/babel/base/babel.pdf) 2400 are also supported. 2401 *** Texinfo exports include LaTeX 2402 2403 With the new customization option ~org-texinfo-with-latex~ set to (its 2404 default value) ~'detect~, if the system runs Texinfo 6.8 (3 July 2021) 2405 or newer, Org will export all LaTeX fragments and environments using 2406 Texinfo ~@math~ and ~@displaymath~ commands respectively. 2407 *** More flexible ~org-attach-id-to-path-function-list~ 2408 2409 List entries may return nil if they are unable to handle the passed 2410 ID. So, responsibility is passed to the next item in the list. 2411 Default entries ~org-attach-id-uuid-folder-format~ and 2412 ~org-attach-id-ts-folder-format~ now return nil for too short IDs. 2413 Earlier an obscure error has been thrown. 2414 2415 After the change, error text suggests adjusting 2416 ~org-attach-id-to-path-function-list~ value. The 2417 ~org-attach-dir-from-id~ function is adapted to ignore nil values and 2418 to take first non-nil value instead of the value returned by first 2419 ~org-attach-id-to-path-function-list~ item. 2420 2421 New policy allows mixing different ID styles while keeping subfolder 2422 layout suited best for each one. For example, one can use the 2423 following snippet to allow multiple different ID formats in Org files. 2424 2425 #+begin_src emacs-lisp 2426 (setq org-attach-id-to-path-function-list 2427 '(;; When ID looks like an UUIDs or Org internal ID, use 2428 ;; `org-attach-id-uuid-folder-format'. 2429 (lambda (id) 2430 (and (or (org-uuidgen-p id) 2431 (string-match-p "[0-9a-z]\\{12\\}" id)) 2432 (org-attach-id-uuid-folder-format id))) 2433 ;; When ID looks like a timestamp-based ID. Group by year-month 2434 ;; folders. 2435 (lambda (id) 2436 (and (string-match-p "[0-9]\\{8\\}T[0-9]\\{6\\}\.[0-9]\\{6\\}" id) 2437 (org-attach-id-ts-folder-format id))) 2438 ;; Any other ID goes into "important" folder. 2439 (lambda (id) (format "important/%s/%s" (substring id 0 1) id)) 2440 ;; Fallback to detect existing attachments for old defaults. 2441 ;; All the above functions, even when return non-nil, would 2442 ;; point to non-existing folders. 2443 org-attach-id-uuid-folder-format 2444 org-attach-id-ts-folder-format)) 2445 #+end_src 2446 * Version 9.5 2447 2448 ** Important announcements and breaking changes 2449 2450 *** The =contrib/= now lives in a separate repository 2451 2452 Org's repository has been trimmed from the =contrib/= directory. 2453 2454 The old contents of the =contrib/= directory now lives in a separate 2455 repository at https://git.sr.ht/~bzg/org-contrib. 2456 2457 You can install this repository by cloning it and updating your 2458 ~load-path~ accordingly. You can also install =org-contrib= as a 2459 [[https://elpa.nongnu.org/nongnu/][NonGNU ELPA]] package. 2460 2461 *** Org ELPA and Org archives won't be available for Org > 9.5 2462 2463 [[https://orgmode.org/elpa.html][Org ELPA]] is still available for installing Org 9.5, either with or 2464 without contributed packages, but future versions won't be available 2465 via Org ELPA, as we are deprecating this installation method. 2466 2467 Also, Org 9.5 is available as =tar.gz= and =zip= archives, but this 2468 installation method is also deprecated. 2469 2470 If you want to install the latest stable versions of Org, please use 2471 the GNU ELPA package. If you want to install the contributed files, 2472 please use the NonGNU ELPA package. If you want to keep up with the 2473 latest unstable Org, please install from the Git repository. 2474 2475 See https://orgmode.org/org.html#Installation for the details. 2476 2477 *** =ditaa.jar= is not bundled with Org anymore 2478 2479 =ditaa.jar= used to be bundled with Org but it is not anymore. 2480 See [[https://github.com/stathissideris/ditaa][the ditaa repository]] on how to install it. 2481 2482 *** ~org-adapt-indentation~ now defaults to =nil= 2483 2484 If you want to automatically indent headlines' metadata, set it to 2485 =headline-data=. 2486 2487 If you want to automatically indent every line to the headline's 2488 current indentation, set it to =t=. 2489 2490 Indent added by =RET= and =C-j= also depends on the value of 2491 ~electric-indent-mode~. Enabling this mode by default in 9.4 revealed 2492 some bugs caused confusing behavior. If you disabled 2493 ~electric-indent-mode~ for this reason, it is time to try it again. 2494 Hopefully problems have been fixed. See [[https://orgmode.org/worg/org-faq.html#indentation][this FAQ]] for more details. 2495 2496 *** ~org-speed-commands-user~ is obsolete, use ~org-speed-commands~ 2497 2498 Setting ~org-speed-commands-user~ in your configuration won't have any 2499 effect. Please set ~org-speed-commands~ instead, which see. 2500 2501 *** Some =ob-*.el= files have been moved to the org-contrib repo 2502 2503 These files have been moved to https://git.sr.ht/~bzg/org-contrib: 2504 2505 - ob-abc.el 2506 - ob-asymptote.el 2507 - ob-coq.el 2508 - ob-ebnf.el 2509 - ob-hledger.el 2510 - ob-io.el 2511 - ob-J.el 2512 - ob-ledger.el 2513 - ob-mscgen.el 2514 - ob-picolisp.el 2515 - ob-shen.el 2516 - ob-stan.el 2517 - ob-vala.el 2518 2519 See the discussion [[msg::87bl9rq29m.fsf@gnu.org][here]]. 2520 2521 *** Compatibility with Emacs versions 2522 2523 We made it explicit that we aim at keeping the latest stable version 2524 of Org compatible with at least Emacs V, V-1 and V-2, where V is the 2525 stable major version of Emacs. 2526 2527 For example, if the current major version of Emacs is 28.x, then the 2528 latest stable version of Org should be compatible with Emacs 28.x, 2529 27.x and 26.x – but not with Emacs 25.x. 2530 2531 See [[https://orgmode.org/worg/org-maintenance.html#emacs-compatibility][this note on Worg]] and [[git::519947e508e081e71bf67db99e27b1c171ba4dfe][this commit]]. 2532 2533 *** The keybinding for ~org-table-blank-field~ has been removed 2534 2535 If you prefer to keep the keybinding, you can add it back to 2536 ~org-mode-map~ like so: 2537 2538 #+begin_src emacs-lisp 2539 (define-key org-mode-map (kbd "C-c SPC") #'org-table-blank-field) 2540 #+end_src 2541 2542 ** New features 2543 2544 *** New citation engine 2545 2546 Org 9.5 provides a new library =oc.el= which provides tooling to 2547 handle citations in Org, e.g., activate, follow, insert, and export 2548 them, respectively called "activate", "follow", "insert" and "export" 2549 capabilities. Libraries responsible for providing some, or all, of 2550 these capabilities are called "citation processors". 2551 2552 The manual contains a few pointers to let you start and you may want 2553 to check [[https://blog.tecosaur.com/tmio/2021-07-31-citations.html][this blog post]]. If you need help using this new features, 2554 please ask on the mailing list. 2555 2556 Thanks to Nicolas Goaziou for implementing this, to Bruce D’Arcus for 2557 helping him and to John Kitchin for paving the way with =org-ref.el=. 2558 2559 *** Async session evaluation 2560 2561 The =:async= header argument can be used for asynchronous evaluation 2562 in session blocks for certain languages. 2563 2564 Currently, async evaluation is supported in Python. There is also 2565 functionality to implement async evaluation in other languages that 2566 use comint, but this needs to be done on a per-language basis. 2567 2568 By default, async evaluation is disabled unless the =:async= header 2569 argument is present. You can also set =:async no= to force it off 2570 (for example if you've set =:async= in a property drawer). 2571 2572 Async evaluation is disabled during export. 2573 *** ~ox-koma-letter.el~ is now part of Org's core 2574 2575 ~ox-koma-letter.el~ provides a KOMA scrlttr2 back-end for the Org 2576 export engine. It used to be in the =contrib/= directory but it is 2577 now part of Org's core. 2578 2579 *** Support exporting DOI links 2580 2581 Org now supports export for DOI links, through its new =ol-doi.el= 2582 library. For backward compatibility, it is loaded by default. 2583 2584 *** Add a new ~:refile-targets~ template option 2585 2586 When exiting capture mode via ~org-capture-refile~, the variable 2587 ~org-refile-targets~ will be temporarily bound to the value of this 2588 template option. 2589 2590 *** New startup options =#+startup: show<n>levels= 2591 2592 These startup options complement the existing =overview=, =content=, 2593 =showall=, =showeverything= with a way to start the document with n 2594 levels shown, where n goes from 2 to 5. 2595 2596 Example: 2597 2598 : #+startup: show3levels 2599 2600 *** New =u= table formula flag to enable Calc units simplification mode 2601 2602 A new =u= mode flag for Calc formulas in Org tables has been added to 2603 enable Calc units simplification mode. 2604 2605 *** Support fontification of inline export snippets 2606 2607 See [[msg:87im57fh8j.fsf@gmail.com][this thread]]. 2608 2609 *** New command =org-refile-reverse= bound to =C-c C-M-w= 2610 2611 You can now use =C-c C-M-w= to run ~org-refile-reverse~. 2612 2613 It is almost identical to ~org-refile~, except that it temporarily 2614 toggles how ~org-reverse-note-order~ applies to the current buffer. 2615 So if ~org-refile~ would append the entry as the last entry under the 2616 target heading, ~org-refile-reverse~ will prepend it as the first 2617 entry, and vice-versa. 2618 2619 *** LaTeX attribute ~:float~ now passes through arbitrary values 2620 2621 LaTeX users are able to define arbitrary float types, e.g. with the 2622 float package. The Org mode LaTeX exporter is now able to process and 2623 export arbitrary float types. The user is responsible for ensuring 2624 that Org mode configures LaTeX to process any new float type. 2625 2626 *** Support verse and quote blocks in LaTeX export 2627 2628 The LaTeX export back-end accepts four attributes for verse blocks: 2629 =:lines=, =:center=, =:versewidth= and =:latexcode=. The three first 2630 require the external LaTeX package =verse.sty=, which is an extension 2631 of the standard LaTeX environment. 2632 2633 The LaTeX export back-end accepts two attributes for quote blocks: 2634 =:environment=, for an arbitrary quoting environment (the default 2635 value is that of =org-latex-default-quote-environment=: ="quote"=) and 2636 =:options=. 2637 2638 *** =org-set-tags-command= selects tags from ~org-global-tags-completion-table~ 2639 2640 Let ~org-set-tags-command~ TAB fast tag completion interface complete 2641 tags including from both buffer local and user defined persistent 2642 global list (~org-tag-alist~ and ~org-tag-persistent-alist~). Now 2643 option ~org-complete-tags-always-offer-all-agenda-tags~ is honored. 2644 2645 *** Clocktable option =:formula %= now shows the per-file time percentages 2646 2647 This change only has an effect when multiple files are contributing to 2648 a given clocktable (such as when =:scope agenda= has been specified). 2649 The existing behavior is that such tables have an extra 'File' column, 2650 and each individual file that contributes has its own summary line 2651 with the headline value '*File time*'. Those summary rows also 2652 produce a rollup time value for the file in the 'Time' column. 2653 2654 Prior to this change, the built-in =%= formula did not produce a 2655 calculation for those per-file times in the '%' column (the relevant 2656 cells in the '%' column were blank). With this change, the percentage 2657 contribution of each individual file time to the total time is shown. 2658 2659 The more agenda files you have, the more useful this behavior becomes. 2660 2661 *** =ob-python.el= improvements to =:return= header argument 2662 2663 The =:return= header argument in =ob-python= now works for session 2664 blocks as well as non-session blocks. Also, it now works with the 2665 =:epilogue= header argument -- previously, setting the =:return= 2666 header would cause the =:epilogue= to be ignored. 2667 2668 This change allows more easily moving boilerplate out of the main code 2669 block and into the header. For example, for plotting, we need to add 2670 boilerplate to save the figure to a file and return the 2671 filename. Instead of doing this within the code block, we can now 2672 handle it through the header arguments as follows: 2673 2674 #+BEGIN_SRC org 2675 ,#+header: :var fname="/home/jack/tmp/plot.svg" 2676 ,#+header: :epilogue plt.savefig(fname) 2677 ,#+header: :return fname 2678 ,#+begin_src python :results value file 2679 import matplotlib, numpy 2680 import matplotlib.pyplot as plt 2681 fig=plt.figure(figsize=(4,2)) 2682 x=numpy.linspace(-15,15) 2683 plt.plot(numpy.sin(x)/x) 2684 fig.tight_layout() 2685 ,#+end_src 2686 2687 ,#+RESULTS: 2688 [[file:/home/jack/tmp/plot.svg]] 2689 #+END_SRC 2690 2691 As another example, we can use =:return= with the external [[https://pypi.org/project/tabulate/][tabulate]] 2692 package, to convert pandas Dataframes into orgmode tables: 2693 2694 #+begin_src org 2695 ,#+header: :prologue from tabulate import tabulate 2696 ,#+header: :return tabulate(table, headers=table.columns, tablefmt="orgtbl") 2697 ,#+begin_src python :results value raw :session 2698 import pandas as pd 2699 table = pd.DataFrame({ 2700 "a": [1,2,3], 2701 "b": [4,5,6] 2702 }) 2703 ,#+end_src 2704 2705 ,#+RESULTS: 2706 | | a | b | 2707 |---+---+---| 2708 | 0 | 1 | 4 | 2709 | 1 | 2 | 5 | 2710 | 2 | 3 | 6 | 2711 #+end_src 2712 2713 *** Display images with width proportional to the buffer text width 2714 2715 Previously, if you used a =:width= attribute like =#+attr_html: :width 70%= or 2716 =#+attr_latex: :width 0.7\linewidth= this would be interpreted as a 70px wide and 2717 0.7px wide width specification respectively. 2718 2719 Now, percentages are transformed into floats (i.e. 70% becomes 0.7), 2720 and float width specifications between 0.0 and 2.0 are now interpreted 2721 as that portion of the text width in the buffer. For instance, the 2722 above examples of =70%= and =0.7\linewidth= will result in an image 2723 with width equal to the pixel-width of the buffer text multiplied by 0.7. 2724 2725 This functionality is implemented in a new function, 2726 ~org-display-inline-image--width~ which contains the width 2727 determination logic previously in ~org-display-inline-images~ and the 2728 new behavior. 2729 2730 ** New options 2731 *** Option ~org-hidden-keywords~ now also applies to #+SUBTITLE: 2732 2733 The option ~org-hidden-keywords~ previously applied 2734 to #+TITLE:, #+AUTHOR:, #+DATE:, and #+EMAIL:. Now it can also be 2735 used to hide the #+SUBTITLE: keyword. 2736 2737 *** New formatting directive ~%L~ for org-capture 2738 2739 The new ~%L~ formatting directive contains the bare link target, and 2740 may be used to create links with programmatically generated 2741 descriptions. 2742 2743 *** New option ~org-id-ts-format~ 2744 2745 Earlier, IDs generated using =ts= method had a hard-coded format (i.e. =20200923T160237.891616=). 2746 The new option allows user to customize the format. 2747 Defaults are unchanged. 2748 2749 *** New argument for ~file-desc~ babel header 2750 2751 It is now possible to provide the =file-desc= header argument for a 2752 babel source block but omit the description by passing an empty vector 2753 as an argument (i.e., :file-desc []). This can be useful because 2754 providing =file-desc= without an argument results in the result of 2755 =file= being used in the description. Previously, the only way to 2756 omit a file description was to omit the header argument entirely, 2757 which made it difficult/impossible to provide a default value for 2758 =file-desc=. 2759 2760 *** New option to set ~org-link-file-path-type~ to a function 2761 2762 ~org-link-file-path-type~ can now be set to a function that takes the 2763 full filename as an argument and returns the path to link to. 2764 2765 For example, if you use ~project.el~, you can set this function to use 2766 relative links within a project as follows: 2767 2768 #+begin_src emacs-lisp 2769 (setq (org-link-file-path-type 2770 (lambda (path) 2771 (let* ((proj (project-current)) 2772 (root (if proj (project-root proj) default-directory))) 2773 (if (string-prefix-p (expand-file-name root) path) 2774 (file-relative-name path) 2775 (abbreviate-file-name path)))))) 2776 #+end_src 2777 2778 *** New options and new behavior for babel LaTeX SVG image files 2779 2780 Org babel now uses a two-stage process for converting latex source 2781 blocks to SVG image files (when the extension of the output file is 2782 ~.svg~). The first stage in the process converts the latex block into 2783 a PDF file, which is then converted into an SVG file in the second 2784 stage. The TeX->PDF part uses the existing infrastructure for 2785 ~org-babel-latex-tex-to-pdf~. The PDF->SVG part uses a command 2786 specified in a new customization, 2787 ~org-babel-latex-pdf-svg-process~. By default, this uses inkscape for 2788 conversion, but since it is fully customizable, any other command can 2789 be used in its place. For instance, dvisvgm might be used here. This 2790 two-part processing replaces the previous use of htlatex to process 2791 LaTeX directly to SVG (htlatex is still used for HTML conversion). 2792 2793 Conversion to SVG exposes a number of additional customizations that 2794 give the user full control over the contents of the latex source 2795 block. ~org-babel-latex-preamble~, ~org-babel-latex-begin-env~ and 2796 ~org-babel-latex-end-env~ are new customization options added to allow 2797 the user to specify the preamble and code that precedes and proceeds 2798 the contents of the source block. 2799 2800 *** New option ~org-html-meta-tags~ allows for HTML meta tags customization 2801 2802 New variable ~org-html-meta-tags~ makes it possible to customize the 2803 =<meta>= tags used in an HTML export. Accepts either a static list of 2804 values, or a function that generates such a list (see 2805 ~org-html-meta-tags-default~ as an example of the latter). 2806 2807 *** Option ~org-agenda-bulk-custom-functions~ now supports collecting bulk arguments 2808 2809 When specifying a custom agenda bulk option, you can now also specify 2810 a function which collects the arguments to be used with each call to 2811 the custom function. 2812 2813 *** New faces to improve the contextuality of Org agenda views 2814 2815 Four new faces improve certain styles and offer more flexibility for 2816 some Org agenda views: ~org-agenda-date-weekend-today~, 2817 ~org-imminent-deadline~, ~org-agenda-structure-secondary~, 2818 ~org-agenda-structure-filter~. They inherit from existing faces in 2819 order to remain backward-compatible. 2820 2821 Quoting from [[https://list.orgmode.org/87lf7q7gpq.fsf@protesilaos.com/][this thread]]: 2822 2823 #+begin_quote 2824 + The 'org-imminent-deadline' is useful to disambiguate generic 2825 warnings from deadlines. For example, a warning could be rendered 2826 in a yellow colored text and have a bold weight, whereas a deadline 2827 might be red and styled with italics. 2828 2829 + The 'org-agenda-structure-filter' applies to all tag/term filters 2830 in agenda views that search for keywords or patterns. It is 2831 designed to inherit from 'org-agenda-structure' in addition to the 2832 'org-warning' face that was present before (and removes the 2833 generic 'warning' face from one place). This offers the benefit 2834 of consistency, as, say, an increase in font height or a change in 2835 font family in 'org-agenda-structure' will propagate to the filter 2836 as well. The whole header line thus looks part of a singular 2837 design. 2838 2839 + The 'org-agenda-structure-secondary' complements the above for those 2840 same views where a description follows the header. For instance, the 2841 tags view provides information to "Press N r" to filter by a 2842 numbered tag. Themes/users may prefer to disambiguate this line 2843 from the header above it, such as by using a less intense color or by 2844 reducing its height relative to the 'org-agenda-structure'. 2845 2846 + The 'org-agenda-date-weekend-today' provides the option to 2847 differentiate the current date on a weekend from the current date on 2848 weekdays. 2849 #+end_quote 2850 2851 *** New option ~org-clock-ask-before-exiting~ 2852 2853 By default, a function is now added to ~kill-emacs-query-functions~ 2854 that asks whether to clock out and save when there's a running clock. 2855 Customize ~org-clock-ask-before-exiting~~ to nil to disable this new 2856 behavior. 2857 2858 *** Option ~org-html-inline-image-rules~ now includes .webp 2859 2860 By default ox-html now inlines webp images. 2861 2862 *** ~org-html-head-include-scripts~ is now =nil= by default 2863 2864 See [[msg:498dbe2e-0cd2-c81e-7960-4a26c566a1f7@memebeam.org][this thread]]. 2865 2866 *** New option ~org-html-content-class~ 2867 2868 This is the CSS class name to use for the top level content wrapper. 2869 2870 *** New option ~org-babel-plantuml-svg-text-to-path~ 2871 2872 This option, nil by default, allows to add a SVG-specific post-export 2873 step that runs inkscape text-to-path replacement over the output file. 2874 2875 *** You can now configure ~org-html-scripts~ and ~org-html-style-default~ 2876 2877 ~org-html-scripts~ and ~org-html-style-default~ used to be constants, 2878 you can now configure them. 2879 2880 *** New option ~org-attach-git-dir~ 2881 2882 ~org-attach-git-dir~ will decide whether to use ~org-attach-git-dir~ 2883 (the default) or use the attachment directory of the current node, if 2884 it is correctly configured as a Git repository. 2885 2886 *** New option ~org-attach-sync-delete-empty-dir~ 2887 2888 ~org-attach-sync-delete-empty-dir~ controls the deletion of an empty 2889 attachment directory at calls of ~org-attach-sync~. There is 2890 Never delete, Always delete and Query the user (default). 2891 2892 *** ~org-babel-default-header-args~ can now be specified as closures or strings 2893 2894 ~org-babel-default-header-args~ now also accepts closures that 2895 evaluate to a string. Previously, only direct strings were 2896 supported. These closures are evaluated when point is at the source 2897 block, which allows them to make use of contextual information at the 2898 relevant source block. One example that illustrates the usefulness of 2899 this addition (also given in the documentation for 2900 ~org-babel-default-header-args~) is: 2901 2902 #+begin_src elisp 2903 (defun org-src-sha () 2904 (let ((elem (org-element-at-point))) 2905 (concat (sha1 (org-element-property :value elem)) \".svg\"))) 2906 2907 (setq org-babel-default-header-args:latex 2908 `((:results . \"file link replace\") 2909 (:file . (lambda () (org-src-sha))))) 2910 #+end_src 2911 2912 This will set the ~:file~ header argument to the sha1 checksum of the 2913 contents of the current latex source block. 2914 2915 Finally, the closures are only evaluated if they're not overridden for 2916 a source block. This improves efficiency in cases where the result of 2917 a compute-expensive closure would otherwise be discarded. 2918 2919 ** Miscellaneous 2920 *** =org-bibtex= includes =doi= and =url= entries when exporting to BiBTeX 2921 =doi= and =url= entries have been made optional for some publication 2922 types and will be exported if present for those types. 2923 *** Missing or empty placeholders in "eval" macros are now =nil= 2924 They used to be the empty string. 2925 *** =org-goto-first-child= now works before first heading 2926 2927 When point is before first heading =org-goto-first-child= will move 2928 point to the first child heading, or return nil if no heading exist 2929 in buffer. This is in line with the fact that everything before first 2930 heading is regarded as outline level 0, i.e. the parent level of all 2931 headings in the buffer. 2932 2933 Previously =org-goto-first-child= would do nothing before first 2934 heading, except return nil. 2935 2936 *** Faces of all the heading text elements now conform to the headline face 2937 2938 In the past, faces of todo keywords, emphasized text, tags, and 2939 priority cookies inherited =default= face. The resulting headline 2940 fontification was not always consistent, as discussed in [[msg::87h7sawubl.fsf@protesilaos.com][this bug 2941 report]]. Now, the relevant faces adapt to face used to fontify the 2942 current headline level. 2943 2944 Users who prefer to keep the old behavior should change their face 2945 customization explicitly stating that =default= face is inherited. 2946 2947 Example of old face customization: 2948 2949 #+begin_src emacs-lisp 2950 (setq org-todo-keyword-faces '(("TODO" 2951 :background "chocolate" 2952 :height 0.75))) 2953 #+end_src 2954 2955 To preserve the old behavior the above customization should be 2956 changed to 2957 2958 #+begin_src emacs-lisp 2959 (setq org-todo-keyword-faces '(("TODO" 2960 :inherit default 2961 :background "chocolate" 2962 :height 0.75))) 2963 #+end_src 2964 2965 *** Storing ID-links before first heading uses title as description 2966 2967 Storing links to files using ~org-store-link~ (=<C-c l>=) when 2968 ~org-id-link-to-org-use-id~ is not nil will now store the title as 2969 description of the link, if available. If no title exists it falls 2970 back to the filename as before. 2971 2972 *** Change in =org-tags-expand= signature 2973 2974 The function does not allow for a third optional parameter anymore. 2975 *** LaTeX environment =#+results= are now removed 2976 2977 If a babel src block produces a raw LaTeX environment, it will now be 2978 recognized as a result, and so replaced when re-evaluated. 2979 2980 *** Tag completion now uses =completing-read-multiple= 2981 2982 Tag completion now uses =completing-read-multiple= with a simple 2983 completion table, which should allow better interoperability with 2984 custom completion functions. 2985 2986 *** Providing =directory-empty-p= from Emacs 28 as =org-directory-empty-p= 2987 2988 *** =org-get-last-sibling= marked as obsolete 2989 2990 Use =org-get-previous-sibling= instead. This is just a rename to have 2991 a more consistent naming. E.g. recall the pair of funtctions 2992 =next-line= / =previous-line=. 2993 2994 *** Make org-protocol compatible with =URLSearchParams= JavaScript class 2995 2996 Decoder of query part of org-protocol URI recognizes "+" as an encoded 2997 space characters now, so it is possible to avoid call to =encodeURIComponent= 2998 for each parameter and use more readable expression in bookmarklet: 2999 3000 #+begin_example 3001 'org-protocol://store-link?' + new URLSearchParams({ 3002 url: location.href, title: document.title}) 3003 #+end_example 3004 3005 *** Remove obsolete LaTeX packages from ~org-latex-default-packages-alist~ 3006 3007 The LaTeX packages =grffile= and =textcomp= are redundant, with their 3008 capabilities being merged into =graphicx= and the LaTeX core 3009 respectively a while ago. 3010 3011 * Version 9.4 3012 ** Incompatible changes 3013 *** Possibly broken internal file links: please check and fix 3014 3015 A bug has been affecting internal links to headlines, like 3016 3017 : [[*Headline][A link to a headline]] 3018 3019 Storing a link to a headline may have been broken in your setup and 3020 those links may appear as 3021 3022 : [[*TODO Headline][A link to a headline]] 3023 3024 Following the link above will result in an error: the TODO keyword 3025 should not be part of internal file links. 3026 3027 You can use the following command to fix links in an Org buffer: 3028 3029 #+begin_src emacs-lisp 3030 (defun org-fix-links () 3031 "Fix ill-formatted internal links. 3032 E.g. replace [[*TODO Headline][headline]] by [[*Headline][headline]]. 3033 Go through the buffer and ask for the replacement." 3034 (interactive) 3035 (visible-mode 1) 3036 (save-excursion 3037 (goto-char (point-min)) 3038 (let ((regexp (format "\\[\\[\\*%s\\s-+" 3039 (regexp-opt org-todo-keywords-1 t)))) 3040 (while (re-search-forward regexp nil t) 3041 (when (and (save-excursion 3042 (goto-char (match-beginning 0)) 3043 (looking-at-p org-link-bracket-re)) 3044 (y-or-n-p "Fix link (remove TODO keyword)? ")) 3045 (replace-match "[[*"))))) 3046 (visible-mode -1)) 3047 #+end_src 3048 3049 *** Calling conventions changes when opening or exporting custom links 3050 3051 This changes affects export back-ends, and libraries providing new 3052 link types. 3053 3054 Function used in ~:follow~ link parameter is required to accept a 3055 second argument. Likewise, function used in ~:export~ parameter needs 3056 to accept a fourth argument. See ~org-link-set-parameters~ for 3057 details. 3058 3059 Eventually, the function ~org-export-custom-protocol-maybe~ is now 3060 called with a fourth argument. Even though the 3-arguments definition 3061 is still supported, at least for now, we encourage back-end developers 3062 to switch to the new signature. 3063 3064 *** Python session return values must be top-level expression statements 3065 3066 Python blocks with ~:session :results value~ header arguments now only 3067 return a value if the last line is a top-level expression statement. 3068 Also, when a None value is returned, "None" will be printed under 3069 "#+RESULTS:", as it already did with ~:results value~ for non-session 3070 blocks. 3071 3072 *** In HTML export, change on how outline-container-* is set 3073 3074 When the headline has a =CUSTOM_ID=, use this custom id to build the 3075 div id. For example, if you have =:CUSTOM_ID: my-headline= then the 3076 resulting <div> will be ~<div id="outline-container-my-headline">~. 3077 3078 You may want to check whether your HTML files are rendered differently 3079 after this change. 3080 3081 *** New keybinding =<C-c C-TAB>= for ~org-force-cycle-archived~ 3082 3083 ~org-force-cycle-archived~ used to be associated with =<C-TAB>= but 3084 this keybinding is used in Emacs for navigating tabs in Emacs. The 3085 new keybinding is =<C-c C-TAB>=. 3086 3087 ** New default settings for some options 3088 3089 These options now default to =t=: 3090 3091 - ~org-loop-over-headlines-in-active-region~ 3092 - ~org-fontify-done-headline~ 3093 - ~org-src-tab-acts-natively~ 3094 3095 You may want to read the docstrings of these options to understand the 3096 consequences of this change. 3097 3098 Also, ~org-startup-folded~ now defaults to ~showeverything~. 3099 3100 ** New features 3101 3102 *** =RET= and =C-j= now obey ~electric-indent-mode~ 3103 3104 Since Emacs 24.4, ~electric-indent-mode~ is enabled by default. In 3105 most major modes, this causes =RET= to reindent the current line and 3106 indent the new line, and =C-j= to insert a newline without indenting. 3107 3108 Org mode now obeys this minor mode: when ~electric-indent-mode~ is 3109 enabled, and point is neither in a table nor on a timestamp or a link: 3110 3111 - =RET= (bound to ~org-return~) reindents the current line and indents 3112 the new line; 3113 - =C-j= (bound to the new command ~org-return-and-maybe-indent~) 3114 merely inserts a newline. 3115 3116 To get the previous behavior back, disable ~electric-indent-mode~ 3117 explicitly: 3118 3119 #+begin_src emacs-lisp 3120 (add-hook 'org-mode-hook (lambda () (electric-indent-local-mode -1))) 3121 #+end_src 3122 3123 Alternatively, if you wish to keep =RET= as the "smart-return" key, 3124 but dislike Org's default indentation of sections, you may prefer to 3125 customize ~org-adapt-indentation~ to either nil or =headline-data=. 3126 3127 *** New allowed value for ~org-adapt-indentation~ 3128 3129 ~org-adapt-indentation~ now accepts a new value, =headline-data=. 3130 3131 When set to this value, Org will only adapt indentation of headline 3132 data lines, such as planning/clock lines and property/logbook drawers. 3133 Also, with this setting, =org-indent-mode= will keep these data lines 3134 correctly aligned with the headline above. 3135 3136 *** Looping agenda commands over headlines 3137 3138 ~org-agenda-loop-over-headlines-in-active-region~ allows you to loop 3139 agenda commands over the active region. 3140 3141 When set to =t= (the default), loop over all headlines. When set to 3142 ='start-level=, loop over headlines with the same level as the first 3143 headline in the region. When set to a string, loop over lines 3144 matching this regular expression. 3145 3146 *** New minor mode ~org-table-header-line-mode~ 3147 3148 Turn on the display of the first data row of the table at point in the 3149 window header line when this first row is not visible anymore in the 3150 buffer. 3151 3152 You can activate this minor mode by default by setting the option 3153 ~org-table-header-line-p~ to =t=. You can also change the face for 3154 the header line by customizing the ~org-table-header~ face. 3155 3156 *** New minor mode ~org-list-checkbox-radio-mode~ 3157 3158 When this minor mode is on, checkboxes behave as radio buttons: if a 3159 checkbox is turned on, other checkboxes at the same level are turned 3160 off. 3161 3162 If you want to occasionally toggle a checkbox as a radio button 3163 without turning this minor mode on, you can use =<C-c C-x C-r>= to 3164 call ~org-toggle-radio-button~. 3165 3166 You can also add =#+ATTR_ORG: :radio t= right before the list to tell 3167 Org to use radio buttons for this list only. 3168 3169 *** Numeric priorities are now allowed (up to 65) 3170 3171 You can now set ~org-priority-highest/lowest/default~ to integers to 3172 use numeric priorities globally or set, for example 3173 3174 #+PRIORITIES: 1 10 5 3175 3176 to define a buffer-local range and default for priorities. Priority 3177 commands should work as usual. You cannot use numbers superior to 64 3178 for numeric priorities, as it would clash with priorities like [#A] 3179 where the "A" is internally converted to its numeric value of 65. 3180 3181 *** Property drawers allowed before first headline 3182 3183 Property drawers are now allowed before the first headline. 3184 3185 Org mode is moving more towards making things before the first 3186 headline behave just as if it was at outline level 0. Inheritance for 3187 properties will work also for this level. In other words: defining 3188 things in a property drawer before the first headline will make them 3189 "inheritable" for all headlines. 3190 3191 *** Refinement in window behavior on exiting Org source buffer 3192 3193 After editing a source block, Org will restore the window layout when 3194 ~org-src-window-setup~ is set to a value that modifies the layout. 3195 3196 *** Display remote inline images 3197 3198 Org now knows how to display remote images inline. 3199 3200 Whether the images are actually displayed is controlled by the new 3201 option ~org-display-remote-inline-images~. 3202 3203 *** New option to resolve open clock at a provided time 3204 3205 ~org-resolve-clocks~ now has a `t' option, which works just like the 3206 `k' option, but the user specifies a time of day, not a number of 3207 minutes. 3208 3209 *** New step value =semimonth= accepted for clock tables 3210 3211 *** Allow text rescaling in column view 3212 3213 You can now use =C-x C-+= in column view: the columns face size will 3214 increase or decrease, together with the column header size. 3215 3216 *** New startup option =#+startup: num= 3217 3218 When this startup option is set, display headings as numerated. 3219 3220 Use =#+startup: nonum= to turn this off. 3221 3222 *** New tool for custom links 3223 3224 Org provides a new tool ~org-link-open-as-file~, useful when defining 3225 new link types similar to "file"-type links. See docstring for 3226 details. 3227 3228 *** New optional numeric argument for ~org-return~ 3229 3230 In situations where ~org-return~ calls ~newline~, multiple newlines 3231 can now be inserted with this prefix argument. 3232 3233 *** New source code block header argument =:file-mode= 3234 3235 Source code block header argument =:file-mode= can set file 3236 permissions if =:file= argument is provided. 3237 3238 *** =ob-C.el= allows the inclusion of non-system header files 3239 3240 In C and C++ blocks, ~:includes~ arguments that do not start with a 3241 ~<~ character will now be formatted as double-quoted ~#include~ 3242 statements. 3243 3244 *** =ob-clojure.el= supports inf-clojure.el and ClojureScript evaluation 3245 3246 You can now set ~(setq org-babel-clojure-backend 'inf-clojure)~ and 3247 evaluate Clojure source blocks using [[https://github.com/clojure-emacs/inf-clojure][inf-clojure]]. With a header 3248 argument like =:alias "alias"= the Clojure REPL will boot with 3249 =clojure -Aalias=. Otherwise Clojure will boot with =lein=, =boot= or 3250 =tools.deps=, depending on whether the current directory contains a 3251 =project.clj=, =build.boot= or =deps.edn=, falling back on 3252 ~inf-clojure-generic-cmd~ in case no such file is present. 3253 3254 Also, when using [[https://github.com/clojure-emacs/cider][cider]], you can now use =#+begin_src clojurescript= to 3255 execute ClojureScript code from Org files. Note that this works only 3256 if your Org file is associated with a cider session that knows how to 3257 run ClojureScript code. A bare =lein repl= session outside of a 3258 directory configured for ClojureScript will /not/ work. 3259 3260 *** =ob-java.el= supports Java command line arguments 3261 3262 Babel Java blocks recognize header argument =:cmdargs= and pass its 3263 value in call to =java=. 3264 3265 *** =ob-screen.el= now accepts =:screenrc= header argument 3266 3267 Screen blocks now recognize the =:screenrc= header argument and pass 3268 its value to the screen command via the "-c" option. The default 3269 remains =/dev/null= (i.e. a clean screen session) 3270 3271 *** =ob-plantuml=: now supports using PlantUML executable to generate diagrams 3272 3273 Set =org-plantuml-exec-mode= to ='plantuml= in order to use the 3274 executable instead of JAR. When using an executable it is also 3275 possible to configure executable location as well as arguments via: 3276 =org-plantuml-executable-path= and =org-plantuml-executable-args=. 3277 3278 ** New commands 3279 *** ~org-table-header-line-mode~ 3280 3281 Turn on a minor mode to display the first data row of the table at 3282 point in the header-line when the beginning of the table is invisible. 3283 3284 *** ~org-agenda-ctrl-c-ctrl-c~ 3285 3286 Hitting =<C-c C-c>= in an agenda view now calls ~org-agenda-set-tags~. 3287 3288 *** ~org-hide-entry~ 3289 3290 This command is the counterpart of ~org-show-entry~. 3291 3292 *** ~org-columns-toggle-or-columns-quit~ 3293 3294 =<C-c C-c>= bound to ~org-columns-toggle-or-columns-quit~ replaces the 3295 recent ~org-columns-set-tags-or-toggle~. Tag setting is still 3296 possible via column view value edit or with =<C-c C-q>=. 3297 3298 *** ~org-datetree-find-month-create~ 3299 3300 Find or create a month entry for a date. 3301 3302 ** New options and settings 3303 *** New option ~org-html-prefer-user-labels~ 3304 3305 When non-nil, use =NAME= affiliated keyword, or raw target values, to 3306 generate anchor's ID. Otherwise, consistently use internal naming 3307 scheme. 3308 3309 =CUSTOM_ID= values are still always used, when available. 3310 *** New option for using tabs in ~org-agenda-window-setup~ 3311 3312 Choosing ~other-tab~ for ~org-agenda-window-setup~ will open the 3313 agenda view in a new tab. This will work with versions of Emacs since 3314 27.1 when ~tab-bar-mode~ was introduced. 3315 3316 *** New option ~org-table-header-line-p~ 3317 3318 Setting this option to =t= will activate ~org-table-header-line-mode~ 3319 in org-mode buffers. 3320 3321 *** New option ~org-startup-numerated~ 3322 3323 When this option is =t=, Org files will start using ~(org-num-mode 1)~ 3324 and headings will be visually numerated. 3325 3326 You can turn this on/off on a per-file basis with =#+startup: num= or 3327 =#+startup: nonum=. 3328 3329 *** New option ~org-clock-auto-clockout-timer~ 3330 3331 When this option is set to a number and the user configuration 3332 contains =(org-clock-auto-clockout-insinuate)=, Org will clock out the 3333 currently clocked in task after that number of seconds of idle time. 3334 3335 This is useful when you often forget to clock out before being idle 3336 and don't want to have to manually set the clocking time to take into 3337 account. 3338 3339 *** New option to group captured datetime entries by month 3340 3341 A new `:tree-type month' option was added to org-capture-templates to 3342 group new datetime entries by month. 3343 3344 *** New option to show source buffers using "plain" display-buffer 3345 3346 There is a new option ~plain~ to ~org-src-window-setup~ to show source 3347 buffers using ~display-buffer~. This allows users to control how 3348 source buffers are displayed by modifying ~display-buffer-alist~ or 3349 ~display-buffer-base-action~. 3350 3351 *** New option ~org-archive-subtree-save-file-p~ 3352 3353 Archiving a subtree used to always save the target archive buffer. 3354 Commit [[git::b186d1d7][b186d1d7]] changed this behavior by always not saving the target 3355 buffer, because batch archiving from agenda could take too much time. 3356 3357 This new option ~org-archive-subtree-save-file-p~ defaults to the 3358 value =from-org= so that archiving a subtree will save the target 3359 buffer when done from an org-mode buffer, but not from the agenda. 3360 You can also set this option to =t= or to =from-agenda=. 3361 3362 *** New option ~org-show-notification-timeout~ 3363 3364 This option will add a timeout to notifications. 3365 3366 *** New option ~org-latex-to-html-convert-command~ 3367 3368 This new option allows you to convert a LaTeX fragment directly into 3369 HTML. 3370 3371 *** New option ~org-babel-shell-results-defaults-to-output~ 3372 3373 By default, source code blocks are executed in "functional mode": it 3374 means that the results of executing them are the value of their last 3375 statement (see [[https://orgmode.org/manual/Results-of-Evaluation.html][the documentation]].) 3376 3377 The value of a shell script's execution is its exit code. But most 3378 users expect the results of executing a shell script to be its output, 3379 not its exit code. 3380 3381 So we introduced this option, that you can set to nil if you want to 3382 stick using ~:results value~ as the implicit header. 3383 3384 In all Babel libraries, the absence of a ~:results~ header should 3385 produce the same result than setting ~:results value~, unless there is 3386 an option to explicitly create an exception. 3387 3388 See [[msg:CA+A2iZaziAfMeGpBqL6qGrzrWEVvLvC0DUw++T4gCF3NGuW-DQ@mail.gmail.com][this thread]] for more context. 3389 3390 *** New option in ~org-attach-store-link-p~ 3391 3392 ~org-attach-store-link-p~ has a new option to store a file link to the 3393 attachment. 3394 *** New option ~org-fontify-todo-headline~ 3395 3396 This feature is the same as ~org-fontify-done-headline~, but for TODO 3397 headlines instead. This allows you to distinguish TODO headlines from 3398 normal headlines. The face can be customized via ~org-headline-todo~. 3399 3400 *** New default value for ~org-file-apps~ 3401 3402 The new value uses Emacs as the application for opening directory. 3403 3404 *** New hook ~org-agenda-filter-hook~ 3405 3406 Functions in this hook are run after ~org-agenda-filter~ is called. 3407 3408 ** Removed or renamed functions and variables 3409 *** Deprecated ~org-flag-drawer~ function 3410 3411 Use ~org-hide-drawer-toggle~ instead. 3412 3413 *** Deprecated ~org-hide-block-toggle-maybe~ function 3414 3415 Use ~org-hide-block-toggle~ instead. 3416 3417 *** Deprecated ~org-hide-block-toggle-all~ function 3418 3419 This function was not used in the code base, and has no clear use 3420 either. It has been marked for future removal. Please contact the 3421 mailing list if you use this function. 3422 3423 *** Deprecated ~org-return-indent~ function 3424 3425 In Elisp code, use ~(org-return t)~ instead. Interactively, =C-j= is 3426 now bound to ~org-return-and-maybe-indent~, which indents the new line 3427 when ~electric-indent-mode~ is disabled. 3428 3429 *** Removed ~org-maybe-keyword-time-regexp~ 3430 3431 The variable was not used in the code base. 3432 3433 *** Removed ~org-export-special-keywords~ 3434 3435 The variable was not used in the code base. 3436 3437 *** Renamed ~org-at-property-block-p~ 3438 3439 The new name is ~org-at-property-drawer-p~, which is less confusing. 3440 3441 *** Renamed ~org-columns-set-tags-or-toggle~ 3442 3443 See [[*~org-columns-toggle-or-columns-quit~]]. 3444 3445 *** Renamed priority options 3446 3447 From ~org-lowest-priority~ to ~org-priority-lowest~. 3448 From ~org-default-priority~ to ~org-priority-default~. 3449 From ~org-highest-priority~ to ~org-priority-highest~. 3450 From ~org-enable-priority-commands~ to ~org-priority-enable-commands~. 3451 From ~org-show-priority~ to ~org-priority-show~. 3452 3453 ** Miscellaneous 3454 *** =ob-screen.el= now respects screen =:session= name 3455 3456 Screen babel session are now named based on the =:session= header 3457 argument (defaults to ~default~). 3458 3459 Previously all session names had ~org-babel-session-~ prepended. 3460 3461 *** Forward/backward paragraph functions in line with the rest of Emacs 3462 3463 ~org-forward-paragraph~ and ~org-backward-paragraph~, bound to 3464 ~<C-UP>~ and ~<C-DOWN>~ functions mimic more closely behavior of 3465 ~forward-paragraph~ and ~backward-paragraph~ functions when 3466 available. 3467 3468 They also accept an optional argument for multiple calls. 3469 3470 See their docstring for details. 3471 *** ~org-table-to-lisp~ no longer checks if point is at a table 3472 3473 The caller is now responsible for the check. It can use, e.g., 3474 ~org-at-table-p~. 3475 3476 The function is also much more efficient than it used to be, even on 3477 very large tables. 3478 3479 *** New function ~org-collect-keywords~ 3480 *** Drawers' folding use an API similar to block's 3481 3482 Tooling for folding drawers interactively or programmatically is now 3483 on par with block folding. In particular, ~org-hide-drawer-toggle~, 3484 a new function, is the central place for drawer folding. 3485 3486 *** Duration can be read and written in compact form 3487 3488 ~org-duration-to-minutes~ understands =1d3h5min= as a duration, 3489 whereas ~org-duration-from-minutes~ can output this compact form if 3490 the duration format contains the symbol ~compact~. 3491 3492 *** C-n, C-p, SPC and DEL in agenda commands dispatch window 3493 3494 You can now use =<C-n>=, =<C-p>=, =<SPC>= and =<DEL>= key to scroll up 3495 and down the agenda and attach dispatch window. 3496 3497 *** =<C-c C-c>= in agenda calls ~org-agenda-set-tags~ 3498 3499 Both =<C-c C-q>= and =<C-c C-c>= set the tags of the headline in the 3500 Org buffer. Both keybindings are now available from the agenda too. 3501 3502 *** Allow to use an empty HTML extension 3503 3504 Using =(setq org-html-extension "")= or setting the HTML extension in 3505 any fashion will produce the expected output, with no trailing period 3506 to the resulting HTML file. 3507 3508 *** Handle repeated tasks with =.+= type and hours step 3509 3510 A task using a =.+= repeater and hours step is repeated starting from 3511 now. E.g., 3512 3513 #+begin_example 3514 ,,** TODO Wash my hands 3515 DEADLINE: <2019-04-05 08:00 Sun .+1h> 3516 Marking this DONE shifts the date to exactly one hour from now. 3517 #+end_example 3518 3519 *** The format of equation reference in HTML export can now be specified 3520 3521 By default, HTML (via MathJax) and LaTeX export equation references 3522 using different commands. LaTeX must use ~\ref{%s}~ because it is used 3523 for all labels; however, HTML (via MathJax) uses ~\eqref{%s}~ for 3524 equations producing inconsistent output. New option 3525 ~org-html-equation-reference-format~ sets the command used in HTML 3526 export. 3527 3528 *** =ob-haskell.el= supports compilation with =:compile= header argument 3529 3530 By default, Haskell blocks are interpreted. By adding =:compile yes= 3531 to a Haskell source block, it will be compiled, executed and the 3532 results will be displayed. 3533 3534 *** Support for ~org-edit-special~ with LaTeX fragments 3535 3536 Calling ~org-edit-special~ on an inline LaTeX fragment calls a new 3537 function, ~org-edit-latex-fragment~. This functions in a comparable 3538 manner to editing inline source blocks, bringing up a minibuffer set 3539 to LaTeX mode. The math-mode deliminators are read only. 3540 3541 *** ~org-capture-current-plist~ is now accessible during ~org-capture-mode-hook~ 3542 *** New =org-refile.el= file 3543 3544 Org refile variables and functions have been moved to a new file. 3545 3546 *** The end of a 7 years old bug 3547 3548 This bug [[https://lists.gnu.org/archive/html/emacs-orgmode/2013-08/msg00072.html][originally reported]] by Matt Lundin and investigated by Andrew 3549 Hyatt has been fixed. Thanks to both of them. 3550 3551 * Version 9.3 3552 3553 ** Incompatible changes 3554 *** Change bracket link escaping syntax 3555 3556 Org used to percent-encode sensitive characters in the URI part of the 3557 bracket links. 3558 3559 Now, escaping mechanism uses the usual backslash character, according 3560 to the following rules: 3561 3562 1. All =[= and =]= characters in the URI must be escaped; 3563 2. Every =\= character preceding either =[= or =]= must be escaped; 3564 3. Every =\= character at the end of the URI must be escaped. 3565 3566 When in doubt, use the function ~org-link-escape~ in order to turn 3567 a link string into its properly escaped form. 3568 3569 The following function will help switching your links to the new 3570 syntax: 3571 3572 #+begin_src emacs-lisp 3573 (defun org-update-link-syntax (&optional no-query) 3574 "Update syntax for links in current buffer. 3575 Query before replacing a link, unless optional argument NO-QUERY 3576 is non-nil." 3577 (interactive "P") 3578 (org-with-point-at 1 3579 (let ((case-fold-search t)) 3580 (while (re-search-forward "\\[\\[[^]]*?%\\(?:2[05]\\|5[BD]\\)" nil t) 3581 (let ((object (save-match-data (org-element-context)))) 3582 (when (and (eq 'link (org-element-type object)) 3583 (= (match-beginning 0) 3584 (org-element-property :begin object))) 3585 (goto-char (org-element-property :end object)) 3586 (let* ((uri-start (+ 2 (match-beginning 0))) 3587 (uri-end (save-excursion 3588 (goto-char uri-start) 3589 (re-search-forward "\\][][]" nil t) 3590 (match-beginning 0))) 3591 (uri (buffer-substring-no-properties uri-start uri-end))) 3592 (when (or no-query 3593 (y-or-n-p 3594 (format "Possibly obsolete URI syntax: %S. Fix? " 3595 uri))) 3596 (setf (buffer-substring uri-start uri-end) 3597 (org-link-escape (org-link-decode uri))))))))))) 3598 #+end_src 3599 3600 The old ~org-link-escape~ and ~org-link-unescape~ functions have been 3601 renamed into ~org-link-encode~ and ~org-link-decode~. 3602 3603 *** Change match group number in ~org-link-bracket-re~ 3604 3605 Link description, if any, is located in match group 2 instead of match 3606 group 3. 3607 3608 *** ob-clojure does not auto prepend ~(ns ..)~ statement anymore 3609 3610 When tangling, user usually just wants to tangle literally code instead 3611 of prepend inserting a ~(ns ..)~ statement before source block 3612 code. Now, when you have no ~:ns~ header argument specified, this 3613 behavior will not happen automatically. 3614 3615 *** Change in behavior on exit from an Org edit buffer 3616 3617 Org will no longer attempt to restore the window configuration in the 3618 frame to which the user returns after editing a source block with 3619 ~org-edit-src-code~. Instead, the window configuration will remain as 3620 it is. 3621 3622 *** Change default value for ~org-email-link-description-format~ 3623 3624 When linking from a mail buffer, Org used to truncate the subject of 3625 the message to 30 characters in order to build the description of the 3626 link. This behavior was considered as too surprising. As 3627 a consequence, Org no longer truncates subjects. 3628 3629 You can get the old behavior back with the following: 3630 3631 : (setq org-email-link-description-format "Email %c: %.30s") 3632 3633 *** ~:file~ header argument no longer assume "file" ~:results~ 3634 3635 The "file" ~:results~ value is now mandatory for a code block 3636 returning a link to a file. The ~:file~ or ~:file-ext~ header 3637 arguments no longer imply a "file" result is expected. 3638 3639 *** Plain numbers are hours in Column View mode 3640 3641 See [[git:3367ac9457]] for details. 3642 3643 *** All LaTeX preview backends use now xcolor 3644 3645 The dvipng backend was previously relying on fg and bg parameters to 3646 be passed to the CLI. This didn't work when xcolor was directly or 3647 indirectly used in the document (e.g. tkiz is a user of xcolor). Since 3648 every other backend was already using xcolor to set fg and bg, the CLI 3649 alternative was removed and there is no more a :use-xcolor options 3650 since now it's implicitly always true. 3651 3652 *** Org-Attach Git commit 3653 3654 [[*Org-Attach has been refactored and extended][Refactoring of Org-Attach]] affected the Git commit functionality. Not 3655 much, but the following changes are required if you still need to 3656 auto-commit attachments to git: 3657 3658 - Customization of ~org-attach-annex-auto-get~ needs to be renamed to 3659 ~org-attach-git-annex-auto-get~. 3660 3661 - Customization of ~org-attach-commit~ is no longer needed. Instead 3662 one need to require the =org-attach-git= module in the startup. 3663 3664 ** New features 3665 *** New option to wrap source code lines in HTML export 3666 3667 When new option ~html-wrap-src-lines~ (with variable 3668 ~org-html-wrap-src-lines~) is non-nil, HTML export wraps source code 3669 lines in HTML ~code~ elements. 3670 3671 *** New option to handle schedules and deadlines in iCalendar export 3672 3673 Export ignore done tasks with a deadline when 3674 ~org-icalendar-use-deadline~ contains ~event-if-todo-not-done~. 3675 Likewise, scheduled done tasks are also ignored when 3676 ~org-icalendar-use-scheduled~ contains the same symbol. 3677 3678 *** Add ~split-window-right~ option for src block edit window placement 3679 3680 Given the increasing popularity of wide screen monitors, splitting 3681 horizontally may make more sense than splitting vertically. An 3682 option, ~split-window-right~, to request horizontal splitting has been 3683 added to ~org-src-window-setup~. 3684 3685 *** Org-Attach has been refactored and extended 3686 3687 Org attach has been refactored and the functionality extended. It 3688 should now be easier to understand how it works. A few improvements 3689 and extra options have been added as well. 3690 3691 From the initial comment in org-attach source-code: 3692 3693 - Attachments are managed either by using a custom property DIR or by 3694 using property ID from org-id. When DIR is defined, a location in 3695 the filesystem is directly attached to the outline node. When 3696 org-id is used, attachments are stored in a folder named after the 3697 ID, in a location defined by ~org-attach-id-dir~. DIR has 3698 precedence over ID when both parameters are defined for the current 3699 outline node (also when inherited parameters are taken into 3700 account). 3701 3702 From now on inheritance requires no extra property and will adhere to 3703 ~org-attach-use-inheritance~ by default. Inheritance can be 3704 customized to always be activated or never be activated in 3705 ~org-attach-use-inheritance~. 3706 3707 The ATTACH_DIR property is deprecated in favor of the shorter 3708 property DIR. Links to folders inside the DIR property can now be 3709 declared as relative links. This is not enabled by default, but can 3710 be set in ~org-attach-dir-relative~. 3711 3712 When adding new attachment to the outline node the preferred way of 3713 doing so can be customized. Take a look at 3714 ~org-attach-preferred-new-method~. It defaults to using ID since that 3715 was the behavior before this change. 3716 3717 If both DIR and ID properties are set on the same node, DIR has 3718 precedence and will be used. 3719 3720 One can now also choose to build attachment-directory-paths in a 3721 customized way. This is an advanced topic, but in some case it makes 3722 sense to parse an ID in a different way than the default one. Create 3723 your own function and add it to the beginning of 3724 ~org-attach-id-to-path-function~list~ if you want to customize the ID 3725 based folder structure. 3726 3727 If you've used ATTACH_DIR properties to manage attachments, use the 3728 following code to rename that property to DIR which supports the same 3729 functionality. ATTACH_DIR_INHERIT is no longer supported and is 3730 removed. 3731 3732 #+begin_src emacs-lisp 3733 (defun org-update-attach-properties () 3734 "Change properties for Org-Attach." 3735 (interactive) 3736 (org-with-point-at 1 3737 (while (outline-next-heading) 3738 (let ((DIR (org--property-local-values "ATTACH_DIR" nil))) 3739 (when DIR 3740 (org-set-property "DIR" (car DIR)) 3741 (org-delete-property "ATTACH_DIR")))) 3742 (org-delete-property-globally "ATTACH_DIR_INHERIT"))) 3743 #+end_src 3744 3745 For those who hate breaking changes, even though the changes are made 3746 to clean things up; fear not. ATTACH_DIR will still continue to work. 3747 It's just not documented any longer. When you get the chance, run the 3748 code above to clean things up anyway! 3749 3750 **** New hooks 3751 Two hooks are added to org-attach: 3752 - org-attach-after-change-hook 3753 - org-attach-open-hook 3754 3755 They are added mostly for internal restructuring purposes, but can 3756 ofc. be used for other things as well. 3757 3758 *** New link-type: Attachment 3759 3760 Attachment-links are now first-class citizens. They mimic file-links 3761 in everything they do but use the existing attachment-folder as a base 3762 when expanding the links. Both =DIR= and =ID= properties are used to 3763 try to resolve the links, in exactly the same way as Org-Attach uses 3764 those properties. 3765 3766 *** Handle overlay specification for notes in Beamer export 3767 3768 This aligns Beamer notes with slide overlays. 3769 3770 *** Add support for lettered lists in Texinfo 3771 3772 Using =:enum A= or =:enum a= Texinfo attribute switches an otherwise 3773 numbered list to a lettered list. 3774 3775 *** Add a dispatcher command to insert dynamic blocks 3776 3777 You can add new dynamic blocks with function 3778 ~org-dynamic-block-define~. All such dynamic blocks can be used by 3779 ~org-dynamic-block-insert-dblock~ command. 3780 3781 *** Babel 3782 3783 **** ob-emacs-lisp sets ~lexical-binding~ in Org edit buffers 3784 3785 When editing an Elisp src block, the editing buffer's 3786 ~lexical-binding~ is set according to the src block's =:lexical= 3787 parameter. 3788 3789 **** Add LaTeX output support in PlantUML 3790 3791 *** New minor mode to display headline numbering 3792 3793 Use =<M-x org-num-mode>= to get a visual indication of the numbering 3794 in the outline. The numbering is also automatically updated upon 3795 changes in the buffer. 3796 3797 *** New property =HTML_HEADLINE_CLASS= in HTML export 3798 3799 The new property =HTML_HEADLINE_CLASS= assigns a class attribute to 3800 a headline. 3801 3802 *** Allow LaTeX attributes and captions for "table.el" tables 3803 3804 Supported LaTeX attributes are ~:float~, ~:center~, ~:font~ and 3805 ~:caption~. 3806 3807 *** Attach buffer contents to headline 3808 3809 With =<b>= key from attachment dispatcher (=<C-c C-a>=), it is now 3810 possible to write the contents of a buffer to a file in the headline 3811 attachment directory. 3812 3813 *** iCalendar export respects a =CLASS= property 3814 3815 Set the =CLASS= property on an entry to specify a visibility class for 3816 that entry only during iCalendar export. The property can be set to 3817 anything the calendar server supports. The iCalendar standard defines 3818 the values =PUBLIC=, =CONFIDENTIAL=, =PRIVATE=, which can be 3819 interpreted as publicly visible, accessible to a specific group, and 3820 private respectively. 3821 3822 This property can be inherited during iCalendar export, depending on 3823 the value of ~org-use-property-inheritance~. 3824 3825 *** New parameter for =INCLUDE= keyword 3826 3827 Add =:coding CODING-SYSTEM= to include files using a different coding 3828 system than the main Org document. For example: 3829 3830 #+begin_example 3831 ,#+INCLUDE: "myfile.cmd" src cmd :coding cp850-dos 3832 #+end_example 3833 3834 *** New values in clock tables' step: =month= and =year= 3835 *** ODT export handles numbers cookies in lists 3836 *** New cell movement functions in tables 3837 3838 ~S-<UP>~, ~S-<DOWN>~, ~S-<RIGHT>~, and ~S-<LEFT>~ now move cells in 3839 the corresponding direction by swapping with the adjacent cell. 3840 3841 *** New option to natively fontify LaTeX snippets and environments 3842 3843 A 'native option was added to org-highlight-latex-and-related. It 3844 matches the same structures than 'latex but it calls 3845 org-src-font-lock-fontify-block instead, thus bringing about full 3846 LaTeX font locking. 3847 3848 *** ~org-clone-subtree-with-time-shift~ learned to shift backward in time 3849 3850 =<C-c C-x c>= (~org-clone-subtree-with-time-shift~) now takes a 3851 negative value as a valid repeater to shift time stamps in backward 3852 in cloned subtrees. You can give, for example, ‘-3d’ to shift three 3853 days in the past. 3854 3855 *** Toggle display of all vs. undone scheduled habits conveniently 3856 3857 =<C-u K>= (~org-habit-toggle-display-in-agenda~) in an agenda toggles 3858 the display of all habits to those which are undone and scheduled. 3859 This is a function for convenience. 3860 3861 *** New parameter for SQL Babel blocks: ~:dbconnection~ 3862 3863 The new parameter ~:dbconnection~ allows to specify a connection name 3864 in a SQL block header: this name is used to look up connection 3865 parameters in ~sql-connection-alist~. 3866 3867 *** New =:scale= attribute supported by LaTeX exporters 3868 3869 The builtin "latex" exporters now accept and use a =:scale= attribute, 3870 which scales an image by a given factor. 3871 3872 This attribute is wrapped around the =scale= parameter of LaTeX's 3873 =\includegraphics= (bitmap images) or a TiKZ's =\scalebox=. 3874 Therefore, its value should be some string palatable to LaTeX as 3875 a positive float Its default value is an empty string (i.e. disabled). 3876 3877 This attribute overrides the =:width= and =:height= attributes. 3878 3879 #+begin_example 3880 ,#+name: Beastie 3881 ,#+caption: I think I saw this curious horse already, but where ? 3882 ,#+LATEX_ATTR: :scale 2 3883 [[https://orgmode.org/img/org-mode-unicorn-logo.png]] 3884 #+end_example 3885 3886 *** Allow specifying the target for a table of contents 3887 3888 The =+TOC= keyword now accepts a =:target:= attribute that specifies 3889 the headline to use for making the table of contents. 3890 3891 #+begin_example 3892 ,* Target 3893 :PROPERTIES: 3894 :CUSTOM_ID: TargetSection 3895 :END: 3896 ,** Heading A 3897 ,** Heading B 3898 ,* Another section 3899 ,#+TOC: headlines 1 :target "#TargetSection" 3900 #+end_example 3901 3902 ** New functions 3903 *** ~org-dynamic-block-insert-dblock~ 3904 3905 Use default keybinding =<C-c C-x x>= to run command 3906 ~org-dynamic-block-insert-dblock~. It will prompt user to select 3907 dynamic block in ~org-dynamic-block-alist~. 3908 3909 *** ~org-table-cell-up~ 3910 *** ~org-table-cell-down~ 3911 *** ~org-table-cell-left~ 3912 *** ~org-table-cell-right~ 3913 *** ~org-habit-toggle-display-in-agenda~ 3914 ** Removed functions and variables 3915 *** Removed Org Drill 3916 3917 You can install it back from MELPA. 3918 3919 *** ~org-babel-set-current-result-hash~ 3920 *** ~org-capture-insert-template-here~ 3921 *** ~org-attach-directory~ 3922 3923 It has been deprecated in favor of ~org-attach-id-dir~ which is less 3924 ambiguous given the restructured org-attach. 3925 3926 *** ~org-enable-fixed-width-editor~ 3927 3928 This variable was not used through the code base. 3929 3930 ** Miscellaneous 3931 *** Change signature for ~org-list-to-subtree~ 3932 3933 The function now accepts the level of the subtree as an optional 3934 argument. It no longer deduces it from the current level. 3935 3936 *** LaTeX preview is simplified 3937 3938 Function ~org-latex-preview~, formerly known as 3939 ~org-toggle-latex-fragment~, has a hopefully simpler and more 3940 predictable behavior. See its docstring for details. 3941 3942 *** ~org-table-copy-down~ supports patterns 3943 3944 When ~org-table-copy-increment~ is non-nil, it is now possible to 3945 increment fields like =A1=, or =0A=, i.e., any string prefixed or 3946 suffixed with a whole number. 3947 3948 *** No more special indentation for description items 3949 3950 Descriptions items are indented like regular ones, i.e., text starts 3951 after the bullet. Special indentation used to introduce bugs when 3952 inserting sub-items in a description list. 3953 3954 *** New hook: ~org-todo-repeat-hook~ 3955 3956 This hook was actually introduced in Org 9.2.1, but wasn't advertised. 3957 3958 *** Org Table reads numbers starting with 0 as strings 3959 *** Disable fast tag selection interface via prefix arg 3960 3961 A call of ~org-set-tags-command~ with prefix argument C-u C-u avoids 3962 the fast tag selection interface and instead offers the plain 3963 interface. 3964 3965 *** ~:mkdirp~ now supports create directory for ~:dir~ path 3966 3967 The ~:mkdirp~ header argument used to only work for ~:tangle~ tangle 3968 files. Now ~:mkdirp~ works for ~:dir~ too. This is more convenient for 3969 specify default directory and with ~:file~ header argument. 3970 3971 *** New variable: ~org-agenda-breadcrumbs-separator~ 3972 3973 If breadcrumbs are showed in org-agenda with the help of "%b" format 3974 in ~org-agenda-prefix-format~, user can customize breadcrumbs's 3975 separator using ~org-agenda-breadcrumbs-separator~. 3976 3977 *** New variable ~org-attach-commands~ 3978 3979 This variable makes it possible to customize the list of commands for 3980 the attachment dispatcher. 3981 3982 *** New ID method based on timestamp 3983 3984 If one chooses, it is now possible to create ID's based on timestamp 3985 (ISO8601) instead of UUID by changing org-id-method to ts. 3986 3987 For an improved folder structure when using timestamp as ID, make sure 3988 to promote ~org-attach-id-ts-folder-format~ to the first element of 3989 ~org-attach-id-to-path-function-list~ in your configuration at the 3990 same time. 3991 3992 *** New customization: ~org-id-locations-relative~ 3993 3994 New customization to make the persisting of org-id-locations between 3995 sessions to store links to files as relative instead of absolute. The 3996 links will be stored as relative to the path of org-id-locations-file. 3997 3998 *** ~org-ctrl-c-tab~ is functional before the first headline 3999 4000 I.e. treat the whole file as if it was a subtree. 4001 4002 Also fold everything below the chosen level. Former behavior was to 4003 leave unfolded subtrees unfolded. 4004 4005 *** ~org-kill-note-or-show-branches~ is functional before the first headline 4006 4007 I.e. treat the whole file as if it was a subtree. 4008 4009 *** Respect narrowing when agenda command is restricted to buffer 4010 4011 *** ~org-table-insert-column~ inserts the column at point position 4012 4013 Before, the new column was inserted to the right of the column at 4014 point position. 4015 4016 *** Table column deletion now consistent with row deletion 4017 4018 Point stays in the column at deletion, except when deleting the 4019 rightmost column. 4020 4021 * Version 9.2 4022 ** Incompatible changes 4023 *** Removal of OrgStruct mode mode and radio lists 4024 4025 OrgStruct minor mode and radio lists mechanism (~org-list-send-list~ 4026 and ~org-list-radio-lists-templates~) are removed from the code base. 4027 4028 Note that only radio /lists/ have been removed, not radio tables. 4029 4030 If you want to manipulate lists like in Org in other modes, we suggest 4031 to use =orgalist.el=, which you can install from GNU ELPA. 4032 4033 If you want to use Org folding outside of Org buffers, you can have a 4034 look at the outshine package in the MELPA repository. 4035 4036 *** Change in the structure template expansion 4037 4038 Org 9.2 comes with a new template expansion mechanism, combining 4039 ~org-insert-structure-template~ bound to ~C-c C-,~. 4040 4041 If you customized the ~org-structure-template-alist~ option manually, 4042 you probably need to update it, see the docstring for accepted values. 4043 4044 If you prefer using previous patterns, e.g. =<s=, you can activate 4045 them again by requiring Org Tempo library: 4046 4047 : (require 'org-tempo) 4048 4049 or add it to ~org-modules~. 4050 4051 If you need complex templates, look at the ~tempo-define-template~ 4052 function or at solutions like Yasnippet. 4053 4054 *** Change to Noweb expansion 4055 4056 Expansion check =:noweb-ref= only if no matching named block is found 4057 in the buffer. As a consequence, any =:noweb-ref= value matching the 4058 name of a source block in the buffer is ignored. A simple fix is to 4059 give every concerned source-block, including the named one, a new, 4060 unique, Noweb reference. 4061 4062 #+BEGIN_SRC org 4063 ,#+NAME: foo 4064 ,#+BEGIN_SRC emacs-lisp 4065 1 4066 ,#+END_SRC 4067 4068 ,#+BEGIN_SRC emacs-lisp :noweb-ref foo 4069 2 4070 ,#+END_SRC 4071 4072 ,#+BEGIN_SRC emacs-lisp :noweb yes 4073 <<foo>> 4074 ,#+END_SRC 4075 #+END_SRC 4076 4077 should become 4078 4079 #+BEGIN_SRC org 4080 ,#+NAME: foo 4081 ,#+BEGIN_SRC emacs-lisp :noweb-ref bar 4082 1 4083 ,#+END_SRC 4084 4085 ,#+BEGIN_SRC emacs-lisp :noweb-ref bar 4086 2 4087 ,#+END_SRC 4088 4089 ,#+BEGIN_SRC emacs-lisp :noweb yes 4090 <<bar>> 4091 ,#+END_SRC 4092 #+END_SRC 4093 4094 *** Default/accepted values of ~org-calendar-to-agenda-key~ 4095 4096 The default value and accepted value of ~org-calendar-to-agenda-key~ 4097 changed. This is an excerpt of the new docstring: 4098 4099 : When set to ‘default’, bind the function to ‘c’, but only if it is 4100 : available in the Calendar keymap. This is the default choice because 4101 : ‘c’ can then be used to switch back and forth between agenda and calendar. 4102 : 4103 : When nil, ‘org-calendar-goto-agenda’ is not bound to any key. 4104 4105 Check the full docstring for more. 4106 4107 *** Change the signature of the ~org-set-effort~ function 4108 4109 Here is the new docstring: 4110 4111 : (org-set-effort &optional INCREMENT VALUE) 4112 : 4113 : Set the effort property of the current entry. 4114 : If INCREMENT is non-nil, set the property to the next allowed 4115 : value. Otherwise, if optional argument VALUE is provided, use 4116 : it. Eventually, prompt for the new value if none of the previous 4117 : variables is set. 4118 4119 *** Placeholders in =(eval ...)= macros are always strings 4120 4121 Within =(eval ...)= macros, =$1=-like placeholders are always replaced 4122 with a string. As a consequence, they must not be enclosed within 4123 quotes. As an illustration, consider the following, now valid, 4124 examples: 4125 4126 #+begin_example 4127 ,#+macro: join (eval (concat $1 $2)) 4128 ,#+macro: sum (eval (+ (string-to-number $1) (string-to-number $2))) 4129 4130 {{{join(a,b)}}} => ab 4131 {{{sum(1,2)}}} => 3 4132 #+end_example 4133 4134 However, there is no change in non-eval macros: 4135 4136 #+begin_example 4137 ,#+macro: disp argument: $1 4138 4139 {{{disp(text)}}} => argument: text 4140 #+end_example 4141 4142 *** =align= STARTUP value no longer narrow table columns 4143 4144 Columns narrowing (or shrinking) is now dynamic. See [[*Dynamically 4145 narrow table columns]] for details. In particular, it is decoupled from 4146 aligning. 4147 4148 If you need to automatically shrink columns upon opening an Org 4149 document, use =shrink= value instead, or in addition to align: 4150 4151 #+BEGIN_EXAMPLE 4152 ,#+STARTUP: align shrink 4153 #+END_EXAMPLE 4154 4155 *** ~org-get-tags~ meaning change 4156 4157 Function ~org-get-tags~ used to return local tags to the current 4158 headline. It now returns all the inherited tags in addition to the 4159 local tags. In order to get the old behavior back, you can use: 4160 4161 : (org-get-tags nil t) 4162 4163 *** Alphabetic sorting in tables and lists 4164 4165 When sorting alphabetically, ~org-table-sort-lines~ and ~org-sort-list~ 4166 now sort according to the locale’s collation rules instead of by 4167 code-point. 4168 4169 *** Change the name of the :tags clocktable option to :match 4170 4171 The =:match= (renamed from =:tags=) option allows to limit clock entries 4172 to those matching a todo-tags matcher. 4173 4174 The old =:tags= option can be set to =t= to display a headline's tags in a 4175 dedicated column. 4176 4177 This is consistent with the naming of =org-dblock-write:columnview= 4178 options, where =:match= is also used as a headlines filter. 4179 4180 ** New features 4181 *** Add ~:session~ support of ob-clojure for CIDER 4182 You can initialize source block session with Babel default keybinding 4183 =[C-c C-v C-z]= to use =sesman= session manager to link current 4184 project, directory or buffer with specific Clojure session, or 4185 =cider-jack-in= a new CIDER REPL if no CIDER REPLs available. In older 4186 CIDER version which has not =sesman= integrated, only has 4187 =cider-jack-in= without Clojure project is supported. 4188 #+begin_src clojure :session 4189 (dissoc Clojure 'JVM) 4190 (conj clojurists "stardiviner") 4191 #+end_src 4192 4193 *** Add ~:results link~ support for Babel 4194 4195 With this output format, create a link to the file specified in 4196 ~:file~ header argument, without actually writing any result to it: 4197 4198 #+begin_example 4199 ,#+begin_src shell :dir "data/tmp" :results link :file "crackzor_1.0.c.gz" 4200 wget -c "https://ben.akrin.com/crackzor/crackzor_1.0.c.gz" 4201 ,#+end_src 4202 4203 ,#+results: 4204 [[file:data/tmp/crackzor_1.0.c.gz]] 4205 #+end_example 4206 4207 *** Add ~:session~ support of ob-js for js-comint 4208 #+begin_src js :session "*Javascript REPL*" 4209 console.log("stardiviner") 4210 #+end_src 4211 4212 *** Add ~:session~ support of ob-js for Indium 4213 #+begin_src js :session "*JS REPL*" 4214 console.log("stardiviner") 4215 #+end_src 4216 4217 *** Add ~:session~ support of ob-js for skewer-mode 4218 #+begin_src js :session "*skewer-repl*" 4219 console.log("stardiviner") 4220 #+end_src 4221 4222 *** Add support for links to LaTeX equations in HTML export 4223 Use MathJax links when enabled (by ~org-html-with-latex~), otherwise 4224 add a label to the rendered equation. 4225 *** Org Tempo may used for snippet expansion of structure template. 4226 See manual and the commentary section in ~org-tempo.el~ for details. 4227 *** Exclude unnumbered headlines from table of contents 4228 Set their =UNNUMBERED= property to the special =notoc= value. See 4229 manual for details. 4230 *** ~org-archive~ functions update status cookies 4231 4232 Archiving headers through ~org-archive-subtree~ and 4233 ~org-archive-to-archive-sibling~ such as the ones listed below: 4234 4235 #+BEGIN_SRC org 4236 ,* Top [1/2] 4237 ,** DONE Completed 4238 ,** TODO Working 4239 #+END_SRC 4240 4241 Will update the status cookie in the top level header. 4242 4243 *** Disable =org-agenda-overriding-header= by setting to empty string 4244 4245 The ~org-agenda-overriding-header~ inserted into agenda views can now 4246 be disabled by setting it to an empty string. 4247 4248 *** Dynamically narrow table columns 4249 4250 With ~C-c TAB~, it is now possible to narrow a column to the width 4251 specified by a width cookie in the column, or to 1 character if there 4252 is no such cookie. The same keybinding expands a narrowed column to 4253 its previous state. 4254 4255 Editing the column automatically expands the whole column to its full 4256 size. 4257 4258 *** =org-columns-summary-types= entries can take an optional COLLECT function 4259 4260 You can use this to make collection of a property from an entry 4261 conditional on another entry. E.g. given this configuration: 4262 4263 #+BEGIN_SRC emacs-lisp 4264 (defun custom/org-collect-confirmed (property) 4265 "Return `PROPERTY' for `CONFIRMED' entries" 4266 (let ((prop (org-entry-get nil property)) 4267 (confirmed (org-entry-get nil "CONFIRMED"))) 4268 (if (and prop (string= "[X]" confirmed)) 4269 prop 4270 "0"))) 4271 4272 (setq org-columns-summary-types 4273 '(("X+" org-columns--summary-sum 4274 custom/org-collect-confirmed))) 4275 #+END_SRC 4276 4277 You can have a file =bananas.org= containing: 4278 4279 #+BEGIN_SRC org 4280 ,#+columns: %ITEM %CONFIRMED %Bananas{+} %Bananas(Confirmed Bananas){X+} 4281 4282 ,* All shipments 4283 ,** Shipment 1 4284 :PROPERTIES: 4285 :CONFIRMED: [X] 4286 :Bananas: 4 4287 :END: 4288 4289 ,** Shipment 2 4290 :PROPERTIES: 4291 :CONFIRMED: [ ] 4292 :BANANAS: 7 4293 :END: 4294 #+END_SRC 4295 4296 ... and when going to the top of that file and entering column view 4297 you should expect to see something like: 4298 4299 | ITEM | CONFIRMED | Bananas | Confirmed Bananas | 4300 |---------------+-----------+---------+-------------------| 4301 | All shipments | | 11 | 4 | 4302 | Shipment 1 | [X] | 4 | 4 | 4303 | Shipment 2 | [ ] | 7 | 7 | 4304 4305 #+BEGIN_EXAMPLE 4306 ,#+STARTUP: shrink 4307 #+END_EXAMPLE 4308 4309 *** Allow to filter by tags/property when capturing colview 4310 4311 You can now use =:match= to filter entries using a todo/tags/properties 4312 matcher. 4313 4314 *** Add support for Oracle's database alias in Babel blocks 4315 =ob-sql= library already support running SQL blocks against an Oracle 4316 database using ~sqlplus~. Now it's possible to use alias names 4317 defined in =TNSNAMES= file instead of specifying full connection 4318 parameters. See example below. 4319 4320 #+BEGIN_SRC org 4321 you can use the previous full connection parameters 4322 ,#+BEGIN_SRC sql :engine oracle :dbuser me :dbpassword my_insecure_password :database my_db_name :dbhost my_db_host :dbport 1521 4323 select sysdate from dual; 4324 ,#+END_SRC 4325 4326 or the alias defined in your TNSNAMES file 4327 ,#+BEGIN_SRC sql :engine oracle :dbuser me :dbpassword my_insecure_password :database my_tns_alias 4328 select sysdate from dual; 4329 ,#+END_SRC 4330 #+END_SRC 4331 4332 *** ~org-agenda-set-restriction-lock~ toggle agenda restriction at point 4333 4334 You can set an agenda restriction lock with =C-x C-x <= or with =<= at the 4335 beginning of a headline when using Org speed commands. Now, if there 4336 is already a restriction at point, hitting =<= again (or =C-x C-x <=) will 4337 remove it. 4338 4339 *** Headlines can now link to themselves in HTML export 4340 4341 When enabling ~org-html-self-link-headlines~ the headlines exported to 4342 HTML contain a hyperlink to themselves. 4343 4344 ** New commands and functions 4345 4346 *** ~org-insert-structure-template~ 4347 4348 This function can be used to wrap existing text of Org elements in 4349 a #+BEGIN_FOO/#+END_FOO block. Bound to C-c C-x w by default. 4350 4351 *** ~org-export-excluded-from-toc-p~ 4352 4353 See docstring for details. 4354 4355 *** ~org-timestamp-to-time~ 4356 *** ~org-timestamp-from-string~ 4357 *** ~org-timestamp-from-time~ 4358 *** ~org-attach-dired-to-subtree~ 4359 4360 See docstring for details. 4361 4362 *** ~org-toggle-narrow-to-subtree~ 4363 4364 Toggle the narrowing state of the buffer: when in a narrowed state, 4365 widen, otherwise call ~org-narrow-to-subtree~ to narrow. 4366 4367 This is attached to the "s" speed command, so that hitting "s" twice 4368 will go back to the widen state. 4369 4370 *** ~org-browse-news~ 4371 4372 Browse https://orgmode.org/Changes.html to let users read information 4373 about the last major release. 4374 4375 There is a new menu entry for this in the "Documentation" menu item. 4376 4377 *** ~org-info-find-node~ 4378 4379 From an Org file or an agenda switch to a suitable info page depending 4380 on the context. 4381 4382 The function is bound to =C-c C-x I=. 4383 4384 ** Removed commands and functions 4385 *** ~org-outline-overlay-data~ 4386 Use ~org-save-outline-visibility~ instead. 4387 *** ~org-set-outline-overlay-data~ 4388 Use ~org-save-outline-visibility~ instead. 4389 *** ~org-get-string-indentation~ 4390 It was not used throughout the code base. 4391 *** ~org-fix-indentation~ 4392 It was not used throughout code base. 4393 *** ~org-context-p~ 4394 Use ~org-element-at-point~ instead. 4395 *** ~org-preserve-lc~ 4396 It is no longer used in the code base. 4397 *** ~org-try-structure-completion~ 4398 Org Tempo may be used as a replacement. See details above. 4399 ** Removed options 4400 4401 *** org-babel-use-quick-and-dirty-noweb-expansion 4402 4403 See [[*Change to Noweb expansion][Change to Noweb expansion]] for explanations. 4404 4405 ** Miscellaneous 4406 4407 *** New default value for ~org-texinfo-table-scientific-notation~ 4408 4409 It is now nil, which means numbers in scientific notation are not 4410 handled specially by default. 4411 4412 *** New default value for ~org-latex-table-scientific-notation~ 4413 4414 It is now nil, which means numbers in scientific notation are not 4415 handled specially by default. 4416 4417 *** New face: ~org-upcoming-distant-deadline~ 4418 4419 It is meant to be used as the face for distant deadlines, see 4420 ~org-agenda-deadline-faces~ 4421 4422 *** ~org-paste-subtree~ no longer breaks sections 4423 4424 Unless point is at the beginning of a headline, ~org-paste-subtree~ 4425 now pastes the tree before the next visible headline. If you need to 4426 break the section, use ~org-yank~ instead. 4427 4428 *** ~org-table-insert-column~ inserts a column to the right 4429 4430 It used to insert it on the left. With this change, 4431 ~org-table-insert-column~ and ~org-table-delete-column~ are 4432 reciprocal. 4433 4434 *** ~org-publish-resolve-external-link~ accepts a new optional argument. 4435 *** ~org-irc.el~ now supports exporting =irc:= links properly 4436 4437 Previously, irc links were exported by ~ox-md~ and ~ox-html~ as normal 4438 file links, which lead to them being broken in web browsers. Now both 4439 of these exporters will properly export to =irc:= links, which will 4440 open properly in irc clients from web browsers. 4441 4442 *** ~org-comment-dwim~ (bound to =M-;=) now comments headings, if point is on a heading 4443 *** Add support for open source block in window below 4444 4445 Set option ~org-src-window-setup~ to ~split-window-below~. 4446 4447 *** Alphabetic sorting in headings and tags now uses the locale’s sorting rules 4448 4449 When sorting alphabetically, ~org-sort-entries~ and 4450 ~org-tags-sort-function~ now sort according to the locale’s collation 4451 rules instead of by code-point. 4452 *** New speed command "k" to kill (cut) the subtree at point 4453 * Version 9.1 4454 4455 ** Incompatible changes 4456 4457 *** Variables relative to clocksum duration are obsolete 4458 4459 ~org-time-clocksum-format~, ~org-time-clocksum-use-fractional~ and 4460 ~org-time-clocksum-fractional-format~ are obsolete. If you changed 4461 them, consider modifying ~org-duration-format~ instead. 4462 4463 Variable ~org-time-clocksum-use-effort-durations~ is also obsolete. 4464 Consider setting ~org-duration-units~ instead. 4465 4466 *** ~org-at-timestamp-p~ optional argument accepts different values 4467 4468 See docstrings for the allowed values. For backward compatibility, 4469 ~(org-at-timestamp-p t)~ is still supported, but should be updated 4470 accordingly. 4471 4472 *** ~org-capture-templates~ no longer accepts S-expressions as file names 4473 4474 Since functions are allowed there, a straightforward way to migrate 4475 is to turn, e.g., 4476 4477 : (file (sexp)) 4478 4479 into 4480 4481 : (file (lambda () (sexp))) 4482 4483 *** Deleted contributed packages 4484 4485 =org-ebib.el, =org-bullets.el= and =org-mime.el= have been deleted 4486 from the contrib/ directory. 4487 4488 You can now find them here : 4489 4490 - https://github.com/joostkremers/ebib 4491 - https://github.com/sabof/org-bullets 4492 - https://github.com/org-mime/org-mime 4493 4494 *** Change ~org-texinfo-classes~ value 4495 The value cannot support functions to create sectioning commands 4496 anymore. Also, the sectioning commands should include commands for 4497 appendices. See the docstring for more information. 4498 *** Removal of ~:sitemap-sans-extension~ 4499 4500 The publishing property is no longer recognized, as a consequence of 4501 changes to site-map generation. 4502 4503 You can get the same functionality by setting ~:sitemap-format-entry~ 4504 to the following 4505 4506 #+BEGIN_SRC elisp 4507 (lambda (entry style project) 4508 (cond ((not (directory-name-p entry)) 4509 (format "[[file:%s][%s]]" 4510 (file-name-sans-extension entry) 4511 (org-publish-find-title entry project))) 4512 ((eq style 'tree) (file-name-nondirectory (directory-file-name entry))) 4513 (t entry))) 4514 #+END_SRC 4515 4516 *** Change signature for ~:sitemap-function~ 4517 4518 ~:sitemap-function~ now expects to be called with two arguments. See 4519 ~org-publish-project-alist~ for details. 4520 4521 *** Change signature for some properties in ~org-list-to-generic~ 4522 4523 ~:istart~, ~:icount~, ~:iend~ and ~:isep~ now expect the type of the 4524 list as their first argument. 4525 4526 *** Change signature for ~org-get-repeater~ 4527 The optional argument is now a string to extract the repeater from. 4528 See docstring for details. 4529 4530 *** Change signature for ~org-time-string-to-time~ 4531 See docstring for changes. 4532 4533 *** Change order of items in ~org-agenda-time-grid~ 4534 ~org-agenda-time-grid~ gained an extra item to allow users to customize 4535 the string displayed after times in the agenda. See docstring for 4536 details. 4537 4538 *** ~tags-todo~ custom searches now include DONE keywords 4539 4540 Use "/!" markup when filtering TODO keywords to get only not-done TODO 4541 keywords. 4542 4543 *** ~org-split-string~ returns ~("")~ when called on an empty string 4544 4545 It used to return nil. 4546 4547 *** Removal of =ob-scala.el= 4548 4549 See [[https://github.com/ensime/emacs-scala-mode/issues/114][this github issue]]. 4550 4551 You can use =ob-scala.el= as packaged in scala-mode, available from the 4552 MELPA repository. 4553 4554 ** New features 4555 *** iCalendar export uses inheritance for TIMEZONE and LOCATION properties 4556 Both these properties can be inherited during iCalendar export, 4557 depending on the value of ~org-use-property-inheritance~. 4558 *** iCalendar export respects a TIMEZONE property 4559 Set the TIMEZONE property on an entry to specify a time zone for that 4560 entry only during iCalendar export. The property value should be 4561 specified as in "Europe/London". 4562 *** ~org-attach~ can move directory contents 4563 When setting a new directory for an entry, org-attach offers to move 4564 files over from the old directory. Using a prefix arg will reset the 4565 directory to old, ID based one. 4566 *** New Org duration library 4567 This new library implements tools to read and print time durations in 4568 various formats (e.g., "H:MM", or "1d 2h 3min"...). 4569 4570 See ~org-duration-to-minutes~ and ~org-duration-from-minutes~ 4571 docstrings. 4572 4573 *** Agenda 4574 **** New variable : ~org-agenda-show-future-repeats~ 4575 **** New variable : ~org-agenda-prefer-last-repeat~ 4576 **** New variable : ~org-deadline-past-days~ 4577 See docstring for details. 4578 **** Binding C-c C-x < for ~org-agenda-set-restriction-lock-from-agenda~ 4579 **** New auto-align default setting for =org-agenda-tags-column= 4580 4581 =org-agenda-tags-column= can now be set to =auto=, which will 4582 automatically align tags to the right edge of the window. This is now 4583 the default setting. 4584 *** New value for ~org-publish-sitemap-sort-folders~ 4585 4586 The new ~ignore~ value effectively allows toggling inclusion of 4587 directories in published site-maps. 4588 4589 *** Babel 4590 4591 **** Scheme: support for tables 4592 **** Scheme: new variable: ~org-babel-scheme-null-to~ 4593 4594 This new custom option allows you to use an empty list or null symbol to 4595 format the table output, initially assigned to ~hlines~. 4596 4597 **** Scheme: new header ~:prologue~ 4598 4599 A new block code header has been created for Org Babel that enables 4600 developers to prepend code to the scheme block being processed. 4601 4602 Multiple ~:prologue~ headers can be added each of them using a string 4603 with the content to be added. 4604 4605 The scheme blocks are prepared by surrounding the code in the block 4606 with a let form. The content of the ~:prologue~ headers are prepended 4607 before this let form. 4608 4609 **** Support for hledger accounting reports added 4610 **** Clojure: new setting ~org-babel-clojure-sync-nrepl-timeout~ 4611 4612 Creation of a new setting to specify the Cider timeout. By setting 4613 the =org-babel-clojure-sync-nrepl-timeout= setting option. The value 4614 is in seconds and if set to nil then no timeout will occur. 4615 4616 **** Clojure: new header ~:show-process~ 4617 4618 A new block code header has been created for Org Babel that enables 4619 developers to output the process of an ongoing process into a new 4620 window/buffer. 4621 4622 You can tell Org Babel to output the process of a running code block. 4623 4624 To show that output you only have to specify the =:show-process= 4625 option in the code block's header like this: 4626 4627 #+begin_example 4628 ,#+BEGIN_SRC clojure :results output :show-process t 4629 (dotimes [n 10] 4630 (println n ".") 4631 (Thread/sleep 500)) 4632 ,#+END_SRC 4633 #+end_example 4634 4635 If =:show-process= is specified that way, then when you will run the 4636 code using =C-c C-c= a new window will open in Emacs. Everything that 4637 is output by the REPL will immediately be added to that new window. 4638 4639 When the processing of the code is finished, then the window and its 4640 buffer will be closed and the results will be reported in the 4641 =#+RESULTS= section. 4642 4643 Note that the =:results= parameter's behavior is *not* changed. If 4644 =silent= is specified, then no result will be displayed. If =output= 4645 is specified then all the output from the window will appears in the 4646 results section. If =value= is specified, then only the last returned 4647 value of the code will be displayed in the results section. 4648 4649 **** Maxima: new headers ~:prologue~ and ~:epilogue~ 4650 Babel options ~:prologue~ and ~:epilogue~ have been implemented for 4651 Maxima source blocks which prepend and append, respectively, the given 4652 code strings. This can be useful for specifying formatting settings 4653 which would add clutter to exported code. For instance, you can use 4654 this ~:prologue "fpprintprec: 2; linel: 50;"~ for presenting Maxima 4655 results in a beamer presentation. 4656 **** PlantUML: add support for header arguments 4657 4658 [[https://plantuml.com/][Plantuml]] source blocks now support the [[https://orgmode.org/manual/prologue.html#prologue][~:prologue~]], [[https://orgmode.org/manual/epilogue.html#epilogue][~:epilogue~]] and 4659 [[https://orgmode.org/manual/var.html#var][~:var~]] header arguments. 4660 4661 **** SQL: new engine added ~sqsh~ 4662 4663 A new engine was added to support ~sqsh~ command line utility for use 4664 against Microsoft SQL Server or Sybase SQL server. 4665 4666 More information on ~sqsh~ can be found here: [[https://sourceforge.net/projects/sqsh/][sourceforge/sqsh]] 4667 4668 To use ~sqsh~ in an *sql* =SRC_BLK= set the =:engine= like this: 4669 4670 #+begin_example 4671 ,#+BEGIN_SRC sql :engine sqsh :dbhost my_host :dbuser master :dbpassword pass :database support 4672 Select * From Users 4673 Where clue > 0 4674 ,#+END_SRC 4675 #+end_example 4676 4677 **** SQL: new engine added =vertica= 4678 4679 A new engine was added to support vsql command line utility for use 4680 against HP Vertica. 4681 4682 More information on =vsql= can be found here: [[https://my.vertica.com/docs/7.2.x/HTML/index.htm#Authoring/ConnectingToHPVertica/vsql/UsingVsql.htm][my.vertica.com]] 4683 4684 To use =vertica= in an sql =SRC_BLK= set the =:engine= like this: 4685 4686 #+BEGIN_EXAMPLE 4687 ,#+BEGIN_SRC sql :engine vertica :dbhost my_host :dbuser dbadmin :dbpassword pw :database vmart 4688 SELECT * FROM nodes; 4689 ,#+END_SRC 4690 #+END_EXAMPLE 4691 4692 **** C++: New header ~:namespaces~ 4693 4694 The new ~:namespaces~ export option can be used to specify namespaces 4695 to be used within a C++ org source block. Its usage is similar to 4696 ~:includes~, in that it can accept multiple, space-separated 4697 namespaces to use. This header is equivalent to adding ~using 4698 namespace <name>;~ in the source block. Here is a "Hello World" in C++ 4699 using ~:namespaces~: 4700 4701 #+begin_example 4702 ,#+BEGIN_SRC C++ :results output :namespaces std :includes <iostream> 4703 cout << "Hello World" << endl; 4704 ,#+END_SRC 4705 #+end_example 4706 4707 **** Support for Vala language 4708 4709 [[https://wiki.gnome.org/Projects/Vala][Vala]] language blocks support two special header arguments: 4710 4711 - ~:flags~ passes arguments to the compiler 4712 - ~:cmdline~ passes commandline arguments to the generated executable 4713 4714 Support for [[https://orgmode.org/manual/var.html#var][~:var~]] does not exist yet, also there is no [[https://orgmode.org/manual/session.html#session][~:session~]] 4715 support because Vala is a compiled language. 4716 4717 The Vala compiler binary can be changed via the ~defcustom~ 4718 ~org-babel-vala-compiler~. 4719 4720 *** New ~function~ scope argument for the Clock Table 4721 Added a nullary function that returns a list of files as a possible 4722 argument for the scope of the clock table. 4723 *** Export 4724 **** Implement vernacular table of contents in Markdown exporter 4725 Global table of contents are generated using vanilla Markdown syntax 4726 instead of HTML. Also #+TOC keyword, including local table of 4727 contents, are now supported. 4728 **** Add Slovenian translations 4729 **** Implement ~org-export-insert-image-links~ 4730 This new function is meant to be used in back-ends supporting images 4731 as descriptions of links, a.k.a. image links. See its docstring for 4732 details. 4733 **** New macro : ~{{{n}}}~ 4734 This macro creates and increment multiple counters in a document. See 4735 manual for details. 4736 **** Add global macros through ~org-export-global-macros~ 4737 With this variable, one can define macros available for all documents. 4738 **** New keyword ~#+EXPORT_FILE_NAME~ 4739 Similarly to ~:EXPORT_FILE_NAME:~ property, this keyword allows the 4740 user to specify the name of the output file upon exporting the 4741 document. This also has an effect on publishing. 4742 **** Horizontal rules are no longer ignored in LaTeX table math mode 4743 **** Use ~compilation-mode~ for compilation output 4744 **** Plain lists accept a new ~:separator~ attribute in Texinfo 4745 4746 The new ~:separator~ attribute splits a tag from a description list 4747 item into multiple parts. This allows to have two-column tables with 4748 multiple entries in the first column. See manual for more details. 4749 4750 **** ~latex-environment~ elements support ~caption~ keywords for LaTeX export 4751 *** ~org-edit-special~ can edit LaTeX environments 4752 4753 Using ~C-c '~ on a LaTeX environment opens a sub-editing buffer. By 4754 default, major mode in that buffer is ~latex-mode~, but it can be 4755 changed by configuring ~org-src-lang-modes~. 4756 4757 *** ~org-list-to-generic~ includes a new property: ~:ifmt~ 4758 4759 ~:ifmt~ is a function to be called on the body of each item. See 4760 ~org-list-to-generic~ documentation for details. 4761 4762 *** New variable : ~org-bibtex-headline-format-function~ 4763 This allow to use a different title than entry title. 4764 4765 *** ~org-attach~ supports attaching files from URLs 4766 4767 Using ~C-c C-a u~ prompts for a URL pointing to a file to be attached 4768 to the document. 4769 4770 *** New option for ~org-refile-use-outline-path~ 4771 ~org-refile-use-outline-path~ now supports the setting ~buffer-name~, 4772 which causes refile targets to be prefixed with the buffer’s 4773 name. This is particularly useful when used in conjunction with 4774 ~uniquify.el~. 4775 4776 *** ~org-file-contents~ now allows the FILE argument to be a URL. 4777 This allows ~#+SETUPFILE:~ to accept a URL instead of a local file 4778 path. The URL contents are auto-downloaded and saved to a temporary 4779 cache ~org--file-cache~. A new optional argument ~NOCACHE~ is added 4780 to ~org-file-contents~. 4781 4782 *** ~org-mode-restart~ now resets the newly added ~org--file-cache~. 4783 Using ~C-c C-c~ on any keyword (like ~#+SETUPFILE~) will reset the 4784 that file cache. 4785 4786 *** New option : ~org-table-duration-hour-zero-padding~ 4787 This variable allow computed durations in tables to be zero-padded. 4788 4789 *** New mode switch for table formulas : =U= 4790 This mode omits seconds in durations. 4791 4792 ** Removed functions 4793 4794 *** Org Timeline 4795 4796 This feature has been removed. Use a custom agenda view, possibly 4797 narrowed to current buffer to achieve a similar functionality. 4798 4799 *** ~org-agenda-skip-entry-when-regexp-matches~ is obsolete 4800 4801 Use ~org-agenda-skip-if~ instead. 4802 4803 *** ~org-agenda-skip-subtree-when-regexp-matches~ is obsolete 4804 4805 Use ~org-agenda-skip-if~ instead. 4806 4807 *** ~org-agenda-skip-entry-when-regexp-matches-in-subtree~ is obsolete 4808 4809 Use ~org-agenda-skip-if~ instead. 4810 4811 *** ~org-minutes-to-clocksum-string~ is obsolete 4812 4813 Use ~org-duration-from-minutes~ instead. 4814 4815 *** ~org-hh:mm-string-to-minutes~ is obsolete 4816 4817 Use ~org-duration-to-minutes~ instead. 4818 4819 *** ~org-duration-string-to-minutes~ is obsolete 4820 4821 Use ~org-duration-to-minutes~ instead. 4822 4823 *** ~org-gnus-nnimap-cached-article-number~ is removed. 4824 4825 This function relied on ~nnimap-group-overview-filename~, which was 4826 removed from Gnus circa September 2010. 4827 4828 ** Removed options 4829 4830 *** ~org-agenda-repeating-timestamp-show-all~ is removed. 4831 4832 For an equivalent to a nil value, set ~org-agenda-show-future-repeats~ 4833 to nil and ~org-agenda-prefer-last-repeat~ to =t=. 4834 4835 *** ~org-gnus-nnimap-query-article-no-from-file~ is removed. 4836 4837 This variable has no effect, as it was relying on a function that was 4838 removed from Gnus circa September 2010. 4839 4840 *** ~org-usenet-links-prefer-google~ is obsolete. 4841 4842 Use ~org-gnus-prefer-web-links~ instead. 4843 4844 *** ~org-publish-sitemap-file-entry-format~ is deprecated 4845 4846 One can provide new ~:sitemap-format-entry~ property for a function 4847 equivalent to the removed format string. 4848 4849 *** ~org-enable-table-editor~ is removed. 4850 4851 Setting it to a nil value broke some other features (e.g., speed 4852 keys). 4853 4854 *** ~org-export-use-babel~ cannot be set to ~inline-only~ 4855 4856 The variable is now a boolean. 4857 4858 *** ~org-texinfo-def-table-markup~ is obsolete 4859 4860 Use ~org-texinfo-table-default-markup~ instead. 4861 4862 ** New functions 4863 4864 *** ~org-publish-find-property~ 4865 4866 This function can be used as a tool to format entries in a site-map, 4867 in addition to ~org-publish-find-title~ and ~org-publish-find-date~. 4868 4869 *** ~org-list-to-org~ 4870 4871 It is the reciprocal of ~org-list-to-lisp~, which see. 4872 4873 *** ~org-agenda-set-restriction-lock-from-agenda~ 4874 4875 Call ~org-agenda-set-restriction-lock~ from the agenda. 4876 4877 ** Miscellaneous 4878 4879 *** The Library of Babel now on Worg 4880 4881 The library-of-babel.org used to be accessible from the =doc/= 4882 directory, distributed with Org’s core. It is now accessible 4883 from the Worg community-driven documentation [[https://orgmode.org/worg/library-of-babel.html][here]]. 4884 4885 If you want to contribute to it, please see [[https://orgmode.org/worg/org-contribute.html][how to contribute]]. 4886 4887 *** Allow multiple columns view 4888 4889 Columns view is not limited to a single buffer anymore. 4890 *** Org Attach obeys ~dired-dwim-target~ 4891 4892 When a Dired buffer is opened next to the Org document being edited, 4893 the prompt for file to attach can start in the Dired buffer's 4894 directory if `dired-dwim-target' in non-nil. 4895 4896 *** ~org-fill-paragraph~ can now fill a whole region 4897 *** More specific anniversary descriptions 4898 4899 Anniversary descriptions (used in the agenda view, for instance) 4900 include the point in time, when the anniversary appears. This is, 4901 in its most general form, just the date of the anniversary. Or 4902 more specific terms, like "today", "tomorrow" or "in n days" are 4903 used to describe the time span. 4904 4905 This feature allows to automatically change the description of an 4906 anniversary, depending on if it occurs in the next few days or 4907 far away in the future. 4908 4909 *** Computed dates in tables appear as inactive time stamps 4910 4911 *** Save point before opening a file with an unknown search option 4912 4913 When following a file link with a search option (e.g., =::#custom-id=) 4914 that doesn't exist in the target file, save position before raising an 4915 error. As a consequence, it is possible to jump back to the original 4916 document with ~org-mark-ring-goto~ (default binding =C-c &=). 4917 4918 *** ~org-get-heading~ accepts two more optional arguments 4919 4920 See docstring for details. 4921 4922 *** New option ~org-babel-uppercase-example-markers~ 4923 4924 This variable is a ~defcustom~ and replaces the variable 4925 ~org-babel-capitalize-example-region-markers~, which is a ~defvar~ and 4926 is now obsolete. 4927 *** =INCLUDE= keywords in commented trees are now ignored. 4928 *** Default value for ~org-texinfo-text-markup-alist~ changed. 4929 4930 Now ~=...=~ markup uses ~@samp{}~ instead of ~@verb{}~. You can use 4931 ~@verb{}~ again by customizing the variable. 4932 4933 *** Texinfo exports example blocks as ~@example~ 4934 *** Texinfo exports inline source blocks as ~@code{}~ 4935 *** Texinfo default table markup is ~@asis~ 4936 4937 It used to be ~@samp~ but ~@asis~ is neutral and, therefore, more 4938 suitable as a default value. 4939 4940 *** Texinfo default process includes ~--no-split~ option 4941 *** New entities : ~\dollar~ and ~\USD~ 4942 *** Support for date style URLs in =org-protocol://open-source= 4943 4944 URLs like =https://cool-blog.com/2017/05/20/cool-post/= are covered by 4945 rewrite rules. 4946 4947 *** Add (C) =COMMENT= support to ~org-structure-template-alist~ 4948 4949 * Version 9.0 4950 4951 ** Incompatible changes 4952 4953 *** Emacs 23 support has been dropped 4954 4955 From now on, Org expects at least Emacs 24.3, although Emacs 24.4 or 4956 above is suggested. 4957 4958 *** XEmacs support has been dropped 4959 4960 Incomplete compatibility layer with XEmacs has been removed. If you 4961 want to take over maintenance of this compatibility, please contact 4962 our mailing list. 4963 4964 *** New syntax for export blocks 4965 4966 Export blocks are explicitly marked as such at the syntax level to 4967 disambiguate their parsing from special blocks. The new syntax is 4968 4969 #+BEGIN_SRC org 4970 ,#+BEGIN_EXPORT backend 4971 ... 4972 ,#+END_EXPORT 4973 #+END_SRC 4974 4975 instead of 4976 4977 #+BEGIN_SRC org 4978 ,#+BEGIN_backend 4979 ... 4980 ,#+END_backend 4981 #+END_SRC 4982 4983 As a consequence, =INCLUDE= keywords syntax is modified, e.g., 4984 4985 #+BEGIN_SRC org 4986 ,#+INCLUDE: "file.org" HTML 4987 #+END_SRC 4988 4989 becomes 4990 4991 #+BEGIN_SRC org 4992 ,#+INCLUDE: "file.org" export html 4993 #+END_SRC 4994 4995 The following function repairs export blocks and =INCLUDE= keywords 4996 using previous syntax: 4997 4998 #+BEGIN_SRC emacs-lisp 4999 (defun org-repair-export-blocks () 5000 "Repair export blocks and INCLUDE keywords in current buffer." 5001 (interactive) 5002 (when (eq major-mode 'org-mode) 5003 (let ((case-fold-search t) 5004 (back-end-re (regexp-opt 5005 '("HTML" "ASCII" "LATEX" "ODT" "MARKDOWN" "MD" "ORG" 5006 "MAN" "BEAMER" "TEXINFO" "GROFF" "KOMA-LETTER") 5007 t))) 5008 (org-with-wide-buffer 5009 (goto-char (point-min)) 5010 (let ((block-re (concat "^[ \t]*#\\+BEGIN_" back-end-re))) 5011 (save-excursion 5012 (while (re-search-forward block-re nil t) 5013 (let ((element (save-match-data (org-element-at-point)))) 5014 (when (eq (org-element-type element) 'special-block) 5015 (save-excursion 5016 (goto-char (org-element-property :end element)) 5017 (save-match-data (search-backward "_")) 5018 (forward-char) 5019 (insert "EXPORT") 5020 (delete-region (point) (line-end-position))) 5021 (replace-match "EXPORT \\1" nil nil nil 1)))))) 5022 (let ((include-re 5023 (format "^[ \t]*#\\+INCLUDE: .*?%s[ \t]*$" back-end-re))) 5024 (while (re-search-forward include-re nil t) 5025 (let ((element (save-match-data (org-element-at-point)))) 5026 (when (and (eq (org-element-type element) 'keyword) 5027 (string= (org-element-property :key element) "INCLUDE")) 5028 (replace-match "EXPORT \\1" nil nil nil 1))))))))) 5029 #+END_SRC 5030 5031 Moreover, ~:export-block~ keyword used in ~org-export-define-backend~ and 5032 ~org-export-define-derived-backend~ is no longer used and needs to be 5033 removed. 5034 5035 *** Footnotes changes 5036 5037 **** [1]-like constructs are not valid footnotes 5038 5039 Using =[1]= as a footnote was already discouraged in the manual, since 5040 it introduced too many false-positives in many Org documents. These 5041 constructs are now unsupported. 5042 5043 If you used =[N]= in some of your documents, consider turning them into 5044 =[fn:N]=. 5045 5046 **** /Org Footnote/ library doesn't handle non-Org buffers 5047 5048 Commands for footnotes in an Org document no longer try to do 5049 something in non-Org ones. If you need to have footnotes there, 5050 consider using the =footnote.el= library, shipped with Emacs. 5051 5052 In particular, ~org-footnote-tag-for-non-org-mode-files~ no longer 5053 exists. 5054 5055 *** ~org-file-apps~ no longer accepts S-expressions as commands 5056 5057 The variable now accepts functions of two arguments instead of plain 5058 S-expressions. Replacing an S-expression with an appropriate function 5059 is straightforward. For example 5060 5061 : ("pdf" . (foo)) 5062 5063 becomes 5064 5065 : ("pdf" . (lambda (file link) (foo))) 5066 5067 *** The ~{{{modification-time}}}~ macro can get time via =vc= 5068 5069 The modification time will be determined via =vc.el= if the second 5070 argument is non-nil. See the manual for details. 5071 5072 *** Preparation and completion functions in publishing projects change signature 5073 5074 Preparation and completion functions are now called with an argument, 5075 which is the project property list. It used to be dynamically scoped 5076 through the ~project-plist~ variable. 5077 5078 *** Old Babel header properties are no longer supported 5079 5080 Using header arguments as property names is no longer possible. As 5081 such, the following 5082 5083 #+BEGIN_EXAMPLE 5084 ,* Headline 5085 :PROPERTIES: 5086 :exports: code 5087 :var: a=1 b=2 5088 :var+: c=3 5089 :END: 5090 #+END_EXAMPLE 5091 5092 should be written instead 5093 5094 #+BEGIN_EXAMPLE 5095 ,* Headline 5096 :PROPERTIES: 5097 :header-args: :exports code 5098 :header-args+: :var a=1 b=2 5099 :header-args+: :var c=3 5100 :END: 5101 #+END_EXAMPLE 5102 5103 Please note that, however, old properties were defined at the source 5104 block definition. Current ones are defined where the block is called. 5105 5106 ** New features 5107 5108 *** ~org-eww~ has been moved into core 5109 *** New org-protocol key=value syntax 5110 5111 Org-protocol can now handle query-style parameters such as: 5112 5113 #+begin_example 5114 org-protocol://store-link?url=http:%2F%2Flocalhost%2Findex.html&title=The%20title 5115 org-protocol://capture?template=x&title=Hello&body=World&url=http:%2F%2Fexample.com 5116 #+end_example 5117 5118 Old-style links such as 5119 : org-protocol://store-link:/http:%2F%2Flocalhost%2Findex.html/The%20title 5120 continue to be supported. 5121 5122 If you have defined your own handler functions for 5123 ~org-protocol-protocol-alist~, change them to accept either a property 5124 list (for new-style links) or a string (for old-style links). Use 5125 ~org-protocol-parse-parameters~ to convert old-style links into property 5126 lists. 5127 5128 *** New Org linter library 5129 5130 ~org-lint~ can check syntax and report common issues in Org documents. 5131 5132 *** New option ~date-tree-last~ for ~org-agenda-insert-diary-strategy~ 5133 5134 When ~org-agenda-insert-diary-strategy~ is set to ~date-tree-last~, diary 5135 entries are added to last in the date tree. 5136 5137 *** New ~vbar~ entity 5138 5139 ~\vbar~ or ~\vbar{}~ will be exported unconditionally as a =|=, 5140 unlike to existing ~\vert~, which is expanded as ~|~ when using 5141 a HTML derived export back-end. 5142 5143 *** Export 5144 5145 **** New =#+latex_compiler= keyword to set LaTeX compiler. 5146 5147 PDFLaTeX, XeLaTeX, and LuaLaTeX are supported. See the manual for 5148 details. 5149 5150 **** New option ~org-export-with-broken-links~ 5151 5152 This option tells the export process how to behave when encountering 5153 a broken internal link. See its docstring for more information. 5154 5155 **** Attributes support in custom language environments for LaTeX export 5156 5157 Custom language environments for LaTeX export can now define the 5158 string to be inserted during export, using attributes to indicate the 5159 position of the elements. See variable ~org-latex-custom-lang-environments~ 5160 for more details. 5161 5162 **** New Texinfo ~options~ attribute on special blocks 5163 5164 Using ~:options~ as a Texinfo attribute, it is possible to add 5165 information to custom environments. See manual for details. 5166 5167 **** New HTML ~id~ attributes on special, example and quote blocks 5168 5169 If the block has a =#+NAME:= attribute assigned, then the HTML element 5170 will have an ~id~ attribute with that name in the HTML export. This 5171 enables one to create links to these elements in other places, e.g., 5172 ~<a href="#name">text</a>~. 5173 5174 **** Listings with captions are now numbered in HTML export 5175 5176 The class associated to the numbering is "listing-number". If you 5177 don't want these blocks to be numbered, as it was the case until now, 5178 You may want to add ~.listing-number { display: none; }~ to the CSS 5179 used. 5180 5181 **** Line Numbering in SRC/EXAMPLE blocks support arbitrary start number 5182 5183 The ~-n~ option to ~SRC~ and ~EXAMPLE~ blocks can now take a numeric 5184 argument to specify the staring line number for the source or example 5185 block. The ~+n~ option can now take a numeric argument that will be 5186 added to the last line number from the previous block as the starting 5187 point for the SRC/EXAMPLE block. 5188 5189 #+BEGIN_SRC org 5190 ,#+BEGIN_SRC emacs-lisp -n 20 5191 ;; this will export with line number 20 5192 (message "This is line 21") 5193 ,#+END_SRC 5194 ,#+BEGIN_SRC emacs-lisp +n 10 5195 ;; This will be listed as line 31 5196 (message "This is line 32") 5197 ,#+END_SRC 5198 #+END_SRC 5199 5200 **** Allow toggling center for images in LaTeX export 5201 5202 With the global variable ~org-latex-images-centered~ or the local 5203 attribute ~:center~ it is now possible to center an image in LaTeX 5204 export. 5205 5206 **** Default CSS class ~org-svg~ for SVG images in HTML export 5207 5208 SVG images exported in HTML are now by default assigned a CSS class 5209 ~org-svg~ if no CSS class is specified with the ~:class~ attribute. By 5210 default, the CSS styling of class ~org-svg~ specifies an image width of 5211 90\thinsp{}% of the container the image. 5212 5213 **** Markdown footnote export customization 5214 5215 Variables ~org-md-footnotes-section~ and ~org-md-footnote-format~ 5216 introduced for =ox-md.el=. Both new variables define template strings 5217 which can be used to customize the format of the exported footnotes 5218 section and individual footnotes, respectively. 5219 5220 *** Babel 5221 5222 **** Blocks with coderefs labels can now be evaluated 5223 5224 The labels are removed prior to evaluating the block. 5225 5226 **** Support for Lua language 5227 **** Support for SLY in Lisp blocks 5228 5229 See ~org-babel-lisp-eval-fn~ to activate it. 5230 5231 **** Support for Stan language 5232 5233 New ob-stan.el library. 5234 5235 Evaluating a Stan block can produce two different results. 5236 5237 1. Dump the source code contents to a file. 5238 5239 This file can then be used as a variable in other blocks, which 5240 allows interfaces like RStan to use the model. 5241 5242 2. Compile the contents to a model file. 5243 5244 This provides access to the CmdStan interface. To use this, set 5245 ~org-babel-stan-cmdstan-directory~ and provide a ~:file~ argument 5246 that does not end in ".stan". 5247 5248 For more information and usage examples, visit 5249 https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-stan.html 5250 5251 **** Support for Oracle databases via ~sqlplus~ 5252 5253 =ob-sql= library supports running SQL blocks against an Oracle 5254 database using ~sqlplus~. Use with properties like this (all 5255 mandatory): 5256 5257 #+BEGIN_EXAMPLE 5258 :engine oracle 5259 :dbhost <host.com> 5260 :dbport <1521> 5261 :dbuser <username> 5262 :database <database> 5263 :dbpassword <secret> 5264 #+END_EXAMPLE 5265 5266 **** Improved support to Microsoft SQL Server via ~sqlcmd~ 5267 5268 =ob-sql= library removes support to the ~msosql~ engine which uses the 5269 deprecated ~osql~ command line tool, and replaces it with ~mssql~ 5270 engine which uses the ~sqlcmd~ command line tool. Use with properties 5271 like this: 5272 5273 #+BEGIN_EXAMPLE 5274 :engine mssql 5275 :dbhost <host.com> 5276 :dbuser <username> 5277 :dbpassword <secret> 5278 :database <database> 5279 #+END_EXAMPLE 5280 5281 If you want to use the *trusted connection* feature, omit *both* the 5282 =dbuser= and =dbpassword= properties and add =cmdline -E= to the properties. 5283 5284 If your Emacs is running in a Cygwin environment, the =ob-sql= library 5285 can pass the converted path to the =sqlcmd= tool. 5286 5287 **** Improved support of header arguments for postgresql 5288 5289 The postgresql engine in a sql code block now supports ~:dbport~ and 5290 ~:dbpassword~ as header arguments. 5291 5292 **** Support for additional plantuml output formats 5293 5294 The support for output formats of [[https://plantuml.com/][plantuml]] has been extended to now 5295 include: 5296 5297 All Diagrams: 5298 - png :: 5299 - svg :: 5300 - eps :: 5301 - pdf :: 5302 - vdx :: 5303 - txt :: ASCII art 5304 - utxt :: ASCII art using unicode characters 5305 5306 Class Diagrams: 5307 - xmi :: 5308 - html :: 5309 5310 State Diagrams: 5311 - scxml :: 5312 5313 The output formats are determined by the file extension specified 5314 using the :file property, e.g.: 5315 5316 #+begin_src plantuml :file diagram.png 5317 @startuml 5318 Alice -> Bob: Authentication Request 5319 Bob --> Alice: Authentication Response 5320 5321 Alice -> Bob: Another authentication Request 5322 Alice <-- Bob: another authentication Response 5323 @enduml 5324 #+end_src 5325 5326 Please note that *pdf* *does not work out of the box* and needs additional 5327 setup in addition to plantuml. See [[https://plantuml.com/pdf.html]] for 5328 details and setup information. 5329 5330 *** Rewrite of radio lists 5331 5332 Radio lists, i.e, Org plain lists in foreign buffers, have been 5333 rewritten to be on par with Radio tables. You can use a large set of 5334 parameters to control how a given list should be rendered. See manual 5335 for details. 5336 5337 *** org-bbdb-anniversaries-future 5338 5339 Used like ~org-bbdb-anniversaries~, it provides a few days warning for 5340 upcoming anniversaries (default: 7 days). 5341 5342 *** Clear non-repeated SCHEDULED upon repeating a task 5343 5344 If the task is repeated, and therefore done at least one, scheduling 5345 information is no longer relevant. It is therefore removed. 5346 5347 See [[git:481719fbd5751aaa9c672b762cb43aea8ee986b0][commit message]] for more information. 5348 5349 *** Support for ISO week trees 5350 5351 ISO week trees are an alternative date tree format that orders entries 5352 by ISO week and not by month. 5353 5354 For example: 5355 5356 : * 2015 5357 : ** 2015-W35 5358 : ** 2015-W36 5359 : *** 2015-08-31 Monday 5360 5361 They are supported in org-capture via ~file+weektree~ and 5362 ~file+weektree+prompt~ target specifications. 5363 5364 *** Accept ~:indent~ parameter when capturing column view 5365 5366 When defining a "columnview" dynamic block, it is now possible to add 5367 an :indent parameter, much like the one in the clock table. 5368 5369 On the other hand, stars no longer appear in an ITEM field. 5370 5371 *** Columns view 5372 5373 **** ~org-columns~ accepts a prefix argument 5374 5375 When called with a prefix argument, ~org-columns~ apply to the whole 5376 buffer unconditionally. 5377 5378 **** New variable : ~org-agenda-view-columns-initially~ 5379 5380 The variable used to be a ~defvar~, it is now a ~defcustom~. 5381 5382 **** Allow custom summaries 5383 5384 It is now possible to add new summary types, or override those 5385 provided by Org by customizing ~org-columns-summary-types~, which see. 5386 5387 **** Allow multiple summaries for any property 5388 5389 Columns can now summarize the same property using different summary 5390 types. 5391 5392 *** Preview LaTeX snippets in buffers not visiting files 5393 *** New option ~org-attach-commit~ 5394 5395 When non-nil, commit attachments with git, assuming the document is in 5396 a git repository. 5397 5398 *** Allow conditional case-fold searches in ~org-occur~ 5399 5400 When set to ~smart~, the new variable ~org-occur-case-fold-search~ allows 5401 to mimic =isearch.el=: if the regexp searched contains any upper case 5402 character (or character class), the search is case sensitive. 5403 Otherwise, it is case insensitive. 5404 5405 *** More robust repeated =ox-latex= footnote handling 5406 5407 Repeated footnotes are now numbered by referring to a label in the 5408 first footnote. 5409 5410 *** The ~org-block~ face is inherited by ~src-blocks~ 5411 5412 This works also when =org-src-fontify-natively= is non-nil. It is also 5413 possible to specify per-languages faces. See =org-src-block-faces= and 5414 the manual for details. 5415 5416 *** Links are now customizable 5417 5418 Links can now have custom colors, tooltips, keymaps, display behavior, 5419 etc. Links are now centralized in ~org-link-parameters~. 5420 5421 ** New functions 5422 5423 *** ~org-next-line-empty-p~ 5424 5425 It replaces the deprecated ~next~ argument to ~org-previous-line-empty-p~. 5426 5427 *** ~org-show-children~ 5428 5429 It is a faster implementation of ~outline-show-children~. 5430 5431 ** Removed functions 5432 5433 *** ~org-agenda-filter-by-tag-refine~ has been removed. 5434 5435 Use ~org-agenda-filter-by-tag~ instead. 5436 5437 *** ~org-agenda-todayp~ is deprecated. 5438 5439 Use ~org-agenda-today-p~ instead. 5440 5441 *** ~org-babel-get-header~ is removed. 5442 5443 Use ~org-babel--get-vars~ or ~assq~ instead, as applicable. 5444 5445 *** ~org-babel-trim~ is deprecated. 5446 5447 Use ~org-trim~ instead. 5448 5449 *** ~org-element-remove-indentation~ is deprecated. 5450 5451 Use ~org-remove-indentation~ instead. 5452 5453 *** ~org-image-file-name-regexp~ is deprecated 5454 5455 Use ~image-file-name-regexp~ instead. 5456 The never-used-in-core ~extensions~ argument has been dropped. 5457 5458 *** ~org-list-parse-list~ is deprecated 5459 5460 Use ~org-list-to-lisp~ instead. 5461 5462 *** ~org-on-heading-p~ is deprecated 5463 5464 A comment to this effect was in the source code since 7.8.03, but 5465 now a byte-compiler warning will be generated as well. 5466 5467 *** ~org-table-p~ is deprecated 5468 5469 Use ~org-at-table-p~ instead. 5470 5471 *** ~org-table-recognize-table.el~ is deprecated 5472 5473 It was not called by any org code since 2010. 5474 5475 *** Various reimplementations of cl-lib functions are deprecated 5476 5477 The affected functions are: 5478 - ~org-count~ 5479 - ~org-remove-if~ 5480 - ~org-remove-if-not~ 5481 - ~org-reduce~ 5482 - ~org-every~ 5483 - ~org-some~ 5484 5485 Additionally, ~org-sublist~ is deprecated in favor of ~cl-subseq~. Note 5486 the differences in indexing conventions: ~org-sublist~ is 1-based and 5487 end-inclusive; ~cl-subseq~ is 0-based and end-exclusive. 5488 5489 ** Removed options 5490 5491 *** Remove all options related to ~ido~ or ~iswitchb~ 5492 5493 This includes ~org-completion-use-iswitchb~ and ~org-completion-use-ido~. 5494 Instead Org uses regular functions, e.g., ~completion-read~ so as to 5495 let those libraries operate. 5496 5497 *** Remove ~org-list-empty-line-terminates-plain-lists~ 5498 5499 Two consecutive blank lines always terminate all levels of current 5500 plain list. 5501 5502 *** ~fixltx2e~ is removed from ~org-latex-default-packages-alist~ 5503 5504 fixltx2e is obsolete, see LaTeX News 22. 5505 5506 ** Miscellaneous 5507 *** Add Icelandic smart quotes 5508 *** Allow multiple receiver locations in radio tables and lists 5509 *** Allow angular links within link descriptions 5510 5511 It is now allowed to write, e.g., 5512 ~[[http:orgmode.org][<file:unicorn.png>]]~ as an equivalent to 5513 ~[[http:orgmode.org][file:unicorn.png]]~. The advantage of the former 5514 is that spaces are allowed within the path. 5515 5516 *** Beamer export back-ends uses ~org-latex-prefer-user-labels~ 5517 *** ~:preparation-function~ called earlier during publishing 5518 5519 Functions in this list are called before any file is associated to the 5520 current project. Thus, they can be used to generate to be published 5521 Org files. 5522 5523 *** Function ~org-remove-indentation~ changes. 5524 5525 The new algorithm doesn't remove TAB characters not used for 5526 indentation. 5527 5528 *** Secure placeholders in capture templates 5529 5530 Placeholders in capture templates are no longer expanded recursively. 5531 However, ~%(...)~ constructs are expanded very late, so you can fill 5532 the contents of the S-exp with the replacement text of non-interactive 5533 placeholders. As before, interactive ones are still expanded as the 5534 very last step, so the previous statement doesn't apply to them. 5535 5536 Note that only ~%(...)~ placeholders initially present in the 5537 template, or introduced using a file placeholder, i.e., ~%[...]~ are 5538 expanded. This prevents evaluating potentially malicious code when 5539 another placeholder, e.g., ~%i~ expands to a S-exp. 5540 5541 *** Links stored by ~org-gnus-store-link~ in nnir groups 5542 5543 Since gnus nnir groups are temporary, ~org-gnus-store-link~ now refers 5544 to the article's original group. 5545 5546 *** ~org-babel-check-confirm-evaluate~ is now a function instead of a macro 5547 5548 The calling convention has changed. 5549 5550 *** HTML export table row customization changes 5551 5552 Variable ~org-html-table-row-tags~ has been split into 5553 ~org-html-table-row-open-tag~ and ~org-html-table-row-close-tag~. 5554 Both new variables can be either a string or a function which will be 5555 called with 6 parameters. 5556 5557 *** =ITEM= special property returns headline without stars 5558 *** Rename ~org-insert-columns-dblock~ into ~org-columns-insert-dblock~ 5559 5560 The previous name is, for the time being, kept as an obsolete alias. 5561 5562 *** ~org-trim~ can preserve leading indentation. 5563 5564 When setting a new optional argument to a non-nil value, ~org-trim~ 5565 preserves leading indentation while removing blank lines at the 5566 beginning of the string. The behavior is identical for white space at 5567 the end of the string. 5568 5569 *** Function ~org-info-export~ changes. 5570 5571 HTML links created from certain info links now point to =gnu.org= URL's rather 5572 than just to local files. For example info links such as =info:emacs#List 5573 Buffers= used to be converted to HTML links like this: 5574 5575 : <a href="emacs.html#List-Buffers">emacs#List Buffers</a> 5576 5577 where local file =emacs.html= is referenced. 5578 For most folks this file does not exist. 5579 Thus the new behavior is to generate this HTML link instead: 5580 5581 : <a href="https://www.gnu.org/software/emacs/manual/html_mono/emacs.html#List-Buffers">emacs#List Buffers</a> 5582 5583 All emacs related info links are similarly translated plus few other 5584 =gnu.org= manuals. 5585 5586 *** Repeaters with a ~++~ interval and a time can be shifted to later today 5587 5588 Previously, if a recurring task had a timestamp of 5589 ~<2016-01-01 Fri 20:00 ++1d>~ and was completed on =2016-01-02= at 5590 =08:00=, the task would skip =2016-01-02= and would be rescheduled for 5591 =2016-01-03=. Timestamps with ~++~ cookies and a specific time will 5592 now shift to the first possible future occurrence, even if the 5593 occurrence is later the same day the task is completed. (Timestamps 5594 already in the future are still shifted one time further into the 5595 future.) 5596 5597 *** ~org-mobile-action-alist~ is now a defconst 5598 5599 It used to be a defcustom, with a warning that it shouldn't be 5600 modified anyway. 5601 5602 *** ~file+emacs~ and ~file+sys~ link types are deprecated 5603 5604 They are still supported in Org 9.0 but will eventually be removed in 5605 a later release. Use ~file~ link type along with universal arguments 5606 to force opening it in either Emacs or with system application. 5607 5608 *** New defcustom ~org-babel-J-command~ stores the j command 5609 *** New defalias ~org-babel-execute:j~ 5610 5611 Allows J source blocks be indicated by letter j. Previously the 5612 indication letter was solely J. 5613 5614 *** ~org-open-line~ ignores tables at the very beginning of the buffer 5615 5616 When ~org-special-ctrl-o~ is non-nil, it is impractical to create 5617 a blank line above a table at the beginning of the document. Now, as 5618 a special case, ~org-open-line~ behaves normally in this situation. 5619 5620 *** ~org-babel-hash-show-time~ is now customizable 5621 5622 The experimental variable used to be more or less confidential, as 5623 a ~defvar~. 5624 5625 *** New ~:format~ property to parsed links 5626 5627 It defines the format of the original link. Possible values are: 5628 ~plain~, ~bracket~ and ~angle~. 5629 5630 * Version 8.3 5631 5632 ** Incompatible changes 5633 5634 *** Properties drawers syntax changes 5635 5636 Properties drawers are now required to be located right after a 5637 headline and its planning line, when applicable. 5638 5639 It will break some documents as TODO states changes were sometimes 5640 logged before the property drawer. 5641 5642 The following function will repair them: 5643 5644 #+BEGIN_SRC emacs-lisp 5645 (defun org-repair-property-drawers () 5646 "Fix properties drawers in current buffer. 5647 Ignore non Org buffers." 5648 (when (eq major-mode 'org-mode) 5649 (org-with-wide-buffer 5650 (goto-char (point-min)) 5651 (let ((case-fold-search t) 5652 (inline-re (and (featurep 'org-inlinetask) 5653 (concat (org-inlinetask-outline-regexp) 5654 "END[ \t]*$")))) 5655 (org-map-entries 5656 (lambda () 5657 (unless (and inline-re (org-looking-at-p inline-re)) 5658 (save-excursion 5659 (let ((end (save-excursion (outline-next-heading) (point)))) 5660 (forward-line) 5661 (when (org-looking-at-p org-planning-line-re) (forward-line)) 5662 (when (and (< (point) end) 5663 (not (org-looking-at-p org-property-drawer-re)) 5664 (save-excursion 5665 (and (re-search-forward org-property-drawer-re end t) 5666 (eq (org-element-type 5667 (save-match-data (org-element-at-point))) 5668 'drawer)))) 5669 (insert (delete-and-extract-region 5670 (match-beginning 0) 5671 (min (1+ (match-end 0)) end))) 5672 (unless (bolp) (insert "\n")))))))))))) 5673 #+END_SRC 5674 5675 *** Using "COMMENT" is now equivalent to commenting with "#" 5676 5677 If you used "COMMENT" in headlines to prevent a subtree from being 5678 exported, you can still do it but all information within the subtree 5679 is now commented out, i.e. no #+OPTIONS line will be parsed or taken 5680 into account when exporting. 5681 5682 If you want to exclude a headline from export while using its contents 5683 for setting options, use =:noexport:= (see =org-export-exclude-tags=.) 5684 5685 *** =#+CATEGORY= keywords no longer apply partially to document 5686 5687 It was possible to use several such keywords and have them apply to 5688 the text below until the next one, but strongly deprecated since Org 5689 5.14 (2008). 5690 5691 =#+CATEGORY= keywords are now global to the document. You can use node 5692 properties to set category for a subtree, e.g., 5693 5694 #+BEGIN_SRC org 5695 ,* Headline 5696 :PROPERTIES: 5697 :CATEGORY: some category 5698 :END: 5699 #+END_SRC 5700 5701 *** New variable to control visibility when revealing a location 5702 5703 ~org-show-following-heading~, ~org-show-siblings~, ~org-show-entry-below~ 5704 and ~org-show-hierarchy-above~ no longer exist. Instead, visibility is 5705 controlled through a single variable: ~org-show-context-detail~, which 5706 see. 5707 5708 *** Replace disputed keys again when reading a date 5709 5710 ~org-replace-disputed-keys~ has been ignored when reading date since 5711 version 8.1, but the former behavior is restored again. 5712 5713 Keybinding for reading date can be customized with a new variable 5714 ~org-read-date-minibuffer-local-map~. 5715 5716 *** No default title is provided when =TITLE= keyword is missing 5717 5718 Skipping =TITLE= keyword no longer provides the current file name, or 5719 buffer name, as the title. Instead, simply ignore the title. 5720 5721 *** Default bindings of =C-c C-n= and =C-c C-p= changed 5722 5723 The key sequences =C-c C-n= and =C-c C-p= are now bound to 5724 ~org-next-visible-heading~ and ~org-previous-visible-heading~ 5725 respectively, rather than the =outline-mode= versions of these 5726 functions. The Org version of these functions skips over inline tasks 5727 (and even-level headlines when ~org-odd-levels-only~ is set). 5728 5729 *** ~org-element-context~ no longer return objects in keywords 5730 5731 ~org-element-context~ used to return objects on some keywords, i.e., 5732 =TITLE=, =DATE= and =AUTHOR=. It now returns only the keyword. 5733 5734 *** ~org-timer-default-timer~ type changed from number to string 5735 5736 If you have, in your configuration, something like =(setq 5737 org-timer-default-timer 10)= replace it with =(setq 5738 org-timer-default-timer "10")=. 5739 5740 *** Functions signature changes 5741 5742 The following functions require an additional argument. See their 5743 docstring for more information. 5744 5745 - ~org-export-collect-footnote-definitions~ 5746 - ~org-html-format-headline-function~ 5747 - ~org-html-format-inlinetask-function~ 5748 - ~org-latex-format-headline-function~ 5749 - ~org-latex-format-inlinetask-function~ 5750 - ~org-link-search~ 5751 5752 ** New features 5753 5754 *** Default lexical evaluation of emacs-lisp source blocks 5755 5756 Emacs-lisp source blocks in Babel are now evaluated using lexical 5757 scoping. There is a new header to control this behavior. 5758 5759 The default results in an eval with lexical scoping. 5760 :lexical yes 5761 5762 This turns lexical scoping off in the eval (the former behavior). 5763 :lexical no 5764 5765 This uses the lexical environment with x=42 in the eval. 5766 :lexical '((x . 42)) 5767 5768 *** Behavior of ~org-return~ changed 5769 5770 If point is before or after the headline title, insert a new line 5771 without changing the headline. 5772 5773 *** Hierarchies of tags 5774 5775 The functionality of nesting tags in hierarchies is added to Org mode. 5776 This is the generalization of what was previously called "Tag groups" 5777 in the manual. That term is now changed to "Tag hierarchy". 5778 5779 The following in-buffer definition: 5780 5781 #+BEGIN_SRC org 5782 ,#+TAGS: [ Group : SubOne SubTwo ] 5783 ,#+TAGS: [ SubOne : SubOne1 SubOne2 ] 5784 ,#+TAGS: [ SubTwo : SubTwo1 SubTwo2 ] 5785 #+END_SRC 5786 5787 Should be seen as the following tree of tags: 5788 5789 - Group 5790 - SubOne 5791 - SubOne1 5792 - SubOne2 5793 - SubTwo 5794 - SubTwo1 5795 - SubTwo2 5796 5797 Searching for "Group" should return all tags defined above. Filtering 5798 on SubOne filters also it's sub-tags. Etc. 5799 5800 There is no limit on the depth for the tag hierarchy. 5801 5802 *** Additional syntax for non-unique grouptags 5803 5804 Additional syntax is defined for grouptags if the tags in the group 5805 don't have to be distinct on a heading. 5806 5807 Grouptags had to previously be defined with { }. This syntax is 5808 already used for exclusive tags and Grouptags need their own, 5809 non-exclusive syntax. This behavior is achieved with [ ]. Note: { } 5810 can still be used also for Grouptags but then only one of the given 5811 tags can be used on the headline at the same time. Example: 5812 5813 [ group : sub1 sub2 ] 5814 5815 #+BEGIN_SRC org 5816 ,* Test :sub1:sub2: 5817 #+END_SRC 5818 5819 This is a more general case than the already existing syntax for 5820 grouptags; { }. 5821 5822 *** Define regular expression patterns as tags 5823 5824 Tags can be defined as grouptags with regular expressions as 5825 "sub-tags". 5826 5827 The regular expressions in the group must be marked up within { }. 5828 Example use: 5829 5830 : #+TAGS: [ Project : {P@.+} ] 5831 5832 Searching for the tag Project will now list all tags also including 5833 regular expression matches for P@.+. This is good for example for 5834 projects tagged with a common identifier, i.e. P@2014_OrgTags. 5835 5836 *** Filtering in the agenda on grouptags (Tag hierarchies) 5837 5838 Filtering in the agenda on grouptags filters all of the related tags. 5839 Except if a filter is applied with a (double) prefix-argument. 5840 5841 Filtering in the agenda on subcategories does not filter the "above" 5842 levels anymore. 5843 5844 If a grouptag contains a regular expression the regular expression 5845 is also used as a filter. 5846 5847 *** Minor refactoring of ~org-agenda-filter-by-tag~ 5848 5849 Now uses the argument ARG and optional argument exclude instead of 5850 strip and narrow. ARG because the argument has multiple purposes and 5851 makes more sense than strip now. The term "narrowing" is changed to 5852 exclude. 5853 5854 The main purpose is for the function to make more logical sense when 5855 filtering on tags now when tags can be structured in hierarchies. 5856 5857 *** Babel: support for sed scripts 5858 5859 Thanks to Bjarte Johansen for this feature. 5860 5861 *** Babel: support for Processing language 5862 5863 New ob-processing.el library. 5864 5865 This library implements necessary functions for implementing editing 5866 of Processing code blocks, viewing the resulting sketches in an 5867 external viewer, and HTML export of the sketches. 5868 5869 Check the documentation for more details. 5870 5871 Thanks to Jarmo Hurri for this feature. 5872 5873 *** New behavior for ~org-toggle-latex-fragment~ 5874 5875 The new behavior is the following: 5876 5877 - With a double prefix argument or with a single prefix argument when 5878 point is before the first headline, toggle overlays in the whole 5879 buffer; 5880 5881 - With a single prefix argument, toggle overlays in the current 5882 subtree; 5883 5884 - On latex code, toggle overlay at point; 5885 5886 - Otherwise, toggle overlays in the current section. 5887 5888 *** Additional markup with =#+INCLUDE= keyword 5889 5890 The content of the included file can now be optionally marked up, for 5891 instance as HTML. See the documentation for details. 5892 5893 *** File links with =#+INCLUDE= keyword 5894 5895 Objects can be extracted via =#+INCLUDE= using file links. It is 5896 possible to include only the contents of the object. See manual for 5897 more information. 5898 5899 *** Drawers do not need anymore to be referenced in =#+DRAWERS= 5900 5901 One can use a drawer without listing it in the =#+DRAWERS= keyword, 5902 which is now obsolete. As a consequence, this change also deprecates 5903 ~org-drawers~ variable. 5904 5905 *** ~org-edit-special~ can edit export blocks 5906 5907 Using C-c ' on an export block now opens a sub-editing buffer. Major 5908 mode in that buffer is determined by export backend name (e.g., 5909 "latex" \to "latex-mode"). You can define exceptions to this rule by 5910 configuring ~org-src-lang-modes~, which see. 5911 5912 *** Additional =:hline= processing to ob-shell 5913 5914 If the argument =:hlines yes= is present in a babel call, an optional 5915 argument =:hlines-string= can be used to define a string to use as a 5916 representation for the lisp symbol ='hline= in the shell program. The 5917 default is =hline=. 5918 5919 *** Markdown export supports switches in source blocks 5920 5921 For example, it is now possible to number lines using the =-n= switch in 5922 a source block. 5923 5924 *** New option in ASCII export 5925 5926 Plain lists can have an extra margin by setting ~org-ascii-list-margin~ 5927 variable to an appropriate integer. 5928 5929 *** New blocks in ASCII export 5930 5931 ASCII export now supports =#+BEGIN_JUSTIFYRIGHT= and =#+BEGIN_JUSTIFYLEFT= 5932 blocks. See documentation for details. 5933 5934 *** More back-end specific publishing options 5935 5936 The number of publishing options specific to each back-end has been 5937 increased. See manual for details. 5938 5939 *** Export inline source blocks 5940 5941 Inline source code was used to be removed upon exporting. They are 5942 now handled as standard code blocks, i.e., the source code can appear 5943 in the output, depending on the parameters. 5944 5945 *** Extend ~org-export-first-sibling-p~ and ~org-export-last-sibling-p~ 5946 5947 These functions now support any element or object, not only headlines. 5948 5949 *** New function: ~org-export-table-row-in-header-p~ 5950 5951 *** New function: ~org-export-get-reference~ 5952 5953 *** New function: ~org-element-lineage~ 5954 5955 This function deprecates ~org-export-get-genealogy~. It also provides 5956 more features. See docstring for details. 5957 5958 *** New function: ~org-element-copy~ 5959 5960 *** New filter: ~org-export-filter-body-functions~ 5961 5962 Functions in this filter are applied on the body of the exported 5963 document, before wrapping it within the template. 5964 5965 *** New :environment parameter when exporting example blocks to LaTeX 5966 5967 : #+ATTR_LATEX: :environment myverbatim 5968 : #+BEGIN_EXAMPLE 5969 : This sentence is false. 5970 : #+END_EXAMPLE 5971 5972 will be exported using =@samp(myverbatim)= instead of =@samp(verbatim)=. 5973 5974 *** Various improvements on radio tables 5975 5976 Radio tables feature now relies on Org's export framework ("ox.el"). 5977 ~:no-escape~ parameter no longer exists, but additional global 5978 parameters are now supported: ~:raw~, ~:backend~. Moreover, there are new 5979 parameters specific to some pre-defined translators, e.g., 5980 ~:environment~ and ~:booktabs~ for ~orgtbl-to-latex~. See translators 5981 docstrings (including ~orgtbl-to-generic~) for details. 5982 5983 *** Non-floating minted listings in LaTeX export 5984 5985 It is not possible to specify =#+attr_latex: :float nil= in conjunction 5986 with source blocks exported by the minted package. 5987 5988 *** Field formulas can now create columns as needed 5989 5990 Previously, evaluating formulas that referenced out-of-bounds columns 5991 would throw an error. A new variable ~org-table-formula-create-columns~ 5992 was added to adjust this behavior. It is now possible to silently add 5993 new columns, to do so with a warning or to explicitly ask the user 5994 each time. 5995 5996 *** ASCII plot 5997 5998 Ability to plot values in a column through ASCII-art bars. See manual 5999 for details. 6000 6001 *** New hook: ~org-archive-hook~ 6002 6003 This hook is called after successfully archiving a subtree, with point 6004 on the original subtree, not yet deleted. 6005 6006 *** New option: ~org-attach-archive-delete~ 6007 6008 When non-nil, attachments from archived subtrees are removed. 6009 6010 *** New option: ~org-latex-caption-above~ 6011 6012 This variable generalizes ~org-latex-table-caption-above~, which is now 6013 deprecated. In addition to tables, it applies to source blocks, 6014 special blocks and images. See docstring for more information. 6015 6016 *** New option: ~org-latex-prefer-user-labels~ 6017 6018 See the docstring for more information. 6019 6020 *** Export unnumbered headlines 6021 6022 Headlines, for which the property ~UNNUMBERED~ is non-nil, are now 6023 exported without section numbers irrespective of their levels. The 6024 property is inherited by children. 6025 6026 *** Tables can be sorted with an arbitrary function 6027 6028 It is now possible to specify a function, both programmatically, 6029 through a new optional argument, and interactively with ~f~ or ~F~ keys, 6030 to sort a table. 6031 6032 *** Table of contents can be local to a section 6033 6034 The ~TOC~ keywords now accepts an optional ~local~ parameter. See manual 6035 for details. 6036 6037 *** Countdown timers can now be paused 6038 6039 ~org-timer-pause-time~ now pauses and restarts both relative and 6040 countdown timers. 6041 6042 *** New option ~only-window~ for ~org-agenda-window-setup~ 6043 6044 When ~org-agenda-window-setup~ is set to ~only-window~, the agenda is 6045 displayed as the sole window of the current frame. 6046 6047 *** ~{{{date}}}~ macro supports optional formatting argument 6048 6049 It is now possible to supply and optional formatting argument to 6050 ~{{{date}}}~. See manual for details. 6051 6052 *** ~{{{property}}}~ macro supports optional search argument 6053 6054 It is now possible to supply an optional search option to 6055 ~{{{property}}}~ in order to retrieve remote properties optional. See 6056 manual for details. 6057 6058 *** New option ~org-export-with-title~ 6059 6060 It is possible to suppress the title insertion with ~#+OPTIONS: 6061 title:nil~ or globally using the variable ~org-export-with-title~. 6062 6063 *** New entities family: "\_ " 6064 6065 "\_ " are used to insert up to 20 contiguous spaces in various 6066 back-ends. In particular, this family can be used to introduce 6067 leading spaces within table cells. 6068 6069 *** New MathJax configuration options 6070 6071 Org uses the MathJax CDN by default. See the manual and the docstring 6072 of ~org-html-mathjax-options~ for details. 6073 6074 *** New behavior in `org-export-options-alist' 6075 6076 When defining a back-end, it is now possible to specify to give 6077 `parse' behavior on a keyword. It is equivalent to call 6078 `org-element-parse-secondary-string' on the value. 6079 6080 However, parsed =KEYWORD= is automatically associated to an 6081 =:EXPORT_KEYWORD:= property, which can be used to override the keyword 6082 value during a subtree export. Moreover, macros are expanded in such 6083 keywords and properties. 6084 6085 *** Viewport support in html export 6086 6087 Viewport for mobile-optimized website is now automatically inserted 6088 when exporting to html. See ~org-html-viewport~ for details. 6089 6090 *** New ~#+SUBTITLE~ export keyword 6091 6092 Org can typeset a subtitle in some export backends. See the manual 6093 for details. 6094 6095 *** Remotely edit a footnote definition 6096 6097 Calling ~org-edit-footnote-reference~ (C-c ') on a footnote reference 6098 allows to edit its definition, as long as it is not anonymous, in a 6099 dedicated buffer. It works even if buffer is currently narrowed. 6100 6101 *** New function ~org-delete-indentation~ bound to ~M-^~ 6102 6103 Work as ~delete-indentation~ unless at heading, in which case text is 6104 added to headline text. 6105 6106 *** Support for images in Texinfo export 6107 6108 ~Texinfo~ back-end now handles images. See the manual for details. 6109 6110 *** Support for captions in Texinfo export 6111 6112 Tables and source blocks can now have captions. Additionally, lists 6113 of tables and lists of listings can be inserted in the document with 6114 =#+TOC= keyword. 6115 6116 *** Countdown timer support hh:mm:ss format 6117 6118 In addition to setting countdown timers in minutes, they can also be 6119 set using the hh:mm:ss format. 6120 6121 *** Extend ~org-clone-subtree-with-time-shift~ 6122 6123 ~org-clone-subtree-with-time-shift~ now accepts 0 as an argument for the 6124 number of clones, which removes the repeater from the original subtree 6125 and creates one shifted, repeating clone. 6126 6127 *** New time block for clock tables: ~untilnow~ 6128 6129 It encompasses all past closed clocks. 6130 6131 *** Support for the ~polyglossia~ LaTeX package 6132 6133 See the docstring of ~org-latex-classes~ and 6134 ~org-latex-guess-polyglossia-language~ for details. 6135 6136 *** None-floating tables, graphics and blocks can have captions 6137 6138 *** `org-insert-heading' can be forced to insert top-level headline 6139 6140 ** Removed functions 6141 6142 *** Removed function ~org-translate-time~ 6143 6144 Use ~org-timestamp-translate~ instead. 6145 6146 *** Removed function ~org-beamer-insert-options-template~ 6147 6148 This function inserted a Beamer specific template at point or in 6149 current subtree. Use ~org-export-insert-default-template~ instead, as 6150 it provides more features and covers all export back-ends. It is also 6151 accessible from the export dispatcher. 6152 6153 *** Removed function ~org-timer-cancel-timer~ 6154 6155 ~org-timer-stop~ now stops both relative and countdown timers. 6156 6157 *** Removed function ~org-export-solidify-link-text~ 6158 6159 This function, being non-bijective, introduced bug in internal 6160 references. Use ~org-export-get-reference~ instead. 6161 6162 *** Removed function ~org-end-of-meta-data-and-drawers~ 6163 6164 The function is superseded by ~org-end-of-meta-data~, called with an 6165 optional argument. 6166 6167 *** Removed functions ~org-table-colgroup-line-p~, ~org-table-cookie-line-p~ 6168 6169 These functions were left-over from pre 8.0 era. They are not correct 6170 anymore. Since they are not needed, they have no replacement. 6171 6172 ** Removed options 6173 6174 *** ~org-list-empty-line-terminates-plain-lists~ is deprecated 6175 6176 It will be kept in code base until next release, for backward 6177 compatibility. 6178 6179 If you need to separate consecutive lists with blank lines, always use 6180 two of them, as if this option was nil (default value). 6181 6182 *** ~org-export-with-creator~ is a boolean 6183 6184 Special ~comment~ value is no longer allowed. It is possible to use a 6185 body filter to add comments about the creator at the end of the 6186 document instead. 6187 6188 *** Removed option =org-html-use-unicode-chars= 6189 6190 Setting this to non-nil was problematic as it converted characters 6191 everywhere in the buffer, possibly corrupting URLs. 6192 6193 *** Removed option =org-babel-sh-command= 6194 6195 This undocumented option defaulted to the value of =shell-file-name= at 6196 the time of loading =ob-shell=. The new behavior is to use the value 6197 of =shell-file-name= directly when the shell language is =shell=. To chose 6198 a different shell, either customize =shell-file-name= or bind this 6199 variable locally. 6200 6201 *** Removed option =org-babel-sh-var-quote-fmt= 6202 6203 This undocumented option was supposed to provide different quoting 6204 styles when changing the shell type. Changing the shell type can now 6205 be done directly from the source block and the quoting style has to be 6206 compatible across all shells, so a customization doesn't make sense 6207 anymore. The chosen hard coded quoting style conforms to POSIX. 6208 6209 *** Removed option ~org-insert-labeled-timestamps-at-point~ 6210 6211 Setting this option to anything else that the default value (nil) 6212 would create invalid planning info. This dangerous option is now 6213 removed. 6214 6215 *** Removed option ~org-koma-letter-use-title~ 6216 6217 Use org-export-with-title instead. See also below. 6218 6219 *** Removed option ~org-entities-ascii-explanatory~ 6220 6221 This variable has no effect since Org 8.0. 6222 6223 *** Removed option ~org-table-error-on-row-ref-crossing-hline~ 6224 6225 This variable has no effect since August 2009. 6226 6227 *** Removed MathML-related options from ~org-html-mathjax-options~ 6228 6229 MathJax automatically chooses the best display technology based on the 6230 end-users browser. You may force initial usage of MathML via 6231 ~org-html-mathjax-template~ or by setting the ~path~ property of 6232 ~org-html-mathjax-options~. 6233 6234 *** Removed comment-related filters 6235 6236 ~org-export-filter-comment-functions~ and 6237 ~org-export-filter-comment-block-functions~ variables do not exist 6238 anymore. 6239 6240 ** Miscellaneous 6241 6242 *** Strip all meta data from ITEM special property 6243 6244 ITEM special property does not contain TODO, priority or tags anymore. 6245 6246 *** File names in links accept are now compatible with URI syntax 6247 6248 Absolute file names can now start with =///= in addition to =/=. E.g., 6249 =[[file:///home/me/unicorn.jpg]]=. 6250 6251 *** Footnotes in included files are now local to the file 6252 6253 As a consequence, it is possible to include multiple Org files with 6254 footnotes in a master document without being concerned about footnote 6255 labels colliding. 6256 6257 *** Mailto links now use regular URI syntax 6258 6259 This change deprecates old Org syntax for mailto links: 6260 =mailto:user@domain::Subject=. 6261 6262 *** =QUOTE= keywords do not exist anymore 6263 6264 =QUOTE= keywords have been deprecated since Org 8.2. 6265 6266 *** Select tests to perform with the build system 6267 6268 The build system has been enhanced to allow test selection with a 6269 regular expression by defining =BTEST_RE= during the test invocation. 6270 This is especially useful during bisection to find just when a 6271 particular test failure was introduced. 6272 6273 *** Exact heading search for external links ignore spaces and cookies 6274 6275 Exact heading search for links now ignore spaces and cookies. This is 6276 the case for links of the form ~file:projects.org::*task title~, as well 6277 as links of the form ~file:projects.org::some words~ when 6278 ~org-link-search-must-match-exact-headline~ is not nil. 6279 6280 *** ~org-latex-hyperref-template~, ~org-latex-title-command~ formatting 6281 6282 New formatting keys are supported. See the respective docstrings. 6283 Note, ~org-latex-hyperref-template~ has a new default value. 6284 6285 *** ~float, wasysym, marvosym~ are removed from ~org-latex-default-packages-alist~ 6286 6287 If you require any of these package add them to your preamble via 6288 ~org-latex-packages-alist~. Org also uses default LaTeX ~\tolerance~ now. 6289 6290 *** When exporting, throw an error on unresolved id/fuzzy links and code refs 6291 6292 This helps spotting wrong links. 6293 6294 * Version 8.2 6295 6296 ** Incompatible changes 6297 *** =ob-sh.el= renamed to =ob-shell= 6298 This may require two changes in user config. 6299 6300 1. In =org-babel-do-load-languages=, change =(sh . t)= to =(shell . t)=. 6301 2. Edit =local.mk= files to change the value of =BTEST_OB_LANGUAGES= 6302 to remove "sh" and include "shell". 6303 6304 *** Combine org-mac-message.el and org-mac-link-grabber into org-mac-link.el 6305 6306 Please remove calls to =(require 'org-mac-message)= and =(require 6307 'org-mac-link-grabber)= in your =.emacs= initialization file. All you 6308 need now is =(require 'org-mac-link)=. 6309 6310 Additionally, replace any calls to =ogml-grab-link= to 6311 =org-mac-grab-link=. For example, replace this line: 6312 6313 : (define-key org-mode-map (kbd "C-c g") 'omgl-grab-link) 6314 6315 with this: 6316 6317 : (define-key org-mode-map (kbd "C-c g") 'org-mac-grab-link) 6318 6319 *** HTML export: Replace =HTML_HTML5_FANCY= by =:html-html5-fancy= (...) 6320 6321 Some of the HTML specific export options in Org <8.1 are either nil or 6322 t, like =#+HTML_INCLUDE_STYLE=. We replaced these binary options with 6323 option keywords like :html-include-style. 6324 6325 So you need to replace 6326 6327 : #+HTML_INCLUDE_STYLE: t 6328 6329 by 6330 6331 : #+OPTIONS: :html-include-style t 6332 6333 Options affected by this change: =HTML5_FANCY=, =HTML_INCLUDE_SCRIPTS= 6334 and =HTML_INCLUDE_STYLE=. 6335 6336 *** Add an argument to ~org-export-to-file~ and ~org-export-to-buffer~ 6337 6338 ~org-export-to-file~ and ~org-export-to-file~ can run in a different 6339 process when provided a non-nil =ASYNC= optional argument, without 6340 relying on ~org-export-async-start~ macro. 6341 6342 Since =ASYNC= is the first of optional arguments, you have to shift 6343 the other optional arguments accordingly. 6344 6345 *** Export back-ends are now structures 6346 6347 Export back-ends are now structures, and stored as such in the 6348 communication channel during an export process. In other words, from 6349 now on, ~(plist-get info :back-end)~ will return a structure instead 6350 of a symbol. 6351 6352 Arguments in hooks and in filters are still symbols, though. 6353 6354 ** Important bugfixes 6355 6356 *** [[doc:org-insert-heading][org-insert-heading]] has been rewritten and bugs are now fixed 6357 *** The replacement of disputed keys is now turned of when reading a date 6358 6359 *** Match string for sparse trees can now contain a slash in a property value 6360 6361 You can now have searches like SOMEPROP="aaa/bbb". Until now, 6362 this would break because the slash would be interpreted as the 6363 separator starting a TOTO match string. 6364 ** New features 6365 6366 *** =C-c ^ x= will now sort checklist items by their checked status 6367 6368 See [[doc:org-sort-list][org-sort-list]]: hitting =C-c ^ x= will put checked items at the end 6369 of the list. 6370 *** Various LaTeX export enhancements 6371 6372 - Support SVG images 6373 - Support for .pgf files 6374 - LaTeX Babel blocks can now be exported as =.tikz= files 6375 - Allow =latexmk= as an option for [[doc:org-latex-pdf-process][org-latex-pdf-process]] 6376 - When using =\usepackage[AUTO]{babel}=, AUTO will automatically be 6377 replaced with a value compatible with ~org-export-default-language~ 6378 or ~LANGUAGE~ keyword. 6379 - The dependency on the =latexsym= LaTeX package has been removed, we 6380 now use =amssymb= symbols by default instead. 6381 6382 *** New functions for paragraph motion 6383 6384 The commands =C-down= and =C-up= now invoke special commands 6385 that use knowledge from the org-elements parser to move the cursor 6386 in a paragraph-like way. 6387 6388 *** New entities in =org-entities.el= 6389 6390 Add support for ell, imath, jmath, varphi, varpi, aleph, gimel, beth, 6391 dalet, cdots, S (§), dag, ddag, colon, therefore, because, triangleq, 6392 leq, geq, lessgtr, lesseqgtr, ll, lll, gg, ggg, prec, preceq, 6393 preccurlyeq, succ, succeq, succurlyeq, setminus, nexist(s), mho, 6394 check, frown, diamond. Changes loz, vert, checkmark, smile and tilde. 6395 6396 *** Anonymous export back-ends 6397 6398 ~org-export-create-backend~ can create anonymous export back-ends, 6399 which can then be passed to export functions like 6400 ~org-export-to-file~, ~org-export-to-buffer~ or ~org-export-as~. 6401 6402 It allows for quick translation of Org syntax without the overhead of 6403 registering a new back-end. 6404 6405 *** New agenda fortnight view 6406 6407 The agenda has not, in addition to day, week, month, and year 6408 views, also a fortnight view covering 14 days. 6409 ** New options 6410 6411 *** New option [[doc:org-bookmark-names-plist][org-bookmark-names-plist]] 6412 6413 This allows to specify the names of automatic bookmarks. 6414 *** New option [[doc:org-agenda-ignore-drawer-properties][org-agenda-ignore-drawer-properties]] 6415 6416 This allows more flexibility when optimizing the agenda generation. 6417 See https://orgmode.org/worg/agenda-optimization.html for details. 6418 *** New option: [[doc:org-html-link-use-abs-url][org-html-link-use-abs-url]] to force using absolute URLs 6419 6420 This is an export/publishing option, and should be used either within 6421 the =#+OPTIONS= line(s) or within a [[doc:org-publish-project-alist][org-publish-project-alist]]. 6422 6423 Setting this option to =t= is needed when the HTML output does not 6424 allow relative URLs. For example, the =contrib/lisp/ox-rss.el= 6425 library produces a RSS feed, and RSS feeds need to use absolute URLs, 6426 so a combination of =:html-link-home "..." and :html-link-use-abs-url 6427 t= is required---see the configuration example in the comment section 6428 of =ox-rss.el=. 6429 6430 *** New option [[doc:org-babel-ditaa-java-cmd][org-babel-ditaa-java-cmd]] 6431 6432 This makes java executable configurable for ditaa blocks. 6433 6434 *** New options [[doc:org-babel-latex-htlatex][org-babel-latex-htlatex]] and [[doc:org-babel-latex-htlatex-packages][org-babel-latex-htlatex-packages]] 6435 6436 This enables SVG generation from latex code blocks. 6437 6438 *** New option: [[doc:org-habit-show-done-always-green][org-habit-show-done-always-green]] 6439 6440 See [[https://lists.gnu.org/r/emacs-orgmode/2013-05/msg00214.html][this message]] from Max Mikhanosha. 6441 6442 *** New option: [[doc:org-babel-inline-result-wrap][org-babel-inline-result-wrap]] 6443 6444 If you set this to the following 6445 6446 : (setq org-babel-inline-result-wrap "$%s$") 6447 6448 then inline code snippets will be wrapped into the formatting string. 6449 6450 *** New option: [[doc:org-special-ctrl-o][org-special-ctrl-o]] 6451 6452 This variable can be used to turn off the special behavior of 6453 =C-o= in tables. 6454 ** New contributed packages 6455 6456 - =ox-bibtex.el= by Nicolas Goaziou :: an utility to handle BibTeX 6457 export to both LaTeX and HTML exports. It uses the [[https://www.lri.fr/~filliatr/bibtex2html/][bibtex2html]] 6458 software. 6459 6460 - =org-screenshot.el= by Max Mikhanosha :: an utility to handle 6461 screenshots easily from Org, using the external tool [[https://freecode.com/projects/scrot][scrot]]. 6462 6463 ** Miscellaneous 6464 6465 *** "QUOTE" keywords in headlines are deprecated 6466 6467 "QUOTE" keywords are an undocumented feature in Org. When a headline 6468 starts with the keyword "QUOTE", its contents are parsed as 6469 a ~quote-section~ and treated as an example block. You can achieve 6470 the same with example blocks. 6471 6472 This feature is deprecated and will be removed in the next Org 6473 release. 6474 6475 * Version 8.0.1 6476 6477 ** Installation 6478 6479 Installation instructions have been updated and simplified. 6480 6481 If you have troubles installing or updating Org, focus on these 6482 instructions: 6483 6484 - when updating via a =.zip/.tar.gz= file, you only need to set the 6485 =load-path= in your =.emacs=. Set it before any other Org 6486 customization that would call autoloaded Org functions. 6487 6488 - when updating by pulling Org's Git repository, make sure to create the 6489 correct autoloads. You can do this by running =~$ make autoloads= (to 6490 only create the autoloads) or by running =~$ make= (to also compile 6491 the Emacs lisp files.) =~$ make help= and =~$ make helpall= gives you 6492 detailed explanations. 6493 6494 - when updating through ELPA (either from GNU ELPA or from Org ELPA), 6495 you have to install Org's ELPA package in a session where no Org 6496 function has been called already. 6497 6498 When in doubt, run =M-x org-version RET= and see if you have a mixed-up 6499 installation. 6500 6501 See https://orgmode.org/org.html#Installation for details. 6502 6503 ** Incompatible changes 6504 6505 Org 8.0 is the most disruptive major version of Org. 6506 6507 If you configured export options, you will have to update some of them. 6508 6509 If you used =#+ATTR_*= keywords, the syntax of the attributes changed and 6510 you will have to update them. 6511 6512 Below is a list of changes for which you need to take action. 6513 6514 See https://orgmode.org/worg/org-8.0.html for the most recent version of 6515 this list and for detailed instructions on how to migrate. 6516 6517 **** New export engine 6518 6519 Org 8.0 comes with a new export engine written by Nicolas Goaziou. This 6520 export engine relies on ~org-element.el~ (Org's syntax parser), which was 6521 already in Org's core. This new export engine triggered the rewriting of 6522 /all/ export back-ends. 6523 6524 The most visible change is the export dispatcher, accessible through the 6525 keybinding =C-c C-e=. By default, this menu only shows some of the 6526 built-in export formats, but you can add more formats by loading them 6527 directly (e.g., =(require 'ox-texinfo)= or by configuring the option 6528 [[doc:org-export-backends][org-export-backends]]. 6529 6530 More contributed back-ends are available from the =contrib/= directory, the 6531 corresponding files start with the =ox-= prefix. 6532 6533 If you customized an export back-end (like HTML or LaTeX), you will need to 6534 rename some options so that your customization is not lost. Typically, an 6535 option starting with =org-export-html-= is now named =org-html-=. See the 6536 manual for details and check [[https://orgmode.org/worg/org-8.0.html][this Worg page]] for directions. 6537 6538 **** New syntax for #+ATTR_HTML/LaTeX/... options 6539 6540 : #+ATTR_HTML width="200px" 6541 6542 should now be written 6543 6544 : #+ATTR_HTML :width 200px 6545 6546 Keywords like =#+ATTR_HTML= and =#+ATTR_LaTeX= are defined in their 6547 respective back-ends, and the list of supported parameters depends on 6548 each backend. See Org's manual for details. 6549 6550 **** ~org-remember.el~ has been removed 6551 6552 You cannot use =remember.el= anymore to capture notes. 6553 6554 Support for remember templates has been obsoleted since long, it is 6555 now fully removed. 6556 6557 Use =M-x org-capture-import-remember-templates RET= to import your 6558 remember templates into capture templates. 6559 6560 **** ~org-jsinfo.el~ has been merged into ~ox-html.el~ 6561 6562 If you were requiring ~ox-jsinfo.el~ in your ~.emacs.el~ file, you 6563 will have to remove this requirement from your initialization file. 6564 6565 **** Note for third-party developers 6566 6567 The name of the files for export back-end have changed: we now use the 6568 prefix =ox-= for those files (like we use the =ob-= prefix for Babel 6569 files.) For example ~org-html.el~ is now ~ox-html.el~. 6570 6571 If your code relies on these files, please update the names in your 6572 code. 6573 6574 **** Packages moved from core to contrib 6575 6576 Since packages in Org's core are meant to be part of GNU Emacs, we try 6577 to be minimalist when it comes to adding files into core. For 8.0, we 6578 moved some contributions into the =contrib/= directory. 6579 6580 The rationale for deciding that these files should live in =contrib/= 6581 is either because they rely on third-party software that is not 6582 included in Emacs, or because they are not targeting a significant 6583 user-base. 6584 6585 - org-colview-xemacs.el 6586 - org-mac-message.el 6587 - org-mew.el 6588 - org-wl.el 6589 - ox-freedmind.el 6590 - ox-taskjuggler.el 6591 6592 Note that ~ox-freedmind.el~ has been rewritten by Jambunathan, 6593 ~org-mew.el~ has been enhanced by Tokuya Kameshima and 6594 ~ox-taskjuggler.el~ by Nicolas Goaziou and others. 6595 6596 Also, the Taskjuggler exporter now uses TJ3 by default. John Hendy 6597 wrote [[https://orgmode.org/worg/org-tutorials/org-taskjuggler3.html][a tutorial on Worg]] for the TJ3 export. 6598 6599 ** New packages in core 6600 6601 *** ~ob-makefile.el~ by Eric Schulte and Thomas S. Dye 6602 6603 =ob-makefile.el= implements Org Babel support for Makefile tangling. 6604 6605 *** ~ox-man.el~ by Luis Anaya 6606 6607 =ox-man.el= allows you to export Org files to =man= pages. 6608 6609 *** ~ox-md.el~ by Nicolas Goaziou 6610 6611 =ox-md.el= allows you to export Org files to Markdown files, using the 6612 vanilla [[https://daringfireball.net/projects/markdown/][Markdown syntax]]. 6613 6614 *** ~ox-texinfo.el~ by Jonathan Leech-Pepin 6615 6616 =ox-texinfo.el= allows you to export Org files to [[https://www.gnu.org/software/texinfo/][Texinfo]] files. 6617 6618 ** New packages in contrib 6619 6620 *** ~ob-julia.el~ by G. Jay Kerns 6621 6622 [[https://julialang.org/][Julia]] is a new programming language. 6623 6624 =ob-julia.el= provides Org Babel support for evaluating Julia source 6625 code. 6626 6627 *** ~ob-mathomatic.el~ by Luis Anaya 6628 6629 [[https://www.mathomatic.org/][mathomatic]] a portable, command-line, educational CAS and calculator 6630 software, written entirely in the C programming language. 6631 6632 ~ob-mathomatic.el~ provides Org Babel support for evaluating mathomatic 6633 entries. 6634 6635 *** ~ob-tcl.el~ by Luis Anaya 6636 6637 ~ob-tcl.el~ provides Org Babel support for evaluating [[https://www.tcl.tk/][Tcl]] source code. 6638 6639 *** ~org-bullets.el~ by Evgeni Sabof 6640 6641 Display bullets instead of stars for headlines. 6642 6643 Also see [[https://orgmode.org/worg/org-faq.html#sec-8-12][this updated FAQ]] on how to display another character than "*" 6644 for starting headlines. 6645 6646 *** ~org-favtable.el~ by Marc-Oliver Ihm 6647 6648 ~org-favtable.el~ helps you to create and update a table of favorite 6649 locations in org, keeping the most frequently visited lines right at 6650 the top. This table is called "favtable". See the documentation on 6651 [[https://orgmode.org/worg/org-contrib/org-favtable.html][Worg]]. 6652 6653 *** ~ox-confluence.el~ by Sébastien Delafond 6654 6655 ~ox-confluence.el~ lets you convert Org files to [[https://confluence.atlassian.com/display/DOC/Confluence%2BWiki%2BMarkup][Confluence Wiki]] files. 6656 6657 *** ~ox-deck.el~ and ~ox-s5.el~ by Rick Frankel 6658 6659 [[http://imakewebthings.com/deck.js/][deck.js]] is a javascript library for displaying HTML ages as 6660 presentations. ~ox-deck.el~ exports Org files to HTML presentations 6661 using =deck.js=. 6662 6663 [[https://meyerweb.com/eric/tools/s5/][s5]] is a set of scripts which also allows to display HTML pages as 6664 presentations. ~ox-s5.el~ exports Org files to HTML presentations 6665 using =s5=. 6666 6667 *** ~ox-groff.el~ by Luis Anaya and Nicolas Goaziou 6668 6669 The [[https://www.gnu.org/software/groff/][groff]] (GNU troff) software is a typesetting package which reads 6670 plain text mixed with formatting commands and produces formatted 6671 output. 6672 6673 Luis Anaya and Nicolas Goaziou implemented ~ox-groff.el~ to allow 6674 conversion from Org files to groff. 6675 6676 *** ~ox-koma-letter.el~ by Nicolas Goaziou and Alan Schmitt 6677 6678 This back-end allow to export Org pages to the =KOMA Scrlttr2= format. 6679 6680 *** ~ox-rss.el~ by Bastien 6681 6682 This back-end lets you export Org pages to RSS 2.0 feeds. Combined 6683 with the HTML publishing feature, this allows you to build a blog 6684 entirely with Org. 6685 6686 ** New features 6687 6688 *** Export 6689 6690 **** New export generic options 6691 6692 If you use Org exporter, we advise you to re-read [[https://orgmode.org/org.html#Exporting][the manual section about 6693 it]]. It has been updated and includes new options. 6694 6695 Among the new/updated export options, three are of particular importance: 6696 6697 - [[doc:org-export-allow-bind-keywords][org-export-allow-bind-keywords]] :: This option replaces the old option 6698 =org-export-allow-BIND= and the default value is =nil=, not =confirm=. 6699 You will need to explicitly set this to =t= in your initialization 6700 file if you want to allow =#+BIND= keywords. 6701 6702 - [[doc:org-export-with-planning][org-export-with-planning]] :: This new option controls the export of 6703 =SCHEDULED:, DEADLINE:, CLOSED:= lines, and planning information is 6704 now skipped by default during export. This use to be the job of 6705 [[doc:org-export-with-timestamps][org-export-with-timestamps]], but this latter option has been given a 6706 new role: it controls the export of /standalone time-stamps/. When 6707 set to =nil=, Org will not export active and inactive time-stamps 6708 standing on a line by themselves or within a paragraph that only 6709 contains time-stamps. 6710 6711 To check if an option has been introduced or its default value changed in 6712 Org 8.0, do =C-h v [option] RET= and check if the documentation says that 6713 the variable has been introduced (or changed) in version 24.4 of Emacs. 6714 6715 **** Enhanced default stylesheet for the HTML exporter 6716 6717 See the new default value of [[doc:org-html-style-default][org-html-style-default]]. 6718 6719 **** New tags, classes and ids for the HTML exporter 6720 6721 See the new default value of [[doc:org-html-divs][org-html-divs]]. 6722 6723 **** Support for tikz pictures in LaTeX export 6724 **** ~org-man.el~: New export function for "man" links 6725 **** ~org-docview.el~: New export function for docview links 6726 *** Structure editing 6727 6728 **** =C-u C-u M-RET= inserts a heading at the end of the parent subtree 6729 **** Cycling to the =CONTENTS= view keeps inline tasks folded 6730 6731 [[doc:org-cycle-hook][org-cycle-hook]] as a new function [[doc:org-cycle-hide-inline-tasks][org-cycle-hide-inline-tasks]] which 6732 prevents the display of inline tasks when showing the content of a subtree. 6733 6734 **** =C-c -= in a region makes a list item for each line 6735 6736 This is the opposite of the previous behavior, where =C-c -= on a region 6737 would create one item for the whole region, and where =C-u C-c -= would 6738 create an item for each line. Now =C-c -= on the selected region creates 6739 an item per line, and =C-u C-c -= creates a single item for the whole 6740 region. 6741 6742 **** When transposing words, markup characters are now part of the words 6743 6744 In Emacs, you can transpose words with =M-t=. Transposing =*these* 6745 _words__= will preserve markup. 6746 6747 **** New command [[doc:org-set-property-and-value][org-set-property-and-value]] bound to =C-c C-x P= 6748 6749 This command allows you to quickly add both the property and its value. It 6750 is useful in buffers where there are many properties and where =C-c C-x p= 6751 can slow down the flow of editing too much. 6752 6753 **** New commands [[doc:org-next-block][org-next-block]] and [[doc:org-previous-block][org-previous-block]] 6754 6755 These commands allow you to go to the previous block (=C-c M-b= or the 6756 speedy key =B=) or to the next block (=C-c M-f= or the speedy key =F=.) 6757 6758 **** New commands [[doc:org-drag-line-forward][org-drag-line-forward]] and [[doc:org-drag-line-backward][org-drag-line-backward]] 6759 6760 These commands emulate the old behavior of =M-<down>= and =M-<up>= but are 6761 now bound to =S-M-<down>= and =S-M-<up>= respectively, since =M-<down>= and 6762 =M-<up>= now drag the whole element at point (a paragraph, a table, etc.) 6763 forward and backward. 6764 6765 **** When a list item has a checkbox, inserting a new item uses a checkbox too 6766 **** When sorting entries/items, only the description of links is considered 6767 6768 Now Org will sort this list 6769 6770 : - [[https://abc.org][B]] 6771 : - [[https://def.org][A]] 6772 6773 like this: 6774 6775 : - [[https://def.org][A]] 6776 : - [[https://abc.org][B]] 6777 6778 by comparing the descriptions, not the links. 6779 Same when sorting headlines instead of list items. 6780 **** New option =orgstruct-heading-prefix-regexp= 6781 6782 For example, setting this option to "^;;; " in Emacs lisp files and using 6783 =orgstruct-mode= in those files will allow you to cycle through visibility 6784 states as if lines starting with ";;; *..." where headlines. 6785 6786 In general, you want to set =orgstruct-heading-prefix-regexp= as a file 6787 local variable. 6788 6789 **** New behavior of [[doc:org-clone-subtree-with-time-shift][org-clone-subtree-with-time-shift]] 6790 6791 The default is now to ask for a time-shift only when there is a time-stamp. 6792 When called with a universal prefix argument =C-u=, it will not ask for a 6793 time-shift even if there is a time-stamp. 6794 6795 **** New option [[doc:org-agenda-restriction-lock-highlight-subtree][org-agenda-restriction-lock-highlight-subtree]] 6796 6797 This defaults to =t= so that the whole subtree is highlighted when you 6798 restrict the agenda view to it with =C-c C-x <= (or the speed command =<=). 6799 The default setting helps ensuring that you are not adding tasks after the 6800 restricted region. If you find this highlighting too intrusive, set this 6801 option to =nil=. 6802 **** New option [[doc:org-closed-keep-when-no-todo][org-closed-keep-when-no-todo]] 6803 6804 When switching back from a =DONE= keyword to a =TODO= keyword, Org now 6805 removes the =CLOSED= planning information, if any. It also removes this 6806 information when going back to a non-TODO state (e.g., with =C-c C-t SPC=). 6807 If you want to keep the =CLOSED= planning information when removing the 6808 TODO keyword, set [[doc:org-closed-keep-when-no-todo][org-closed-keep-when-no-todo]] to =t=. 6809 6810 **** New option [[doc:org-image-actual-width][org-image-actual-width]] 6811 6812 This option allows you to change the width of in-buffer displayed images. 6813 The default is to use the actual width of the image, but you can use a 6814 fixed value for all images, or fall back on an attribute like 6815 6816 : #+attr_html: :width 300px 6817 *** Scheduled/deadline 6818 6819 **** Implement "delay" cookies for scheduled items 6820 6821 If you want to delay the display of a scheduled task in the agenda, you can 6822 now use a delay cookie like this: =SCHEDULED: <2004-12-25 Sat -2d>=. The 6823 task is still scheduled on the 25th but will appear in your agenda starting 6824 from two days later (i.e. from March 27th.) 6825 6826 Imagine for example that your co-workers are not done in due time and tell 6827 you "we need two more days". In that case, you may want to delay the 6828 display of the task in your agenda by two days, but you still want the task 6829 to appear as scheduled on March 25th. 6830 6831 In case the task contains a repeater, the delay is considered to affect all 6832 occurrences; if you want the delay to only affect the first scheduled 6833 occurrence of the task, use =--2d= instead. See [[doc:org-scheduled-delay-days][org-scheduled-delay-days]] 6834 and [[doc:org-agenda-skip-scheduled-delay-if-deadline][org-agenda-skip-scheduled-delay-if-deadline]] for details on how to 6835 control this globally or per agenda. 6836 6837 **** Use =C-u C-u C-c C-s= will insert a delay cookie for scheduled tasks 6838 6839 See the previous section for why delay cookies may be useful. 6840 6841 **** Use =C-u C-u C-c C-d= will insert a warning delay for deadline tasks 6842 6843 =C-u C-u C-c C-d= now inserts a warning delay to deadlines. 6844 *** Calendar, diary and appts 6845 6846 **** New variable [[doc:org-read-date-minibuffer-local-map][org-read-date-minibuffer-local-map]] 6847 6848 By default, this new local map uses "." to go to today's date, like in the 6849 normal =M-x calendar RET=. If you want to deactivate this and to reassign 6850 the "@" key to =calendar-goto-today=, use this: 6851 6852 #+BEGIN_SRC emacs-lisp 6853 ;; Unbind "." in Org's calendar: 6854 (define-key org-read-date-minibuffer-local-map (kbd ".") nil) 6855 6856 ;; Bind "@" to `calendar-goto-today': 6857 (define-key org-read-date-minibuffer-local-map 6858 (kbd "@") 6859 (lambda () (interactive) (org-eval-in-calendar '(calendar-goto-today)))) 6860 #+END_SRC 6861 6862 **** In Org's calendar, =!= displays diary entries of the date at point 6863 6864 This is useful when you want to check if you don't already have an 6865 appointment when setting new ones with =C-c .= or =C-c s=. =!= will 6866 call =diary-view-entries= and display the diary in a separate buffer. 6867 6868 **** [[doc:org-diary][org-diary]]: only keep the descriptions of links 6869 6870 [[doc:org-diary][org-diary]] returns diary information from Org files, but it returns it 6871 in a diary buffer, not in an Org mode buffer. When links are displayed, 6872 only show their description, not the full links. 6873 *** Agenda 6874 6875 **** New agenda type =agenda*= and entry types =:scheduled* :deadline*= 6876 6877 When defining agenda custom commands, you can now use =agenda*=: this will 6878 list entries that have both a date and a time. This is useful when you 6879 want to build a list of appointments. 6880 6881 You can also set [[doc:org-agenda-entry-types][org-agenda-entry-types]] either globally or locally in 6882 each agenda custom command and use =:timestamp*= and/or =:deadline*= there. 6883 6884 Another place where this is useful is your =.diary= file: 6885 6886 : %%(org-diary :scheduled*) ~/org/rdv.org 6887 6888 This will list only entries from =~/org/rdv.org= that are scheduled with a 6889 time value (i.e. appointments). 6890 6891 **** New agenda sorting strategies 6892 6893 [[doc:org-agenda-sorting-strategy][org-agenda-sorting-strategy]] allows these new sorting strategies: 6894 6895 | Strategy | Explanations | 6896 |----------------+------------------------------------------| 6897 | timestamp-up | Sort by any timestamp, early first | 6898 | timestamp-down | Sort by any timestamp, late first | 6899 | scheduled-up | Sort by scheduled timestamp, early first | 6900 | scheduled-down | Sort by scheduled timestamp, late first | 6901 | deadline-up | Sort by deadline timestamp, early first | 6902 | deadline-down | Sort by deadline timestamp, late first | 6903 | ts-up | Sort by active timestamp, early first | 6904 | ts-down | Sort by active timestamp, late first | 6905 | tsia-up | Sort by inactive timestamp, early first | 6906 | tsia-down | Sort by inactive timestamp, late first | 6907 6908 **** New options to limit the number of agenda entries 6909 6910 You can now limit the number of entries in an agenda view. This is 6911 different from filters: filters only /hide/ the entries in the agenda, 6912 while limits are set while generating the list of agenda entries. 6913 6914 These new options are available: 6915 6916 - [[doc:org-agenda-max-entries][org-agenda-max-entries]] :: limit by number of entries. 6917 - [[doc:org-agenda-max-todos][org-agenda-max-todos]] :: limit by number of TODOs. 6918 - [[doc:org-agenda-max-tags][org-agenda-max-tags]] :: limit by number of tagged entries. 6919 - [[doc:org-agenda-max-effort][org-agenda-max-effort]] :: limit by effort (minutes). 6920 6921 For example, if you locally set [[doc:org-agenda-max-todos][org-agenda-max-todos]] to 3 in an agenda 6922 view, the agenda will be limited to the first three todos. Other entries 6923 without a TODO keyword or beyond the third TODO headline will be ignored. 6924 6925 When setting a limit (e.g. about an effort's sum), the default behavior is 6926 to exclude entries that cannot be checked against (e.g. entries that have 6927 no effort property.) To include other entries too, you can set the limit 6928 to a negative number. For example =(setq org-agenda-max-tags -3)= will not 6929 show the fourth tagged headline (and beyond), but it will also show 6930 non-tagged headlines. 6931 6932 **** =~= in agenda view sets temporary limits 6933 6934 You can hit =~= in the agenda to temporarily set limits: this will 6935 regenerate the agenda as if the limits were set. This is useful for 6936 example when you want to only see a list of =N= tasks, or a list of tasks 6937 that take only =N= minutes. 6938 6939 **** "=" in agenda view filters by regular expressions 6940 6941 You can now filter agenda entries by regular expressions using ~=~. =C-u 6942 == will filter entries out. Regexp filters are cumulative. You can set 6943 [[doc:org-agenda-regexp-filter-preset][org-agenda-regexp-filter-preset]] to suit your needs in each agenda view. 6944 6945 **** =|= in agenda view resets all filters 6946 6947 Since it's common to combine tag filters, category filters, and now regexp 6948 filters, there is a new command =|= to reset all filters at once. 6949 6950 **** Allow writing an agenda to an =.org= file 6951 6952 You can now write an agenda view to an =.org= file. It copies the 6953 headlines and their content (but not subheadings) into the new file. 6954 6955 This is useful when you want to quickly share an agenda containing the full 6956 list of notes. 6957 6958 **** New commands to drag an agenda line forward (=M-<down>=) or backward (=M-<up>=) 6959 6960 It sometimes handy to move agenda lines around, just to quickly reorganize 6961 your tasks, or maybe before saving the agenda to a file. Now you can use 6962 =M-<down>= and =M-<up>= to move the line forward or backward. 6963 6964 This does not persist after a refresh of the agenda, and this does not 6965 change the =.org= files who contribute to the agenda. 6966 6967 **** Use =%b= for displaying "breadcrumbs" in the agenda view 6968 6969 [[doc:org-agenda-prefix-format][org-agenda-prefix-format]] now allows to use a =%b= formatter to tell Org 6970 to display "breadcrumbs" in the agenda view. 6971 6972 This is useful when you want to display the task hierarchy in your agenda. 6973 6974 **** Use =%l= for displaying the headline's level in the agenda view 6975 6976 [[doc:org-agenda-prefix-format][org-agenda-prefix-format]] allows to use a =%l= formatter to tell Org to 6977 display entries with additional spaces corresponding to their level in the 6978 outline tree. 6979 6980 **** [[doc:org-agenda-write][org-agenda-write]] will ask before overwriting an existing file 6981 6982 =M-x org-agenda-write RET= (or =C-c C-w= from an agenda buffer) used to 6983 overwrite preexisting file with the same name without confirmation. It now 6984 asks for a confirmation. 6985 6986 **** New commands =M-m= and =M-*= to toggle (all) mark(s) for bulk action 6987 6988 - [[doc:org-agenda-bulk-toggle][org-agenda-bulk-toggle]] :: this command is bound to =M-m= and toggles 6989 the mark of the entry at point. 6990 6991 - [[doc:org-agenda-bulk-toggle-all][org-agenda-bulk-toggle-all]] :: this command is bound to =M-*= and 6992 toggles all the marks in the current agenda. 6993 6994 **** New option [[doc:org-agenda-search-view-max-outline-level][org-agenda-search-view-max-outline-level]] 6995 6996 This option sets the maximum outline level to display in search view. 6997 E.g. when this is set to 1, the search view will only show headlines of 6998 level 1. 6999 7000 **** New option [[doc:org-agenda-todo-ignore-time-comparison-use-seconds][org-agenda-todo-ignore-time-comparison-use-seconds]] 7001 7002 This allows to compare times using seconds instead of days when honoring 7003 options like =org-agenda-todo-ignore-*= in the agenda display. 7004 7005 **** New option [[doc:org-agenda-entry-text-leaders][org-agenda-entry-text-leaders]] 7006 7007 This allows you to get rid of the ">" character that gets added in front of 7008 entries excerpts when hitting =E= in the agenda view. 7009 7010 **** New formatting string for past deadlines in [[doc:org-agenda-deadline-leaders][org-agenda-deadline-leaders]] 7011 7012 The default formatting for past deadlines is ="%2d d. ago: "=, which makes 7013 it explicit that the deadline is in the past. You can configure this via 7014 [[doc:org-agenda-deadline-leaders][org-agenda-deadline-leaders]]. Note that the width of the formatting 7015 string is important to keep the agenda alignment clean. 7016 7017 **** New allowed value =repeated-after-deadline= for [[doc:org-agenda-skip-scheduled-if-deadline-is-shown][org-agenda-skip-scheduled-if-deadline-is-shown]] 7018 7019 When [[doc:org-agenda-skip-scheduled-if-deadline-is-shown][org-agenda-skip-scheduled-if-deadline-is-shown]] is set to 7020 =repeated-after-deadline=, the agenda will skip scheduled items if they are 7021 repeated beyond the current deadline. 7022 7023 **** New option for [[doc:org-agenda-skip-deadline-prewarning-if-scheduled][org-agenda-skip-deadline-prewarning-if-scheduled]] 7024 7025 This variable may be set to nil, t, the symbol `pre-scheduled', or a number 7026 which will then give the number of days before the actual deadline when the 7027 prewarnings should resume. The symbol `pre-scheduled' eliminates the 7028 deadline prewarning only prior to the scheduled date. 7029 7030 Read the full docstring for details. 7031 7032 **** [[doc:org-class][org-class]] now supports holiday strings in the skip-weeks parameter 7033 7034 For example, this task will now be skipped only on new year's day: 7035 7036 : * Task 7037 : <%%(org-class 2012 1 1 2013 12 12 2 "New Year's Day")> 7038 *** Capture 7039 7040 **** Allow =C-1= as a prefix for [[doc:org-agenda-capture][org-agenda-capture]] and [[doc:org-capture][org-capture]] 7041 7042 With a =C-1= prefix, the capture mechanism will use the =HH:MM= value at 7043 point (if any) or the current =HH:MM= time as the default time for the 7044 capture template. 7045 7046 **** Expand keywords within %(sexp) placeholder in capture templates 7047 7048 If you use a =%:keyword= construct within a =%(sexp)= construct, Org will 7049 expand the keywords before expanding the =%(sexp)=. 7050 7051 **** Allow to contextualize capture (and agenda) commands by checking the name of the buffer 7052 7053 [[doc:org-capture-templates-contexts][org-capture-templates-contexts]] and [[doc:org-agenda-custom-commands-contexts][org-agenda-custom-commands-contexts]] 7054 allow you to define what capture templates and what agenda commands should 7055 be available in various contexts. It is now possible for the context to 7056 check against the name of the buffer. 7057 *** Tag groups 7058 7059 Using =#+TAGS: { Tag1 : Tag2 Tag3 }= will define =Tag1= as a /group tag/ 7060 (note the colon after =Tag1=). If you search for =Tag1=, it will return 7061 headlines containing either =Tag1=, =Tag2= or =Tag3= (or any combination 7062 of those tags.) 7063 7064 You can use group tags for sparse tree in an Org buffer, for creating 7065 agenda views, and for filtering. 7066 7067 See https://orgmode.org/org.html#Tag-groups for details. 7068 7069 *** Links 7070 7071 **** =C-u C-u M-x org-store-link RET= will ignore non-core link functions 7072 7073 Org knows how to store links from Org buffers, from info files and from 7074 other Emacs buffers. Org can be taught how to store links from any buffer 7075 through new link protocols (see [[https://orgmode.org/org.html#Adding-hyperlink-types]["Adding hyperlink types"]] in the manual.) 7076 7077 Sometimes you want Org to ignore added link protocols and store the link 7078 as if the protocol was not known. 7079 7080 You can now do this with =C-u C-u M-x org-store-link RET=. 7081 7082 **** =C-u C-u C-u M-x org-store-link RET= on an active region will store links for each lines 7083 7084 Imagine for example that you want to store a link for every message in a 7085 Gnus summary buffer. In that case =C-x h C-u C-u C-u M-x org-store-link 7086 RET= will store a link for every line (i.e. message) if the region is 7087 active. 7088 7089 **** =C-c C-M-l= will add a default description for links which don't have one 7090 7091 =C-c C-M-l= inserts all stored links. If a link does not have a 7092 description, this command now adds a default one, so that we are not mixing 7093 with-description and without-description links when inserting them. 7094 7095 **** No curly braces to bracket links within internal links 7096 7097 When storing a link to a headline like 7098 7099 : * See [[https://orgmode.org][Org website]] 7100 7101 [[doc:org-store-link][org-store-link]] used to convert the square brackets into curly brackets. 7102 It does not anymore, taking the link description or the link path, when 7103 there is no description. 7104 *** Table 7105 7106 **** Switching between #+TBLFM lines 7107 7108 If you have several =#+TBLFM= lines below a table, =C-c C-c= on a line will 7109 apply the formulas from this line, and =C-c C-c= on another line will apply 7110 those other formulas. 7111 7112 **** You now use "nan" for empty fields in Calc formulas 7113 7114 If empty fields are of interest, it is recommended to reread the section 7115 [[https://orgmode.org/org.html#Formula-syntax-for-Calc][3.5.2 Formula syntax for Calc]] of the manual because the description for the 7116 mode strings has been clarified and new examples have been added towards 7117 the end. 7118 7119 **** Handle localized time-stamps in formulas evaluation 7120 7121 If your =LOCALE= is set so that Org time-stamps use another language than 7122 english, and if you make time computations in Org's table, it now works by 7123 internally converting the time-stamps with a temporary =LOCALE=C= before 7124 doing computation. 7125 7126 **** New lookup functions 7127 7128 There are now three lookup functions: 7129 7130 - [[doc:org-lookup-first][org-lookup-first]] 7131 - [[doc:org-lookup-last][org-lookup-last]] 7132 - [[doc:org-lookup-all][org-lookup-all]] 7133 7134 See [[https://orgmode.org/org.html#Lookup-functions][the manual]] for details. 7135 *** Startup keywords 7136 7137 These new startup keywords are now available: 7138 7139 | Startup keyword | Option | 7140 |----------------------------------+---------------------------------------------| 7141 | =#+STARTUP: logdrawer= | =(setq org-log-into-drawer t)= | 7142 | =#+STARTUP: nologdrawer= | =(setq org-log-into-drawer nil)= | 7143 |----------------------------------+---------------------------------------------| 7144 | =#+STARTUP: logstatesreversed= | =(setq org-log-states-order-reversed t)= | 7145 | =#+STARTUP: nologstatesreversed= | =(setq org-log-states-order-reversed nil)= | 7146 |----------------------------------+---------------------------------------------| 7147 | =#+STARTUP: latexpreview= | =(setq org-startup-with-latex-preview t)= | 7148 | =#+STARTUP: nolatexpreview= | =(setq org-startup-with-latex-preview nil)= | 7149 7150 *** Clocking 7151 7152 **** New option [[doc:org-clock-rounding-minutes][org-clock-rounding-minutes]] 7153 7154 E.g. if [[doc:org-clock-rounding-minutes][org-clock-rounding-minutes]] is set to 5, time is 14:47 and you 7155 clock in: then the clock starts at 14:45. If you clock out within the next 7156 5 minutes, the clock line will be removed; if you clock out 8 minutes after 7157 your clocked in, the clock out time will be 14:50. 7158 7159 **** New option [[doc:org-time-clocksum-use-effort-durations][org-time-clocksum-use-effort-durations]] 7160 7161 When non-nil, =C-c C-x C-d= uses effort durations. E.g., by default, one 7162 day is considered to be a 8 hours effort, so a task that has been clocked 7163 for 16 hours will be displayed as during 2 days in the clock display or in 7164 the clocktable. 7165 7166 See [[doc:org-effort-durations][org-effort-durations]] on how to set effort durations and 7167 [[doc:org-time-clocksum-format][org-time-clocksum-format]] for more on time clock formats. 7168 7169 **** New option [[doc:org-clock-x11idle-program-name][org-clock-x11idle-program-name]] 7170 7171 This allows to set the name of the program which prints X11 idle time in 7172 milliseconds. The default is to use =x11idle=. 7173 7174 **** New option [[doc:org-use-last-clock-out-time-as-effective-time][org-use-last-clock-out-time-as-effective-time]] 7175 7176 When non-nil, use the last clock out time for [[doc:org-todo][org-todo]]. Note that this 7177 option has precedence over the combined use of [[doc:org-use-effective-time][org-use-effective-time]] and 7178 [[doc:org-extend-today-until][org-extend-today-until]]. 7179 7180 **** =S-<left/right>= on a clocksum column will update the sum by updating the last clock 7181 **** =C-u 3 C-S-<up/down>= will update clock timestamps synchronously by 3 units 7182 **** New parameter =:wstart= for clocktables to define the week start day 7183 **** New parameter =:mstart= to state the starting day of the month 7184 **** Allow relative times in clocktable tstart and tend options 7185 **** The clocktable summary is now a caption 7186 **** =:tstart= and =:tend= and friends allow relative times like "<-1w>" or "<now>" 7187 *** Babel 7188 7189 **** You can now use =C-c C-k= for [[doc:org-edit-src-abort][org-edit-src-abort]] 7190 7191 This allows you to quickly cancel editing a source block. 7192 7193 **** =C-u C-u M-x org-babel-tangle RET= tangles by the target file of the block at point 7194 7195 This is handy if you want to tangle all source code blocks that have the 7196 same target than the block at point. 7197 7198 **** New options for auto-saving the base buffer or the source block editing buffer 7199 7200 When [[doc:org-edit-src-turn-on-auto-save][org-edit-src-turn-on-auto-save]] is set to =t=, editing a source block 7201 in a new window will turn on =auto-save-mode= and save the code in a new 7202 file under the same directory than the base Org file. 7203 7204 When [[doc:org-edit-src-auto-save-idle-delay][org-edit-src-auto-save-idle-delay]] is set to a number of minutes =N=, 7205 the base Org buffer will be saved after this number of minutes of idle 7206 time. 7207 7208 **** New =:post= header argument post-processes results 7209 7210 This header argument may be used to pass the results of the current 7211 code block through another code block for post-processing. See the 7212 manual for a usage example. 7213 7214 **** Commented out heading are ignored when collecting blocks for tangling 7215 7216 If you comment out a heading (with =C-c ;= anywhere on the heading or in 7217 the subtree), code blocks from within this heading are now ignored when 7218 collecting blocks for tangling. 7219 7220 **** New option [[doc:org-babel-hash-show-time][org-babel-hash-show-time]] to show a time-stamp in the result hash 7221 **** Do not ask for confirmation if cached value is current 7222 7223 Do not run [[doc:org-babel-confirm-evaluate][org-babel-confirm-evaluate]] if source block has a cache and the 7224 cache value is current as there is no evaluation involved in this case. 7225 **** =ob-sql.el= and =ob-python.el= have been improved. 7226 **** New Babel files only need to =(require 'ob)= 7227 7228 When writing a new Babel file, you now only need to use =(require 'ob)= 7229 instead of requiring each Babel library one by one. 7230 *** Faces 7231 7232 - Org now fontifies radio link targets by default 7233 - In the agenda, use [[doc:org-todo-keyword-faces][org-todo-keyword-faces]] to highlight selected TODO keywords 7234 - New face [[doc:org-priority][org-priority]], enhanced fontification of priority cookies in agenda 7235 - New face [[doc:org-tag-group][org-tag-group]] for group tags 7236 7237 ** Miscellaneous 7238 7239 - New speedy key =s= pour [[doc:org-narrow-to-subtree][org-narrow-to-subtree]] 7240 - Handling of [[doc:org-html-table-row][org-html-table-row]] has been updated (incompatible change) 7241 - [[doc:org-export-html-table-tag][org-export-html-table-tag]] is replaced by [[doc:org-html-table-default-attributes][org-html-table-default-attributes]] 7242 - Support using =git-annex= with Org attachments 7243 - org-protocol: Pass optional value using query in url to capture from protocol 7244 - When the refile history is empty, use the current filename as default 7245 - When you cannot change the TODO state of a task, Org displays the blocking task 7246 - New option [[doc:org-mobile-allpriorities][org-mobile-allpriorities]] 7247 - org-bibtex.el now use =visual-line-mode= instead of the deprecated =longlines-mode= 7248 - [[doc:org-format-latex-options][org-format-latex-options]] allows to set the foreground/background colors automatically 7249 - New option [[doc:org-archive-file-header-format][org-archive-file-header-format]] 7250 - New "neg" entity in [[doc:org-entities][org-entities]] 7251 - New function [[doc:org-docview-export][org-docview-export]] to export docview links 7252 - New =:eps= header argument for ditaa code blocks 7253 - New option [[doc:org-gnus-no-server][org-gnus-no-server]] to start Gnus with =gnus-no-server= 7254 - Org is now distributed with =htmlize.el= version 1.43 7255 - ~org-drill.el~ has been updated to version 2.3.7 7256 - ~org-mac-iCal.el~ now supports OS X versions up to 10.8 7257 - Various improvements to ~org-contacts.el~ and =orgpan.el= 7258 7259 ** Outside Org 7260 7261 *** Spanish translation of the Org guide by David Arroyo Menéndez 7262 7263 David (and others) translated the Org compact guide in spanish: 7264 7265 You can read the [[https://orgmode.org/worg/orgguide/orgguide.es.pdf][PDF guide]]. 7266 7267 *** ~poporg.el~ and ~outorg.el~ 7268 7269 Two new libraries (~poporg.el~ by François Pinard and ~outorg.el~ by 7270 Thorsten Jolitz) now enable editing of comment-sections from source-code 7271 buffers in temporary Org-mode buffers, making the full editing power of 7272 Org-mode available. ~outorg.el~ comes together with ~outshine.el~ and 7273 ~navi-mode.el~, two more libraries by Thorsten Jolitz with the goal to give 7274 source-code buffers the /look & feel/ of Org-mode buffers while greatly 7275 improving navigation and structure editing. A detailed description can be 7276 found here: https://orgmode.org/worg/org-tutorials/org-outside-org.html 7277 7278 Here are two screencasts demonstrating Thorsten's tools: 7279 7280 - [[https://youtu.be/nqE6YxlY0rw]["Modern conventions for Emacs Lisp files"]] 7281 - [[https://www.youtube.com/watch?v%3DII-xYw5VGFM][Exploring Bernt Hansen's Org-mode tutorial with 'navi-mode']] 7282 7283 *** MobileOrg for iOS 7284 7285 MobileOrg for iOS back in the App Store The 1.6.0 release was focused on 7286 the new Dropbox API and minor bug fixes but also includes a new ability to 7287 launch in Capture mode. Track development and contribute [[https://github.com/MobileOrg/mobileorg/issues][on github]]. 7288 7289 * Version 7.9.3 7290 7291 ** New option [[doc::org-agenda-use-tag-inheritance][org-agenda-use-tag-inheritance]] 7292 7293 [[doc::org-use-tag-inheritance][org-use-tag-inheritance]] controls whether tags are inherited when 7294 org-tags-view is called (either in =tags=, =tags-tree= or =tags-todo= 7295 agenda views.) 7296 7297 When generating other agenda types such as =agenda=, =todo= and 7298 =todo-tree=, tags inheritance is not used when selecting the entries 7299 to display. Still, you might want to have all tag information correct 7300 in the agenda buffer, e.g. for tag filtering. In that case, add the 7301 agenda type to this variable. 7302 7303 Setting this variable to nil should considerably speeds up the agenda 7304 generation. 7305 7306 Note that the default was to display inherited tags in the agenda 7307 lines even if `org-use-tag-inheritance' was nil. The default is now 7308 to *never* display inherited tags in agenda lines, but to /know/ about 7309 them when the agenda type is listed in [[doc::org-agenda-use-tag-inheritance][org-agenda-use-tag-inheritance]]. 7310 7311 ** New default value =nil= for [[doc::org-agenda-dim-blocked-tasks][org-agenda-dim-blocked-tasks]] 7312 7313 Using `nil' as the default value speeds up the agenda generation. You 7314 can hit `#' (or `C-u #') in agenda buffers to temporarily dim (or turn 7315 invisible) blocked tasks. 7316 7317 ** New speedy keys for [[doc::org-speed-commands-default][org-speed-commands-default]] 7318 7319 You can now use `:' (instead of `;') for setting tags---this is 7320 consistent with using the `:' key in agenda view. 7321 7322 You can now use `=' for [[doc::org-columns][org-columns]]. 7323 7324 ** =org-float= is now obsolete, use =diary-float= instead 7325 ** No GPL manual anymore 7326 7327 There used to be a GPL version of the Org manual, but this is not the 7328 case anymore, the Free Software Foundation does not permit this. 7329 7330 The GNU FDL license is now included in the manual directly. 7331 7332 ** Enhanced compatibility with Emacs 22 and XEmacs 7333 7334 Thanks to Achim for his work on enhancing Org's compatibility with 7335 various Emacsen. Things may not be perfect, but Org should work okay 7336 in most environments. 7337 7338 * Version 7.9.2 7339 7340 ** New ELPA repository for Org packages 7341 7342 You can now add the Org ELPA repository like this: 7343 7344 #+BEGIN_SRC emacs-lisp 7345 (add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t) 7346 #+END_SRC 7347 7348 It contains both the =org-*.tar= package (the core Org distribution, also 7349 available through https://elpa.gnu.org) and the =org-plus*.tar= package (the 7350 extended Org distribution, with non-GNU packages from the =contrib/= 7351 directory.) 7352 7353 See https://orgmode.org/elpa/ 7354 7355 ** Overview of the new keybindings 7356 7357 | Keybinding | Speedy | Command | 7358 |-----------------+--------+-----------------------------| 7359 | =C-c C-x C-z= | | [[doc::org-clock-resolve][org-clock-resolve]] | 7360 | =C-c C-x C-q= | | [[doc::org-clock-cancel][org-clock-cancel]] | 7361 | =C-c C-x C-x= | | [[doc::org-clock-in-last][org-clock-in-last]] | 7362 | =M-h= | | [[doc::org-mark-element][org-mark-element]] | 7363 | =*= | | [[doc::org-agenda-bulk-mark-all][org-agenda-bulk-mark-all]] | 7364 | =C-c C-M-l= | | [[doc::org-insert-all-links][org-insert-all-links]] | 7365 | =C-c C-x C-M-v= | | [[doc::org-redisplay-inline-images][org-redisplay-inline-images]] | 7366 | =C-c C-x E= | =E= | [[doc::org-inc-effort][org-inc-effort]] | 7367 | | =#= | [[doc::org-toggle-comment][org-toggle-comment]] | 7368 | | =:= | [[doc::org-columns][org-columns]] | 7369 | | =W= | Set =APPT_WARNTIME= | 7370 | =k= | | [[doc::org-agenda-capture][org-agenda-capture]] | 7371 | C-c , | , | [[doc::org-priority][org-priority]] | 7372 7373 ** New package and Babel language 7374 7375 *** =org-eshell.el= by Konrad Hinsen is now in Org 7376 7377 =org-eshell.el= allows you to create links from [[https://www.gnu.org/software/emacs/manual/html_node/eshell/index.html][Eshell]]. 7378 7379 *** Support for execution of Scala code blocks (see ob-scala.el) 7380 *** Support for execution of IO code blocks (see ob-io.el) 7381 7382 ** Incompatible changes 7383 7384 - If your code relies on =org-write-agenda=, please use 7385 [[doc::org-agenda-write][org-agenda-write]] from now on. 7386 7387 - If your code relies on =org-make-link=, please use =concat= 7388 instead. 7389 7390 - =org-link-to-org-use-id= has been renamed to 7391 =org-id-link-to-org-use-id= and its default value is nil. The 7392 previous default was =create-if-interactive-and-no-custom-id=. 7393 7394 ** New features and user-visible changes 7395 7396 *** Org Element 7397 7398 =org-element.el= is a toolbox for parsing and analyzing "elements" 7399 in an Org-mode buffer. This has been written by Nicolas Goaziou 7400 and has been tested for quite some time. It is now part of Org's 7401 core and many core functions rely on this package. 7402 7403 Two functions might be particularly handy for users: 7404 =org-element-at-point= and =org-element-context=. 7405 7406 See the docstrings for more details. 7407 7408 Below is a list of editing and navigating commands that now rely 7409 on =org-element.el=. 7410 7411 **** [[doc::org-fill-paragraph][org-fill-paragraph]] has been completely rewritten 7412 7413 The filling mechanisms now rely on org-element, trying to do the 7414 right thing on each element in various contexts. E.g. filling in 7415 a list item will preserve indentation; filling in message-mode 7416 will fall back on the relevant filling functions; etc. 7417 7418 **** [[doc::org-metaup][org-metaup]] and [[doc::org-metadown][org-metadown]] will drag the element backward/forward 7419 7420 If you want to get the old behavior (i.e. moving a line up and 7421 down), you can first select the line as an active region, then 7422 =org-metaup= or =org-metadown= to move the region backward or 7423 forward. This also works with regions bigger than just one line. 7424 7425 **** [[doc::org-up-element][org-up-element]] and [[doc::org-down-element][org-down-element]] (respectively =C-c C-^= and =C-c C-_=) 7426 7427 This will move the point up/down in the hierarchy of elements. 7428 7429 **** [[doc::org-backward-element][org-backward-element]] and [[doc::org-forward-element][org-forward-element]] (respectively =M-{= and =M-}=) 7430 7431 This will move the point backward/forward in the hierarchy of 7432 elements. 7433 7434 **** [[doc::org-narrow-to-element][org-narrow-to-element]] will narrow to the element at point 7435 **** [[doc::org-mark-element][org-mark-element]] will mark the element at point 7436 7437 This command is bound to =M-h= and will mark the element at 7438 point. If the point is at a paragraph, it will mark the 7439 paragraph. If the point is at a list item, it will mark the list 7440 item. Etc. 7441 7442 Note that if point is at the beginning of a list, it will mark 7443 the whole list. 7444 7445 To mark a subtree, you can either use =M-h= on the headline 7446 (since there is no ambiguity about the element you're at) or 7447 [[doc::org-mark-subtree][org-mark-subtree]] (=C-c @=) anywhere in the subtree. 7448 7449 Invoking [[doc::org-mark-element][org-mark-element]] repeatedly will try to mark the next 7450 element on top of the previous one(s). E.g. hitting =M-h= twice 7451 on a headline will mark the current subtree and the next one on 7452 the same level. 7453 7454 *** Org Agenda 7455 7456 **** New option [[doc::org-agenda-sticky][org-agenda-sticky]] 7457 7458 There is a new option =org-agenda-sticky= which enables "sticky" 7459 agendas. Sticky agendas remain opened in the background so that 7460 you don't need to regenerate them each time you hit the 7461 corresponding keystroke. This is a big time saver. 7462 7463 When [[doc::org-agenda-sticky][org-agenda-sticky]] is =non-nil=, the agenda buffer will be 7464 named using the agenda key and its description. In sticky 7465 agendas, the =q= key will just bury the agenda buffers and 7466 further agenda commands will show existing buffer instead of 7467 generating new ones. 7468 7469 If [[doc::org-agenda-sticky][org-agenda-sticky]] is set to =nil=, =q= will kill the single 7470 agenda buffer. 7471 7472 **** New option [[doc::org-agenda-custom-commands-contexts][org-agenda-custom-commands-contexts]] 7473 7474 Setting this option allows you to define specific context where 7475 agenda commands should be available from. For example, when set 7476 to this value 7477 7478 #+BEGIN_SRC emacs-lisp 7479 (setq org-agenda-custom-commands-contexts 7480 '(("p" (in-file . "\\.txt")))) 7481 #+END_SRC 7482 7483 then the =p= agenda command will only be available from buffers 7484 visiting *.txt files. See the docstring and the manual for more 7485 details on how to use this. 7486 7487 **** Changes in bulk actions 7488 7489 The set of commands starting with =k ...= as been deleted and the 7490 features have been merged into the "bulk action" feature. 7491 7492 After you marked some entries in the agenda, if you call =B s=, 7493 the agenda entries will be rescheduled using the date at point if 7494 on a date header. If you are on an entry with a timestamp, you 7495 will be prompted for a date to reschedule your marked entries to, 7496 using the timestamp at point as the default prompt. 7497 7498 You can now use =k= to capture the marked entry and use the date 7499 at point as an overriding date for the capture template. 7500 7501 To bind this behavior to =M-x org-capture RET= (or its 7502 keybinding), set the new option [[doc::org-capture-use-agenda-date][org-capture-use-agenda-date]] to 7503 =t=. 7504 7505 **** =N= and =P= in the agenda will move to the next/previous item 7506 7507 **** New command [[doc::org-agenda-bulk-mark-all][org-agenda-bulk-mark-all]] to mark all items 7508 7509 This new command is bound to =*= in agenda mode. 7510 7511 There is also a new option [[doc::org-agenda-bulk-mark-char][org-agenda-bulk-mark-char]] to set the 7512 character to use as a mark for bulk actions. 7513 7514 **** New option [[doc::org-agenda-persistent-marks][org-agenda-persistent-marks]] 7515 7516 When set to =non-nil=, marks will remain visible after a bulk 7517 action. You can temporarily toggle this by pressing =p= when 7518 invoking [[doc::org-agenda-bulk-action][org-agenda-bulk-action]]. Marks are deleted if your 7519 rebuild the agenda buffer or move to another date/span (e.g. with 7520 =f= or =w=). 7521 7522 **** New option [[doc::org-agenda-skip-timestamp-if-deadline-is-shown][org-agenda-skip-timestamp-if-deadline-is-shown]] 7523 7524 =Non-nil= means skip timestamp line if same entry shows because 7525 of deadline. 7526 7527 In the agenda of today, an entry can show up multiple times 7528 because it has both a plain timestamp and has a nearby deadline. 7529 When this variable is t, then only the deadline is shown and the 7530 fact that the entry has a timestamp for or including today is not 7531 shown. When this variable is =nil=, the entry will be shown 7532 several times. 7533 7534 **** New =todo-unblocked= and =nottodo-unblocked= skip conditions 7535 7536 See the [[https://orgmode.org/cgit.cgi/org-mode.git/commit/?id=f426da][git commit]] for more explanations. 7537 7538 **** Allow category filtering in the agenda 7539 7540 You can now filter the agenda by category. Pressing "<" will 7541 filter by the category of the item on the current line, and 7542 pressing "<" again will remove the filter. You can combine tag 7543 filters and category filters. 7544 7545 You can use =org-agenda-category-filter= in your custom agenda 7546 views and =org-agenda-category-filter-preset= in your main 7547 configuration. 7548 7549 See also the new command [[doc::org-agenda-filter-by-top-category][org-agenda-filter-by-top-category]]: 7550 hitting =^= will filter by "Top" category: only show entries that 7551 are of the same category than the Top category of the entry at 7552 point. 7553 7554 *** Org Links 7555 7556 **** Inserting links 7557 7558 When inserting links through [[doc::org-insert-link][org-insert-link]], the description is 7559 now displayed first, followed by the literal link, as the 7560 description is often more useful when you look for the link you 7561 want to insert. 7562 7563 Completion now complete both literal links and description. If 7564 you complete a description, the literal link and its description 7565 will be inserted directly, whereas when you complete the literal 7566 link, you will be prompted for a description (as with Org 7.8.) 7567 7568 In the completion buffer, links to the current buffer are now 7569 highlighted. 7570 7571 **** New templates =%h= and =%(sexp)= for abbreviated links 7572 7573 On top of =%s= template, which is replaced by the link tag in 7574 abbreviated links, you can now use =%h= (which does the same than =%s= 7575 but does not hexify the tag) and =%(sexp)= (which can run a function 7576 that takes the tag as its own argument.) 7577 7578 **** New link type =help= 7579 7580 You can now create links from =help= buffers. 7581 7582 For example, if you request help for the command [[doc::org-agenda][org-agenda]] with 7583 =C-h f org-agenda RET=, creating a link from this buffer will let 7584 you go back to the same buffer. 7585 7586 **** New command [[doc::org-insert-all-links][org-insert-all-links]] 7587 7588 This will insert all links as list items. With a universal 7589 prefix argument, links will not be deleted from the variable 7590 =org-stored-links=. 7591 7592 This new command is bound to =C-c C-M-l=. 7593 7594 **** New option [[doc::org-url-hexify-p][org-url-hexify-p]] 7595 7596 When set to =nil=, the =URL= part of a link will not be hexified. 7597 7598 **** Org can now open multiple shell links 7599 7600 **** New option [[doc::org-doi-server-url][org-doi-server-url]] to specify an alternate DOI server 7601 7602 **** RET now follows time stamps links 7603 7604 *** Org Editing 7605 7606 **** [[doc::org-todo][org-todo]] and =org-archive-*= can now loop in the active region 7607 7608 When [[doc::org-loop-over-headlines-in-active-region][org-loop-over-headlines-in-active-region]] is =non-nil=, using 7609 [[doc::org-todo][org-todo]] or =org-archive-*= commands in the active region will 7610 loop over headlines. This is handy if you want to set the TODO 7611 keyword for several items, or archive them quickly. 7612 7613 **** You can now set tags for headlines in a region 7614 7615 If [[doc::org-loop-over-headlines-in-active-region][org-loop-over-headlines-in-active-region]] is =non-nil=, then 7616 selecting the region and hitting =C-c C-q= will set the tags for 7617 all headlines in the region. 7618 7619 **** New command [[doc::org-insert-drawer][org-insert-drawer]] to insert a drawer interactively 7620 7621 **** Comments start with "^[ \t]*# " anywhere on a line 7622 7623 Note that the space after the hashtag is mandatory. Comments 7624 with "^#+" are not supported anymore. 7625 7626 **** New speed key =#= to toggle the COMMENT cookie on a headline 7627 7628 **** =indent-region-function= is now set to [[doc::org-indent-region][org-indent-region]] 7629 7630 =C-M-\= should now produce useful results. 7631 7632 You can unindent the buffer with [[doc::org-unindent-buffer][org-unindent-buffer]]. 7633 7634 **** New option [[doc::org-allow-promoting-top-level-subtree][org-allow-promoting-top-level-subtree]] 7635 7636 When =non-nil=, =S-M-<left>= will promote level-1 subtrees 7637 containing other subtrees. The level-1 headline will be 7638 commented out. You can revert to the previous state with =M-x 7639 undo RET=. 7640 7641 *** Org Clock 7642 7643 **** New keybinding =C-c C-x C-z= for [[doc::org-clock-resolve][org-clock-resolve]] 7644 7645 **** New keybinding =C-c C-x C-q= for [[doc::org-clock-cancel][org-clock-cancel]] 7646 7647 **** New command [[doc::org-clock-in-last][org-clock-in-last]] to clock in the last clocked item 7648 7649 This command is bound to =C-c C-x C-x= and will clock in the last 7650 clocked entry, if any. 7651 7652 **** =C-u M-x= [[doc::org-clock-out][org-clock-out]] =RET= now prompts for a state to switch to 7653 7654 **** =S-M-<up/down>= on a clock timestamps adjusts the previous/next clock 7655 7656 **** New option [[doc::org-clock-continuously][org-clock-continuously]] 7657 7658 When set to =nil=, clocking in a task will first try to find the 7659 last clocked out task and restart from when that task was clocked 7660 out. 7661 7662 You can temporarily activate continuous clocking with =C-u C-u 7663 C-u M-x= [[doc::org-clock-in][org-clock-in]] =RET= (three universal prefix arguments) 7664 and =C-u C-u M-x= [[doc::org-clock-in-last][org-clock-in-last]] =RET= (two universal prefix 7665 arguments). 7666 7667 7668 **** New option [[doc::org-clock-frame-title-format][org-clock-frame-title-format]] 7669 7670 This option sets the value of =frame-title-format= when clocking 7671 in. 7672 7673 **** New options for controlling the clockreport display 7674 7675 [[doc::org-clock-file-time-cell-format][org-clock-file-time-cell-format]]: Format string for the file time 7676 cells in clockreport. 7677 7678 [[doc::org-clock-total-time-cell-format][org-clock-total-time-cell-format]]: Format string for the total 7679 time cells in clockreport. 7680 7681 7682 **** New options for controlling the clock/timer display 7683 7684 [[doc::org-clock-clocked-in-display][org-clock-clocked-in-display]]: control whether the current clock 7685 is displayed in the mode line and/or frame title. 7686 7687 [[doc::org-timer-display][org-timer-display]]: control whether the current timer is displayed 7688 in the mode line and/or frame title. 7689 7690 This allows the clock and timer to be displayed in the frame 7691 title instead of, or as well as, the mode line. This is useful 7692 for people with limited space in the mode line but with ample 7693 space in the frame title. 7694 7695 *** Org Appearance 7696 7697 **** New option [[doc::org-custom-properties][org-custom-properties]] 7698 7699 The visibility of properties listed in this options can be turn 7700 on/off with [[doc::org-toggle-custom-properties-visibility][org-toggle-custom-properties-visibility]]. This might 7701 be useful for properties used by third-part tools or that you 7702 don't want to see temporarily. 7703 7704 **** New command [[doc::org-redisplay-inline-images][org-redisplay-inline-images]] 7705 7706 This will redisplay all images. It is bound to =C-c C-x C-M-v=. 7707 7708 **** New entities in =org-entities.el= 7709 7710 There are these new entities: 7711 7712 : ("tilde" "\\~{}" nil "˜" "~" "~" "~") 7713 : ("slash" "/" nil "/" "/" "/" "/") 7714 : ("plus" "+" nil "+" "+" "+" "+") 7715 : ("under" "\\_" nil "_" "_" "_" "_") 7716 : ("equal" "=" nil "=" "=" "=" "=") 7717 : ("asciicirc" "\\textasciicircum{}" nil "^" "^" "^" "^") 7718 7719 **** New face =org-list-dt= for definition terms 7720 **** New face =org-date-selected= for the selected calendar day 7721 **** New face value for =org-document-title= 7722 7723 The face is back to a normal height. 7724 7725 *** Org Columns 7726 7727 **** New speed command =:= to activate the column view 7728 **** New special property =CLOCKSUM_T= to display today's clocked time 7729 7730 You can use =CLOCKSUM_T= the same way you use =CLOCKSUM=. It 7731 will display the time spent on tasks for today only. 7732 7733 **** Use the =:COLUMNS:= property in columnview dynamic blocks 7734 7735 If the =:COLUMNS:= is set in a subtree, the columnview dynamic 7736 block will use its value as the column format. 7737 7738 **** Consider inline tasks when computing a sum 7739 7740 *** Org Dates and Time Stamps 7741 7742 **** Enhanced [[doc::org-sparse-tree][org-sparse-tree]] 7743 7744 =C-c /= can now check for time ranges. 7745 7746 When checking for dates with =C-c /= it is useful to change the 7747 type of dates that you are interested in. You can now do this 7748 interactively with =c= after =C-c /= and/or by setting 7749 [[doc::org-sparse-tree-default-date-type][org-sparse-tree-default-date-type]] to the default value you want. 7750 7751 **** Support for hourly repeat cookies 7752 7753 You can now use 7754 7755 : SCHEDULED: <2012-08-20 lun. 08:00 +1h> 7756 7757 if you want to add an hourly repeater to an entry. 7758 7759 **** =C-u C-u C-c .= inserts a time-stamp with no prompt 7760 7761 **** When (setq [[doc::org-read-date-prefer-future][org-read-date-prefer-future]] 'time), accept days in the prompt 7762 7763 "8am Wed" and "Wed 8am" are now acceptable values when entering a 7764 date from the prompt. If [[doc::org-read-date-prefer-future][org-read-date-prefer-future]] is set to 7765 =time=, this will produce the expected prompt indication. 7766 7767 **** New option [[doc::org-datetree-add-timestamp][org-datetree-add-timestamp]] 7768 7769 When set to =non-nil=, datetree entries will also have a 7770 timestamp. This is useful if you want to see these entries in a 7771 sparse tree with =C-c /=. 7772 7773 *** Org Capture 7774 7775 **** New command [[doc::org-capture-string][org-capture-string]] 7776 7777 M-x [[doc::org-capture-string][org-capture-string]] RET will prompt for a string and a capture 7778 template. The string will be used as an annotation for the 7779 template. This is useful when capturing in batch mode as it lets 7780 you define the content of the template without being in Emacs. 7781 7782 **** New option [[doc::org-capture-templates-contexts][org-capture-templates-contexts]] 7783 7784 Setting this option allows you to define specific context where 7785 capture templates should be available from. For example, when 7786 set to this value 7787 7788 #+BEGIN_SRC emacs-lisp 7789 (setq org-capture-templates-contexts 7790 '(("c" (in-mode . "message-mode")))) 7791 #+END_SRC 7792 7793 then the =c= capture template will only be available from 7794 =message-mode= buffers. See the docstring and the manual for 7795 more details on how to use this. 7796 7797 **** New =%l= template to insert the literal link 7798 **** New option [[doc::org-capture-bookmark][org-capture-bookmark]] 7799 7800 Org used to automatically add a bookmark with capture a note. 7801 You can now turn this on by setting [[doc::org-capture-bookmark][org-capture-bookmark]] to 7802 =nil=. 7803 7804 **** Expand =%<num>= escape sequences into text entered for <num>'th =%^{PROMPT}= escape 7805 7806 See the manual for more explanations. 7807 7808 **** More control over empty lines 7809 7810 You can use =:empty-lines-before= and =:empty-lines-after= to 7811 control the insertion of empty lines. Check the manual for more 7812 explanations. 7813 7814 **** New hook [[doc::org-capture-prepare-finalize-hook][org-capture-prepare-finalize-hook]] 7815 7816 This new hook runs before the finalization process starts. 7817 7818 *** Org Export 7819 7820 **** New functions =orgtbl-to-table.el= and =orgtbl-to-unicode= 7821 7822 =orgtbl-to-table.el= convert the table to a =table.el= table, and 7823 =orgtbl-to-unicode= will use =ascii-art-to-unicode.el= (when 7824 available) to print beautiful tables. 7825 7826 **** [[doc::org-table-export][org-table-export]] now a bit clever about the target format 7827 7828 When you specify a file name like =table.csv=, [[doc::org-table-export][org-table-export]] 7829 will now suggest =orgtbl-to-csv= the default method for exporting 7830 the table. 7831 7832 **** New option [[doc::org-export-date-timestamp-format][org-export-date-timestamp-format]] 7833 7834 The option allows to set a time string format for Org timestamps 7835 in the #+DATE option. 7836 7837 **** LaTeX: New options for exporting table rules :tstart, :hline and :tend 7838 7839 See [[doc::org-export-latex-tables-hline][org-export-latex-tables-hline]] and [[doc::org-export-latex-tables-tend][org-export-latex-tables-tend]]. 7840 7841 **** LaTeX: You can now set =:hfmt= from =#+ATTR_LaTeX= 7842 **** Beamer: Add support and keybinding for the =exampleblock= environment 7843 7844 Add support for these languages in [[doc::org-export-language-setup][org-export-language-setup]]. 7845 More languages are always welcome. 7846 7847 **** Beamer: New option [[doc::org-beamer-inherited-properties][org-beamer-inherited-properties]] 7848 7849 This option allows Beamer export to inherit some properties. 7850 Thanks to Carsten for implementing this. 7851 7852 **** ODT: Add support for ODT export in org-bbdb.el 7853 **** ODT: Add support for indented tables (see [[https://orgmode.org/cgit.cgi/org-mode.git/commit/?id=e9fd33][this commit]] for details) 7854 **** ODT: Improve the conversion from ODT to other formats 7855 **** ASCII: Swap the level-1/level-2 characters to underline the headlines 7856 **** Support for Chinese, simplified Chinese, Russian, Ukrainian and Japanese 7857 **** HTML: New option [[doc::org-export-html-date-format-string][org-export-html-date-format-string]] 7858 7859 Format string to format the date and time in HTML export. Thanks 7860 to Sébastien Vauban for this patch. 7861 7862 *** Org Babel 7863 7864 **** New =:results drawer= parameter 7865 7866 =:results drawer= replaces =:results wrap=, which is deprecated but still 7867 supported. 7868 7869 **** =:results org= now put results in a =#+BEGIN_SRC org= block 7870 7871 =:results org= used to put results in a =#+BEGIN_ORG= block but it now puts 7872 results in a =#+BEGIN_SRC org= block, with comma-escaped lines. 7873 7874 =#+BEGIN_ORG= blocks are obsolete. 7875 7876 **** Exporting =#+BEGIN_SRC org= blocks exports the code 7877 7878 It used to exports the results of the code. 7879 7880 *** Miscellaneous 7881 7882 **** New menu entry for [[doc::org-refile][org-refile]] 7883 **** Allow capturing to encrypted entries 7884 7885 If you capture to an encrypted entry, it will be decrypted before 7886 inserting the template then re-encrypted after finalizing the capture. 7887 7888 **** Inactive timestamps are now handled in tables 7889 7890 Calc can do computation on active time-stamps like <2012-09-29 sat.>. 7891 Inactive time-stamps in a table's cell are now internally deactivated so 7892 that Calc formulas can operate on them. 7893 7894 **** [[doc::org-table-number-regexp][org-table-number-regexp]] can now accept comma as decimal mark 7895 **** Org allows a new property =APPT_WARNTIME= 7896 7897 You can set it with the =W= speedy key or set it manually. When 7898 set, exporting to iCalendar and [[doc::org-agenda-to-appt][org-agenda-to-appt]] will use the 7899 value of this property as the number of minutes for the warning 7900 alarm. 7901 7902 **** New command [[doc::org-inc-effort][org-inc-effort]] 7903 7904 This will increment the effort value. 7905 7906 It is bound to =C-c C-x E= and to =E= as a speedy command. 7907 7908 **** Attach: Add support for creating symbolic links 7909 7910 =org-attach-method= now supports a new method =lns=, allowing to 7911 attach symbolic links. 7912 7913 **** Archive: you can now archive to a datetree 7914 7915 **** New option [[doc::org-inlinetask-show-first-star][org-inlinetask-show-first-star]] 7916 7917 =Non-nil= means display the first star of an inline task as 7918 additional marker. When =nil=, the first star is not shown. 7919 7920 **** New option [[doc::org-latex-preview-ltxpng-directory][org-latex-preview-ltxpng-directory]] 7921 7922 This lets you define the path for the =ltxpng/= directory. 7923 7924 **** You can now use imagemagick instead of dvipng to preview LaTeX fragments 7925 **** You can now turn off [[doc::orgstruct++-mode][orgstruct++-mode]] safely 7926 **** =C-u C-c C-c= on list items to add check boxes 7927 7928 =C-u C-c C-c= will add an empty check box on a list item. 7929 7930 When hit from the top of the list, it will add check boxes for 7931 all top level list items. 7932 7933 **** =org-list-ending-method= and =org-list-end-regexp= are now obsolete 7934 7935 Fall back on using =org-list-end-re= only, which see. 7936 7937 **** org-feed.el now expands =%(sexp)= templates 7938 **** New option [[doc::org-protocol-data-separator][org-protocol-data-separator]] 7939 7940 **** New option [[doc::org-ditaa-jar-option][org-ditaa-jar-option]] to specify the ditaa jar file 7941 7942 **** New possible value for [[doc::org-loop-over-headlines-in-active-region][org-loop-over-headlines-in-active-region]] 7943 7944 When [[doc::org-loop-over-headlines-in-active-region][org-loop-over-headlines-in-active-region]] is set to 7945 =start-level=, the command will loop over the active region but 7946 will only act upon entries that are of the same level than the 7947 first headline in the region. 7948 7949 **** New option [[doc::org-habit-show-all-today][org-habit-show-all-today]] 7950 7951 When set to =t=, show all (even unscheduled) habits on today's 7952 agenda. 7953 7954 ** Important bug fixes 7955 7956 *** M-TAB on options keywords perform completion correctly again 7957 7958 If you hit =M-TAB= on keywords like =#+TITLE=, Org will try to 7959 perform completion with meaningful values. 7960 7961 *** Add licenses to javascript embedded and external code snippets 7962 7963 Embedded javascript code produced when exporting an Org file to 7964 HTML is now licensed under GPLv3 (or later), and the copyright is 7965 owned by the Free Software Foundation, Inc. 7966 7967 The javascript code for embedding MathJax in the browser mentions 7968 the MathJax copyright and the Apache 2.0 license. 7969 7970 The javascript code for embedding =org-injo.js= in the browser 7971 mentions the copyright of Sebastian Rose and the GPLv3 (or later) 7972 license. 7973 7974 =org-export-html-scripts= is now a variable, so that you can adapt 7975 the code and the license to your needs. 7976 7977 See https://www.gnu.org/philosophy/javascript-trap.html for 7978 explanations on why these changes were necessary. 7979 7980 * Version 7.8.11 7981 7982 ** Incompatible changes 7983 7984 *** Emacs 21 support has been dropped 7985 7986 Do not use Org mode 7.xx with Emacs 21, use [[https://orgmode.org/org-6.36c.zip][version 6.36c]] instead. 7987 7988 *** XEmacs support requires the XEmacs development version 7989 7990 To use Org mode 7.xx with XEmacs, you need to run the developer 7991 version of XEmacs. We were about to drop XEmacs support entirely, 7992 but Michael Sperber stepped in and made changes to XEmacs that 7993 made it easier to keep the support. Thanks to Michael for this 7994 last-minute save. 7995 7996 *** New keys for TODO sparse trees 7997 7998 The key =C-c C-v= is now reserved for Org Babel action. TODO 7999 sparse trees can still be made with =C-c / t= (all not-done 8000 states) and =C-c / T= (specific states). 8001 8002 *** The Agenda =org-agenda-ndays= is now obsolete 8003 8004 The variable =org-agenda-ndays= is obsolete - please use 8005 =org-agenda-span= instead. 8006 8007 Thanks to Julien Danjou for this. 8008 8009 *** Changes to the intended use of =org-export-latex-classes= 8010 8011 So far this variable has been used to specify the complete header 8012 of the LaTeX document, including all the =\usepackage= calls 8013 necessary for the document. This setup makes it difficult to 8014 maintain the list of packages that Org itself would like to call, 8015 for example for the special symbol support it needs. 8016 8017 First of all, you can *opt out of this change* in the following 8018 way: You can say: /I want to have full control over headers, and I 8019 will take responsibility to include the packages Org needs/. If 8020 that is what you want, add this to your configuration and skip the 8021 rest of this section (except maybe for the description of the 8022 =[EXTRA]= place holder): 8023 8024 #+begin_src emacs-lisp 8025 (setq org-export-latex-default-packages-alist nil 8026 org-export-latex-packages-alist nil) 8027 #+end_src 8028 8029 /Continue to read here if you want to go along with the modified 8030 setup./ 8031 8032 There are now two variables that should be used to list the LaTeX 8033 packages that need to be included in all classes. The header 8034 definition in =org-export-latex-classes= should then not contain 8035 the corresponding =\usepackage= calls (see below). 8036 8037 The two new variables are: 8038 8039 1. =org-export-latex-default-packages-alist= :: This is the 8040 variable where Org-mode itself puts the packages it needs. 8041 Normally you should not change this variable. The only 8042 reason to change it anyway is when one of these packages 8043 causes a conflict with another package you want to use. Then 8044 you can remove that packages and hope that you are not using 8045 Org-mode functionality that needs it. 8046 8047 2. =org-export-latex-packages-alist= :: This is the variable where 8048 you can put the packages that you'd like to use across all 8049 classes. 8050 8051 The sequence how these customizations will show up in the LaTeX 8052 document are: 8053 8054 1. Header from =org-export-latex-classes= 8055 2. =org-export-latex-default-packages-alist= 8056 3. =org-export-latex-packages-alist= 8057 4. Buffer-specific things set with =#+LaTeX_HEADER:= 8058 8059 If you want more control about which segment is placed where, or 8060 if you want, for a specific class, have full control over the 8061 header and exclude some of the automatic building blocks, you can 8062 put the following macro-like place holders into the header: 8063 8064 #+begin_example 8065 [DEFAULT-PACKAGES] \usepackage statements for default packages 8066 [NO-DEFAULT-PACKAGES] do not include any of the default packages 8067 [PACKAGES] \usepackage statements for packages 8068 [NO-PACKAGES] do not include the packages 8069 [EXTRA] the stuff from #+LaTeX_HEADER 8070 [NO-EXTRA] do not include #+LaTeX_HEADER stuff 8071 #+end_example 8072 8073 If you have currently customized =org-export-latex-classes=, you 8074 should revise that customization and remove any package calls that 8075 are covered by =org-export-latex-default-packages-alist=. This 8076 applies to the following packages: 8077 8078 - inputenc 8079 - fontenc 8080 - fixltx2e 8081 - graphicx 8082 - longtable 8083 - float 8084 - wrapfig 8085 - soul 8086 - t1enc 8087 - textcomp 8088 - marvosym 8089 - wasysym 8090 - latexsym 8091 - amssymb 8092 - hyperref 8093 8094 If one of these packages creates a conflict with another package 8095 you are using, you can remove it from 8096 =org-export-latex-default-packages-alist=. But then you risk that 8097 some of the advertised export features of Org will not work 8098 properly. 8099 8100 You can also consider moving packages that you use in all classes 8101 to =org-export-latex-packages-alist=. If necessary, put the place 8102 holders so that the packages get loaded in the right sequence. As 8103 said above, for backward compatibility, if you omit the place 8104 holders, all the variables will dump their content at the end of 8105 the header. 8106 8107 *** The constant =org-html-entities= is obsolete 8108 8109 Its content is now part of the new constant =org-entities=, which 8110 is defined in the file org-entities.el. =org-html-entities= was 8111 an internal variable, but it is possible that some users did write 8112 code using it. 8113 8114 *** =org-bbdb-anniversary-format-alist= has changed 8115 8116 Please check the docstring and update your settings accordingly. 8117 8118 *** Deleted =org-mode-p= 8119 8120 This function has been deleted: please update your code. 8121 8122 ** Important new features 8123 8124 *** New Org to ODT exporter 8125 8126 Jambunathan's Org to ODT exporter is now part of Org. 8127 8128 To use it, it `C-c C-e o' in an Org file. See the documentation 8129 for more information on how to customize it. 8130 8131 *** org-capture.el is now the default capture system 8132 8133 This replaces the earlier system org-remember. The manual only 8134 describes org-capture, but for people who prefer to continue to 8135 use org-remember, we keep a static copy of the former manual 8136 section [[https://orgmode.org/org-remember.pdf][chapter about remember]]. 8137 8138 The new system has a technically cleaner implementation and more 8139 possibilities for capturing different types of data. See 8140 [[msg:C46F10DC-DE51-43D4-AFFE-F71E440D1E1F@gmail.com][Carsten's announcement]] for more details. 8141 8142 To switch over to the new system: 8143 8144 1. Run 8145 8146 : M-x org-capture-import-remember-templates RET 8147 8148 to get a translated version of your remember templates into the 8149 new variable =org-capture-templates=. This will "mostly" work, 8150 but maybe not for all cases. At least it will give you a good 8151 place to modify your templates. After running this command, 8152 enter the customize buffer for this variable with 8153 8154 : M-x customize-variable RET org-capture-templates RET 8155 8156 and convince yourself that everything is OK. Then save the 8157 customization. 8158 8159 2. Bind the command =org-capture= to a key, similar to what you did 8160 with org-remember: 8161 8162 : (define-key global-map "\C-cc" 'org-capture) 8163 8164 If your fingers prefer =C-c r=, you can also use this key once 8165 you have decided to move over completely to the new 8166 implementation. During a test time, there is nothing wrong 8167 with using both system in parallel. 8168 8169 ** New libraries 8170 8171 *** New Org libraries 8172 **** org-eshell.el (Konrad Hinsen) 8173 8174 Implement links to eshell buffers. 8175 8176 **** org-special-blocks (Carsten Dominik) 8177 8178 This package generalizes the #+begin_foo and #+end_foo tokens. 8179 8180 To use, put the following in your init file: 8181 8182 #+BEGIN_EXAMPLE 8183 (require 'org-special-blocks) 8184 #+END_EXAMPLE 8185 8186 The tokens #+begin_center, #+begin_verse, etc. existed 8187 previously. This package generalizes them (at least for the 8188 LaTeX and html exporters). When a #+begin_foo token is 8189 encountered by the LaTeX exporter, it is expanded 8190 into \begin{foo}. The text inside the environment is not 8191 protected, as text inside environments generally is. 8192 When #+begin_foo is encountered by the html exporter, a div with 8193 class foo is inserted into the HTML file. It is up to the user 8194 to add this class to his or her stylesheet if this div is to mean 8195 anything. 8196 8197 **** org-taskjuggler.el (Christian Egli) 8198 8199 Christian Egli's /org-taskjuggler.el/ module is now part of Org. 8200 He also wrote a [[https://orgmode.org/worg/org-tutorials/org-taskjuggler.php][tutorial]] for it. 8201 8202 **** org-ctags.el (Paul Sexton) 8203 8204 Targets like =<<my target>>= can now be found by Emacs's etag 8205 functionality, and Org-mode links can be used to link to 8206 etags, also in non-Org-mode files. For details, see the file 8207 /org-ctags.el/. 8208 8209 This feature uses a new hook =org-open-link-functions= which will 8210 call function to do something special with text links. 8211 8212 Thanks to Paul Sexton for this contribution. 8213 8214 **** org-docview.el (Jan Böcker) 8215 8216 This new module allows links to various file types using docview, where 8217 Emacs displays images of document pages. Docview link types can point 8218 to a specific page in a document, for example to page 131 of the 8219 Org-mode manual: 8220 8221 : [[docview:~/.elisp/org/doc/org.pdf::131][Org-Mode Manual]] 8222 8223 Thanks to Jan Böcker for this contribution. 8224 8225 *** New Babel libraries 8226 8227 - ob-picolisp.el (Thorsten Jolitz) 8228 - ob-fortran.el (Sergey Litvinov) 8229 - ob-shen.el (Eric Schulte) 8230 - ob-maxima.el (Eric S Fraga) 8231 - ob-java.el (Eric Schulte) 8232 - ob-lilypond.el (Martyn Jago) 8233 - ob-awk.el (Eric Schulte) 8234 8235 ** Other new features and various enhancements 8236 8237 *** Hyperlinks 8238 8239 **** Org-BibTeX -- major improvements 8240 8241 Provides support for managing bibtex bibliographical references 8242 data in headline properties. Each headline corresponds to a 8243 single reference and the relevant bibliographic meta-data is 8244 stored in headline properties, leaving the body of the headline 8245 free to hold notes and comments. Org-bibtex is aware of all 8246 standard bibtex reference types and fields. 8247 8248 The key new functions are 8249 8250 - org-bibtex-check :: queries the user to flesh out all required 8251 (and with prefix argument optional) bibtex fields available 8252 for the specific reference =type= of the current headline. 8253 8254 - org-bibtex-create :: Create a new entry at the given level, 8255 using org-bibtex-check to flesh out the relevant fields. 8256 8257 - org-bibtex-yank :: Yank a bibtex entry on the kill ring as a 8258 formatted Org-mode headline into the current buffer 8259 8260 - org-bibtex-export-to-kill-ring :: Export the current headline 8261 to the kill ring as a formatted bibtex entry. 8262 8263 **** org-gnus.el now allows link creation from messages 8264 8265 You can now create links from messages. This is particularly 8266 useful when the user wants to stored messages that he sends, for 8267 later check. Thanks to Ulf Stegemann for the patch. 8268 8269 **** Modified link escaping 8270 8271 David Maus worked on `org-link-escape'. See [[msg:87k4gysacq.wl%dmaus@ictsoc.de][his message]]: 8272 8273 : Percent escaping is used in Org mode to escape certain characters 8274 : in links that would either break the parser (e.g. square brackets 8275 : in link target or description) or are not allowed to appear in 8276 : a particular link type (e.g. non-ascii characters in a http: 8277 : link). 8278 : 8279 : With this change in place Org will apply percent escaping and 8280 : unescaping more consistently especially for non-ascii characters. 8281 : Additionally some of the outstanding bugs or glitches concerning 8282 : percent escaped links are solved. 8283 8284 Thanks a lot to David for this work. 8285 8286 **** Make =org-store-link= point to directory in a dired buffer 8287 8288 When, in a dired buffer, the cursor is not in a line listing a 8289 file, `org-store-link' will store a link to the directory. 8290 8291 Patch by Stephen Eglen. 8292 8293 **** Allow regexps in =org-file-apps= to capture link parameters 8294 8295 The way extension regexps in =org-file-apps= are handled has 8296 changed. Instead of matching against the file name, the regexps 8297 are now matched against the whole link, and you can use grouping 8298 to extract link parameters which you can then use in a command 8299 string to be executed. 8300 8301 For example, to allow linking to PDF files using the syntax 8302 =file:/doc.pdf::<page number>=, you can add the following entry 8303 to org-file-apps: 8304 8305 #+begin_example 8306 Extension: \.pdf::\([0-9]+\)\' 8307 Command: evince "%s" -p %1 8308 #+end_example 8309 8310 Thanks to Jan Böcker for a patch to this effect. 8311 8312 *** Dates and time 8313 8314 **** Allow relative time when scheduling/adding a deadline 8315 8316 You can now use relative duration strings like "-2d" or "++3w" 8317 when calling =org-schedule= or =org-deadline=: it will schedule 8318 (or set the deadline for) the item respectively two days before 8319 today and three weeks after the current timestamp, if any. 8320 8321 You can use this programmatically: =(org-schedule nil "+2d")= 8322 will work on the current entry. 8323 8324 You can also use this while (bulk-)rescheduling and 8325 (bulk-)resetting the deadline of (several) items from the agenda. 8326 8327 Thanks to Memnon Anon for a heads up about this! 8328 8329 **** American-style dates are now understood by =org-read-date= 8330 8331 So when you are prompted for a date, you can now answer like this 8332 8333 #+begin_example 8334 2/5/3 --> 2003-02-05 8335 2/5 --> <CURRENT-YEAR>-02-05 8336 #+end_example 8337 8338 *** Agenda 8339 8340 **** =org-agenda-custom-commands= has a default value 8341 8342 This option used to be `nil' by default. This now has a default 8343 value, displaying an agenda and all TODOs. See the docstring for 8344 details. Thanks to Carsten for this. 8345 8346 **** Improved filtering through =org-agenda-to-appt= 8347 8348 The new function allows the user to refine the scope of entries 8349 to pass to =org-agenda-get-day-entries= and allows to filter out 8350 entries using a function. 8351 8352 Thanks to Peter Münster for raising a related issue and to 8353 Tassilo Horn for this idea. Also thanks to Peter Münster for 8354 [[git:68ffb7a7][fixing a small bug]] in the final implementation. 8355 8356 **** Allow ap/pm times in agenda time grid 8357 8358 Times in the agenda can now be displayed in am/pm format. See 8359 the new variable =org-agenda-timegrid-use-ampm=. Thanks to 8360 C. A. Webber for a patch to this effect. 8361 8362 **** Agenda: Added a bulk "scattering" command 8363 8364 =B S= in the agenda buffer will cause tasks to be rescheduled a 8365 random number of days into the future, with 7 as the default. 8366 This is useful if you've got a ton of tasks scheduled for today, 8367 you realize you'll never deal with them all, and you just want 8368 them to be distributed across the next N days. When called with 8369 a prefix arg, rescheduling will avoid weekend days. 8370 8371 Thanks to John Wiegley for this. 8372 8373 *** Exporting 8374 8375 **** Simplification of org-export-html-preamble/postamble 8376 8377 When set to `t', export the preamble/postamble as usual, honoring 8378 the =org-export-email/author/creator-info= variables. 8379 8380 When set to a formatting string, insert this string. See the 8381 docstring of these variable for details about available 8382 %-sequences. 8383 8384 You can set =:html-preamble= in publishing project in the same 8385 way: `t' means to honor =:email/creator/author-info=, and a 8386 formatting string will insert a string. 8387 8388 **** New exporters to Latin-1 and UTF-8 8389 8390 While Ulf Stegemann was going through the entities list to 8391 improve the LaTeX export, he had the great idea to provide 8392 representations for many of the entities in Latin-1, and for all 8393 of them in UTF-8. This means that we can now export files rich 8394 in special symbols to Latin-1 and to UTF-8 files. These new 8395 exporters can be reached with the commands =C-c C-e n= and =C-c 8396 C-e u=, respectively. 8397 8398 When there is no representation for a given symbol in the 8399 targeted coding system, you can choose to keep the TeX-macro-like 8400 representation, or to get an "explanatory" representation. For 8401 example, =\simeq= could be represented as "[approx. equal to]". 8402 Please use the variable =org-entities-ascii-explanatory= to state 8403 your preference. 8404 8405 **** HTML export: Add class to outline containers using property 8406 8407 The =HTML_CONTAINER_CLASS= property can now be used to add a 8408 class name to the outline container of a node in HTML export. 8409 8410 **** Throw an error when creating an image from a LaTeX snippet fails 8411 8412 This behavior can be configured with the new option variable 8413 =org-format-latex-signal-error=. 8414 8415 **** Support for creating BEAMER presentations from Org-mode documents 8416 8417 Org-mode documents or subtrees can now be converted directly in 8418 to BEAMER presentation. Turning a tree into a simple 8419 presentations is straight forward, and there is also quite some 8420 support to make richer presentations as well. See the [[https://orgmode.org/manual/Beamer-class-export.html#Beamer-class-export][BEAMER 8421 section]] in the manual for more details. 8422 8423 Thanks to everyone who has contributed to the discussion about 8424 BEAMER support and how it should work. This was a great example 8425 for how this community can achieve a much better result than any 8426 individual could. 8427 8428 *** Refiling 8429 8430 **** Refile targets can now be cached 8431 8432 You can turn on caching of refile targets by setting the variable 8433 =org-refile-use-cache=. This should speed up refiling if you 8434 have many eligible targets in many files. If you need to update 8435 the cache because Org misses a newly created entry or still 8436 offers a deleted one, press =C-0 C-c C-w=. 8437 8438 **** New logging support for refiling 8439 8440 Whenever you refile an item, a time stamp and even a note can be 8441 added to this entry. For details, see the new option 8442 =org-log-refile=. 8443 8444 Thanks to Charles Cave for this idea. 8445 8446 *** Completion 8447 8448 **** In-buffer completion is now done using John Wiegley's pcomplete.el 8449 8450 Thanks to John Wiegley for much of this code. 8451 8452 *** Tables 8453 8454 **** New command =org-table-transpose-table-at-point= 8455 8456 See the docstring. This hack from Juan Pechiar is now part of 8457 Org's core. Thanks to Juan! 8458 8459 **** Display field's coordinates when editing it with =C-c `= 8460 8461 When editing a field with =C-c `=, the field's coordinate will 8462 the displayed in the buffer. 8463 8464 Thanks to Michael Brand for a patch to this effect. 8465 8466 **** Spreadsheet computation of durations and time values 8467 8468 If you want to compute time values use the =T= flag, either in 8469 Calc formulas or Elisp formulas: 8470 8471 | Task 1 | Task 2 | Total | 8472 |--------+--------+---------| 8473 | 35:00 | 35:00 | 1:10:00 | 8474 #+TBLFM: @2$3=$1+$2;T 8475 8476 Values must be of the form =[HH:]MM:SS=, where hours are 8477 optional. 8478 8479 Thanks to Martin Halder, Eric Schulte and Carsten for code and 8480 feedback on this. 8481 8482 **** Implement formulas applying to field ranges 8483 8484 Carsten implemented this field-ranges formulas. 8485 8486 : A frequently requested feature for tables has been to be able to define 8487 : row formulas in a way similar to column formulas. The patch below allows 8488 : things like 8489 : 8490 : @3= 8491 : @2$2..@5$7= 8492 : @I$2..@II$4= 8493 : 8494 : as the left hand side for table formulas in order to write a formula that 8495 : is valid for an entire column or for a rectangular section in a 8496 : table. 8497 8498 Thanks a lot to Carsten for this. 8499 8500 **** Sending radio tables from org buffers is now allowed 8501 8502 Org radio tables can no also be sent inside Org buffers. Also, 8503 there is a new hook which get called after a table has been sent. 8504 8505 Thanks to Seweryn Kokot. 8506 8507 *** Lists 8508 8509 **** Improved handling of lists 8510 8511 Nicolas Goaziou extended and improved the way Org handles lists. 8512 8513 1. Indentation of text determines again end of items in 8514 lists. So, some text less indented than the previous item 8515 doesn't close the whole list anymore, only all items more 8516 indented than it. 8517 8518 2. Alphabetical bullets are implemented, through the use of the 8519 variable `org-alphabetical-lists'. This also adds alphabetical 8520 counters like [@c] or [@W]. 8521 8522 3. Lists can now safely contain drawers, inline tasks, or various 8523 blocks, themselves containing lists. Two variables are 8524 controlling this: `org-list-forbidden-blocks', and 8525 `org-list-export-context'. 8526 8527 4. Improve `newline-and-indent' (C-j): used in an item, it will 8528 keep text from moving at column 0. This allows to split text 8529 and make paragraphs and still not break the list. 8530 8531 5. Improve `org-toggle-item' (C-c -): used on a region with 8532 standard text, it will change the region into one item. With a 8533 prefix argument, it will fallback to the previous behavior and 8534 make every line in region an item. It permits to easily 8535 integrate paragraphs inside a list. 8536 8537 6. `fill-paragraph' (M-q) now understands lists. It can freely be 8538 used inside items, or on text just after a list, even with no 8539 blank line around, without breaking list structure. 8540 8541 Thanks a lot to Nicolas for all this! 8542 8543 *** Inline display of linked images 8544 8545 Images can now be displayed inline. The key C-c C-x C-v does 8546 toggle the display of such images. Note that only image links 8547 that have no description part will be inlined. 8548 8549 *** Implement offsets for ordered lists 8550 8551 If you want to start an ordered plain list with a number different 8552 from 1, you can now do it like this: 8553 8554 : 1. [@start:12] will star a lit a number 12 8555 8556 *** Babel: code block body expansion for table and preview 8557 8558 In org-babel, code is "expanded" prior to evaluation. I.e. the 8559 code that is actually evaluated comprises the code block contents, 8560 augmented with the extra code which assigns the referenced data to 8561 variables. It is now possible to preview expanded contents, and 8562 also to expand code during tangling. This expansion takes 8563 into account all header arguments, and variables. 8564 8565 A new keybinding `C-c M-b p' bound to `org-babel-expand-src-block' 8566 can be used from inside of a source code block to preview its 8567 expanded contents (which can be very useful for debugging). 8568 tangling 8569 8570 The expanded body can now be tangled, this includes variable 8571 values which may be the results of other source-code blocks, or 8572 stored in headline properties or tables. One possible use for this 8573 is to allow those using org-babel for their emacs initialization 8574 to store values (e.g. usernames, passwords, etc...) in headline 8575 properties or in tables. 8576 8577 Org-babel now supports three new header arguments, and new default 8578 behavior for handling horizontal lines in tables (hlines), column 8579 names, and rownames across all languages. 8580 8581 *** Editing Convenience and Appearance 8582 8583 **** New command =org-copy-visible= (=C-c C-x v=) 8584 8585 This command will copy the visible text in the region into the 8586 kill ring. Thanks to Florian Beck for this function and to 8587 Carsten for adding it to org.el and documenting it! 8588 8589 **** Make it possible to protect hidden subtrees from being killed by =C-k= 8590 8591 See the new variable =org-ctrl-k-protect-subtree=. This was a 8592 request by Scott Otterson. 8593 8594 **** Implement pretty display of entities, sub-, and superscripts. 8595 8596 The command =C-c C-x \= toggles the display of Org's special 8597 entities like =\alpha= as pretty unicode characters. Also, sub 8598 and superscripts are displayed in a pretty way (raised/lower 8599 display, in a smaller font). If you want to exclude sub- and 8600 superscripts, see the variable 8601 =org-pretty-entities-include-sub-superscripts=. 8602 8603 Thanks to Eric Schulte and Ulf Stegeman for making this possible. 8604 8605 **** New faces for title, date, author and email address lines 8606 8607 The keywords in these lines are now dimmed out, and the title is 8608 displayed in a larger font, and a special font is also used for 8609 author, date, and email information. This is implemented by the 8610 following new faces: 8611 8612 =org-document-title= 8613 =org-document-info= 8614 =org-document-info-keyword= 8615 8616 In addition, the variable =org-hidden-keywords= can be used to 8617 make the corresponding keywords disappear. 8618 8619 Thanks to Dan Davison for this feature. 8620 8621 **** Simpler way to specify faces for tags and todo keywords 8622 8623 The variables =org-todo-keyword-faces=, =org-tag-faces=, and 8624 =org-priority-faces= now accept simple color names as 8625 specifications. The colors will be used as either foreground or 8626 background color for the corresponding keyword. See also the 8627 variable =org-faces-easy-properties=, which governs which face 8628 property is affected by this setting. 8629 8630 This is really a great simplification for setting keyword faces. 8631 The change is based on an idea and patch by Ryan Thompson. 8632 8633 **** <N> in tables now means fixed width, not maximum width 8634 8635 Requested by Michael Brand. 8636 8637 **** Better level cycling function 8638 8639 =TAB= in an empty headline cycles the level of that headline 8640 through likely states. Ryan Thompson implemented an improved 8641 version of this function, which does not depend upon when exactly 8642 this command is used. Thanks to Ryan for this improvement. 8643 8644 **** Adaptive filling 8645 8646 For paragraph text, =org-adaptive-fill-function= did not handle 8647 the base case of regular text which needed to be filled. This is 8648 now fixed. Among other things, it allows email-style ">" 8649 comments to be filled correctly. 8650 8651 Thanks to Dan Hackney for this patch. 8652 8653 **** `org-reveal' (=C-c C-r=) also decrypts encrypted entries (org-crypt.el) 8654 8655 Thanks to Richard Riley for triggering this change. 8656 8657 **** Better automatic letter selection for TODO keywords 8658 8659 When all first letters of keywords have been used, Org now 8660 assigns more meaningful characters based on the keywords. 8661 8662 Thanks to Mikael Fornius for this patch. 8663 8664 *** Clocking 8665 8666 **** Clock: Allow synchronous update of timestamps in CLOCK log 8667 8668 Using =S-M-<up/down>= on CLOCK log timestamps will 8669 increase/decrease the two timestamps on this line so that 8670 duration will keep the same. Note that duration can still be 8671 slightly modified in case a timestamp needs some rounding. 8672 8673 Thanks to Rainer Stengele for this idea. 8674 8675 **** Localized clock tables 8676 8677 Clock tables now support a new =:lang= parameter, allowing 8678 the user to customize the localization of the table headers. See 8679 the variable =org-clock-clocktable-language-setup= which controls 8680 available translated strings. 8681 8682 **** Show clock overruns in mode line 8683 8684 When clocking an item with a planned effort, overrunning the 8685 planned time is now made visible in the mode line, for example 8686 using the new face =org-mode-line-clock-overrun=, or by adding an 8687 extra string given by =org-task-overrun-text=. 8688 8689 Thanks to Richard Riley for a patch to this effect. 8690 8691 **** Clock reports can now include the running, incomplete clock 8692 8693 If you have a clock running, and the entry being clocked falls 8694 into the scope when creating a clock table, the time so far spent 8695 can be added to the total. This behavior depends on the setting 8696 of =org-clock-report-include-clocking-task=. The default is 8697 =nil=. 8698 8699 Thanks to Bernt Hansen for this useful addition. 8700 8701 *** Misc 8702 8703 **** Improvements with inline tasks and indentation 8704 8705 There is now a configurable way on how to export inline tasks. 8706 See the new variable =org-inlinetask-export-templates=. 8707 8708 Thanks to Nicolas Goaziou for coding these changes. 8709 8710 **** A property value of =nil= now means to unset a property 8711 8712 This can be useful in particular with property inheritance, if 8713 some upper level has the property, and some grandchild of it 8714 would like to have the default settings (i.e. not overruled by a 8715 property) back. 8716 8717 Thanks to Robert Goldman and Bernt Hansen for suggesting this 8718 change. 8719 8720 **** New helper functions in org-table.el 8721 8722 There are new functions to access and write to a specific table field. 8723 This is for hackers, and maybe for the org-babel people. 8724 8725 #+begin_example 8726 org-table-get 8727 org-table-put 8728 org-table-current-line 8729 org-table-goto-line 8730 #+end_example 8731 8732 **** Archiving: Allow to reverse order in target node 8733 8734 The new option =org-archive-reversed-order= allows to have 8735 archived entries inserted in a last-on-top fashion in the target 8736 node. 8737 8738 This was requested by Tom. 8739 8740 **** Org-reveal: Double prefix arg shows the entire subtree of the parent 8741 8742 This can help to get out of an inconsistent state produced for 8743 example by viewing from the agenda. 8744 8745 This was a request by Matt Lundin. 8746 8747 * License 8748 8749 This file is part of GNU Emacs. 8750 8751 GNU Emacs is free software: you can redistribute it and/or modify 8752 it under the terms of the GNU General Public License as published by 8753 the Free Software Foundation, either version 3 of the License, or 8754 (at your option) any later version. 8755 8756 GNU Emacs is distributed in the hope that it will be useful, 8757 but WITHOUT ANY WARRANTY; without even the implied warranty of 8758 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 8759 GNU General Public License for more details. 8760 8761 You should have received a copy of the GNU General Public License 8762 along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.