unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: David Kastrup <dak@gnu.org>
To: rms@gnu.org
Cc: david.reitter@gmail.com, emacs-devel@gnu.org,
	monnier@iro.umontreal.ca, miles@gnu.org
Subject: Re: face-remapping patch
Date: Thu, 29 May 2008 13:14:21 +0200	[thread overview]
Message-ID: <86ve0xnz02.fsf@lola.quinscape.zz> (raw)
In-Reply-To: <E1K1fJl-0000yZ-A3@fencepost.gnu.org> (Richard M. Stallman's message of "Thu, 29 May 2008 06:25:09 -0400")

Richard M Stallman <rms@gnu.org> writes:

> Your local variable feature is quite clean.

If features could be implemented just by writing DOC strings, we'd
likely have a lot of clean features.

The documentation might be clean, but that does not necessarily make the
implementation nice.

>     (local-variable-p VARIABLE &optional LOCUS)
>
>     Non-nil if VARIABLE has a local binding in locus LOCUS (see make-variable).
>     BUFFER defaults to the current buffer.
>
> If LOCUS is nil, this should mean "Is any kind of local binding now in
> effect?"

Well, that would be backwards incompatible: I actually stole half of the
descriptions from existing functions and DOC strings.

I was just describing an interface that I would be able to understand.
That does not mean that it corresponds with a simple or elegant or
efficient or flexible implementation.

If a variable has an associated vector of locuses, the elements of which
would be something like

[last-checked-selected-window
 last-checked-current-buffer
 last-checked-selected-frame
 last-checked-selected-terminal]

Where "nil" means "no local value of that kind for this variable", then
when accessing a variable, one would run through that array, and would
for the first non-nil entry not corresponding to the current locus
update the current value from some hash structure indexed via
(locus . symbol).

A list instead of a vector would be conceivable, too, (and would make
the default of variables without any local binding faster) but one would
have to think about how to order and prioritize it properly, then.

-- 
David Kastrup




  reply	other threads:[~2008-05-29 11:14 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-27  2:49 face-remapping patch Miles Bader
2008-05-28  2:03 ` Florian Beck
2008-05-28  2:31   ` Miles Bader
2008-05-29  1:38   ` Richard M Stallman
2008-05-28  2:54 ` Stefan Monnier
2008-05-28  3:30   ` Miles Bader
2008-05-28  7:22     ` David Reitter
2008-05-28  7:29       ` Miles Bader
2008-05-28  8:05         ` Miles Bader
2008-05-28  9:30           ` David Kastrup
2008-05-28 13:13             ` Miles Bader
2008-05-28 13:33               ` David Kastrup
2008-05-28  9:33         ` David Reitter
2008-05-28 13:21           ` Miles Bader
2008-05-28 14:33             ` David Reitter
2008-05-28 19:25           ` Face realization (was: face-remapping patch) Stefan Monnier
2008-05-28 19:54             ` David Reitter
2008-05-29 15:25               ` Face realization Stefan Monnier
2008-05-28 19:25       ` face-remapping patch Stefan Monnier
2008-05-28 20:21         ` David Kastrup
2008-05-28 20:31           ` David Kastrup
2008-05-29  6:02             ` tomas
2008-05-29 18:14             ` Stephen J. Turnbull
2008-05-29 22:15               ` David Kastrup
2008-05-30  4:48                 ` Stephen J. Turnbull
2008-05-30 13:32               ` Richard M Stallman
2008-05-30 13:50                 ` David Kastrup
2008-05-31 15:17                   ` Richard M Stallman
2008-05-31 15:38                     ` David Kastrup
2008-06-01 14:03                       ` Richard M Stallman
2008-05-29 10:25           ` Richard M Stallman
2008-05-29 11:14             ` David Kastrup [this message]
2008-05-29 15:45           ` Specifiers (was: face-remapping patch) Stefan Monnier
2008-05-29 16:21             ` Specifiers David Kastrup
2008-05-29 17:36               ` Specifiers Stefan Monnier
2008-05-29 18:17               ` Specifiers Stephen J. Turnbull
2008-05-30  2:08             ` Specifiers (was: face-remapping patch) Richard M Stallman
2008-05-30  2:21               ` Specifiers Stefan Monnier
2008-05-30  5:31                 ` Specifiers David Kastrup
2008-05-30 14:10                   ` Specifiers Stefan Monnier
2008-05-30 14:14                     ` Specifiers David Kastrup
2008-05-30 15:11                       ` Specifiers Stefan Monnier
2008-05-31 15:16                         ` Specifiers Richard M Stallman
2008-05-29 15:56           ` face-remapping patch Stefan Monnier
2008-05-29 16:27             ` David Kastrup
2008-05-29  8:47   ` Miles Bader
2008-05-29 15:59     ` Stefan Monnier
2008-05-29 18:28     ` Eli Zaretskii
2008-05-30  3:42       ` Miles Bader
2008-05-28 14:46 ` Chong Yidong
2008-05-28 14:57   ` David Reitter
2008-05-28 16:33   ` Miles Bader
2008-05-30 15:10     ` Chong Yidong
2008-06-01  2:43       ` Miles Bader
2008-05-28 16:37 ` Dan Nicolaescu
2008-05-28 17:45   ` Miles Bader

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86ve0xnz02.fsf@lola.quinscape.zz \
    --to=dak@gnu.org \
    --cc=david.reitter@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=miles@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=rms@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 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).