Git Product home page Git Product logo

dot-emacs's Introduction

Dot-Emacs

Description

This is my personal Emacs configuration. It is obviously very personalised and you’d be crazy to use it as-is.

Installation

Requires GNU Make, curl and Git.

cd
mv .emacs.d .emacs.d.backup
git clone [email protected]:chrisbarrett/dot-emacs.git .emacs.d
cd .emacs.d
make

Additional features can be installed using make all, or using the individual tasks in the makefile (e.g. make ruby). I pretty much only test on my machine, so YMMV.

The load sequence will search for a file called personal-config.el, which is a good place to put things like your gnus server configuration, email address, etc.

(setq user-full-name    "Jane Coder"
      user-mail-address "[email protected]")

;; SMTP

(setq smtpmail-mail-address user-mail-address
      smtpmail-smtp-server "smtp.foo.bar.com")

(provide 'personal-config)

Features

Evilness

I use Evil-mode so I can have vim in my Emacs so I can edit while I edit. You can restore Emacs’ normal key bindings by setting cb:use-vim-keybindings? to nil in init.el. I try to remember to make my bindings test for that so people testing this config out aren’t completely stuffed.

Custom mode-line

The mode-line is set up to remove clutter.

If you set user-mail-directory to point to your maildir the modeline will display an unread mail count.

Modal buffers

Certain commands display buffers in a modal manner; they expand to fill the frame and restore the previous state when killed. This behaviour is provided for most magit commands, ansi-term, org-agenda and others. Check the implementation of declare-modal-view and declare-modal-executor to see how this works.

Git commands

git-gutter+-mode is enabled for files in git repositories. This allows you to see modified hunks and stage them individually while you’re editing.

Common git commands are available under the g prefix key in Evil’s normal state, allowing you perform most git actions directly on the buffer you’re editing.

g b
branch manager
g c
commit
g D
diff
g l
log
g n
next change
g p
previous change
g P
push
g r
reflog
g s
stage hunk
g x
reset hunk

Org

Common org commands are accessible with a picker widget bound to <f8>.

I use a Rube Goldberg machine, implemented in Elisp, to capture links, todos, notes and other information by sending myself emails.

I use my own customised fork of org-pomodoro for clocking.

Language Support

I have sane configurations for several languages and environments:

  • Clojure
  • Elisp
  • Haskell
  • Idris
  • OCaml
  • Python
  • Ruby/Rails
  • Scala
  • Scheme

Key bindings

Since Evil frees up the Meta key, I use M-/key/ to display modal views such as terminals, w3m and dired.

C-SPC
helm-mini
S-SPC
execute-extended-command (i.e. M-x)
M-r
interactively edit symbol at point (iedit)
C-M-RET
refactoring commands
C-t
helm-imenu
M-b
buffers list with helm
M-d
show current file in dired
M-G
magit status
M-s
Search manpage, Google, YouTube, Wikipedia etc.
M-W
w3m
F1
eshell
F5
start pomodoro
F6
capture todo
F7
org-capture
F8
org commands
F9
show org-agenda in fullscreen
F10
print/scan options
F12
clock in/out of work

OS X-specific

  • org-mode and pomodoro notifications are displayed using Growl where available
  • cmd-shift-return runs OS X’s open command.
    • URL at point will open in the default browser
    • Files will open with the default application for their type

dot-emacs's People

Contributors

imdagger avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.