Skip to content

Herdinger/oh-my-emacs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Oh My Emacs

Introduction

It is said that Emacs is “a great operating system, lacking only a decent editor”[1].

Yes, it is, it really is. In fact, Emacs has basic process control and management, window and frame management(just like windows manager in modern Linux desktop environment), programming APIs(yeah, elisp to emacs is what syscall and glibc to Linux), comprehensive manuals and documentation. The only limitation with Emacs is your imagination.

You can live in Emacs if you like.

But I won’t do that, since I want to watch video with mplayer, surf the Internet with Firefox/Chrome(not with emacs-w3m), listen to music with amarok. I use Emacs to do what it is good at, namely, text editing. To me, coding and writing.

This project was born one day I want to reorganize my messy .emacs.d. I’ve tried all the famous .emacs.d projects(such as prelue, starter-kit, etc) but none of them works the way I want it to.

Then I found emacs24-starter-kit, I was deeply attracted by its literate way to organize and embed elisp code in org-mode files, I wanted to make some contribution to make it a full-blown hacking environment, but I stopped after I dived into the code a little, since I want:

  • Adapt el-get instead of the builtin package.el, and
  • Have a better completion including auto-complete and various ac-sources projects for various programming languages.

The starter kit projects is just starter’s kit, what I want is a full-blown hacker’s kit. So I start my own project, oh-my-emacs, whose name is inspired by oh-my-zsh.

Features

  • Better default settings with various eye candy, powerline, scrollbar, color-theme, fonts, etc.
  • Adopt el-get as the default package manager for Emacs, instead of the default builtin package.el, say goodbye to ./configure; make; make install and explicitly manually management of load-path. el-get also provides automatic documentation management, customizable user’s recipe support, etc.
  • Self-adapted, only install necessary packages when it satisfies the prerequisities. You need to install clang for auto-complete-clang, for example.
  • Modular, only load necessary packages as you need.
  • Literate, each package has comprehensive documentation or even a tiny tutorial with it, together with necessary web links. Say goodbye to old, out-dated emacs lisp code from Google.
  • Work as expected, completion every where when possible, semantic code completion through auto-complete with various ac backend, helm for minibuffer completion, etc.
  • Full-blown, oh-my-emacs is not another starter kit, it is hacker kit.

Quick Start

Simple enough, first, ensure you have a good network(Chinese users should get rid of GFW when possible to avoid many weird problems during first startup); second, ensure that you have installed the necessary tools pointed out by the Prerequisites sections from oh-my-emacs modules. Basically, you need to install the following packages in you operating system, which is the mandatory prerequisites of ome.org:

Please backup your old .emacs and .emacs.d before you join the journey:

git clone https://github.com/xiaohanyu/oh-my-emacs $HOME/.emacs.d

Then just fire up your Emacs and make a coffee, and you should have a full-blown Emacs OS!

Evil

Note that oh-my-emacs enabled evil by default, you can disable it globally by M-x evil-mode, however, I do recommend you enable it and try to adapt, ah, finally the Emacs OS get a good editor, evil.

OS X users may have problems with evil installation, such as xiaohanyu#2. To skip this, you can first M-x el-get-remove evil and then comment out code like (load "ome-advanced.org") from ome.org.

Helm

You may miss the old M-x when you first start with oh-my-emacs, me too, before I fall in love with helm. I highly recommend you to adapt with the helm way. Believe me, helm will bring you lots of surprise.

There’re two key points for helm beginners:

  • In helm, TAB is not used as the traditional completion key. Maybe this is the most whirlwind turnaround with helm since so many packages use TAB for completion. Remember, TAB in helm is used to access the helm action menu. You may wonder, then, how can I do type completion in helm? The answer is, no need to do type completion explicitly. Just type, and helm will lead you to the right place.
  • oh-my-emacs bind the traditional C-x C-f to helm-find-files by default. You should use C-l to go to the precedent directory level instead of DEL.

