It also works for custom blocks! But it works differently for them; the primitive blocks have specific groups of related meanings, but for custom blocks Snap! just looks for any other custom block that fits syntactically, so you have to choose from among a larger list.