2016-09-19 3:41 GMT+02:00 Chet Ramey <chet.ra...@case.edu>: > Yes, you've triggered an infinite loop with the key binding. One of the > strengths of macros is that the expansion is not simply a string -- it can > be used as shorthand for a complex key sequence, so simply disallowing > the general case is not really an option. I don't think anyone is going > to deliberately bind a key to itself, so I'm not sure putting code in to > solve that specific case, while leaving the general case unsolved, is > worthwhile. > > Maybe the thing to do is to abort at some maximum macro nesting level, sort > of like bash does with $FUNCNEST. >
Yes, I agree that my code is too generic and the case a bit far-fetched. There indeed appear to be more issues. For instance binding "loop" to "looper" will also trigger it. Still quite unlikely but more in the direction of something a user might expect to work. Limiting the nesting level sounds like a straightforward solution. Although I'm not sure whether exposing a configurable level is necessary. Do people actually nest their macros that deep that no reasonably safe upper bound can be set?