Hi Nicolas

On Thu, Feb 20, 2014 at 11:08 PM, Nicolas Goaziou <n.goaz...@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.goaz...@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
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 via email to