[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 5eaf787 078/272: doc/ivy.org: Improve the Texinfo/HTML exp
From: |
Oleh Krehel |
Subject: |
[elpa] master 5eaf787 078/272: doc/ivy.org: Improve the Texinfo/HTML export structure |
Date: |
Mon, 25 Apr 2016 10:13:17 +0000 |
branch: master
commit 5eaf78780e70e9328c8802ebb4c94841f9c8c500
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>
doc/ivy.org: Improve the Texinfo/HTML export structure
* doc/ivy-ox.el: Store the settings for org-mode export to HTML and
Texinfo.
* doc/ivy.texi: Update.
* doc/style.css: Remove. Rely on theme-readtheorg.setup instead.
The HTML file shouldn't be in this repository to avoid bloat, instead
it's in the gh-pages branch at
https://github.com/abo-abo/swiper/tree/gh-pages.
---
doc/ivy-ox.el | 147 ++++++++++++++++++++++++++++++++++++++++++++
doc/ivy.org | 189 +++++++++++++++++++++++++++++++++++----------------------
doc/ivy.texi | 108 ++++++++++++++-------------------
doc/style.css | 107 --------------------------------
4 files changed, 311 insertions(+), 240 deletions(-)
diff --git a/doc/ivy-ox.el b/doc/ivy-ox.el
new file mode 100644
index 0000000..cb0d2fc
--- /dev/null
+++ b/doc/ivy-ox.el
@@ -0,0 +1,147 @@
+;;; ivy-ox.el --- org-export settings for Ivy
+
+;; Copyright (C) 2015 Free Software Foundation, Inc.
+
+;; Author: Oleh Krehel
+
+;; This file is part of GNU Emacs.
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;* ox-texinfo
+(require 'ox-texinfo)
+(org-export-define-backend 'texinfo
+ '((bold . org-texinfo-bold)
+ (center-block . org-texinfo-center-block)
+ (clock . org-texinfo-clock)
+ (code . org-texinfo-kbd)
+ (drawer . org-texinfo-drawer)
+ (dynamic-block . org-texinfo-dynamic-block)
+ (entity . org-texinfo-entity)
+ (example-block . org-texinfo-example-block)
+ (export-block . org-texinfo-export-block)
+ (export-snippet . org-texinfo-export-snippet)
+ (fixed-width . org-texinfo-fixed-width)
+ (footnote-definition . org-texinfo-footnote-definition)
+ (footnote-reference . org-texinfo-footnote-reference)
+ (headline . org-texinfo-headline)
+ (inline-src-block . org-texinfo-inline-src-block)
+ (inlinetask . org-texinfo-inlinetask)
+ (italic . org-texinfo-italic)
+ (item . org-texinfo-item)
+ (keyword . org-texinfo-keyword)
+ (line-break . org-texinfo-line-break)
+ (link . org-texinfo-link)
+ (node-property . org-texinfo-node-property)
+ (paragraph . org-texinfo-paragraph)
+ (plain-list . org-texinfo-plain-list)
+ (plain-text . org-texinfo-plain-text)
+ (planning . org-texinfo-planning)
+ (property-drawer . org-texinfo-property-drawer)
+ (quote-block . org-texinfo-quote-block)
+ (radio-target . org-texinfo-radio-target)
+ (section . org-texinfo-section)
+ (special-block . org-texinfo-special-block)
+ (src-block . org-texinfo-src-block)
+ (statistics-cookie . org-texinfo-statistics-cookie)
+ (subscript . org-texinfo-subscript)
+ (superscript . org-texinfo-superscript)
+ (table . org-texinfo-table)
+ (table-cell . org-texinfo-table-cell)
+ (table-row . org-texinfo-table-row)
+ (target . org-texinfo-target)
+ (template . org-texinfo-template)
+ (timestamp . org-texinfo-timestamp)
+ (verbatim . org-texinfo-code)
+ (verse-block . org-texinfo-verse-block))
+ :filters-alist
+ '((:filter-headline . org-texinfo--filter-section-blank-lines)
+ (:filter-parse-tree . org-texinfo--normalize-headlines)
+ (:filter-section . org-texinfo--filter-section-blank-lines))
+ :menu-entry
+ '(?i "Export to Texinfo"
+ ((?t "As TEXI file" org-texinfo-export-to-texinfo)
+ (?i "As INFO file" org-texinfo-export-to-info)
+ (?o "As INFO file and open"
+ (lambda (a s v b)
+ (if a (org-texinfo-export-to-info t s v b)
+ (org-open-file (org-texinfo-export-to-info nil s v b)))))))
+ :options-alist
+ '((:texinfo-filename "TEXINFO_FILENAME" nil nil t)
+ (:texinfo-class "TEXINFO_CLASS" nil org-texinfo-default-class t)
+ (:texinfo-header "TEXINFO_HEADER" nil nil newline)
+ (:texinfo-post-header "TEXINFO_POST_HEADER" nil nil newline)
+ (:subtitle "SUBTITLE" nil nil parse)
+ (:subauthor "SUBAUTHOR" nil nil newline)
+ (:texinfo-dircat "TEXINFO_DIR_CATEGORY" nil nil t)
+ (:texinfo-dirtitle "TEXINFO_DIR_TITLE" nil nil t)
+ (:texinfo-dirdesc "TEXINFO_DIR_DESC" nil nil t)
+ (:texinfo-printed-title "TEXINFO_PRINTED_TITLE" nil nil t)
+ ;; Other variables.
+ (:texinfo-classes nil nil org-texinfo-classes)
+ (:texinfo-format-headline-function nil nil
org-texinfo-format-headline-function)
+ (:texinfo-node-description-column nil nil
org-texinfo-node-description-column)
+ (:texinfo-active-timestamp-format nil nil
org-texinfo-active-timestamp-format)
+ (:texinfo-inactive-timestamp-format nil nil
org-texinfo-inactive-timestamp-format)
+ (:texinfo-diary-timestamp-format nil nil
org-texinfo-diary-timestamp-format)
+ (:texinfo-link-with-unknown-path-format nil nil
org-texinfo-link-with-unknown-path-format)
+ (:texinfo-tables-verbatim nil nil org-texinfo-tables-verbatim)
+ (:texinfo-table-scientific-notation nil nil
org-texinfo-table-scientific-notation)
+ (:texinfo-def-table-markup nil nil org-texinfo-def-table-markup)
+ (:texinfo-text-markup-alist nil nil org-texinfo-text-markup-alist)
+ (:texinfo-format-drawer-function nil nil
org-texinfo-format-drawer-function)
+ (:texinfo-format-inlinetask-function nil nil
org-texinfo-format-inlinetask-function)))
+
+(defun org-texinfo-kbd (code _contents _info)
+ "Transcode a CODE object from Org to Texinfo."
+ (format "@kbd{%s}" (org-element-property :value code)))
+
+(defun org-texinfo-plain-list (plain-list contents info)
+ "Transcode a PLAIN-LIST element from Org to Texinfo.
+CONTENTS is the contents of the list. INFO is a plist holding
+contextual information."
+ (let* ((attr (org-export-read-attribute :attr_texinfo plain-list))
+ (indic (or (plist-get attr :indic)
+ (plist-get info :texinfo-def-table-markup)))
+ (table-type (plist-get attr :table-type))
+ (type (org-element-property :type plain-list))
+ (list-type (cond
+ ((eq type 'ordered) "enumerate")
+ ((eq type 'unordered) "itemize")
+ ((member table-type '("ftable" "vtable")) table-type)
+ (t "table"))))
+ (if (equal list-type "table")
+ (mapconcat (lambda (s)
+ (concat "@subsubheading" s))
+ (split-string (substring-no-properties contents)
"address@hidden" t)
+ "\n")
+ (format "@address@hidden %s"
+ (if (eq type 'descriptive) (concat list-type " " indic)
list-type)
+ contents
+ list-type))))
+
+;;* ox-html
+(require 'ox-html)
+(setq org-html-validation-link nil)
+(setq org-html-postamble nil)
+(setq org-html-text-markup-alist
+ '((bold . "<b>%s</b>")
+ (code . "<kbd>%s</kbd>")
+ (italic . "<i>%s</i>")
+ (strike-through . "<del>%s</del>")
+ (underline . "<span class=\"underline\">%s</span>")
+ (verbatim . "<code>%s</code>")))
+(setq org-html-style-default nil)
+
+(provide 'ivy-ox)
diff --git a/doc/ivy.org b/doc/ivy.org
index 68c045e..b2d5203 100644
--- a/doc/ivy.org
+++ b/doc/ivy.org
@@ -1,40 +1,46 @@
#+TITLE: Ivy User Manual
#+AUTHOR: Oleh Krehel
#+EMAIL: address@hidden
-#+DATE: 2015
#+LANGUAGE: en
#+TEXINFO_DIR_CATEGORY: Emacs
#+TEXINFO_DIR_TITLE: Ivy: (ivy).
#+TEXINFO_DIR_DESC: Using Ivy for completion.
-#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="style.css"/>
+#+SETUPFILE: ~/git/org-html-themes/setup/theme-readtheorg.setup
+#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="kbd-style.css"/>
+#+EXPORT_FILE_NAME: index.html
#+OPTIONS: H:6 num:6 toc:4
#+STARTUP: indent
* Macros
:noexport:
#+MACRO: defopt #+TEXINFO: @defopt $1
#+MACRO: endopt #+TEXINFO: @end defopt
+* Setup
:noexport:
+#+BEGIN_SRC elisp :exports results :results silent
+(add-to-list 'load-path default-directory)
+(require 'ivy-ox)
+#+END_SRC
* Copying
:PROPERTIES:
:COPYING: t
+:CUSTOM_ID: copying
:END:
-
-#+BEGIN_TEXINFO
address@hidden
+#+TEXINFO: @ifnottex
Ivy manual, version 0.7.0
Ivy is an interactive interface for completion in Emacs. Emacs uses
completion mechanism in a variety of contexts: code, menus, commands,
variables, functions, etc. Completion entails listing, sorting,
filtering, previewing, and applying actions on selected items. When
-active, @code{ivy-mode} completes the selection process by narrowing
+active, =ivy-mode= completes the selection process by narrowing
available choices while previewing in the minibuffer. Selecting the
final candidate is either through simple keyboard character inputs or
-through powerful regular expressions. @end ifnottex
+through powerful regular expressions.
+#+TEXINFO: @end ifnottex
-Copyright @copyright{} 2015 Free Software Foundation, Inc.
+Copyright (C) 2015 Free Software Foundation, Inc.
address@hidden
+#+BEGIN_QUOTE
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
@@ -44,10 +50,13 @@ is included in the section entitled ``GNU Free
Documentation License.''
(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
modify this GNU manual.''
address@hidden quotation
-#+END_TEXINFO
+#+END_QUOTE
+#+HTML: <a
href="https://github.com/abo-abo/swiper/blob/master/doc/ivy.org";>This manual
source</a>
* Introduction
+:PROPERTIES:
+:CUSTOM_ID: introduction
+:END:
Ivy is for quick and easy selection from a list. When Emacs prompts
for a string from a list of several possible choices, Ivy springs into
action to assist in narrowing and picking the right string from a vast
@@ -56,17 +65,13 @@ number of choices.
Ivy strives for minimalism, simplicity, customizability and
discoverability.
-#+BEGIN_TEXINFO
address@hidden Minimalism
-#+END_TEXINFO
+- Minimalism ::
Uncluttered minibuffer is minimalism. Ivy shows the completion
defaults, the number of matches, and 10 candidate matches below the
input line. Customize =ivy-length= to adjust the number of candidate
matches displayed in the minibuffer.
-#+BEGIN_TEXINFO
address@hidden Simplicity
-#+END_TEXINFO
+- Simplicity ::
Simplicity is about Ivy's behavior in the minibuffer. It is also about
the code interface to extend Ivy's functionality. The minibuffer area
behaves as close to =fundamental-mode= as possible. ~SPC~ inserts a
@@ -75,9 +80,7 @@ space, for example, instead of being bound to the more complex
variables; avoids needless complications with branch-introducing
custom macros.
-#+BEGIN_TEXINFO
address@hidden Customizability
-#+END_TEXINFO
+- Customizability ::
Customizability is about being able to use different methods and
interfaces of completion to tailor the selection process. For example,
adding a custom display function that points to a selected candidate
@@ -88,9 +91,7 @@ after the candidate function is selected. ~RET~ uses
jumps to that function's definition in the code. The ~M-o~ prefix can
be uniformly used with characters like ~d~ to group similar actions.
-#+BEGIN_TEXINFO
address@hidden Discoverability
-#+END_TEXINFO
+- Discoverability ::
Ivy displays easily discoverable commands through the hydra facility.
~C-o~ in the minibuffer displays a hydra menu. It opens up within an
expanded minibuffer area. Each menu item comes with short
@@ -101,11 +102,17 @@ discoverability minimizes exiting Ivy interface for
documentation
look-ups.
* Installation
+:PROPERTIES:
+:CUSTOM_ID: installation
+:END:
Install Ivy automatically through Emacs's package manager, or manually
from Ivy's development repository.
** Installing from Emacs Package Manager
+:PROPERTIES:
+:CUSTOM_ID: installing-from-emacs-package-manager
+:END:
~M-x~ =package-install= ~RET~ =swiper= ~RET~
@@ -129,6 +136,9 @@ After this do ~M-x~ =package-refresh-contents= ~RET~,
followed by
For package manager details, see [[info:emacs#Packages]].
** Installing from the Git repository
+:PROPERTIES:
+:CUSTOM_ID: installing-from-the-git-repository
+:END:
Why install from Git?
@@ -157,8 +167,10 @@ make
#+end_src
* Getting started
-
-First enable Ivy completion everywhere:
+:PROPERTIES:
+:CUSTOM_ID: getting-started
+:END:
+First, enable Ivy completion everywhere:
#+begin_src elisp
(ivy-mode 1)
@@ -166,6 +178,9 @@ First enable Ivy completion everywhere:
Note: =ivy-mode= can be toggled on and off with ~M-x~ =ivy-mode=.
** Basic customization
+:PROPERTIES:
+:CUSTOM_ID: basic-customization
+:END:
Here are some basic settings particularly useful for new Ivy
users:
#+begin_src elisp
@@ -179,12 +194,16 @@ For additional customizations, refer to =M-x
describe-variable=
documentation.
* Key bindings
+:PROPERTIES:
+:CUSTOM_ID: key-bindings
+:END:
** Global key bindings
+:PROPERTIES:
+:CUSTOM_ID: global-key-bindings
+:END:
+The recommended key bindings are:
-Recommended key bindings are:
-#+BEGIN_TEXINFO
address@hidden Ivy-based interface to standard commands
-#+END_TEXINFO
+- Ivy-based interface to standard commands ::
#+begin_src elisp
(global-set-key (kbd "C-s") 'swiper)
(global-set-key (kbd "M-x") 'counsel-M-x)
@@ -195,9 +214,8 @@ Recommended key bindings are:
(global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol)
(global-set-key (kbd "<f2> u") 'counsel-unicode-char)
#+end_src
-#+BEGIN_TEXINFO
address@hidden Ivy-based interface to shell and system tools
-#+END_TEXINFO
+
+- Ivy-based interface to shell and system tools ::
#+begin_src elisp
(global-set-key (kbd "C-c g") 'counsel-git)
(global-set-key (kbd "C-c j") 'counsel-git-grep)
@@ -205,15 +223,17 @@ Recommended key bindings are:
(global-set-key (kbd "C-x l") 'counsel-locate)
(global-set-key (kbd "C-S-o") 'counsel-rhythmbox)
#+end_src
-#+BEGIN_TEXINFO
address@hidden Ivy-resume and other commands
-#+END_TEXINFO
+
+- Ivy-resume and other commands ::
=ivy-resume= resumes the last Ivy-based completion.
#+begin_src elisp
(global-set-key (kbd "C-c C-r") 'ivy-resume)
#+end_src
** Minibuffer key bindings
+:PROPERTIES:
+:CUSTOM_ID: minibuffer-key-bindings
+:END:
Ivy includes several minibuffer bindings, which are defined in the
=ivy-minibuffer-map= keymap variable. The most frequently used ones
@@ -224,6 +244,9 @@ are described here.
under their respective commands.
*** Key bindings for navigation
+:PROPERTIES:
+:CUSTOM_ID: key-bindings-for-navigation
+:END:
- ~C-n~ (=ivy-next-line=) selects the next candidate
- ~C-p~ (=ivy-previous-line=) selects the previous candidate
@@ -246,6 +269,9 @@ scroll size for ~C-v~ and ~M-v~.
{{{endopt}}}
*** Key bindings for single selection, action, then exit minibuffer
+:PROPERTIES:
+:CUSTOM_ID: key-bindings-for-single-selection-action-then-exit-minibuffer
+:END:
Ivy can offer several actions from which to choose which action to
run. This "calling an action" operates on the selected candidate. For
@@ -285,14 +311,14 @@ current input to create a new directory with
=dired-create-directory=.
an action on the /currently selected/ candidate and calling an action
on the /current input/.
-#+BEGIN_TEXINFO
-Invoking avy completion with @kbd{C-'} (@code{ivy-avy}).
-#+END_TEXINFO
-~C-'~ uses avy's visible jump mechanism, which can further reduce
-Ivy's line-by-line scrolling that requires multiple ~C-n~ or ~C-p~
-keystrokes.
+~C-'~ (=ivy-avy=) uses avy's visible jump mechanism, which can further
+reduce Ivy's line-by-line scrolling that requires multiple ~C-n~ or
+~C-p~ keystrokes.
*** Key bindings for multiple selections and actions, keep minibuffer open
+:PROPERTIES:
+:CUSTOM_ID:
key-bindings-for-multiple-selections-and-actions-keep-minibuffer-open
+:END:
For repeatedly applying multiple actions or acting on multiple
candidates, Ivy does not close the minibuffer between commands. It
@@ -329,6 +355,9 @@ the same as above except that it moves through the list in
the other
direction.
*** Key bindings that alter the minibuffer input
+:PROPERTIES:
+:CUSTOM_ID: key-bindings-that-alter-the-minibuffer-input
+:END:
~M-n~ (=ivy-next-history-element=) and ~M-p~
(=ivy-previous-history-element=) cycle through the Ivy command
@@ -355,11 +384,17 @@ completion, the selected candidate string is inserted
into the
minibuffer.
*** Other key bindings
+:PROPERTIES:
+:CUSTOM_ID: other-key-bindings
+:END:
~M-w~ (=ivy-kill-ring-save=) copies selected candidates to the kill
ring; when the region is active, copies active region.
*** Hydra in the minibuffer
+:PROPERTIES:
+:CUSTOM_ID: hydra-in-the-minibuffer
+:END:
~C-o~ (=hydra-ivy/body=) invokes Hydra menus with key shortcuts.
@@ -375,6 +410,9 @@ bindings:
Minibuffer editing is disabled when Hydra is active.
*** Saving the current completion session to a buffer
+:PROPERTIES:
+:CUSTOM_ID: saving-the-current-completion-session-to-a-buffer
+:END:
~C-c C-o~ (=ivy-occur=) saves the current candidates to a new buffer;
the list is active in the new buffer.
@@ -389,6 +427,9 @@ descriptive names, for example: =*ivy-occur
counsel-describe-variable
"function$*=.
* Completion styles
+:PROPERTIES:
+:CUSTOM_ID: completion-styles
+:END:
Ivy's completion functions rely on the highly configurable regex
builder.
@@ -414,6 +455,9 @@ flexibility, Ivy operates within a consistent and uniform
interface.
The main regex-builders currently in Ivy are:
** ivy--regex-plus
+:PROPERTIES:
+:CUSTOM_ID: ivy--regex-plus
+:END:
=ivy--regex-plus= is Ivy's default completion method.
@@ -421,54 +465,57 @@ The main regex-builders currently in Ivy are:
rebuilding it into a regex.
As the search string is typed in Ivy's minibuffer, it is transformed
-into proper regex syntax. If the string is "for example", it is
+into proper regex syntax. If the string is ="for example"=, it is
transformed into
-#+BEGIN_EXAMPLE
+#+begin_src elisp
"\\(for\\).*\\(example\\)"
-#+END_EXAMPLE
+#+end_src
-which in regex terminology matches "for" followed by a wild card and
-then "example". Note how Ivy uses the space character to build
-wild cards. For literal white space matching in Ivy, use an extra space:
-to match one space type two spaces, to match two spaces type three
+which in regex terminology matches ="for"= followed by a wild card and
+then ="example"=. Note how Ivy uses the space character to build wild
+cards. For literal white space matching in Ivy, use an extra space: to
+match one space type two spaces, to match two spaces type three
spaces, and so on.
As Ivy transforms typed characters into regex strings, it provides an
intuitive feedback through font highlights.
-Ivy supports regexp negation with "!". For example, "define key ! ivy
-quit" first selects everything matching "define.*key", then removes
-everything matching "ivy", and finally removes everything matching
-"quit". What remains is the final result set of the negation regexp.
-
-#+BEGIN_EXAMPLE
-Standard regexp identifiers work:
+Ivy supports regexp negation with ="!"=.
+For example, ="define key ! ivy quit"= first selects everything
+matching ="define.*key"=, then removes everything matching ="ivy"=,
+and finally removes everything matching ="quit"=. What remains is the
+final result set of the negation regexp.
-"^", "$", "\b" or "[a-z]"
-#+END_EXAMPLE
-
-Since Ivy treats minibuffer input as a regexp, standard regexp
-identifiers work as usual. The exceptions are spaces, which
-translate to ".*", and "!" that signal the beginning of a negation
-group.
+Since Ivy treats minibuffer input as a regexp, the standard regexp
+identifiers work: ="^"=, ="$"=, ="\b"= or ="[a-z]"=. The exceptions
+are spaces, which translate to =".*"=, and ="!"= that signal the
+beginning of a negation group.
** ivy--regex-ignore-order
+:PROPERTIES:
+:CUSTOM_ID: ivy--regex-ignore-order
+:END:
=ivy--regex-ignore-order= ignores the order of regexp tokens when
-searching for matching candidates. For instance, the input "for
-example" will match "example test for". Otherwise =ivy--regex-plus=
-normal behavior is to honor the order of regexp tokens.
+searching for matching candidates. For instance, the input
+="for example"= will match ="example test for"=.
** ivy--regex-fuzzy
+:PROPERTIES:
+:CUSTOM_ID: ivy--regex-fuzzy
+:END:
=ivy--regex-fuzzy= splits each character with a wild card. Searching
-for "for" returns all "f.*o.*r" matches, resulting in a large number
-of hits. Yet some searches need these extra hits. Ivy sorts such
-large lists using =flx= package's scoring mechanism, if it's
+for ="for"= returns all ="f.*o.*r"= matches, resulting in a large
+number of hits. Yet some searches need these extra hits. Ivy sorts
+such large lists using =flx= package's scoring mechanism, if it's
installed.
* Variable Index
-#+BEGIN_TEXINFO
address@hidden vr
-#+END_TEXINFO
+:PROPERTIES:
+:INDEX: vr
+:CUSTOM_ID: variable-index
+:END:
+
+
diff --git a/doc/ivy.texi b/doc/ivy.texi
index b06c68c..42b8a91 100644
--- a/doc/ivy.texi
+++ b/doc/ivy.texi
@@ -17,9 +17,10 @@ filtering, previewing, and applying actions on selected
items. When
active, @code{ivy-mode} completes the selection process by narrowing
available choices while previewing in the minibuffer. Selecting the
final candidate is either through simple keyboard character inputs or
-through powerful regular expressions. @end ifnottex
+through powerful regular expressions.
address@hidden ifnottex
-Copyright @copyright{} 2015 Free Software Foundation, Inc.
+Copyright (C) 2015 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -84,9 +85,9 @@ Key bindings
Minibuffer key bindings
* Key bindings for navigation::
-* Key bindings for single selection, action, then exit minibuffer: Key
bindings for single selection action then exit minibuffer.
-* Key bindings for multiple selections and actions, keep minibuffer open: Key
bindings for multiple selections and actions keep minibuffer open.
-* Key bindings that alter minibuffer input::
+* Key bindings for single selection, action, then exit minibuffer: Key
bindings for single selection action then exit minibuffer.
+* Key bindings for multiple selections and actions, keep minibuffer open: Key
bindings for multiple selections and actions keep minibuffer open.
+* Key bindings that alter the minibuffer input::
* Other key bindings::
* Hydra in the minibuffer::
* Saving the current completion session to a buffer::
@@ -168,7 +169,6 @@ command.
For current hourly builds, use the MELPA archives. See the code below
for adding MELPA to the list of package archives:
-
@lisp
(require 'package)
(add-to-list 'package-archives
@@ -197,21 +197,18 @@ Contribute to Ivy's development; send patches; pull
requests
@strong{Configuration steps}
First clone the Swiper repository:
-
@example
cd ~/git && git clone https://github.com/abo-abo/swiper
cd swiper && make compile
@end example
Then add this to Emacs init:
-
@lisp
(add-to-list 'load-path "~/git/swiper/")
(require 'ivy)
@end lisp
To update the code:
-
@example
git pull
make
@@ -220,8 +217,7 @@ make
@node Getting started
@chapter Getting started
-First enable Ivy completion everywhere:
-
+First, enable Ivy completion everywhere:
@lisp
(ivy-mode 1)
@@ -237,7 +233,6 @@ Note: @code{ivy-mode} can be toggled on and off with
@kbd{M-x} @code{ivy-mode}.
Here are some basic settings particularly useful for new Ivy
users:
-
@lisp
(setq ivy-use-virtual-buffers t)
(setq ivy-height 10)
@@ -259,9 +254,9 @@ documentation.
@node Global key bindings
@section Global key bindings
-Recommended key bindings are:
address@hidden Ivy-based interface to standard commands
+The recommended key bindings are:
address@hidden Ivy-based interface to standard commands
@lisp
(global-set-key (kbd "C-s") 'swiper)
(global-set-key (kbd "M-x") 'counsel-M-x)
@@ -272,8 +267,8 @@ Recommended key bindings are:
(global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol)
(global-set-key (kbd "<f2> u") 'counsel-unicode-char)
@end lisp
address@hidden Ivy-based interface to shell and system tools
address@hidden Ivy-based interface to shell and system tools
@lisp
(global-set-key (kbd "C-c g") 'counsel-git)
(global-set-key (kbd "C-c j") 'counsel-git-grep)
@@ -281,9 +276,9 @@ Recommended key bindings are:
(global-set-key (kbd "C-x l") 'counsel-locate)
(global-set-key (kbd "C-S-o") 'counsel-rhythmbox)
@end lisp
+
@subsubheading Ivy-resume and other commands
@code{ivy-resume} resumes the last Ivy-based completion.
-
@lisp
(global-set-key (kbd "C-c C-r") 'ivy-resume)
@end lisp
@@ -300,9 +295,9 @@ are described here.
under their respective commands.
@menu
* Key bindings for navigation::
-* Key bindings for single selection, action, then exit minibuffer: Key
bindings for single selection action then exit minibuffer.
-* Key bindings for multiple selections and actions, keep minibuffer open: Key
bindings for multiple selections and actions keep minibuffer open.
-* Key bindings that alter minibuffer input::
+* Key bindings for single selection, action, then exit minibuffer: Key
bindings for single selection action then exit minibuffer.
+* Key bindings for multiple selections and actions, keep minibuffer open: Key
bindings for multiple selections and actions keep minibuffer open.
+* Key bindings that alter the minibuffer input::
* Other key bindings::
* Hydra in the minibuffer::
* Saving the current completion session to a buffer::
@@ -369,9 +364,7 @@ when applying multiple actions. Multiple actions and
multiple
selections as covered in the next section of this manual.
@kbd{TAB} (@code{ivy-partial-or-done}) attempts partial completion, extending
-current input as much as possible.
-
address@hidden TAB} is the same as @kbd{C-j}.
+current input as much as possible. @kbd{TAB TAB} is the same as @kbd{C-j}.
@kbd{C-M-j} (@code{ivy-immediate-done}) is useful when there is no match for
the given input. Or there is an incorrect partial match. @kbd{C-M-j} with
@@ -382,10 +375,9 @@ current input to create a new directory with
@code{dired-create-directory}.
an action on the @emph{currently selected} candidate and calling an action
on the @emph{current input}.
-Invoking avy completion with @kbd{C-'} (@code{ivy-avy}).
address@hidden uses avy's visible jump mechanism, which can further reduce
-Ivy's line-by-line scrolling that requires multiple @kbd{C-n} or @kbd{C-p}
-keystrokes.
address@hidden'} (@code{ivy-avy}) uses avy's visible jump mechanism, which can
further
+reduce Ivy's line-by-line scrolling that requires multiple @kbd{C-n} or
address@hidden keystrokes.
@node Key bindings for multiple selections and actions keep minibuffer open
@subsection Key bindings for multiple selections and actions, keep minibuffer
open
@@ -424,8 +416,8 @@ action on each successive element of the list.
the same as above except that it moves through the list in the other
direction.
address@hidden Key bindings that alter minibuffer input
address@hidden Key bindings that alter minibuffer input
address@hidden Key bindings that alter the minibuffer input
address@hidden Key bindings that alter the minibuffer input
@kbd{M-n} (@code{ivy-next-history-element}) and @kbd{M-p}
(@code{ivy-previous-history-element}) cycle through the Ivy command
@@ -438,9 +430,9 @@ minibuffer. Useful for copying and renaming files, for
example: @kbd{M-i}
to insert the original file name string, edit it, and then @kbd{C-m} to
complete the renaming.
address@hidden (@code{ivy-yank-word}) inserts sub-word at point into
minibuffer. This
-is similar to @kbd{C-s C-w} with @code{isearch}. Ivy reserves @kbd{C-w} for
address@hidden
address@hidden (@code{ivy-yank-word}) inserts the sub-word at point into the
+minibuffer. This is similar to @kbd{C-s C-w} with @code{isearch}. Ivy reserves
address@hidden for @code{kill-region}.
@kbd{S-SPC} (@code{ivy-restrict-to-matches}) deletes the current input, and
resets the candidates list to the currently restricted matches. This
@@ -499,7 +491,6 @@ Ivy's completion functions rely on the highly configurable
regex
builder.
The default is:
-
@lisp
(setq ivy-re-builders-alist
'((t . ivy--regex-plus)))
@@ -508,7 +499,6 @@ The default is:
The default @code{ivy--regex-plus} narrowing is always invoked unless
specified otherwise. For example, file name completion may have a
custom completion function:
-
@lisp
(setq ivy-re-builders-alist
'((read-file-name-internal . ivy--regex-fuzzy)
@@ -534,58 +524,52 @@ The main regex-builders currently in Ivy are:
rebuilding it into a regex.
As the search string is typed in Ivy's minibuffer, it is transformed
-into proper regex syntax. If the string is "for example", it is
+into proper regex syntax. If the string is @code{"for example"}, it is
transformed into
address@hidden
address@hidden
"\\(for\\).*\\(example\\)"
address@hidden verbatim
address@hidden lisp
-which in regex terminology matches "for" followed by a wild card and
-then "example". Note how Ivy uses the space character to build
-wild cards. For literal white space matching in Ivy, use an extra space:
-to match one space type two spaces, to match two spaces type three
+which in regex terminology matches @code{"for"} followed by a wild card and
+then @code{"example"}. Note how Ivy uses the space character to build wild
+cards. For literal white space matching in Ivy, use an extra space: to
+match one space type two spaces, to match two spaces type three
spaces, and so on.
As Ivy transforms typed characters into regex strings, it provides an
intuitive feedback through font highlights.
-Ivy supports regexp negation with "!". For example, "define key ! ivy
-quit" first selects everything matching "define.*key", then removes
-everything matching "ivy", and finally removes everything matching
-"quit". What remains is the final result set of the negation regexp.
-
address@hidden
-Standard regexp identifiers work:
-
-"^", "$", "\b" or "[a-z]"
address@hidden verbatim
+Ivy supports regexp negation with @code{"!"}.
+For example, @code{"define key ! ivy quit"} first selects everything
+matching @code{"define.*key"}, then removes everything matching @code{"ivy"},
+and finally removes everything matching @code{"quit"}. What remains is the
+final result set of the negation regexp.
-Since Ivy treats minibuffer input as a regexp, standard regexp
-identifiers work as usual. The exceptions are spaces, which
-translate to ".*", and "!" that signal the beginning of a negation
-group.
+Since Ivy treats minibuffer input as a regexp, the standard regexp
+identifiers work: @code{"^"}, @code{"$"}, @code{"\b"} or @code{"[a-z]"}. The
exceptions
+are spaces, which translate to @code{".*"}, and @code{"!"} that signal the
+beginning of a negation group.
@node ivy--regex-ignore-order
@section ivy--regex-ignore-order
@code{ivy--regex-ignore-order} ignores the order of regexp tokens when
-searching for matching candidates. For instance, the input "for
-example" will match "example test for". Otherwise @code{ivy--regex-plus}
-normal behavior is to honor the order of regexp tokens.
+searching for matching candidates. For instance, the input
address@hidden"for example"} will match @code{"example test for"}.
@node ivy--regex-fuzzy
@section ivy--regex-fuzzy
@code{ivy--regex-fuzzy} splits each character with a wild card. Searching
-for "for" returns all "f.*o.*r" matches, resulting in a large number
-of hits. Yet some searches need these extra hits. Ivy sorts such
-large lists using @code{flx} package's scoring mechanism, if it's
+for @code{"for"} returns all @code{"f.*o.*r"} matches, resulting in a large
+number of hits. Yet some searches need these extra hits. Ivy sorts
+such large lists using @code{flx} package's scoring mechanism, if it's
installed.
@node Variable Index
address@hidden Variable Index
address@hidden Variable Index
@printindex vr
address@hidden
address@hidden
\ No newline at end of file
diff --git a/doc/style.css b/doc/style.css
deleted file mode 100644
index 547b4f0..0000000
--- a/doc/style.css
+++ /dev/null
@@ -1,107 +0,0 @@
-body {
- color: #333;
- background-color: #ffffff;
- margin-left: 1em;
- margin-right: auto;
- font-family: 'Ubuntu Mono', sans-serif;
- max-width: 50em;
-}
-
-body a {
- color: blue;
-}
-
-h2 {
- font-weight: normal;
- text-indent: 0;
- border-radius: 15px;
- background-color: #d6d8ec;
- text-align: left;
- padding: 3px 3px 3px 3px;
-}
-
-h2 a[id^="unnumbered"] {
- background-color: #d6d8ec;
-}
-
-h2 a {
- color: white;
- background-color:#777777;
- font-size:18px;
- border-radius:3px;
- padding: 0px 5px 0px 5px;
-}
-
-kbd {
- padding:0.1em 0.6em;
- border:1px solid #ccc;
- font-size:13px;
- font-weight:bold;
- font-family:monospace;
- background-color:#d6d8ec;
- color:#333;
- -moz-box-shadow:0 1px 0px rgba(0, 0, 0, 0.2),0 0 0 2px #ffffff inset;
- -webkit-box-shadow:0 1px 0px rgba(0, 0, 0, 0.2),0 0 0 2px #ffffff inset;
- box-shadow:0 1px 0px rgba(0, 0, 0, 0.2),0 0 0 2px #ffffff inset;
- -moz-border-radius:3px;
- -webkit-border-radius:3px;
- border-radius:3px;
- display:inline-block;
- margin:0 0.1em;
- text-shadow:0 1px 0 #fff;
- line-height:1.4;
- white-space:nowrap;
-}
-
-body a code {
- color: black;
- border: 1px solid Blue;
- border-radius:3px;
-}
-
-code {
- font-size:13px;
- border: 1px solid Silver;
- background-color: #e3e4ec;
-}
-
-pre {
- border: 1px solid Silver;
- background-color: #eeeeee;
- padding: 3px;
- margin-left: 1em;
-}
-
-cursor {
- color: #fff;
- background-color: #000;
- overflow: hidden;
-}
-
-h3 {
- counter-reset: chapter;
-}
-
-h4 {
- margin-left: auto;
-}
-
-table, td, th {
- border: 0px;
-}
-
-th {
- background-color:#d6d8ec;
-}
-
-tr:nth-child(odd) {
- background-color:#fff;
-}
-tr:nth-child(even) {
- background-color:#d6d8ec;
-}
-
-.region {
- color: #ffffff;
- background-color: #f9b593;
-}
- [elpa] master 3177419 216/272: ivy.el (ivy-sort-functions-alist): Update :type, (continued)
- [elpa] master 3177419 216/272: ivy.el (ivy-sort-functions-alist): Update :type, Oleh Krehel, 2016/04/25
- [elpa] master abf880f 214/272: ivy.el (ivy-read): Make "M-o" not modify the action, Oleh Krehel, 2016/04/25
- [elpa] master 3f4f080 226/272: counsel-ag now works with ivy-occur-revert-buffer, Oleh Krehel, 2016/04/25
- [elpa] master f31ab12 066/272: swiper.el (swiper--ivy): Return point, Oleh Krehel, 2016/04/25
- [elpa] master 6777cf8 220/272: counsel.el (counsel-unquote-regex-parens): Improve, Oleh Krehel, 2016/04/25
- [elpa] master ddc1d9f 114/272: Move all faces to ivy-faces group, Oleh Krehel, 2016/04/25
- [elpa] master e92d282 195/272: Make ivy-ignore-buffers similar to ido-ignore-buffers., Oleh Krehel, 2016/04/25
- [elpa] master 4235ffc 092/272: colir.el (colir-blend-face-background): Improve, Oleh Krehel, 2016/04/25
- [elpa] master 9aee83a 105/272: ivy.el (ivy-completion-in-region): Bind completion-ignore-case, Oleh Krehel, 2016/04/25
- [elpa] master 2a1ef54 148/272: ivy-dispatching-done should not permanently modify default action index, Oleh Krehel, 2016/04/25
- [elpa] master 5eaf787 078/272: doc/ivy.org: Improve the Texinfo/HTML export structure,
Oleh Krehel <=
- [elpa] master b7c40d3 152/272: ivy.el (ivy-resume): Add a guard against null :action, Oleh Krehel, 2016/04/25
- [elpa] master 2ab9c54 197/272: ivy.el (ivy--switch-buffer-matcher): Fix, Oleh Krehel, 2016/04/25
- [elpa] master db00518 270/272: Bump version to 0.8.0, Oleh Krehel, 2016/04/25
- [elpa] master 96828c2 100/272: ivy.el (ivy-read): Identify extra-actions by caller as well, Oleh Krehel, 2016/04/25
- [elpa] master d425392 178/272: Correctly expand the file name at point, Oleh Krehel, 2016/04/25
- [elpa] master 8201f36 224/272: ivy.el (ivy-occur-revert-buffer): Improve for counsel-git-grep, Oleh Krehel, 2016/04/25
- [elpa] master 20f11b7 159/272: New command ivy-occur-revert-buffer bound to "g", Oleh Krehel, 2016/04/25
- [elpa] master d8da9c4 188/272: counsel.el (counsel-mode): Allow use of describe-prefix-bindings, Oleh Krehel, 2016/04/25
- [elpa] master ab795d0 265/272: Don't highlight that match in the file name part, Oleh Krehel, 2016/04/25
- [elpa] master 255457a 177/272: Fixed counsel-list-processes-action-switch to use correct buffer., Oleh Krehel, 2016/04/25