aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2023-03-19 07:57:40 +0200
committerEli Zaretskii2023-03-19 07:57:40 +0200
commit6674c362ad94373dacd22b7fd426406539e8d957 (patch)
tree6b4f908d9ddb72e21ac4c8c271072654e99dd399
parentea0949853f8bdbe3292cbfd9c6c16a073e979e3e (diff)
parent829e5dfabea9fd22b1bb04f5f388c0c52b984606 (diff)
downloademacs-6674c362ad94373dacd22b7fd426406539e8d957.tar.gz
emacs-6674c362ad94373dacd22b7fd426406539e8d957.zip
Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/emacs into emacs-29
-rw-r--r--admin/notes/tree-sitter/starter-guide157
-rw-r--r--etc/ORG-NEWS6
-rw-r--r--lisp/org/ob-latex.el17
-rw-r--r--lisp/org/ol-bibtex.el22
-rw-r--r--lisp/org/org-agenda.el2
-rw-r--r--lisp/org/org-element.el4
-rw-r--r--lisp/org/org-persist.el8
-rw-r--r--lisp/org/org-src.el2
-rw-r--r--lisp/org/org-version.el2
-rw-r--r--lisp/org/ox-ascii.el4
-rw-r--r--lisp/org/ox-html.el4
-rw-r--r--lisp/org/ox-latex.el6
-rw-r--r--lisp/org/ox-md.el4
-rw-r--r--lisp/org/ox-odt.el4
14 files changed, 121 insertions, 121 deletions
diff --git a/admin/notes/tree-sitter/starter-guide b/admin/notes/tree-sitter/starter-guide
index b8910aab5ca..846614f1446 100644
--- a/admin/notes/tree-sitter/starter-guide
+++ b/admin/notes/tree-sitter/starter-guide
@@ -17,6 +17,7 @@ TOC:
17- More features? 17- More features?
18- Common tasks (code snippets) 18- Common tasks (code snippets)
19- Manual 19- Manual
20- Appendix 1
20 21
21* Building Emacs with tree-sitter 22* Building Emacs with tree-sitter
22 23
@@ -42,11 +43,9 @@ You can use this script that I put together here:
42 43
43 https://github.com/casouri/tree-sitter-module 44 https://github.com/casouri/tree-sitter-module
44 45
45You can also find them under this directory in /build-modules.
46
47This script automatically pulls and builds language definitions for C, 46This script automatically pulls and builds language definitions for C,
48C++, Rust, JSON, Go, HTML, JavaScript, CSS, Python, Typescript, 47C++, Rust, JSON, Go, HTML, JavaScript, CSS, Python, Typescript,
49and C#. Better yet, I pre-built these language definitions for 48C#, etc. Better yet, I pre-built these language definitions for
50GNU/Linux and macOS, they can be downloaded here: 49GNU/Linux and macOS, they can be downloaded here:
51 50
52 https://github.com/casouri/tree-sitter-module/releases/tag/v2.1 51 https://github.com/casouri/tree-sitter-module/releases/tag/v2.1
@@ -68,6 +67,10 @@ organization has all the "official" language definitions:
68 67
69 https://github.com/tree-sitter 68 https://github.com/tree-sitter
70 69
70Alternatively, you can use treesit-install-language-grammar command
71and follow its instructions. If everything goes right, it should
72automatically download and compile the language grammar for you.
73
71* Setting up for adding major mode features 74* Setting up for adding major mode features
72 75
73Start Emacs and load tree-sitter with 76Start Emacs and load tree-sitter with
@@ -78,6 +81,10 @@ Now check if Emacs is built with tree-sitter library
78 81
79 (treesit-available-p) 82 (treesit-available-p)
80 83
84Make sure Emacs can find the language grammar you want to use
85
86 (treesit-language-available-p 'lang)
87
81* Tree-sitter major modes 88* Tree-sitter major modes
82 89
83Tree-sitter modes should be separate major modes, so other modes 90Tree-sitter modes should be separate major modes, so other modes
@@ -89,12 +96,15 @@ modes.
89 96
90If the tree-sitter variant and the "native" variant could share some 97If the tree-sitter variant and the "native" variant could share some
91setup, you can create a "base mode", which only contains the common 98setup, you can create a "base mode", which only contains the common
92setup. For example, there is python-base-mode (shared), python-mode 99setup. For example, python.el defines python-base-mode (shared),
93(native), and python-ts-mode (tree-sitter). 100python-mode (native), and python-ts-mode (tree-sitter).
94 101
95In the tree-sitter mode, check if we can use tree-sitter with 102In the tree-sitter mode, check if we can use tree-sitter with
96treesit-ready-p, it will error out if tree-sitter is not ready. 103treesit-ready-p, it will error out if tree-sitter is not ready.
97 104
105In Emacs 30 we'll introduce some mechanism to more gracefully inherit
106modes and fallback to other modes.
107
98* Naming convention 108* Naming convention
99 109
100Use tree-sitter for text (documentation, comment), use treesit for 110Use tree-sitter for text (documentation, comment), use treesit for
@@ -180,18 +190,17 @@ mark the offending part in red.
180To enable tree-sitter font-lock, set ‘treesit-font-lock-settings’ and 190To enable tree-sitter font-lock, set ‘treesit-font-lock-settings’ and
181‘treesit-font-lock-feature-list’ buffer-locally and call 191‘treesit-font-lock-feature-list’ buffer-locally and call
182‘treesit-major-mode-setup’. For example, see 192‘treesit-major-mode-setup’. For example, see
183‘python--treesit-settings’ in python.el. Below I paste a snippet of 193‘python--treesit-settings’ in python.el. Below is a snippet of it.
184it.
185 194
186Note that like the current font-lock, if the to-be-fontified region 195Just like the current font-lock, if the to-be-fontified region already
187already has a face (ie, an earlier match fontified part/all of the 196has a face (ie, an earlier match fontified part/all of the region),
188region), the new face is discarded rather than applied. If you want 197the new face is discarded rather than applied. If you want later
189later matches always override earlier matches, use the :override 198matches always override earlier matches, use the :override keyword.
190keyword.
191 199
192Each rule should have a :feature, like function-name, 200Each rule should have a :feature, like function-name,
193string-interpolation, builtin, etc. Users can then enable/disable each 201string-interpolation, builtin, etc. Users can then enable/disable each
194feature individually. 202feature individually. See Appendix 1 at the bottom for a set of common
203features names.
195 204
196#+begin_src elisp 205#+begin_src elisp
197(defvar python--treesit-settings 206(defvar python--treesit-settings
@@ -247,8 +256,7 @@ Concretely, something like this:
247 (string-interpolation decorator))) 256 (string-interpolation decorator)))
248 (treesit-major-mode-setup)) 257 (treesit-major-mode-setup))
249 (t 258 (t
250 ;; No tree-sitter 259 ;; No tree-sitter, do nothing or fallback to another mode.
251 (setq-local font-lock-defaults ...)
252 ...))) 260 ...)))
253#+end_src 261#+end_src
254 262
@@ -289,6 +297,7 @@ For ANCHOR we have
289 first-sibling => start of the first sibling 297 first-sibling => start of the first sibling
290 parent => start of parent 298 parent => start of parent
291 parent-bol => BOL of the line parent is on. 299 parent-bol => BOL of the line parent is on.
300 standalone-parent => Like parent-bol but handles more edge cases
292 prev-sibling => start of previous sibling 301 prev-sibling => start of previous sibling
293 no-indent => current position (don’t indent) 302 no-indent => current position (don’t indent)
294 prev-line => start of previous line 303 prev-line => start of previous line
@@ -329,7 +338,8 @@ tells you which rule is applied in the echo area.
329 ...)))) 338 ...))))
330#+end_src 339#+end_src
331 340
332Then you set ‘treesit-simple-indent-rules’ to your rules, and call 341To setup indentation for your major mode, set
342‘treesit-simple-indent-rules’ to your rules, and call
333‘treesit-major-mode-setup’: 343‘treesit-major-mode-setup’:
334 344
335#+begin_src elisp 345#+begin_src elisp
@@ -339,36 +349,14 @@ Then you set ‘treesit-simple-indent-rules’ to your rules, and call
339 349
340* Imenu 350* Imenu
341 351
342Not much to say except for utilizing ‘treesit-induce-sparse-tree’ (and 352Set ‘treesit-simple-imenu-settings’ and call
343explicitly pass a LIMIT argument: most of the time you don't need more 353‘treesit-major-mode-setup’.
344than 10). See ‘js--treesit-imenu-1’ in js.el for an example.
345
346Once you have the index builder, set ‘imenu-create-index-function’ to
347it.
348 354
349* Navigation 355* Navigation
350 356
351Mainly ‘beginning-of-defun-function’ and ‘end-of-defun-function’. 357Set ‘treesit-defun-type-regexp’ and call
352You can find the end of a defun with something like 358‘treesit-major-mode-setup’. You can additionally set
353 359‘treesit-defun-name-function’.
354(treesit-search-forward-goto "function_definition" 'end)
355
356where "function_definition" matches the node type of a function
357definition node, and ’end means we want to go to the end of that node.
358
359Tree-sitter has default implementations for
360‘beginning-of-defun-function’ and ‘end-of-defun-function’. So for
361ordinary languages, it is enough to set ‘treesit-defun-type-regexp’
362to something that matches all the defun struct types in the language,
363and call ‘treesit-major-mode-setup’. For example,
364
365#+begin_src emacs-lisp
366(setq-local treesit-defun-type-regexp (rx bol
367 (or "function" "class")
368 "_definition"
369 eol))
370(treesit-major-mode-setup)
371#+end_src>
372 360
373* Which-func 361* Which-func
374 362
@@ -376,36 +364,7 @@ If you have an imenu implementation, set ‘which-func-functions’ to
376nil, and which-func will automatically use imenu’s data. 364nil, and which-func will automatically use imenu’s data.
377 365
378If you want an independent implementation for which-func, you can 366If you want an independent implementation for which-func, you can
379find the current function by going up the tree and looking for the 367find the current function by ‘treesit-defun-at-point’.
380function_definition node. See the function below for an example.
381Since Python allows nested function definitions, that function keeps
382going until it reaches the root node, and records all the function
383names along the way.
384
385#+begin_src elisp
386(defun python-info-treesit-current-defun (&optional include-type)
387 "Identical to `python-info-current-defun' but use tree-sitter.
388For INCLUDE-TYPE see `python-info-current-defun'."
389 (let ((node (treesit-node-at (point)))
390 (name-list ())
391 (type nil))
392 (cl-loop while node
393 if (pcase (treesit-node-type node)
394 ("function_definition"
395 (setq type 'def))
396 ("class_definition"
397 (setq type 'class))
398 (_ nil))
399 do (push (treesit-node-text
400 (treesit-node-child-by-field-name node "name")
401 t)
402 name-list)
403 do (setq node (treesit-node-parent node))
404 finally return (concat (if include-type
405 (format "%s " type)
406 "")
407 (string-join name-list ".")))))
408#+end_src
409 368
410* More features? 369* More features?
411 370
@@ -449,7 +408,51 @@ section is Parsing Program Source. Typing
449 408
450 C-h i d m elisp RET g Parsing Program Source RET 409 C-h i d m elisp RET g Parsing Program Source RET
451 410
452will bring you to that section. You can also read the HTML version 411will bring you to that section. You don’t need to read through every
453under /html-manual in this directory. I find the HTML version easier 412sentence, just read the text paragraphs and glance over function
454to read. You don’t need to read through every sentence, just read the 413names.
455text paragraphs and glance over function names. 414
415* Appendix 1
416
417Below is a set of common features used by built-in major mode.
418
419Basic tokens:
420
421delimiter ,.; (delimit things)
422operator == != || (produces a value)
423bracket []{}()
424misc-punctuation (other punctuation that you want to highlight)
425
426constant true, false, null
427number
428keyword
429comment (includes doc-comments)
430string (includes chars and docstrings)
431string-interpolation f"text {variable}"
432escape-sequence "\n\t\\"
433function every function identifier
434variable every variable identifier
435type every type identifier
436property a.b <--- highlight b
437key { a: b, c: d } <--- highlight a, c
438error highlight parse error
439
440Abstract features:
441
442assignment: the LHS of an assignment (thing being assigned to), eg:
443
444a = b <--- highlight a
445a.b = c <--- highlight b
446a[1] = d <--- highlight a
447
448definition: the thing being defined, eg:
449
450int a(int b) { <--- highlight a
451 return 0
452}
453
454int a; <-- highlight a
455
456struct a { <--- highlight a
457 int b; <--- highlight b
458}
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index d610a63b09d..5f92c056018 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -332,7 +332,7 @@ When the block type starts from the upper case, structure template
332will now insert =#+BEGIN_TYPE=. Previously, lower-case =#+begin_type= was inserted unconditionally. 332will now insert =#+BEGIN_TYPE=. Previously, lower-case =#+begin_type= was inserted unconditionally.
333*** New ox-latex tabbing support for tables. 333*** New ox-latex tabbing support for tables.
334 334
335Latex tables can now be exported to the latex tabbing environment 335LaTeX tables can now be exported to the latex tabbing environment
336tabbing environment]]. 336tabbing environment]].
337This is done by adding =#+ATTR_LATEX: :mode tabbing= at the top 337This is done by adding =#+ATTR_LATEX: :mode tabbing= at the top
338of the table. 338of the table.
@@ -4284,7 +4284,7 @@ parameters specific to some pre-defined translators, e.g.,
4284~:environment~ and ~:booktabs~ for ~orgtbl-to-latex~. See translators 4284~:environment~ and ~:booktabs~ for ~orgtbl-to-latex~. See translators
4285docstrings (including ~orgtbl-to-generic~) for details. 4285docstrings (including ~orgtbl-to-generic~) for details.
4286 4286
4287*** Non-floating minted listings in Latex export 4287*** Non-floating minted listings in LaTeX export
4288 4288
4289It is not possible to specify =#+attr_latex: :float nil= in conjunction 4289It is not possible to specify =#+attr_latex: :float nil= in conjunction
4290with source blocks exported by the minted package. 4290with source blocks exported by the minted package.
@@ -6540,7 +6540,7 @@ that Calc formulas can operate on them.
6540 6540
6541*** Hyperlinks 6541*** Hyperlinks
6542 6542
6543**** Org-Bibtex -- major improvements 6543**** Org-BibTeX -- major improvements
6544 6544
6545 Provides support for managing bibtex bibliographical references 6545 Provides support for managing bibtex bibliographical references
6546 data in headline properties. Each headline corresponds to a 6546 data in headline properties. Each headline corresponds to a
diff --git a/lisp/org/ob-latex.el b/lisp/org/ob-latex.el
index 428907a270d..ce39628d642 100644
--- a/lisp/org/ob-latex.el
+++ b/lisp/org/ob-latex.el
@@ -141,7 +141,7 @@ exporting the literal LaTeX source."
141 (org-trim body)) 141 (org-trim body))
142 142
143(defun org-babel-execute:latex (body params) 143(defun org-babel-execute:latex (body params)
144 "Execute a block of Latex code with Babel. 144 "Execute a block of LaTeX code with Babel.
145This function is called by `org-babel-execute-src-block'." 145This function is called by `org-babel-execute-src-block'."
146 (setq body (org-babel-expand-body:latex body params)) 146 (setq body (org-babel-expand-body:latex body params))
147 (if (cdr (assq :file params)) 147 (if (cdr (assq :file params))
@@ -180,7 +180,7 @@ This function is called by `org-babel-execute-src-block'."
180 tmp-pdf 180 tmp-pdf
181 (list org-babel-latex-pdf-svg-process) 181 (list org-babel-latex-pdf-svg-process)
182 extension err-msg log-buf))) 182 extension err-msg log-buf)))
183 (shell-command (format "mv %s %s" img-out out-file))))) 183 (rename-file img-out out-file t))))
184 ((string-suffix-p ".tikz" out-file) 184 ((string-suffix-p ".tikz" out-file)
185 (when (file-exists-p out-file) (delete-file out-file)) 185 (when (file-exists-p out-file) (delete-file out-file))
186 (with-temp-file out-file 186 (with-temp-file out-file
@@ -218,17 +218,14 @@ This function is called by `org-babel-execute-src-block'."
218 (if (string-suffix-p ".svg" out-file) 218 (if (string-suffix-p ".svg" out-file)
219 (progn 219 (progn
220 (shell-command "pwd") 220 (shell-command "pwd")
221 (shell-command (format "mv %s %s" 221 (rename-file (concat (file-name-sans-extension tex-file) "-1.svg")
222 (concat (file-name-sans-extension tex-file) "-1.svg") 222 out-file t))
223 out-file)))
224 (error "SVG file produced but HTML file requested"))) 223 (error "SVG file produced but HTML file requested")))
225 ((file-exists-p (concat (file-name-sans-extension tex-file) ".html")) 224 ((file-exists-p (concat (file-name-sans-extension tex-file) ".html"))
226 (if (string-suffix-p ".html" out-file) 225 (if (string-suffix-p ".html" out-file)
227 (shell-command "mv %s %s" 226 (rename-file (concat (file-name-sans-extension tex-file) ".html")
228 (concat (file-name-sans-extension tex-file) 227 out-file t)
229 ".html") 228 (error "HTML file produced but SVG file requested")))))
230 out-file)
231 (error "HTML file produced but SVG file requested")))))
232 ((or (string= "pdf" extension) imagemagick) 229 ((or (string= "pdf" extension) imagemagick)
233 (with-temp-file tex-file 230 (with-temp-file tex-file
234 (require 'ox-latex) 231 (require 'ox-latex)
diff --git a/lisp/org/ol-bibtex.el b/lisp/org/ol-bibtex.el
index 7d6ed85345f..fd9517233e0 100644
--- a/lisp/org/ol-bibtex.el
+++ b/lisp/org/ol-bibtex.el
@@ -86,8 +86,8 @@
86;; the active region, then call `org-bibtex-write' in a .org file to 86;; the active region, then call `org-bibtex-write' in a .org file to
87;; insert a heading for the read bibtex entry 87;; insert a heading for the read bibtex entry
88;; 88;;
89;; - All Bibtex information is taken from the document compiled by 89;; - All BibTeX information is taken from the document compiled by
90;; Andrew Roberts from the Bibtex manual, available at 90;; Andrew Roberts from the BibTeX manual, available at
91;; https://www.andy-roberts.net/res/writing/latex/bibentries.pdf 91;; https://www.andy-roberts.net/res/writing/latex/bibentries.pdf
92;; 92;;
93;;; History: 93;;; History:
@@ -99,7 +99,7 @@
99;; and then implemented by Bastien Guerry. 99;; and then implemented by Bastien Guerry.
100;; 100;;
101;; Eric Schulte eventually added the functions for translating between 101;; Eric Schulte eventually added the functions for translating between
102;; Org headlines and Bibtex entries, and for fleshing out the Bibtex 102;; Org headlines and BibTeX entries, and for fleshing out the BibTeX
103;; fields of existing Org headlines. 103;; fields of existing Org headlines.
104;; 104;;
105;; Org mode loads this module by default - if this is not what you want, 105;; Org mode loads this module by default - if this is not what you want,
@@ -144,7 +144,7 @@
144(declare-function org-search-view "org-agenda" (&optional todo-only string edit-at)) 144(declare-function org-search-view "org-agenda" (&optional todo-only string edit-at))
145 145
146 146
147;;; Bibtex data 147;;; BibTeX data
148(defvar org-bibtex-types 148(defvar org-bibtex-types
149 '((:article 149 '((:article
150 (:description . "An article from a journal or magazine") 150 (:description . "An article from a journal or magazine")
@@ -202,7 +202,7 @@
202 (:description . "A document having an author and title, but not formally published.") 202 (:description . "A document having an author and title, but not formally published.")
203 (:required :author :title :note) 203 (:required :author :title :note)
204 (:optional :month :year :doi :url))) 204 (:optional :month :year :doi :url)))
205 "Bibtex entry types with required and optional parameters.") 205 "BibTeX entry types with required and optional parameters.")
206 206
207(defvar org-bibtex-fields 207(defvar org-bibtex-fields
208 '((:address . "Usually the address of the publisher or other type of institution. For major publishing houses, van Leunen recommends omitting the information entirely. For small publishers, on the other hand, you can help the reader by giving the complete address.") 208 '((:address . "Usually the address of the publisher or other type of institution. For major publishing houses, van Leunen recommends omitting the information entirely. For small publishers, on the other hand, you can help the reader by giving the complete address.")
@@ -231,7 +231,7 @@
231 (:url . "Uniform resource locator.") 231 (:url . "Uniform resource locator.")
232 (:volume . "The volume of a journal or multi-volume book.") 232 (:volume . "The volume of a journal or multi-volume book.")
233 (:year . "The year of publication or, for an unpublished work, the year it was written. Generally it should consist of four numerals, such as 1984, although the standard styles can handle any year whose last four nonpunctuation characters are numerals, such as '(about 1984)'")) 233 (:year . "The year of publication or, for an unpublished work, the year it was written. Generally it should consist of four numerals, such as 1984, although the standard styles can handle any year whose last four nonpunctuation characters are numerals, such as '(about 1984)'"))
234 "Bibtex fields with descriptions.") 234 "BibTeX fields with descriptions.")
235 235
236(defvar org-bibtex-entries nil 236(defvar org-bibtex-entries nil
237 "List to hold parsed bibtex entries.") 237 "List to hold parsed bibtex entries.")
@@ -439,7 +439,7 @@ at point."
439 (error "Field:%s is not known" field)) 439 (error "Field:%s is not known" field))
440 (save-window-excursion 440 (save-window-excursion
441 (let* ((name (substring (symbol-name field) 1)) 441 (let* ((name (substring (symbol-name field) 1))
442 (buf-name (format "*Bibtex Help %s*" name))) 442 (buf-name (format "*BibTeX Help %s*" name)))
443 (with-output-to-temp-buffer buf-name 443 (with-output-to-temp-buffer buf-name
444 (princ (cdr (assoc field org-bibtex-fields)))) 444 (princ (cdr (assoc field org-bibtex-fields))))
445 (with-current-buffer buf-name (visual-line-mode 1)) 445 (with-current-buffer buf-name (visual-line-mode 1))
@@ -496,7 +496,7 @@ With optional argument OPTIONAL, also prompt for optional fields."
496 (org-bibtex-autokey))) 496 (org-bibtex-autokey)))
497 497
498 498
499;;; Bibtex link functions 499;;; BibTeX link functions
500(org-link-set-parameters "bibtex" 500(org-link-set-parameters "bibtex"
501 :follow #'org-bibtex-open 501 :follow #'org-bibtex-open
502 :store #'org-bibtex-store-link) 502 :store #'org-bibtex-store-link)
@@ -593,13 +593,13 @@ ARG, when non-nil, is a universal prefix argument. See
593(add-hook 'org-execute-file-search-functions 'org-execute-file-search-in-bibtex) 593(add-hook 'org-execute-file-search-functions 'org-execute-file-search-in-bibtex)
594 594
595 595
596;;; Bibtex <-> Org headline translation functions 596;;; BibTeX <-> Org headline translation functions
597(defun org-bibtex (filename) 597(defun org-bibtex (filename)
598 "Export each headline in the current file to a bibtex entry. 598 "Export each headline in the current file to a bibtex entry.
599Headlines are exported using `org-bibtex-headline'." 599Headlines are exported using `org-bibtex-headline'."
600 (interactive 600 (interactive
601 (list (read-file-name 601 (list (read-file-name
602 "Bibtex file: " nil nil nil 602 "BibTeX file: " nil nil nil
603 (let ((file (buffer-file-name (buffer-base-buffer)))) 603 (let ((file (buffer-file-name (buffer-base-buffer))))
604 (and file 604 (and file
605 (file-name-nondirectory 605 (file-name-nondirectory
@@ -619,7 +619,7 @@ Headlines are exported using `org-bibtex-headline'."
619 nil)))) 619 nil))))
620 (when error-point 620 (when error-point
621 (goto-char error-point) 621 (goto-char error-point)
622 (message "Bibtex error at %S" (nth 4 (org-heading-components)))))) 622 (message "BibTeX error at %S" (nth 4 (org-heading-components))))))
623 623
624(defun org-bibtex-check (&optional optional) 624(defun org-bibtex-check (&optional optional)
625 "Check the current headline for required fields. 625 "Check the current headline for required fields.
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index a33d84f1cd4..2ec2f4c00bc 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -3348,7 +3348,7 @@ s Search for keywords M Like m, but only TODO entries
3348 (`agenda 3348 (`agenda
3349 (call-interactively 'org-agenda-list)) 3349 (call-interactively 'org-agenda-list))
3350 (`agenda* 3350 (`agenda*
3351 (funcall 'org-agenda-list nil nil t)) 3351 (funcall 'org-agenda-list nil nil nil t))
3352 (`alltodo 3352 (`alltodo
3353 (call-interactively 'org-todo-list)) 3353 (call-interactively 'org-todo-list))
3354 (`search 3354 (`search
diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el
index 8524dd29d83..51729b3f33d 100644
--- a/lisp/org/org-element.el
+++ b/lisp/org/org-element.el
@@ -2462,7 +2462,7 @@ CDR is a plist containing `:key', `:value', `:begin', `:end',
2462 (org-element-property :value keyword))) 2462 (org-element-property :value keyword)))
2463 2463
2464 2464
2465;;;; Latex Environment 2465;;;; LaTeX Environment
2466 2466
2467(defconst org-element--latex-begin-environment 2467(defconst org-element--latex-begin-environment
2468 "^[ \t]*\\\\begin{\\([A-Za-z0-9*]+\\)}" 2468 "^[ \t]*\\\\begin{\\([A-Za-z0-9*]+\\)}"
@@ -3412,7 +3412,7 @@ CONTENTS is the contents of the object."
3412 (format "/%s/" contents)) 3412 (format "/%s/" contents))
3413 3413
3414 3414
3415;;;; Latex Fragment 3415;;;; LaTeX Fragment
3416 3416
3417(defun org-element-latex-fragment-parser () 3417(defun org-element-latex-fragment-parser ()
3418 "Parse LaTeX fragment at point, if any. 3418 "Parse LaTeX fragment at point, if any.
diff --git a/lisp/org/org-persist.el b/lisp/org/org-persist.el
index a0652b99c56..01078f4596d 100644
--- a/lisp/org/org-persist.el
+++ b/lisp/org/org-persist.el
@@ -540,13 +540,13 @@ COLLECTION is the plist holding data collection."
540 540
541(defun org-persist-read:file (_ path __) 541(defun org-persist-read:file (_ path __)
542 "Read file container from PATH." 542 "Read file container from PATH."
543 (when (and path (file-exists-p (concat org-persist-directory path))) 543 (when (and path (file-exists-p (org-file-name-concat org-persist-directory path)))
544 (concat org-persist-directory path))) 544 (org-file-name-concat org-persist-directory path)))
545 545
546(defun org-persist-read:url (_ path __) 546(defun org-persist-read:url (_ path __)
547 "Read file container from PATH." 547 "Read file container from PATH."
548 (when (and path (file-exists-p (concat org-persist-directory path))) 548 (when (and path (file-exists-p (org-file-name-concat org-persist-directory path)))
549 (concat org-persist-directory path))) 549 (org-file-name-concat org-persist-directory path)))
550 550
551(defun org-persist-read:index (cont index-file _) 551(defun org-persist-read:index (cont index-file _)
552 "Read index container CONT from INDEX-FILE." 552 "Read index container CONT from INDEX-FILE."
diff --git a/lisp/org/org-src.el b/lisp/org/org-src.el
index 9e439281118..aadd8eba579 100644
--- a/lisp/org/org-src.el
+++ b/lisp/org/org-src.el
@@ -315,7 +315,7 @@ is 0.")
315 315
316(defun org-src--construct-edit-buffer-name (org-buffer-name lang) 316(defun org-src--construct-edit-buffer-name (org-buffer-name lang)
317 "Construct the buffer name for a source editing buffer. 317 "Construct the buffer name for a source editing buffer.
318Format is \"*Org Src ORG-BUFFER-NAME [ LANG ]*\"." 318Format is \"*Org Src ORG-BUFFER-NAME[ LANG ]*\"."
319 (concat "*Org Src " org-buffer-name "[ " lang " ]*")) 319 (concat "*Org Src " org-buffer-name "[ " lang " ]*"))
320 320
321(defun org-src--edit-buffer (beg end) 321(defun org-src--edit-buffer (beg end)
diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el
index a8a13152dc8..20636a3dd04 100644
--- a/lisp/org/org-version.el
+++ b/lisp/org/org-version.el
@@ -11,7 +11,7 @@ Inserted by installing Org mode or when a release is made."
11(defun org-git-version () 11(defun org-git-version ()
12 "The Git version of Org mode. 12 "The Git version of Org mode.
13Inserted by installing Org or when a release is made." 13Inserted by installing Org or when a release is made."
14 (let ((org-git-version "release_9.6.1-40-g3d817c")) 14 (let ((org-git-version "release_9.6.1-48-g92471e"))
15 org-git-version)) 15 org-git-version))
16 16
17(provide 'org-version) 17(provide 'org-version)
diff --git a/lisp/org/ox-ascii.el b/lisp/org/ox-ascii.el
index 9c4424b14f1..692dd216d61 100644
--- a/lisp/org/ox-ascii.el
+++ b/lisp/org/ox-ascii.el
@@ -1549,7 +1549,7 @@ information."
1549 keyword info))))) 1549 keyword info)))))
1550 1550
1551 1551
1552;;;; Latex Environment 1552;;;; LaTeX Environment
1553 1553
1554(defun org-ascii-latex-environment (latex-environment _contents info) 1554(defun org-ascii-latex-environment (latex-environment _contents info)
1555 "Transcode a LATEX-ENVIRONMENT element from Org to ASCII. 1555 "Transcode a LATEX-ENVIRONMENT element from Org to ASCII.
@@ -1561,7 +1561,7 @@ information."
1561 latex-environment info))) 1561 latex-environment info)))
1562 1562
1563 1563
1564;;;; Latex Fragment 1564;;;; LaTeX Fragment
1565 1565
1566(defun org-ascii-latex-fragment (latex-fragment _contents info) 1566(defun org-ascii-latex-fragment (latex-fragment _contents info)
1567 "Transcode a LATEX-FRAGMENT object from Org to ASCII. 1567 "Transcode a LATEX-FRAGMENT object from Org to ASCII.
diff --git a/lisp/org/ox-html.el b/lisp/org/ox-html.el
index 7b79c57d4a4..b27254b8ac5 100644
--- a/lisp/org/ox-html.el
+++ b/lisp/org/ox-html.el
@@ -2969,7 +2969,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
2969 ((string= "listings" value) (org-html-list-of-listings info)) 2969 ((string= "listings" value) (org-html-list-of-listings info))
2970 ((string= "tables" value) (org-html-list-of-tables info)))))))) 2970 ((string= "tables" value) (org-html-list-of-tables info))))))))
2971 2971
2972;;;; Latex Environment 2972;;;; LaTeX Environment
2973 2973
2974(defun org-html-format-latex (latex-frag processing-type info) 2974(defun org-html-format-latex (latex-frag processing-type info)
2975 "Format a LaTeX fragment LATEX-FRAG into HTML. 2975 "Format a LaTeX fragment LATEX-FRAG into HTML.
@@ -3086,7 +3086,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
3086 info caption label))))) 3086 info caption label)))))
3087 (t (org-html--wrap-latex-environment latex-frag info caption label))))) 3087 (t (org-html--wrap-latex-environment latex-frag info caption label)))))
3088 3088
3089;;;; Latex Fragment 3089;;;; LaTeX Fragment
3090 3090
3091(defun org-html-latex-fragment (latex-fragment _contents info) 3091(defun org-html-latex-fragment (latex-fragment _contents info)
3092 "Transcode a LATEX-FRAGMENT object from Org to HTML. 3092 "Transcode a LATEX-FRAGMENT object from Org to HTML.
diff --git a/lisp/org/ox-latex.el b/lisp/org/ox-latex.el
index 5ac9c378133..50a0950aa04 100644
--- a/lisp/org/ox-latex.el
+++ b/lisp/org/ox-latex.el
@@ -1272,7 +1272,7 @@ used. When nil, no theme is applied."
1272(defun org-latex-generate-engraved-preamble (info) 1272(defun org-latex-generate-engraved-preamble (info)
1273 "Generate the preamble to setup engraved code. 1273 "Generate the preamble to setup engraved code.
1274The result is constructed from the :latex-engraved-preamble and 1274The result is constructed from the :latex-engraved-preamble and
1275:latex-engraved-optionsn export options, the default values of 1275:latex-engraved-options export options, the default values of
1276which are given by `org-latex-engraved-preamble' and 1276which are given by `org-latex-engraved-preamble' and
1277`org-latex-engraved-options' respectively." 1277`org-latex-engraved-options' respectively."
1278 (let* ((engraved-options 1278 (let* ((engraved-options
@@ -2600,7 +2600,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
2600 (otherwise "\\lstlistoflistings"))))))))) 2600 (otherwise "\\lstlistoflistings")))))))))
2601 2601
2602 2602
2603;;;; Latex Environment 2603;;;; LaTeX Environment
2604 2604
2605(defun org-latex--environment-type (latex-environment) 2605(defun org-latex--environment-type (latex-environment)
2606 "Return the TYPE of LATEX-ENVIRONMENT. 2606 "Return the TYPE of LATEX-ENVIRONMENT.
@@ -2658,7 +2658,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
2658 (insert caption) 2658 (insert caption)
2659 (buffer-string)))))) 2659 (buffer-string))))))
2660 2660
2661;;;; Latex Fragment 2661;;;; LaTeX Fragment
2662 2662
2663(defun org-latex-latex-fragment (latex-fragment _contents _info) 2663(defun org-latex-latex-fragment (latex-fragment _contents _info)
2664 "Transcode a LATEX-FRAGMENT object from Org to LaTeX. 2664 "Transcode a LATEX-FRAGMENT object from Org to LaTeX.
diff --git a/lisp/org/ox-md.el b/lisp/org/ox-md.el
index 5cb79ef2396..5be0ca22e07 100644
--- a/lisp/org/ox-md.el
+++ b/lisp/org/ox-md.el
@@ -486,7 +486,7 @@ channel."
486 (_ (org-export-with-backend 'html keyword contents info)))) 486 (_ (org-export-with-backend 'html keyword contents info))))
487 487
488 488
489;;;; Latex Environment 489;;;; LaTeX Environment
490 490
491(defun org-md-latex-environment (latex-environment _contents info) 491(defun org-md-latex-environment (latex-environment _contents info)
492 "Transcode a LATEX-ENVIRONMENT object from Org to Markdown. 492 "Transcode a LATEX-ENVIRONMENT object from Org to Markdown.
@@ -501,7 +501,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
501 latex-frag) 501 latex-frag)
502 latex-frag)))) 502 latex-frag))))
503 503
504;;;; Latex Fragment 504;;;; LaTeX Fragment
505 505
506(defun org-md-latex-fragment (latex-fragment _contents info) 506(defun org-md-latex-fragment (latex-fragment _contents info)
507 "Transcode a LATEX-FRAGMENT object from Org to Markdown. 507 "Transcode a LATEX-FRAGMENT object from Org to Markdown.
diff --git a/lisp/org/ox-odt.el b/lisp/org/ox-odt.el
index 949c8f9b5b2..cf217c9e781 100644
--- a/lisp/org/ox-odt.el
+++ b/lisp/org/ox-odt.el
@@ -1986,7 +1986,7 @@ information."
1986 (ignore)))))))) 1986 (ignore))))))))
1987 1987
1988 1988
1989;;;; Latex Environment 1989;;;; LaTeX Environment
1990 1990
1991;; (eval-after-load 'ox-odt '(ad-deactivate 'org-format-latex-as-mathml)) 1991;; (eval-after-load 'ox-odt '(ad-deactivate 'org-format-latex-as-mathml))
1992;; (advice-add 'org-format-latex-as-mathml ; FIXME 1992;; (advice-add 'org-format-latex-as-mathml ; FIXME
@@ -2007,7 +2007,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
2007 (org-odt-do-format-code latex-frag info))) 2007 (org-odt-do-format-code latex-frag info)))
2008 2008
2009 2009
2010;;;; Latex Fragment 2010;;;; LaTeX Fragment
2011 2011
2012;; (when latex-frag ; FIXME 2012;; (when latex-frag ; FIXME
2013;; (setq href (propertize href :title "LaTeX Fragment" 2013;; (setq href (propertize href :title "LaTeX Fragment"