From: storm@cua.dk (Kim F. Storm)
To: "Drew Adams" <drew.adams@oracle.com>
Cc: Emacs-Devel <emacs-devel@gnu.org>
Subject: Re: cannot understand Elisp manual node Glyphs
Date: Wed, 07 Feb 2007 14:29:46 +0100 [thread overview]
Message-ID: <m3bqk6yu2d.fsf@kfs-l.imdomain.dk> (raw)
In-Reply-To: <BDEIJAFNGDOAGCJIPKPBGEHECCAA.drew.adams@oracle.com> (Drew Adams's message of "Mon\, 5 Feb 2007 15\:11\:21 -0800")
"Drew Adams" <drew.adams@oracle.com> writes:
>
> It seems to say that the glyphs that I am using, and should be using, have
> "simple glyph codes". It does not say what a glyph "code" is, BTW.
>
> It also says that a simple glyph code specifies both a character and a face.
> The character is the code mod 524288; the face number is the code / 524288.
>
I also find this part highly dubious - mainly by exposing internal
representation details.
> So how do I use that information, to apply a face to my vector of glyphs?
> Maybe that's not the right way to say it. How can I have the glyph vector
> that I use to display ^L appear in a particular face?
>
These functions are handy:
(defun make-glyph-with-face (c face)
"Return a glyph code representing char C with face FACE."
(logior c (lsh (face-id face) 19)))
(defun glyph-char (glyph)
"Return the character of glyph code GLYPH."
(logand glyph #x7ffff))
(defun glyph-face (glyph)
"Return the face of glyph code GLYPH, or nil if glyph has no face."
(let ((face-id (lsh glyph -19)))
(car (delq nil (mapcar (lambda (face)
(and (eq (get face 'face) face-id)
face))
(face-list))))))
> There seems to be a wide gulf between the kind of info that is available in
> this node (glyph codes, face numbers) and practical use of that information.
> I imagine that I'm not too far from my quest, but I haven't a clue where to
> head.
>
> ... Perhaps we can improve the manual a bit in the process.
I know this is not "the right time", but IMO adding these functions
could significantly improve both code and documentation.
I guess we wouldn't even need to describe what face numbers are
(actually, we don't -- there's no index entry for it).
So my proposal is to add thosed functions, to:
a) simplify the documentation (and code)
b) hide the technical details of glyph faces, and
c) allow us to change the implementation later without breaking code:
--
Kim F. Storm <storm@cua.dk> http://www.cua.dk
next prev parent reply other threads:[~2007-02-07 13:29 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-05 23:11 cannot understand Elisp manual node Glyphs Drew Adams
2007-02-07 13:29 ` Kim F. Storm [this message]
2007-02-07 14:54 ` Drew Adams
2007-02-07 15:24 ` Kim F. Storm
2007-02-07 15:53 ` Drew Adams
2007-02-07 16:16 ` Stuart D. Herring
2007-02-07 16:21 ` Drew Adams
2007-02-08 16:38 ` Stuart D. Herring
2007-02-07 22:52 ` Miles Bader
2007-02-08 8:26 ` Kim F. Storm
2007-02-08 8:51 ` David Kastrup
2007-02-08 10:39 ` Kim F. Storm
2007-02-08 23:46 ` Richard Stallman
2007-02-09 7:17 ` David Kastrup
2007-02-09 9:12 ` Markus Triska
2007-02-09 9:43 ` Nick Roberts
2007-02-09 23:48 ` Richard Stallman
2007-02-09 14:23 ` Richard Stallman
2007-02-09 11:12 ` Kim F. Storm
2007-02-09 11:32 ` Juanma Barranquero
2007-02-09 23:48 ` Richard Stallman
2007-02-09 14:05 ` Kim F. Storm
2007-02-09 23:49 ` Richard Stallman
2007-02-10 0:40 ` Drew Adams
2007-02-10 17:40 ` Richard Stallman
2007-02-11 14:18 ` Miles Bader
2007-02-11 21:07 ` Kim F. Storm
2007-02-12 17:53 ` Richard Stallman
2007-02-14 23:32 ` Kim F. Storm
2007-02-10 10:19 ` Eli Zaretskii
2007-02-10 17:41 ` Richard Stallman
2007-02-10 13:59 ` Miles Bader
2007-02-11 0:20 ` Richard Stallman
2007-02-11 1:34 ` Drew Adams
2007-02-11 14:16 ` Miles Bader
2007-02-12 17:52 ` Richard Stallman
2007-02-09 18:16 ` Stuart D. Herring
2007-02-08 16:21 ` Stefan Monnier
2007-02-08 16:36 ` Juanma Barranquero
2007-02-08 9:58 ` Stephen J. Turnbull
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=m3bqk6yu2d.fsf@kfs-l.imdomain.dk \
--to=storm@cua.dk \
--cc=drew.adams@oracle.com \
--cc=emacs-devel@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.