Ihor Radchenko <yanta...@gmail.com> writes:

> spect...@mail.com writes:
>
>> In a preexisting org table, hitting <tab> can add a new, unintended column
>>
>> Bug: After the 2nd iteration, org adds a unintended new column. Further 
>> iteration adds more columns.
>
> Confirmed
>
> The problem appears somewhere inside org-table-justify-field-maybe

And here is the fix.

I am not familiar with org-table codebase, so feedback would be
appreciated.

Best,
Ihor

>From 36485b234d607be16cc06912dc85b9984a0142af Mon Sep 17 00:00:00 2001
Message-Id: <36485b234d607be16cc06912dc85b9984a0142af.1633157571.git.yanta...@gmail.com>
From: Ihor Radchenko <yanta...@gmail.com>
Date: Sat, 2 Oct 2021 14:44:30 +0800
Subject: [PATCH] org-table.el: Do not create new field when at EOL after table
 line

* lisp/org-table.el (org-table-justify-field-maybe): Do not treat "|$"
as unclosed table field.

Fixes https://orgmode.org/list/trinity-2561db57-1561-470b-982f-0d91ddf4f145-1629900012884@3c-app-mailcom-lxa06
---
 lisp/org-table.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/org-table.el b/lisp/org-table.el
index 89c57fb06..e34872fb4 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -4436,7 +4436,7 @@ (defun org-table-justify-field-maybe (&optional new)
 	  (col (org-table-current-column)))
       (when (> col 0)
 	(skip-chars-backward "^|")
-	(if (not (looking-at " *\\([^|\n]*?\\) *\\(|\\|$\\)"))
+	(if (not (looking-at " *\\(?:\\([^|\n]*?\\) *\\(|\\)\\|\\([^|\n]+?\\) *\\($\\)\\)"))
 	    (setq org-table-may-need-update t)
 	  (let* ((align (nth (1- col) org-table-last-alignment))
 		 (width (nth (1- col) org-table-last-column-widths))
-- 
2.32.0

Reply via email to