emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Michael Brand <michael.ch.brand@gmail.com>
To: Nicolas Goaziou <n.goaziou@gmail.com>
Cc: Org Mode List <emacs-orgmode@gnu.org>
Subject: Re: [ANN] Lazy cache synchronization
Date: Wed, 26 Feb 2014 14:33:50 +0100	[thread overview]
Message-ID: <CALn3zojtRaRurs5=goUH-_rNeLNumVQZfNMnn_6i1e=2VS2uOQ@mail.gmail.com> (raw)
In-Reply-To: <87ppmh1lq3.fsf@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 516 bytes --]

Hi Nicolas

On Thu, Feb 20, 2014 at 11:08 PM, Nicolas Goaziou <n.goaziou@gmail.com> wrote:
> I just pushed an update for parser cache.

The related commit release_8.2.5h-642-geed0500

    commit eed0500913a3534a32abfd5864cf674d9d0cdf64
    Author: Nicolas Goaziou <n.goaziou@gmail.com>
    Date:   Fri Jan 31 01:14:44 2014 +0100

        org-element: Implement lazy cache synchronization

on master is a regression for find-file of an Org file containing the
header

* Definition of <<<foo>>> and <<<bar>>>

Michael

[-- Attachment #2: Backtrace.txt --]
[-- Type: text/plain, Size: 21226 bytes --]

Debugger entered--Lisp error: (wrong-type-argument hash-table-p nil)
  gethash((headline (:raw-value "Summary of <<<foo>>> and <<<bar>>>" :begin 1 :end 38 :pre-blank 0 :contents-begin nil :contents-end nil :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 0 :footnote-section-p nil :archivedp nil :commentedp nil :CATEGORY nil :title "Summary of <<<foo>>> and <<<bar>>>")) nil)
  (and (org-element--cache-active-p) (gethash element org-element--cache-objects))
  (let* ((restriction (org-element-restriction type)) (parent element) (candidates (quote initial)) (cache (and (org-element--cache-active-p) (gethash element org-element--cache-objects))) objects-data next) (prog1 (catch (quote exit) (while t (if next nil (let ((data ...)) (if data (setq candidates ...) (setq cache ...)))) (if (or next (eq (quote initial) candidates)) (progn (setq candidates (org-element--get-next-object-candidates restriction candidates)) (setcar (cdr objects-data) candidates))) (let ((closest (and candidates ...))) (if (or (not closest) (> ... origin)) (catch (quote found) (progn ...)) (goto-char (cdr closest)) (setq next (funcall ...)) (let* (...) (setcdr ... ...)))) (let ((cbeg (org-element-property :contents-begin next)) (cend (org-element-property :contents-end next)) (obj-end (org-element-property :end next))) (cond ((<= obj-end origin) (goto-char obj-end)) ((or ... ... ...) (org-element-put-property next :parent parent) (throw ... next)) (t (goto-char cbeg) (narrow-to-region ... cend) (org-element-put-property next :parent parent) (setq parent next restriction ... next nil objects-data nil candidates ...)))))) (org-element--cache-put element cache)))
  (let* ((origin (point)) (element (or element (org-element-at-point))) (type (org-element-type element))) (cond ((let ((post (org-element-property :post-affiliated element))) (and post (< origin post))) (beginning-of-line) (let ((case-fold-search t)) (looking-at org-element--affiliated-re)) (cond ((not (member-ignore-case (match-string 1) org-element-parsed-keywords)) (throw (quote objects-forbidden) element)) ((< (match-end 0) origin) (narrow-to-region (match-end 0) (line-end-position))) ((and (match-beginning 2) (>= origin (match-beginning 2)) (< origin (match-end 2))) (narrow-to-region (match-beginning 2) (match-end 2))) (t (throw (quote objects-forbidden) element))) (setq type (quote keyword))) ((eq type (quote item)) (let ((tag (org-element-property :tag element))) (if (not tag) (throw (quote objects-forbidden) element) (beginning-of-line) (search-forward tag (line-end-position)) (goto-char (match-beginning 0)) (if (and (>= origin ...) (< origin ...)) (narrow-to-region (point) (match-end 0)) (throw (quote objects-forbidden) element))))) ((memq type (quote (headline inlinetask))) (goto-char (org-element-property :begin element)) (skip-chars-forward "* ") (if (and (>= origin (point)) (< origin (line-end-position))) (narrow-to-region (point) (line-end-position)) (throw (quote objects-forbidden) element))) ((memq type (quote (paragraph table-row verse-block))) (let ((cbeg (org-element-property :contents-begin element)) (cend (org-element-property :contents-end element))) (if (and cbeg cend (>= origin cbeg) (or (< origin cend) (and ... ...))) (narrow-to-region cbeg cend) (throw (quote objects-forbidden) element)))) ((eq type (quote keyword)) (if (not (member (org-element-property :key element) org-element-document-properties)) (throw (quote objects-forbidden) element) (beginning-of-line) (search-forward ":") (if (and (>= origin (point)) (< origin (line-end-position))) (narrow-to-region (point) (line-end-position)) (throw (quote objects-forbidden) element)))) ((eq type (quote planning)) (progn (let ((--dolist-tail-- (quote ...)) p) (while --dolist-tail-- (setq p (car --dolist-tail--)) (let (...) (if ... ...)) (setq --dolist-tail-- (cdr --dolist-tail--))))) (throw (quote objects-forbidden) element)) (t (throw (quote objects-forbidden) element))) (goto-char (point-min)) (let* ((restriction (org-element-restriction type)) (parent element) (candidates (quote initial)) (cache (and (org-element--cache-active-p) (gethash element org-element--cache-objects))) objects-data next) (prog1 (catch (quote exit) (while t (if next nil (let (...) (if data ... ...))) (if (or next (eq ... candidates)) (progn (setq candidates ...) (setcar ... candidates))) (let ((closest ...)) (if (or ... ...) (catch ... ...) (goto-char ...) (setq next ...) (let* ... ...))) (let ((cbeg ...) (cend ...) (obj-end ...)) (cond (... ...) (... ... ...) (t ... ... ... ...))))) (org-element--cache-put element cache))))
  (save-restriction (widen) (let* ((origin (point)) (element (or element (org-element-at-point))) (type (org-element-type element))) (cond ((let ((post (org-element-property :post-affiliated element))) (and post (< origin post))) (beginning-of-line) (let ((case-fold-search t)) (looking-at org-element--affiliated-re)) (cond ((not (member-ignore-case ... org-element-parsed-keywords)) (throw (quote objects-forbidden) element)) ((< (match-end 0) origin) (narrow-to-region (match-end 0) (line-end-position))) ((and (match-beginning 2) (>= origin ...) (< origin ...)) (narrow-to-region (match-beginning 2) (match-end 2))) (t (throw (quote objects-forbidden) element))) (setq type (quote keyword))) ((eq type (quote item)) (let ((tag (org-element-property :tag element))) (if (not tag) (throw (quote objects-forbidden) element) (beginning-of-line) (search-forward tag (line-end-position)) (goto-char (match-beginning 0)) (if (and ... ...) (narrow-to-region ... ...) (throw ... element))))) ((memq type (quote (headline inlinetask))) (goto-char (org-element-property :begin element)) (skip-chars-forward "* ") (if (and (>= origin (point)) (< origin (line-end-position))) (narrow-to-region (point) (line-end-position)) (throw (quote objects-forbidden) element))) ((memq type (quote (paragraph table-row verse-block))) (let ((cbeg (org-element-property :contents-begin element)) (cend (org-element-property :contents-end element))) (if (and cbeg cend (>= origin cbeg) (or ... ...)) (narrow-to-region cbeg cend) (throw (quote objects-forbidden) element)))) ((eq type (quote keyword)) (if (not (member (org-element-property :key element) org-element-document-properties)) (throw (quote objects-forbidden) element) (beginning-of-line) (search-forward ":") (if (and (>= origin ...) (< origin ...)) (narrow-to-region (point) (line-end-position)) (throw (quote objects-forbidden) element)))) ((eq type (quote planning)) (progn (let ((--dolist-tail-- ...) p) (while --dolist-tail-- (setq p ...) (let ... ...) (setq --dolist-tail-- ...)))) (throw (quote objects-forbidden) element)) (t (throw (quote objects-forbidden) element))) (goto-char (point-min)) (let* ((restriction (org-element-restriction type)) (parent element) (candidates (quote initial)) (cache (and (org-element--cache-active-p) (gethash element org-element--cache-objects))) objects-data next) (prog1 (catch (quote exit) (while t (if next nil (let ... ...)) (if (or next ...) (progn ... ...)) (let (...) (if ... ... ... ... ...)) (let (... ... ...) (cond ... ... ...)))) (org-element--cache-put element cache)))))
  (save-excursion (save-restriction (widen) (let* ((origin (point)) (element (or element (org-element-at-point))) (type (org-element-type element))) (cond ((let ((post ...)) (and post (< origin post))) (beginning-of-line) (let ((case-fold-search t)) (looking-at org-element--affiliated-re)) (cond ((not ...) (throw ... element)) ((< ... origin) (narrow-to-region ... ...)) ((and ... ... ...) (narrow-to-region ... ...)) (t (throw ... element))) (setq type (quote keyword))) ((eq type (quote item)) (let ((tag ...)) (if (not tag) (throw ... element) (beginning-of-line) (search-forward tag ...) (goto-char ...) (if ... ... ...)))) ((memq type (quote (headline inlinetask))) (goto-char (org-element-property :begin element)) (skip-chars-forward "* ") (if (and (>= origin ...) (< origin ...)) (narrow-to-region (point) (line-end-position)) (throw (quote objects-forbidden) element))) ((memq type (quote (paragraph table-row verse-block))) (let ((cbeg ...) (cend ...)) (if (and cbeg cend ... ...) (narrow-to-region cbeg cend) (throw ... element)))) ((eq type (quote keyword)) (if (not (member ... org-element-document-properties)) (throw (quote objects-forbidden) element) (beginning-of-line) (search-forward ":") (if (and ... ...) (narrow-to-region ... ...) (throw ... element)))) ((eq type (quote planning)) (progn (let (... p) (while --dolist-tail-- ... ... ...))) (throw (quote objects-forbidden) element)) (t (throw (quote objects-forbidden) element))) (goto-char (point-min)) (let* ((restriction (org-element-restriction type)) (parent element) (candidates (quote initial)) (cache (and (org-element--cache-active-p) (gethash element org-element--cache-objects))) objects-data next) (prog1 (catch (quote exit) (while t (if next nil ...) (if ... ...) (let ... ...) (let ... ...))) (org-element--cache-put element cache))))))
  (catch (quote objects-forbidden) (save-excursion (save-restriction (widen) (let* ((origin (point)) (element (or element (org-element-at-point))) (type (org-element-type element))) (cond ((let (...) (and post ...)) (beginning-of-line) (let (...) (looking-at org-element--affiliated-re)) (cond (... ...) (... ...) (... ...) (t ...)) (setq type (quote keyword))) ((eq type (quote item)) (let (...) (if ... ... ... ... ... ...))) ((memq type (quote ...)) (goto-char (org-element-property :begin element)) (skip-chars-forward "* ") (if (and ... ...) (narrow-to-region ... ...) (throw ... element))) ((memq type (quote ...)) (let (... ...) (if ... ... ...))) ((eq type (quote keyword)) (if (not ...) (throw ... element) (beginning-of-line) (search-forward ":") (if ... ... ...))) ((eq type (quote planning)) (progn (let ... ...)) (throw (quote objects-forbidden) element)) (t (throw (quote objects-forbidden) element))) (goto-char (point-min)) (let* ((restriction (org-element-restriction type)) (parent element) (candidates (quote initial)) (cache (and ... ...)) objects-data next) (prog1 (catch (quote exit) (while t ... ... ... ...)) (org-element--cache-put element cache)))))))
  org-element-context()
  (let ((obj (org-element-context))) (if (memq (org-element-type obj) (quote (radio-target target))) (progn (add-to-list (quote rtn) (downcase (org-element-property :value obj))))))
  (while (re-search-forward re nil t) (backward-char) (let ((obj (org-element-context))) (if (memq (org-element-type obj) (quote (radio-target target))) (progn (add-to-list (quote rtn) (downcase (org-element-property :value obj)))))))
  (save-excursion (goto-char (point-min)) (while (re-search-forward re nil t) (backward-char) (let ((obj (org-element-context))) (if (memq (org-element-type obj) (quote (radio-target target))) (progn (add-to-list (quote rtn) (downcase (org-element-property :value obj))))))) rtn)
  (let ((re (if radio org-radio-target-regexp org-target-regexp)) rtn) (save-excursion (goto-char (point-min)) (while (re-search-forward re nil t) (backward-char) (let ((obj (org-element-context))) (if (memq (org-element-type obj) (quote (radio-target target))) (progn (add-to-list (quote rtn) (downcase ...)))))) rtn))
  org-all-targets(radio)
  (org-make-target-link-regexp (org-all-targets (quote radio)))
  (setq org-target-link-regexp (org-make-target-link-regexp (org-all-targets (quote radio))))
  (progn (setq org-target-link-regexp (org-make-target-link-regexp (org-all-targets (quote radio)))) (org-restart-font-lock))
  (if (memq (quote radio) org-activate-links) (progn (setq org-target-link-regexp (org-make-target-link-regexp (org-all-targets (quote radio)))) (org-restart-font-lock)))
  org-update-radio-target-regexp()
  (let ((delay-mode-hooks t)) (outline-mode) (setq major-mode (quote org-mode)) (setq mode-name "Org") (progn (if (get (quote outline-mode) (quote mode-class)) (put (quote org-mode) (quote mode-class) (get (quote outline-mode) (quote mode-class)))) (if (keymap-parent org-mode-map) nil (set-keymap-parent org-mode-map (current-local-map))) (let ((parent (char-table-parent org-mode-syntax-table))) (if (and parent (not (eq parent (standard-syntax-table)))) nil (set-char-table-parent org-mode-syntax-table (syntax-table)))) (if (or (abbrev-table-get org-mode-abbrev-table :parents) (eq org-mode-abbrev-table local-abbrev-table)) nil (abbrev-table-put org-mode-abbrev-table :parents (list local-abbrev-table)))) (use-local-map org-mode-map) (set-syntax-table org-mode-syntax-table) (setq local-abbrev-table org-mode-abbrev-table) (if (featurep (quote xemacs)) (if (boundp (quote outline-mode-menu-heading)) (progn (easy-menu-remove outline-mode-menu-heading) (easy-menu-remove outline-mode-menu-show) (easy-menu-remove outline-mode-menu-hide))) (define-key org-mode-map [menu-bar headings] (quote undefined)) (define-key org-mode-map [menu-bar hide] (quote undefined)) (define-key org-mode-map [menu-bar show] (quote undefined))) (org-load-modules-maybe) (easy-menu-add org-org-menu) (easy-menu-add org-tbl-menu) (org-install-agenda-files-menu) (if org-descriptive-links (add-to-invisibility-spec (quote (org-link)))) (add-to-invisibility-spec (quote (org-cwidth))) (add-to-invisibility-spec (quote (org-hide-block . t))) (if (featurep (quote xemacs)) (progn (org-set-local (quote line-move-ignore-invisible) t))) (org-set-local (quote outline-regexp) org-outline-regexp) (org-set-local (quote outline-level) (quote org-outline-level)) (setq bidi-paragraph-direction (quote left-to-right)) (if (and org-ellipsis (fboundp (quote set-display-table-slot)) (boundp (quote buffer-display-table)) (fboundp (quote make-glyph-code))) (progn (if org-display-table nil (setq org-display-table (make-display-table))) (set-display-table-slot org-display-table 4 (vconcat (mapcar (function (lambda ... ...)) (if (stringp org-ellipsis) org-ellipsis "...")))) (setq buffer-display-table org-display-table))) (org-set-regexps-and-options-for-tags) (org-set-regexps-and-options) (org-set-font-lock-defaults) (if (and org-tag-faces (not org-tags-special-faces-re)) (progn (org-set-tag-faces (quote org-tag-faces) org-tag-faces))) (org-set-local (quote calc-embedded-open-mode) "# ") (modify-syntax-entry 64 "w") (modify-syntax-entry 34 "\"") (if org-startup-truncated (setq truncate-lines t)) (if org-startup-indented (progn (require (quote org-indent)) (org-indent-mode 1))) (org-set-local (quote font-lock-unfontify-region-function) (quote org-unfontify-region)) (org-set-local (quote org-table-may-need-update) t) (org-add-hook (quote before-change-functions) (quote org-before-change-function) nil (quote local)) (org-add-hook (quote kill-buffer-hook) (quote org-check-running-clock) nil (quote local)) (org-macro-initialize-templates) (org-update-radio-target-regexp) (org-set-local (quote indent-line-function) (quote org-indent-line)) (org-set-local (quote indent-region-function) (quote org-indent-region)) (org-setup-filling) (org-setup-comments-handling) (org-element-cache-reset) (org-set-local (quote beginning-of-defun-function) (quote org-backward-element)) (org-set-local (quote end-of-defun-function) (quote org-forward-element)) (org-set-local (quote next-error-function) (quote org-occur-next-match)) (if org-enforce-todo-dependencies (add-hook (quote org-blocker-hook) (quote org-block-todo-from-children-or-siblings-or-parent)) (remove-hook (quote org-blocker-hook) (quote org-block-todo-from-children-or-siblings-or-parent))) (if org-enforce-todo-checkbox-dependencies (add-hook (quote org-blocker-hook) (quote org-block-todo-from-checkboxes)) (remove-hook (quote org-blocker-hook) (quote org-block-todo-from-checkboxes))) (org-set-local (quote align-mode-rules-list) (quote ((org-in-buffer-settings (regexp . "^#\\+[A-Z_]+:\\(\\s-*\\)\\S-+") (modes quote (org-mode)))))) (org-set-local (quote imenu-create-index-function) (quote org-imenu-get-tree)) (if (or (featurep (quote xemacs)) (not (boundp (quote outline-isearch-open-invisible-function)))) (org-add-hook (quote isearch-mode-end-hook) (quote org-isearch-end) (quote append) (quote local)) (org-set-local (quote outline-isearch-open-invisible-function) (function (lambda (&rest ignore) (org-show-context (quote isearch))))) (org-add-hook (quote isearch-mode-end-hook) (quote org-fix-ellipsis-at-bol) (quote append) (quote local))) ...)
  (progn (make-local-variable (quote delay-mode-hooks)) (let ((delay-mode-hooks t)) (outline-mode) (setq major-mode (quote org-mode)) (setq mode-name "Org") (progn (if (get (quote outline-mode) (quote mode-class)) (put (quote org-mode) (quote mode-class) (get (quote outline-mode) (quote mode-class)))) (if (keymap-parent org-mode-map) nil (set-keymap-parent org-mode-map (current-local-map))) (let ((parent (char-table-parent org-mode-syntax-table))) (if (and parent (not (eq parent ...))) nil (set-char-table-parent org-mode-syntax-table (syntax-table)))) (if (or (abbrev-table-get org-mode-abbrev-table :parents) (eq org-mode-abbrev-table local-abbrev-table)) nil (abbrev-table-put org-mode-abbrev-table :parents (list local-abbrev-table)))) (use-local-map org-mode-map) (set-syntax-table org-mode-syntax-table) (setq local-abbrev-table org-mode-abbrev-table) (if (featurep (quote xemacs)) (if (boundp (quote outline-mode-menu-heading)) (progn (easy-menu-remove outline-mode-menu-heading) (easy-menu-remove outline-mode-menu-show) (easy-menu-remove outline-mode-menu-hide))) (define-key org-mode-map [menu-bar headings] (quote undefined)) (define-key org-mode-map [menu-bar hide] (quote undefined)) (define-key org-mode-map [menu-bar show] (quote undefined))) (org-load-modules-maybe) (easy-menu-add org-org-menu) (easy-menu-add org-tbl-menu) (org-install-agenda-files-menu) (if org-descriptive-links (add-to-invisibility-spec (quote (org-link)))) (add-to-invisibility-spec (quote (org-cwidth))) (add-to-invisibility-spec (quote (org-hide-block . t))) (if (featurep (quote xemacs)) (progn (org-set-local (quote line-move-ignore-invisible) t))) (org-set-local (quote outline-regexp) org-outline-regexp) (org-set-local (quote outline-level) (quote org-outline-level)) (setq bidi-paragraph-direction (quote left-to-right)) (if (and org-ellipsis (fboundp (quote set-display-table-slot)) (boundp (quote buffer-display-table)) (fboundp (quote make-glyph-code))) (progn (if org-display-table nil (setq org-display-table (make-display-table))) (set-display-table-slot org-display-table 4 (vconcat (mapcar (function ...) (if ... org-ellipsis "...")))) (setq buffer-display-table org-display-table))) (org-set-regexps-and-options-for-tags) (org-set-regexps-and-options) (org-set-font-lock-defaults) (if (and org-tag-faces (not org-tags-special-faces-re)) (progn (org-set-tag-faces (quote org-tag-faces) org-tag-faces))) (org-set-local (quote calc-embedded-open-mode) "# ") (modify-syntax-entry 64 "w") (modify-syntax-entry 34 "\"") (if org-startup-truncated (setq truncate-lines t)) (if org-startup-indented (progn (require (quote org-indent)) (org-indent-mode 1))) (org-set-local (quote font-lock-unfontify-region-function) (quote org-unfontify-region)) (org-set-local (quote org-table-may-need-update) t) (org-add-hook (quote before-change-functions) (quote org-before-change-function) nil (quote local)) (org-add-hook (quote kill-buffer-hook) (quote org-check-running-clock) nil (quote local)) (org-macro-initialize-templates) (org-update-radio-target-regexp) (org-set-local (quote indent-line-function) (quote org-indent-line)) (org-set-local (quote indent-region-function) (quote org-indent-region)) (org-setup-filling) (org-setup-comments-handling) (org-element-cache-reset) (org-set-local (quote beginning-of-defun-function) (quote org-backward-element)) (org-set-local (quote end-of-defun-function) (quote org-forward-element)) (org-set-local (quote next-error-function) (quote org-occur-next-match)) (if org-enforce-todo-dependencies (add-hook (quote org-blocker-hook) (quote org-block-todo-from-children-or-siblings-or-parent)) (remove-hook (quote org-blocker-hook) (quote org-block-todo-from-children-or-siblings-or-parent))) (if org-enforce-todo-checkbox-dependencies (add-hook (quote org-blocker-hook) (quote org-block-todo-from-checkboxes)) (remove-hook (quote org-blocker-hook) (quote org-block-todo-from-checkboxes))) (org-set-local (quote align-mode-rules-list) (quote ((org-in-buffer-settings (regexp . "^#\\+[A-Z_]+:\\(\\s-*\\)\\S-+") (modes quote (org-mode)))))) (org-set-local (quote imenu-create-index-function) (quote org-imenu-get-tree)) (if (or (featurep (quote xemacs)) (not (boundp (quote outline-isearch-open-invisible-function)))) (org-add-hook (quote isearch-mode-end-hook) (quote org-isearch-end) (quote append) (quote local)) (org-set-local (quote outline-isearch-open-invisible-function) (function (lambda (&rest ignore) (org-show-context (quote isearch))))) (org-add-hook (quote isearch-mode-end-hook) (quote org-fix-ellipsis-at-bol) (quote append) (quote local))) ...))
  org-mode()
  set-auto-mode-0(org-mode nil)
  set-auto-mode()
  normal-mode(t)
  after-find-file(nil t)
  find-file-noselect-1(#<buffer x.org> "/z/x.org" nil nil "~/z/x.org" (3164340 36))
  find-file-noselect("/z/x.org" nil nil t)
  find-file("/z/x.org" t)
  call-interactively(find-file nil nil)

  reply	other threads:[~2014-02-26 13:33 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-20 22:08 [ANN] Lazy cache synchronization Nicolas Goaziou
2014-02-26 13:33 ` Michael Brand [this message]
2014-02-26 13:58   ` Nicolas Goaziou
2014-02-26 14:07     ` Michael Brand
2014-02-26 13:49 ` Nicolas Richard
2014-02-26 15:59   ` Bastien
2014-02-27  4:25   ` Daniel Clemente
2014-02-27  8:05     ` Andreas Leha

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CALn3zojtRaRurs5=goUH-_rNeLNumVQZfNMnn_6i1e=2VS2uOQ@mail.gmail.com' \
    --to=michael.ch.brand@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=n.goaziou@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).