
This page and its linked pages describe Icicles, an Emacs library that enhances minibuffer completion, that is, input completion. This page lists the main Icicles features and presents entry points to all of the Icicles doc.
Main Icicles Features
Not a bad summary, by one user:
- “In case you never heard of it, Icicles is to
‘TAB’
completion what ‘TAB’
completion is to typing things manually every time.” [1]
Icicles lets you do the following:
- cycle through completion candidates that match your current input *
- use a pattern to match completion candidates, including:
- regexp matching (including substring) *
- fuzzy matching *
- prefix matching (as in vanilla Emacs)
- command abbreviation matching *
- use multiple input patterns (e.g., regexps) to match candidates progressively (intersection), chaining these filters together like piped
‘grep’
commands * - use multiple input patterns at the same time to match multi-part candidates (multi-completions) piecewise — for example, match a container’s name and/or its contained text, in parallel *
- see all possible complete inputs (pertinent commands, variables, and so on) that match your partial or regexp input – the list is updated dynamically (incrementally) if you change your input *
- see all previous inputs that match your partial or regexp input, and selectively reuse them *
- match input against completion candidates that do not match a given regexp; that is, complement the set of matches and use the result for subsequent matching *
- use multiple regexps to search (and replace) text across multiple buffers, files, or regions *, +
- search areas of text that have a certain text property, such as a face *
- browse Imenu or tags entries that match your partial or regexp input *, +
- create and use multiple-choice menus; that is, menus where you can choose multiple entries any number of times *
- create and use multi-commands – commands that you can use to perform an action on any number of candidate inputs any number of times *
- act on multiple inputs in the minibuffer all at once *
- perform set operations (intersection, union,…) on the fly, using sets of completion candidates or other strings *
- persistently save and later reuse sets of completion candidates (e.g. project file names) *
- complete key sequences, and navigate the key-binding hierarchy (this includes the menu bar menu hierarchy) (see also LaCarte) *
- sort completion candidates on the fly, in multiple, context-dependent ways *
As you can see, keywords here include match, complete, input, multiple, regexp, cycle, incremental, browse, and sets. You will see these concepts appear over and over in Icicles, with multiple meanings, combinations, and applications. They are the atoms that Icicles combines for chemistry that can help you use Emacs better.
Icicles is very general, and these concepts give it a wide reach. Icicles has lots for Emacs users and lots for EmacsLisp programmers – its application is limited only by your imagination. Have fun!
Obtaining and Installing Icicles
See Icicles - Libraries for how to obtain the Icicles library files. Then:
- Put those files in a directory that is in your
‘load-path’
. - Load Icicles:
‘M-x load library RET icicles RET’
. - Turn on Icicle mode:
‘M-x icy-mode RET’
.
You’re good to go. You can use ‘M-x icy-mode RET’
at any time to turn Icicle mode on and off.
If you want to load Icicles each time you start Emacs, then put code in your init file to set your `load-path' appropriately and load Icicles:
(add-to-list 'load-path "/my/path/to/icicles/")
(require 'icicles)
If you also want to turn on Icicle mode each time you start Emacs, then add this line after the others:
(icy-mode 1)
The Icicles doc Table of Contents follows, but if you just want to get started immediately, follow the Next links from page to page.
If You Are New to Emacs (and Even If You Are Not)
- EmacsNewbieWithIcicles – how Icicles can help you use Emacs (and help you learn Emacs) – whatever your level of Emacs expertise
For All Users
The most important links are bold here.
- Icicles - Inserting Text from Cursor – yanking text at point for input
- Icicles - Background on Input Completion – review of vanilla Emacs completion
- Icicles - Cycling Completions – cycling among input candidates
- Icicles - Traversing Minibuffer Histories – reusing previous inputs
- Icicles - Apropos Completions – regular expression (regexp) matching for completion (includes substring matching)
- Icicles - Expanded-Common-Match Completion – expansion of input to a common match
- Icicles - Progressive Completion – chaining (piping) of candidate matches against multiple regexps – analogous to
grep foo *.c | grep bar | grep toto
- Icicles - Regressive Completion – the OR to progressive completion’s AND
- Icicles - Completion On Demand – invoke file-name completion even when no completion is available
- Icicles - Moving Between the Minibuffer and Other Buffers – interrupting minibuffer input to edit, search, and so on, elsewhere
- Icicles - Inserting a Regexp from a Variable or Register – saving and reusing regexps
- Icicles - Special Characters in Input Patterns – how regexp syntax works with file-name (shell) globbing and such
- Icicles - S-RET – exiting the minibuffer without confirmation
- Icicles - Ido and IswitchB – differences from libraries
iswitchb.el
and ido.el
, and how to make Icicles more Ido-like - Icicles - Completions Display – how Icicles uses buffer
‘*Completions*’
- Icicles - Icompletion – incremental updating of the set of completion candidates
- Icicles - Sorting Candidates – controlling sorting and removal of duplicates
- Icicles - A Propos d'Apropos – 1) apropos commands unleashed, 2) help for individual candidates while cycling
- Icicles - Multi-Commands – making multiple input choices in a single command execution; performing actions on candidates while cycling
- Icicles - Multi-Completions – matching a list of regexps in parallel – e.g., matching against names and their doc strings
- Icicles - Searching Named Containers – Chapter & Verse: accessing containers such as files, buffers, and Info nodes by matching their names and/or searching their content
- Icicles - Dot, Dot, Dot – a multi-line `
.
’, for matching any character, including newline, in regexps - Icicles - More About Multi-Commands – more about multi-commands
- Icicles - Multi-Inputs – multiple inputs in the same minibuffer
- Icicles - Tripping – multi-commands for navigating and exploring
- Icicles - Key Completion – completing key sequences, instead of commands
- Icicles - Multi M-x – Icicles version of
‘M-x’
makes every command a multi-command - Icicles - Choose All Candidates – acting on all completion candidates that match the current input
- Icicles - Candidate Sets – set operations on candidates: save and retrieve sets, complement, union, difference, intersection
- Icicles - Google Matching – how to do Google-style matching with Icicles
- Icicles - Buffer-Name Input – inputting buffer names (and optionally names of recent or cached files)
- Icicles - File-Name Input – inputting file names; locating any file in your file system
- Icicles - Persistent Completions – saving sets of completions persistently, for reuse later
- Icicles - Large Candidate Sets – dealing with very large sets of candidates
- Icicles - History Enhancements – ways to find and access previous inputs
- Icicles - Isearch Enhancements – enhancements to ordinary IncrementalSearch (Isearch)
- Icicles - Search Commands, Overview – Overview of Icicles search commands
- Icicles - Search-And-Replace – replacing text while searching
- Icicles - Other Search Commands – searching text with certain properties (e.g. faces); browsing code definitions (Imenu); browsing compilation and
‘grep’
hits; reusing inputs in ‘*shell*’
- Icicles - Bookmark Enhancements – enhancements involving Emacs bookmarks (see also Bookmark+)
- Icicles - Emacs Tags Enhancements – finding source-code definitions (tags)
- Icicles - Shell-Command Enhancements – completion for shell commands
- Icicles - Dired Enhancements – Icicles enhancements to DiredMode
- Icicles - Info Enhancements – Icicles enhancements to InfoMode
- Icicles - Support for Projects – features that help you work with a software project
- Icicles - Complex Completions – applying a function to complex candidates (e.g. Lisp structures – more than just strings) that you choose interactively
- Icicles - Object-Action Interaction – choose an object first and then the function to act on it
- Icicles - Anything – object-action interaction on objects of Anything types
- Icicles - Completion Methods and Styles – using different completion methods and styles, including fuzzy matching
- Icicles - Completion in Other Buffers – non-minibuffer completion of words and other text
- Icicles - Customization and General Tips – how to customize Icicles to your preferences
- Icicles - File-Name Completion Tips – tips on completing file and directory names
- Icicles - Key Bindings – all about Icicles key bindings
- Icicles - Customizing Key Bindings – how to change the default Icicles key bindings
- Icicles - Standard Functions Redefined – standard functions that are enhanced in Icicle mode
- Icicles - Debugging and Reporting Bugs – how to report a problem
For Emacs-Lisp Programmers
Bugs, Reference
ESC M-x
Menu command:
Menu command:
T [TAB]
Menu command: Tools >
Menu command: Tools >
Compa [TAB]
Menu command: Tools > Compare (Ediff) >
Two F [TAB]
Menu command: Tools > Compare (Ediff) > Two Files...
[RET]
- And that just shows what La Carte can do without Icicles. It is far more useful when you use it together with Icicles features such as apropos completion, progressive completion, and
chipping away the non-elephant.
See Also
- IciclesDiscussion for discussion, feedback, possible uses, possible enhancements (no bug reports).
- Icicles pages created by users
DrewsElispLibraries referenced here: Lisp:icicles.el, Lisp:lacarte.el
CategoryCommands CategoryBufferSwitching CategoryCompletion CategoryRegexp CategoryDocumentation CategoryHelp CategorySpelling CategoryRegion CategoryModes CategoryDirectories CategoryFiles CategoryProgrammerUtils CategoryCode CategoryAccessibility