瀏覽代碼

ob-gnuplot: Fix wrong table conversion when first column has ?-

* lisp/ob-gnuplot.el (org-babel-gnuplot-table-to-data): Revert to
using ascii exporter.
* lisp/ox-ascii.el (org-ascii-table-cell): Do not throw error when
CONTENTS is wider than initial cell value.
Ihor Radchenko 3 年之前
父節點
當前提交
7ba24c673b
共有 2 個文件被更改,包括 15 次插入16 次删除
  1. 10 15
      lisp/ob-gnuplot.el
  2. 5 1
      lisp/ox-ascii.el

+ 10 - 15
lisp/ob-gnuplot.el

@@ -129,6 +129,7 @@ code."
            (title (cdr (assq :title params)))
            (lines (cdr (assq :line params)))
            (sets (cdr (assq :set params)))
+           (missing (cdr (assq :missing params)))
            (x-labels (cdr (assq :xlabels params)))
            (y-labels (cdr (assq :ylabels params)))
            (timefmt (cdr (assq :timefmt params)))
@@ -138,6 +139,7 @@ code."
 			   (file-name-directory (buffer-file-name))))
 	   (add-to-body (lambda (text) (setq body (concat text "\n" body)))))
       ;; append header argument settings to body
+      (when missing (funcall add-to-body (format "set datafile missing '%s'" missing)))
       (when title (funcall add-to-body (format "set title '%s'" title)))
       (when lines (mapc (lambda (el) (funcall add-to-body el)) lines))
       (when sets
@@ -288,21 +290,14 @@ Pass PARAMS through to `orgtbl-to-generic' when exporting TABLE."
   (with-temp-file data-file
     (insert (let ((org-babel-gnuplot-timestamp-fmt
 		   (or (plist-get params :timefmt) "%Y-%m-%d-%H:%M:%S")))
-              (replace-regexp-in-string
-               ;; org export backend adds "|" at the beginning/end of
-               ;; the table lines.  Strip those.
-               "^|\\(.+\\)|$"
-               "\\1"
-	       (orgtbl-to-generic
-	        table
-	        (org-combine-plists
-		 '( :sep "\t" :fmt org-babel-gnuplot-quote-tsv-field
-                    ;; Two setting below are needed to make :fmt work.
-                    :raw t
-                    ;; Use `org', not `ascii' because `ascii' may
-                    ;; sometimes mishandle quoted strings.
-                    :backend org)
-		 params))))))
+	      (orgtbl-to-generic
+	       table
+	       (org-combine-plists
+		'( :sep "\t" :fmt org-babel-gnuplot-quote-tsv-field
+                   ;; Two setting below are needed to make :fmt work.
+                   :raw t
+                   :backend ascii)
+		params)))))
   data-file)
 
 (provide 'ob-gnuplot)

+ 5 - 1
lisp/ox-ascii.el

@@ -1929,7 +1929,11 @@ a communication channel."
 	       (org-export-table-cell-alignment table-cell info)))))
       (setq contents
 	    (concat data
-		    (make-string (- width (string-width (or data ""))) ?\s))))
+                    ;; FIXME: If CONTENTS was transformed by filters,
+                    ;; the whole width calculation can be wrong.
+                    ;; At least, make sure that we do not throw error
+                    ;; when CONTENTS is larger than width.
+		    (make-string (max 0 (- width (string-width (or data "")))) ?\s))))
     ;; Return cell.
     (concat (format " %s " contents)
 	    (when (memq 'right (org-export-table-cell-borders table-cell info))