From: Thorsten Jolitz <tjolitz@gmail.com>
To: emacs-orgmode@gnu.org
Subject: [BUG] in org-element (was Re: Replacing property-name hangs Emacs)
Date: Sat, 19 Jul 2014 13:28:38 +0200 [thread overview]
Message-ID: <87wqb9zixl.fsf_-_@gmail.com> (raw)
In-Reply-To: 87a98522lf.fsf@gmail.com
Thorsten Jolitz <tjolitz@gmail.com> writes:
This turned out to be an Org-mode bug.
>> Org-mode version 8.3beta (release_8.3beta-44-g05be57 @
>> /usr/share/emacs/24.3/lisp/org/lisp/)
>>
>> GNU Emacs 24.3.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.12.2) of
>> 2014-06-11 on var-lib-archbuild-staging-x86_64-jgc
Here is the recipe:
1. emacs -Q
2. M-x find-file instruments.org (content posted below)
3. M-% resource_id RET name RET
4. hit space quickly (-> accept) until Emacs hangs (100pc CPU)
PS
content of instruments.org:
#+begin_src org
* Instruments
** rhythm-section
*** harmony
**** guitar
:PROPERTIES:
:resource_id: guitar
:abbrev: g
:END:
**** piano
:PROPERTIES:
:resource_id: piano
:abbrev: p
:END:
*** rhythm
**** bass
:PROPERTIES:
:resource_id: bass
:abbrev: b
:END:
**** drums
:PROPERTIES:
:resource_id: drums
:abbrev: dr
:END:
** horns
:PROPERTIES:
:resource_id: horns
:abbrev: hrs
:END:
*** brass
**** trumpet
:PROPERTIES:
:resource_id: trumpet
:abbrev: tr
:pitch: +2
:END:
**** trombone
:PROPERTIES:
:resource_id: trombone
:abbrev: tmb
:END:
*** woodwinds
**** sopran-sax
:PROPERTIES:
:resource_id: sopran-sax
:abbrev: ss
:END:
**** alt-sax
:PROPERTIES:
:resource_id: alt-sax
:abbrev: as
:pitch: -3
:END:
**** tenor-sax
:PROPERTIES:
:resource_id: tenor-sax
:abbrev: ts
:pitch: +2
:END:
**** bariton-sax
:PROPERTIES:
:resource_id: bariton-sax
:abbrev: bs
:END:
**** flute
:PROPERTIES:
:resource_id: flute
:abbrev: fl
:END:
*** voices
**** sopran-voice
:PROPERTIES:
:resource_id: sopran-voice
:abbrev: svoc
:END:
**** alt-voice
:PROPERTIES:
:resource_id: alt-voice
:abbrev: avoc
:END:
**** tenor_voice
:PROPERTIES:
:resource_id: tenor-voice
:abbrev: tvoc
:END:
**** bariton-voice
:PROPERTIES:
:resource_id: bariton-voice
:abbrev: bvoc
:END:
*** strings
**** violin
:PROPERTIES:
:resource_id: violin
:abbrev: v
:END:
**** Cello
:PROPERTIES:
:resource_id: cello
:abbrev: c
:END:
#+end_src
Backtrace:
Debugger entered--Lisp error: (quit)
(progn (goto-char end) (skip-chars-backward " . \n") (forward-line)
(point)) (and contents-begin (progn (goto-char end)
(skip-chars-backward " . \n") (forward-line) (point))) (let*
((components (org-heading-components)) (level (nth 1 components))
(todo (nth 2 components)) (todo-type (and todo (if (member todo
org-done-keywords) (quote done) (quote todo)))) (tags (let ((raw-tags
(nth 5 components))) (and raw-tags (org-split-string raw-tags ":"))))
(raw-value (or (nth 4 components) "")) (commentedp (let
((case-fold-search nil)) (string-match (format "^%s\\( \\|$\\)"
org-comment-string) raw-value))) (archivedp (member org-archive-tag
tags)) (footnote-section-p (and org-footnote-section (string=
org-footnote-section raw-value))) (standard-props (let ((end
(save-excursion (let* ... ...) (point))) plist) (save-excursion (while
(and (null plist) (re-search-forward org-property-start-re end t))
(let (...) (if ... ...))) plist))) (time-props (save-excursion
(forward-line) (if (looking-at org-planning-or-clock-line-re) (progn
(let (... plist) (while ... ... ... ...) plist))))) (begin (point))
(end (min (save-excursion (org-end-of-subtree t t)) limit))
(pos-after-head (progn (forward-line) (point))) (contents-begin
(save-excursion (skip-chars-forward " . \n" end) (and (/= (point)
end) (line-beginning-position)))) (contents-end (and contents-begin
(progn (goto-char end) (skip-chars-backward " . \n") (forward-line)
(point))))) (if commentedp (progn (let ((case-fold-search nil)) (setq
raw-value (replace-regexp-in-string (concat (regexp-quote
org-comment-string) "\\(?: \\|$\\)") "" raw-value))))) (if archivedp
(progn (setq tags (delete org-archive-tag tags)))) (let ((headline
(list (quote headline) (nconc (list :raw-value raw-value :begin begin
:end end :pre-blank (if ... 0 ...) :contents-begin contents-begin
:contents-end contents-end :level level :priority (nth 3 components)
:tags tags :todo-keyword todo :todo-type todo-type :post-blank
(count-lines ... end) :footnote-section-p footnote-section-p
:archivedp archivedp :commentedp commentedp) time-props
standard-props)))) (let ((alt-title (org-element-property :ALT_TITLE
headline))) (if alt-title (progn (org-element-put-property headline
:alt-title (if raw-secondary-p alt-title
(org-element-parse-secondary-string alt-title ... headline))))))
(org-element-put-property headline :title (if raw-secondary-p
raw-value (org-element-parse-secondary-string raw-value
(org-element-restriction (quote headline)) headline)))))
(save-excursion (let* ((components (org-heading-components)) (level
(nth 1 components)) (todo (nth 2 components)) (todo-type (and todo (if
(member todo org-done-keywords) (quote done) (quote todo)))) (tags
(let ((raw-tags (nth 5 components))) (and raw-tags (org-split-string
raw-tags ":")))) (raw-value (or (nth 4 components) "")) (commentedp
(let ((case-fold-search nil)) (string-match (format "^%s\\( \\|$\\)"
org-comment-string) raw-value))) (archivedp (member org-archive-tag
tags)) (footnote-section-p (and org-footnote-section (string=
org-footnote-section raw-value))) (standard-props (let ((end
(save-excursion ... ...)) plist) (save-excursion (while (and ... ...)
(let ... ...)) plist))) (time-props (save-excursion (forward-line) (if
(looking-at org-planning-or-clock-line-re) (progn (let
... ... plist))))) (begin (point)) (end (min (save-excursion
(org-end-of-subtree t t)) limit)) (pos-after-head (progn
(forward-line) (point))) (contents-begin (save-excursion
(skip-chars-forward " . \n" end) (and (/= (point) end)
(line-beginning-position)))) (contents-end (and contents-begin (progn
(goto-char end) (skip-chars-backward " . \n") (forward-line)
(point))))) (if commentedp (progn (let ((case-fold-search nil)) (setq
raw-value (replace-regexp-in-string (concat ... "\\(?: \\|$\\)") ""
raw-value))))) (if archivedp (progn (setq tags (delete org-archive-tag
tags)))) (let ((headline (list (quote headline) (nconc (list
:raw-value raw-value :begin begin :end end :pre-blank
... :contents-begin contents-begin :contents-end contents-end :level
level :priority ... :tags tags :todo-keyword todo :todo-type todo-type
:post-blank ... :footnote-section-p footnote-section-p :archivedp
archivedp :commentedp commentedp) time-props standard-props)))) (let
((alt-title (org-element-property :ALT_TITLE headline))) (if alt-title
(progn (org-element-put-property headline :alt-title (if
raw-secondary-p alt-title ...))))) (org-element-put-property headline
:title (if raw-secondary-p raw-value
(org-element-parse-secondary-string raw-value (org-element-restriction
(quote headline)) headline)))))) org-element-headline-parser(116 t)
(cond ((eq special (quote item)) (org-element-item-parser limit
structure raw-secondary-p)) ((eq special (quote table-row))
(org-element-table-row-parser limit)) ((eq special (quote
node-property)) (org-element-node-property-parser limit)) ((let*
((org-called-with-limited-levels t) (org-outline-regexp
(org-get-limited-outline-regexp)) (outline-regexp org-outline-regexp)
(org-outline-regexp-bol (concat "^" org-outline-regexp)))
(org-at-heading-p)) (org-element-headline-parser limit
raw-secondary-p)) ((eq special (quote section))
(org-element-section-parser limit)) ((eq special (quote
first-section)) (org-element-section-parser (or (save-excursion (let*
((org-called-with-limited-levels t) (org-outline-regexp ...)
(outline-regexp org-outline-regexp) (org-outline-regexp-bol ...))
(outline-next-heading))) limit))) ((not (bolp))
(org-element-paragraph-parser limit (list (point)))) ((looking-at
org-planning-or-clock-line-re) (if (equal (match-string 1)
org-clock-string) (org-element-clock-parser limit)
(org-element-planning-parser limit))) ((org-at-heading-p)
(org-element-inlinetask-parser limit raw-secondary-p)) (t (let
((affiliated (org-element--collect-affiliated-keywords limit))) (cond
((and (cdr affiliated) (>= (point) limit)) (goto-char (car
affiliated)) (org-element-keyword-parser limit nil)) ((looking-at "[
]*\\\\begin{[A-Za-z0-9*]+}\\(\\[.*?\\]\\|{.*?}\\)*[ ]*$")
(org-element-latex-environment-parser limit affiliated)) ((looking-at
org-drawer-regexp) (if (equal (match-string 1) "PROPERTIES")
(org-element-property-drawer-parser limit affiliated)
(org-element-drawer-parser limit affiliated))) ((looking-at "[ ]*:\\(
\\|$\\)") (org-element-fixed-width-parser limit affiliated))
((looking-at "[ ]*#") (goto-char (match-end 0)) (cond ((looking-at
"\\(?: \\|$\\)") (beginning-of-line) (org-element-comment-parser limit
affiliated)) ((looking-at "\\+BEGIN_\\(\\S-+\\)") (beginning-of-line)
(let ... ...)) ((looking-at "\\+CALL:") (beginning-of-line)
(org-element-babel-call-parser limit affiliated)) ((looking-at
"\\+BEGIN:? ") (beginning-of-line) (org-element-dynamic-block-parser
limit affiliated)) ((looking-at "\\+\\S-+:") (beginning-of-line)
(org-element-keyword-parser limit affiliated)) (t (beginning-of-line)
(org-element-paragraph-parser limit affiliated)))) ((looking-at
org-footnote-definition-re) (org-element-footnote-definition-parser
limit affiliated)) ((looking-at "[ ]*-\\{5,\\}[ ]*$")
(org-element-horizontal-rule-parser limit affiliated)) ((looking-at
"%%(") (org-element-diary-sexp-parser limit affiliated))
((org-at-table-p t) (org-element-table-parser limit affiliated))
((looking-at (org-item-re)) (org-element-plain-list-parser limit
affiliated (or structure (org-element--list-struct limit)))) (t
(org-element-paragraph-parser limit affiliated)))))) (let
((case-fold-search t) (raw-secondary-p (and granularity (not (eq
granularity (quote object)))))) (cond ((eq special (quote item))
(org-element-item-parser limit structure raw-secondary-p)) ((eq
special (quote table-row)) (org-element-table-row-parser limit)) ((eq
special (quote node-property)) (org-element-node-property-parser
limit)) ((let* ((org-called-with-limited-levels t) (org-outline-regexp
(org-get-limited-outline-regexp)) (outline-regexp org-outline-regexp)
(org-outline-regexp-bol (concat "^" org-outline-regexp)))
(org-at-heading-p)) (org-element-headline-parser limit
raw-secondary-p)) ((eq special (quote section))
(org-element-section-parser limit)) ((eq special (quote
first-section)) (org-element-section-parser (or (save-excursion (let*
(... ... ... ...) (outline-next-heading))) limit))) ((not (bolp))
(org-element-paragraph-parser limit (list (point)))) ((looking-at
org-planning-or-clock-line-re) (if (equal (match-string 1)
org-clock-string) (org-element-clock-parser limit)
(org-element-planning-parser limit))) ((org-at-heading-p)
(org-element-inlinetask-parser limit raw-secondary-p)) (t (let
((affiliated (org-element--collect-affiliated-keywords limit))) (cond
((and (cdr affiliated) (>= ... limit)) (goto-char (car affiliated))
(org-element-keyword-parser limit nil)) ((looking-at "[
]*\\\\begin{[A-Za-z0-9*]+}\\(\\[.*?\\]\\|{.*?}\\)*[ ]*$")
(org-element-latex-environment-parser limit affiliated)) ((looking-at
org-drawer-regexp) (if (equal ... "PROPERTIES")
(org-element-property-drawer-parser limit affiliated)
(org-element-drawer-parser limit affiliated))) ((looking-at "[ ]*:\\(
\\|$\\)") (org-element-fixed-width-parser limit affiliated))
((looking-at "[ ]*#") (goto-char (match-end 0)) (cond (... ... ...)
(... ... ...) (... ... ...) (... ... ...) (... ... ...) (t ... ...)))
((looking-at org-footnote-definition-re)
(org-element-footnote-definition-parser limit affiliated))
((looking-at "[ ]*-\\{5,\\}[ ]*$") (org-element-horizontal-rule-parser
limit affiliated)) ((looking-at "%%(") (org-element-diary-sexp-parser
limit affiliated)) ((org-at-table-p t) (org-element-table-parser limit
affiliated)) ((looking-at (org-item-re))
(org-element-plain-list-parser limit affiliated (or structure ...)))
(t (org-element-paragraph-parser limit affiliated)))))))
(save-excursion (let ((case-fold-search t) (raw-secondary-p (and
granularity (not (eq granularity (quote object)))))) (cond ((eq
special (quote item)) (org-element-item-parser limit structure
raw-secondary-p)) ((eq special (quote table-row))
(org-element-table-row-parser limit)) ((eq special (quote
node-property)) (org-element-node-property-parser limit)) ((let*
((org-called-with-limited-levels t) (org-outline-regexp
(org-get-limited-outline-regexp)) (outline-regexp org-outline-regexp)
(org-outline-regexp-bol (concat "^" org-outline-regexp)))
(org-at-heading-p)) (org-element-headline-parser limit
raw-secondary-p)) ((eq special (quote section))
(org-element-section-parser limit)) ((eq special (quote
first-section)) (org-element-section-parser (or (save-excursion (let*
... ...)) limit))) ((not (bolp)) (org-element-paragraph-parser limit
(list (point)))) ((looking-at org-planning-or-clock-line-re) (if
(equal (match-string 1) org-clock-string) (org-element-clock-parser
limit) (org-element-planning-parser limit))) ((org-at-heading-p)
(org-element-inlinetask-parser limit raw-secondary-p)) (t (let
((affiliated (org-element--collect-affiliated-keywords limit))) (cond
((and ... ...) (goto-char ...) (org-element-keyword-parser limit nil))
((looking-at "[ ]*\\\\begin{[A-Za-z0-9*]+}\\(\\[.*?\\]\\|{.*?}\\)*[
]*$") (org-element-latex-environment-parser limit affiliated))
((looking-at org-drawer-regexp) (if ... ... ...)) ((looking-at "[
]*:\\( \\|$\\)") (org-element-fixed-width-parser limit affiliated))
((looking-at "[ ]*#") (goto-char ...) (cond ... ... ... ... ... ...))
((looking-at org-footnote-definition-re)
(org-element-footnote-definition-parser limit affiliated))
((looking-at "[ ]*-\\{5,\\}[ ]*$") (org-element-horizontal-rule-parser
limit affiliated)) ((looking-at "%%(") (org-element-diary-sexp-parser
limit affiliated)) ((org-at-table-p t) (org-element-table-parser limit
affiliated)) ((looking-at ...) (org-element-plain-list-parser limit
affiliated ...)) (t (org-element-paragraph-parser limit
affiliated)))))))) org-element--current-element(116 element nil nil)
(setq element (org-element--current-element end (quote element)
special-flag (org-element-property :structure parent))) (if element
nil (setq element (org-element--current-element end (quote element)
special-flag (org-element-property :structure parent)))
(org-element-put-property element :parent parent)
(org-element--cache-put element)) (while t (if syncp (progn (cond ((=
(point) pos) (throw (quote exit) parent))
((org-element--cache-interrupt-p time-limit) (throw (quote interrupt)
nil))))) (if element nil (setq element (org-element--current-element
end (quote element) special-flag (org-element-property :structure
parent))) (org-element-put-property element :parent parent)
(org-element--cache-put element)) (let ((elem-end
(org-element-property :end element)) (type (org-element-type
element))) (cond ((and (<= elem-end pos) (/= (point-max) elem-end))
(goto-char elem-end)) ((not (memq type org-element-greater-elements))
(throw (quote exit) element)) ((let ((cbeg (org-element-property
:contents-begin element)) (cend (org-element-property :contents-end
element))) (if (or syncp (and cbeg cend ... ...)) (progn (goto-char
...) (setq next nil special-flag ... parent element end cend))))) (t
(throw (quote exit) element)))) (setq element nil)) (let ((end (or
(org-element-property :end element) (save-excursion (let*
((org-called-with-limited-levels t) (org-outline-regexp ...)
(outline-regexp org-outline-regexp) (org-outline-regexp-bol ...))
(outline-next-heading)) (point)))) (parent element) special-flag)
(while t (if syncp (progn (cond ((= (point) pos) (throw (quote exit)
parent)) ((org-element--cache-interrupt-p time-limit) (throw (quote
interrupt) nil))))) (if element nil (setq element
(org-element--current-element end (quote element) special-flag
(org-element-property :structure parent))) (org-element-put-property
element :parent parent) (org-element--cache-put element)) (let
((elem-end (org-element-property :end element)) (type
(org-element-type element))) (cond ((and (<= elem-end pos) (/=
(point-max) elem-end)) (goto-char elem-end)) ((not (memq type
org-element-greater-elements)) (throw (quote exit) element)) ((let
((cbeg ...) (cend ...)) (if (or syncp ...) (progn ... ...)))) (t
(throw (quote exit) element)))) (setq element nil))) (let* ((cached
(and (org-element--cache-active-p) (org-element--cache-find pos nil)))
(begin (org-element-property :begin cached)) element next) (cond ((not
cached) (if (let* ((org-called-with-limited-levels t)
(org-outline-regexp (org-get-limited-outline-regexp)) (outline-regexp
org-outline-regexp) (org-outline-regexp-bol (concat "^"
org-outline-regexp))) (outline-previous-heading)) (progn
(forward-line))) (skip-chars-forward " . \n") (beginning-of-line))
((= pos begin) (throw (quote exit) (if syncp (org-element-property
:parent cached) cached))) ((re-search-backward (let*
((org-called-with-limited-levels t) (org-outline-regexp
(org-get-limited-outline-regexp)) (outline-regexp org-outline-regexp)
(org-outline-regexp-bol (concat "^" org-outline-regexp)))
org-outline-regexp-bol) begin t) (forward-line) (skip-chars-forward "
\n") (beginning-of-line)) (t (let ((up cached) (pos (if (= ... pos)
(1- pos) pos))) (goto-char (or (org-element-property :contents-begin
cached) begin)) (while (let ((end ...)) (and (<= end pos) (goto-char
end) (setq up ...)))) (cond ((not up)) ((eobp) (setq element up)) (t
(setq element up next (point))))))) (let ((end (or
(org-element-property :end element) (save-excursion (let*
(... ... ... ...) (outline-next-heading)) (point)))) (parent element)
special-flag) (while t (if syncp (progn (cond ((= ... pos) (throw
... parent)) ((org-element--cache-interrupt-p time-limit) (throw
... nil))))) (if element nil (setq element
(org-element--current-element end (quote element) special-flag
(org-element-property :structure parent))) (org-element-put-property
element :parent parent) (org-element--cache-put element)) (let
((elem-end (org-element-property :end element)) (type
(org-element-type element))) (cond ((and (<= elem-end pos) (/=
... elem-end)) (goto-char elem-end)) ((not (memq type
org-element-greater-elements)) (throw (quote exit) element)) ((let
(... ...) (if ... ...))) (t (throw (quote exit) element)))) (setq
element nil)))) (save-restriction (widen) (goto-char pos) (let*
((cached (and (org-element--cache-active-p) (org-element--cache-find
pos nil))) (begin (org-element-property :begin cached)) element next)
(cond ((not cached) (if (let* ((org-called-with-limited-levels t)
(org-outline-regexp ...) (outline-regexp org-outline-regexp)
(org-outline-regexp-bol ...)) (outline-previous-heading)) (progn
(forward-line))) (skip-chars-forward " . \n") (beginning-of-line))
((= pos begin) (throw (quote exit) (if syncp (org-element-property
:parent cached) cached))) ((re-search-backward (let*
((org-called-with-limited-levels t) (org-outline-regexp ...)
(outline-regexp org-outline-regexp) (org-outline-regexp-bol ...))
org-outline-regexp-bol) begin t) (forward-line) (skip-chars-forward "
\n") (beginning-of-line)) (t (let ((up cached) (pos (if ... ... pos)))
(goto-char (or (org-element-property :contents-begin cached) begin))
(while (let (...) (and ... ... ...))) (cond ((not up)) ((eobp) (setq
element up)) (t (setq element up next ...)))))) (let ((end (or
(org-element-property :end element) (save-excursion (let* ... ...)
(point)))) (parent element) special-flag) (while t (if syncp (progn
(cond (... ...) (... ...)))) (if element nil (setq element
(org-element--current-element end (quote element) special-flag
(org-element-property :structure parent))) (org-element-put-property
element :parent parent) (org-element--cache-put element)) (let
((elem-end (org-element-property :end element)) (type
(org-element-type element))) (cond ((and ... ...) (goto-char
elem-end)) ((not ...) (throw ... element)) ((let ... ...)) (t (throw
... element)))) (setq element nil))))) (save-excursion
(save-restriction (widen) (goto-char pos) (let* ((cached (and
(org-element--cache-active-p) (org-element--cache-find pos nil)))
(begin (org-element-property :begin cached)) element next) (cond ((not
cached) (if (let* (... ... ... ...) (outline-previous-heading)) (progn
(forward-line))) (skip-chars-forward " . \n") (beginning-of-line))
((= pos begin) (throw (quote exit) (if syncp (org-element-property
:parent cached) cached))) ((re-search-backward (let* (... ... ... ...)
org-outline-regexp-bol) begin t) (forward-line) (skip-chars-forward "
\n") (beginning-of-line)) (t (let ((up cached) (pos ...)) (goto-char
(or ... begin)) (while (let ... ...)) (cond (...) (... ...) (t
...))))) (let ((end (or (org-element-property :end element)
(save-excursion ... ...))) (parent element) special-flag) (while t (if
syncp (progn (cond ... ...))) (if element nil (setq element
(org-element--current-element end ... special-flag ...))
(org-element-put-property element :parent parent)
(org-element--cache-put element)) (let ((elem-end ...) (type ...))
(cond (... ...) (... ...) (...) (t ...))) (setq element nil))))))
(catch (quote exit) (save-excursion (save-restriction (widen)
(goto-char pos) (let* ((cached (and (org-element--cache-active-p)
(org-element--cache-find pos nil))) (begin (org-element-property
:begin cached)) element next) (cond ((not cached) (if (let* ... ...)
(progn ...)) (skip-chars-forward " . \n") (beginning-of-line)) ((=
pos begin) (throw (quote exit) (if syncp ... cached)))
((re-search-backward (let* ... org-outline-regexp-bol) begin t)
(forward-line) (skip-chars-forward " . \n") (beginning-of-line)) (t
(let (... ...) (goto-char ...) (while ...) (cond ... ... ...)))) (let
((end (or ... ...)) (parent element) special-flag) (while t (if syncp
(progn ...)) (if element nil (setq element ...)
(org-element-put-property element :parent parent)
(org-element--cache-put element)) (let (... ...) (cond
... ... ... ...)) (setq element nil))))))) org-element--parse-to(120 t
nil) (let ((parent (org-element--parse-to limit t time-limit))) (aset
request 5 parent) (aset request 6 2)) (let ((limit (+ (aref request 1)
(aref request 3) extra))) (if (and threshold (< threshold limit))
(progn (throw (quote interrupt) nil))) (let ((parent
(org-element--parse-to limit t time-limit))) (aset request 5 parent)
(aset request 6 2))) (progn (if (equal (aref request 0) next) (progn
(aset (nth 1 org-element--cache-sync-requests) 6 1) (throw (quote
quit) t))) (let ((limit (+ (aref request 1) (aref request 3) extra)))
(if (and threshold (< threshold limit)) (progn (throw (quote
interrupt) nil))) (let ((parent (org-element--parse-to limit t
time-limit))) (aset request 5 parent) (aset request 6 2)))) (if (=
(aref request 6) 1) (progn (if (equal (aref request 0) next) (progn
(aset (nth 1 org-element--cache-sync-requests) 6 1) (throw (quote
quit) t))) (let ((limit (+ (aref request 1) (aref request 3) extra)))
(if (and threshold (< threshold limit)) (progn (throw (quote
interrupt) nil))) (let ((parent (org-element--parse-to limit t
time-limit))) (aset request 5 parent) (aset request 6 2))))) (catch
(quote quit) (if (= (aref request 6) 0) (progn (catch (quote
end-phase) (let ((beg (aref request 0)) (end (aref request 2))
(outreach (aref request 4))) (while t (if
(org-element--cache-interrupt-p time-limit) (progn ...)) (let
(... data data-key) (while node ...) (if data ... ...))))))) (if (=
(aref request 6) 1) (progn (if (equal (aref request 0) next) (progn
(aset (nth 1 org-element--cache-sync-requests) 6 1) (throw (quote
quit) t))) (let ((limit (+ (aref request 1) (aref request 3) extra)))
(if (and threshold (< threshold limit)) (progn (throw (quote
interrupt) nil))) (let ((parent (org-element--parse-to limit t
time-limit))) (aset request 5 parent) (aset request 6 2))))) (let
((start (aref request 0)) (offset (aref request 3)) (parent (aref
request 5)) (node (org-element--cache-root)) (stack (list nil)) (leftp
t) exit-flag) (if (and (not parent) (zerop offset)) (progn (throw
(quote quit) t))) (while node (let* ((data (progn (aref node 2))) (key
(org-element--cache-key data))) (if (and leftp (progn (aref node 0))
(not (org-element--cache-key-less-p key start))) (progn (setq stack
(cons node stack)) (setq node (progn ...))) (if
(org-element--cache-key-less-p key start) nil (if (equal key next)
(progn ...)) (if (or exit-flag ...) (progn ... ... ...)) (if (zerop
offset) nil (org-element--cache-shift-positions data offset) (progn
...)) (let (...) (while ... ...) (cond ... ...) (if ... ...))) (setq
node (if (setq leftp ...) (progn ...) (car ...)))))) t))
org-element--cache-process-request([1642 134 123 -7 (property-drawer
(:begin 57 :end 123 :contents-begin 73 :contents-end 113 :post-blank 1
:post-affiliated 57 :parent nil)) nil 2] nil 167 nil -7) (while
org-element--cache-sync-requests (setq request (car
org-element--cache-sync-requests) next (nth 1
org-element--cache-sync-requests)) (org-element--cache-process-request
request (and next (aref next 0)) threshold (and (not threshold)
(time-add (current-time) org-element-cache-sync-duration)) (or extra
0)) (if next (progn (let* ((v next)) (aset v 3 (+ (aref v 3) (aref
request 3)))) (aset next 2 (aref request 2)))) (setq
org-element--cache-sync-requests (cdr
org-element--cache-sync-requests))) (catch (quote interrupt) (while
org-element--cache-sync-requests (setq request (car
org-element--cache-sync-requests) next (nth 1
org-element--cache-sync-requests)) (org-element--cache-process-request
request (and next (aref next 0)) threshold (and (not threshold)
(time-add (current-time) org-element-cache-sync-duration)) (or extra
0)) (if next (progn (let* ((v next)) (aset v 3 (+ (aref v 3) (aref
request 3)))) (aset next 2 (aref request 2)))) (setq
org-element--cache-sync-requests (cdr
org-element--cache-sync-requests)))) (let ((inhibit-quit t) request
next) (if org-element--cache-sync-timer (progn (cancel-timer
org-element--cache-sync-timer))) (catch (quote interrupt) (while
org-element--cache-sync-requests (setq request (car
org-element--cache-sync-requests) next (nth 1
org-element--cache-sync-requests)) (org-element--cache-process-request
request (and next (aref next 0)) threshold (and (not threshold)
(time-add (current-time) org-element-cache-sync-duration)) (or extra
0)) (if next (progn (let* ((v next)) (aset v 3 (+ ... ...))) (aset
next 2 (aref request 2)))) (setq org-element--cache-sync-requests (cdr
org-element--cache-sync-requests)))) (if
org-element--cache-sync-requests (org-element--cache-set-timer buffer)
(clrhash org-element--cache-sync-keys))) (save-current-buffer
(set-buffer buffer) (let ((inhibit-quit t) request next) (if
org-element--cache-sync-timer (progn (cancel-timer
org-element--cache-sync-timer))) (catch (quote interrupt) (while
org-element--cache-sync-requests (setq request (car
org-element--cache-sync-requests) next (nth 1
org-element--cache-sync-requests)) (org-element--cache-process-request
request (and next (aref next 0)) threshold (and (not threshold)
(time-add (current-time) org-element-cache-sync-duration)) (or extra
0)) (if next (progn (let* (...) (aset v 3 ...)) (aset next 2 (aref
request 2)))) (setq org-element--cache-sync-requests (cdr
org-element--cache-sync-requests)))) (if
org-element--cache-sync-requests (org-element--cache-set-timer buffer)
(clrhash org-element--cache-sync-keys)))) (progn (save-current-buffer
(set-buffer buffer) (let ((inhibit-quit t) request next) (if
org-element--cache-sync-timer (progn (cancel-timer
org-element--cache-sync-timer))) (catch (quote interrupt) (while
org-element--cache-sync-requests (setq request (car
org-element--cache-sync-requests) next (nth 1
org-element--cache-sync-requests)) (org-element--cache-process-request
request (and next (aref next 0)) threshold (and (not threshold)
(time-add ... org-element-cache-sync-duration)) (or extra 0)) (if next
(progn (let* ... ...) (aset next 2 ...))) (setq
org-element--cache-sync-requests (cdr
org-element--cache-sync-requests)))) (if
org-element--cache-sync-requests (org-element--cache-set-timer buffer)
(clrhash org-element--cache-sync-keys))))) (if (buffer-live-p buffer)
(progn (save-current-buffer (set-buffer buffer) (let ((inhibit-quit t)
request next) (if org-element--cache-sync-timer (progn (cancel-timer
org-element--cache-sync-timer))) (catch (quote interrupt) (while
org-element--cache-sync-requests (setq request (car
org-element--cache-sync-requests) next (nth 1
org-element--cache-sync-requests)) (org-element--cache-process-request
request (and next ...) threshold (and ... ...) (or extra 0)) (if next
(progn ... ...)) (setq org-element--cache-sync-requests (cdr
org-element--cache-sync-requests)))) (if
org-element--cache-sync-requests (org-element--cache-set-timer buffer)
(clrhash org-element--cache-sync-keys))))))
org-element--cache-sync(#<buffer instruments.org> 167 -7) (progn
(org-element--cache-sync (current-buffer) end offset)) (if next (progn
(org-element--cache-sync (current-buffer) end offset))) (if (and next
(zerop (aref next 6)) (> (setq delete-to (+ (aref next 2) (aref next
3))) end) (<= (setq delete-from (aref next 1)) end)) (progn (let* ((v
next)) (aset v 3 (+ (aref v 3) offset))) (if (> beg delete-from) (let
((up (aref next 5))) (while up (org-element--cache-shift-positions up
offset (quote (:contents-end :end))) (setq up (org-element-property
:parent up)))) (let ((first (org-element--cache-for-removal beg
delete-to offset))) (if first (progn (aset next 0
(org-element--cache-key first)) (aset next 1 (org-element-property
:begin first)) (aset next 5 (org-element-property :parent first)))))))
(if next (progn (org-element--cache-sync (current-buffer) end
offset))) (let ((first (org-element--cache-for-removal beg end
offset))) (if first (setq org-element--cache-sync-requests (cons (let
((beg ...) (key ...)) (cond (... ...) (...) (t ...)))
org-element--cache-sync-requests)) (if
org-element--cache-sync-requests (progn (let* ((v ...)) (aset v 3 (+
... offset)))))))) (let ((next (car org-element--cache-sync-requests))
delete-to delete-from) (if (and next (zerop (aref next 6)) (> (setq
delete-to (+ (aref next 2) (aref next 3))) end) (<= (setq delete-from
(aref next 1)) end)) (progn (let* ((v next)) (aset v 3 (+ (aref v 3)
offset))) (if (> beg delete-from) (let ((up (aref next 5))) (while up
(org-element--cache-shift-positions up offset (quote ...)) (setq up
(org-element-property :parent up)))) (let ((first
(org-element--cache-for-removal beg delete-to offset))) (if first
(progn (aset next 0 ...) (aset next 1 ...) (aset next 5 ...)))))) (if
next (progn (org-element--cache-sync (current-buffer) end offset)))
(let ((first (org-element--cache-for-removal beg end offset))) (if
first (setq org-element--cache-sync-requests (cons (let (... ...)
(cond ... ... ...)) org-element--cache-sync-requests)) (if
org-element--cache-sync-requests (progn (let* (...) (aset v 3
...)))))))) org-element--cache-submit-request(144 167 -7) (let
((offset (- end beg pre))) (org-element--cache-submit-request top (-
bottom offset) offset)) (let ((top (point)) (bottom (save-excursion
(goto-char end) (line-end-position)))) (if (cond ((memql
org-element--cache-change-warning (quote (t))) t) ((eql
org-element--cache-change-warning (quote headline)) (not (and (let*
(... ... ... ...) (org-at-heading-p)) (= (line-end-position)
bottom)))) (t (let ((case-fold-search t)) (re-search-forward
org-element--cache-sensitive-re bottom t)))) (progn (let*
((org-called-with-limited-levels t) (org-outline-regexp
(org-get-limited-outline-regexp)) (outline-regexp org-outline-regexp)
(org-outline-regexp-bol (concat "^" org-outline-regexp))) (setq top
(progn (goto-char top) (if (outline-previous-heading) (progn ...))
(point))) (setq bottom (progn (goto-char bottom) (if
(outline-next-heading) (1- ...) (point))))))) (let ((offset (- end beg
pre))) (org-element--cache-submit-request top (- bottom offset)
offset))) (progn (let ((top (point)) (bottom (save-excursion
(goto-char end) (line-end-position)))) (if (cond ((memql
org-element--cache-change-warning (quote (t))) t) ((eql
org-element--cache-change-warning (quote headline)) (not (and (let*
... ...) (= ... bottom)))) (t (let ((case-fold-search t))
(re-search-forward org-element--cache-sensitive-re bottom t)))) (progn
(let* ((org-called-with-limited-levels t) (org-outline-regexp
(org-get-limited-outline-regexp)) (outline-regexp org-outline-regexp)
(org-outline-regexp-bol (concat "^" org-outline-regexp))) (setq top
(progn (goto-char top) (if ... ...) (point))) (setq bottom (progn
(goto-char bottom) (if ... ... ...)))))) (let ((offset (- end beg
pre))) (org-element--cache-submit-request top (- bottom offset)
offset)))) (unwind-protect (progn (let ((top (point)) (bottom
(save-excursion (goto-char end) (line-end-position)))) (if (cond
((memql org-element--cache-change-warning (quote ...)) t) ((eql
org-element--cache-change-warning (quote headline)) (not (and
... ...))) (t (let (...) (re-search-forward
org-element--cache-sensitive-re bottom t)))) (progn (let*
((org-called-with-limited-levels t) (org-outline-regexp ...)
(outline-regexp org-outline-regexp) (org-outline-regexp-bol ...))
(setq top (progn ... ... ...)) (setq bottom (progn ... ...))))) (let
((offset (- end beg pre))) (org-element--cache-submit-request top (-
bottom offset) offset)))) (set-match-data save-match-data-internal
(quote evaporate))) (let ((save-match-data-internal (match-data)))
(unwind-protect (progn (let ((top (point)) (bottom (save-excursion
(goto-char end) (line-end-position)))) (if (cond ((memql
org-element--cache-change-warning ...) t) ((eql
org-element--cache-change-warning ...) (not ...)) (t (let ... ...)))
(progn (let* (... ... ... ...) (setq top ...) (setq bottom ...))))
(let ((offset (- end beg pre))) (org-element--cache-submit-request top
(- bottom offset) offset)))) (set-match-data save-match-data-internal
(quote evaporate)))) (save-restriction (widen) (goto-char beg)
(beginning-of-line) (let ((save-match-data-internal (match-data)))
(unwind-protect (progn (let ((top (point)) (bottom (save-excursion
... ...))) (if (cond (... t) (... ...) (t ...)) (progn (let*
... ... ...))) (let ((offset ...)) (org-element--cache-submit-request
top (- bottom offset) offset)))) (set-match-data
save-match-data-internal (quote evaporate))))) (save-excursion
(save-restriction (widen) (goto-char beg) (beginning-of-line) (let
((save-match-data-internal (match-data))) (unwind-protect (progn (let
((top ...) (bottom ...)) (if (cond ... ... ...) (progn ...)) (let
(...) (org-element--cache-submit-request top ... offset))))
(set-match-data save-match-data-internal (quote evaporate)))))) (progn
(save-excursion (save-restriction (widen) (goto-char beg)
(beginning-of-line) (let ((save-match-data-internal (match-data)))
(unwind-protect (progn (let (... ...) (if ... ...) (let ... ...)))
(set-match-data save-match-data-internal (quote evaporate))))))
(org-element--cache-set-timer (current-buffer))) (if
(org-element--cache-active-p) (progn (save-excursion (save-restriction
(widen) (goto-char beg) (beginning-of-line) (let
((save-match-data-internal (match-data))) (unwind-protect (progn (let
... ... ...)) (set-match-data save-match-data-internal (quote
evaporate)))))) (org-element--cache-set-timer (current-buffer))))
org-element--cache-after-change(149 153 11) replace-match("name" nil
t) replace-match-maybe-edit("name" nil t nil (149 160 #<buffer
instruments.org>)) perform-replace("resource_id" "name" t nil nil nil
nil nil nil) query-replace("resource_id" "name" nil nil nil)
call-interactively(query-replace nil nil)
--
cheers,
Thorsten
next prev parent reply other threads:[~2014-07-19 11:29 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-18 22:47 Replacing property-name hangs Emacs Thorsten Jolitz
2014-07-19 8:07 ` Thorsten Jolitz
2014-07-19 11:28 ` Thorsten Jolitz [this message]
2014-07-20 17:40 ` [BUG] in org-element (was Re: Replacing property-name hangs Emacs) Nicolas Goaziou
2014-07-21 6:58 ` Thorsten Jolitz
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wqb9zixl.fsf_-_@gmail.com \
--to=tjolitz@gmail.com \
--cc=emacs-orgmode@gnu.org \
/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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.