right so the reason I did this is that when defining a command via \newcommand, you must explicitly pass the number of arguments. When defining a lx_* you don't specify this and so it's hardcoded to one.
I'll have a think about it. In theory it could be done by passing an optional kwarg to lx_* so that you'd define lx_*(com, _; nargs=2) but it needs to be done carefully.
(side note: I actually quite like passing named arguments to "latex-like" commands because it becomes more readable which is why I went down that route of parsing the content of the command but I agree that both things should be supported).