[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 4d4f726 4/8: README.md: update
From: |
Oleh Krehel |
Subject: |
[elpa] master 4d4f726 4/8: README.md: update |
Date: |
Fri, 30 Jan 2015 16:18:50 +0000 |
branch: master
commit 4d4f726869de59cec357b10c2f1f50d7d7c45b41
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>
README.md: update
---
README.md | 101 +++++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 65 insertions(+), 36 deletions(-)
diff --git a/README.md b/README.md
index f7ddd40..24c8cf7 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+[![Build
Status](https://travis-ci.org/abo-abo/hydra.svg?branch=master)](https://travis-ci.org/abo-abo/hydra)
+
This is a package for GNU Emacs that can be used to tie related
commands into a family of short bindings with a common prefix - a
Hydra.
@@ -12,17 +14,57 @@ Hydra, will still serve his orignal purpose, calling his
proper
command. This makes the Hydra very seamless, it's like a minor mode
that disables itself auto-magically.
-Here's how I use the examples bundled with Hydra:
+Here's how to quickly bind the examples bundled with Hydra:
+
+```cl
+(require 'hydra-examples)
+(hydra-create "C-M-y" hydra-example-move-window-splitter)
+(hydra-create "M-g" hydra-example-goto-error)
+(hydra-create "<f2>" hydra-example-text-scale)
+```
+
+But it's much better to just take the examples as a template and write
+down everything explicitly:
+
+```cl
+(defhydra hydra-zoom (global-map "<f2>")
+ "zoom"
+ ("g" text-scale-increase "in")
+ ("l" text-scale-decrease "out"))
+```
+
+With the example above, you can e.g.:
+
+```cl
+(key-chord-define-global "tt" 'hydra-zoom/body)
+```
+
+In fact, since `defhydra` returns the body symbol, you can even write
+it like this:
- (require 'hydra-examples)
- (hydra-create "C-M-y" hydra-example-move-window-splitter)
- (hydra-create "M-g" hydra-example-goto-error)
+```cl
+(key-chord-define-global
+ "tt"
+ (defhydra hydra-zoom (global-map "<f2>")
+ "zoom"
+ ("g" text-scale-increase "in")
+ ("l" text-scale-decrease "out")))
+```
-You can expand the examples in-place, it still looks elegant:
+If you like key chords so much that you don't want to touch the global map at
all, you can e.g.:
- (hydra-create "<f2>"
- '(("g" text-scale-increase)
- ("l" text-scale-decrease)))
+```
+(key-chord-define-global
+ "hh"
+ (defhydra hydra-error ()
+ "goto-error"
+ ("h" first-error "first")
+ ("j" next-error "next")
+ ("k" previous-error "prev")))
+```
+
+You can also substitute `global-map` with any other keymap, like
+`c++-mode-map` or `yas-minor-mode-map`.
See the [introductory blog
post](http://oremacs.com/2015/01/20/introducing-hydra/) for more information.
@@ -30,29 +72,15 @@ See the [introductory blog
post](http://oremacs.com/2015/01/20/introducing-hydra
## Using Hydra to define bindings other than global ones
-You can use the third optional argument of `hydra-create` for this (it
defaults to `global-set-key`).
Here's an example:
```cl
-(hydra-create "C-z"
- '(("l" forward-char)
- ("h" backward-char)
- ("j" next-line)
- ("k" previous-line))
- (lambda (key command)
- (define-key lispy-mode-map key command)))
-```
-
-For this simple case, there's even a shortcut: if you give a keymap as the
third argument,
-the lambda will be generated for you:
-
-```cl
-(hydra-create "C-z"
- '(("l" forward-char)
- ("h" backward-char)
- ("j" next-line)
- ("k" previous-line))
- lispy-mode-map)
+(defhydra lispy-vi (lispy-mode-map "C-z")
+ "vi"
+ ("l" forward-char)
+ ("h" backward-char)
+ ("j" next-line)
+ ("k" previous-line))
```
## Can Hydras can be helpful?
@@ -63,15 +91,16 @@ They can, if
(setq hydra-is-helpful t)
```
-In that case, you'll get a hint in the echo area consisting of current Hydra's
heads.
-You can even add comments to the heads like this:
+This is the default setting. In this case, you'll get a hint in the
+echo area consisting of current Hydra's base comment and heads. You
+can even add comments to the heads like this:
```
-(defvar hydra-example-text-scale
- '(("g" text-scale-increase "zoom in")
- ("l" text-scale-decrease "zoom out"))
- "A two-headed hydra for text scale manipulation.")
+(defhydra hydra-zoom (global-map "<f2>")
+ "zoom"
+ ("g" text-scale-increase "in")
+ ("l" text-scale-decrease "out"))
```
-With this, you'll see `hydra: [g]: zoom in, [l]: zoom out.` in your
-echo area, once the zoom Hydra becomes active.
+With this, you'll see `zoom: [g]: in, [l]: out.` in your echo area,
+once the zoom Hydra becomes active.
- [elpa] master updated (2452ff7 -> 84c0e7b), Oleh Krehel, 2015/01/30
- [elpa] master b5615dc 3/8: hydra-examples.el: Update commentary, Oleh Krehel, 2015/01/30
- [elpa] master bb9f582 5/8: When calling `prefix/nil', make sure there's something to disable, Oleh Krehel, 2015/01/30
- [elpa] master 785f837 6/8: hydra.el (defhydra): Use `clear-temporary-overlay-map', Oleh Krehel, 2015/01/30
- [elpa] master 659694c 1/8: hydra.el (defhydra): new macro to create hydras., Oleh Krehel, 2015/01/30
- [elpa] master 06b63f1 7/8: Bump version, Oleh Krehel, 2015/01/30
- [elpa] master 2ff0671 2/8: Add automated testing, Oleh Krehel, 2015/01/30
- [elpa] master 4d4f726 4/8: README.md: update,
Oleh Krehel <=
- [elpa] master 84c0e7b 8/8: Merge commit '06b63f1d718d12d15aaf9459b492944203764d2f' from hydra, Oleh Krehel, 2015/01/30