: [[image:iciclesimage]]

|| *Previous:*  IciclesIssues || '''[[Icicles]]''' || IciclesIssuesStale || IciclesIssuesClosed || 

----

== Open Icicles Issues ==

This page is for discussion of open issues you might have with library '''<tt>[[icicles.el]]</tt>''' ('''[[Icicles]]'''), including bugs.

See also:

* IciclesIssuesStale -- Issues that users did not follow up on -- never heard back from them. Could mean that the problem is not a problem; could mean that they gave up ;-).

* IciclesIssuesClosed -- Issues that were resolved. Bugs that were fixed. Explanations of non-bugs. Issues from this page (IciclesIssuesOpen) and IciclesIssuesStale are moved there when they are resolved.

* IciclesDiscussion -- General discussion about the library, feedback, possible uses, and possible enhancements.












=== How To Report an Icicles Issue ===

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:

* Choose item '''Send Bug Report''' from MenuBar menu '''Icicles'''
* `##M-x icicle-send-bug-report##'
* (1) `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 <code>Update #</code> 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.










=== Debugging Tips ===

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 `load-path'.

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-`nil'.











[:HowToUseThisPage]
=== How To Use This Page ===

For readability, please separate each issue thread with `----' (horizontal line), and introduce each entry within a thread with `<code>[new]</code>'. 

Better yet, use this to separate threads (puts space before and after the horizontal line):


<pre>

</pre>
----
<pre>

</pre>






















== (Open) Issues ==


''Enter your report below.''






<pre>

</pre>
----
<pre>

</pre>


[new] 
I have a question about `icicle-locate-file'. How does it work? Both the function documentation and the wiki say that I can find files in subdirectories with it, but none of them say how. So I use this command with a prefix argument, provide the directory, and then I can enter something, but then I don't know what to do. Hitting tab or shift-tab doesn't do anything, and hitting enter will open an empty file with a name that is the regular expression. Am I missing something? The documentation doesn't explain what to do. -- [[Bernhard]]


[new:DrewAdams:2014-09-02 14:59 UTC]

Start by using `icicle-locate-file' without a [[prefix argument]], to get the hang of it.  Without a prefix arg, all files in and under the current directory are completion candidates.

So first navigate to the directory that you think contains the file(s) you are looking for, either directly or recursively (via subdirectories). Then do this: `M-x icicle-locate-file'.

Then hit `TAB' or `S-TAB' to see all of the files in and under the current directory, as candidates.  Or type some text to match first, then hit `TAB' or `S-TAB' to show all files that match it as candidates.

Then use the arrow keys to navigate to a file name, and hit `RET' to visit that file and end the command. Or hit `C-RET' to visit it without exiting the command; then navigate to another file and hit `C-RET', and so on, ending either by `RET' or `C-g'.

`S-TAB' gives you [[apropos completion]]; `TAB' gives you [[prefix completion]].

You can match multiple patterns by using [[progressive completion]].  For more information, consult the '''Icicles''' [[Icicles|doc]] (for general info about using '''Icicles''') or the [[Icicles - File-Name_Input|doc]] for using '''Icicles''' for finding files. 

A prefix arg gives you other options, but start without it. Also, be sure you have the latest '''Icicles''' files (there was a bug a while ago that affected the use of a plain prefix arg here).  -- DrewAdams


[new]
Thanks for your answer. I know how completion and apropos completion works, I have icicle-mode always on.
I have looked a little more into it, and you are right, if I first navigate to a directory and then use `M-x icicle-locate-file', it works as expected.
However, if I use `C-u M-x icicle-locate-file' and then enter a directory, completion works only in this directory, not its subdirectories. I have updated icicles today via the package manager.

Another question came up with the working version. If, say, I have a subdirectory that has txt in its name and contains hundreds of files that do not have txt in their names, icicle-locate-file will provide all of those "non-txt" files for completion. How can I prevent that, listing only files that contain txt in their names?

regards, -- [[Bernhard]]


