From: Miles Bader <miles@lsi.nec.co.jp>
Cc: emacs-devel@gnu.org
Subject: Re: Bold by moving pixels problem
Date: 17 Dec 2002 14:00:09 +0900 [thread overview]
Message-ID: <buovg1tb5pi.fsf@mcspd15.ucom.lsi.nec.co.jp> (raw)
In-Reply-To: <m18HRR2-000IeBC@localhost>
[-- Attachment #1: Type: text/plain, Size: 1808 bytes --]
I've attached a patch below that's implements the `final face
realization filtering' function that bob wanted. This is just a
first-cut, so I'd appreciate any comments people have.
The basic interface is a variable, `realize-face-filter':
realize-face-filter's value is nil
If non-nil, a function called to perturb faces before final realization.
It is passed a lisp-vector containing all the attributes of the
fully-specified face, and can change any that it wishes.
For instance the following will completely turn off bold fonts:
(defun unboldify-lface (lface)
(aset lface 4 'normal))
(setq realize-face-filter 'unboldify-lface)
(clear-face-cache)
It seems to work fine.
If I instrument the filter function a bit, like:
(defvar ubf-count 0)
(defun unboldify-lface (lface)
(setq ubf-count (1+ ubf-count))
(aset lface 4 'normal))
(setq realize-face-filter 'unboldify-lface)
(clear-face-cache)
`ubf-count' seems to continually incremented (if I keep checking in
*scratch* it goes up 2 or 3 each time, but if I display a complicated
new buffer, it can go up by 100). It doesn't seem noticably slow to me,
but I have a reasonably fast cpu (1GHz).
I guess I'll need to see exactly what it's getting called on, but this
suggests that maybe more places should be checking the face cache
(or that the face-cache checking should be moved into realize_face).
[Gerd, are you listening...?]
Also, perhaps `realize-face-filter' should be a list of functions
instead, e.g., `realize-face-filter-functions', as there might be
circumstances when two entities want to add a filter -- but maybe this
is something that will only ever be changed by the end-user, who can
make his own filter function do everything he wants.
Any comments?
Thanks,
-Miles
Patch:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: realize-face-filter-20021217.patch --]
[-- Type: text/x-patch, Size: 2064 bytes --]
Index: src/xfaces.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xfaces.c,v
retrieving revision 1.266
diff -u -r1.266 xfaces.c
--- src/xfaces.c 17 Nov 2002 23:51:19 -0000 1.266
+++ src/xfaces.c 17 Dec 2002 04:31:36 -0000
@@ -422,6 +422,13 @@
Lisp_Object Vtty_defined_color_alist;
+/* If non-nil, a function called to perturb faces before final realization.
+ It is passed a lisp-vector containing all the attributes of the
+ fully-specified face, and can change any that it wishes. */
+
+Lisp_Object Vrealize_face_filter;
+
+
/* Counter for calls to clear_face_cache. If this counter reaches
CLEAR_FONT_TABLE_COUNT, and a frame has more than
CLEAR_FONT_TABLE_NFONTS load, unused fonts are freed. */
@@ -6691,6 +6698,21 @@ realize_face (cache, attrs, c, base_face
free_realized_face (cache->f, former_face);
}
+ if (! NILP (Vrealize_face_filter))
+ {
+ /* Call a user-defined function to perturb the face attributes
+ before realization. */
+ Lisp_Object lface = Fmake_vector (make_number (LFACE_VECTOR_SIZE),
+ Qunspecified);
+ bcopy (attrs, XVECTOR (lface)->contents,
+ LFACE_VECTOR_SIZE * (sizeof *attrs));
+
+ safe_call1 (Vrealize_face_filter, lface);
+
+ bcopy (XVECTOR (lface)->contents, attrs,
+ LFACE_VECTOR_SIZE * (sizeof *attrs));
+ }
+
if (FRAME_WINDOW_P (cache->f))
face = realize_x_face (cache, attrs, c, base_face);
else if (FRAME_TERMCAP_P (cache->f) || FRAME_MSDOS_P (cache->f))
@@ -7670,6 +7692,13 @@
Each element is a regular expression that matches names of fonts to
ignore. */);
Vface_ignored_fonts = Qnil;
+
+ DEFVAR_LISP ("realize-face-filter", &Vrealize_face_filter,
+ doc: /* If non-nil, a function called to perturb faces before final realization.
+It is passed a lisp-vector containing all the attributes of the
+fully-specified face, and can change any that it wishes. */);
+ Vrealize_face_filter = Qnil;
+
#ifdef HAVE_WINDOW_SYSTEM
defsubr (&Sbitmap_spec_p);
[-- Attachment #3: Type: text/plain, Size: 192 bytes --]
--
[|nurgle|] ddt- demonic? so quake will have an evil kinda setting? one that
will make every christian in the world foamm at the mouth?
[iddt] nurg, that's the goal
[-- Attachment #4: Type: text/plain, Size: 142 bytes --]
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
next prev parent reply other threads:[~2002-12-17 5:00 UTC|newest]
Thread overview: 131+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-11-07 19:39 Gtk version getting closer Jan D.
2002-11-08 0:08 ` Kim F. Storm
2002-11-08 9:21 ` jasonr
2002-11-08 9:56 ` Juanma Barranquero
2002-11-08 11:25 ` Kim F. Storm
2002-11-08 10:36 ` Juanma Barranquero
2002-11-09 14:27 ` Jan D.
2002-11-09 21:29 ` Eli Zaretskii
2002-11-09 11:53 ` Richard Stallman
2002-11-09 14:16 ` Jan D.
2002-11-11 10:19 ` Richard Stallman
2002-11-09 15:05 ` Karl Eichwalder
2002-11-11 10:19 ` Richard Stallman
2002-11-11 18:36 ` Karl Eichwalder
2002-11-12 5:50 ` Eli Zaretskii
2002-11-12 7:24 ` Karl Eichwalder
2002-11-12 17:15 ` Eli Zaretskii
2002-11-13 4:40 ` Miles Bader
2002-11-13 5:42 ` Eli Zaretskii
2002-11-13 13:21 ` Robert J. Chassell
2002-11-13 15:38 ` Jan D.
2002-11-13 16:35 ` Stefan Monnier
2002-11-13 17:58 ` Jan D.
2002-11-14 18:57 ` Eli Zaretskii
2002-11-14 20:07 ` Jan D.
2002-11-14 20:28 ` Eli Zaretskii
2002-11-14 23:03 ` Jason Rumney
2002-11-15 15:59 ` Eli Zaretskii
2002-11-13 15:55 ` Kim F. Storm
2002-11-13 18:23 ` Robert J. Chassell
2002-11-13 18:42 ` Stefan Monnier
2002-11-13 21:15 ` Jan D.
2002-11-13 18:58 ` David Masterson
2002-11-13 16:52 ` Francesco Potorti`
2002-11-14 12:16 ` Richard Stallman
2002-11-14 16:46 ` Robert J. Chassell
2002-11-15 2:20 ` Miles Bader
2002-11-15 12:29 ` Robert J. Chassell
[not found] ` <m18EUbO-000IeAC@localhost>
2002-11-20 22:08 ` Bold by moving pixels problem Miles Bader
2002-11-21 0:21 ` Robert J. Chassell
2002-11-21 1:33 ` Stefan Monnier
2002-11-21 1:44 ` Miles Bader
[not found] ` <m18HRR2-000IeBC@localhost>
2002-12-17 5:00 ` Miles Bader [this message]
2002-12-17 6:28 ` Miles Bader
2002-12-17 7:08 ` Miles Bader
2002-12-18 10:01 ` Miles Bader
2002-12-18 12:26 ` Kim F. Storm
2002-12-19 8:34 ` Miles Bader
2002-12-19 10:18 ` Miles Bader
2002-12-19 12:18 ` Kim F. Storm
2002-12-19 11:27 ` Miles Bader
2002-12-19 12:25 ` Miles Bader
2002-12-19 13:55 ` Kim F. Storm
2003-01-07 11:02 ` Kim F. Storm
2003-01-07 14:02 ` Miles Bader
2003-01-09 7:28 ` Richard Stallman
2003-01-09 7:52 ` Miles Bader
2002-12-18 14:25 ` Robert J. Chassell
2002-12-19 10:15 ` signal handling bogosities Miles Bader
2002-12-20 17:12 ` Richard Stallman
2002-12-20 17:46 ` Eli Zaretskii
2002-12-20 18:35 ` Alex Schroeder
2002-12-20 22:06 ` Miles Bader
2002-12-21 20:26 ` Richard Stallman
2002-12-21 23:42 ` Alex Schroeder
2002-12-23 20:58 ` Richard Stallman
2002-12-22 2:02 ` Miles Bader
2002-12-22 2:27 ` Miles Bader
2002-12-23 20:58 ` Richard Stallman
2002-12-17 10:31 ` Bold by moving pixels problem Kim F. Storm
2002-12-17 16:38 ` Robert J. Chassell
2002-12-17 23:54 ` Miles Bader
2002-11-21 6:01 ` Eli Zaretskii
2002-11-16 1:34 ` Gtk version getting closer Richard Stallman
2002-11-14 12:16 ` Richard Stallman
2002-11-12 12:34 ` Jan D.
2002-11-12 17:21 ` Eli Zaretskii
2002-11-13 10:15 ` Jan D.
2002-11-14 12:16 ` Richard Stallman
2002-11-14 18:53 ` Eli Zaretskii
2002-11-14 20:13 ` Jan D.
2002-11-13 16:55 ` Jason Rumney
2002-11-14 17:25 ` Jan D.
2002-11-14 4:09 ` Richard Stallman
2002-11-14 17:49 ` Jan D.
2002-11-14 20:29 ` Eli Zaretskii
2002-11-14 21:47 ` Jan D.
2002-11-14 21:30 ` David Masterson
2002-11-16 1:34 ` Richard Stallman
2002-11-16 16:11 ` Jan D.
2002-11-13 11:32 ` Richard Stallman
2002-11-13 17:09 ` David Masterson
2002-11-14 17:31 ` Jan D.
2002-11-14 20:22 ` David Masterson
2002-11-16 1:34 ` Richard Stallman
2002-11-18 5:06 ` David Masterson
2002-11-15 2:36 ` Richard Stallman
2002-11-15 4:04 ` Miles Bader
2002-11-15 16:36 ` David Masterson
2002-11-15 16:31 ` Eli Zaretskii
2002-11-15 18:46 ` David Masterson
2002-11-15 21:15 ` Eli Zaretskii
2002-11-15 22:35 ` David Masterson
2002-11-15 17:33 ` Miles Bader
2002-11-15 18:55 ` David Masterson
2002-11-15 23:18 ` Jason Rumney
2002-11-16 0:44 ` David Masterson
2002-11-15 19:03 ` Stefan Monnier
2002-11-15 18:00 ` Robert J. Chassell
2002-11-19 13:26 ` Miles Bader
2002-11-20 21:13 ` Richard Stallman
2002-11-20 21:56 ` Jason Rumney
2002-11-21 0:47 ` Robert J. Chassell
2002-11-22 21:00 ` Richard Stallman
2002-11-21 0:38 ` Robert J. Chassell
2002-11-21 13:09 ` Kenichi Handa
2002-11-21 14:08 ` Miles Bader
2002-11-21 21:47 ` Jason Rumney
2002-11-15 18:13 ` Jason Rumney
2002-11-15 19:03 ` David Masterson
2002-11-09 21:31 ` Eli Zaretskii
2002-11-10 9:02 ` Jan D.
2002-11-11 10:20 ` Richard Stallman
-- strict thread matches above, loose matches on Subject: below --
2003-06-04 8:54 Bold by moving pixels problem Richard Stallman
2003-06-04 14:35 ` Stefan Monnier
2003-06-05 10:58 ` Richard Stallman
2004-01-21 5:39 ` Stefan Monnier
2003-06-04 23:30 ` Kim F. Storm
[not found] ` <E19O2Z4-0002Rk-GY@fencepost.gnu.org>
2003-06-06 1:45 ` Kim F. Storm
2003-06-06 0:46 ` Miles Bader
2003-08-07 6:04 last-sexp-toggle-display Richard Stallman
2003-08-07 16:56 ` last-sexp-toggle-display Luc Teirlinck
2003-08-11 12:53 ` last-sexp-toggle-display Richard Stallman
2003-08-11 17:59 ` last-sexp-toggle-display Luc Teirlinck
2003-08-11 18:54 ` Bold by moving pixels problem Robert J. Chassell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=buovg1tb5pi.fsf@mcspd15.ucom.lsi.nec.co.jp \
--to=miles@lsi.nec.co.jp \
--cc=emacs-devel@gnu.org \
--cc=miles@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.