You do not mention if this is running as an X app or a console app.
If it's as a console app, of course it needs to close. You got rid of it's input/output, more technically the (pseudo) tty it was on. It's very unlikely this is what you meant, so let's assume you're talking about an X app.
nohup
should work, not sure why it isn't. When the shell closes, it sends SIGHUP
to all processes in its process group. nohup tells the command to ignore SIGHUP.
You can also try setsid, which disconnects the process from the process group
alias emacs='setsid emacs'
Or add disown
after &