emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH] Support last-line specializers.
@ 2008-03-03  0:37 Jason Riedy
  2008-03-03  5:36 ` [respun PATCH 2/3] " jason
  0 siblings, 1 reply; 4+ messages in thread
From: Jason Riedy @ 2008-03-03  0:37 UTC (permalink / raw)
  To: emacs-orgmode

Each of lstart, lend, and lfmt permits a last-line specialization
called llstart, etc. with corresponding heading versions.

Signed-off-by: Jason Riedy <jason@acm.org>
---
   I forgot to save the message id for my rearrangement patch, but
   this patch relies on that one.

 org.el |   32 ++++++++++++++++++++++++--------
 1 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/org.el b/org.el
index 64121c9..44c19d4 100644
--- a/org.el
+++ b/org.el
@@ -11792,9 +11792,13 @@ First element has index 0, or I0 if given."
 
 (defun orgtbl-format-section (section-stopper)
   "Format lines until the first occurrence of SECTION-STOPPER."
-  (progn
-    (while (not (eq (car table) section-stopper))
-      (orgtbl-format-line (pop table)))))
+  (let (prevline)
+    (progn
+      (while (not (eq (car table) section-stopper))
+	(if prevline (orgtbl-format-line prevline))
+	(setq prevline (pop table)))
+      (if prevline (let ((lstart llstart) (lend llend) (lfmt llfmt))
+		     (orgtbl-format-line prevline))))))
 
 (defun orgtbl-to-generic (table params)
   "Convert the orgtbl-mode TABLE to some other format.
@@ -11818,17 +11822,20 @@ Valid parameters are
             May be nil to ignore hlines.
 
 :lstart     String to start a new table line.
+:llstart    String to start the last table line, defaults to :lstart.
 :lend       String to end a table line
+:llend      String to end the last table line, defaults to :lend.
 :sep        Separator between two fields
 :lfmt       Format for entire line, with enough %s to capture all fields.
             If this is present, :lstart, :lend, and :sep are ignored.
+:llfmt      Format for the entire last line, defaults to :lfmt.
 :fmt        A format to be used to wrap the field, should contain
             %s for the original field value.  For example, to wrap
             everything in dollars, you could use :fmt \"$%s$\".
             This may also be a property list with column numbers and
             formats. For example :fmt (2 \"$%s$\" 4 \"%s%%\")
 
-:hlstart :hlend :hsep :hlfmt :hfmt
+:hlstart :hllstart :hlend :hllend :hsep :hlfmt :hllfmt :hfmt
             Same as above, specific for the header lines in the table.
             All lines before the first hline are treated as header.
             If any of these is not present, the data line value is used.
@@ -11847,8 +11854,11 @@ directly by `orgtbl-send-table'.  See manual."
 	 (sep (plist-get params :sep))
 	 (efmt (plist-get params :efmt))
 	 (lstart (plist-get params :lstart))
+	 (llstart (or (plist-get params :llstart) lstart))
 	 (lend (plist-get params :lend))
+	 (llend (or (plist-get params :llend) lend))
 	 (lfmt (plist-get params :lfmt))
+	 (llfmt (or (plist-get params :llfmt) lfmt))
 	 (fmt (plist-get params :fmt))
 	 rtn)
 
@@ -11860,10 +11870,13 @@ directly by `orgtbl-send-table'.  See manual."
     ;; trailing hline.
     (if (and (not splicep) (listp (car table)) (memq 'hline table))
 	(progn
-	  (let* ((lstart (or (plist-get params :hlstart) lstart))
-		 (lend (or (plist-get params :hlend) lend))
-		 (lfmt (or (plist-get params :hlfmt) lfmt))
-		 (fmt (or (plist-get params :hfmt) fmt)))
+	  (let ((lstart (or (plist-get params :hlstart) lstart))
+		(llstart (or (plist-get params :hllstart) llstart))
+		(lend (or (plist-get params :hlend) lend))
+		(llend (or (plist-get params :hllend) llend))
+		(lfmt (or (plist-get params :hlfmt) lfmt))
+		(llfmt (or (plist-get params :hllfmt) llfmt))
+		(fmt (or (plist-get params :hfmt) fmt)))
 	    (orgtbl-format-section 'hline))
 	  (if hline (push hline rtn))
 	  (pop table)))
@@ -11897,6 +11910,9 @@ LaTeX are:
            example \"%s\\\\times10^{%s}\".  LaTeX default is \"%s\\\\,(%s)\".
            This may also be a property list with column numbers and formats.
 
+:llend     If you find too much space below the last line of a table,
+           pass a value of \"\" for :llend to suppress the final \\\\.
+
 The general parameters :skip and :skipcols have already been applied when
 this function is called."
   (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
-- 
1.5.4.3

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-03-03  6:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-03  0:37 [PATCH] Support last-line specializers Jason Riedy
2008-03-03  5:36 ` [respun PATCH 2/3] " jason
2008-03-03  5:51   ` [PATCH 3/3] Allow functions for some orgtbl parameters Jason Riedy
2008-03-03  6:06     ` How I'm using these: Generating SQL insert statements Jason Riedy

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