It is not a bug. helm.el
does not provide any major mode for helm buffers. So they are infact in fundamental-mode
. However it does set the variable mode-name
to Helm
which is what you are seeing in the mode column. The mode-name
variable is a buffer local variable that can contain a user friendly name for the buffer's major-mode and is/can be different from major-mode
.
Check out the defun helm-create-helm-buffer
for more details.
Note that ibuffer
lets you mark all helm buffers by marking by mode regexp % m
followed by Helm
at the prompt. The usual * M
does not work though. If you want to create filter groups for helm, you can use the ibuffer-filter-by-predicate
mapped to / e
and entering the following at the prompt.
(string-match "Helm" mode-name)
For instance, here is a working example of a saved filter group

and here is the resulting ibuffer
window after ibuffer-switch-to-saved-filter-groups
.

I can only guess why Helm does not have a dedicated major mode. Unlike buffers with major modes
- helm completion buffers are always disposable,
- do not need any special syntax map,
- font-lock is dependent upon the command invoked
- most importantly, keymap is active only for the active helm buffer
So there is no special reason for these buffers to have a dedicated major-mode. You can ask the maintainer for his reasons though. Maybe, the overhead of having a major-mode is not worth the trivial advantages it brings.