What I usual use is this macro:
Code:
#showtooltip Charge
/cast [target=mouseover, mod: alt, harm, nodead] Intercept; [target=target, harm, mod: alt, harm, nodead] Intercept; [target=mouseover, help, nodead] Intervene; [target=target, help, nodead] Intervene; [target=mouseover, harm, nodead] Charge;[target=target, harm, nodead] Charge
/cast Hamstring
It's a little bit longer than 255 chars so you need a mod for additional macro space.
What it does is pretty simple.
If your target (or mouseover) is friendly use Intervene
If your target (or mouseover) is an enemy and is not in melee range use Charge
If your target (or mouseover) is an enemy, not in melee range and you press alt use Intercept
If your target is in melee range use Hamstring
Works quite well :) .