From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Dunsmore Subject: [PATCH] Preserve trailing blank lines Date: Tue, 04 Jan 2011 19:24:03 -0600 Message-ID: <87mxngqh1o.fsf@riotblast.dunsmor.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from [140.186.70.92] (port=34493 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PaI6f-0003v3-Kz for emacs-orgmode@gnu.org; Tue, 04 Jan 2011 20:24:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PaI6e-0000An-QX for emacs-orgmode@gnu.org; Tue, 04 Jan 2011 20:24:05 -0500 Received: from deathroller.dunsmor.com ([98.129.169.48]:47301) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PaI6e-0000AV-NN for emacs-orgmode@gnu.org; Tue, 04 Jan 2011 20:24:04 -0500 Received: from riotblast.dunsmor.com (67-198-71-121.dyn.grandenetworks.net [67.198.71.121]) by deathroller.dunsmor.com (Postfix) with ESMTP id 108808C308 for ; Tue, 4 Jan 2011 19:23:50 -0600 (CST) 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 I like to leave a blank line at the end of items that have bodies, but I found functions like org-metaup, org-metadown, and org-refile were leaving that blank line behind. Here's a patch to fix that: --8<---------------cut here---------------start------------->8--- diff --git a/lisp/org.el b/lisp/org.el index 5eb0bc8..e3d71b7 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -18448,7 +18448,7 @@ Taken from `count' in cl-seq.el with all keyword arguments "Move backwards over whitespace, to the beginning of the first empty line. Returns the number of empty lines passed." (let ((pos (point))) - (skip-chars-backward " \t\n\r") + (forward-line -1) (beginning-of-line 2) (goto-char (min (point) pos)) (count-lines (point) pos))) --8<---------------cut here---------------end--------------->8--- I can't think of a reason you would want to leave trailing blank lines behind, but in case some people rely on that behavior, here's an alternate patch that creates an option called org-preserve-trailing-blank-lines: --8<---------------cut here---------------start------------->8--- diff --git a/lisp/org.el b/lisp/org.el index 5eb0bc8..e90798c 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -1098,6 +1098,11 @@ breaking the list structure." (const :tag "Always" t) (const :tag "Auto" auto))))) +(defcustom org-preserve-trailing-blank-lines t + "Non-nil means preserve blank lines at the end of an item." + :group 'org-edit-structure + :type 'boolean) + (defcustom org-insert-heading-hook nil "Hook being run after inserting a new heading." :group 'org-edit-structure @@ -18448,7 +18453,9 @@ Taken from `count' in cl-seq.el with all keyword arguments "Move backwards over whitespace, to the beginning of the first empty line. Returns the number of empty lines passed." (let ((pos (point))) - (skip-chars-backward " \t\n\r") + (if org-preserve-trailing-blank-lines + (forward-line -1) + (skip-chars-backward " \t\n\r")) (beginning-of-line 2) (goto-char (min (point) pos)) (count-lines (point) pos))) --8<---------------cut here---------------end--------------->8--- If this is accepted, perhaps the function org-back-over-empty-lines should be renamed to org-back-over-lines. Regards, Jason