* Re: [Emacs-diffs] emacs-25 f99b512: In M-%, avoid making buffer-local binding of text-property-default-nonsticky
[not found] ` <E1akqKF-0005Rl-1Q@vcs.savannah.gnu.org>
@ 2016-03-29 12:01 ` Stefan Monnier
2016-03-29 21:10 ` Alan Mackenzie
0 siblings, 1 reply; 3+ messages in thread
From: Stefan Monnier @ 2016-03-29 12:01 UTC (permalink / raw
To: emacs-devel; +Cc: Alan Mackenzie
> + (with-current-buffer (window-buffer (minibuffer-window))
> + (let ((text-property-default-nonsticky
> + (cons '(separator . t) text-property-default-nonsticky)))
Using minibuffer-with-setup-hook would be a lot less hackish.
This assumes that (window-buffer (minibuffer-window)) returns the buffer
that read-from-minibuffer will use, which is only true in the normal
case by accident (e.g. it's probably not going to hold in case of
a recursive minibuffer invocation).
Stefan
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Emacs-diffs] emacs-25 f99b512: In M-%, avoid making buffer-local binding of text-property-default-nonsticky
2016-03-29 12:01 ` [Emacs-diffs] emacs-25 f99b512: In M-%, avoid making buffer-local binding of text-property-default-nonsticky Stefan Monnier
@ 2016-03-29 21:10 ` Alan Mackenzie
2016-03-29 22:47 ` Stefan Monnier
0 siblings, 1 reply; 3+ messages in thread
From: Alan Mackenzie @ 2016-03-29 21:10 UTC (permalink / raw
To: Stefan Monnier; +Cc: emacs-devel
Hello, Stefan.
On Tue, Mar 29, 2016 at 08:01:43AM -0400, Stefan Monnier wrote:
> > + (with-current-buffer (window-buffer (minibuffer-window))
> > + (let ((text-property-default-nonsticky
> > + (cons '(separator . t) text-property-default-nonsticky)))
> Using minibuffer-setup-hook would be a lot less hackish.
But very clumsy. You can't bind a variable in this sort of hook. So
you have to save the current value somewhere, set the value you want,
then hope that you can restore the original value afterwards (which you
probably can, but you can't according to the (inadequate) doc string of
minibuffer-exit-hook).
> This assumes that (window-buffer (minibuffer-window)) returns the buffer
> that read-from-minibuffer will use, which is only true in the normal
> case by accident (e.g. it's probably not going to hold in case of
> a recursive minibuffer invocation).
Actually, it doesn't really matter. As long as the buffer it finds
doesn't have a buffer local binding of text-property-default-nonsticky
(and the minibuffer it will use doesn't, either), then the global value
will get bound, and everything works.
Why does this have to be so difficult? Why is there no function to
return the (next) minibuffer? Why is there no facility to bind the
default value of a variable?
> Stefan
--
Alan Mackenzie (Nuremberg, Germany).
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Emacs-diffs] emacs-25 f99b512: In M-%, avoid making buffer-local binding of text-property-default-nonsticky
2016-03-29 21:10 ` Alan Mackenzie
@ 2016-03-29 22:47 ` Stefan Monnier
0 siblings, 0 replies; 3+ messages in thread
From: Stefan Monnier @ 2016-03-29 22:47 UTC (permalink / raw
To: Alan Mackenzie; +Cc: emacs-devel
> But very clumsy. You can't bind a variable in this sort of hook. So
> you have to save the current value somewhere, set the value you want,
> then hope that you can restore the original value afterwards (which you
> probably can, but you can't according to the (inadequate) doc string of
> minibuffer-exit-hook).
No, you set it unconditionally and without looking back.
Think of it as setting up a major mode.
Stefan
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-03-29 22:47 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20160329095238.20903.93640@vcs.savannah.gnu.org>
[not found] ` <E1akqKF-0005Rl-1Q@vcs.savannah.gnu.org>
2016-03-29 12:01 ` [Emacs-diffs] emacs-25 f99b512: In M-%, avoid making buffer-local binding of text-property-default-nonsticky Stefan Monnier
2016-03-29 21:10 ` Alan Mackenzie
2016-03-29 22:47 ` Stefan Monnier
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.