From: Stefan Monnier <monnier@iro.umontreal.ca>
To: rms@gnu.org
Cc: lekktu@gmail.com, stephen@xemacs.org, emacs-devel@gnu.org
Subject: Re: frame-local variables weirdness
Date: Fri, 19 Oct 2007 09:56:06 -0400 [thread overview]
Message-ID: <jwvr6jr43un.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <E1Iikax-0008WD-Jp@fencepost.gnu.org> (Richard Stallman's message of "Fri\, 19 Oct 2007 01\:40\:27 -0400")
>> I don't follow. What would that function do?
> It would behave similarly to `symbol-value' now.
> I understand that, though it is rather general.
> The main difference is that it wouldn't be implicitly used just by
> using the SYMBOL because it wouldn't be considered as
> a normal variable.
> What wouldn't be considered as a normal variable?
> I am lost here.
I'm suggesting we introduce a new concept which we could call "specifier"
or "localizable quasi variable". We could create them with:
(defconst new-interprogram-cut-function (make-specifier 'x-select-text))
Now new-interprogram-cut-function is a normal global variable (actually
a constant: we will never `setq' it). Its value is a "specifier".
Then we get get the value of this specifier with:
(specifier-value new-interprogram-cut-function)
which would return `x-select-text' because it's currently its only value.
But we could later on change its value on a per-frame basis via maybe:
(specifier-set new-interprogram-cut-function <some-frame> 'my-fun)
so that the `specifier-value' function returns `my-fun' if the selected
frame is <some-frame> and `x-select-text' otherwise.
> It sounds like a step backwards, though. If we can make the function work
> right, we can make it work right for variable values.
Again, because this is not a variable, it does not have to be optimized in
the same way and it does not have to interact with let-binding so making it
work correctly is a *lot* easier.
But similarly to variables, we can make sure that `specifier-value' does not
run any elisp code (or even allocate), so it can easily be used in places
where full elisp is undesirable (e.g. the mode-line-format, although
nowadays this accepts full elisp anyway), which was the original motivation
for adding frame-local variables.
Stefan
next prev parent reply other threads:[~2007-10-19 13:56 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-05 13:41 frame-local variables weirdness Juanma Barranquero
2006-12-08 2:28 ` Juanma Barranquero
2006-12-09 1:26 ` Richard Stallman
2006-12-09 14:11 ` Juanma Barranquero
2006-12-10 4:24 ` Richard Stallman
2006-12-10 12:58 ` Juanma Barranquero
2007-10-11 9:42 ` Juanma Barranquero
2007-10-11 14:21 ` Stefan Monnier
2007-10-11 14:37 ` Juanma Barranquero
2007-10-11 17:33 ` Stefan Monnier
2007-10-11 19:00 ` Juanma Barranquero
2007-10-12 15:59 ` Richard Stallman
2007-10-12 16:33 ` Stefan Monnier
2007-10-14 16:29 ` Richard Stallman
2007-10-14 17:13 ` Juanma Barranquero
2007-10-14 17:51 ` David Kastrup
2007-10-15 16:04 ` Richard Stallman
2007-10-15 17:50 ` Stefan Monnier
2007-10-17 17:29 ` Stephen J. Turnbull
2007-10-17 18:05 ` Stefan Monnier
2007-10-18 5:03 ` Richard Stallman
2007-10-18 13:53 ` Stefan Monnier
2007-10-19 5:40 ` Richard Stallman
2007-10-19 13:56 ` Stefan Monnier [this message]
2007-10-20 3:30 ` Richard Stallman
2007-10-20 13:15 ` Stefan Monnier
2007-10-21 7:25 ` Richard Stallman
2007-10-21 14:24 ` Stefan Monnier
2007-10-21 14:56 ` Miles Bader
2007-10-21 19:20 ` Stefan Monnier
2007-10-22 2:26 ` Miles Bader
2007-10-22 9:01 ` Richard Stallman
2007-10-17 21:03 ` David Kastrup
2007-10-19 1:57 ` Stephen J. Turnbull
2007-10-17 23:53 ` Stefan Monnier
2007-10-18 12:45 ` Juanma Barranquero
2007-10-18 13:38 ` Stefan Monnier
2007-10-18 13:45 ` Juanma Barranquero
2007-10-18 14:10 ` Johan Bockgård
2007-10-18 16:40 ` Stefan Monnier
2007-10-19 17:42 ` Richard Stallman
2007-10-19 18:56 ` Stefan Monnier
2007-10-20 14:57 ` Richard Stallman
2007-10-21 2:03 ` Stefan Monnier
2007-10-22 9:00 ` Richard Stallman
2007-10-22 15:28 ` Stefan Monnier
2007-10-22 15:47 ` Juanma Barranquero
2007-10-22 16:01 ` Stefan Monnier
2007-10-22 16:17 ` Juanma Barranquero
2007-10-23 10:38 ` Richard Stallman
2007-10-23 20:31 ` Stefan Monnier
2007-10-24 8:33 ` Richard Stallman
2007-10-24 8:54 ` Johan Bockgård
2007-11-06 4:31 ` Chong Yidong
2007-11-06 8:37 ` Stefan Monnier
2007-11-06 10:48 ` Juanma Barranquero
2007-10-12 16:41 ` Juanma Barranquero
2007-10-13 6:41 ` Richard Stallman
2007-10-13 23:06 ` Juanma Barranquero
2007-10-18 12:44 ` Juanma Barranquero
2007-10-21 16:26 ` Richard Stallman
2007-10-21 16:33 ` Juanma Barranquero
2006-12-09 14:24 ` Juanma Barranquero
2006-12-09 15:26 ` Stefan Monnier
2006-12-09 17:59 ` Juanma Barranquero
2006-12-11 14:59 ` Richard Stallman
2006-12-11 15:57 ` Juanma Barranquero
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=jwvr6jr43un.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=emacs-devel@gnu.org \
--cc=lekktu@gmail.com \
--cc=rms@gnu.org \
--cc=stephen@xemacs.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.