Long time ago I updated Helm and it replaced normal Icicles behaviour for choosing files.

I had icicles bound to C-x C-f:

C-x C-f runs the command icicle-file, which is an interactive Lisp
function in `icicles-cmd1.el'

But after the Helm update Emacs began to open helm-find-file over-designed dialog instead of normal behaviour. The user experienced dropped hereafter.

Today my patience has run out and I determined to break Helm and Icicles integration. Could you advise me from which side should I begin my quest?

1 Answer 1


Icicles does not do anything to "integrate with" Helm. Perhaps Helm does something to "integrate with" Icicles, but I doubt it.

More likely is that you loaded some other library (perhaps a Helm add-on someone wrote) that grabs some of the key bindings that Icicles uses by default.

If the only problem you have is key bindings then my suggestion would be to customize the bindings the way you like.

The place to start is C-h k followed by the key you're interested in. That should tell you what command it is bound to, and what library/file it is defined in. If it does not tell you the file but it tells you only that the key is bound to command some-helmish-whatever then search (e.g. M-x grep) the source code of the libraries you use, to find out where it is defined, where it is bound to the key, and in what keymap it is bound to that key. You can then just unbind it from that keymap, if you want (i.e., bind it to nil in that map).

If you don't easily find out which code is grabbing the Icicles bindings you want Icicles to have, or you don't want to try that, then an alternative is to make Icicles use different key bindings.

That is easy to do. There are Icicles user options for customizing each group of Icicles default keybindings. The Icicles doc, section Customizing Key Bindings tells you all about this.

If it is a top-level key that you're interested in, such as C-x C-f, then the option to customize is icicle-top-level-key-bindings. Just bind some other key to the command (icicle-file) that Icicles binds by default to C-x C-f.

Looking at the option value you can see that by default Icicles remaps vanilla Emacs command find-file to Icicles command icicle-file. In file icicles-opt.el you'll see "`C-x C-f'" as a comment next to the line that does that.

So in this case, instead of Icicles explicitly binding (by default) key C-x C-f to icicle-file, it instead remaps all keys bound to command find-file to icicle-file (while in Icicle mode).

If some other library (Helm or whatever) itself remaps find-file first then there will be no keys bound to it for Icicles to remap. In that case, you can try changing the order of invocation, invoking icy-mode before the other (e.g. Helm) mode. Or you can try the other way around.

But a simple alternative is to just add some other binding to icicle-top-level-bindings, to use some key other than C-x C-f for icicle-file.

  • > The place to start is C-h k followed by the key you're interested in That is exactly what I have done at the first place. And I put the output in the question. "C-x C-f runs the command icicle-file"
    – ayvango
    Commented Sep 28, 2017 at 16:26
  • You say that you had that originally, but after you updated Helm that key instead invokes helm-find-file (so presumably C-h k says help-find-file). Now you can look for the library that defines helm-find-file etc. (if C-h k doesn't tell you). Without more info I can't offer more help, I think. Maybe provide a step-by-step recipe, if you are doing something more then just trying C-x C-f at top level.
    – Drew
    Commented Sep 28, 2017 at 20:06
  • That is what appointed currently to C-x C-f. It runs icicle-file. But it displays helm instead of normal choices. So it is some kind of integration: I call icicle-file and get helm after that, so icicles now for some reason calls helm to provide file choices
    – ayvango
    Commented Sep 29, 2017 at 3:05
  • Dunno. Take a look at the code for helm-find-file (or whatever helmish function is actually doing the displaying). Icicles is not calling it, but it might well have gotten itself invoked. Do M-x debug-on-entry helm-find-file, and when it comes up in the debugger you'll likely see how it was invoked. Perhaps it advises some display function, coopting it. Or perhaps someone here familiar with it will offer a suggestion.
    – Drew
    Commented Sep 29, 2017 at 4:23
  • BTW, googling a bit suggests that the Helm function is helm-find-files, not helm-find-file. If you're seeing the latter then perhaps it's not from Helm itself. If you're really seeing the former the that's what to debug-on-entry, to see how it is being invoked.
    – Drew
    Commented Sep 29, 2017 at 4:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.