What’s in Oh-my-emacs

  • ac-nrepl: Nrepl completion source for Emacs auto-complete package
  • ac-slime: Emacs auto-complete plugin for Slime symbols
  • auctex: AUCTeX is an extensible package for writing and formatting TeX files in GNU Emacs and XEmacs. It supports many different TeX macro packages, including AMS-TeX, LaTeX, Texinfo, ConTeXt, and docTeX (dtx files).
  • auto-complete: The most intelligent auto-completion extension.
  • auto-complete-clang: Auto-complete sources for Clang. Combine the power of
  • cdlatex-mode: a minor mode which re-implements many features also found in the AUCTeX LaTeX mode.
  • clojure-mode: Emacs support for the Clojure language.
  • cmake-mode: Provides syntax highlighting and indentation for CMakeLists.txt and *.cmake source files.
  • color-theme-solarized: Emacs highlighting using Ethan Schoonover’s Solarized color scheme
  • doxymacs: Doxymacs is Doxygen + {X}Emacs.
  • elisp-slime-nav: Slime-style navigation for Emacs Lisp
  • elpy: Emacs Python Development Environment
  • emacs-w3m: A simple Emacs interface to w3m
  • evil: Evil is an extensible vi layer for Emacs. It emulates the main features of Vim, and provides facilities for writing custom extensions.
  • geiser: Geiser is a collection of Emacs major and minor modes that conspire with one or more Scheme interpreters to keep the Lisp Machine Spirit alive. It draws inspiration (and a bit more) from environments such as Common Lisp’s Slime, Factor’s FUEL, Squeak or Emacs itself, and does its best to make Scheme hacking inside Emacs (even more) fun.
  • helm: Emacs incremental and narrowing framework
  • htmlize: Convert buffer text and decorations to HTML.
  • magit: It’s Magit! An Emacs mode for Git.
  • markdown-mode: Major mode to edit Markdown files in Emacs
  • nrepl: An Emacs client for nREPL, the Clojure networked REPL server.
  • pkgbuild-mode: Major mode for editing PKGBUILD files
  • powerline: Powerline for Emacs
  • projectile: Project navigation and management library for Emacs
  • puppet-mode: A simple mode for editing puppet manifests
  • quickrun: Run commands quickly
  • rainbow-delimiters: Color nested parentheses, brackets, and braces according to their depth.
  • slime: Superior Lisp Interaction Mode for Emacs
  • smartparens: Autoinsert pairs of defined brackets and wrap regions
  • wikipedia-mode: Mode for editing Wikipedia articles off-line
  • xcscope: Cscope interface for (X)Emacs
  • yaml-mode: Simple major mode to edit YAML file for emacs
  • yascroll: Yet Another Scroll Bar Mode
  • yasnippet: YASnippet is a template system for Emacs.

Gallery

Here‘re some screenshots of oh-my-emacs:

  • Startup screen:

http://img3.douban.com/view/photo/large/public/p2134421167.jpg

  • org-babel from org-mode, auto-complete for emacs lisp:

http://img3.douban.com/view/photo/large/public/p2134421326.jpg

  • helm-grep to search words in multiple files:

http://img3.douban.com/view/photo/large/public/p2134421804.jpg

  • auto-complete for C++ QT

http://img3.douban.com/view/photo/large/public/p2134420940.jpg

  • auto-complete for python

http://img4.douban.com/view/photo/large/public/p2134421478.jpg

  • AUCTeX with outline-minor-mode, helm completion for TeX commands

http://img3.douban.com/view/photo/large/public/p2134420730.jpg

References

  • Emacs Prelude: Prelude is an Emacs distribution that aims to enhance the default Emacs experience.
  • emacs24-starter-kit: A cleaner version of the literate starter kit based on Emacs24.
  • emacs-starter-kit: The Starter Kit provides a more pleasant set of defaults than you get normally with Emacs.
  • graphene: A set of defaults for Emacs, for refugees from GUI text editors.
  • purcell’s emacs.d: An Emacs configuration bundle with batteries included.

Tips

  • You need to install emacs24-el in ubuntu, or org-export won’t work. I don’t know why.

Footnotes

[1] Editor war

About

Provide an awesome dotemacs.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Emacs Lisp 82.0%
  • Perl 18.0%