v0.9.5 bump
This commit is contained in:
parent
fa897fc9d8
commit
d4b8361223
2 changed files with 91 additions and 83 deletions
170
README.md
170
README.md
|
@ -1,5 +1,4 @@
|
||||||
# NARF Emacs
|
# NARF Emacs
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
> 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.
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
⌘-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.
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||
* **Macro-recording indicator**:
|
* **Macro-recording indicator**:
|
||||||
|
|
||||||

|

|
||||||
* **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.
|
||||||
|
|
||||||

|

|
||||||
|
* **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-
|
||||||
|
|
4
init.el
4
init.el
|
@ -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?
|
||||||
;;
|
;;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue