emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Peter Jones <mlists@pmade.com>
To: emacs-orgmode@gnu.org
Subject: [PATCH] Fix Subtle Heading Creation Bugs
Date: Fri, 17 Oct 2008 18:10:12 -0600	[thread overview]
Message-ID: <m2prly7ogr.fsf@pmade.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 763 bytes --]


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


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: heading.patch --]
[-- Type: text/x-patch, Size: 4784 bytes --]

From 200826587af4bd40995d1d45381006ed0639f7e9 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@pmade.com>
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 <pjones@pmade.com>
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 <pjones@pmade.com>
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


[-- Attachment #3: Type: text/plain, Size: 65 bytes --]


-- 
Peter Jones, http://pmade.com
pmade inc.  Louisville, CO US

[-- Attachment #4: Type: text/plain, Size: 204 bytes --]

_______________________________________________
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

             reply	other threads:[~2008-10-18  0:10 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-18  0:10 Peter Jones [this message]
2008-10-18  6:01 ` [PATCH] Fix Subtle Heading Creation Bugs Carsten Dominik
2008-10-18 15:24   ` Peter Jones
2008-10-18 17:59     ` Manish
2008-10-22  6:02 ` [PATCH] " Carsten Dominik
2008-10-23  0:30   ` Peter Jones
2008-10-23  5:07     ` Carsten Dominik

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m2prly7ogr.fsf@pmade.com \
    --to=mlists@pmade.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).