It's more a bug than a feature, $chan($chan).mode has +L and +f of unreal but without their parameters (defined correctly in raw 005). But perhaps we could just have a property .mode<mode> to check if a mode is set, it would return "+<mode> [param]" with the parameter being optional depending on the context; "$chan($chan).modef" for +f for example.
If a mode (+L) doesn't mean the same everywhere, that would allow scripters to check for any mode according to the server they are on.
I don't think $chan($chan).mode should exclude the parameters of the modes it doesn't recognize anyway, or that it should include the ones it recognizes.
I agree. A variation of this that could agreed upon would be nice. I feel that we could either use .mode<mode> property or perhaps add an entirely new identifier. Something similar to the following would be nice:
$mode($chan, 0) = return all modes, with mode parameters
$mode($chan, 1) = return the first mode with associated parameter (if applicable)
$mode($chan, 1-3) = return the first three modes
EDIT: Wims' suggestion would be preferable in my opinion unless $mode could be thoroughly planned out. It would obviously need some features that would make it worth adding a new identifier.