Load Sets of Buffers more easily
Add license info for gitignore
Add in license information



You can also use your local clone with git send-email.



This library provides a way to manage sets of buffers/files separate from existing project management systems. Its goal is to make it easy to load things that may not fit into the definition of a project, or are small subsets of projects, etc.


Place buffer-sets.el somewhere on your load path and (require 'buffer-sets). This package is also available on Melpa and may be installed through package.el.

#Enabling Buffer Sets Mode

buffer-sets-mode is a global minor mode which will load buffer set definitions if necessary (see below), and ensure that buffer sets are unloaded before Emacs is closed. It also binds keys for buffer set manipulation in buffer-sets-mode-map.

#Key Bindings

  • C-x L l Load a buffer-set
  • C-x L L List all buffer-sets
  • C-x L u Unload a buffer-set
  • C-x L U Unload all buffer sets
  • C-x L p Unload most recently loaded buffer set
  • C-x L r Reload a buffer set


#Defining Buffer Sets

Buffer sets are defined through the alist buffer-sets. These are of the form (key . definition), where key is a string name, and definition is an alist with the following keys: :files, :select, :on-apply and :on-remove, which have the following semantics:

  • :files a list of files/directories to load
  • :select the name of a buffer to select after loading the set
  • :on-apply the name of a function to run after loading the set
  • :on-remove the name of a function to run after loading the set

This variable may be customized, and configuration by this method is recommended for new users.

#Autoloading Buffer Sets

Buffer sets may be autoloaded by setting buffer-sets-start-sets to a list of buffer set names and running buffer-sets-install-emacs-start-hook. These will be loaded in the order specified.

#Load and Unload Hooks

The hooks buffer-sets-load-set-hook and buffer-sets-unload-set-hook are run after loading and unloading a set (respectively).

#Loading Buffer Set Definitions (and migration from old interface)

New users of buffer-sets should use customize (see above).

Past users of buffer-sets may instead configure buffer-sets through an external file or a setf expression. Note, that if you used the old define-buffer-set interface, you may use buffer-sets-save to automatically migrate to either customize or to a setf expression in a file specified by buffer-sets-definitions-file. Which method of saving buffer set definitions is used is controlled by the buffer-sets-save-method variable. If it is :custom the customize interface is used; if :file, the file specified by buffer-sets-definitions-file is written; if nil an error is signalled.

#Errors and Bugs

If you find an error or a bug (or have an improvement!), please send an email to ~swflint/public-inbox@lists.sr.ht.