You can report an Icicles issue (bug) on this page – please follow the formatting suggestion provided below (HowToUseThisPage).
Alternatively, you can report an Icicles issue by email, by doing one of the following:
‘C-h’from the minibuffer; (2) click button Icicles Options and Faces in buffer
‘*Help*’; (3) click link
‘Send Bug Report’in buffer `
*Customize Group: icicles*’
Always mention your Emacs version and platform (e.g. Windows, GNU/Linux). If you aren’t using the latest Icicles files, let me know which you are using. Icicles files each have an
Update # field in the header, which identifies the file exactly.
The advantage of reporting a bug here is that others can share in the discussion. The advantage of reporting a bug by email is that I will see it immediately. Sometimes I don’t notice a bug report on this page for a while.
1. If you use the debugger to report a backtrace then you should first ensure that you are using the Icicles source files (
icicles*.el) and not their byte-compiled versions (
icicles*.elc). If you normally use byte-compiled files (recommended), then either load the source files after the byte-compiled files or do not load the byte-compiled files at all. To prevent loading the byte-compiled files you can either delete them or temporarily move them out of your
2. By default, in Icicle mode, some code captures errors that are raised, so that you can continue working. For example, when you initiate an action command from the minibuffer and it raises an error, the error is suppressed so that you can continue with completion.
For debugging you will often want to turn off this capture of errors. You can do this by temporarily setting
‘debug-on-error’ to non-
‘nil’. This will cause an error that would normally be captured (handled, not raised) to enter the debugger.
Similarly, to enter the debugger on
‘C-g’, even in contexts that would normally handle a
‘quit’ signal specially, set
‘debug-on-quit’ to non-
For readability, please separate each issue thread with
‘----’ (horizontal line), and introduce each entry within a thread with `
Better yet, use this to separate threads (puts space before and after the horizontal line):
</pre> ---- <pre>
Enter your report below.
system: Ubuntu 12.04.1 LTS
emacs: GNU Emacs 24.2.1 (x86_64-pc-linux-gnu, GTK+ Version 2.24.10) of 2012-11-09 on lakoocha, modified by Debian.
icicles update: Update #: 9921
icicles rewrites entire tag list when autocompleting tags for an org-mode entry
step to reproduce:
1. Start emacs with icicles in the .emacs file
2. Visit org-mode file ( “temp.org” )
3. Put down two entries with different tags:
* one_________ :AAA: * another_____ :BBB:
4. Try to add third entry with both tags
With icy-mode enabled:
I’ve forced to choose either :AAA: or :BBB:, not both
With icy-mode disabled:
I’m typing “A tab B tab Enter” and get :AAA:BBB: as a result
I’ve just disabled icy-mode for org major mode for now, so it is not a big case. – [[Ayvango?]]
I got clarification from someone else about the recipe:
* a :aaa: * b :bbb: * c
Then, with point after the
‘C-c C-c’, then
‘a TAB’, then
‘b TAB’. Vanilla Emacs lets you do multiple, consecutive completions, in this case to `
aaa:bbb:’, but Icicles does not.
I’m afraid I don’t have a workaround for this problem, and I won’t have a fix for it anytime soon. Sorry – DrewAdams
More precise repro recipe:
1. visit some file with org mode e.g. “temp.org”
2. paste there lines below (they would be parsed by org)
* one :AAA: * two :BBB: * three
3. Go to line “three” (Alt-g Alt-g 5)
4. Press (C-c C-q) and thus invoke tag editing.
Line three have no tags, line one have tag :AAA:, line two have tag :BBB: Now we editing tag list for the third line and using existing tags in the file for completion
5. Original way without icicles
after completing first tag separator “:” would be put and org-mode become ready for next tag competion
Type “A tab B tab Enter” and line three would be tagged with both tags: “:AAA:BBB:”
6. How icicles changes tag completion:
After typing “A tab” the tag would be completed to AAA, if you type B after that, it would be completed to BBB overriding AAA tag. – [[Ayvango?]]
Yes, that is the same recipe, essentially. Sorry, I don’t have a solution for it. – DrewAdams
I am using Icicles with Emacs 24.1 and 23.4, both exhibit the same completion behavior. When I TAB to complete in the minibuffer while using find-file, the completion is appended to the input text. This differs from expansion in when using execute-command. I was expecting the buffer input to be replaced by the completion when hitting tab. The same behavior exists for apropos-completion. Is there any way to have completions expand and replace the existing input in the mini buffer? – DanColish
Sorry, I don’t understand.
1. I guess you are using
‘find-file’, and not just
‘C-x C-f’ (which at least by default is bound to
‘icicle-file’). Not a problem, but please confirm which command is used.
2. Do you use non-
‘insert-default-directory’? Does the bug behavior change if you do or do not? Please mention any other customizations (Icicles or otherwise) that you think might affect the behavior.
3. Can you give a step-by-step recipe? For example,
‘M-x find-file’ shows this in the minibuffer:
Find file: /my/dir/
b. You type
‘toto’ and hit
Find file: /my/dir/toto TAB
‘toto’ is completed in the minibuffer to the common prefix
‘toto-foo’, and the full completions are shown in
Find file: /my/dir/toto-foo
d. You type
Find file: /my/dir/toto-footiti
You get the idea – please try to be more specific about what you do, what you see, and what you expect or want to see instead.
Also, if you are using other libraries that you think might interact, try reporting what happens with only Icicles (i.e.,
emacs -Q, then load Icicles). Thx – DrewAdams
Sorry, I am using
‘C-x C-f’. I thought that called ‘find-file’ which called ‘icicle-file’.
Currently, I have
‘insert-default-directory’ set non-
‘nil’. I tried setting it to
‘nil’ but the behavior did not change. The other customizations I have are:
(custom-set-variables '(icicle-Completions-text-scale-decrease 0.1) '(icicle-TAB-completion-methods (quote (vanilla basic))) '(icicle-buffers-ido-like-flag nil) '(icicle-download-dir "~/.emacs.d/icicles") '(icicle-expand-input-to-common-match 2) '(icicle-files-ido-like-flag t) '(icicle-incremental-completion (quote always)) '(icicle-mark-position-in-candidate (quote root-start)) '(icicle-max-candidates nil) '(icicle-point-position-in-candidate (quote root-end)) )
For example, I do a
‘C-x C-f’ over this dir structure:
~/workspace ./xapian-github ./xapian ./xapian-core ./include ./xapian/ ./database.h
I would like to only type:
~/workspace/xap/xap-cor/inc/xapi and use
‘TAB’ to expand. However, when I do hit tab the minibuffer input ends up like this:
File or directory: ~/workspace/xap/xap-cor/inc/xapi/xapian/xapian-core/include/xapian/database.h
If I were to hit
‘RET’, a new buffer would be created under that complete dir structure.
I should add that I also tried this with
emacs -Q and loading Icicles with my customizations. – DanColish
I cannot reproduce the problem with those settings (or with different ones). With the incremental completion settings and Ido setting the way you have them, do you even need to hit
‘TAB’? I get immediate (eager) completion as soon as I type.
Perhaps the problem has something to do with what is in those directories, e.g., whether there is more than one subdir, so more than one possibility. Try to come up with a tiny (minimal) directory structure that I can use to try to reproduce the problem (although things might be a bit different because I am using MS Windows).
The fewer customizations you have to repro the problem, the easier it will be to debug. Try to come up with something that minimally reproduces the problem. (And leave
‘insert-default-directory’ = non-
Are you sure you have
(vanilla basic) at the time you test? Can you please use `
C-(’ during completion to cycle to
‘VANILLA’, to be sure vanilla completion is current? The completion you seem to see looks more like
Sorry for your trouble. BTW, if you prefer to follow up using email instead of the wiki, that will also be easier for me. Thx – DrewAdams
I’ve found another little bug: when i go to another machine with tramp, like `/ssh:email@example.com:/pasja’ and hit the famous tab key, the machine part goes to the completion. My prompt looks like `/ssh:firstname.lastname@example.org:/email@example.com’. Of course this directory does not exist in my home folder, and i have to delete back, to get the real completion. After that is could use it normally.
What Emacs version are you using, and what Tramp version? – DrewAdams
Emacs: GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0) of 2010-12-11 on raven, modified by Debian
I’m having a problem that is really frustrating me. I’ve got a new version of icicles from git. The old version I had when I did M-x cir TAB would instantly complete to circe. Now i have to hit tab multiple times. It’s really frustrating me that I can’t figure out how to fix this problem. – DaveKerschner
Sorry for your trouble. Please always report your Emacs version etc. I recommend that you use
‘M-x icicle-send-bug-report’. Please provide a complete recipe to reproduce your problem, preferably starting with
emacs -Q. When I do
‘M-x cir TAB’ I get no completions - there are no commands with that prefix in my session. You should not need to hit
‘TAB’ multiple times to complete. If you hit
‘TAB’ multiple times then, after the first, you are cycling among the matches to your current input. If there is only one match, then
‘TAB’ completes to it immediately.
If you got Icicles from a git repository somewhere, then I know nothing about what you got. The latest files are always here, on the wiki. For information about what files you need and how to download them in bulk see Icicles - Libraries. – DrewAdams
Hi Drew, a fresh checkout of Icicles stopped working on emacs 24.0.90. Here’s the backtrace:
Debugger entered--Lisp error: (invalid-function icicle-define-bookmark-command) icicle-define-bookmark-command("non-file") byte-code("\300\301!\210\302\301!\... require(icicles-cmd1) byte-code("\300\301!\210\300\302!\... require(icicles)
1. A backtrace from byte-compiled code is useless, I’m afraid. Always load only the (Icicles) source files (
*.elc) before creating a backtrace to report.
2. Please be sure to download the latest Icicles files. If you byte-compile the files (not for debugging, but for use), which I recommend, then please read and follow the note in the header of icicles-mac.el (it is repeated in icicles.el and icicles-chg.el). Here it is again:
;; ****************** ;; NOTE: Whenever you update Icicles (i.e., download new versions of ;; Icicles source files), I recommend that you do the following: ;; ;; 1. Delete all existing byte-compiled Icicles files ;; (icicles*.elc). ;; 2. Load Icicles (`load-library' or `require'). ;; 3. Byte-compile the source files. ;; ;; In particular, always load `icicles-mac.el' (not ;; `icicles-mac.elc') before you byte-compile new versions of the ;; files, in case there have been any changes to Lisp macros (in ;; `icicles-mac.el'). ;; ******************
(This is the case for all use of EmacsLisp macros, BTW.)
3. I do not support Emacs 24 for Icicles. Emacs 24 has not yet been released. I use it myself, and you are welcome to use it with Icicles, but all bets are off wrt support and debugging. If you are using it, I suggest you download the pretest, which is now available. Thx – DrewAdams
Hi Drew, I would like to have Icicle Imenu (or variant) insert the Imenu match at point. The use would be to insert text (Imenu match) anywhere in the file WITHOUT having point jump to another location copy, jump back then paste. A more interesting version would cycle sub-matches and allow the user to continue selecting\inserting until the user ended the command. Is this possible? Thanks Mike
IIUC, you want to be able to choose a definition start string (e.g. for a function, variable, etc.) in the buffer, and have that string be inserted at point. And preferably the command to do this would be a multi-command, so you could use
‘C-RET’ to insert multiple such choices. Is that right?
If so, there is no command to do that, but you could define one. What is the use case? Why would you want to, e.g., insert a string such as
(defun icicle-color-help in the buffer? Or did you mean
‘icicle-imenu-full’ instead of
‘icicle-imenu’, so you would insert the full definition (all of its code)? I still don’t understand why that would be helpful – why not just move to the definition, select it using
‘C-M-h’, jump back, and insert the region?
Please describe what you want a bit more. To define such a command, you would keep the “choosing” part of the regular Icicles Imenu command, then just insert that choice at point using
‘insert’. To make it into a multi-command, you would just use
‘icicle-define-command’ instead of
‘defun’. I can be more specific about these things, but I would like to better understand why this would be useful: your use case. Thx – DrewAdams
I’m trying my first steps with icicles, and I seem to be missing something fundamental. I’m using GNU Emacs 23.4.1 (i686-pc-linux-gnu, GTK+ Version 2.20.1).
1. Trying to find a file (C-x C-f) under “/foo/bar/prefix_many_candidates_unique/”, I’m using prefix completion (TAB) until the minibuffer shows /foo/bar/prefix and the completion buffer displays lots of candidates. I’m interested in the candidate with the unique suffix “unique”. I thought that changing to regexp completion was a good idea. In response to S-SPC the minibuffer says “Match also (regexp)” (as expected). Entering the suffix “unique”, the minibuffer’s contents change to “prefix_many_candidates_unique/”. Good. How do I proceed from here? Hitting “RET” or “S-return” I’m instructed “Use M-x make-directory RET RET to create the directory and its parents”, and I find myself in a buffer “~/prefix_many_candidates_unique/”. Essentially, “/foo/bar/” from prefix completion is lost. What am I missing here?
2. When writing a file (C-x C-w) I’d like to create a directory on the fly. Based on the description in Icicles - File-Name Input, I was hoping for icicle-make-directory. However, “C-c +” is not bound in that situation (it is bound when finding files via C-x C-f, though). Is there a way to enable that that keybinding (and others) for write-file as well? – JensLechtenboerger
Sorry, I didn’t notice your post until now. I moved it to this page from IciclesDiscussion because #1 is a bug, I think. You can also email me; that is more sure than hoping I see a post on the wiki, especially since page IciclesDiscussion keeps getting spammed and rolled back.
1. I think what you are describing is a known Icicles bug that I have not yet had a chance to fix. If so, as a workaround try setting
‘t’. If that does not work then please come back to me.
2. The discussion at Icicles - File-Name Input that mentions `
C-c +’ is not about commands that act on files or read file names in general. As it says, it is about “Icicles commands that read file names.”
There is currently no Icicles replacement command for
‘C-x C-w’ is the ordinary Emacs command
‘write-file’, even in Icicle mode. The only thing that Icicles offers for it is the general enhancement of completion that it provides for
‘read-file-name’) — no extra key bindings, and no multi-command behavior.
If you wanted, you could define your own multi-command to replace
‘write-file’, using macro
‘icicle-define-file-command’ (be sure to
(require 'icicles-mac) in that case for the file that contains your definition).
In your multi-command definition you would use macro
‘icicle-file-bindings’ to pick up bindings such as `
C-c +’. For an example, look at the definition of
‘icicle-find-file-no-search’. For the action function of the multi-command, you would use just
‘write-file’. Something like this:
(icicle-define-file-command icicle-write-file ; Command name "Multi-command version of `write-file'." ; Doc string write-file ; Action function ;; `read-file-name' args - they depend on behavior you want "Write file: " default-directory nil nil nil nil (icicle-file-bindings) ; Extra bindings (icicle-bind-file-candidate-keys) ; First code nil ; Undo code (icicle-unbind-file-candidate-keys)) ; Last code
HTH – DrewAdams