org-table-transpose-table-at-point: Preserve indentation and point

* lisp/org-table.el (org-table-transpose-table-at-point): Preserve
indentatinon of first row. Restore point to transposed field in
transposed table.
This commit is contained in:
Michael Brand 2013-09-30 20:32:29 +02:00 committed by Carsten Dominik
parent 2eef1b4549
commit fb5003ea63
1 changed files with 15 additions and 6 deletions

View File

@ -1834,7 +1834,7 @@ blindly applies a recipe that works for simple tables."
(goto-char beg)))))
(defun org-table-transpose-table-at-point ()
"Transpose orgmode table at point and eliminate hlines.
"Transpose Org table at point and eliminate hlines.
So a table like
| 1 | 2 | 4 | 5 |
@ -1849,9 +1849,11 @@ will be transposed as
| 4 | c | g |
| 5 | d | h |
Note that horizontal lines disappeared."
Note that horizontal lines disappear."
(interactive)
(let* ((table (delete 'hline (org-table-to-lisp)))
(dline_old (org-table-current-line))
(col_old (org-table-current-column))
(contents (mapcar (lambda (p)
(let ((tp table))
(mapcar
@ -1861,10 +1863,17 @@ Note that horizontal lines disappeared."
(setq tp (cdr tp))))
table)))
(car table))))
(delete-region (org-table-begin) (org-table-end))
(insert (mapconcat (lambda(x) (concat "| " (mapconcat 'identity x " | " ) " |\n" ))
(goto-char (org-table-begin))
(re-search-forward "|")
(backward-char)
(delete-region (point) (org-table-end))
(insert (mapconcat
(lambda(x)
(concat "| " (mapconcat 'identity x " | " ) " |\n" ))
contents ""))
(org-table-align)))
(org-table-goto-line col_old)
(org-table-goto-column dline_old))
(org-table-align))
;;;###autoload
(defun org-table-wrap-region (arg)