Re: [Orgmode] Bug: Infinite loop when org-entry-put is called in buffer not in org-mode [6.33trans]
On Nov 26, 2009, at 11:04 PM, David Maus wrote: Hi Carsten, At Thu, 26 Nov 2009 08:42:09 +0100, Carsten Dominik wrote: Hi David, you cannot reasonably expect that org-mode functions should work in other modes. And you cannot expect these functions to check the mode all the time. I don't know what you are up to here. But maybe the function `org-run-as-in-org-mode' offers a way out? I stumpled on this infinite loop by accident and simply avoid it by make my function refuse to work on a buffer not in org-mode. That is exactly the right course of action. However, I decided it worth a bugreport as I didn't know the reason for this and assumed org-mode may enter this loop by itself if the right conditions are met. No, this variable (see below) is always set in Org buffers. After debugging the loop it turns out that the loop occurs in `org-insert-property-drawer' because `org-keyword-time-regexp' is buffer local only (calculated when entering org-mode) and defaults to nil, so when `org-insert-property-drawer' tries to skip SCHEDULED, DEADLINE etc. lines it tries this by while-re-search-forwarding[1] with the regexp "^[ \t]*" -- that is what throws Emacs in this loop (for whatever reason -- I hope I am going to find out). So the question is: Is it in anyway possible that `org-keyword-time-regexp' is (re-set to) nil in regular orgmode operation? I could do that, but just the same I would have to do that for many different other variables which only work inside org-mode. - Carsten As far as I could see: No, so it should not effect the normal operations of org-mode. Regards, -- David [1] i.e.: (while (re-search-forward "^[ \t]*")) causes Emacs to loop. That means "not beeing in orgmode" not even a sine qua non for this loop. -- OpenPGP... 0x316F4BE4670716FD Jabber dmj...@jabber.org Email. maus.da...@gmail.com ICQ... 241051416 - Carsten ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] Bug: Infinite loop when org-entry-put is called in buffer not in org-mode [6.33trans]
Hi Carsten, At Thu, 26 Nov 2009 08:42:09 +0100, Carsten Dominik wrote: > Hi David, > > you cannot reasonably expect that org-mode functions should work > in other modes. And you cannot expect these functions to check > the mode all the time. > > I don't know what you are up to here. But maybe the function > `org-run-as-in-org-mode' offers a way out? I stumpled on this infinite loop by accident and simply avoid it by make my function refuse to work on a buffer not in org-mode. However, I decided it worth a bugreport as I didn't know the reason for this and assumed org-mode may enter this loop by itself if the right conditions are met. After debugging the loop it turns out that the loop occurs in `org-insert-property-drawer' because `org-keyword-time-regexp' is buffer local only (calculated when entering org-mode) and defaults to nil, so when `org-insert-property-drawer' tries to skip SCHEDULED, DEADLINE etc. lines it tries this by while-re-search-forwarding[1] with the regexp "^[ \t]*" -- that is what throws Emacs in this loop (for whatever reason -- I hope I am going to find out). So the question is: Is it in anyway possible that `org-keyword-time-regexp' is (re-set to) nil in regular orgmode operation? As far as I could see: No, so it should not effect the normal operations of org-mode. Regards, -- David [1] i.e.: (while (re-search-forward "^[ \t]*")) causes Emacs to loop. That means "not beeing in orgmode" not even a sine qua non for this loop. -- OpenPGP... 0x316F4BE4670716FD Jabber dmj...@jabber.org Email. maus.da...@gmail.com ICQ... 241051416 ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] Bug: Infinite loop when org-entry-put is called in buffer not in org-mode [6.33trans]
On Nov 25, 2009, at 9:05 AM, David Maus wrote: Remember to cover the basics, that is, what you expected to happen and what in fact did happen. You don't know how to make a good report? See http://orgmode.org/manual/Feedback.html#Feedback Your bug report will be posted to the Org-mode mailing list. When `org-entry-put' is called in a buffer that is not in org-mode Emacs enters an infinite loop. Use this simple function , |(defun dmj/debug () | "Call me within a buffer not in org-mode and I will hang." | (interactive) | (org-entry-put (point) "Prop" "Val")) ` Create a new buffer in fundamental mode and enter a headline manually: *test* , | * Headline ` Now call dmj/debug interactivly (M-x dmj/debug ) and Emacs hangs. Hi David, you cannot reasonably expect that org-mode functions should work in other modes. And you cannot expect these functions to check the mode all the time. I don't know what you are up to here. But maybe the function `org-run-as-in-org-mode' offers a way out? - Carsten Regards, -- David Emacs : GNU Emacs 23.1.50.1 (i486-pc-linux-gnu, GTK+ Version 2.18.3) of 2009-11-15 on elegiac, modified by Debian Package: Org-mode version 6.33trans current state: == (setq org-export-latex-default-class "scrartcl" org-clock-in-switch-to-state "STARTED" org-todo-keyword-faces '(("TODO" :foreground "red" :weight bold) ("STARTED" :foreground "orange red" :weight bold) ("DONE" :foreground "light green") ("MAYBE" :foreground "tomato") ("WAITING" :foreground "tan2" :weight bold) ("CANCELLED" :foreground "firebrick")) org-expiry-insert-created-only-if-todo t org-agenda-custom-commands '(("r" "Refile New Notes and Tasks" tags "LEVEL=1+REFILE" ((org-agenda-todo-ignore-with-date nil))) ("s" "Started Tasks" todo "STARTED" ((org-agenda-todo-ignore-scheduled nil) (org-agenda-todo- ignore-deadlines nil) (org-agenda-todo-ignore-with-date nil)) ) ) org-agenda-files '("/home/david/Org/XXX") org-blocker-hook '(org-block-todo-from-children-or-siblings-or-parent) org-agenda-tags-column -120 org-checklist-export-function 'org-export-as-ascii org-completion-use-ido t org-expiry-created-property-name "Created" org-after-todo-state-change-hook '(org-clock-out-if-current org- expiry-insert-created org-checklist) org-expiry-expiry-timestamp-active nil org-agenda-todo-ignore-scheduled t org-todo-state-tags-triggers '((todo ("NOTE")) ("" ("NOTE" . t))) org-log-redeadline 'time org-expiry-created-timestamp-active nil org-export-preprocess-hook '(org-export-blocks-preprocess) org-tags-exclude-from-inheritance '("NOTE" "ATTACH" "APPT") org-tab-first-hook '(org-hide-block-toggle-maybe) org-src-mode-hook '(org-src-mode-configure-edit-buffer) org-confirm-shell-link-function 'yes-or-no-p org-todo-keywords '((sequence "TODO(t)" "STARTED(s)" "|" "DONE(D@)") (sequence "MAYBE(m)" "WAITING(w@/!)" "|" "CANCELLED(C@)")) org-agenda-before-write-hook '(org-agenda-add-entry-text) org-directory "~/Org" org-log-reschedule 'time org-insert-heading-hook '(org-expiry-insert-created) org-after-tags-change-hook '(org-expiry-insert-created) org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide- drawers org-cycle-show-empty-lines org-optimize-window-after-visibility-change) org-publish-project-alist '(("private-dynamic" :base-directory "~/ Org/www" :base-extension "org" :publishing-directory "~/www/private" :publishing-function (org-publish-org-to- html) :recursive t :author "David Maus" :email "maus.da...@gmail.com") ("private-static" :base-directory "~/Org/www" :base- extension "css" :publishing-directory "~/www/private" :publishing-function org-publish- attachment :recursive t) ("private" :components ("private-dynamic" "private-static"))) org-mode-hook '(#[nil "\300\301\302\303\304$\207" [org-add-hook change-major-mode-hook org-show-block-all append local] 5]) org-refile-targets '((org-agenda-files :maxlevel . 3)) org-confirm-elisp-link-function 'yes-or-no-p org-refile-use-outline-path 'file org-expiry-wait "+3m" org-log-into-drawer "LOGBOOK" org-agenda-todo-ignore-with-date t org-enforce-todo-dependencies t org-insert-heading-respect-content t org-occur-hook '(org-first-headline-recenter) org-from-is-user-regexp "\\" org-tags-column -120 org-remember-templates '(("todo" 116 "* TODO %^{Description} %^G \n :PROPERTIES:\n :Created: %U\n :Ref: %a\n :END:" "refile.org" bottom nil) ("appt" 97 "* %^{Description} :APPT:%^G\n %^T\n :PROPERTIES: \n :Created: %U\n :Ref: %a\n :END:"
[Orgmode] Bug: Infinite loop when org-entry-put is called in buffer not in org-mode [6.33trans]
Remember to cover the basics, that is, what you expected to happen and what in fact did happen. You don't know how to make a good report? See http://orgmode.org/manual/Feedback.html#Feedback Your bug report will be posted to the Org-mode mailing list. When `org-entry-put' is called in a buffer that is not in org-mode Emacs enters an infinite loop. Use this simple function , |(defun dmj/debug () | "Call me within a buffer not in org-mode and I will hang." | (interactive) | (org-entry-put (point) "Prop" "Val")) ` Create a new buffer in fundamental mode and enter a headline manually: *test* , | * Headline ` Now call dmj/debug interactivly (M-x dmj/debug ) and Emacs hangs. Regards, -- David Emacs : GNU Emacs 23.1.50.1 (i486-pc-linux-gnu, GTK+ Version 2.18.3) of 2009-11-15 on elegiac, modified by Debian Package: Org-mode version 6.33trans current state: == (setq org-export-latex-default-class "scrartcl" org-clock-in-switch-to-state "STARTED" org-todo-keyword-faces '(("TODO" :foreground "red" :weight bold) ("STARTED" :foreground "orange red" :weight bold) ("DONE" :foreground "light green") ("MAYBE" :foreground "tomato") ("WAITING" :foreground "tan2" :weight bold) ("CANCELLED" :foreground "firebrick")) org-expiry-insert-created-only-if-todo t org-agenda-custom-commands '(("r" "Refile New Notes and Tasks" tags "LEVEL=1+REFILE" ((org-agenda-todo-ignore-with-date nil))) ("s" "Started Tasks" todo "STARTED" ((org-agenda-todo-ignore-scheduled nil) (org-agenda-todo-ignore-deadlines nil) (org-agenda-todo-ignore-with-date nil)) ) ) org-agenda-files '("/home/david/Org/XXX") org-blocker-hook '(org-block-todo-from-children-or-siblings-or-parent) org-agenda-tags-column -120 org-checklist-export-function 'org-export-as-ascii org-completion-use-ido t org-expiry-created-property-name "Created" org-after-todo-state-change-hook '(org-clock-out-if-current org-expiry-insert-created org-checklist) org-expiry-expiry-timestamp-active nil org-agenda-todo-ignore-scheduled t org-todo-state-tags-triggers '((todo ("NOTE")) ("" ("NOTE" . t))) org-log-redeadline 'time org-expiry-created-timestamp-active nil org-export-preprocess-hook '(org-export-blocks-preprocess) org-tags-exclude-from-inheritance '("NOTE" "ATTACH" "APPT") org-tab-first-hook '(org-hide-block-toggle-maybe) org-src-mode-hook '(org-src-mode-configure-edit-buffer) org-confirm-shell-link-function 'yes-or-no-p org-todo-keywords '((sequence "TODO(t)" "STARTED(s)" "|" "DONE(D@)") (sequence "MAYBE(m)" "WAITING(w@/!)" "|" "CANCELLED(C@)")) org-agenda-before-write-hook '(org-agenda-add-entry-text) org-directory "~/Org" org-log-reschedule 'time org-insert-heading-hook '(org-expiry-insert-created) org-after-tags-change-hook '(org-expiry-insert-created) org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers org-cycle-show-empty-lines org-optimize-window-after-visibility-change) org-publish-project-alist '(("private-dynamic" :base-directory "~/Org/www" :base-extension "org" :publishing-directory "~/www/private" :publishing-function (org-publish-org-to-html) :recursive t :author "David Maus" :email "maus.da...@gmail.com") ("private-static" :base-directory "~/Org/www" :base-extension "css" :publishing-directory "~/www/private" :publishing-function org-publish-attachment :recursive t) ("private" :components ("private-dynamic" "private-static"))) org-mode-hook '(#[nil "\300\301\302\303\304$\207" [org-add-hook change-major-mode-hook org-show-block-all append local] 5]) org-refile-targets '((org-agenda-files :maxlevel . 3)) org-confirm-elisp-link-function 'yes-or-no-p org-refile-use-outline-path 'file org-expiry-wait "+3m" org-log-into-drawer "LOGBOOK" org-agenda-todo-ignore-with-date t org-enforce-todo-dependencies t org-insert-heading-respect-content t org-occur-hook '(org-first-headline-recenter) org-from-is-user-regexp "\\" org-tags-column -120 org-remember-templates '(("todo" 116 "* TODO %^{Description} %^G\n :PROPERTIES:\n :Created: %U\n :Ref: %a\n :END:" "refile.org" bottom nil) ("appt" 97 "* %^{Description} :APPT:%^G\n %^T\n :PROPERTIES:\n :Created: %U\n :Ref: %a\n :END:" "refile.org" bottom nil) ("note" 110 "* %^{Description} %^G:NOTE:\n :PROPERTIES:\n :Created: %U\n :Ref: %a\n :END:"