emacs-helm / helm Goto Github PK
View Code? Open in Web Editor NEWEmacs incremental completion and selection narrowing framework
Home Page: https://emacs-helm.github.io/helm/
License: GNU General Public License v3.0
Emacs incremental completion and selection narrowing framework
Home Page: https://emacs-helm.github.io/helm/
License: GNU General Public License v3.0
The face helm-header
does not appear to be used. I first thought I could not change it's appearance due to a bug in emacs24's color theme support but when I eventually used emacs --quick
and did not load anything theme related I could still not change it's appearance. I even tried changing the definition of helm-header
- it still looked exactly like header-line
instead.
We need a short up-to-date wiki article of plugin authoring. Maybe @thierryvolpiatto can recommend some best practices and give some examples?
In helm-find-files, when the only match is a directory it enters the directory. While this is normally helpful, sometimes it isn't. If I have an .emacs.d directory but no .emacs I can't create a .emacs file, because it enters the .emacs.d directory automatically. This also gave me fits when I wanted to create a xorg.conf where a xorg.conf.d directory already existed.
I got a report from a user of Emacs Prelude, that helm breaks imenu for python.el. Here's a link to the original issue - https://github.com/bbatsov/emacs-prelude/issues/94 Maybe you could have a look at the problem?
We should package helm for installation via the marmalade Emacs Lisp repository. I'm not sure what would be the best approach - should we release a singe package there or several smaller packages depending on each other?
Either way the package headers should be cleaned up to match package.el
's requirements. I feel the the headers should be minimalistic and the stuff autogenerated by autodoc should be removed. Maybe autodoc should be used to generate a section of the wiki instead?
I upgrade to the latest helm, but I got a error : (wrong-type-argument symbolp "elisp")
Here is the backtrace:
Debugger entered--Lisp error: (wrong-type-argument symbolp "elisp")
helm-c-define-info-index-sources(("elisp" "cl" "org" "gnus" "tramp" "ratpoison" "zsh" "bash" "coreutils" "fileutils" "find" "sh-utils" "textutils" "libc" "make" "automake" "autoconf" "emacs-lisp-intro" "emacs" "elib" "eieio" "gauche-refe" "guile" "guile-tut" "goops" "screen" "latex" "gawk" "sed" "m4" "wget" "binutils" "as" "bfd" "gprof" "ld" "diff" "flex" "grep" "gzip" "libtool" "texinfo" "info" "gdb" "stabs" "cvsbook" "cvs" "bison" "id-utils" "global") t)
helm-info-index-set(helm-c-default-info-index-list ("elisp" "cl" "org" "gnus" "tramp" "ratpoison" "zsh" "bash" "coreutils" "fileutils" "find" "sh-utils" "textutils" "libc" "make" "automake" "autoconf" "emacs-lisp-intro" "emacs" "elib" "eieio" "gauche-refe" "guile" "guile-tut" "goops" "screen" "latex" "gawk" "sed" "m4" "wget" "binutils" "as" "bfd" "gprof" "ld" "diff" "flex" "grep" "gzip" "libtool" "texinfo" "info" "gdb" "stabs" "cvsbook" "cvs" "bison" "id-utils" "global"))
custom-initialize-reset(helm-c-default-info-index-list (quote ("elisp" "cl" "org" "gnus" "tramp" "ratpoison" "zsh" "bash" "coreutils" "fileutils" "find" "sh-utils" "textutils" "libc" "make" "automake" "autoconf" "emacs-lisp-intro" "emacs" "elib" "eieio" "gauche-refe" "guile" "guile-tut" "goops" "screen" "latex" "gawk" "sed" "m4" "wget" "binutils" "as" "bfd" "gprof" "ld" "diff" "flex" "grep" "gzip" "libtool" "texinfo" "info" "gdb" "stabs" "cvsbook" "cvs" "bison" "id-utils" "global")))
custom-declare-variable(helm-c-default-info-index-list (quote ("elisp" "cl" "org" "gnus" "tramp" "ratpoison" "zsh" "bash" "coreutils" "fileutils" "find" "sh-utils" "textutils" "libc" "make" "automake" "autoconf" "emacs-lisp-intro" "emacs" "elib" "eieio" "gauche-refe" "guile" "guile-tut" "goops" "screen" "latex" "gawk" "sed" "m4" "wget" "binutils" "as" "bfd" "gprof" "ld" "diff" "flex" "grep" "gzip" "libtool" "texinfo" "info" "gdb" "stabs" "cvsbook" "cvs" "bison" "id-utils" "global")) ("/home/leon/.emacs.d/elpa/helm-20120531/helm-info.elc" . 2229) :group helm-info :type (repeat (choice string)) :set helm-info-index-set)
require(helm-info)
byte-code("\300\301!\210\300\302!\210\300\303!\210\300\304!\210\305\306\307\310\311\301%\210\312\313\314\315\311\306%\210\312\316\317\320\311\306%\210\312\321\322\320\311\306%\210\312\323\324\325\311\306%\210\312\326\327\330\311\306%\210\312\331\332\333\311\306%\210\312\334\335\333\311\306%\207" [require helm helm-utils helm-info helm-adaptative custom-declare-group helm-bookmark nil "Predefined configurations for `helm.el'." :group custom-declare-face helm-bookmarks-su ((t (:foreground "red"))) "Face for su/sudo bookmarks." helm-bookmark-info ((t (:foreground "green"))) "_Face used for W3m Emacs bookmarks (not w3m bookmarks)." helm-bookmark-w3m ((t (:foreground "yellow"))) helm-bookmark-gnus ((t (:foreground "magenta"))) "_Face used for Gnus bookmarks." helm-bookmark-man ((t (:foreground "Orange4"))) "_Face used for Woman/man bookmarks." helm-bookmark-file ((t (:foreground "Deepskyblue2"))) "_Face used for file bookmarks." helm-bookmark-directory ((t (:inherit helm-ff-directory)))] 6)
require(helm-bookmark)
byte-code("\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\300\307!\210\300\310!\210\300\311!\210\300\312!\210\300\313!\210\300\314!\210\300\315!\210\300\316!\210\300\317!\210\300\320!\210\321\322\323\324\325\302%\210\326\327\330\331\325\322\332\333&�\210\326\334\335\336\332\337\325\322&�\210\326\340\341\342\332\343\325\322&�\210\326\344\345\346\325\322\332\347&�\210\326\350\351\352\325\322\332\353&�\210\326\354\345\355\325\322\332\347&�\210\326\356\357\360\325\322\332\343&�\210\326\361\345\362\325\322\332\347&�\210\326\363\345\364\325\322\332\347&�\210\326\365\366\367\325\322\332\353&�\210\326\370\371\372\325\322\332\353&�\210\326\373\345\374\332\347\325\322&�\210\326\375\376\377\332\347\325\322&�\210\326\201@
The variables defined in helm-help
are required by sources defined in most (all?) files that define sources. However helm-files
is the only one that actually requires it. As a result most (all?) sources not defined in helm-files
will fail until one from helm-files
is called.
Please require it everywhere or even better (in my opinion) just define the variables where they are used (e.g. helm-*-mode-line-string
, but there might be others).
The title says it all. helm-w3m.el uses helm-c-adaptive-sort but it doesn't include
(require 'helm-adaptative)
in the preamble.
Unless he explicitly asked not to be listed, I would think it appropriate to attribute Tamas Patrovics in your readme file as the original author of anything.el.
When using an helm command such as helm-mini
the buffer is not killed after either performing an action or cancelling.
I understand this is part of a mechanism to reuse helm buffers, but they do accumulate if you use a lot of different helm commands, and I think it'd be nice to be able to customize, i.e. disable, this beahviour.
Hi, i am new to emacs, can i find files recursively with helm?
Currently, helm-c-source-bookmark-set
is not used by default. helm-bookmarks
would benefit from being able to set bookmarks as well as jump to them. It's a matter of changing
(defun helm-bookmarks ()
"Preconfigured `helm' for bookmarks."
(interactive)
(helm-other-buffer 'helm-c-source-bookmarks "*helm bookmarks*"))
to this:
(defun helm-bookmarks ()
"Preconfigured `helm' for bookmarks."
(interactive)
(helm-other-buffer (helm-c-source-bookmarks helm-c-source-bookmark-set) "*helm bookmarks*"))
Awesome Helm Team;
I have binding C-h as delete a char backward.
When I use helm-find-files, for example, I can't use C-h anymore. That's because C-h has been bound to help command in Helm. Maybe we can use (define-key 'help-command "S" 'something) to binding those help command.
Thierry,
Do you do this automatically? If so what tool do you sue?
Looks very strange do not have the File menu as the first item in the menu bar.
From (info "(elisp) Packaging")
:
One of the files in the content directory must be named
NAME-pkg.el. It must contain a single Lisp form, consisting of a
call to the function define-package, described below. This defines
the package's version, brief description, and requirements.
Concretely, the additional eval-when-compile
form confuses Melpa's packaging mechanism, and ideally should not be required in the first place.
Might you consider instead appending something like the following to that file instead:
;; Local Variables:
;; no-byte-compile: t
;; End:
Hi all,
Is somebody using `helm-c-source-semantic' and is it working?
Thanks.
Could you please point to the new mailing list from the repository's webpage. (Hover the package description and click the "edit" button that appears). Edit: and/or put the link on the project page.
You might also want to make your membership in the "emacs-helm" organisation "public". It feels a bit strange to see some contributors but not the maintainer in that list :-)
I've started one here:
https://github.com/lewang/helm-cmd-t/blob/master/helm-cmd-t.el
maybe I can move this under the helm umbrella? Only git and .dir-locals project types are currently supported because i don't use anything else.
Features:
Anyway either this or something else should be folded into helm because this is a big gap currently missing in Emacs.
What is this supposed to do in helm-esh-get-candidates
?
(let* (...
(pcomplete-autolist pcomplete-autolist)
(pcomplete-suffix-list pcomplete-suffix-list))
I don't see these variables being modified so why the dynamic binding?
Also this causes one of the very few compile warnings.
Like helm-grep I want to be able to save the results to the occur buffer.
Also, next-error support would be nice too.
Helm M-x has a history feature but it's not very useful. It saves what you actually typed and not the command that was invoked, and tries to execute that previous search as a command which usually fails.
I update to latest helm from MELPA, I found it introduce a new bug for helm-buffer-list. Here is the step to reproduce this bug:
Now, you will get a "my-sample.el" in the buffers list, which it is already killed.
Any idea about this bug?
Could the faces inherit from generic ones?
Else, the colors chosen are unreadable with dark themes.
helm-config.el:692:01:Warning: cl package required at runtime
helm-config.el:1532:20:Warning: minibuffer-local-must-match-filename-map' is an obsolete variable (as of 23.1); use
minibuffer-local-filename-must-match-map' instead.
helm-config.el:1533:20:Warning: `minibuffer-local-filename-must-match-map' is
an obsolete variable (as of 24.1).
In helm-esh-get-candidates:
helm-config.el:10082:13:Warning: pcomplete-suffix-list' is an obsolete variable (as of 24.1). helm-config.el:10082:35:Warning:
pcomplete-suffix-list' is an obsolete
variable (as of 24.1).
[New git install of helm]
emacs -Q
Do:
(add-to-list 'load-path "/home/nedludd/.emacs.d/vendor/helm")
(require 'helm-config)
Type:
M-x helm-mini
See "symbol's value as variable is void: helm-c-source-buffers-list"
Load helm-buffers
Now see "Symbol's value as variable is void: helm-c-source-recentf"
Load helm-files. Everything works.
Seems like the autoload is broken somehow.
Right now, the 1.4.2 tarball weights in at 3.3 MB. Most of this is taken up by doc/helm.pdf
, which weighs in at 3.2 MB; without it the package comes to 188K. Now, bandwidth is cheap and all, but there's no reason to ship a binary which could be generated by the user if needed.
On Mac OS X, the default grep doesn't support --exclude-dir. But the failure was silent and it took me a while to track it down. An error message should be generated some how.
yank-pop works fine -- how can I get helm-show-kill-ring to work?
This is the error message:
Debugger entered--Lisp error: (error "Command attempted to use minibuffer while in minibuffer")
read-from-minibuffer("M-x " nil (keymap (keymap (C-M-left . paren-backward-sexp) (C-M-right . paren-forward-sexp) ...
I just stumbled upon helm-resume. Very cool.
Is it possible to make commands generically resumable by passing ":resumable t" or something like that? i.e. when C-u prefix is used, resume last invocation of this command.
There are a number of defvar
forms which start with "*..."
, which was the old, pre-defcustom
way of declaring that variables be user-editable. That behavior is obsolete, and should be replaced by defcustom
forms.
A quick look at things shows the following variables use this old format:
/helm-apt.el:35:helm-apt-installed
/helm-apt.el:40:helm-apt-deinstalled
/helm-bookmark.el:36:helm-bookmark-info
/helm-bookmark.el:41:helm-bookmark-w3m
/helm-bookmark.el:46:helm-bookmark-gnus
/helm-bookmark.el:51:helm-bookmark-man
/helm-bookmark.el:56:helm-bookmark-file
/helm-bookmark.el:61:helm-bookmark-directory
/helm-buffers.el:62:helm-buffer-saved-out
/helm-buffers.el:67:helm-buffer-not-saved
/helm-command.el:39:helm-M-x-key
/helm-elisp.el:60:helm-lisp-show-completion
/helm-elisp.el:65:helm-lisp-completion-info
/helm-emms.el:38:helm-emms-playlist
/helm-files.el:131:helm-ff-exif-data-program-args
/helm-files.el:202:helm-ff-prefix
/helm-files.el:207:helm-ff-executable
/helm-files.el:212:helm-ff-directory
/helm-files.el:217:helm-ff-symlink
/helm-files.el:222:helm-ff-invalid-symlink
/helm-files.el:227:helm-ff-file
/helm-files.el:312:helm-c-find-files-doc-header
/helm-net.el:256:helm-browse-url-default-browser-alist
/helm.el:154:helm-display-source-at-screen-top
/helm.el:158:helm-candidate-number-limit
/helm.el:167:helm-idle-delay
I may have missed some; there's a lot to helm! :)
Thierry,
How do you update the autoloads in helm-config?
Since you guys are on a roll I might as well point out the obvious here, and see if we can come up with a better UX for this essential use case.
helm-mp-matching-method
uses prefix matching like multi3p
, in my ~/.emacs.d/
, typing au
will list auto-save-list
, but aut
clears the whole buffer~/.emacs.d/'
if I type in
, I get a single match for init.el
but the selection stays on the [?]
input line. Ido got this right by automatically selecting the first match and requiring user intervention for creatng a file whose name yields a match..
and ..
lines seem unnecessary especially since C-l
will go up one level in the hierarchy.The last two point combined make for a rather awkward flow when traversing directories. I believe it'd be easier to get rid of the .
..
and [?]
lines altogether, and have a keybinding to force selecting the current input if there is a match.
After helm-mode
has been activated, one cannot call some commands such as rgrep
, since helm-completing-read-1
will pass it a list instead of a string.
When trying to use helm-w3m I get the following message
helm-display-mode-line: Wrong type argument: wholenump, -2
I'd like to edit the wiki, but I currently can't. I think that things like the user guide should be maintained in Markdown format there instead of LaTeX - there wouldn't be a need to rebuild the user guide manually on each change and a lot more people know Markdown, compared to LaTeX (even though I've written a lot of stuff in LaTeX I prefer Markdown immensely). I'm willing to do the conversion work myself.
I'm using emacs 24.50.2 and helm (20120525). Every time I try to shutdown kill emacs (C-x C-c) I get the following error:
Cannot open doc string file "/Users/guto/.emacs.d/elpa/helm-20120525/helm-adaptative.elc"
I've tried to delete and reinstall helm with no luck.
My setup is based off Prelude.
Thanks
Currently, if a command invoked using helm-M-x produces an error, it is not added to helm-M-x' history, since the corresponding (setq extended-history ..)
line occurs after (call-interactively sym-com)
.
I'd prefer that a command that failed is still added to the history (e.g. when using M-x to test one's own code). I realize this viewpoint is probably fairly subjective, so it'd probably be best to make this behavior configurable via a defcustom. In my own tests it sufficed to execute (call-interactively ..)
after adding the command to the history.
I just noticed that you indent using spaces only.
Personally I always use the default indention style for any given language which in case of Emacs Lisp happens to be a mix of tabs and spaces. But as the maintainer this is of course your call.
However if you stick to your style you should enforce it by setting the appropriate file local variables. You can't expect potential contributors to check what indention style you are using and then figuring out how to make it happen. I for one did not check and the changes I made use the default style of tabs and spaces, which I now have to fix.
Why is e.g. helm-map
created by copying minibuffer-local-map
instead of using the latter as a parent keymap?
I have heavily modified the vanilla minibuffer-local maps and this therefor means I have to duplicate all my customization.
If I understand the documentation, I'm supposed to be able to fire up helm-do-grep
from any file and grep right away the current file's directory. At least that's what I want to achieve
When I run either M-x helm-do-grep
or try C-u prefix-key M-g s
from a file I get:
"let: Symbol's function definition is void: helm-c-read-file-name"
Not sure exactly what's going on.
I don't feel that autodoc.el belongs to the helm repository since it has nothing to do with helm. The developer-tools folder should be named test in my opinion, since its name is rather misleading at the moment.
Hi,
I've just arrived here and don't understand what Helm is. I had a look at the README and even the documentation pdf. Still, I don't get the point. Does it replace ido? Does it provide a completion mechanism?
What about describing some scenarios where Helm would be useful?
What about providing some screencasts?
Just suggestions
I updated helm to last commit and i found a regression. Helm is no longer able to visit files from Locate or Recentf section in helm-for-files. I bisected and the culprit seems to be de6cb44!
Is there a way to configure helm to show files relative to the project root instead of the default absolute path ?
Hey, guys - check out this new GitHub feature - https://github.com/blog/1081-instantly-beautiful-project-pages
We can now have a very basic Helm project page in a matter of minutes :-)
Shouldn't helm-overlay-line
be defined in group helm
and file helm.el
like the other "framework" faces?
Also it should probably be renamed to helm-selection-line
as "overlay" is an implementation and having it in the symbol name is confusing to anybody who isn't comfortable with elisp. Also the doc-string is actually for another face.
As it is, helm-c-buffers-list
generates a list which includes some unwanted buffers, namely, the buffer that was in the window which the helm
buffer now occupies. ido-switch-buffer
does the correct thing here, so simply hitch onto it. The following gives the correct behavior:
(defun helm-c-buffer-list ()
"Return a list of buffer names.
The first buffer in the list will be the last recently used
buffer that is not the current buffer unless
`helm-allow-skipping-current-buffer' is nil."
(save-excursion
(save-window-excursion
(helm-frame-or-window-configuration 'restore)
(let ((ido-process-ignore-lists t)
ido-ignored-list)
(ido-make-buffer-list nil)))))
The save-excursion
is probably superfluous, but it can't hurt. For more control, there are a bunch of ido
variables which could be set to change the behavior, but I just wanted something quick and dirty.
If I have helm-mode activated, I am unable to use magit's "quick" keybindings. For example, to checkout a branch I usually hit "bb' (First 'b' to show branch menu, second 'b' to checkout the branch". But I'm getting
let*: Wrong type argument: symbolp, (lambda nil (interactive) (magit-key-mode-command (quote magit-checkout)))
helm-call-source
isn't defined anywhere but mentioned in helm-help-message
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.