emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Bug: org-element--cache-sync called after switching buffers [8.3.1 (8.3.1-16-gf6aa53-elpa @ /home/mah/.emacs.d/elpa/org-20150810/)]
@ 2015-08-19 20:06 Mark A. Hershberger
  2015-08-21 15:20 ` Nicolas Goaziou
  0 siblings, 1 reply; 2+ messages in thread
From: Mark A. Hershberger @ 2015-08-19 20:06 UTC (permalink / raw)
  To: emacs-orgmode



While composing an email in mu4e, I get the following backtrace.  It
looks like this is because mu4e switches buffers between the time
org-element-cache-reset is called and the time that
org-element--cache-sync is called.

Debugger entered--Lisp error: (wrong-type-argument hash-table-p nil)
  clrhash(nil)
  (if org-element--cache-sync-requests (org-element--cache-set-timer buffer) (clrhash org-element--cache-sync-keys))
  (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)) future-change) (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)) future-change) (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)) future-change) (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 ... ...) future-change) (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 *draft*>)
  apply(org-element--cache-sync #<buffer *draft*>)
  byte-code("r\301\b\302H\b\303H\"\210)\301\207" [timer apply 5 6] 4)
  timer-event-handler([t 0 0 600000 nil org-element--cache-sync (#<buffer *draft*>) idle 0])
  read-from-minibuffer("Identity: " nil (keymap (10 . minibuffer-complete-and-exit) (13 . minibuffer-complete-and-exit) keymap (menu-bar keymap (minibuf "Minibuf" keymap (tab menu-item "Complete" minibuffer-complete :help "Complete as far as possible") (space menu-item "Complete Word" minibuffer-complete-word :help "Complete at most one word") (63 menu-item "List Completions" minibuffer-completion-help :help "Display all possible completions") "Minibuf")) (27 keymap (118 . switch-to-completions)) (prior . switch-to-completions) (63 . minibuffer-completion-help) (32 . minibuffer-complete-word) (9 . minibuffer-complete) keymap (menu-bar keymap (minibuf "Minibuf" keymap (previous menu-item "Previous History Item" previous-history-element :help "Put previous minibuffer history element in the minibuffer") (next menu-item "Next History Item" next-history-element :help "Put next minibuffer history element in the minibuffer") (isearch-backward menu-item "Isearch History Backward" isearch-backward :help "Incrementally search minibuffer history backward") (isearch-forward menu-item "Isearch History Forward" isearch-forward :help "Incrementally search minibuffer history forward") (return menu-item "Enter" exit-minibuffer :key-sequence "." :help "Terminate input and exit minibuffer") (quit menu-item "Quit" abort-recursive-edit :help "Abort input and exit minibuffer") "Minibuf")) (10 . exit-minibuffer) (13 . exit-minibuffer) (7 . abort-recursive-edit) (C-tab . file-cache-minibuffer-complete) (9 . self-insert-command) (XF86Back . previous-history-element) (up . previous-history-element) (prior . previous-history-element) (XF86Forward . next-history-element) (down . next-history-element) (next . next-history-element) (27 keymap (114 . previous-matching-history-element) (115 . next-matching-history-element) (112 . previous-history-element) (110 . next-history-element))) nil nil nil nil)
  completing-read-default("Identity: " (("Personal" "" "\"Mark A. Hershberger\" <mah@everybody.org>" "" nil "" "~/.signatures/personal.txt") ("Nichework" "" "\"Mark A. Hershberger\" <mah@nichework.com>" "NicheWork LLC" nil "" "~/.signatures/nichework.txt")) nil t nil nil nil nil)
  completing-read("Identity: " (("Personal" "" "\"Mark A. Hershberger\" <mah@everybody.org>" "" nil "" "~/.signatures/personal.txt") ("Nichework" "" "\"Mark A. Hershberger\" <mah@nichework.com>" "NicheWork LLC" nil "" "~/.signatures/nichework.txt")) nil t)
  gnus-alias-identity-prompt()
  #[nil "\301\302!\210\303\304!\205.\0\304 .\305\b!)\207" [identity visual-line-mode -1 fboundp gnus-alias-identity-prompt gnus-alias-use-identity] 2]()
  run-hooks(change-major-mode-after-body-hook text-mode-hook message-mode-hook mu4e-compose-mode-hook)
  apply(run-hooks (change-major-mode-after-body-hook text-mode-hook message-mode-hook mu4e-compose-mode-hook))
  run-mode-hooks(mu4e-compose-mode-hook)
  mu4e-compose-mode()
  (catch (quote --cl-block-mu4e~compose-handler--) (set (make-local-variable (quote mu4e-compose-parent-message)) original-msg) (put (quote mu4e-compose-parent-message) (quote permanent-local) t) (run-hooks (quote mu4e-compose-pre-hook)) (condition-case nil (mu4e-draft-open compose-type original-msg) (quit (kill-buffer) (message "[mu4e] Operation aborted") (throw (quote --cl-block-mu4e~compose-handler--) nil))) (mu4e~draft-insert-mail-header-separator) (save-excursion (goto-char (point-max)) (let ((--dolist-tail-- includes) att) (while --dolist-tail-- (setq att (car --dolist-tail--)) (mml-attach-file (plist-get att :file-name) (plist-get att :mime-type)) (setq --dolist-tail-- (cdr --dolist-tail--))))) (mu4e~compose-set-friendly-buffer-name compose-type) (set-buffer-modified-p nil) (if (member compose-type (quote (new forward))) (message-goto-to) (message-goto-body)) (set (make-local-variable (quote mu4e-compose-parent-message)) original-msg) (put (quote mu4e-compose-parent-message) (quote permanent-local) t) (mu4e~compose-hide-headers) (mu4e-compose-mode))
  mu4e~compose-handler(new)
  (if (eq compose-type (quote new)) (mu4e~compose-handler (quote new)) (let* ((docid (mu4e-message-field msg :docid)) (decrypt (and (member (quote encrypted) (mu4e-message-field msg :flags)) (if (eq mu4e-decryption-policy (quote ask)) (yes-or-no-p (mu4e-format "Decrypt message?")) mu4e-decryption-policy)))) (let ((viewwin (get-buffer-window mu4e~view-buffer))) (if (window-live-p viewwin) (progn (select-window viewwin)))) (mu4e~proc-compose compose-type decrypt docid)))
  (let ((msg (mu4e-message-at-point (quote noerror)))) (if (or msg (eq compose-type (quote new))) nil (mu4e-warn "No message at point")) (if (member compose-type (quote (reply forward edit new))) nil (mu4e-error "Invalid compose type '%S'" compose-type)) (if (and (eq compose-type (quote edit)) (not (member (quote draft) (mu4e-message-field msg :flags)))) (progn (mu4e-warn "Editing is only allowed for draft messages"))) (if (eq compose-type (quote new)) (mu4e~compose-handler (quote new)) (let* ((docid (mu4e-message-field msg :docid)) (decrypt (and (member (quote encrypted) (mu4e-message-field msg :flags)) (if (eq mu4e-decryption-policy ...) (yes-or-no-p ...) mu4e-decryption-policy)))) (let ((viewwin (get-buffer-window mu4e~view-buffer))) (if (window-live-p viewwin) (progn (select-window viewwin)))) (mu4e~proc-compose compose-type decrypt docid))))
  mu4e-compose(new)
  mu4e-compose-new()
  call-interactively(mu4e-compose-new nil nil)
  command-execute(mu4e-compose-new)

Emacs  : GNU Emacs 24.5.1 (x86_64-pc-linux-gnu, GTK+ Version 3.16.4)
 of 2015-06-28 on trouble, modified by Debian
Package: Org-mode version 8.3.1 (8.3.1-16-gf6aa53-elpa @ /home/mah/.emacs.d/elpa/org-20150810/)

current state:
==============
(setq
 org-hide-leading-stars t
 org-tab-first-hook '(org-hide-block-toggle-maybe org-babel-hide-result-toggle-maybe
                      org-babel-header-arg-expand)
 org-follow-link-hook '((lambda nil
                         (when (eq major-mode (quote gnus-summary-mode))
                          (gnus-summary-insert-dormant-articles))
                         )
                        )
 org-speed-command-hook '(org-speed-command-default-hook org-babel-speed-command-hook)
 org-gnus-prefer-web-links t
 org-reverse-note-order t
 org-occur-hook '(org-first-headline-recenter)
 org-metaup-hook '(org-babel-load-in-session-maybe)
 org-agenda-start-on-weekday nil
 org-clock-into-drawer 3
 org-confirm-shell-link-function 'yes-or-no-p
 org-clock-out-switch-to-state "WAIT"
 org-startup-folded 'content
 org-special-ctrl-a/e t
 org-agenda-skip-scheduled-if-done t
 org-agenda-custom-commands '(("a" "My custom agenda"
                               ((org-agenda-list nil nil 1) (sacha/org-agenda-load)
                                (sacha/org-agenda-clock) (tags "PROJECT-WAITING")
                                (tags-todo "WAITING") (tags-todo "-MAYBE"))
                               )
                              ("c" todo #("DONE|DEFERRED|CANCELLED" 0 23 (face org-warning)) nil)
                              ("w" todo #("WAITING" 0 7 (face org-warning)) nil)
                              ("W" agenda "" ((org-agenda-ndays 21)))
                              ("A" agenda ""
                               ((org-agenda-skip-function
                                 (lambda nil
                                  (org-agenda-skip-entry-if (quote notregexp) "\\=.*\\[#A\\]"))
                                 )
                                (org-agenda-ndays 1)
                                (org-agenda-overriding-header "Today's Priority #A tasks: "))
                               )
                              ("u" alltodo ""
                               ((org-agenda-skip-function
                                 (lambda nil
                                  (org-agenda-skip-entry-if (quote scheduled) (quote deadline)
                                   (quote regexp) "<[^>\n]+>")
                                  )
                                 )
                                (org-agenda-overriding-header "Unscheduled TODO entries: "))
                               )
                              )
 org-default-notes-file "~/org/notes.org"
 org-todo-keyword-faces '(("TODO" :foreground "blue" :weight bold))
 org-capture-templates '(("t" "Task" entry (file+headline "~/org/notes.org" "Tasks")
                          "* TODO %?\n  %u\n  %a" :prepend t)
                         ("j" "Journal Entry" entry (file "~/org/journal.org")
                          "* Journal Entry at %U %^{Title}p\n:PROPERTIES:\n:Timestamp: %T\n:END:"
                          :prepend t)
                         )
 org-agenda-include-diary t
 org-startup-indented t
 org-after-todo-state-change-hook '(org-clock-out-if-current)
 org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer)
 org-tags-column -132
 org-agenda-before-write-hook '(org-agenda-add-entry-text)
 org-babel-pre-tangle-hook '(save-buffer)
 org-mode-hook '(org-clock-load
                 #[nil "\300\301\302\303\304$\207"
                   [org-add-hook change-major-mode-hook org-show-block-all append local] 5]
                 #[nil "\300\301\302\303\304$\207"
                   [org-add-hook change-major-mode-hook org-babel-show-result-all append local] 5]
                 org-babel-result-hide-spec org-babel-hide-all-hashes org-bullets-mode)
 org-fontify-done-headline t
 org-archive-hook '(org-attach-archive-delete-maybe)
 org-clock-persist t
 org-ctrl-c-ctrl-c-hook '(org-babel-hash-at-point org-babel-execute-safely-maybe)
 org-clock-auto-clock-resolution t
 org-clock-in-switch-to-state "INPROGRESS"
 org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers org-cycle-show-empty-lines
                  org-optimize-window-after-visibility-change)
 org-archive-location "archive/%s_archive::"
 org-todo-keywords '((sequence "TODO" "INPROGRESS(i!/!)" "WAIT(w)" "|" "CANCELED(@)" "DONE(@)"))
 org-agenda-ndays 7
 org-fast-tag-selection-single-key 'expert
 org-confirm-elisp-link-function 'yes-or-no-p
 org-metadown-hook '(org-babel-pop-to-session-maybe)
 org-agenda-skip-deadline-if-done t
 org-babel-load-languages '((dot . t))
 org-clock-sound t
 org-agenda-files '("~/home-files/org")
 org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
 org-confirm-babel-evaluate nil
 org-clock-out-remove-zero-time-clocks t
 )

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Bug: org-element--cache-sync called after switching buffers [8.3.1 (8.3.1-16-gf6aa53-elpa @ /home/mah/.emacs.d/elpa/org-20150810/)]
  2015-08-19 20:06 Bug: org-element--cache-sync called after switching buffers [8.3.1 (8.3.1-16-gf6aa53-elpa @ /home/mah/.emacs.d/elpa/org-20150810/)] Mark A. Hershberger
@ 2015-08-21 15:20 ` Nicolas Goaziou
  0 siblings, 0 replies; 2+ messages in thread
