The trouble with that is that the line() functions are evaluated
only at the time the exec command is executed, so the region remains
the lines in the window at the time the syntax file was sourced.
I discovered that the other day when I tried doing something similar
with matchadd(), \%l and line("'a"). After seeing the result, it
was "obvious" why it failed. I wound up evaluating the matchadd()
in a CursorHold autocommand.
Regards,
Gary