From ded367eef56201604ad3fddd63fe427866328150 Mon Sep 17 00:00:00 2001 From: Aria Date: Wed, 30 May 2018 13:55:09 +1000 Subject: [PATCH 1/4] Add posframes to helm in emacs 26+ --- init.example.el | 3 ++- modules/completion/helm/config.el | 19 +++++++++++++++++++ modules/completion/helm/packages.el | 2 ++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/init.example.el b/init.example.el index 767ea199d..d8328ab96 100644 --- a/init.example.el +++ b/init.example.el @@ -20,7 +20,8 @@ (company ; the ultimate code completion backend +auto ; as-you-type code completion +childframe) ; a nicer company UI (Emacs 26+ only) - ;helm ; the *other* search engine for love and life + ;(helm ; the *other* search engine for love and life + ; +childframe) ; uses childframes for popups (Emacs 26+ only) ;ido ; the other *other* search engine... (ivy ; a search engine for love and life +childframe) ; uses childframes for popups (Emacs 26+ only) diff --git a/modules/completion/helm/config.el b/modules/completion/helm/config.el index 7caa3e8a4..7d22b1c08 100644 --- a/modules/completion/helm/config.el +++ b/modules/completion/helm/config.el @@ -63,6 +63,25 @@ (require 'helm-projectile) (set-keymap-parent helm-projectile-find-file-map helm-map) + ;; Posframes! + (when (and EMACS26+ (featurep! +childframe)) + (defvar helm-posframe-buffer nil) + + (defun helm-posframe-display (buffer &optional _resume) + (posframe-show + (setq helm-posframe-buffer buffer) + :poshandler #'posframe-poshandler-frame-bottom-left-corner + :left-fringe 10 + :width (frame-width) + :height 16 ;; ivy/+childframe uses 16 + :respect-header-line t)) + + (defun helm-posframe-cleanup () + (posframe-hide helm-posframe-buffer)) + + (add-hook! 'helm-cleanup-hook #'helm-posframe-cleanup) + (setq helm-display-function #'helm-posframe-display)) + ;;; Helm hacks (defun +helm*replace-prompt (plist) "Globally replace helm prompts with `+helm-global-prompt'." diff --git a/modules/completion/helm/packages.el b/modules/completion/helm/packages.el index b4199e698..fb11d95b5 100644 --- a/modules/completion/helm/packages.el +++ b/modules/completion/helm/packages.el @@ -10,3 +10,5 @@ (package! helm-projectile) (package! helm-swoop) (package! wgrep) +(when (and EMACS26+ (featurep! +childframe)) + (package! posframe)) From 7461b94efe422a2326778af1a5bd258d3d69bf40 Mon Sep 17 00:00:00 2001 From: Aria Date: Thu, 31 May 2018 13:16:57 +1000 Subject: [PATCH 2/4] Add posframe def-package! --- modules/completion/helm/config.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/completion/helm/config.el b/modules/completion/helm/config.el index 7d22b1c08..e10c715cb 100644 --- a/modules/completion/helm/config.el +++ b/modules/completion/helm/config.el @@ -148,3 +148,7 @@ (def-package! wgrep :commands wgrep-change-to-wgrep-mode :config (setq wgrep-auto-save-buffer t)) + +(def-package! posframe + :after helm + :when (and EMACS26+ (featurep! +childframe))) From 8f673f52fc43b633267068716246b7daf9460c22 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 1 Jun 2018 13:03:25 +0200 Subject: [PATCH 3/4] Conform helm posframe code to Doom conventions --- modules/completion/helm/config.el | 38 +++++++++++++++---------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/modules/completion/helm/config.el b/modules/completion/helm/config.el index 8487961c6..cda2c9bf4 100644 --- a/modules/completion/helm/config.el +++ b/modules/completion/helm/config.el @@ -53,25 +53,6 @@ (require 'helm-projectile) (set-keymap-parent helm-projectile-find-file-map helm-map) - ;; Posframes! - (when (and EMACS26+ (featurep! +childframe)) - (defvar helm-posframe-buffer nil) - - (defun helm-posframe-display (buffer &optional _resume) - (posframe-show - (setq helm-posframe-buffer buffer) - :poshandler #'posframe-poshandler-frame-bottom-left-corner - :left-fringe 10 - :width (frame-width) - :height 16 ;; ivy/+childframe uses 16 - :respect-header-line t)) - - (defun helm-posframe-cleanup () - (posframe-hide helm-posframe-buffer)) - - (add-hook! 'helm-cleanup-hook #'helm-posframe-cleanup) - (setq helm-display-function #'helm-posframe-display)) - ;;; Helm hacks (defun +helm*replace-prompt (plist) "Globally replace helm prompts with `+helm-global-prompt'." @@ -161,7 +142,24 @@ (def-package! posframe :when (and EMACS26+ (featurep! +childframe)) - :after helm) + :after helm + :config + (defvar +helm--posframe-buffer nil) + + (defun +helm-posframe-display (buffer &optional _resume) + (posframe-show + (setq +helm--posframe-buffer buffer) + :poshandler #'posframe-poshandler-frame-bottom-left-corner + :left-fringe 10 + :width (frame-width) + :height 16 ;; ivy/+childframe uses 16 + :respect-header-line t)) + + (defun +helm|posframe-cleanup () + (posframe-hide +helm--posframe-buffer)) + + (add-hook! 'helm-cleanup-hook #'+helm|posframe-cleanup) + (setq helm-display-function #'+helm-posframe-display)) ;; From cc159ed9a92b89d0b303c620a2e87ec02724c4d1 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 1 Jun 2018 13:06:30 +0200 Subject: [PATCH 4/4] completion/helm: add-hook! => add-hook add-hook! is unnecessary for adding 1-to-1 hook. --- modules/completion/helm/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/completion/helm/config.el b/modules/completion/helm/config.el index cda2c9bf4..b345b0530 100644 --- a/modules/completion/helm/config.el +++ b/modules/completion/helm/config.el @@ -158,7 +158,7 @@ (defun +helm|posframe-cleanup () (posframe-hide +helm--posframe-buffer)) - (add-hook! 'helm-cleanup-hook #'+helm|posframe-cleanup) + (add-hook 'helm-cleanup-hook #'+helm|posframe-cleanup) (setq helm-display-function #'+helm-posframe-display))