: [[image:iciclesimage]]

|| *Previous:*  [[Icicles - File-Name Completion Tips]] || '''[[Icicles]]''' || IciclesIndex || *Next:* [[Icicles - Customizing Key Bindings]] ||

----

You can easily customize any of the key bindings that '''Icicles''' uses -- see
[[Icicles - Customizing Key Bindings]].  I recommend that you first try
using the default bindings, however.  There are many '''Icicles''' key bindings (in particular in the [[minibuffer]]), but they are grouped
into a few natural sets, to help you remember them.  And there are [[user option]]s available for easy key customization.









[:GlobalBindings]
== Global Bindings ==

'''Icicles''' ''does not change your global [[key binding]]s''. It changes some
[[minibuffer]] bindings, and it adds some [[minor mode|minor-mode]] bindings for ''Icicle'' mode,
but it does not change your global bindings.

There are two exceptions:

'''1.''' In ''Icicle'' mode, various '''Icicles''' [[command]]s
are added to [[menu bar]] menus.  File commands are added to the '''File'''
menu, and so on, under an '''Icicles''' submenu.  Those items that do not belong naturally to any
existing menu-bar menu are added to a new top-level '''Icicles''' menu and to the
existing '''Minibuf''' menu.  Whatever the menu they appear in, however,
'''Icicles''' menu items are visible only when ''Icicle'' mode is active.

If you do not want '''Icicles''' to add items to menus besides '''Minibuf'''
and '''Icicles''', then set [[option]] '''<tt>‘[[Icicles - Customization and General Tips#icicle-touche-pas-aux-menus|icicle-touche-pas-aux-menus]]’</tt>''' to
non-`nil'.  See [[Icicles - Customizing Key Bindings]].

'''2.''' '''Icicles''' adds the [[key]] `S-TAB' (bound to `icicle-complete-keys')
to each existing [[keymap]].  This allows you
to [[completion|complete]] keys in any keymap.  For technical reasons, these bindings
are not part of `icicle-mode-map'; other keymaps are enhanced to
include this binding.  However, this '''Icicles''' binding of `S-TAB'
never replaces any existing binding of `S-TAB'.   See [[Icicles - Key Completion]] for
more information about this use of `S-TAB'.

(The documentation always refers to the key that performs key
completion as `S-TAB'.  Actually, it is `S-TAB' only by default.
You can [[Customize]] it, using option '''<tt>‘[[Icicles - Customization and General Tips#icicle-key-complete-keys|icicle-key-complete-keys]]’</tt>'''.)














[:icicle-top-level-key-bindings]
[:IcicleModeBindings]
== Icicle-Mode Bindings ==

Most top-level ''Icicle''-mode bindings are in the '''Icicles''' menu-bar menu.  In
addition, option '''<tt>‘[[Icicles - Customization and General Tips#icicle-top-level-key-bindings|icicle-top-level-key-bindings]]’</tt>''' causes
'''Icicles''' to bind some keyboard keys to some top-level '''Icicles'''
commands.  Some of these take the place of similar,
global bindings whenever you are in ''Icicle'' mode.  Typically, these
top-level commands are '''Icicles''' [[multi-command]] versions of vanilla Emacs commands.