From: Nicolas Goaziou @ 2015-08-21 15:20 UTC (permalink / raw)
  To: Mark A. Hershberger; +Cc: emacs-orgmode

Hello,

"Mark A. Hershberger" <mah@everybody.org> writes:

> While composing an email in mu4e, I get the following backtrace.  It
> looks like this is because mu4e switches buffers between the time
> org-element-cache-reset is called and the time that
> org-element--cache-sync is called.

Does the following change solve the issue?


diff --git a/lisp/org-element.el b/lisp/org-element.el
index 8f41ab2..3179fae 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -4903,6 +4903,7 @@ This function assumes `org-element--cache' is a valid AVL tree."
 (defsubst org-element--cache-active-p ()
   "Non-nil when cache is active in current buffer."
   (and org-element-use-cache
+       org-element--cache
        (or (derived-mode-p 'org-mode) orgstruct-mode)))
 
 (defun org-element--cache-find (pos &optional side)
@@ -5615,7 +5616,8 @@ buffers."
   (interactive "P")
   (dolist (buffer (if all (buffer-list) (list (current-buffer))))
     (with-current-buffer buffer
-      (when (org-element--cache-active-p)
+      (when (and org-element-use-cache
+		 (or (derived-mode-p 'org-mode) orgstruct-mode))
 	(org-set-local 'org-element--cache
 		       (avl-tree-create #'org-element--cache-compare))
 	(org-set-local 'org-element--cache-objects (make-hash-table :test #'eq))


Regards,

-- 
Nicolas Goaziou

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-08-21 15:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-19 20:06 Bug: org-element--cache-sync called after switching buffers [8.3.1 (8.3.1-16-gf6aa53-elpa @ /home/mah/.emacs.d/elpa/org-20150810/)] Mark A. Hershberger
2015-08-21 15:20 ` Nicolas Goaziou

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).