So it seems that the support for negative arguments will be best effort anyway. Ok, I will make sure the counting is done right. Also I believe that when C-- C-1 isearch-forward is pressed the user expects to stay in isearch-forward and not switch to isearch-backward so I will add another call to isearch-forward just to change the direction. Not pretty but should do the job. Thanks, gideon. On , Juri Linkov wrote: > > Thank you for your comments Juri. Do you have a thought on how to > > implement this functionality as a package the way Stefan asked for? > Adding a new count argument to `isearch-repeat-forward' is a pretty > unobtrusive change and is standard Emacs practice. But if you want > to do fancy stuff with hint display then you could add a hook to > `isearch-lazy-highlight-update' and implement fancy features in a separate > package whose functionality is added by the hook. > > Negative arguments in particular seem to be challenging. Right now I > > implemented negative argument navigation by calling isearch-repeat with > the > > opposite functionality but that has all kinds of odd effects. > > For example the search message changes, C-- C-1 isearch-forward does > > not go back one matched string but rather just switches to > > isearch-backward and so on. > Then you need to take into account this situation and to add 1 to the > counter when isearch-forward switches to isearch-backward with C-- C-1. > > I did implement visual hints for the negative arguments because that > > would require changing the way lazy highlight works significantly > > (lazy-highlight loop wraps around back to the first line and at that > > point you can't know the negative argument for the current match). > There are other problems with negative arguments: sometimes backward > regexp search finds more matches than forward regexp search. > For instance, trying to search a regexp like "a+" forward on a string > like "aaa" finds all occurrences of "aaa" as one match, but backward > regexp search matches every "a" individually.