[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#17453: Framework extending window functions for Follow Mode (etc.).
From: |
Alan Mackenzie |
Subject: |
bug#17453: Framework extending window functions for Follow Mode (etc.). |
Date: |
Mon, 7 Dec 2015 19:15:40 +0000 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
Hello, Juri.
On Sun, Dec 06, 2015 at 01:06:05AM +0200, Juri Linkov wrote:
> >> I see no problem for follow-mode to add follow-post-command-hook
> >> to both hooks.
> > Because this ties Follow Mode to implementation details of isearch.el,
> > replace.el, and ispell.el. It is plain ugly for Follow Mode to have to
> > add-hook an obscure hook for every package that attempts lazy
> > highlighting.
> A hook is needed not only for lazy highlighting (in its current state),
> but also for every package that doesn't use the standard command loop.
Yes, I think we're in violent agreement here.
[ .... ]
> > Sorry, I made a typo there. I really meant replace-update-post-hook.
> > Can we somehow keep this "internal use only", so that we are not
> > bound somehow to keep supporting it should the `query-replace'
> > command loop be reformulated (as believe it should, ASAP)? The same
> > applies to ispell-update-post-hook, which I've been forced to
> > introduce into ispell.el for the same reason.
> isearch-update-post-hook, replace-update-post-hook, ispell-update-post-hook
> are not just a hack, they will stay as useful hooks even after we'll
> rewrite query-replace/ispell to use the standard command loop. These hooks
> are for convenience, for the users to be able to set in ~/.emacs, e.g.:
> (add-hook 'isearch-update-post-hook 'recenter)
> (add-hook 'replace-update-post-hook 'recenter)
First comment: this sort of thing will wreck Follow Mode, scrolling text
in the current window rather than point moving forward to the next
window.
> How would you do the same without these hooks, using only post-command-hook?
By putting #'recenter into `post-command-hook'? This should work for
Isearch, and would work for Replace and Ispell if these two used the
Emacs command loop.
> > #########################################################################
> > Anyhow, here's a status update with where I am on making isearch.el and
> > follow.el work together:
> > (i) Yesterday I rebased the scratch/follow branch on the emacs-25 branch.
> > (ii) I haven't yet replaced the GROUP parameter in the windows primitives
> > with (e.g.) `window-group-start'.
> > (iii) isearch.el now appears to work properly. For this, I had to swap
> > the order of invocation of isearch-update-post-hook and i-l-h-new-loop,
> > like you said. I restored i-l-h-new-loop pretty much to the way it was
> > prior to my experimentations.
> > (iv) replace.el now appears to work properly.
> > (v) ispell.el is more troublesome. See bug #22097. I have a problem
> > with ispell putting its *Choices* window at the top of the left hand
> > Follow Mode window. Because of FM's sorting algorithm, this causes the
> > two windows to be logically swapped, leading to confusing results. I
> > think the neatest solution would be to put *Choices* at the top of the
> > rightmost window, preventing this.
I have indeed put *Choices* at the top of the RH window, to preserve
sanity.
I committed those changes, including changes to Ispell this afternoon. I
think they're close to working fully.
> I believe bug#22097 is easy to fix for lazy highlighting, but what you
> described above is more troublesome, and might require adding support for
> window groups to ispell.el (like you're adding it to isearch.el).
I've put the window group stuff into ispell.el - there wasn't a lot to
change.
This afternoon, lack of lazy highlighting in Ispell (bug #22097) made
itself noticeable again. I'll see what I can do, here.
--
Alan Mackenzie (Nuremberg, Germany).