;;; oni-ivy.el --- Ivy configuration -*- lexical-binding: t; -*- ;; Copyright (C) 2019 Tom Willemse ;; Author: Tom Willemse ;; Keywords: local ;; Version: 2021.1123.003513 ;; Package-Requires: (ivy oni-prescient oni-hydra ivy-hydra diminish ivy-posframe ivy-prescient) ;; 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 this program. If not, see . ;;; Commentary: ;; Ivy configuration. ;;; Code: (require 'ivy) (require 'ivy-hydra) (require 'ivy-posframe) (require 'ivy-prescient) (defun oni-ivy--disable (orig-fun &rest args) "Disable ivy while running ORIG-FUN with ARGS." (let ((ivy-enabled ivy-mode)) (unwind-protect (progn (when ivy-enabled (ivy-mode -1)) (apply orig-fun args)) (when ivy-enabled (ivy-mode 1))))) (defun ivy-posframe-display-at-frame-bottom-center (str) "Display STR in ivy’s posframe at the bottom centre of the current frame." (ivy-posframe--display str #'posframe-poshandler-frame-bottom-center)) (when (eq system-type 'windows-nt) (with-eval-after-load 'grep (add-function :around (symbol-function 'grep-read-files) #'oni-ivy--disable))) (global-set-key (kbd "C-") 'ivy-push-view) (global-set-key (kbd "C-") 'ivy-switch-view) (setq ivy-posframe-style 'frame-bottom-center) ;;;###autoload (add-hook 'emacs-startup-hook 'ivy-mode) (ivy-posframe-mode) (ivy-prescient-mode) (with-eval-after-load 'ivy-posframe (diminish 'ivy-posframe-mode)) (with-eval-after-load 'ivy (diminish 'ivy-mode)) (provide 'oni-ivy) ;;; oni-ivy.el ends here