GNU bug report logs - #26032
Indenting in tabulars without &

Previous Next

Package: auctex;

Reported by: Arash Esbati <arash <at> gnu.org>

Date: Wed, 8 Mar 2017 19:45:02 UTC

Severity: normal

Done: Arash Esbati <arash <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Arash Esbati <arash <at> gnu.org>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#26032: closed (Indenting in tabulars without &)
Date: Fri, 10 Mar 2017 12:36:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Fri, 10 Mar 2017 13:34:34 +0100
with message-id <86varh1fad.fsf <at> gnu.org>
and subject line Re: bug#26032: Indenting in tabulars without &
has caused the debbugs.gnu.org bug report #26032,
regarding Indenting in tabulars without &
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
26032: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=26032
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Arash Esbati <arash <at> gnu.org>
To: auctex-bugs <bug-auctex <at> gnu.org>
Subject: Indenting in tabulars without &
Date: Wed, 08 Mar 2017 20:43:15 +0100
Hi all,

please consider the following 2 examples and how the column separator is
filled, both do not work as expected:

--8<---------------cut here---------------start------------->8---
\documentclass{article}

\begin{document}

\begin{tabular}{ll}
  \multicolumn{2}{c}{These lines will} `M-RET here'
\end{tabular}
results in:
\begin{tabular}{ll}
  \multicolumn{2}{c}{These lines will} `M-RET here' \\
&
\end{tabular}

And
\begin{tabular}{ll}
  \multicolumn{2}{c}{These lines will}  \\
  & `C-c C-q C-e here'
\end{tabular}
results in:
\begin{tabular}{ll}
  \multicolumn{2}{c}{These lines will}  \\
& `C-c C-q C-e here'
\end{tabular}
\end{document}
--8<---------------cut here---------------end--------------->8---

The issue is in `LaTeX-hanging-ampersand-position' where
(- (current-column) 1) returns a negative value if no "[^\\]&" is found:

--8<---------------cut here---------------start------------->8---
(defun LaTeX-hanging-ampersand-position ()
  "Return indent column for a hanging ampersand (i.e. ^\\s-*&)."
  (destructuring-bind (beg-pos . beg-col)
      (LaTeX-env-beginning-pos-col)
    (let* ((cur-pos (point)))
      (save-excursion
        (if (re-search-backward "\\\\\\\\" beg-pos t)
            (let ((cur-idx (TeX-how-many "[^\\]&" (point) cur-pos)))
              (goto-char beg-pos)
              (re-search-forward "[^\\]&" cur-pos t (+ 1 cur-idx))
              (- (current-column) 1))
          (+ 2 beg-col))))))
--8<---------------cut here---------------end--------------->8---

My suggest to guard (- (current-column) 1) with a (wholenump ...) and
return (+ 2 beg-col) as fallback if the test is not true:

--8<---------------cut here---------------start------------->8---
(defun LaTeX-hanging-ampersand-position ()
  "Return indent column for a hanging ampersand (i.e. ^\\s-*&)."
  (destructuring-bind (beg-pos . beg-col)
      (LaTeX-env-beginning-pos-col)
    (let* ((cur-pos (point)))
      (save-excursion
        (if (re-search-backward "\\\\\\\\" beg-pos t)
            (let ((cur-idx (TeX-how-many "[^\\]&" (point) cur-pos)))
              (goto-char beg-pos)
              (re-search-forward "[^\\]&" cur-pos t (+ 1 cur-idx))
	      (if (wholenump (- (current-column) 1))
		  (- (current-column) 1)
		(+ 2 beg-col)))
          (+ 2 beg-col))))))
--8<---------------cut here---------------end--------------->8---

Any comments welcome.

Best, Arash


[Message part 3 (message/rfc822, inline)]
From: Arash Esbati <arash <at> gnu.org>
To: Ikumi Keita <ikumi <at> ikumi.que.jp>
Cc: 26032-done <at> debbugs.gnu.org, Mosè Giordano <mose <at> gnu.org>
Subject: Re: bug#26032: Indenting in tabulars without &
Date: Fri, 10 Mar 2017 13:34:34 +0100
Ikumi Keita <ikumi <at> ikumi.que.jp> writes:

> I think that the sign test can be omitted altogether if we use `max'.
> That is, just
>
> 	     (max (+ 2 beg-col)
> 		  (- (current-column) 1)))
>
> is enough.  This code does the expected job on my machine.

Hi Keita,

yes, of course.  Thank you very much.  I've push a new change set to
git.  Next try to close this bug.

Best, Arash


This bug report was last modified 8 years and 72 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.