In a preexisting org table, hitting <tab> can add a new, unintended column To reproduce the behavior: 1) Create foo.org containing: | Type | | foo | | | 2) emacs -Q 3) M-x package-initialize 4) C-x C-f foo.org 5) Repeat: 1) Put cursor at end of line containing foo 2) <tab> Bug: After the 2nd iteration, org adds a unintended new column. Further iteration adds more columns. ====================================================================== Emacs : GNU Emacs 26.1 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.5) of 2021-01-30, modified by Debian Package: Org mode version 9.4.6 (9.4.6-gab9f2a @ /home/user/.emacs.d/elpa/org-9.4.6/) current state: ============== (setq org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer) org-link-shell-confirm-function 'yes-or-no-p org-metadown-hook '(org-babel-pop-to-session-maybe) org-clock-out-hook '(org-clock-remove-empty-clock-drawer) org-reveal-start-hook '(org-decrypt-entry) org-mode-hook '(#[0 "\300\301\302\303\304$\207" [add-hook change-major-mode-hook org-show-all append local] 5] #[0 "\300\301\302\303\304$\207" [add-hook change-major-mode-hook org-babel-show-result-all append local] 5] org-babel-result-hide-spec org-babel-hide-all-hashes) org-archive-hook '(org-attach-archive-delete-maybe) org-confirm-elisp-link-function 'yes-or-no-p org-agenda-before-write-hook '(org-agenda-add-entry-text) org-metaup-hook '(org-babel-load-in-session-maybe) org-bibtex-headline-format-function #[257 "\300\x01\236A\207" [:title] 3 "\n\n(fn ENTRY)"] org-babel-pre-tangle-hook '(save-buffer) org-tab-first-hook '(org-babel-hide-result-toggle-maybe org-babel-header-arg-expand) org-agenda-loop-over-headlines-in-active-region nil org-occur-hook '(org-first-headline-recenter) org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers org-cycle-show-empty-lines org-optimize-window-after-visibility-change) org-speed-command-hook '(org-speed-command-activate org-babel-speed-command-activate) org-export-before-parsing-hook '(org-attach-expand-links) org-confirm-shell-link-function 'yes-or-no-p org-link-parameters '(("attachment" :follow org-attach-follow :complete org-attach-complete-link) ("id" :follow org-id-open) ("eww" :follow org-eww-open :store org-eww-store-link) ("rmail" :follow org-rmail-open :store org-rmail-store-link) ("mhe" :follow org-mhe-open :store org-mhe-store-link) ("irc" :follow org-irc-visit :store org-irc-store-link :export org-irc-export) ("info" :follow org-info-open :export org-info-export :store org-info-store-link) ("gnus" :follow org-gnus-open :store org-gnus-store-link) ("docview" :follow org-docview-open :export org-docview-export :store org-docview-store-link) ("bibtex" :follow org-bibtex-open :store org-bibtex-store-link) ("bbdb" :follow org-bbdb-open :export org-bbdb-export :complete org-bbdb-complete-link :store org-bbdb-store-link) ("w3m" :store org-w3m-store-link) ("file+sys") ("file+emacs") ("shell" :follow org-link--open-shell) ("news" :follow #[514 "\301\300\302\x04Q\x02\"\207" ["news" browse-url ":"] 6 "\n\n(fn URL ARG)"]) ("mailto" :follow #[514 "\301\300\302\x04Q\x02\"\207" ["mailto" browse-url ":"] 6 "\n\n(fn URL ARG)"]) ("https" :follow #[514 "\301\300\302\x04Q\x02\"\207" ["https" browse-url ":"] 6 "\n\n(fn URL ARG)"]) ("http" :follow #[514 "\301\300\302\x04Q\x02\"\207" ["http" browse-url ":"] 6 "\n\n(fn URL ARG)"]) ("ftp" :follow #[514 "\301\300\302\x04Q\x02\"\207" ["ftp" browse-url ":"] 6 "\n\n(fn URL ARG)"]) ("help" :follow org-link--open-help) ("file" :complete org-link-complete-file) ("elisp" :follow org-link--open-elisp) ("doi" :follow org-link--open-doi)) org-link-elisp-confirm-function 'yes-or-no-p )
spectria@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
Best,
Ihor
[-- Attachment #1: Type: text/plain, Size: 44 bytes --] Confirming as a Bug on updates.orgmode.org.
[-- Attachment #1: Type: text/plain, Size: 458 bytes --] Ihor Radchenko <yantar92@gmail.com> writes: > spectria@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 [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-org-table.el-Do-not-create-new-field-when-at-EOL-aft.patch --] [-- Type: text/x-diff, Size: 1221 bytes --] From 36485b234d607be16cc06912dc85b9984a0142af Mon Sep 17 00:00:00 2001 Message-Id: <36485b234d607be16cc06912dc85b9984a0142af.1633157571.git.yantar92@gmail.com> From: Ihor Radchenko <yantar92@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
I've had this happen in an earlier version of org and found if I get on
the last record in a table at the beginning of the line and tab the number
of columns in the table plus 1 I get a blank new record added to the table
and the extra unintended column does not appear. In the earlier version
of orgmode I use if I go down to the last record then tab once to get into
the first column of the table and then start entering data and finish the
data entry in that record or add more records, then the extra unintended
column does appear. I only mention this behavior as confirmation of this
behavior.
On Tue, 9 Nov 2021, Spectira Chiando wrote:
> Ihor,
>
> Patch is working great, have been using it heavily for the past month. Thanks very much!
>
> Spectria
>
> Sent: Saturday, October 02, 2021 at 1:54 AM
> From: "Ihor Radchenko" <yantar92@gmail.com>
> To: spectria@mail.com
> Cc: emacs-orgmode@gnu.org
> Subject: [PATCH] Bug: Unintended column added to table [9.4.6 (9.4.6-gab9f2a @ /home/user/.emacs.d/elpa/org-9.4.6/)]
> Ihor Radchenko <yantar92@gmail.com> writes:
>
> > spectria@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
>
>
>
Spectira Chiando <spectria@mail.com> writes:
> Patch is working great, have been using it heavily for the past month. Thanks very much!
Applied.
I took a freedom to push the patch to main.
Best,
Ihor