org-table: several cleanups

* lisp/org.el (org-table-clean-did-remove-column),
  lisp/org-table.el (org-table-clean-did-remove-column): Move defvar,
  this dynamic variable is only used in org-table.
* lisp/org-table.el (org-table-colgroup-info): Remove unused defvar
  for `org-table-colgroup-info'.
  (org-table-clean-before-export): Let-bind regular expression strings
  and remove unused matching group.  Use
  `org-table-clean-did-remove-column' in cond statement rather than
  branching via if to avoid code duplication.  Remove the code
  associated with the removed `org-table-colgroup-info'.
  (orgtbl-export): Remove unused internal function.
This commit is contained in:
Achim Gratz 2013-05-12 18:01:43 +02:00
parent 7dc2babf29
commit 646f1ac426
2 changed files with 24 additions and 79 deletions

View File

@ -419,68 +419,38 @@ available parameters."
(org-split-string (match-string 1 line)
"[ \t]*|[ \t]*")))))))
(defvar org-table-colgroup-info nil) ; Dynamically scoped.
(defvar org-table-clean-did-remove-column nil) ; dynamically scoped
(defun org-table-clean-before-export (lines &optional maybe-quoted)
"Check if the table has a marking column.
If yes remove the column and the special lines."
(setq org-table-colgroup-info nil)
(if (memq nil
(mapcar
(lambda (x) (or (string-match "^[ \t]*|-" x)
(string-match
(if maybe-quoted
"^[ \t]*| *\\\\?\\([\#!$*_^ /]\\) *|"
"^[ \t]*| *\\([\#!$*_^ /]\\) *|")
x)))
lines))
;; No special marking column
(progn
(setq org-table-clean-did-remove-column nil)
(delq nil
(mapcar
(lambda (x)
(cond
((org-table-colgroup-line-p x)
;; This line contains colgroup info, extract it
;; and then discard the line
(setq org-table-colgroup-info
(mapcar (lambda (x)
(cond ((member x '("<" "&lt;")) :start)
((member x '(">" "&gt;")) :end)
((member x '("<>" "&lt;&gt;")) :startend)))
(org-split-string x "[ \t]*|[ \t]*")))
nil)
((org-table-cookie-line-p x)
;; This line contains formatting cookies, discard it
nil)
(t x)))
lines)))
;; there is a special marking column
(setq org-table-clean-did-remove-column t)
(let ((special (if maybe-quoted
"^[ \t]*| *\\\\?[\#!$*_^/ ] *|"
"^[ \t]*| *[\#!$*_^/ ] *|"))
(ignore (if maybe-quoted
"^[ \t]*| *\\\\?[!$_^/] *|"
"^[ \t]*| *[!$_^/] *|")))
(setq org-table-clean-did-remove-column
(not (memq nil
(mapcar
(lambda (line)
(or (string-match org-table-hline-regexp line)
(string-match special line)))
lines))))
(delq nil
(mapcar
(lambda (x)
(lambda (line)
(cond
((org-table-colgroup-line-p x)
;; This line contains colgroup info, extract it
;; and then discard the line
(setq org-table-colgroup-info
(mapcar (lambda (x)
(cond ((member x '("<" "&lt;")) :start)
((member x '(">" "&gt;")) :end)
((member x '("<>" "&lt;&gt;")) :startend)))
(cdr (org-split-string x "[ \t]*|[ \t]*"))))
((or (org-table-colgroup-line-p line) ;; colgroup info
(org-table-cookie-line-p line) ;; formatting cookies
(and org-table-clean-did-remove-column
(string-match ignore line))) ;; non-exportable data
nil)
((org-table-cookie-line-p x)
;; This line contains formatting cookies, discard it
nil)
((string-match "^[ \t]*| *\\([!_^/$]\\|\\\\\\$\\) *|" x)
;; ignore this line
nil)
((or (string-match "^\\([ \t]*\\)|-+\\+" x)
(string-match "^\\([ \t]*\\)|[^|]*|" x))
((and org-table-clean-did-remove-column
(or (string-match "^\\([ \t]*\\)|-+\\+" line)
(string-match "^\\([ \t]*\\)|[^|]*|" line)))
;; remove the first column
(replace-match "\\1|" t nil x))))
(replace-match "\\1|" t nil line))
(t line)))
lines))))
(defconst org-table-translate-regexp
@ -4406,30 +4376,6 @@ overwritten, and the table is not marked as requiring realignment."
(defvar orgtbl-exp-regexp "^\\([-+]?[0-9][0-9.]*\\)[eE]\\([-+]?[0-9]+\\)$"
"Regular expression matching exponentials as produced by calc.")
(defun orgtbl-export (table target)
(let ((func (intern (concat "orgtbl-to-" (symbol-name target))))
(lines (org-split-string table "[ \t]*\n[ \t]*"))
org-table-last-alignment org-table-last-column-widths
maxcol column)
(if (not (fboundp func))
(user-error "Cannot export orgtbl table to %s" target))
(setq lines (org-table-clean-before-export lines))
(setq table
(mapcar
(lambda (x)
(if (string-match org-table-hline-regexp x)
'hline
(org-split-string (org-trim x) "\\s-*|\\s-*")))
lines))
(setq maxcol (apply 'max (mapcar (lambda (x) (if (listp x) (length x) 0))
table)))
(loop for i from (1- maxcol) downto 0 do
(setq column (mapcar (lambda (x) (if (listp x) (nth i x) nil)) table))
(setq column (delq nil column))
(push (apply 'max (mapcar 'string-width column)) org-table-last-column-widths)
(push (> (/ (apply '+ (mapcar (lambda (x) (if (string-match org-table-number-regexp x) 1 0)) column)) maxcol) org-table-number-fraction) org-table-last-alignment))
(funcall func table nil)))
(defun orgtbl-gather-send-defs ()
"Gather a plist of :name, :transform, :params for each destination before
a radio table."

View File

@ -4292,7 +4292,6 @@ If TABLE-TYPE is non-nil, also check for table.el-type tables."
(looking-at org-table-hline-regexp))
nil))
(defvar org-table-clean-did-remove-column nil)
(defun org-table-map-tables (function &optional quietly)
"Apply FUNCTION to the start of all tables in the buffer."
(save-excursion