-
-
Notifications
You must be signed in to change notification settings - Fork 389
- Errors with helm-adaptive-mode
- Errors when running make
- I installed Helm with Straight and emacs-helm.sh is not working
- Where is Helm documentation?
- Why does MELPA update give errors?
- When using a prefix argument with
helm-M-x
? - How do I get Helm and Popwin to play nice?
- What happened to the
grep
andmulti-occur
commands? - Why can’t I exit
completing-read
with an empty string? - Why am I getting warnings when compiling with emacs-24.3.1?
- Why is
function-put
void? -
Why is a customizable Helm source
nil
? - Why did the debugger enter Lisp error when using session.el?
- Why helm-mode is so long to startup?
- helm-mode conflict with ido-everywhere
- Why after enabling helm-mode
M-x
andC-x C-f
are not helmized? - Can you modify the emacs vanilla helmized command to behave differently?
- Most actions are customizable but can I add actions depending on context?
- What are all these helm buffers around?
- Org tag completion is not working
- Use setq or customize?
- How do I save my variables persistently
- Slow frame and window popup in emacs-26
Probably your `helm-adaptive-history-file` is corrupted reset it with M-x helm-reset-adaptive-history.
See Issue #1764 for more infos.
When installing Helm from sources you may have such error when compiling with make:
helm.el:32:1:Error: Cannot open load file: aucun fichier ou dossier de ce type, async
If you have such error, that’s mean emacs-async package is not
installed, or it is installed but not in a standard place and helm
can’t find it, so you have to specify where to find it with
EMACSLOADPATH
environment variable. Specify it on the command line
like this:
EMACSLOADPATH="/path/to/emacs-async:" make
Or even better install emacs-async from sources with make
and make install
or from (M)ELPA.
See Installation for more details.
Specify the path to emacs-async:
cd ~/.emacs.d/straight/repos/helm
EMACSLOADPATH="../emacs-async:" ./emacs-helm.sh
Hit “C-h m” within a Helm session, or use the “helm-documentation” command.
A tip to hit C-h m
within a Helm session can be found on the mode line. All help pages are grouped in a Org file generated by the command helm-documentation
.
You should not encounter this problem anymore.
Helm, when installed from (M)ELPA, specifies a dependency on emacs-async, which should resolve this problem. If it does happen, however, do the following:
- Uninstall
helm
andasync
withpackage-list-packages
. - Close Emacs
- Start
emacs -Q
. - Reinstall
helm
frompackage-list-packages
. - Restart Emacs
If problem persists, report an issue.
- After upgrading (helm or whatever), you will have to restart emacs (expect problems otherwise).
- emacs-async is available as async in MELPA.
- Async compilation of packages can be disabled per package or globally in
async-bytecomp.el
. If you do so, don’t complain if you have errors after upgrading Helm or Helm modules.
Use prefix args after starting helm-M-x, not before.
Read the Helm documentation (helm-documentation
, bound by default to <helm-prefix> h h
).
Also see Wiki page for helm-M-x
.
Update: After Helm v1.9.8, using a prefix argument before helm-M-x
is possible. See https://github.com/emacs-helm/helm/wiki/Commands
See the wiki page on working with Popwin.
They have been removed due to redundancy.
The grep
(helm-do-grep
, helm-do-zgrep
, helm-do-pdfgrep
) and multi-occur
(helm-multi-occur
) commands
got removed because they were unuseful as you can use them from helm-find-files
and file-related commands (e.g. helm-locate
).
So now if you want to run helm grep, start helm-find-files
, choose you files and hit C-s
.
The only difference now is that you hit C-s
instead of RET
. Not the end of the world!
Hit C-RET or M-RET.
This can be seen in the mode line.
Don’t be afraid, just ignore them ;-).
Helm has no warnings when compiling with emacs-24.4 or later. When compiling with 24.3, you may have many warnings (due to bugs in Emacs itself related to lexical binding and EIEIO).
Reinstall Helm.
This is due to a bad installation of Helm (see here).
If the source is nil
, it is probably set up when command starts, and may be defined using helm-make-source
with a specialized class.
If the source is defined with a specialized class (not a generic class like helm-source-sync
, helm-source-async
, helm-source-in-buffer
, helm-source-dummy
, etc.), you can add a new defmethod
in your init file like:
(defmethod helm-setup-user-source ((source helm-source-ffiles))
(helm-source-add-action-to-source-if
"Byte compile file(s) async"
'async-byte-compile-file
source
'helm-ff-candidates-lisp-p))
or
(defmethod helm-setup-user-source ((source helm-source-multi-occur))
(setf (slot-value source 'follow) 1))
You can also set up the source yourself:
(with-eval-after-load "helm-regexp.el"
(setq helm-source-occur (helm-make-source "Occur" 'helm-source-multi-occur
:follow 1))
(setq helm-source-moccur (helm-make-source "Moccur" 'helm-source-multi-occur
:follow 1)))
NOTE: In these examples the follow
slot is used, but note that
starting from helm-2.1.0 to setup follow persistently, the only thing
you have to do is
(setq helm-follow-mode-persistent t)
and when you hit C-c C-f
in any source helm-follow-mode will be
turned on now and for next emacs sessions until you hit again C-c C-f
.
- Don’t define a new
defmethod
helm-setup-user-source
with generic classes as specified above.
You may endup with Lisp error (void-variable \.\.\.)
May be due to using session.el.
See here for how to fix this.
See Issue 1000.
Don’t use ido-everywhere
but only helm-mode
and customize which
commands you want to use ido with variable
helm-completing-read-handlers-alist
See Here
Commands execute-extended-command
and find-file
bound respectively
to M-x
and C-x C-f
have been disabled to force people using the
real things that are helm-M-x
and helm-find-files
, the only thing
you have to do to use these commands is to bound them respectively to
M-x
and C-x C-f
.
If you really want to have back the helmized commands (less powerfull
and slower for M-x
), remove them from helm-completing-read-handlers-alist
.
No, helm uses a generic function for helmizing emacs vanilla commands
and should behave exactly like them except for the completion model.
When available use instead its native helm counterpart which is more featured.
That said you can change the aspect of the source, with more infos, colors
etc… by setting completions-detailed
to t.
Yes if source is defined at run time and with its own class, see here and My config for examples.
Otherwise when writing your own sources you can use the
:action-transformer
slot to define such actions.
Each helm session create a buffer which stays around for further use when you want to resume previous session, so it is important to not kill these buffers if you want to be able to resume your last helm session later.
These buffers are unuseful without helm activated so just ignore them.
Generally helm store its candidates in a list, it uses in this case
sources build with the helm-source-sync
class, but when it is needed
it uses sources build with helm-source-in-buffer
, in this case
raw candidates are stored in a buffer used only for fast access when matching,
but not for displaying candidates (helm buffer is created for this
purpose).
So you will see two buffers for this kind of sources, one helm-buffer used for displaying candidate by helm session and one used for parsing candidates.
Same as with helm buffers, the candidate buffers are hidden when you
display your buffer list with helm-buffers-list
or helm-mini
.
Same as with helm buffers, these buffers are unuseful without helm activated so just ignore them.
Disable Org fast tag selection, see issue 1890.
You can find specific customizable variable for each helm session with
C-h c
and customize from the customize interface, this is the
easiest way to do.
Many users prefer configure variables in their own init file, if you
do so, keep in mind many customizable variables have a :set function
that will NOT work when using setq
, so use instead
customize-set-variable
.
Also, most of these users are reluctant using customize interface
because customize write in their init file which is indeed annoying,
you can prevent this by making customize write in its own file by
adding on top of your init file
(setq custom-file "/path/to/.emacs-custom.el")
and load this file (ensure it exists if never used it).
When you have variables that contain data and are constantly modified like history variables, bookmarks etc… Use psession or desktop.el.
This is an emacs bug which have been fixed in emacs-27 (development
version), to fix it in emacs-26, use
(setq x-wait-for-event-timeout nil)
see Issue #1976.
There is no slowdown in emacs-25