In case this is an XY problem, what I'd like to do is always open Emacs visually as a background process, but still get tab completion and not have to append '&' manually. I'm in Tcsh, no way to change that. I don't know how or if it's possible to alias something to pass an input and append something to it - is this possible?
Yes, in tcsh this is possible (unlike Bourne-style shells where you'd need to use a function instead). You need to put
!* in the alias text to substitute the parameters passed to the alias, and more stuff can go after that.
alias emacs 'emacs \!* &'
It's more useful to use its integrated server. Starting from Emacs 22 (IIRC), you can easily run
emacsclient and make it start Emacs if it isn't started yet. (With earlier versions,
emacsclient exists but is less useful.)
alias e 'emacsclient -a "" \!* &'
And if Emacs is running and you just want to open a new window, then there's no need to run emacsclient in the background: tell it to open the file in the existing Emacs instance and exit.
alias e 'emacsclient -a "" -c \!*'