>From 25cca4de0a20667b339abaf7cae067540e47a33d Mon Sep 17 00:00:00 2001 From: Rasmus Date: Sun, 17 May 2015 14:46:25 +0200 Subject: [PATCH 3/3] org-delete-indentation: Add support for tables * org.el (org-delete-indentation): Add support for tables. --- lisp/org.el | 66 +++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index 6db69c1..0c3e61c 100755 --- a/lisp/org.el +++ b/lisp/org.el @@ -20985,27 +20985,51 @@ the function calls `delete-indentation'. With argument, join this line to following line." (interactive "*P") - (if (save-excursion - (if ARG (beginning-of-line) - (forward-line -1)) - (looking-at org-complex-heading-regexp)) - ;; At headline. - (let ((tags-column (when (match-beginning 5) - (save-excursion (goto-char (match-beginning 5)) - (current-column)))) - (string (concat " " (progn (when ARG (forward-line 1)) - (org-trim (delete-and-extract-region - (line-beginning-position) - (line-end-position))))))) - (unless (bobp) (delete-region (point) (1- (point)))) - (goto-char (or (match-beginning 5) - (match-end 0))) - (skip-chars-backward " \t") - (save-excursion (insert string)) - ;; Adjust alignment of tags. - (when tags-column - (org-align-tags-here (if org-auto-align-tags org-tags-column tags-column)))) - (delete-indentation ARG))) + (cond ((save-excursion (if ARG (beginning-of-line) + (forward-line -1)) + (looking-at org-complex-heading-regexp)) + ;; At a headline. + (let ((tags-column (when (match-beginning 5) + (save-excursion (goto-char (match-beginning 5)) + (current-column)))) + (string (concat " " (progn (when ARG (forward-line 1)) + (org-trim (delete-and-extract-region + (line-beginning-position) + (line-end-position))))))) + (unless (bobp) (delete-region (point) (1- (point)))) + (goto-char (or (match-beginning 5) + (match-end 0))) + (skip-chars-backward " \t") + (save-excursion (insert string)) + ;; Adjust alignment of tags. + (when tags-column + (org-align-tags-here (if org-auto-align-tags + org-tags-column + tags-column))))) + ;; TODO: Should be moved to separate function in org-table. + ((let ((current-line (org-table-current-line))) + (and (org-at-table-p) + (or (or ARG (not (eq current-line 1))) + (and ARG (eq current-line + (save-excursion + (org-table-end) + (org-table-current-line))))))) + (when ARG (org-table-next-row)) + (let ((column (org-table-current-column)) + (starting-line (org-table-current-line)) + (string (delete-and-extract-region + (point) (1- (search-forward "|"))))) + (org-table-goto-line (1- starting-line)) + (org-table-goto-column column) + (search-forward "|") + (backward-char) + (skip-chars-backward " \t") + (let ((column (current-column))) + (insert " " (org-trim string)) + (org-table-align) + (move-to-column column) + (when (eq (preceding-char) ?|) (forward-char))))) + (t (delete-indentation ARG)))) (defun org-open-line (n) "Insert a new row in tables, call `open-line' elsewhere. -- 2.4.1