EmacsForDevStudioUsers. Yeah, probably you would have been thinking about CEDET or something else. Emacs is everything. Emacs can be used as an IDE. And this page exists for expressing new ideas and enhancements that improves the IDE nature of emacs. You may say ‘Emacs is already a great IDE, what else you is needed?’. The answer to this question is exactly what this page is meant for ;)

Thoughts? features? Edit this page to add yours.


When you are using something like PHP, you want Emacs to have HTML in html-mode (or whatever the correct mode is, you get the idea) and PHP code in php-mode (same remark as before), not PHP show as HTML commentaries.

I think mmm-mode is exactly for doing that. --TassiloHorn

Or nXhtml/MuMaMo which takes a different approach on this. Comments are welcome. --LennartBorgman

Today (2017) you’d use web-mode


UI independent layer would be better. Gtk2 support is available since Emacs-22.

– It would be nice to have an Emacs←→Tcl/Tk-Interfacing API, or even a split code between „Emacs backend” (which would be the current „emacs server daemon” and able to let any GUI type connect) and an „Emacs UI frontend”. --mangledmind


Buffers vs XWidgets

Things like tabbar, speedbar could better use widgets of the X toolkit than drawing over the buffer. In the case of Gtk+, there is GtkTextView which (besides from rendering text) also renders Gtk+ Widgets themselves. The Emacs buffer capabilities could go in this way. Make emacs buffer to embed Gtk+ (or whatever the toolkit) widgets.

Use Tcl/tk, because you can easily script them and don’t have to use weird C++/XML engines as intermediary to be able to use them. --mangledmind

Simple Configuration UI

M-x …. Oh My! Emacs is highly configurable and there are a lot to tweak. But for newcomers minimizing the UI and keeping it simple is desired. Instead of bloating the menus with a lot of options most of which are seldom used, keep the UI (menus, dialog) simpler--have mostly used commands in them.


This one is great. Make emacs embeddable so that it can be embedded in applications.

Not sure what you mean by that. You can always use Emacs from another application (for editing or for evaluation/calculation). In particular, you can use ‘gnuclient’ or ‘emacsclient’ to access a running Emacs (‘gnuserv’). – DrewAdams

I mean embedding the Emacs buffer inside other IDEs like Anjuta. – Sridharinfinity

Googled to see what you mean. Here are some Anjuta screenshots, so others can get an idea: http://anjuta.sourceforge.net/anjuta.php?page=screenshots. It looks like you’re speaking of tight integration with specific functionalities in the IDE. In-depth knowledge of the IDE (e.g. Anjuta) would no doubt be needed, as well as knowledge of what kind of integration (embedding) is needed.

If you just want to pop up a new window (Emacs frame) to edit a buffer from various parts of the IDE, then you can use ‘gnuclient’ to do that: from a user’s point of view, such an editing window would seem to be part of the application (IDE). – DrewAdams

Maybe what is asked for is an interface to make Emacs live in existing windows for editing inside the application. This interface does not in itself have to have specific knowledge about the application where Emacs is embedded. However for a useful integration the interface must have a way to specify how Emacs should interact with the application. (Can such an interface be made “platform independent” today? Or rather, to what extent can it be made platform independent today?) – LennartBorgman

One of the major pieces of work for XEmacs that JWZ did was ensuring that you could use it as a motif widget, in order to embed it in a Motif GUI. I have no idea how easy it is to still do this. – DominicMitchell

