From 8374e6f438b8c2b85c0bb0671fa6df1547b49ec5 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 19 Aug 2017 15:39:04 +0200 Subject: [PATCH] org-table: Implement org-table-expand * lisp/org-table.el (org-table-expand): New function. (org-table--expand-all-columns): Remove function. (org-table-with-shrunk-columns): (org-table-insert-column): (org-table-delete-column): (org-table-move-column): (org-table-toggle-column-width): Use new function. --- lisp/org-table.el | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/lisp/org-table.el b/lisp/org-table.el index 951915fd4..e0fbe7a27 100644 --- a/lisp/org-table.el +++ b/lisp/org-table.el @@ -524,7 +524,7 @@ Field is restored even in case of abnormal exit." `(let ((,begin (copy-marker (org-table-begin))) (,end (copy-marker (org-table-end) t)) (,shrunk-columns (org-table--list-shrunk-columns))) - (org-with-point-at ,begin (org-table--expand-all-columns ,begin ,end)) + (org-with-point-at ,begin (org-table-expand ,begin ,end)) (unwind-protect (progn ,@body) (org-table--shrink-columns ,shrunk-columns ,begin ,end) @@ -1366,7 +1366,7 @@ However, when FORCE is non-nil, create new columns if necessary." (beg (org-table-begin)) (end (copy-marker (org-table-end))) (shrunk-columns (org-table--list-shrunk-columns))) - (org-table--expand-all-columns beg end) + (org-table-expand beg end) (org-table-save-field (goto-char beg) (while (< (point) end) @@ -1379,7 +1379,7 @@ However, when FORCE is non-nil, create new columns if necessary." ;; columns again. (org-table--shrink-columns (mapcar (lambda (c) (if (< c col) c (1+ c))) shrunk-columns) - beg end) + beg end) (set-marker end nil) ;; Fix TBLFM formulas, if desirable. (when (or (not org-table-fix-formulas-confirm) @@ -1440,7 +1440,7 @@ non-nil, the one above is used." (beg (org-table-begin)) (end (copy-marker (org-table-end))) (shrunk-columns (remq col (org-table--list-shrunk-columns)))) - (org-table--expand-all-columns beg end) + (org-table-expand beg end) (org-table-save-field (goto-char beg) (while (< (point) end) @@ -1495,7 +1495,7 @@ non-nil, the one above is used." (when (and (not left) (looking-at "[^|\n]*|[^|\n]*$")) (user-error "Cannot move column further right")) (let ((shrunk-columns (org-table--list-shrunk-columns))) - (org-table--expand-all-columns beg end) + (org-table-expand beg end) (org-table-save-field (goto-char beg) (while (< (point) end) @@ -3992,12 +3992,6 @@ table." (push new (cdr chain)) (overlay-put new 'org-table-column-overlays chain)))))))) -(defun org-table--expand-all-columns (beg end) - "Expand all columns in an Org table. -BEG and END are, respectively, the beginning position and the end -position of the table." - (remove-overlays beg end 'org-overlay-type 'table-column-hide)) - ;;;###autoload (defun org-table-toggle-column-width (&optional arg) "Shrink or expand current column in an Org table. @@ -4058,9 +4052,9 @@ prefix, expand all columns." (_ (user-error "Invalid argument: %S" arg))))) (pcase arg (`(4) (org-table-shrink begin end)) - (`(16) (org-table--expand-all-columns begin end)) + (`(16) (org-table-expand begin end)) (_ - (org-table--expand-all-columns begin end) + (org-table-expand begin end) (org-table--shrink-columns (cl-set-exclusive-or columns shrunk) begin end) ;; Move before overlay if point is under it. (let ((o (org-table--shrunk-field))) @@ -4085,12 +4079,24 @@ beginning and end position of the current table." (while (re-search-forward regexp end t) (goto-char (match-beginning 1)) (cl-pushnew (org-table-current-column) columns)) - (org-table--expand-all-columns begin end) + (org-table-expand begin end) ;; Make sure invisible characters in the table are at the right ;; place since column widths take them into account. (org-font-lock-ensure begin end) (org-table--shrink-columns (sort columns #'<) begin end)))) +;;;###autoload +(defun org-table-expand (&optional begin end) + "Expand all columns in the table at point. +Optional arguments BEGIN and END, when non-nil, specify the +beginning and end position of the current table." + (interactive) + (unless (or begin (org-at-table-p)) (user-error "Not at a table")) + (org-with-wide-buffer + (let ((begin (or begin (org-table-begin))) + (end (or end (org-table-end)))) + (remove-overlays begin end 'org-overlay-type 'table-column-hide)))) + ;;; Formula editing