From fb5003ea6314666a2701e7c5ef689f9370d95209 Mon Sep 17 00:00:00 2001 From: Michael Brand Date: Mon, 30 Sep 2013 20:32:29 +0200 Subject: [PATCH] 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. --- lisp/org-table.el | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/lisp/org-table.el b/lisp/org-table.el index 5bc754cd1..7be77ccba 100644 --- a/lisp/org-table.el +++ b/lisp/org-table.el @@ -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" )) - contents "")) - (org-table-align))) + (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-goto-line col_old) + (org-table-goto-column dline_old)) + (org-table-align)) ;;;###autoload (defun org-table-wrap-region (arg)