I believe what is wanted, at least what I want, is for programs that would display a text edit area to have the ability to display an emacs window instead. KDE can do this with vim as they have a vim editing component (http://www.freehackers.org/kvim/vimpart.html). Here’s a screenshot of vim being used for the text edit field instead of the regular text edit component (fifth image down the page): http://www.freehackers.org/kvim/screenshots.html. What is being asked for is some way, via a Gnome or KDE component or another method, to do the same form of embedding with an emacs window. – MattPerry

To make this work pleasantly for most user, the menu and toolbar of the IDE (or other software) where Emacs is embedded should work for Emacs text (simple things like “save”), maybe using something like d-bus is necessary to have this kind of things working almost everywhere. The point is that the “host” software have to implement a d-bus interface. If what’s wanted is just to have emacs into another software, urxvt does this (see its -embed option). – p4bl0

Emacs-23 supports the XEmbed specification. Here is the NEWS entry: “You can embed Emacs in another application on X11. The new command line option --parent-id is used to pass the parent window id to Emacs. See http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html for details about XEmbed.” --JoachimNilsson

Sorry, but this is absolutely NOT true. Emacs does not support XEmbed, merely a very limited subset of it, mostly for embedding GTK3 widgets in emacs frames (ie., Emacs supports GTK3 embedding, not X embedding, which is definitely NOT the same). I cannot embed Emacs 23 thru 25.2 in any window, like I can do with many other programs, like xterm or gv, no matter whether I explicitly set the according switches at configure and compile time or not. --mangledmind

  • update (mangledmind): just found somethind weird… if you use the decimal pwinid and a GTK version of Emacs, you can embed. If you use the hex pwinid from a program’s output via an intermediary file or a pipe, emacs crashes or exits with an X error. If you use a non-GTK X version, it does not work at all (emacs 25.2-lucid hangs in an infinite loop, doesn’t respond except to a SIGKILL and loads 35% onto a CPU). this is not X embedding. It is GTK specific embedding of a GTK pane widget. ––mangledmind (see Bug#27098)

Integrated :)

Incidentally, the above was for long time on my TODO, and with finite resources of time it’s probably going to stay there for much longer… – MaciejKatafiasz

I want something like SlimeMode for Python, Haskell, or Erlang. At a minimum it would need to integrate with docstrings, dir() and/or type inference, as well as hook into debugging, profiling and other existing tools.

For Erlang, take a look at DistributedEmacsLisp (Distel) - doesn’t do docstrings AFAIK, but it does support debugging profiling etc.


Better scripting language

It doesn’t matter if it is guile, clisp or whatever but, please, something standard! – VdS

Somehow I always fail to see the point. Every programmer who doesn’t already know whatever language you picked still needs to learn it. How does being ‘standard’ help? I learned Elisp in 2 weeks. The finer points took another month. What if it took 3 months. Here I am 3 years later and I’m not even close to knowing all the internal interfaces with Emacs and how they interact with each other. Do you really think painting a big rock makes it any easier to move?


I can only agree with Mr. Bielawski. 1) ELisp is a LISP, hence mostly standard, like Scheme/Guile or Common Lisp dialects are mostly standard and in some parts proprietary. 2) You suggested using Guile and CLisp –– meaning you know how to program in Lisp, or did you simply grab any language name? 3) Any change in the scripting language as a whole would mean a complete re-write of Emacs in that language (except for the core interpreter and the UI most parts are written in ELisp). And there are two issues with that: first, it is a MAJOR task for which a massive group of programmers is needed to get it done in a few years (even if you can convince them to do it). Second, why change the language when ELisp is currently partly re-worked to adopt/implement more features from CL? (E)Lisp is still the best choice there is, no other existing language is as flexible. --mangledmind

Improved debugger integration

Right now, gud-mode is a bit rough around the edges and I never found it that robust. In particular the gdb interaction window is flaky and I found it easy to screw up. Why do I even need to interact with the gdb command line directly? It’d be nice if this was fully graphical and emacsified.

From Emacs-22 a greatly improved graphical UI is included and in Emacs-23 the support is even better, actually M-x gdb now only works with the graphical UI. Separate windows for stack variables, breakpoints, etc. --JoachimNilsson


Mozilla implements XUL(“UI markup language”) and XULRunner UI platform. Firefox 3 will be on XULRunner. Songbird(a new powerful player) also based on XULRunner. I think this tech is very userful for independent application(including Emacs). I want Emacs to support web developing well. Firefox is so powerful, it has many extensions. Will it be the next Emacs?


Conkeror, | 9ne, http://vian.sf.net

Who needs XML based user interfaces when EmacsLisp does the trick for making Emacs extensible. GTK interfaces are newly supported, and I doubt Mozilla’s UI interface will be appearing anytime soon. See MultipleModes for Emacs method of handing Web development. See also MozillaDevelopmentEnvironmentforEmacs.

Coding helps

make emacs work for you:

    test1.py:123   TODO: hey we have to refactor this code
    test2.c:23456  FIXME: add assertions here

[1] http://Scribes.sf.net/demo.htm

Well, after some time searching I’ve discovered that “skeleton-pair” solves my third point in the list above. Also, “msf-abbrev” package has all the features regarding dynamic abbreviations and it’s much easier than else-mode (points 1 and 4 above). Finally, for TODO and FIXME entries (point 6) I’ve coded simple org-mode help functions. It’s not perfect, but works somehow.

Some days, while using emacs, I feel like a silly young boy listening the incredible stories of elder people… everything is there you only have to find…

You can get number 2 with auto complete mode: http://www.emacswiki.org/emacs/AutoComplete , http://cx4a.org/software/auto-complete/

For tab expansion a combination of abbrev-mode and skeleton-mode does almost what is shown in the Scribes video. I’m not sure if it can move between multiple input points, but then I haven’t tried.