Parser function syntax is generally {{#function_name : expr1 | expr2 | expr3 | ...}}
Currently VE sees this as a template with name "#function_name : expr1" and arguments "1 = expr2", "2 = expr3", etc. This makes it impossible to edit expr1 in VE.
Same for parserfunctions like urlencode and template messages. The transclusions editor should be able to handle them, preferably by invisibly detecting them and failing that with a special, user-selected mode. Until we can, we should show an explanatory message when the user attempts to add one.
See also:
T54607: TemplateData: Implement hook for extensions to document magic words and parser functions