emacs-prelude/modules/prelude-helm.el
Tu, Do 72d0e6f159 Enable prelude-global-helm-global-mode by default
Since Helm is another option to Ido, users who want to use it fully
should benefit from the default Prelude setup. If some users don't like,
they can always disable global Helm mode according to the instructions
in the homepage. User can enable Helm everywhere with
prelude-helm-everywhere.

This change also enables Helm version of command history in shell and
eshell. It also adds minibuffer history without overrides any key
binding in minibuffer-local-map.
2014-09-02 13:30:18 +07:00

93 lines
3.8 KiB
EmacsLisp

;;; prelude-helm.el --- Helm setup
;;
;; Copyright © 2011-2014 Bozhidar Batsov
;;
;; Author: Bozhidar Batsov <bozhidar@batsov.com>
;; URL: https://github.com/bbatsov/prelude
;; Version: 1.0.0
;; Keywords: convenience
;; This file is not part of GNU Emacs.
;;; Commentary:
;; Some config for Helm that follows thiks guide: http://tuhdo.github.io/helm-intro.html
;;; License:
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License
;; as published by the Free Software Foundation; either version 3
;; of the License, or (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Code:
(prelude-require-packages '(helm helm-projectile helm-descbinds))
(require 'helm)
;; must set before helm-config, otherwise helm use default
;; prefix "C-x c", which is inconvenient because you can
;; accidentially pressed "C-x C-c"
(setq helm-command-prefix-key "C-c h")
(require 'helm-config)
(require 'helm-eshell)
(require 'helm-files)
(require 'helm-grep)
(define-key helm-map (kbd "<tab>") 'helm-execute-persistent-action) ; rebihnd tab to do persistent action
(define-key helm-map (kbd "C-i") 'helm-execute-persistent-action) ; make TAB works in terminal
(define-key helm-map (kbd "C-z") 'helm-select-action) ; list actions using C-z
(define-key helm-grep-mode-map (kbd "<return>") 'helm-grep-mode-jump-other-window)
(define-key helm-grep-mode-map (kbd "n") 'helm-grep-mode-jump-other-window-forward)
(define-key helm-grep-mode-map (kbd "p") 'helm-grep-mode-jump-other-window-backward)
(setq
helm-google-suggest-use-curl-p t
helm-scroll-amount 4 ; scroll 4 lines other window using M-<next>/M-<prior>
helm-quick-update t ; do not display invisible candidates
helm-idle-delay 0.01 ; be idle for this many seconds, before updating in delayed sources.
helm-input-idle-delay 0.01 ; be idle for this many seconds, before updating candidate buffer
helm-ff-search-library-in-sexp t ; search for library in `require' and `declare-function' sexp.
helm-split-window-default-side 'other ;; open helm buffer in another window
helm-split-window-in-side-p t ;; open helm buffer inside current window, not occupy whole other window
helm-buffers-favorite-modes (append helm-buffers-favorite-modes
'(picture-mode artist-mode))
helm-candidate-number-limit 500 ; limit the number of displayed canidates
helm-M-x-requires-pattern 0 ; show all candidates when set to 0
helm-ff-file-name-history-use-recentf t
helm-move-to-line-cycle-in-source t ; move to end or beginning of source
; when reaching top or bottom of source.
ido-use-virtual-buffers t ; Needed in helm-buffers-list
helm-buffers-fuzzy-matching t ; fuzzy matching buffer names when non-nil
; useful in helm-mini that lists buffers
)
(global-set-key (kbd "C-c h o") 'helm-occur)
(global-set-key (kbd "C-c h g") 'helm-do-grep)
(global-set-key (kbd "C-c h C-c w") 'helm-wikipedia-suggest)
(global-set-key (kbd "C-c h x") 'helm-register)
(global-set-key (kbd "C-c h SPC") 'helm-all-mark-rings)
;;; Save current position to mark ring
(add-hook 'helm-goto-line-before-hook 'helm-save-current-pos-to-mark-ring)
;; PACKAGE: helm-projectile
(require 'helm-projectile)
(push "Press <C-c p h> to navigate a project in Helm." prelude-tips)
(provide 'prelude-helm)
;;; prelude-helm.el ends here