all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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

  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.