Artur Malabarba, an exemplar of configuring Emacs to accommodate your workflow, solves a long standing problem with the Emacs compile
command. Although the command is powerful, it doesn’t allow you to interact with the build process.
Malabarba presents a bit of Elisp that allows the user to respond to requests for input from the build process. That turns out to be pretty easy to do—see Malabarba’s post for the details.
Usually, inputting data to the build process isn’t a problem—at least for the type of work I do. My makefiles do their work without any assistance from me but not all environments are like that. Malabarba uses Ruby as an example of where you sometimes need to help things along during the build process. If you have a environment that needs extra input, be sure to take a look at Malabarba’s post. It may help you eliminate one more reason for having to leave Emacs for the shell.