You can customize option `icicle-top-level-key-bindings' to
specify the top-level '''Icicles''' commands that you want to bind, and
the keys you want to bind them to. 

[:IciclesCustomizingKeysScreenshot]
Here is a screenshot of part of the Customize buffer for option `icicle-top-level-key-bindings', to give you an idea. You use '''INS''' to insert another binding and '''DEL''' to delete a binding. You type the key sequence you want in the '''Key''' field and its command in the '''Command''' field. As an alternative to specifying a key, you can choose '''Command to remap''' in the '''Value Menu''' and then enter the command you want to remap.

[[image:IciclesCustomizingKeys]]


With the default value of `icicle-top-level-key-bindings',
'''Icicles''' makes the following ''Icicle''-mode bindings:


[:icicle-occur]
[:icicle-imenu]
[:icicle-search]
[:icicle-search-keywords]
[:icicle-search-text-property]
[:icicle-search-word]
[:icicle-compilation-search]
[:icicle-comint-search]
[:icicle-comint-command]
[:icicle-complete-thesaurus-entry]
[:icicle-execute-menu-command]
[:icicle-execute-extended-command]
[:icicle-describe-option-of-type]
[:lacarte-execute-command]
[:lacarte-execute-menu-command]
[:icicle-command-abbrev]
[:icicle-execute-named-keyboard-macro]
[:icicle-kmacro]
[:icicle-switch-to-from-minibuffer]
[:icicle-select-frame]
* '''##‘C-c '’##''' -- [[Icicles - Search Commands, Overview#icicle-occur|‘icicle-occur’]]
* '''##‘C-c =’##''' -- [[Icicles - Other Search Commands#IciclesImenu|‘icicle-imenu’]]
* '''##‘C-c ^’##'''  -- [[Icicles - Search Commands, Overview#icicle-search-keywords|‘icicle-search-keywords’]]
* '''##‘C-c "’##'''  -- [[Icicles - Search Commands, Overview#icicle-search-text-property|‘icicle-search-text-property’]]
* '''##‘C-c $’##'''  -- [[Icicles - Search Commands, Overview#icicle-search-word|‘icicle-search-word’]]
* '''##‘C-c `’##''' -- [[Icicles - Search Commands, Overview|‘icicle-search’]]
* '''##‘C-c `’##''' -- [[Icicles - Other Search Commands#IciclesCompileOrGrep|‘icicle-compilation-search’]] (in `*grep*' etc.)
* '''##‘C-c `’##''' -- [[Icicles - Other Search Commands#IciclesShell|‘icicle-comint-search’]] (in `*shell*' etc.)
* '''`C-c TAB'''' -- [[Icicles - Other Search Commands#IciclesShell|‘icicle-comint-command’]] (in `*shell*' etc.)
* '''##‘C-c /’##''' -- [[Icicles - Completion in Other Buffers#ThesaurusCompletion|‘icicle-complete-thesaurus-entry’]]
* '''`C-h C-o'''' -- [[Icicles - Multi-Completions|‘icicle-describe-option-of-type’]]
* '''##‘ESC M-x’##''' -- [[LaCarte|‘lacarte-execute-command’]]
* '''##‘M-`’##''', '''`f10'''' -- [[LaCarte|‘lacarte-execute-menu-command’]]
* '''`M-x'''' -- [[Icicles - Multi M-x|‘icicle-execute-extended-command’]]
* '''`M-ESC C-x'''' (aka '''`ESC ESC C-x'''') -- [[Icicles - Multi M-x#icicle-command-abbrev|‘icicle-command-abbrev’]]
* '''`C-x M-e'''' -- `icicle-execute-named-keyboard-macro'
* '''`S-f4'''' -- `icicle-kmacro'
* '''`pause'''' -- [[Icicles - Moving Between the Minibuffer and Other Buffers|‘icicle-switch-to/from-minibuffer’]]
* '''`C-x 5 o'''' -- `icicle-select-frame'

[:icicle-complete-keys]
'''`S-TAB'''' is bound, in effect, to [[Icicles - Key Completion|‘icicle-complete-keys’]], which
completes a [[key sequence]].  [[prefix key|Prefix keys]] followed by `S-TAB' are
also bound to `icicle-complete-keys'.  (`S-TAB' is effectively
bound to other commands in [[buffer]] `*Completions*' and in the
[[minibuffer]].)

(The documentation always refers to the key that performs key
completion as `S-TAB'.  Actually, it is `S-TAB' only by default.
You can customize it, using option '''<tt>‘[[Icicles - Customization and General Tips#icicle-key-complete-keys|icicle-key-complete-keys]]’</tt>'''.)



When `icicle-top-level-key-bindings' has its default value, '''Icicles''' also substitutes all of the key bindings for some standard Emacs
commands.  For example, '''Icicles''' binds `icicle-buffer' to ''all'' keys that
are globally bound outside ''Icicle'' mode to standard command `switch-to-buffer'.  By default, the
following standard commands have their bindings co-opted this way
by '''Icicles''' commands:

[:icicle-abort-recursive-edit]
[:icicle-bookmark]
[:icicle-bookmark-cmd]
[:icicle-bookmark-other-window]
[:icicle-buffer]
[:icicle-buffer-other-window]
[:icicle-dabbrev-completion]
[:icicle-delete-window]
[:icicle-dired]
[:icicle-dired-other-window]
[:icicle-exchange-point-and-mark]
[:lacarte-execute-extended-command]
[:icicle-file]
[:icicle-file-other-window]
[:icicle-file-read-only]
[:icicle-file-read-only-other-window]
[:icicle-find-tag]
[:icicle-find-first-tag-other-window]
[:icicle-goto-global-marker-or-pop-global-mark]
[:icicle-goto-marker-or-set-mark-command]
[:icicle-Info-goto-node]
[:icicle-Info-index]
[:icicle-Info-menu]
[:icicle-insert-buffer]
[:icicle-kill-buffer]
[:icicle-lisp-complete-symbol]
[:icicle-pop-tag-mark]
[:icicle-pp-eval-expression]
[:icicle-select-frame]
[:icicle-select-window-or-frame]
[:icicle-where-is]
[:icicle-yank-maybe-completing]
[:icicle-yank-pop-commands]

 Standard Command                   Icicles Command

 ‘abort-recursive-edit’.............‘icicle-abort-recursive-edit’ (‘C-]’)
 ‘bookmark-jump’....................‘icicle-bookmark’ (‘C-x r b’)
 ‘bookmark-jump-other-window’.......‘icicle-bookmark-other-window’ (‘C-x j j’)
 ‘bookmark-set’.....................‘icicle-bookmark-cmd’ (‘C-x r m’')
 ‘dabbrev-completion’...............‘icicle-dabbrev-completion’ (‘C-M-/’)
 ‘delete-window’....................‘icicle-delete-window’ (‘C-x 0’)
 ‘dired’............................‘icicle-dired’ (‘C-x d’)
 ‘dired-other-window’...............‘icicle-dired-other-window’ (‘C-x 4 d’)
 ‘eval-expression’..................‘icicle-pp-eval-expression’ (‘M-:’)
 ‘exchange-point-and-mark’..........‘icicle-exchange-point-and-mark’ (‘C-x C-x’)
 ‘execute-extended-command’.........‘icicle-execute-extended-command’ (‘M-x’)
 ‘find-file’........................‘icicle-file’ (‘C-x C-f’)
 ‘find-file-other-window’...........‘icicle-file-other-window’ (‘C-x 4 f’)
 ‘find-file-read-only’..............‘icicle-find-file-read-only’ (‘C-x C-r’)
 ‘find-file-read-only-other-window’.‘icicle-find-file-read-only-other-window’ (‘C-x 4 r’)
 ‘find-tag’.........................‘icicle-find-tag’ (‘M-.’)
 ‘find-tag-other-window’............‘icicle-find-first-tag-other-window’ (‘C-x 4 .’)
 ‘Info-goto-node’...................‘icicle-Info-goto-node’ (‘g’)
 ‘Info-index’.......................‘icicle-Info-index’ (‘i’)
 ‘Info-menu’........................‘icicle-Info-menu’ (‘m’)
 ‘insert-buffer’....................‘icicle-insert-buffer’ (‘C-S-insert’)
 ‘kill-buffer’......................‘icicle-kill-buffer’ (‘C-x k’)
 ‘lisp-complete-symbol’.............‘icicle-lisp-complete-symbol’ (‘M-TAB’)
 ‘other-frame’......................‘icicle-select-frame’ (‘C-x 5 o’)
 ‘other-window’.....................‘icicle-select-window-or-frame’ (‘C-x o’)
 ‘pop-global-mark’..................‘icicle-goto-global-marker-or-pop-global-mark’ (‘C-x C-SPC’)
 ‘pop-tag-mark’.....................‘icicle-pop-tag-mark’ (‘M-*’)
 ‘pp-eval-expression’...............‘icicle-pp-eval-expression’ (‘M-:’)
 ‘set-mark-command’.................‘icicle-goto-marker-or-set-mark-command’ (‘C-SPC’)
 ‘switch-to-buffer’.................‘icicle-buffer’ (‘C-x b’)
 ‘switch-to-buffer-other-window’....‘icicle-buffer-other-window’ (‘C-x 4 b’)
 ‘where-is’.........................‘icicle-where-is’ (‘C-h w’)
 ‘yank’.............................‘icicle-yank-maybe-completing’ (‘C-y’)
 ‘yank-pop’.........................‘icicle-yank-pop-commands’ (‘M-y’)

Actually, by default, '''Icicles''' binds `icicle-yank-maybe-completing'
to whatever the value of option '''<tt>‘[[Icicles - Customization and General Tips#icicle-yank-function|icicle-yank-function]]’</tt>''' is.  By
default, this value is `yank'.

The substitution of `##icicle-dired(-other-window)##' for
`##dired(-other-window)##' happens by default only if you do not use
library '''[[Dired+]]'''.  If you do use '''Dired+'''' then the commands are
already '''Icicles''' [[multi-command]]s, and are especially powerful.

Option `icicle-top-level-key-bindings' remaps not only these standard
Emacs commands but also some commands provided by other libraries.
For example, if you use package '''[[Bookmark+]]''', then type-specific
[[bookmark]] jump commands such as `bookmarkp-dired-jump-other-window'
are remapped to '''Icicles''' multi-command versions.

In addition, option '''<tt>‘[[Icicles - Customization and General Tips#icicle-functions-to-redefine|icicle-functions-to-redefine]]’</tt>''' redefines some
vanilla functions to their '''Icicles''' versions while in ''Icicle'' mode.
Any redefined functions that are bound to keys keep those
bindings.  For example, `Info-index' is by default redefined to
`icicle-Info-index' in ''Icicle'' mode, so `i' in InfoMode is
effectively bound to `icicle-Info-index'.  Commands listed in option
`icicle-functions-to-redefine' are typically, but not always, bound in keymaps
other than the global map.

There are many '''Icicles''' commands that are not bound to any keys by default.
You might want to bind some of them to keys in keymap `icicle-mode-map',
i.e., in ''Icicle'' mode.  For a list of top-level '''Icicles''' commands,
see the `Commentary' headers of files <tt>[[icicles-cmd1.el]]</tt> and
<tt>[[icicles-cmd2.el]]</tt>.
















[:MinibufferBindings]
== Minibuffer Bindings ==

There are many key bindings available while your input is read in the
[[minibuffer]], for example, while you are editing it.  Some of
these keys are available regardless of whether completion is available for your input.


Others are available only during [[completion]].  Most of those keys are bound in the minibuffer 
keymaps, but some are bound in the `*Completions*' buffer keymap.

In addition, clicking '''`C-mouse-3'''' on a completion candidate in buffer
`*Completions*' pops up a menu of available commands.
Some of these menu commands are applicable to the completion you
click; others apply to the current state of completion or to the
complete set of completion candidates.  The associated key
bindings are indicated in the menu items, so this can be a good
way to learn minibuffer and `*Completions*' bindings.

You can easily customize the '''Icicles''' minibuffer and `*Completions*' buffer key
bindings.  There are several user options available for this.
This section describes the keys that are bound by default.
Section [[Icicles - Customizing Key Bindings]] describes the options
available for customizing them.  The keys
described in this section are those bound by default.

The following key is helpful during any minibuffer input.  It pops
up the `*Help*' buffer with information about using the minibuffer
in ''Icicle'' mode.  During completion, this includes information
similar to what you are reading now.  It also lists toggle
commands and the current toggle values.

[:icicle-minibuffer-help]
* '''##‘M-?’##''' -- `icicle-minibuffer-help'

The following key will always cancel all minibuffer input.  No
matter whether you have recursive minibuffers, it always returns
you directly to the Emacs top level ("without passing GO"), but it
first allows '''Icicles''' [[multi-command]]s to perform any necessary
cleanup.

[:icicle-top-level]
* '''`C-M-T'''' (aka `C-M-S-t') -- `icicle-top-level'


The following key performs '''Icicles'''  [[Icicles - Key Completion|key completion]] in the [[minibuffer]].

* '''`M-S-TAB'''' -- `icicle-complete-keys'

You can also use this ''to see all of the keys that are currently
available in the minibuffer'', whether or not completion is
available, and regardless of completion candidate type.  `M-S-TAB'
does this by default, but you can change this by customizing
option '''<tt>‘[[Icicles - Customization and General Tips#icicle-key-complete-keys-for-minibuffer|icicle-key-complete-keys-for-minibuffer]]’</tt>'''.

The following key bindings are made for the minibuffer completion
keymaps.  They are in effect whenever you are using the minibuffer
for input with completion (e.g. `completing-read',
`read-file-name', `M-x').

The keys mentioned are those that are bound by default and used in
the documentation, but you can customize any or all of them using
[[option]] '''<tt>‘[[Icicles - Customization and General Tips#icicle-completion-key-bindings|icicle-completion-key-bindings]]’</tt>'''.



[:icicle-next-candidate-per-mode]
[:icicle-previous-candidate-per-mode]
[:icicle-next-apropos-candidate]
[:icicle-previous-apropos-candidate]
[:icicle-previous-prefix-candidate]
[:icicle-next-prefix-candidate]
* '''`down'''', '''`wheel-down'''' -- `icicle-next-candidate-per-mode' (modal)
* '''`up'''', '''`wheel-up'''' -- `icicle-previous-candidate-per-mode' (modal)
* '''`next'''', '''`prior'''' -- `icicle-next-apropos-candidate', 
`icicle-previous-apropos-candidate', which [[Icicles - Cycling Completions|cycle]] candidate [[apropos completion]]s.
* '''`down'''', '''`up'''' -- `icicle-next-prefix-candidate', `icicle-previous-prefix-candidate', which cycle candidate [[prefix completion]]s.

:: Whether a modal cycling key is used for prefix or apropos
completion at a given time depends on the current completion
mode, which is determined by which of `TAB' and `S-TAB' was used
last, or by option '''<tt>‘[[Icicles - Customization and General Tips#icicle-default-cycling-mode|icicle-default-cycling-mode]]’</tt>''' 
if neither was used.

:: (The mouse wheel bindings are only for Emacs 22 and later. The documentation refers to the keys
that cycle completion candidates as `down',
`up', `next', `prior', `end', and `home'.  Actually, these are
the cycling keys only by default.  You can
customize the cycling keys using options
'''<tt>‘[[Icicles - Customization and General Tips#icicle-modal-cycle-down-keys|icicle-modal-cycle-down-keys]]’</tt>''',
'''<tt>‘[[Icicles - Customization and General Tips#icicle-modal-cycle-up-keys|icicle-modal-cycle-up-keys]]’</tt>''',
'''<tt>‘[[Icicles - Customization and General Tips#icicle-apropos-cycle-next-keys|icicle-apropos-cycle-next-keys]]’</tt>''', 
'''<tt>‘[[Icicles - Customization and General Tips#icicle-apropos-cycle-previous-keys|icicle-apropos-cycle-previous-keys]]’</tt>''',
'''<tt>‘[[Icicles - Customization and General Tips#icicle-prefix-cycle-next-keys|icicle-prefix-cycle-next-keys]]’</tt>''',
'''<tt>‘[[Icicles - Customization and General Tips#icicle-prefix-cycle-previous-keys|icicle-prefix-cycle-previous-keys]]’</tt>'''.)




* Keys bound globally to commands that perform simple text
insertion, deletion, and transposition operations -- commands
such as `self-insert-command' -- are bound to '''Icicles''' versions of
those commands that do the same thing but also provide apropos
icompletion.  This includes keys such as `C-d',
`C-k', and `C-w' (and lots more).  See [[Icicles - Icompletion]].

[:icicle-switch-to-from-minibuffer]
* '''`pause''''  -- `icicle-switch-to/from-minibuffer': Move [[cursor]] to the buffer from which the minibuffer was activated.

[:icicle-switch-to-Completions-buf]
* '''`C-insert'''' -- `icicle-switch-to-Completions-buf': Move cursor to the
current candidate in buffer `*Completions*'.

[:icicle-scroll-Completions-forward]
* '''`C-v''''    -- `icicle-scroll-Completions-forward': Scroll the `*Completions*' window forward

[:icicle-scroll-Completions-backward]
* '''`M-v''''    -- `icicle-scroll-Completions-backward': Scroll the `*Completions*' window backward

[:icicle-scroll-forward]
* '''`C-M-v''''  -- `icicle-scroll-forward': Scroll the current non-minibuffer window forward

[:icicle-scroll-backward]
* '''`C-M-V'''' ('''`C-M-S-v'''') -- `icicle-scroll-backward': Scroll the current non-minibuffer window backward

[:icicle-narrow-candidates]
* '''`M-*'''' -- `icicle-narrow-candidates': Narrow the set of completion candidates using another input regexp.

[:icicle-widen-candidates]
* '''##‘M-+’##''' -- `icicle-widen-candidates': Widen the set of completion candidates using another input regexp.

[:icicle-prefix-word-complete]
* '''`M-SPC'''' -- `icicle-prefix-word-complete': Complete current input
in minibuffer, as a prefix, a single word at a time.
This replaces `minibuffer-complete-word'.    In fact,
it is the keys in `icicle-word-completion-keys' that
are bound to this command; `M-SPC' is only the default key binding.

[:icicle-apropos-complete-and-narrow]
* '''`S-SPC'''' -- `icicle-apropos-complete-and-narrow': Same as
`S-TAB' followed by `M-*'.


[:icicle-apropos-complete-and-widen]
* '''`S-backspace'''' -- `icicle-apropos-complete-and-widen': Same as
`S-TAB' followed by ##‘M-+’##.



[:icicle-prefix-complete]
* '''`TAB'''' -- `icicle-prefix-complete': Complete current input in minibuffer, as a prefix.  If there is more than one [[prefix completion]] candidate,
display them in buffer `*Completions*', highlighting the
common prefix. This replaces `minibuffer-complete'.  (The documentation always refers to the key that does
 this as `TAB'.  Actually, it is only `TAB' by
default.  You can customize it, using option
'''<tt>‘[[Icicles - Customization and General Tips#icicle-prefix-complete-keys|icicle-prefix-complete-keys]]’</tt>'''.)

[:icicle-apropos-complete]
[:icicle-previous-candidate-keys]
* '''`S-TAB'''' -- In the minibuffer: `icicle-apropos-complete' -- like `TAB', but use [[apropos completion]].   In buffer `*Completions*': `icicle-move-to-previous-completion' -- move backwards among candidates. At top level:
`icicle-complete-keys' -- complete a [[key sequence]].  (The documentation always refers to the keys that do these things as `S-TAB'.  Actually, they are only `S-TAB' by
default.  You can customize the keys using options
'''<tt>‘[[Icicles - Customization and General Tips#icicle-apropos-complete-keys|icicle-apropos-complete-keys]]’</tt>''',
'''<tt>‘[[Icicles - Customization and General Tips#icicle-completion-list-key-bindings|icicle-completion-list-key-bindings]]’</tt>''', and '''<tt>‘[[Icicles - Customization and General Tips#icicle-key-complete-keys|icicle-key-complete-keys]]’</tt>'''.)

[:icicle-prefix-complete-no-display]
* '''`C-M-TAB'''' -- `icicle-prefix-complete-no-display': Like `TAB', but
does not display candidates in `*Completions*'.  (The documentation always refers to the key that does
this as `C-M-TAB'.  Actually, it is only `C-M-TAB' by
default.  You can customize it, using option
'''<tt>‘[[Icicles - Customization and General Tips#icicle-prefix-complete-no-display-keys|icicle-prefix-complete-no-display-keys]]’</tt>'''.)  During Isearch, `C-M-TAB' and `M-TAB' complete the
search string against past search strings.  (These
are the keys by default.  You can customize this
using option '''<tt>‘[[Icicles - Customization and General Tips#icicle-isearch-complete-keys|icicle-isearch-complete-keys]]’</tt>'''.)

[:icicle-apropos-complete-no-display]
* '''`C-M-S-TAB'''' -- `icicle-apropos-complete-no-display': Like
`S-TAB', but does not display candidates in `*Completions*'.  (The documentation always refers to the key that does
this as `C-M-S-TAB'.  Actually, it is only
`C-M-S-TAB' by default.  You can customize it, using
option '''<tt>‘[[Icicles - Customization and General Tips#icicle-apropos-complete-no-display-keys|icicle-apropos-complete-no-display-keys]]’</tt>'''.)

[:icicle-save-predicate-to-variable]
* '''##‘C-M-&’##'''  -- `icicle-save-predicate-to-variable': Save the current
predicate used for completion to a variable.

[:icicle-remove-candidate]
* '''`delete'''' -- `icicle-remove-candidate': Remove the current candidate from consideration.

[:icicle-mouse-remove-candidate]
* '''`S-mouse-2'''' -- `icicle-mouse-remove-candidate': Same as `delete' key.

[:icicle-insert-history-element]
* '''`M-o'''' -- '''`icicle-insert-history-element'''': Invoke completion to
insert a previously entered input into the minibuffer.
Use this instead of the `M-s' and `M-r' of vanilla
Emacs, which are not available in Icicle mode.
(`M-o' is the key by default.  You can customize this
using option '''<tt>‘[[Icicles - Customization and General Tips#icicle-minibuffer-key-bindings|icicle-minibuffer-key-bindings]]’</tt>'''.)  During Isearch, `M-o' completes against the current
[[search ring]], and appends the past search string you
choose to the current one.  (`M-o' is the key by
default.  You can customize this using option
'''<tt>‘[[Icicles - Customization and General Tips#icicle-isearch-history-insert-keys|icicle-isearch-history-insert-keys]]’</tt>'''.)


[:icicle-insert-key-description]
* '''`M-q'''' -- `icicle-insert-key-description': Insert the textual
representation of a key sequence, during [[Icicles - Key Completion|key completion]].


[:icicle-roundup]
* '''`M-r'''' -- `icicle-roundup': Insert one or more completion candidates in the minibuffer.

[:icicle-multi-inputs-act]
* '''`M-R'''' -- `icicle-multi-inputs-act': Act on [[multi-input]]s.
Parse minibuffer input into a list of candidates,
then act on each candidate, in order.

[:icicle-multi-inputs-save]
* '''`M-S'''' -- `icicle-multi-inputs-save': Add [[multi-input]]s to the
current saved candidates set.  Parse minibuffer
contents into a list of candidates, then add them to
those in `icicle-saved-completion-candidates'.

[:icicle-regexp-quote-input]
* '''##‘M-%’##'''  -- Regexp quote current input or its active [[region]], then
apropos-complete.  Use this to literally match all or
some input, in the context of regexp matching overall.

[:icicle-read+insert-file-name]
* '''`C-M-F'''' ('''`C-M-S-f'''') -- ##‘icicle-read+insert-file-name’##: Invoke completion to
insert a file name in the minibuffer.

[:icicle-completing-read+insert]
* '''`C-M-C'''' ('''`C-M-S-c'''') -- ##‘icicle-completing-read+insert’##: Invoke completion
to insert something other than a file name (not
always available).
(`C-M-F' and `C-M-C' are the default values for
the keys that invoke completion on demand.  You can
customize the keys to use, using options
'''<tt>‘[[Icicles - Customization and General Tips#icicle-read+insert-file-name-keys|icicle-read+insert-file-name-keys]]’</tt>''' and '''<tt>‘[[Icicles - Customization and General Tips#icicle-completing-read+insert-keys|icicle-completing-read+insert-keys]]’</tt>'''.)

By default, `TAB' and `S-TAB' also perform modal candidate cycling
when you repeat them.  You can inhibit this feature by customizing
option '''<tt>‘[[Icicles - Customizing Key Bindings#icicle-TAB-S-TAB-only-completes-flag|icicle-TAB/S-TAB-only-completes-flag]]’</tt>'''.

In '''Icicles''', multi-line completion candidates are not uncommon.
You can move up and down minibuffer lines with `C-p' and `C-n',
and you can use the following keys to move among [[line]] beginnings
and ends:

* '''`C-a'''', '''`C-e'''' -- ##‘icicle-beginning-of-line+’##, ##‘icicle-end-of-line+’##: Like normal `C-a', `C-e', but repeating goes to the previous or next line.

If you use libraries <tt>[[fit-frame.el]]</tt> and <tt>[[oneonone.el]]</tt> with a standalone minibuffer frame (non-`nil' `1on1-minibuffer-frame-flag'), and if option `1on1-fit-minibuffer-frame-flag' is non-`nil', then the minibuffer frame is automatically resized to fit its content as you edit that
content.  (Options `1on1-fit-minibuffer-frame-max-height' and `1on1-fit-minibuffer-frame-max-height-percent' define the maximum height for this.)

If, in addition, you bind `1on1-fit-minibuffer-frame' to a key,
then you can use that key repeatedly to increase the height by one
line, even beyond the maximum.  Library <tt>[[setup-keys.el]]</tt> binds this
to `C-o'.

(If you do not use a separate minibuffer frame, then you will
likely want to set standard option `resize-mini-windows' to `t', not
to `grow-only', at least while in ''Icicle'' mode.)

[:icicle-insert-list-join-string]
* '''`C-M-j'''' -- `icicle-insert-list-join-string': Insert `icicle-list-join-string'. See also [[Icicles - Multi-Completions]].

[:icicle-insert-dot-command]
[:icicle-toggle-dot]
You can insert a single '''Icicles''' [[multi-line dot]] using '''##‘C-u .’##''', or
by turning on this dot magic generally, using '''##‘C-M-.’##''':
* '''##‘.’##''' -- `icicle-insert-dot-command'
* '''##‘C-M-.’##''' -- `icicle-toggle-dot' (toggle [[option]] <tt>‘[[Icicles - Customization and General Tips#icicle-dot-string|icicle-dot-string]]’</tt>)


In vanilla Emacs, the following keys have a special purpose during
input completion, but in '''Icicles''' they simply insert the character
typed -- they are ''self-inserting''.  This is because (1) there are
better ways to do what vanilla Emacs uses these keys for and (2)
it is useful to be able to insert these characters without first
typing `C-q' to quote them.

* '''##‘?’##'''   -- see also [[Icicles - Special Characters in Input Patterns]]
* '''`SPC'''' (space)

[:icicle-insert-newline-in-minibuffer]
* '''`C-j'''' (newline) -- see also `C-o', above, and [[Icicles - Multi-Completions]]

The only exception to this rule is that for `M-x'
(`icicle-execute-extended-command') with prefix completion, `SPC'
does the same thing as for vanilla Emacs: it completes the command
name a word at a time.






The following minibuffer bindings are made to clear minibuffer
input, making them handy for editing and removing completions
(e.g. default or initial values) in the minibuffer.

[:icicle-erase-minibuffer-or-history-element]
[:icicle-erase-minibuffer]

* '''`M-k'''' -- `icicle-erase-minibuffer-or-history-element'
* '''`M-S-backspace'''', '''`M-S-delete'''' -- `icicle-erase-minibuffer'

`M-k' has an alternative behavior when you are cycling minibuffer history
items: it deletes the current item from the history.





The following key is bound during completion to control the
display of thumbnail images in `*Completions*' for candidates that
name image files or image-file bookmarks (see '''[[Bookmark+]]''').  It cycles the value of option '''<tt>‘[[Icicles - Customization and General Tips#icicle-image-files-in-Completions|icicle-image-files-in-Completions]]’</tt>''' to show images and names (the default), show only names, or show only images.

* '''`C-x t'''' -- `icicle-cycle-image-file-thumbnail'







During (absolute or relative) file-name completion, the following
minibuffer bindings are also in effect:

* '''`C-backspace'''' -- `icicle-up-directory': Navigate up the directory hierarchy.

* '''##‘C-c +’##'''  -- `icicle-make-directory': Create a directory.

* '''`C-x m'''' -- `icicle-bookmark-file-other-window': Visit a file or directory ([[Dired]]) bookmark. See also [[Icicles - More About Multi-Commands#AccessingBookmarks|Accessing Saved Locations (Bookmarks) on the Fly]]. (Available only if you use '''[[Bookmark+]]'''.)

During some absolute file-name completion, you can use '''`C-c C-d'''' to
change the current directory on the fly (think UNIX command `cd').
See also [[Icicles - File-Name Input#AbsoluteFileNames|Absolute File Names and Different Directories]].




During [[buffer]]-name completion, the following additional minibuffer bindings
are
defined by user option '''<tt>‘[[Icicles - Customization and General Tips#icicle-buffer-candidate-key-bindings|icicle-buffer-candidate-key-bindings]]’</tt>'''.  By
default, they are the following:

* '''`C-x F''''      -- Toggle whether to include cached files (i.e.,  toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-buffer-include-cached-files-nflag|icicle-buffer-include-cached-files-nflag]]’</tt>)

* '''`C-x R''''         -- Toggle whether to include recent files (i.e., toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-buffer-include-recent-files-nflag|icicle-buffer-include-recent-files-nflag]]’</tt>)

* '''`C-x m'''' -- `icicle-bookmark-non-file-other-window': Visit a [[BookmarkPlus#AdditionalTypes|buffer (non-file) bookmark]].  See also [[Icicles - More About Multi-Commands#AccessingBookmarks|Accessing Saved Locations (Bookmarks) on the Fly]].  (Available only if you use '''[[Bookmark+]]'''.)

* '''`C-x C-m -'''' -- `icicle-remove-buffer-cands-for-derived-mode': ''Remove'' buffer-name candidates with a [[major mode]] that is ''derived'' from a given ''mode''.  Repeat to filter progressively.  (`C-m' is the same key as `RET'.)

* '''##‘C-x C-m +’##''' -- `icicle-keep-only-buffer-cands-for-derived-mode': ''Keep'' only buffer-name candidates with a major mode that is ''derived'' from a given ''mode''.

* '''`C-x M -'''' -- `icicle-remove-buffer-cands-for-mode': Same as `C-x C-m -', but excludes ancestor modes.

* '''##‘C-x M +’##''' -- `icicle-keep-only-buffer-cands-for-mode': Same as ##‘C-x C-m +’##, but excludes ancestor modes.

* '''`C-x * -''''  -- `icicle-remove-buffer-cands-for-modified': ''Remove'' buffers that are ''modified''.

* '''##‘C-x * +’##'''  -- `icicle-keep-only-buffer-cands-for-modified': ''Keep'' only buffers that are ''modified''.

* '''`C-x i -''''  -- `icicle-remove-buffer-cands-for-indirect': ''Remove'' buffers that are ''indirect''.

* '''##‘C-x i +’##'''  -- `icicle-keep-only-buffer-cands-for-indirect': ''Keep'' only buffers that are ''indirect''.

* '''`C-x v -''''  -- `icicle-remove-buffer-cands-for-visible': ''Remove'' buffers that are ''visible''.  Includes
buffers in iconified frames.

* '''##‘C-x v +’##'''  -- `icicle-keep-only-buffer-cands-for-visible': ''Keep'' only buffers that are ''visible''.  Includes buffers in iconified frames.






The following minibuffer binding during completion refreshes the
`*Completions*' display.

* '''`C-x C-M-l''''     -- `icicle-display-candidates-in-Completions'

You will likely never need to use it for that purpose.  However,
in [[Info]] mode, during command `icicle-Info-index' (bound to `i' in
Info), the same key, '''`C-x C-M-l'''', searches for all nodes that
correspond to the current completion candidates, and ''highlights
those that you have already visited'', using face
<tt>‘[[Icicles - Customization and General Tips#icicle-historical-candidate-other|icicle-historical-candidate-other]]’</tt> (which by default looks like a
link).








[:icicle-goto-kill-failed-input]
The following minibuffer binding moves the [[cursor]] to the start of
the part of your input, if any, that is highlighted because it does not match any
completion candidate (see option '''<tt>‘[[Icicles - Customization and General Tips#icicle-highlight-input-completion-failure|icicle-highlight-input-completion-failure]]’</tt>''').  Repeating this
command kills the rest of the line, removing the highlighted
mismatched input.

* '''`C-M-l'''' -- `icicle-goto/kill-failed-input'

The remaining input matches at least one candidate.





[:icicle-retrieve-previous-input]
[:icicle-retrieve-next-input]
The following minibuffer bindings can be used to get rid of a
completion inserted during cycling, and retrieve what you last
typed during completion or any previous completion inputs:

* '''`C-l'''' -- `icicle-retrieve-previous-input'
* '''`C-S-l'''' ('''`C-L'''') -- `icicle-retrieve-next-input'

You can use these to cycle among and reuse inputs that you typed
during completion but ''did not enter''.  This '''completion input''' is not
recorded in the standard input histories -- they record only input
that you have entered with `RET'. See [[Icicles - History Enhancements]].

For example, suppose that you used `C-h v hook' to examine
various hook variables, and you did this using`C-next' to display
their documentation.  If you finished the command by just typing
`C-g', then your input (`hook') was never really entered, so it is
not available via the minibuffer history (`M-p').  You can
retrieve it with `C-l', to use it again, in your next command.  User option
'''<tt>‘[[Icicles - Customization and General Tips#icicle-C-l-uses-completion-flag|icicle-C-l-uses-completion-flag]]’</tt>''' controls the behavior of '''`C-l''''
and '''`##C-L##''''; if non-`nil', then, instead of cycling inputs, these
commands let you access previous inputs using completion.





You can insert minibuffer history items using the cycle keys `M-p' and `M-n', as usual.  But in ''Icicle'' mode, `M-s' and `M-r' are not available.  Instead, use '''`M-o'''' to insert any history item using [[completion]] (including [[regexp]] completion, of course).

The
following minibuffer bindings also let you use ''apropos completion'' on
the current minibuffer history list.  For explanation, see [[Icicles - History Enhancements]].

[:icicle-history]
[:icicle-keep-only-past-inputs]

* '''`M-h'''' -- `icicle-history'
* '''`M-pause'''' -- `icicle-keep-only-past-inputs'



Minibuffer binding '''`C-M-pause'''' lets you use a different minibuffer
history during the current input reading with completion.
Normally, you are prompted for the history to use.  Starting with
Emacs 23, if option '''<tt>‘[[Icicles - Customization and General Tips#icicle-populate-interactive-history-flag|icicle-populate-interactive-history-flag]]’</tt>''' is
non-`nil', then during command, abbrev, and keyboard-macro
completion, `C-M-pause' completes your input against the history
of all commands that were invoked interactively in any way,
'''`icicle-interactive-history''''.


The following minibuffer bindings let you act on candidate
completions.  For explanation, see [[Icicles - Multi-Commands]], [[Icicles - More About Multi-Commands]], and [[Icicles - Choose All Candidates]], and [[Icicles - Object-Action Interaction]].

[:icicle-all-candidates-action]
[:icicle-all-candidates-list-action]
[:icicle-candidate-action]
[:icicle-candidate-read-fn-invoke]
[:icicle-delete-candidate-object]
[:icicle-mouse-candidate-action]
[:icicle-mouse-candidate-read-fn-invoke]
[:icicle-mouse-yank-secondary]
[:icicle-next-apropos-candidate-action]
[:icicle-next-candidate-per-mode-action]
[:icicle-next-prefix-candidate-action]
[:icicle-previous-candidate-per-mode-action]
[:icicle-previous-prefix-candidate-action]
[:icicle-previous-apropos-candidate-action]

* '''`C-RET'''' -- `icicle-candidate-action': current candidate
* '''`C-mouse-2'''' -- `icicle-mouse-candidate-action': clicked candidate
* '''`C-down'''', '''`C-wheel-down''''  -- `icicle-next-candidate-per-mode-action' (modal)
* '''`C-up'''', '''`C-wheel-up''''  -- `icicle-previous-candidate-per-mode-action' (modal)
* '''`C-next''''  -- `icicle-next-apropos-candidate-action'
* '''`C-prior''''  -- `icicle-previous-apropos-candidate-action'
* '''`C-end''''  -- `icicle-next-prefix-candidate-action'
* '''`C-home''''    -- `icicle-previous-prefix-candidate-action'
* '''##‘C-!’##''' -- `icicle-all-candidates-action': each candidate, in turn
* '''##‘M-!’##''' -- `icicle-all-candidates-list-action': all candidates, as a list
* '''`M-RET'''' -- `icicle-candidate-read-fn-invoke': apply a function to current candidate
* '''`M-mouse-2'''' -- `icicle-mouse-yank-secondary' (in minibuffer)
* '''`M-mouse-2'''' -- `icicle-mouse-candidate-read-fn-invoke': apply a function to clicked candidate (in `*Completions*')
* '''`S-delete'''' -- `icicle-delete-candidate-object': delete object named by candidate

(Some of these are only default key
 bindings.  You can customize the keys to use for candidate actions, for instance.  The mouse wheel bindings are only for Emacs 22 and later.  The notation used here for the wheel bindings is that for Emacs on Windows; on other platforms different key notations are used for the wheel.  This same note applies to corresponding keys used with modifiers `C-M-' and `C-S-' -- see below.)

Except as noted, the bindings for `icicle-mouse-*' are actually in the `*Completions*' buffer.






The following minibuffer bindings provide help on candidate
completions.  For explanation, see [[Icicles - Help on Candidates]] and [[Icicles - Multi-Commands]].

[:icicle-help-on-candidate]
[:icicle-mouse-help-on-candidate]
[:icicle-help-on-previous-prefix-candidate]
[:icicle-previous-candidate-per-mode-help]
[:icicle-help-on-next-prefix-candidate]
[:icicle-next-candidate-per-mode-help]
[:icicle-help-on-previous-apropos-candidate]
[:icicle-help-on-next-apropos-candidate]

* '''`C-M-RET'''' -- `icicle-help-on-candidate': current candidate
* '''`C-M-mouse-2'''' -- `icicle-mouse-help-on-candidate': clicked candidate
* '''`C-M-down'''', '''`C-M-wheel-down''''  -- `icicle-next-candidate-per-mode-help' (modal)
* '''`C-M-up'''', '''`C-M-wheel-up'''' -- `icicle-previous-candidate-per-mode-help' (modal)
* '''`C-M-next'''' -- `icicle-help-on-next-apropos-candidate'
* '''`C-M-prior'''' -- `icicle-help-on-previous-apropos-candidate'
* '''`C-M-end''''  -- `icicle-help-on-next-prefix-candidate'
* '''`C-M-home'''' -- `icicle-help-on-previous-prefix-candidate'


(Again, these are only default key bindings.
See [[Icicles - Customizing Key Bindings]].)




The following minibuffer bindings provide an [[Icicles - More About Multi-Commands#AlternativeActions|alternative action]]
for individual candidates.  The alternative action is specific to
the given command.  Most commands define no alternative action.

[:icicle-candidate-alt-action]
[:icicle-mouse-candidate-alt-action]
[:icicle-previous-prefix-candidate-alt-action]
[:icicle-previous-candidate-per-mode-alt-action]
[:icicle-next-prefix-candidate-alt-action]
[:icicle-next-candidate-per-mode-alt-action]
[:icicle-previous-apropos-candidate-alt-action]
[:icicle-next-apropos-candidate-alt-action]

* '''`C-S-RET'''' -- `icicle-candidate-alt-action': current candidate
* '''`C-S-mouse-2'''' -- `icicle-mouse-candidate-alt-action': clicked
* '''`C-S-down'''', '''`C-S-wheel-down'''' -- `icicle-next-candidate-per-mode-alt-action' (modal)
* '''`C-S-up'''', '''`C-S-wheel-up'''' -- `icicle-previous-candidate-per-mode-alt-action' (modal)
* '''`C-S-next'''' -- `icicle-next-apropos-candidate-alt-action'
* '''`C-S-prior'''' -- `icicle-previous-apropos-candidate-alt-action'
* '''`C-S-end'''' -- `icicle-next-prefix-candidate-alt-action'
* '''`C-S-home'''' -- `icicle-previous-prefix-candidate-alt-action'
* '''##‘C-|’##''' -- `icicle-all-candidates-alt-action': each candidate, in turn
* '''##‘M-|’##''' -- `icicle-all-candidates-list-alt-action': all candidates, as a list








The following minibuffer and `*Completions*' buffer bindings let you perform set operations
on sets of completion candidates.  For explanation, see [[Icicles - Candidate Sets]].

[:icicle-candidate-set-complement]
[:icicle-candidate-set-difference]
[:icicle-candidate-set-union]
[:icicle-candidate-set-intersection]
[:icicle-candidate-set-retrieve]
[:icicle-candidate-set-save]
[:icicle-candidate-set-retrieve-more]
[:icicle-candidate-set-save-more]
[:icicle-candidate-set-save-selected]
[:icicle-candidate-set-save-more-selected]
[:icicle-save-candidate]
[:icicle-mouse-save-candidate]
[:icicle-mouse-candidate-set-save]
[:icicle-mouse-candidate-set-save-more]
[:icicle-candidate-set-swap]
[:icicle-candidate-set-define]

* '''##‘C-~’##''' -- `icicle-candidate-set-complement'
* '''##‘C--’##''' -- `icicle-candidate-set-difference'
* '''##‘C-+’##''' -- `icicle-candidate-set-union'
* '''##‘C-*’##''' -- `icicle-candidate-set-intersection'
* '''##‘C-M-<’##''' -- `icicle-candidate-set-retrieve': retrieve saved set
* '''##‘C-M->’##''' -- `icicle-candidate-set-save': save current set
* '''##‘C-M-)’##''' -- `icicle-candidate-set-save-selected': save mouse-selected candidates as set
* '''##‘C-<’##''' -- `icicle-candidate-set-retrieve-more': add from saved set
* '''##‘C->’##''' -- `icicle-candidate-set-save-more': add to saved set
* '''##‘C-)’##''' -- `icicle-candidate-set-save-more-selected': add mouse-selected candidates to saved set
* '''`insert'''' -- `icicle-save/unsave-candidate': save or unsave current candidate
* '''##‘C-%’##''' -- `icicle-candidate-set-swap': swap saved and current sets
* '''##‘C-:’##''' -- `icicle-candidate-set-define': define current (EmacsLisp)
* '''`M-S-mouse-2'''' -- `icicle-mouse-save/unsave-candidate': click candidate to save or unsave
* '''`M-S-mouse-3'''' -- `icicle-mouse-candidate-set-save': save candidates in region or save clicked candidate
* '''`M-mouse-3'''' -- `icicle-mouse-candidate-set-save-more': add region candidates or clicked candidate to saved set





The following minibuffer bindings insert text in the minibuffer:

[:icicle-insert-string-at-point]
[:icicle-insert-string-from-variable]

* ##‘M-.’## -- `icicle-insert-string-at-point'
* ##‘C-=’## -- `icicle-insert-string-from-variable'
* ##‘M-:’## -- `icicle-pp-eval-expression-in-minibuffer' (with a [[prefix argument]])






The following minibuffer bindings let you ''toggle'' '''Icicles''' options or cycle among alternative Icicles behaviors.

[:icicle-next-TAB-completion-method]
[:icicle-next-S-TAB-completion-method]
[:icicle-toggle-case-sensitivity]
[:icicle-toggle-ignored-extensions]
[:icicle-change-alternative-sort-order]
[:icicle-toggle-alternative-sorting]
[:icicle-toggle-C-for-actions]
[:icicle-toggle-dot]
[:icicle-toggle-expand-to-common-match]
[:icicle-cycle-expand-to-common-match]
[:icicle-toggle-hiding-common-match]
[:icicle-toggle-hiding-non-matching-lines]
[:icicle-toggle-highlight-all-current]
[:icicle-toggle-highlight-historical-candidates]
[:icicle-cycle-incremental-completion]
[:icicle-toggle-ignored-space-prefix]
[:icicle-toggle-literal-replacement']
[:icicle-toggle-proxy-candidates]
[:icicle-toggle-regexp-quote]
[:icicle-toggle-remote-file-testing]
[:icicle-toggle-transforming]
[:icicle-toggle-search-cleanup]
[:icicle-toggle-search-replace-whole]
[:icicle-toggle-search-whole-word']
[:icicle-toggle-tilde-for-home-dir]

* '''`C-A'''' (that is, `C-S-a') -- `icicle-toggle-case-sensitivity'
* '''##‘C-.’##''' -- `icicle-toggle-ignored-extensions' (file-name completion)  (toggle option `completion-ignored-extensions')

* '''##‘C-.’##''' -- `icicle-toggle-search-cleanup' (search) (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-search-cleanup-flag|icicle-search-cleanup-flag]]’</tt>)
* '''##‘C-M-.’##''' -- `icicle-toggle-dot'
(toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-dot-string|icicle-dot-string]]’</tt>)
* '''##‘C-x .’##''' -- `icicle-toggle-hiding-common-match' (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-hide-common-match-in-Completions-flag|icicle-hide-common-match-in-Completions-flag]]’</tt>)
* '''##‘C-u C-x .’##''' -- `icicle-toggle-hiding-non-matching-lines' (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-hide-non-matching-lines-flag|icicle-hide-non-matching-lines-flag]]’</tt>)
* '''##‘C-"’##''' -- `icicle-toggle-expand-to-common-match' (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-expand-input-to-common-match|icicle-expand-input-to-common-match]]’</tt>)
* '''##‘C-M-"’##''' -- `icicle-cycle-expand-to-common-match' (cycle values of option <tt>‘[[Icicles - Customization and General Tips#icicle-expand-input-to-common-match|icicle-expand-input-to-common-match]]’</tt>)
* '''##‘M-;’##''' -- `icicle-toggle-search-replace-common-match'  (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-search-replace-common-match-flag|icicle-search-replace-common-match-flag]]’</tt>)
* '''##‘C-M-;’##''' -- `icicle-toggle-icicle-toggle-ignoring-comments'  (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-ignore-comments-flag|icicle-ignore-comments-flag]]’</tt>)
* '''##‘C-,’##''' -- `icicle-change-sort-order' (next sort order in option <tt>‘[[Icicles - Customization and General Tips#icicle-sort-orders-alist|icicle-sort-orders-alist]]’</tt>)
* '''##‘M-,’##''' -- `icicle-change-alternative-sort-order' (next alternative sort order)
* '''##‘C-M-,’##''' -- `icicle-toggle-alternative-sorting' (swap with alternative)
* '''##‘C-^’##''' -- `icicle-toggle-remote-file-testing'  (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-test-for-remote-files-flag|icicle-test-for-remote-files-flag]]’</tt>)
* '''##‘C-^’##''' -- `icicle-toggle-highlight-all-current' (search)  (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-search-highlight-all-current-flag|icicle-search-highlight-all-current-flag]]’</tt>)
* '''##‘C-M-^’##''' -- `icicle-toggle-completions-format' (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-toggle-completions-format|icicle-toggle-completions-format]]’</tt>)

* '''<tt>‘C-#’</tt>''' -- `icicle-cycle-incremental-completion' (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-incremental-completion-flag|icicle-incremental-completion-flag]]’</tt>)
* '''##‘C-(’##''' -- `icicle-next-TAB-completion-method'  (next method in option <tt>‘[[Icicles - Customization and General Tips#icicle-TAB-completion-methods|icicle-TAB-completion-methods]]’</tt>)
* '''##‘C-`’##''' -- `icicle-toggle-regexp-quote' (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-regexp-quote-flag|icicle-regexp-quote-flag]]’</tt>)
* '''##‘C-M-`’##''' -- `icicle-toggle-literal-replacement' (search)  (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-search-replace-literally-flag|icicle-search-replace-literally-flag]]’</tt>)
* '''##‘C-$’##''' -- `icicle-toggle-transforming': removal of duplicates (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-transform-function|icicle-transform-function]]’</tt>)
* '''`C-pause'''' -- `icicle-toggle-highlight-historical-candidates' (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-highlight-historical-candidates-flag|icicle-highlight-historical-candidates-flag]]’</tt>)
* '''`S-pause'''' -- `icicle-toggle-highlight-saved-candidates' (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-highlight-saved-candidates-flag|icicle-highlight-saved-candidates-flag]]’</tt>)
* '''`C-S-pause'''' -- `icicle-toggle-WYSIWYG-Completions' (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-WYSIWYG-Completions-flag|icicle-WYSIWYG-Completions-flag]]’</tt>)
* '''`M-g''''     -- `icicle-toggle-C-for-actions'  (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-use-C-for-actions-flag|icicle-use-C-for-actions-flag]]’</tt>)
* '''`M-q'''' -- `icicle-toggle-search-whole-word' (search)  (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-search-whole-word-flag|icicle-search-whole-word-flag]]’</tt>)
* '''##‘M-(’##''' -- `icicle-next-S-TAB-completion-method'   (next method in option <tt>‘[[Icicles - Customization and General Tips#icicle-S-TAB-completion-methods-alist|icicle-S-TAB-completion-methods-alist]]’</tt>)
* '''##‘M-~’##''' -- ##‘icicle-toggle-~-for-home-dir’##   (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-use-tilde-for-home-dir-flag|icicle-use-~-for-home-dir-flag]]’</tt>)
* '''##‘M-_’##''' -- `icicle-toggle-ignored-space-prefix'  (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-ignore-space-prefix-flag|icicle-ignore-space-prefix-flag]]’</tt>)
* '''##‘M-_’##''' -- `icicle-toggle-search-replace-whole' (search) (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-search-replace-whole-candidate-flag|icicle-search-replace-whole-candidate-flag]]’</tt>)
* '''##‘C-M-_’##''' -- `icicle-toggle-proxy-candidates' (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-add-proxy-candidates-flag|icicle-add-proxy-candidates-flag]]’</tt>)







[:icicle-doremi-candidate-width-factor+]
[:icicle-doremi-inter-candidates-min-spaces+]
[:icicle-doremi-zoom-Completions+]
The following minibuffer bindings let you incrementally change
options that affect the `*Completions*' display columns and text
size.  To take
advantage of these, you must also use '''DoReMi'''.

* '''`C-x w'''' -- ##‘icicle-doremi-candidate-width-factor+’## (requires 
<tt>[[doremi.el]]</tt>)  (increment option <tt>‘[[Icicles - Customization and General Tips#icicle-candidate-width-factor|icicle-candidate-width-factor]]’</tt>)
* '''##‘C-x |’##''' -- ##‘icicle-doremi-inter-candidates-min-spaces+’## (requires 
<tt>[[doremi.el]]</tt>) (increment option <tt>‘[[Icicles - Customization and General Tips#icicle-inter-candidates-min-spaces|icicle-inter-candidates-min-spaces]]’</tt>)
* '''`C-x -'''' -- ##‘icicle-doremi-zoom-Completions+’## (requires 
<tt>[[doremi-frm.el]]</tt> and Emacs 23 or later)
* '''##‘C-x #’##''' -- increment/decrement option <tt>‘[[Icicles - Customization and General Tips#icicle-max-candidates|icicle-max-candidates]]’</tt>

When used in the minibuffer, the following '''Icicles''' global binding lets you remove the `*Completions*' window.

[:icicle-delete-window]

* '''`C-x 0''''  -- `icicle-remove-Completions-window'




The following minibuffer bindings are in effect
during '''Icicles''' [[Icicles - Search Commands, Overview|search]]:

[:icicle-toggle-search-cleanup]
[:icicle-toggle-search-replace-whole]
[:icicle-search-define-replacement]
[:icicle-toggle-search-whole-word]
[:icicle-toggle-highlight-all-current]
[:icicle-toggle-literal-replacement]

* '''##‘C-.’##''' -- `icicle-toggle-search-cleanup'  (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-search-cleanup-flag|icicle-search-cleanup-flag]]’</tt>)
* '''##‘C-,’##''' -- `icicle-change-sort-order' (next sort order in option <tt>‘[[Icicles - Customization and General Tips#icicle-sort-orders-alist|icicle-sort-orders-alist]]’</tt>)
* '''##‘M-,’##''' -- `icicle-search-define-replacement'
* '''##‘M-;’##''' -- `icicle-toggle-search-replace-common-match'  (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-search-replace-common-match-flag|icicle-search-replace-common-match-flag]]’</tt>)
* '''`M-q'''' -- `icicle-toggle-search-whole-word'  (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-search-whole-word-flag|icicle-search-whole-word-flag]]’</tt>)
* '''##‘C-^’##'''    -- `icicle-toggle-highlight-all-current' (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-search-highlight-all-current-flag|icicle-search-highlight-all-current-flag]]’</tt>)
* '''##‘C-M-`’##'''  -- `icicle-toggle-literal-replacement' (toggle option <tt>‘[[Icicles - Customization and General Tips#icicle-search-replace-literally-flag|icicle-search-replace-literally-flag]]’</tt>)





The following minibuffer binding lets you evaluate an EmacsLisp
[[sexp]] at any time, using a recursive minibuffer.  It displays the result of evaluation in the [[echo area]] or in
a pop-up buffer, ##‘*Pp Eval Output*’##.  With a prefix argument (‘C-u M-:’), it inserts the result into the minibuffer at [[point]].

[:icicle-pp-eval-expression-in-minibuffer]

* '''##‘M-:’##''' -- `icicle-pp-eval-expression-in-minibuffer'




[:OnTheFlyMinibufferBindings]
Some additional bindings are made available in the minibuffer for
the duration of specific commands:

* During completion of names of some kinds of objects (files,
   buffers, directories, Info nodes), '''`C-x m'''' lets you complete
   against bookmarks that have the same type as those objects (file
   bookmarks, buffer bookmarks, Dired bookmarks, Info bookmarks).
   This feature requires use of package '''[[Bookmark+]]'''.

* During completion of file names, '''`C-backspace'''' is bound to
  `icicle-up-directory', which navigates to the parent directory
  and completes there instead.

* During completion of bookmark names,
  various keys with the prefix `C-M-' are bound to commands that
  narrow the available candidates to bookmarks of a specific type.
  For example, `C-M-d' narrows the choices to Dired bookmarks.
  (You can also narrow bookmark choices by type using `M-&'.
See [[Icicles - Progressive Completion#Predicates|`M-&': Satisfying Additional Predicates]].)





[:CompletionsListBindings]
The following bindings are made for `completion-list-mode', that
is, for buffer `*Completions*', which shows the list of candidate
completions:

[:icicle-move-to-previous-completion]
[:icicle-move-to-next-completion]
[:icicle-previous-line]
[:icicle-next-line]
[:icicle-insert-completion]
[:icicle-abort-recursive-edit]
[:icicle-top-level]
[:icicle-beginning-of-line]
[:icicle-end-of-line]
[:icicle-mouse-choose-completion]
[:icicle-mouse-candidate-action]
[:icicle-mouse-help-on-candidate]
[:icicle-Completions-mouse-3-menu]
* '''`left'''', '''`right'''' (`TAB') -- `icicle-move-to-previous-completion', `icicle-move-to-next-completion': Navigate backward & forward among candidates.
* '''`up'''', '''`down'''' -- `icicle-previous-line', `icicle-next-line': Navigate up & down among candidates.
* '''`C-insert'''' -- `icicle-insert-completion': Move
cursor to the minibuffer, with the current `*Completions*' candidate
as input.
* '''`C-a'''', '''`C-e'''' -- ##‘icicle-beginning-of-line+’##, ##‘icicle-end-of-line+’## (repeatable)
* '''`C-g'''', '''`q'''' -- `icicle-abort-recursive-edit'
* ''''`C-M-T'''' (aka `C-M-S-t') -- `icicle-top-level'
* '''`mouse-2'''' -- `icicle-mouse-choose-completion' (Emacs <23.2)
* '''`C-mouse-2'''' -- `icicle-mouse-candidate-action'
* '''`M-mouse-2'''' -- `icicle-mouse-candidate-read-fn-invoke'
* '''`C-M-mouse-2'''' -- `icicle-mouse-help-on-candidate'
* '''`M-S-mouse-2'''' -- `icicle-mouse-save/unsave-candidate': click candidate to save or unsave
* '''`C-mouse-3'''' -- `icicle-Completions-mouse-3-menu'
* '''`M-mouse-3'''' -- `icicle-mouse-candidate-set-save-more': add region candidates or clicked candidate to saved set
* '''`M-S-mouse-3'''' -- `icicle-mouse-candidate-set-save': save candidates in region or save clicked candidate
* '''`wheel-down''''  -- `icicle-scroll-Completions-backward'
* '''`wheel-up''''    -- `icicle-scroll-Completions-forward'

----


|| *Previous:*  [[Icicles - File-Name Completion Tips]] || '''[[Icicles]]''' || IciclesIndex || *Next:* [[Icicles - Customizing Key Bindings]] ||



DrewsElispLibraries referenced here: Lisp:icicles.el


CategoryKeys
CategoryMenus
CategoryCommands 
CategoryBufferSwitching
CategoryCompletion
CategoryRegexp
CategoryDocumentation
CategoryHelp
CategoryRegion
CategoryModes
CategoryDirectories
CategoryFiles
CategoryProgrammerUtils
CategoryCode

