Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [PATCH] add-zle-hook-widget zle-line-pre-redraw issue



On Jul 23,  9:23pm, Daniel Shahaf wrote:
}
} The reason appears to be that, while in azhw:zle-line-init $WIDGET is
} "zle-line-init", in azhw:zle-line-pre-redraw $WIDGET is the name of the
} widget the user invoked (e.g., "self-insert"), so the 'zstyle -a' does
} not find the registered hooks.

If zsh-syntax-highlighting doesn't depend on that behavior, it's probably
unlikely that anything else does.

However, Mikael will have to weigh in on whether he chose do to this
intentionally.

} Each of the following alternative patches solves the issue:

The "second option" obviously isn't finished / leaves a lot of dead
code behind.  However, I think the first option is the correct one,
unless there's a good reason to leave $WIDGET alone; the context
that's being saved/restored by redrawhook() is important, because
we're in the middle of an arbitrary other widget

This is actually related to what I was saying about it not being
appropriate to stick a list of callbacks on any widget.

We can easily special-case add-zle-hook-widget to find the name another
way for this particular hook.  $funcstack[1] for example.

Incidentally, I tried making ALL the possible hooks be

    zle -M "$WIDGET $funcstack[1]"

and learned two things.  (1) pre-redraw is in fact the only hook that
doesn't change $WIDGET, and (2) having all the hooks call "zle -M"
garbles the output quite thoroughly, especially in vi mode.



Messages sorted by: Reverse Date, Date, Thread, Author