[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/org 0a92b2d 1/2: org-element.el: Allow user to interrup
From: |
ELPA Syncer |
Subject: |
[elpa] externals/org 0a92b2d 1/2: org-element.el: Allow user to interrupt cache sync by default |
Date: |
Sat, 23 Oct 2021 02:57:26 -0400 (EDT) |
branch: externals/org
commit 0a92b2db19c9328acf4ec678a579ef6690aa2b6c
Author: Ihor Radchenko <yantar92@gmail.com>
Commit: Ihor Radchenko <yantar92@gmail.com>
org-element.el: Allow user to interrupt cache sync by default
* lisp/org-element.el (org-element--cache-interrupt-C-g,
org-element--cache-interrupt-C-g-max-count,
org-element--cache-interrupt-C-g-count): Add docstring and change
default value of `org-element--cache-interrupt-C-g' to t.
(org-element--parse-to): Show informative message when user tries to
interrupt in the middle of cache sync.
---
lisp/org-element.el | 25 +++++++++++++++++++------
1 file changed, 19 insertions(+), 6 deletions(-)
diff --git a/lisp/org-element.el b/lisp/org-element.el
index 9b994b8..f36aff1 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -5772,9 +5772,16 @@ Properties are modified by side-effect."
(plist-get properties key))))
(and value (plist-put properties key (+ offset value)))))))
-(defvar org-element--cache-interrupt-C-g nil)
-(defvar org-element--cache-interrupt-C-g-max-count 5)
-(defvar org-element--cache-interrupt-C-g-count 0)
+(defvar org-element--cache-interrupt-C-g t
+ "When non-nil, allow the user to abort `org-element--cache-sync'.
+The execution is aborted upon pressing `\\[keyboard-quit]'
+`org-element--cache-interrupt-C-g-max-count' times.")
+(defvar org-element--cache-interrupt-C-g-max-count 5
+ "`\\[keyboard-quit]' count to interrupt `org-element--cache-sync'.
+See `org-element--cache-interrupt-C-g'.")
+(defvar org-element--cache-interrupt-C-g-count 0
+ "Current number of `org-element--cache-sync' calls.
+See `org-element--cache-interrupt-C-g'.")
(defun org-element--cache-sync (buffer &optional threshold future-change)
"Synchronize cache with recent modification in BUFFER.
@@ -6267,15 +6274,21 @@ the process stopped before finding the expected result."
(while t
(when (org-element--cache-interrupt-p time-limit)
(throw 'interrupt nil))
- (when (and inhibit-quit org-element--cache-interrupt-C-g)
+ (when (and inhibit-quit org-element--cache-interrupt-C-g
quit-flag)
(when quit-flag
(cl-incf org-element--cache-interrupt-C-g-count)
(setq quit-flag nil))
- (when (> org-element--cache-interrupt-C-g-count
+ (when (>= org-element--cache-interrupt-C-g-count
org-element--cache-interrupt-C-g-max-count)
(setq quit-flag t)
+ (setq org-element--cache-interrupt-C-g-count 0)
(org-element-cache-reset)
- (error "org-element: Parsing aborted by user. Cache has been
cleared.")))
+ (error "org-element: Parsing aborted by user. Cache has been
cleared.
+If you observe Emacs hangs frequently, please report this to Org mode mailing
list (M-x org-submit-bug-report)."))
+ (message (substitute-command-keys
+ "`org-element--parse-buffer': Suppressed
`\\[keyboard-quit]'. Press `\\[keyboard-quit]' %d more times to force
interruption.")
+ (- org-element--cache-interrupt-C-g-max-count
+ org-element--cache-interrupt-C-g-count)))
(unless element
;; Do not try to parse within blank at EOB.
(unless (save-excursion