v0.9.5 bump

This commit is contained in:
Henrik Lissner 2016-03-30 00:51:12 -04:00
parent fa897fc9d8
commit d4b8361223
2 changed files with 91 additions and 83 deletions

170
README.md
View file

@ -1,5 +1,4 @@
# NARF Emacs # NARF Emacs
![Screenshot](/../screenshots/main.png?raw=true) ![Screenshot](/../screenshots/main.png?raw=true)
> What we do every night, Pinky... > What we do every night, Pinky...
@ -10,13 +9,15 @@ strives to emulate vim as best it can, and surpass it in any way possible.
It is tailored to my needs as an software developer (app, game, and web), data scientist, It is tailored to my needs as an software developer (app, game, and web), data scientist,
and writer running OSX and Emacs **24.5+**. and writer running OSX and Emacs **24.5+**.
(For more screenshots, see the screenshots branch)
## Installation ## Installation
``` ```
brew install cask brew install cask
brew tap railwaycat/emacsmacport brew tap railwaycat/emacsmacport
brew install emacs-mac --with-imagemagick --with-modern-icon brew install emacs-mac --with-imagemagick --with-modern-icon
git clone --depth 1 https://github.com/hlissner/emacs.d ~/.emacs.d git clone --depth 1 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
``` ```
@ -36,99 +37,106 @@ To get a picture of what's in here, check out:
* **[init.el](init.el)**: lists all loaded modules * **[init.el](init.el)**: lists all loaded modules
* **[private/my-bindings.el]**: most of the custom keybinds * **[private/my-bindings.el]**: most of the custom keybinds
* **[private/my-commands.el]**: available custom ex commands * **[private/my-commands.el]**: available custom ex commands
* **[ext/Makefile](ext/Makefile)**: lists all external dependencies
### Basic ### Basic
* Modal editing with **evil-mode** * Modal editing with **evil-mode**
* Pretty line numbers with **nlinum** and neckbearded hackery * Pretty line numbers with **nlinum** and neckbearded hackery
* Syntax checking with **Flycheck** * Syntax checking with **Flycheck**
* Completion with **company-mode** * Completion with **company-mode**
* Pretty mode-line with **spaceline** * Pretty mode-line with **spaceline**
* Project navigation with **helm** and **neotree** * Project navigation with **helm** and **neotree**
* Session persistence (and tab emulation) with **workgroups2** * Project search with **ag** and file search with **evil-search** or **helm-swoop**
* Run code inline with **quickrun** * Project-wide search and replace with **helm-ag** (press shift-Tab while in results
* On-demand REPLs for many major modes with **repl-toggle**, including Ruby, Python, buffer)
PHP, JS, Elisp, and Lua. * Session persistence (and tab emulation) with **workgroups2**
* 2-char searching with **evil-snipe** * Run code inline with **quickrun**
* Display diffs in the margin with **git-gutter** * On-demand REPLs for many major modes with **repl-toggle**, including Ruby, Python,
* Repeat (most) motions with <kbd>SPC</kbd> PHP, JS, Elisp, Haskell and Lua.
* Snippet expansion with **yasnippet** * 2-char searching with **evil-snipe**
* File template support with **auto-insert** and **yasnippet** * Display diffs in the margin with **git-gutter**
* Code folding with **hideshow**; doesn't allow arbitrary folds though * Repeat (most) motions with <kbd>SPC</kbd>
* Multiple cursors with **[evil-multiedit]** * Snippet expansion with **yasnippet**
* O/S interaction functions, like **os-reveal** and **os-open-in-browser** * File template support with **auto-insert** and **yasnippet**
* Custom TODO, FIXME and NOTE highlighting * Code folding with **hideshow**; doesn't allow arbitrary folds though
* **big-mode** for presentations and demonstrations * Multiple cursors with **[evil-multiedit]**
* Tmux integration with `:t` and `:tcd` ex commands * O/S interaction functions, like **os-reveal** and **os-open-in-browser**
* Custom TODO, FIXME and NOTE highlighting
* **big-mode** for presentations and demonstrations
* Tmux integration with `:t` and `:tcd` ex commands
### Advanced ### Advanced
* **Popup control with Shackle**: I've (mostly) tamed window popups in Emacs with * **Popup control with Shackle**: I've (mostly) tamed window popups in Emacs with Shackle
Shackle (popwin was unstable and slow), that includes those made by: Helm, (popwin was unstable and slow). That includes popups made by: Helm, vc-annotate,
vc-annotate, quickrun, neotree, \*messages\*, org-mode--and others. quickrun, neotree, \*messages\*, org-mode--and others.
* **Ex compatibility**: I've given quite a few plugins an Ex interface. For instance, * **Ex compatibility**: I've given quite a few plugins an Ex interface. For instance, `:t
`:t [ARGS]` and `:tcd` for tmux, `:ag [KEYWORDS]` for helm-ag, and `:align [REGEXP]` [ARGS]` and `:tcd` for tmux, `:ag [KEYWORDS]` for helm-ag, and `:align [REGEXP]` for
for align-regexp. See [private/my-commands.el] for more. align-regexp. See [private/my-commands.el] for more.
* **Incremental highlighting for `:g[lobal]`**: evil's stock global command does not * **Incremental highlighting for `:g[lobal]`**: evil's stock global command does not do
do this (`:align` will also highlight matches). this (`:align` will also highlight matches).
* **A multiple cursor implementation using iedit**: I could never get [evil-mc] working, * **A multiple cursor implementation using iedit**: I could never get [evil-mc] working,
and [multiple-cursors] doesn't play nice with evil-mode, so I wrote [evil-multiedit]. and [multiple-cursors] doesn't play nice with evil-mode, so I wrote [evil-multiedit]. To
To use it, hop into visual mode, select a region and press <kbd>S-r</kbd> (shift-R). use it, hop into visual mode, select a region and press <kbd>S-r</kbd> (shift-R). Your
Your edits will apply to all highlighted regions. To limit iedit's scope: while in edits will apply to all highlighted regions. To limit iedit's scope: while in iedit mode
iedit mode go into visual, select a range and press <kbd>SPC</kbd>. go into visual, select a range and press <kbd>SPC</kbd>.
* **Rudimentary support for extra =expand(...) symbols in evil-ex**: this includes * **Rudimentary support for extra =expand(...) symbols in evil-ex**: this includes
`%:[pdert]`, which can be used with ex commands like `:e`, `:w`, or in the expression `%:[pdert]`, which can be used with ex commands like `:e`, `:w`, or in the expression
register. This *could* be truer to vim, but I haven't gotten around to it. register. This *could* be truer to vim, but I haven't gotten around to it.
* **Vim-esque Omni-completion commands**: I've implemented most of the common * **Vim-esque Omni-completion commands**: I've implemented most of the common
omni-completion shortcuts: omni-completion shortcuts:
``` ```
C-x C-l 'narf/company-whole-lines C-x C-l 'narf/company-whole-lines
C-x C-k 'narf/company-dict-or-keywords C-x C-k 'narf/company-dict-or-keywords
C-x C-f 'company-files C-x C-f 'company-files
C-x C-] 'company-tags C-x C-] 'company-tags
C-x s 'company-ispell C-x s 'company-ispell
C-x C-s 'company-yasnippet C-x C-s 'company-yasnippet
C-x C-o 'company-semantic C-x C-o 'company-semantic
C-x C-n 'company-dabbrev-code C-x C-n 'company-dabbrev-code
C-x C-p (lambda (interactive) C-x C-p (lambda (interactive)
(let ((company-selection-wrap-around t)) (let ((company-selection-wrap-around t))
(call-interactively 'company-dabbrev-code) (call-interactively 'company-dabbrev-code)
(company-select-previous-or-abort)))) (company-select-previous-or-abort))))
``` ```
* **Popup REPLs**: currently supports python (ipython), ruby (pry), php (boris), * **Popup REPLs**: currently supports python (ipython), ruby (pry), php (boris), elisp
elisp (ielm), lua, js (nodejs), and the shell. More support later, hopefully for go (ielm), lua, js (nodejs), haskell, and the shell. More support later, hopefully for go
and rust. and rust.
* **Yasnippet + auto-insert = file-templates with editable fields**: _and_ it works with * **Yasnippet + auto-insert = file-templates with editable fields**: _and_ it works with
evil-mode! See [core/core-file-templates.el](core/core-file-templates.el) for evil-mode! See [core/core-file-templates.el](core/core-file-templates.el) for
configuration details. configuration details.
* **Tab emulation with Workgroups2**: Workgroups2 will display the tabs in the * **Tab emulation with Workgroups2**: Workgroups2 will display the tabs in the minibuffer
minibuffer when you press <kbd>⌘-S-T</kbd>, use `:tabs` or move between "tabs". `gt` when you press <kbd>⌘-S-T</kbd> (or `:tabs`). `gt` and `gT` work as well.
and `gT` work as well.
![Workgroups2 tabs emulation](/../screenshots/tabs.png?raw=true) ![Workgroups2 tabs emulation](/../screenshots/tabs.png?raw=true)
⌘-1 - ⌘-9 keybindings work as well. ⌘-1 - ⌘-9 keybindings work as well.
* **Minimalistic mapping macro**: I liked how concise mapping keys in viml was. I * **Minimalistic mapping macro**: I liked how concise mapping keys in viml was. I
brought a little of that to Emacs by defining `map!`, a macro for defining keybindings brought a little of that to Emacs by defining `map!`, a macro for defining keybindings
in as little space as possible. [See my bindings](private/my-bindings.el) for an in as little space as possible. [See my bindings](private/my-bindings.el) for an
example. example.
* **Modeline improvements** * **Modeline improvements**
* **evil-search/iedit/evil-substitute mode-line integration**: I better integrated * **evil-search/iedit/evil-substitute mode-line integration**: I better integrated
Anzu, evil-search, evil-substitute (e.g. `%s/foo/bar`) and Anzu, evil-search, evil-substitute (e.g. `%s/foo/bar`) and
[evil-multiedit](https://github.com/hlissner/evil-multiedit) into the mode-line. [evil-multiedit](https://github.com/hlissner/evil-multiedit) into the mode-line.
![matches count in mode-line](/../screenshots/search.png?raw=true) ![matches count in mode-line](/../screenshots/search.png?raw=true)
![substitutions count in mode-line](/../screenshots/subst.png?raw=true) ![substitutions count in mode-line](/../screenshots/subst.png?raw=true)
* **Macro-recording indicator**: * **Macro-recording indicator**:
![macro indicator in modeline](/../screenshots/macro.png?raw=true) ![macro indicator in modeline](/../screenshots/macro.png?raw=true)
* **Show (py|rb)env version in mode-line**: see `define-env-command!` on how to set it up * **Show (py|rb)env version in mode-line**: see `define-env-command!` on how to set it up
for other modes. It only displays in their respective major-modes. for other modes. It only displays in their respective major-modes.
![py/rb version in modeline](/../screenshots/version.png?raw=true) ![py/rb version in modeline](/../screenshots/version.png?raw=true)
* **Org-mode**: I do a lot with org-mode. Notetaking, CRM, GTD, blue sky thinking, you
name it. Inline LaTeX rendering and images, org popups tamed by shackle, go/http babel
support, a custom attachment system -- there is too much to say. Check out the various
org modules for details.
## What about Windo- ## What about Windo-

View file

@ -1,8 +1,8 @@
;;; init.el ;;; init.el
;; ;;
;; Author: Henrik Lissner <henrik@lissner.net> ;; Author: Henrik Lissner <henrik@lissner.net>
;; URL: https://github.com/hlissner/emacs.d ;; URL: https://github.com/hlissner/.emacs.d
;; Version: 0.9.2 ;; Version: 0.9.5
;; ;;
;;; Are you pondering what I'm pondering, Pinky? ;;; Are you pondering what I'm pondering, Pinky?
;; ;;