Revise README

This commit is contained in:
Henrik Lissner 2016-10-05 21:50:34 +02:00
parent dd07f33ca5
commit 87da6ab784
2 changed files with 76 additions and 50 deletions

124
README.md
View file

@ -1,87 +1,106 @@
[![Main screenshot](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/main.png?raw=true)][sc]
[![MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE) [![MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)
[![DOOM v1.2.9](https://img.shields.io/badge/DOOM-v1.2.9-blue.svg)](./init.el)
[![Yay! Evil!](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/cacochan.png)](http://ultravioletbat.deviantart.com/art/Yay-Evil-111710573) <a href="http://ultravioletbat.deviantart.com/art/Yay-Evil-111710573">
<img src="https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/cacochan.png" align="right" />
</a>
This is an Emacs configuration for a stubborn, melodramatic and shell-dwelling This is an Emacs configuration for a stubborn, melodramatic and
vimmer disappointed with the text-editor status quo. shell-dwelling vimmer disappointed with the text-editor status quo.
Doom tries to look and act like modern editors (whatever that will mean to me on Doom tries to look and act like modern editors (whatever that will
any given day), emulates vim as best it can and strives to surpass it in any way mean to me on any given day), emulates vim as best it can and strives
possible. All to fit my needs as a software developer, indie gamedev, designer, to surpass it in any way possible. All to fit my needs as a software
scientist and doom enthusiast. developer, indie game developer, UX designer, scientist and doom
enthusiast.
It was tailored for Emacs 25+ on OSX 10.11+. I use [vim] everywhere else. It was tailored for Emacs 25+ on **OSX 10.11+** and
**Arch Linux 4.7+**. I use [vim] everywhere else.
![Main screenshot](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/main.png?raw=true) **NOTE:** you can [find the theme in a separate repo][doom-theme].
**NOTE:** you can [find the theme in a separate repo](https://github.com/hlissner/emacs-doom-theme).
## Installation ## Installation
Depends on [Cask] and make:
```bash ```bash
# Ensure homebrew is up to date
brew update && brew upgrade
# Install cask + emacs
brew install cask
brew tap railwaycat/emacsmacport
brew install emacs-mac --with-imagemagick --with-modern-icon --HEAD
# Install this emacs.d
git clone https://github.com/hlissner/.emacs.d ~/.emacs.d git clone https://github.com/hlissner/.emacs.d ~/.emacs.d
cd ~/.emacs.d cd ~/.emacs.d
make # installs plugins via cask and generates autoloads make # installs plugins via cask and generates autoloads
# Optional # OPTIONAL
make compile # compiles core and autoloaded files make compile # compiles core and autoloaded files
make snippets # install hlissner/emacs-snippets into private/snippets make snippets # install hlissner/emacs-snippets into private/snippets
``` ```
For a more comprehensive byte compile, run `:bc!` (`:bc` will compile the Run `:bc!` for a more comprehensive byte compile (`:bc` will compile
current *.el file). the current, open *.el file).
For OSX users, I recommend Yukihiro Matsumoto's fork of Emacs, which
you can get through homebrew:
```bash
brew tap railwaycat/emacsmacport
brew install emacs-mac --with-imagemagick --with-modern-icon --HEAD
```
## Features ## Features
To get a picture of what's in here, check out: To get a picture of what's in here, check out:
* **[The Caskfile](Cask)**: lists installed plugins and where they're configured. * **[The Caskfile](Cask)**: lists installed plugins & where they're
* **[init.el](init.el)**: lists all loaded modules configured.
* **[core/core-modeline.el](core/core-modeline.el)**: my modeline config * **[init.el](init.el)**: birds-eye view of loaded modules and load
* **[private/my-bindings.el](private/my-bindings.el)**: most of the custom keybinds order.
* **[private/my-commands.el](private/my-commands.el)**: available custom ex commands * **[core/core-modeline.el](core/core-modeline.el)**: my modeline
* **[ext/*.sh](ext/)**: scripts for external dependency setup (e.g. irony-mode) config.
* **[private/my-bindings.el](private/my-bindings.el)**: most of my
custom keybinds.
* **[private/my-commands.el](private/my-commands.el)**: custom ex
commands.
* **[ext/*.sh](ext/)**: scripts that will set up external
dependencies, such as [irony-mode] or [racer].
See screenshots in the [screenshots branch][sc]. See screenshots in the [screenshots branch][sc].
### Highlights ### Highlights
* Tamed popup windows with **[shackle]**; see `def-popup!` and `shackle-rules`. * Strong support for a large selection of languages, including C/C++,
e.g. help buffers will always pop up at the bottom of the frame, and are Ruby, Python, PHP, JS, Elisp, Haskell, Lua, Julia, Go, Crystal,
removed with ESC. Assembly, Java, Swift, (Ba|z)?sh, Scala, Rust, LaTeX, Processing,
* Workspaces & session persistence with **[workgroups2]** Octave, and more!
* Tamed popup windows with **[shackle]**. e.g. help buffers will
always pop up at the bottom of the frame, and are removed with ESC.
* Workspaces & session persistence with **[workgroups2]**.
* Project and workspace-sensitive buffer navigation and functions * Project and workspace-sensitive buffer navigation and functions
* A vim-like environment with **[evil-mode]** * A vim-like environment with **[evil-mode]**
* vim-seek/vim-sneak functionality with **[evil-snipe]** (provides 2-char motions) * vim-seek/vim-sneak functionality with **[evil-snipe]** (2-char
motions)
* [Multiple cursors][sc-multiedit] with **[evil-multiedit]** * [Multiple cursors][sc-multiedit] with **[evil-multiedit]**
* Repeat (most) motions with <kbd>SPC</kbd> and * Repeat (most) motions with <kbd>SPC</kbd> and
<kbd>shift</kbd>+<kbd>SPC</kbd> <kbd>shift</kbd>+<kbd>SPC</kbd> (backwards)
* On-the-fly keybindings with `:[nviom]map` * On-the-fly keybindings with `:[nviom]map`
* Global <kbd>C-x</kbd> omnicompletion (e.g. <kbd>C-x</kbd>+<kbd>C-f</kbd> for * Global <kbd>C-x</kbd> omnicompletion (e.g.
files) <kbd>C-x</kbd>+<kbd>C-f</kbd> for files)
* Fast search utilities: * Fast search utilities:
* Project and buffer navigation with **[ivy]** * Project and buffer navigation with **[ivy]**
* File browser sidebar with **[neotree]** * File browser sidebar with **[neotree]**
* Project search (and replace) with **[counsel-ag]** and **[wgrep]** * Project search (and replace) with **[counsel-ag]** (and
**[wgrep]**)
* Buffer search with **[swiper]** * Buffer search with **[swiper]**
* REPLs for many languages including Ruby, Python, PHP, JS, Elisp, Haskell and * REPLs for many languages including Ruby, Python, PHP, JS, Elisp,
Lua. Haskell and Lua.
* [Minimalistic diffs in the fringe][sc-diffs] with **[git-gutter-fringe]**. * [Minimalistic diffs in the fringe][sc-diffs] with **[git-gutter-fringe]**.
* Modded **org-mode** to be a modern note-taking/LaTeX/word-processing platform. (WIP) * Modded **org-mode** to be a modern note-taking/LaTeX/word-processing
* Code debugging interface with **[realgud]** (currently supports gdb, trepanjs, platform. (WIP)
bashdb and zshdb, working on Python/Ruby support) * Code debugging interface with **[realgud]** (currently supports gdb,
* A do-what-I-mean jump-to-definition implementation that either uses major-mode trepanjs, bashdb and zshdb, working on Python/Ruby support)
commands or falls back to **[dumb-jump]**/ctags. * A do-what-I-mean jump-to-definition implementation that either uses
* A [pretty mode-line](core/core-modeline.el) with: major-mode commands or falls back to **[dumb-jump]**/ctags.
* A [pretty mode-line](core/core-modeline.el) inspired by Atom's. It
includes:
* evil-search/iedit/evil-substitute mode-line integration * evil-search/iedit/evil-substitute mode-line integration
* Macro-recording indicator * Macro-recording indicator
* Python/ruby version in mode-line (for rbenv/pyenv) * Python/ruby version in mode-line (for rbenv/pyenv)
@ -96,7 +115,8 @@ See screenshots in the [screenshots branch][sc].
* Snippet expansion and file templates with **[yasnippet]** * Snippet expansion and file templates with **[yasnippet]**
* Completion with **[company-mode]** * Completion with **[company-mode]**
* Syntax checking with **[flycheck]** * Syntax checking with **[flycheck]**
* Custom O/S interaction commands, like **os-reveal** and **os-open-in-browser** * Custom O/S interaction commands, like **os-reveal** and
**os-open-in-browser**
* Custom TODO, FIXME and NOTE highlighting and search (`:todo`) * Custom TODO, FIXME and NOTE highlighting and search (`:todo`)
* **big-mode** for presentations and demonstrations (`:big`) * **big-mode** for presentations and demonstrations (`:big`)
* Tmux integration with `:t` and `:tcd` ex commands * Tmux integration with `:t` and `:tcd` ex commands
@ -120,6 +140,10 @@ A few things to keep in mind:
Emacs open while doing so. Emacs open while doing so.
[yay-evil]: http://ultravioletbat.deviantart.com/art/Yay-Evil-111710573
[Cask]: https://github.com/cask/cask
[Homebrew]: http://brew.sh
[auto-yasnippet]: https://melpa.org/#/auto-yasnippet [auto-yasnippet]: https://melpa.org/#/auto-yasnippet
[company-mode]: https://melpa.org/#/company [company-mode]: https://melpa.org/#/company
[counsel-ag]: https://melpa.org/#/counsel [counsel-ag]: https://melpa.org/#/counsel
@ -129,20 +153,22 @@ A few things to keep in mind:
[evil-snipe]: https://melpa.org/#/evil-snipe [evil-snipe]: https://melpa.org/#/evil-snipe
[flycheck]: https://melpa.org/#/flycheck [flycheck]: https://melpa.org/#/flycheck
[git-gutter-fringe]: https://melpa.org/#/git-gutter-fringe [git-gutter-fringe]: https://melpa.org/#/git-gutter-fringe
[irony-mode]: https://github.com/Sarcasm/irony-mode
[ivy]: https://melpa.org/#/ivy [ivy]: https://melpa.org/#/ivy
[neotree]: https://melpa.org/#/neotree [neotree]: https://melpa.org/#/neotree
[nlinum]: http://elpa.gnu.org/packages/nlinum.html [nlinum]: http://elpa.gnu.org/packages/nlinum.html
[quickrun]: https://melpa.org/#/quickrun [quickrun]: https://melpa.org/#/quickrun
[racer]: https://github.com/phildawes/racer
[realgud]: https://melpa.org/#/realgud [realgud]: https://melpa.org/#/realgud
[repl-toggle]: https://melpa.org/#/repl-toggle [repl-toggle]: https://melpa.org/#/repl-toggle
[shackle]: https://melpa.org/#/shackle [shackle]: https://melpa.org/#/shackle
[swiper]: https://melpa.org/#/swiper [swiper]: https://melpa.org/#/swiper
[workgroups2]: https://melpa.org/#/workgroups2
[wgrep]: https://melpa.org/#/wgrep [wgrep]: https://melpa.org/#/wgrep
[workgroups2]: https://melpa.org/#/workgroups2
[yasnippet]: https://melpa.org/#/yasnippet [yasnippet]: https://melpa.org/#/yasnippet
[sc]: https://github.com/hlissner/.emacs.d/tree/screenshots [sc]: https://github.com/hlissner/.emacs.d/tree/screenshots
[sc-diffs]: https://github.com/hlissner/.emacs.d/blob/screenshots/git-gutter.png?raw=true [sc-diffs]: https://github.com/hlissner/.emacs.d/blob/screenshots/git-gutter.png?raw=true
[sc-multiedit]: https://raw.githubusercontent.com/hlissner/evil-multiedit/screenshots/main.gif?raw=true [sc-multiedit]: https://raw.githubusercontent.com/hlissner/evil-multiedit/screenshots/main.gif?raw=true
[vim]: https://github.com/hlissner/.vim [vim]: https://github.com/hlissner/.vim
[doom-theme]: https://github.com/hlissner/emacs-doom-theme

View file

@ -298,7 +298,7 @@ then include buffers that aren't part of the current project."
(new-buf (get-buffer-create "*doom:scratch*"))) (new-buf (get-buffer-create "*doom:scratch*")))
(with-current-buffer new-buf (with-current-buffer new-buf
(setq default-directory old-project) (setq default-directory old-project)
(setq mode-line-format (doom-modeline 'scratch)) (setq mode-line-format (doom-modeline))
(when (and (not (eq major-mode mode)) (when (and (not (eq major-mode mode))
(functionp mode)) (functionp mode))
(funcall mode)) (funcall mode))