GNU bug report logs - #10258
compilation-error-regexp-alist just assumes columns not characters

Previous Next

Package: emacs;

Reported by: jidanni <at> jidanni.org

Date: Fri, 9 Dec 2011 21:56:02 UTC

Severity: normal

Done: Stefan Monnier <monnier <at> IRO.UMontreal.CA>

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: jidanni <at> jidanni.org
Subject: bug#10258: closed (Re: bug#10258: compilation-error-regexp-alist
 just assumes columns not characters)
Date: Wed, 28 Dec 2011 10:22:03 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#10258: compilation-error-regexp-alist just assumes columns not characters

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 10258 <at> debbugs.gnu.org.

-- 
10258: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10258
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: jidanni <at> jidanni.org
Cc: 10258-done <at> debbugs.gnu.org
Subject: Re: bug#10258: compilation-error-regexp-alist just assumes columns
	not characters
Date: Tue, 27 Dec 2011 18:49:07 -0500
SM> Better not call make-variable-buffer-local except...
> OK thanks. Maybe
> (info "(emacs) Locals")
> more precisely,
> (Info-menu "Emacs (emacs-snapshot)" nil)
> (Info-index "make-variable-buffer-local")
> should warn/hint about that, just like
> (describe-function (quote make-variable-buffer-local))
> already does.

Indeed.  I've installed the patch below,


        Stefan


=== modified file 'doc/lispref/variables.texi'
--- doc/lispref/variables.texi	2011-12-23 13:14:12 +0000
+++ doc/lispref/variables.texi	2011-12-27 23:42:22 +0000
@@ -1352,6 +1352,8 @@
 This function marks @var{variable} (a symbol) automatically
 buffer-local, so that any subsequent attempt to set it will make it
 local to the current buffer at the time.
+Contrary to @code{make-local-variable} with which it is often confused, this
+cannot be undone, and affects the behavior of the variable in all buffers.
 
 A peculiar wrinkle of this feature is that binding the variable (with
 @code{let} or other binding constructs) does not create a buffer-local


[Message part 3 (message/rfc822, inline)]
From: jidanni <at> jidanni.org
To: bug-gnu-emacs <at> gnu.org
Subject: compilation-error-regexp-alist just assumes columns not characters
Date: Sat, 10 Dec 2011 04:18:12 +0800
Gentlemen, why does *compilation* say

  basex -b y=3 TaiwanAMFMSW.xq
  Stopped at line 57, column 29 in /home/jidanni/millerliu/xquery/TaiwanAMFMSW.xq:
  [XPST0003] Expecting "return", found "r".

But the cursor upon next-error ends up at

        case "TaiwanAMFMSW_by_band" retrun let $K:= "AM/FM/SW" return ()
                            ^      ^
                            A, not B       if those blanks at front were a TAB.

Well that is because on
   (describe-variable (quote compilation-error-regexp-alist))
there is nary a mention of what to do when the compiler making the
message is counting characters (TAB=1) and emacs is thinking it is
counting columns (TAB=8, etc.).

All we see is
  COLUMN can also be of the form (COLUMN . END-COLUMN) meaning a range of
  columns starting on LINE and ending on END-LINE, if that matched.

There is no way to communicate to emacs that this certain compiler does
not know how many columns a TAB equals in emacs, and is just reporting a
character count from the last newline.

So one is forced to untabify ones source files!

So it seems that compilation-error-regexp-alist needs an extra parameter
to tell if we are just counting characters or actually counting columns.

P.S., guess what happens when there are wide characters involved,

        case "補補補TaiwanAMFMSW_by_band" retrun let $K:= "AM/FM/SW" return ()

you guessed it!

How can I tell emacs in
   (add-to-list 'compilation-error-regexp-alist-alist
   '(basex "^Stopped at line \\([0-9]+\\), column \\([0-9]+\\) in \\(.*?\\):$" 3 1 2))
     (add-to-list 'compilation-error-regexp-alist 'basex)
that "column" means "char"?



This bug report was last modified 13 years and 212 days ago.

Previous Next


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