* bug#12136: 24.1; Allow faces specified by property lists in `compilation-error-regexp-alist'.
@ 2012-08-04 14:07 Oleksandr Manzyuk
2012-09-16 4:31 ` Chong Yidong
0 siblings, 1 reply; 2+ messages in thread
From: Oleksandr Manzyuk @ 2012-08-04 14:07 UTC (permalink / raw)
To: 12136
Unlike Emacs 23 in which fontification of compilation errors is handled
by `font-lock.el', in Emacs 24, it is performed by `compile.el' itself,
in a rather ad hoc fashion. In particular, it doesn't handle the faces
specified by property list of the form (face FACE PROP1 VAL1 PROP2 VAL2
...). The documentation of `compilation-error-regexp-alist' says that
it is an alist that specifies how errors in compiler output are matched,
where each element has the form
(REGEXP FILE [LINE COLUMN TYPE HYPERLINK HIGHLIGHT...]).
Additional HIGHLIGHTs take the shape (SUBMATCH FACE), where FACE is an
expression returning the face to use for the submatch. If fact, only
symbols are supported by the current version of `compile.el' and lists
error out with the error message "Don't know how to handle face ...".
As a consequence, compilation error messages are not properly fontified
in `inferior-haskell-mode', which also breaks navigation between errors
with C-x ` (see https://github.com/haskell/haskell-mode/issues/67 for
more details). Unfortunately, I don't know of any other examples where
this problem manifests itself.
It seems to be straightforward to add support for faces specified by
property list. I use the following patch:
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index c008e1c..be73850 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1338,6 +1338,11 @@ to `compilation-error-regexp-alist' if RULES is nil."
(put-text-property
(match-beginning mn) (match-end mn)
'font-lock-face face))
+ ((and (listp face)
+ (eq (car face) 'face))
+ (add-text-properties
+ (match-beginning mn) (match-end mn)
+ (cddr face)))
(t
(error "Don't know how to handle face %S"
face)))))))
In GNU Emacs 24.1.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.20.1)
of 2012-06-10 on paddy
Windowing system distributor `The X.Org Foundation', version 11.0.10706000
Configured using:
`configure '--prefix=/home/manzyuk''
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: nil
locale-coding-system: utf-8-unix
default enable-multibyte-characters: t
Major mode: Lisp Interaction
Minor modes in effect:
eldoc-mode: t
diff-auto-refine-mode: t
paredit-mode: t
ido-everywhere: t
shell-dirtrack-mode: t
savehist-mode: t
icomplete-mode: t
global-auto-revert-mode: t
show-paren-mode: t
delete-selection-mode: t
tooltip-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
Recent input:
M-x C-g C-h v c o m p i l a t i o n SPC e r r r <backspace>
o r SPC r e <tab> <return> C-x o C-v C-v C-x o M-x
r e o <backspace> p o r t SPC e m <tab> <return>
Recent messages:
Loading /home/manzyuk/src/emacs-preamble/init.el (source)...
Loading /home/manzyuk/.emacs.d/elpa/haskell-mode-2.8.0/haskell-site-file.el (source)...done
Loading /home/manzyuk/quicklisp/slime-helper.el (source)...done
Loading /home/manzyuk/src/emacs-preamble/init.el (source)...done
For information about GNU Emacs and the GNU system, type C-h C-a.
Quit
Type C-x 1 to delete the help window, C-M-v to scroll help.
scroll-down-command: Beginning of buffer
Load-path shadows:
None found.
Features:
(shadow sort flyspell ispell mail-extr emacsbug message rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader pp help-mode view eldoc preamble-scheme
preamble-ruby inf-ruby ruby-mode compile preamble-org org-install cl
preamble-magit preamble-diff magit-bisect magit-key-mode magit diff-mode
log-edit easy-mmode pcvs-util add-log preamble-lisp info-look
slime-autoloads preamble-haskell ghci-completion
preamble-google-translate google-translate json url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-util
url-parse url-vars mailcap preamble-emacs-lisp preamble-paredit paredit
preamble-auctex reftex reftex-vars preamble-package finder-inf
auctex-autoloads tex-site info easymenu ghci-completion-autoloads
google-translate-autoloads haskell-mode-autoloads inf-ruby-autoloads
magit-autoloads paredit-autoloads package tabulated-list preamble-text
preamble-shell preamble-prog preamble-makefile preamble-mail smtpmail
sendmail rfc2047 rfc2045 ietf-drums mail-utils preamble-ido ido
preamble-ibuffer preamble-hippie-expand preamble-ediff preamble-dired
preamble-comint preamble-ansi-color preamble-windows preamble-tramp
tramp tramp-compat auth-source eieio byte-opt bytecomp byte-compile
cconv macroexp assoc gnus-util mm-util mail-prsvr password-cache shell
pcomplete comint ansi-color ring format-spec tramp-loaddefs regexp-opt
preamble-server server preamble-mouse preamble-mode-line
preamble-minibuffer savehist icomplete preamble-keyboard
preamble-initialization preamble-frames preamble-files uniquify
autorevert preamble-env preamble-editing paren delsel edmacro kmacro
preamble-data saveplace preamble-browse-url preamble-bookmarks
preamble-utils advice help-fns advice-preload time-date tooltip
ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd
fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer loaddefs button faces cus-face files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty emacs)
^ permalink raw reply related [flat|nested] 2+ messages in thread
* bug#12136: 24.1; Allow faces specified by property lists in `compilation-error-regexp-alist'.
2012-08-04 14:07 bug#12136: 24.1; Allow faces specified by property lists in `compilation-error-regexp-alist' Oleksandr Manzyuk
@ 2012-09-16 4:31 ` Chong Yidong
0 siblings, 0 replies; 2+ messages in thread
From: Chong Yidong @ 2012-09-16 4:31 UTC (permalink / raw)
To: Oleksandr Manzyuk; +Cc: 12136
Oleksandr Manzyuk <manzyuk@gmail.com> writes:
> Unlike Emacs 23 in which fontification of compilation errors is handled
> by `font-lock.el', in Emacs 24, it is performed by `compile.el' itself,
> in a rather ad hoc fashion. In particular, it doesn't handle the faces
> specified by property list of the form (face FACE PROP1 VAL1 PROP2 VAL2
> ...).
>
> (REGEXP FILE [LINE COLUMN TYPE HYPERLINK HIGHLIGHT...]).
>
> Additional HIGHLIGHTs take the shape (SUBMATCH FACE), where FACE is an
> expression returning the face to use for the submatch. If fact, only
> symbols are supported by the current version of `compile.el' and lists
> error out with the error message "Don't know how to handle face ...".
Thanks. I committed a slightly amended version of the suggested fix.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-09-16 4:31 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-04 14:07 bug#12136: 24.1; Allow faces specified by property lists in `compilation-error-regexp-alist' Oleksandr Manzyuk
2012-09-16 4:31 ` Chong Yidong
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).