* bug#10258: compilation-error-regexp-alist just assumes columns not characters
@ 2011-12-09 20:18 jidanni
2011-12-12 16:28 ` Stefan Monnier
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: jidanni @ 2011-12-09 20:18 UTC (permalink / raw)
To: 10258
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"?
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#10258: compilation-error-regexp-alist just assumes columns not characters
2011-12-09 20:18 bug#10258: compilation-error-regexp-alist just assumes columns not characters jidanni
@ 2011-12-12 16:28 ` Stefan Monnier
2011-12-14 14:09 ` jidanni
2011-12-21 23:59 ` jidanni
2 siblings, 0 replies; 6+ messages in thread
From: Stefan Monnier @ 2011-12-12 16:28 UTC (permalink / raw)
To: jidanni; +Cc: 10258
> 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.).
There's compilation-error-screen-columns, but it can't be set only for
a specific compilation-error-regexp-alist entry. OTOH in Emacs-24, you
can set it buffer-locally in the target buffer (i.e. in your
TaiwanAMFMSW.xq file).
Stefan
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#10258: compilation-error-regexp-alist just assumes columns not characters
2011-12-09 20:18 bug#10258: compilation-error-regexp-alist just assumes columns not characters jidanni
2011-12-12 16:28 ` Stefan Monnier
@ 2011-12-14 14:09 ` jidanni
2011-12-16 0:06 ` Stefan Monnier
2011-12-21 23:59 ` jidanni
2 siblings, 1 reply; 6+ messages in thread
From: jidanni @ 2011-12-14 14:09 UTC (permalink / raw)
To: monnier; +Cc: 10258
>>>>> "SM" == Stefan Monnier <monnier@iro.umontreal.ca> writes:
SM> There's compilation-error-screen-columns, but it can't be set only for
SM> a specific compilation-error-regexp-alist entry.
Well do consider that enhancement. In the meantime I discovered this works:
(setq compilation-error-screen-columns t);default, set once more for good luck.
(make-variable-buffer-local 'compilation-error-screen-columns)
(add-hook 'xquery-mode-hook
(function (lambda ()
(setq compilation-error-screen-columns nil))))
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#10258: compilation-error-regexp-alist just assumes columns not characters
2011-12-14 14:09 ` jidanni
@ 2011-12-16 0:06 ` Stefan Monnier
0 siblings, 0 replies; 6+ messages in thread
From: Stefan Monnier @ 2011-12-16 0:06 UTC (permalink / raw)
To: jidanni; +Cc: 10258
> (setq compilation-error-screen-columns t);default, set once more for good luck.
> (make-variable-buffer-local 'compilation-error-screen-columns)
> (add-hook 'xquery-mode-hook
> (function (lambda ()
> (setq compilation-error-screen-columns nil))))
Better not call make-variable-buffer-local except on variables you have
defined yourself (e.g. in this case only do it in compile.el).
I.e. use
(add-hook 'xquery-mode-hook
(lambda ()
(set (make-local-variable 'compilation-error-screen-columns) nil)))
-- Stefan
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#10258: compilation-error-regexp-alist just assumes columns not characters
2011-12-09 20:18 bug#10258: compilation-error-regexp-alist just assumes columns not characters jidanni
2011-12-12 16:28 ` Stefan Monnier
2011-12-14 14:09 ` jidanni
@ 2011-12-21 23:59 ` jidanni
2011-12-27 23:49 ` Stefan Monnier
2 siblings, 1 reply; 6+ messages in thread
From: jidanni @ 2011-12-21 23:59 UTC (permalink / raw)
To: monnier; +Cc: 10258
>>>>> "SM" == Stefan Monnier <monnier@iro.umontreal.ca> writes:
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.
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#10258: compilation-error-regexp-alist just assumes columns not characters
2011-12-21 23:59 ` jidanni
@ 2011-12-27 23:49 ` Stefan Monnier
0 siblings, 0 replies; 6+ messages in thread
From: Stefan Monnier @ 2011-12-27 23:49 UTC (permalink / raw)
To: jidanni; +Cc: 10258-done
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
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-12-27 23:49 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-09 20:18 bug#10258: compilation-error-regexp-alist just assumes columns not characters jidanni
2011-12-12 16:28 ` Stefan Monnier
2011-12-14 14:09 ` jidanni
2011-12-16 0:06 ` Stefan Monnier
2011-12-21 23:59 ` jidanni
2011-12-27 23:49 ` Stefan Monnier
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.