I'm working with Emacs on several different projects with several different languages. I'm seeking for solution that could help manage project as workspace.


  • Understand language in use and load appropriate modes (to reduce startup time, I'm trying not to load all at start)
  • Restore last buffers and their ordering (last workspace setup)
  • Restore default buffers and their ordering (default workspace setup)
  • Restore buffers and their ordering in pre-defined setup (special workspace setup, for debugging, for tracing)

Please suggest solutions or point to a way how can I achieve this

  • @Dan tried workspace.el and several custom scripts, but overall looks hackish, I'm looking for modes that are have good support and integration
    – sigrlami
    Jun 30, 2016 at 0:16

2 Answers 2


I use a combination of two different tools for project management:projectile, for switching between projects, and perspective, for managing frames within a given project. (The two also integrate well, allowing switching between project states.)

Note that understanding the language in use, in Emacs, is always a function of the mode(s) Emacs loads for a given file, not for a "project" or "workspace." For instance, one project might contain a README in markdown-mode, and also python source, and also SQL schema files.

What neither of those will give you is any kind of save/restore functionality. For that, I believe you want to save your session via desktop. This should get you a good deal of what you want.

To reduce load time, I highly recommend use-package; to make perspective/project switching more pleasant, I highly recommend helm.

  • there's also persp-mode, which is similar to perspective but can also save/load perspectives to file
    – bmag
    Jun 30, 2016 at 21:14
  • I suggest workgroups2 as little different alternative for perspective. And, yes, projectile is pretty nice.
    – Netsu
    Jul 13, 2016 at 0:30

Consider using Emacs bookmarks, with Bookmark+, including, in particular:

  • Desktop bookmarks.
  • Bookmark-file and Bookmark-list bookmarks.
  • Dired and Dired-tree bookmarks. Search for "dired" in the Bookmark+ doc. There are 100 hits, as there is great synergy between Dired - in particular Dired+, and bookmarking.
  • Bookmark tags. Ad hoc tags let you organize bookmarks, and hence the Emacs objects that they target, into sets, including set hierarchies and other set organizations. Tags are arbitrary strings, or strings with associated Lisp values (any values).
  • Composite, or sequence, bookmarks, which combine other bookmarks.

See also Icicles support for projects.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.