BG's custom Emacs setup
Emacs Lisp Common Lisp Scheme Racket Ruby Shell Other
Switch branches/tags
Nothing to show
Pull request Compare This branch is 8 commits ahead, 14 commits behind ghoseb:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

BG's Emacs Setup

A fresh approach to managing my Emacs setup.

Still a work in progress.


  • No magic
  • Simple
  • Extensible
  • Well documented (lol!)

Directory Structure

    - etc # auxilliary files, snippets, etc.
    - packs # different library/config "packs"
    - init.el # the main entry point

Structure of Packs

Every pack is a logical group of Emacs Lisp libraries and corresponding configuration files. Each pack is designed to be completely stand-alone except certain functions to load the config files from the correct directory which are provided by the init.el file.

Each pack must have this structure -

    - lib/ # emacs Lisp library files
    - config/ # config files for each library as needed
    - init.el # entry point for the pack

Take a look at the notes pack for more information.


All the packs are loaded from the top-level init.el file so you can enable/disable loading of packs from there. Look at the bottom of the said file for more information.

Included Packs

  • Core
    • core Emacs configuration
  • Power
    • configuration for power-users
  • Programming
    • settings for different programming languages
  • Themes
    • colour theme settings
  • Notes
    • note-taking using Deft & Org
  • Clojure
    • for Clojure programming
  • User
    • a special pack for user-level customizations
    • always loaded last

Supported Programming Languages

  • Clojure
  • Python
  • Go
  • Haskell
  • JavaScript
  • Lua
  • SML
  • Racket (via Geiser)
  • OCaml (via Tuareg)
  • Scala (via scala-mode2 & ensime)

Note for OSX Users

If the display looks weird, Comment out the following lines in ~/.emacs.d/packs/core/config/osx.el

;;; frames
;; (setq initial-frame-alist '((top . 23)
;;                             (left . 0)
;;                             (width . 168)
;;                             (height . 48)))


I welcome any contribution to the project in the form of patches, etc. I am generally looking for any sort of configuration/tweak that is useful for Emacs beginners and hackers alike.

Even though I may choose to not include something as default, I am fine with keeping them when commented out/disabled by default.

If you have a patch, please send me a pull-request and then we can discuss.

In case of any questions, feel free to email me - b.ghose @


Copyright belongs to the respective authors. Everything else is in the Public Domain.


Based on the work of Sam Aaron.