Alex Bennee left a comment on my dollar editor post:

I then open a number of separate emacs processes for each project I’m actively working on. I mainly do this as each project typically has it’s own make invocation.

I have a similar issue myself where my work projects require different commands but I prefer to avoid running multiple emacs instances if possible. It is not too difficult to fix. The idea is to detect the name of the file and run a different make command depending on which directory the file is in. This can be extended to as many different directories as necessary.

(setq compilation-scroll-output t) ( defun make-lib () (compile "make-lib-cmd" )) ( defun make-app () (compile "make-app-cmd" )) ( defun run-compile () (interactive) ( let ((file (buffer-file-name (current-buffer)))) ( cond ((not (stringp file)) ( error "[%s] is not a string. Invalid buffer %s ?" f (buffer-name))) ((string-match "/src/lib/" file) (make-lib)) ((string-match "/src/app/" file) (make-app)) (t ( error "Invalid location %s" file))))) (define-key c-mode-base-map [f7] 'run-compile)