summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2014-06-14 15:27:45 (GMT)
committer Nicolas Goaziou <mail@nicolasgoaziou.fr>2014-06-19 20:32:22 (GMT)
commit2084ff06d8b10f4c26be0b3316a949585a87e439 (patch)
tree6c8b090ce597ab32c3ce4ec631edf44906c43573
parentc6cc27c5ec41d447f7ea0f45e153c9352f8a6403 (diff)
downloadorg-mode-2084ff06d8b10f4c26be0b3316a949585a87e439.zip
org-mode-2084ff06d8b10f4c26be0b3316a949585a87e439.tar.gz
org-element: Tiny refactoring
* lisp/org-element.el (org-element--cache-sync): Do not check return value from `org-element--cache-process-request'. (org-element--cache-process-request): Throw `interrupt' when the request cannot be processed. (org-element--cache-process-request): Do not catch interruption from `org-element--parse-to'. (org-element--parse-to): Throw `interrupt' when the process stops before finding the result.
-rw-r--r--lisp/org-element.el38
1 files changed, 18 insertions, 20 deletions
diff --git a/lisp/org-element.el b/lisp/org-element.el
index f0fc09a..61e8965 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -5043,14 +5043,13 @@ state."
(while org-element--cache-sync-requests
(setq request (car org-element--cache-sync-requests)
next (nth 1 org-element--cache-sync-requests))
- (or (org-element--cache-process-request
- request
- (and next (aref next 0))
- threshold
- (and (not threshold)
- (time-add (current-time)
- org-element-cache-sync-duration)))
- (throw 'interrupt t))
+ (org-element--cache-process-request
+ request
+ (and next (aref next 0))
+ threshold
+ (and (not threshold)
+ (time-add (current-time)
+ org-element-cache-sync-duration)))
;; Request processed. Merge current and next offsets and
;; transfer phase number and ending position.
(when next
@@ -5078,8 +5077,8 @@ stops as soon as a shifted element begins after it.
When non-nil, TIME-LIMIT is a time value. Synchronization stops
after this time or when Emacs exits idle state.
-Return nil if the process stops before completing the request,
-t otherwise."
+Throw `interrupt' if the process stops before completing the
+request."
(catch 'quit
(when (= (aref request 4) 0)
;; Phase 1.
@@ -5100,7 +5099,7 @@ t otherwise."
(while t
(when (org-element--cache-interrupt-p time-limit)
(aset request 3 deleted-parent)
- (throw 'quit nil))
+ (throw 'interrupt nil))
;; Find first element in cache with key BEG or after it.
;; We don't use `org-element--cache-find' because it
;; couldn't reach orphaned elements past NEXT. Moreover,
@@ -5178,12 +5177,11 @@ t otherwise."
;; to shift and re-parent.
(when (equal (aref request 0) next) (throw 'quit t))
(let ((limit (+ (aref request 1) (aref request 2))))
- (when (and threshold (< threshold limit)) (throw 'quit nil))
+ (when (and threshold (< threshold limit)) (throw 'interrupt nil))
(let ((parent (org-element--parse-to limit t time-limit)))
- (if (eq parent 'interrupted) (throw 'quit nil)
- (aset request 3 parent)
- (aset request 4 2)
- (throw 'end-phase nil))))))
+ (aset request 3 parent)
+ (aset request 4 2)
+ (throw 'end-phase nil)))))
;; Phase 3.
;;
;; Shift all elements starting from key START, but before NEXT, by
@@ -5218,7 +5216,7 @@ t otherwise."
(when (or exit-flag (org-element--cache-interrupt-p time-limit))
(aset request 0 key)
(aset request 3 parent)
- (throw 'quit nil))
+ (throw 'interrupt nil))
;; Shift element.
(unless (zerop offset)
(org-element--cache-shift-positions data offset)
@@ -5252,8 +5250,8 @@ POS.
When optional argument SYNCP is non-nil, return the parent of the
element containing POS instead. In that case, it is also
possible to provide TIME-LIMIT, which is a time value specifying
-when the parsing should stop. The function returns `interrupted'
-if the process stopped before finding the expected result."
+when the parsing should stop. The function throws `interrupt' if
+the process stopped before finding the expected result."
(catch 'exit
(org-with-wide-buffer
(goto-char pos)
@@ -5320,7 +5318,7 @@ if the process stopped before finding the expected result."
(when syncp
(cond ((= (point) pos) (throw 'exit parent))
((org-element--cache-interrupt-p time-limit)
- (throw 'exit 'interrupted))))
+ (throw 'interrupt nil))))
(unless element
(setq element (org-element--current-element
end 'element special-flag