Re: [Orgmode] Bug: Infinite loop when org-entry-put is called in buffer not in org-mode [6.33trans]

2009-11-27 Thread Carsten Dominik


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]

2009-11-26 Thread David Maus
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]

2009-11-26 Thread Carsten Dominik


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]

2009-11-25 Thread David Maus

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:"