>>> `compiled-prog-mode' that has generic commands for building program, >>> `interpreted-prog-mode' that has generic commands for REPL [...] > (define-prog-mode foo > :type 'compiled Let me point out that the idea that some languages are compiled and others are interpreted is bogus. This is a property of a language's *implementation* and not of the language per se. And of course, here we don't even really care about this facet of the implementation: you're using those terms as a proxy for whether we use a REPL or a batch-compiler. Many languages have both REPLs and batch compilers (like, say ELisp), so a major mode needs to be able to offer access to both functionalities at the same time. Regarding the original suggestion to provide a uniform access to a REPL, I started on this a long time ago, but never got it "finished" :-( I attached what I still have of that effort. Stefan