@casper Your problem is not the [savetofile $1.pd $2( message, but that without the argument the send object below [send pd-$1.pd] has no destination ($1 is not defined).
You can send the message to a canvas by naming it........ so I have put an object [namecanvas woof] and set the message to this patch........ which is then saved. But this is exactly the same as using the menu.... File.... Save as.
saveme_newedit.pd
So that is probably not what you want.
Your abstraction should work if you give it one argument, that is the name of the patch that you want to save (without the extension). But you will end up working in the new saved patch again, as with the patch I have posted above.
I assume that you want to do the same as my original patch, but choose the filename and directory.
I will have to sleep on that and reply later...... time for bed here!
The lack of argument is easily solved by putting the [namecanvas woof] in the patch containing [saveme_newedit] but that is far from a global solution, and you still end up working in the newly saved file.
David.