72d0e6f159
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.
93 lines
3.8 KiB
EmacsLisp
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
|