[new:DrewAdams:2014-09-03 18:16 UTC]
Sorry to say that there is a big bug here, and it affects more than just this command.  I don't know when I'll have the time to look into this properly.  If you can, please send me an email with the description above, so I can keep track of this better and get back to you later.  (You can use `M-x icicle-send-bug-report' to set up the email.)  Thx -- DrewAdams









<pre>

</pre>
----
<pre>

</pre>

[:AyvangoMultiTaggingInOrgMode]

[new:Ayvango:2013-04-07 01:43 UTC]
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

problem:

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]]



[new:DrewAdams:2013-04-07 05:01 UTC]
I got clarification from someone else about the recipe: 

: Create a new buffer, M-x org-mode RET.  Insert this:

{{{
* a :aaa:

* b :bbb:

* c
}}}

Then, with point after the `c', hit `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



[new:Ayvango:2013-04-07 10:20 UTC]
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]]


[new:DrewAdams:2013-04-07 18:03 UTC]
Yes, that is the same recipe, essentially. Sorry, I don't have a solution for it. -- DrewAdams









<pre>

</pre>
----
<pre>

</pre>


[:DanColishFileNameCompletion]
[new:DanColish:2012-07-31 20:00 UTC]
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


[new:DrewAdams:2012-07-31 20:50 UTC]
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-`nil' `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,

a. `M-x find-file' shows this in the minibuffer:

  Find file: /my/dir/

b. You type `toto' and hit `TAB':

  Find file: /my/dir/toto TAB

c. `toto' is completed in the minibuffer to the common prefix `toto-foo', and the full completions are shown in `*Completions*'.

  Find file: /my/dir/toto-foo

d. You type `titi'

  Find file: /my/dir/toto-footiti

Etc.

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


[new:DanColish:2012-07-31 21:36 UTC]
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:

<pre>
(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))
)
</pre>

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


[new:DrewAdams:2012-08-01 00:57 UTC]
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-`nil'.)

Are you sure you have `icicle-TAB-completion-methods' = ##(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 `BASIC'.

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















<pre>

</pre>
----
<pre>

</pre>

[new] 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

[new:DrewAdams:2011-12-16 22:31 UTC]
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









<pre>

</pre>

----
<pre>

</pre>



[new]
Hi Drew,
a fresh checkout of Icicles stopped working on emacs 24.0.90. Here's the backtrace:

<pre>
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)
</pre>

-- 46.165.196.182

[new:DrewAdams:2011-10-18 17:00 UTC]
1. A backtrace from byte-compiled code is useless, I'm afraid.  Always load only the ('''Icicles''') source files (##*.el##, not ##*.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 <tt>[[icicles-mac.el]]</tt> (it is repeated in <tt>[[icicles.el]]</tt> and <tt>[[icicles-chg.el]]</tt>).  Here it is again:

<pre>
;;  ******************
;;  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').
;;  ******************
</pre>

(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


















<pre>

</pre>
----
<pre>

</pre>


[new:Anonymous:2011-10-10 04:29 UTC]
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






[new:DrewAdams:2011-10-10 13:15 UTC]

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









<pre>

</pre>
----
<pre>

</pre>

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

[new:DrewAdams:2013-03-25 03:55 UTC]
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 `insert-default-directory' to `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 `write-file'.  Instead, `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' (since `write-file' uses `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-delete-file', `icicle-dired', or `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

----

Hi Drew.  Thanks for icicles.  A great package.
I just tried bring icicles up on a system new to me.

The sytem is running on RedHatEnterprise 8.8
I am using this version of emacs:

GNU Emacs 28.2 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.20, cairo version 1.16.0) of 2023-06-02

This was installed via snap.

I have compiled icicles with this version of emacs.

I tried to open a new frame and switch to a different buffer using C-x 5 b 
I did C-h k to get the actual command run: 

C-x 5 b runs the command switch-to-buffer-other-frame (found in
global-map), which is an interactive native-compiled Lisp function in
‘/var/lib/snapd/snap/emacs/2031/usr/share/emacs/28.2/lisp/window.el’.

I am seeing this error message: 

read-buffer-to-switch: Wrong number of arguments: #<subr icicle-read-buffer>, 4

Not sure if this is an icicles issue or if it is something else.

[new:DrewAdams:2023-07-27 16:55 UTC]

Should be OK now. Please download latest `icicles-fn.el'. Thx.

----

|| *Previous:*  IciclesIssues || '''[[Icicles]]''' || IciclesIssuesStale || IciclesIssuesClosed || 


CategoryCompletion
