This repository has been archived on 2022-11-18. You can view files and clone it, but cannot push or open issues or pull requests.
emacs/modules/helm.el

167 lines
5.7 KiB
EmacsLisp
Raw Normal View History

;;; helm.el --- Module file for Helm configuration.
2017-08-27 21:13:04 +02:00
;;
;; Copyright (C) 2017-2019 Wojciech Kozlowski
2017-08-27 21:13:04 +02:00
;;
2018-02-04 18:18:18 +01:00
;; Author: Wojciech Kozlowski <wk@wojciechkozlowski.eu>
;; Created: 2017-08-27
2017-08-27 21:13:04 +02:00
;;
;; This file is not part of GNU Emacs.
;;
;;; Commentary:
;;
;; This module sets up configuration for the helm package.
;;
;;; License: GPLv3
;;; Required packages:
2018-07-07 22:34:00 +02:00
;;; Code:
2017-08-27 21:13:04 +02:00
(defvar emodule/helm-packages
2017-08-27 21:13:04 +02:00
'(ace-jump-helm-line
helm
helm-flyspell
2021-08-23 18:42:13 +02:00
helm-lsp
helm-projectile
swiper-helm)
2018-07-07 22:34:00 +02:00
)
2017-08-27 21:13:04 +02:00
;;; Configuration:
(defun emodule/helm-init ()
"Initialise the `helm' module."
2017-08-27 21:13:04 +02:00
2020-11-22 11:17:49 +01:00
;; -----------------------------------------------------------------------------------------------
;; `ace-jump-helm-line'
2020-11-22 11:17:49 +01:00
;; -----------------------------------------------------------------------------------------------
(use-package ace-jump-helm-line
:after helm
:bind
(:map helm-map
("C-'" . ace-jump-helm-line)))
2020-11-22 11:17:49 +01:00
;; -----------------------------------------------------------------------------------------------
;; `helm'
2020-11-22 11:17:49 +01:00
;; -----------------------------------------------------------------------------------------------
2017-08-27 21:13:04 +02:00
(use-package helm
2018-07-08 03:11:37 +02:00
:init
(require 'helm-config)
2017-08-27 21:13:04 +02:00
:bind
(("C-x C-f" . helm-find-files)
2018-07-08 15:02:55 +02:00
("C-x C-r" . helm-resume)
2017-08-27 21:13:04 +02:00
("M-x" . helm-M-x)
("M-y" . helm-show-kill-ring)
("C-x b" . helm-mini)
2019-12-18 00:53:20 +01:00
("C-x C-b" . helm-mini)
2017-08-27 21:13:04 +02:00
("C-M-j" . helm-semantic-or-imenu)
2017-08-27 22:57:18 +02:00
("C-h SPC" . helm-all-mark-rings))
2017-08-27 21:13:04 +02:00
:config
(helm-mode 1)
2017-08-27 21:13:04 +02:00
2020-11-22 11:17:49 +01:00
;; Helm prefix ---------------------------------------------------------------------------------
2017-08-27 21:13:04 +02:00
2020-11-22 11:17:49 +01:00
;; The default "C-x c" is quite close to "C-x C-c", which quits Emacs. Changed to "C-c h". Note:
;; We must set "C-c h" globally, because we cannot change `helm-command-prefix-key' once
;; `helm-config' is loaded.
2017-08-27 21:13:04 +02:00
(global-set-key (kbd "C-c h") 'helm-command-prefix)
(global-unset-key (kbd "C-x c"))
2020-11-22 11:17:49 +01:00
;; Helm settings -------------------------------------------------------------------------------
2017-08-27 21:13:04 +02:00
2017-08-28 16:33:56 +02:00
(setq-default
2017-08-27 21:13:04 +02:00
;; Open helm buffer inside current window, not occupy whole other window.
helm-split-window-in-side-p t
;; Move to end or beginning of list when reaching top or bottom of list.
helm-move-to-line-cycle-in-source t
;; Search for library in `require' and `declare-function' sexp.
helm-ff-search-library-in-sexp t
;; Use recentf-list instead of file-name-history.
helm-ff-file-name-history-use-recentf t
;; Echo iput to helm header.
helm-echo-input-in-header-line t
;; Fuzzy matching.
helm-M-x-fuzzy-match t
helm-buffers-fuzzy-matching t
helm-recentf-fuzzy-match t
helm-semantic-fuzzy-match t
helm-imenu-fuzzy-match t
helm-apropos-fuzzy-match t
helm-lisp-fuzzy-completion t
;; While auresize is disabled these variable are in use.
helm-display-buffer-default-height 0.35)
2017-08-27 21:13:04 +02:00
2020-11-22 11:17:49 +01:00
;; Hide minibuffer -----------------------------------------------------------------------------
2017-08-27 21:13:04 +02:00
(defun x-helm-hide-minibuffer-maybe ()
"Hide minibuffer in Helm session if we use the header line
as input field."
(when (with-helm-buffer helm-echo-input-in-header-line)
(let ((ov (make-overlay (point-min) (point-max) nil nil t)))
(overlay-put ov 'window (selected-window))
(overlay-put ov 'face
(let ((bg-color (face-background 'default nil)))
`(:background ,bg-color :foreground ,bg-color)))
(setq-local cursor-type nil))))
(add-hook 'helm-minibuffer-set-up-hook 'x-helm-hide-minibuffer-maybe)
2020-11-22 11:17:49 +01:00
;; Key-bindings --------------------------------------------------------------------------------
2017-08-27 21:13:04 +02:00
;; Rebind tab to run persistent action.
(define-key helm-map (kbd "<tab>") 'helm-execute-persistent-action)
(define-key helm-map (kbd "TAB") 'helm-execute-persistent-action)
2017-08-27 21:13:04 +02:00
;; List actions using C-z.
(define-key helm-map (kbd "C-z") 'helm-select-action)
2017-08-27 21:13:04 +02:00
2020-11-22 11:17:49 +01:00
;; Change some Helm default key-bindings. Due to the `helm-config' require these have to
;; overridden here rather than with other keys in `:bind'.
2017-08-27 22:57:18 +02:00
(global-set-key (kbd "C-c h x") 'helm-register)
2018-07-08 01:29:39 +02:00
(global-set-key (kbd "C-c h M-o") 'helm-occur))
2020-11-22 11:17:49 +01:00
;; -----------------------------------------------------------------------------------------------
;; `helm-flyspell'
2020-11-22 11:17:49 +01:00
;; -----------------------------------------------------------------------------------------------
(use-package helm-flyspell
:bind (("C-c C-'" . helm-flyspell-correct)))
2021-08-23 18:42:13 +02:00
;; -----------------------------------------------------------------------------------------------
;; `helm-lsp'
;; -----------------------------------------------------------------------------------------------
(use-package helm-lsp
2021-08-23 23:45:51 +02:00
:after (helm lsp-mode)
:config
(define-key lsp-mode-map [remap xref-find-apropos] #'helm-lsp-workspace-symbol))
2021-08-23 18:42:13 +02:00
2020-11-22 11:17:49 +01:00
;; ---------------------------------------------------------------------------------------------
;; `helm-projectile'
2020-11-22 11:17:49 +01:00
;; ---------------------------------------------------------------------------------------------
2018-07-08 01:29:39 +02:00
(use-package helm-projectile
:after projectile
2018-07-08 01:29:39 +02:00
:config
(setq-default projectile-completion-system 'helm)
(helm-projectile-on))
2020-11-22 11:17:49 +01:00
;; -----------------------------------------------------------------------------------------------
;; `swiper-helm'
2020-11-22 11:17:49 +01:00
;; -----------------------------------------------------------------------------------------------
(use-package swiper-helm
:after helm
:bind
(("C-s" . swiper-helm)
2019-08-07 11:55:17 +02:00
("C-c C-s" . isearch-forward))
:config
(setq swiper-helm-display-function 'helm-default-display-buffer))
2017-08-27 21:13:04 +02:00
)
2018-07-07 22:34:00 +02:00
(provide 'emodule/helm)
;;; helm.el ends here