From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Jones Subject: [PATCH] Fix Subtle Heading Creation Bugs Date: Fri, 17 Oct 2008 18:10:12 -0600 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KqzOj-0001b2-C8 for emacs-orgmode@gnu.org; Fri, 17 Oct 2008 20:10:25 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KqzOf-0001aa-M8 for emacs-orgmode@gnu.org; Fri, 17 Oct 2008 20:10:24 -0400 Received: from [199.232.76.173] (port=35499 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KqzOf-0001aX-ED for emacs-orgmode@gnu.org; Fri, 17 Oct 2008 20:10:21 -0400 Received: from pmade.com ([64.92.223.213]:61697) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KqzOf-0006QA-1b for emacs-orgmode@gnu.org; Fri, 17 Oct 2008 20:10:21 -0400 Received: from skinny.local.pmade.com (c-67-177-235-141.hsd1.co.comcast.net [67.177.235.141]) (authenticated bits=0) by pmade.com (8.13.8/8.13.8) with ESMTP id m9I0ADJO020464 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT) for ; Sat, 18 Oct 2008 00:10:13 GMT (envelope-from pjones@pmade.com) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org --=-=-= Since commit 238d0d1 (Improve consistency for inserting new headlines) a few minor inconsistencies were introduced to heading creation with the control key, A.K.A. org-insert-heading-respect-content. This patch resolves those subtle "bugs". This patch changes org-insert-heading-respect-content so that it: - Creates a new heading even if point is in a plain list (force-heading is set to true, behavior before 238d0d1) - If the previous heading was closed, keep it closed (keeps the previous heading in the state it was before C-RET) It also includes changes for org-insert-todo-heading and the OrgMode manual. Thanks Carsten for making the changes in 238d0d1 for me. With the attached patch, heading creation is now perfect (for me at least ;). --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=heading.patch >From 200826587af4bd40995d1d45381006ed0639f7e9 Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Fri, 17 Oct 2008 17:26:11 -0600 Subject: [PATCH] Fix Subtle Heading Creation Bugs Since commit 238d0d1 (Improve consistency for inserting new headlines) a few minor inconsistencies were introduced to heading creation with the control key, A.K.A. org-insert-heading-respect-content. This patch resolves those subtle "bugs". This patch changes org-insert-heading-respect-content so that it: - Creates a new heading even if point is in a plain list (force-heading is set to true, behavior before 238d0d1) - If the previous heading was closed, keep it closed (keeps the previous heading in the state it was before C-RET) --- lisp/org.el | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index 9c08ba4..541cf3a 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -4607,7 +4607,7 @@ but create the new hedline after the current line." (match-string 0)) (error "*")))) (blank (cdr (assq 'heading org-blank-before-new-entry))) - pos) + pos should-hide-previous-heading) (cond ((and (org-on-heading-p) (bolp) (or (bobp) @@ -4622,6 +4622,9 @@ but create the new hedline after the current line." nil) (t ;; in the middle of the line + (save-excursion + (end-of-line) + (setq should-hide-previous-heading (org-invisible-p))) (org-show-entry) (let ((split (org-get-alist-option org-M-RET-may-split-line 'headline)) @@ -4652,6 +4655,10 @@ but create the new hedline after the current line." (setq pos (point)) (end-of-line 1) (unless (= (point) pos) (just-one-space) (backward-delete-char 1)) + (when (and org-insert-heading-respect-content should-hide-previous-heading) + (save-excursion + (outline-previous-visible-heading 1) + (hide-entry))) (run-hooks 'org-insert-heading-hook))))) (defun org-get-heading (&optional no-tags) @@ -4675,7 +4682,7 @@ but create the new hedline after the current line." (defun org-insert-heading-respect-content () (interactive) (let ((org-insert-heading-respect-content t)) - (call-interactively 'org-insert-heading))) + (org-insert-heading t))) (defun org-insert-todo-heading-respect-content () (interactive) -- 1.6.0 >From e7de89ce7a1bd3ab2259159fdb65b052d74370a0 Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Fri, 17 Oct 2008 17:57:47 -0600 Subject: [PATCH] Update documentation WRT C-RET --- doc/org.texi | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/org.texi b/doc/org.texi index 31996e0..b76fcaf 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -897,8 +897,9 @@ of a headline), then a headline like the current one will be inserted after the end of the subtree. @kindex C-@key{RET} @item C-@key{RET} -Just like @kbd{M-@key{RET}}, but if the heading is inserted after the current, -insert it actually after the entire subtree. +Just like @kbd{M-@key{RET}}, except when adding a new heading below the +current heading, the new heading is placed after the body instead of before +it. This command works from anywhere in the entry. @kindex M-S-@key{RET} @item M-S-@key{RET} Insert new TODO entry with same level as current heading. -- 1.6.0 >From 4f7aed562ae93759fb1638378029aeef3cc70e79 Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Fri, 17 Oct 2008 18:03:38 -0600 Subject: [PATCH] Also fix org-insert-todo-heading --- lisp/org.el | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index 541cf3a..5e4d6a5 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -4684,18 +4684,18 @@ but create the new hedline after the current line." (let ((org-insert-heading-respect-content t)) (org-insert-heading t))) -(defun org-insert-todo-heading-respect-content () - (interactive) +(defun org-insert-todo-heading-respect-content (force-state) + (interactive "P") (let ((org-insert-heading-respect-content t)) - (call-interactively 'org-insert-todo-heading))) + (org-insert-todo-heading force-state t))) -(defun org-insert-todo-heading (arg) +(defun org-insert-todo-heading (arg &optional force-heading) "Insert a new heading with the same level and TODO state as current heading. If the heading has no TODO state, or if the state is DONE, use the first state (TODO by default). Also with prefix arg, force first state." (interactive "P") (when (not (org-insert-item 'checkbox)) - (org-insert-heading) + (org-insert-heading force-heading) (save-excursion (org-back-to-heading) (outline-previous-heading) -- 1.6.0 --=-=-= -- Peter Jones, http://pmade.com pmade inc. Louisville, CO US --=-=-= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode --=-=-=--