Emacs: Put ivy & company into misc/completion.

This commit is contained in:
tastytea 2020-12-08 14:10:01 +01:00
parent 6f6c03b577
commit 2cdef331de
8 changed files with 123 additions and 101 deletions

View File

@ -1,6 +1,6 @@
;;; buffers.el --- Default settings for buffers. -*- lexical-binding: t; -*-
;; Time-stamp: <2020-11-30T21:47:33+0100>
;; Time-stamp: <2020-12-08T14:07:31+0100>
;;; Commentary:
;; * Setup scratch buffer.
@ -12,6 +12,7 @@
(require 'basics/package-management)
(require 'misc/libs)
(require 'misc/completion)
(use-package emacs
:straight (:type built-in)
@ -114,6 +115,12 @@
("C-<f2>" . purpose-toggle-window-buffer-dedicated)
("M-<f2>" . purpose-load-window-layout)))
(use-package ivy-purpose
:after (ivy window-purpose)
:config (ivy-purpose-setup)
:bind (:map purpose-mode-map
("C-x b" . ivy-switch-buffer)))
;; Visual feedback on some operations by highlighting region.
(use-package volatile-highlights
:diminish volatile-highlights-mode

View File

@ -1,10 +1,9 @@
;;; ui.el --- Configure user interfaces. -*- lexical-binding: t; -*-
;; Time-stamp: <2020-12-08T13:01:35+0100>
;; Time-stamp: <2020-12-08T14:01:08+0100>
;;; Commentary:
;; * treemacs
;; * ivy + counsel.
;;; Code:
@ -53,67 +52,6 @@
:demand t
:after (treemacs magit))
;; Completion in many Emacs commands.
(use-package ivy
:demand t
:diminish ivy-mode
:custom ((ivy-use-virtual-buffers t)
(ivy-count-format "[%d/%d] ")
(ivy-wrap t))
:config (ivy-mode 1)
:bind (("C-c C-r" . ivy-resume)
(:map ivy-minibuffer-map
("M-<up>" . ivy-previous-history-element)
("M-<down>" . ivy-next-history-element)
("S-<return>" . ivy-immediate-done)))) ; Ignore completion.
;; Extensions for ivy
(use-package counsel
:demand t
:after (ivy imenu)
:bind (("C-x C-f" . counsel-find-file)
("M-x" . counsel-M-x)
("M-i" . counsel-imenu)))
;; More information in ivy mini-buffers.
(use-package ivy-rich
:demand t
:after (counsel)
:config (ivy-rich-mode 1))
;; Use icons in ivy-rich.
(use-package all-the-icons-ivy-rich
:demand t
:after (all-the-icons ivy-rich)
:config (all-the-icons-ivy-rich-mode 1))
(use-package ivy-purpose
:after (window-purpose)
:config (ivy-purpose-setup)
:bind (:map purpose-mode-map
("C-x b" . ivy-switch-buffer)))
(use-package ivy-emoji ; Insert emojis with ivy.
:after (ivy)
:bind ("C-c e" . ivy-emoji))
(use-package counsel-projectile
:demand t
:after (projectile)
:config (progn
;; I'm not exactly sure what I did here but it seems to work.
(defun my/counsel-projectile-switch-project-action (project)
"Call `my/switch-project'."
(let ((projectile-switch-project-action 'my/switch-project))
(counsel-projectile-switch-project-by-name project)))
(counsel-projectile-modify-action
'counsel-projectile-switch-project-action
'((add ("Y" my/counsel-projectile-switch-project-action
"open project in treemacs") 1)))
;; Overwrite keybindings and so on.
(counsel-projectile-mode)))
;; Shows tabs of all visible buffers per window.
(when (>= emacs-major-version 27)
(use-package tab-line
@ -125,11 +63,5 @@
(tab-line-tab-current ((t (:inherit ruler-mode-fill-column))))
(tab-line-highlight ((t (:inherit tab-line-tab-current))))))
;; Sorting and filtering for ivy.
(use-package ivy-prescient
:after (prescient counsel)
:custom (ivy-prescient-retain-classic-highlighting t)
:hook (after-init . ivy-prescient-mode))
(provide 'basics/ui)
;;; ui.el ends here

86
init.d/misc/completion.el Normal file
View File

@ -0,0 +1,86 @@
;;; completion.el --- Completion base packages. -*- lexical-binding: t; -*-
;; Time-Stamp: <>
;;; Commentary:
;; * Ivy
;; * Counsel
;;; Code:
(require 'basics/package-management)
(require 'basics/global-variables)
(require 'basics/appearance)
(require 'misc/libs)
;; Completion in many Emacs commands.
(use-package ivy
:demand t
:diminish ivy-mode
:custom ((ivy-use-virtual-buffers t)
(ivy-count-format "[%d/%d] ")
(ivy-wrap t))
:config (ivy-mode 1)
:bind (("C-c C-r" . ivy-resume)
(:map ivy-minibuffer-map
("M-<up>" . ivy-previous-history-element)
("M-<down>" . ivy-next-history-element)
("S-<return>" . ivy-immediate-done)))) ; Ignore completion.
;; Extensions for ivy
(use-package counsel
:demand t
:after (ivy imenu)
:bind (("C-x C-f" . counsel-find-file)
("M-x" . counsel-M-x)
("M-i" . counsel-imenu)))
;; More information in ivy mini-buffers.
(use-package ivy-rich
:demand t
:after (counsel)
:config (ivy-rich-mode 1))
;; Use icons in ivy-rich.
(use-package all-the-icons-ivy-rich
:demand t
:after (all-the-icons ivy-rich)
:config (all-the-icons-ivy-rich-mode 1))
(use-package ivy-emoji ; Insert emojis with ivy.
:after (ivy)
:bind ("C-c e" . ivy-emoji))
;; Sorting and filtering for ivy.
(use-package ivy-prescient
:after (prescient counsel)
:custom (ivy-prescient-retain-classic-highlighting t)
:hook (after-init . ivy-prescient-mode))
;; Autocompletion mode with many plugins.
(use-package company
:unless slow-computer
:diminish company-mode
:custom ((company-minimum-prefix-length 1) ; Suggestions after 1 character.
(company-selection-wrap-around t)
(company-tooltip-align-annotations t) ; Align to the right border.
(company-idle-delay 0.5))
:bind (:map company-active-map
("<return>" . nil) ; Disable completion on return.
("RET" . nil) ; https://emacs.stackexchange.com/a/13290
("<tab>" . company-complete-selection) ; Make tab work in lists.
("TAB" . company-complete-selection)) ; Tab in terminals.
:hook (after-init . global-company-mode))
;; Documentation popups for completions.
(use-package company-quickhelp
:after (company)
:config (company-quickhelp-mode))
;; Sorting and filtering for company.
(use-package company-prescient
:after (prescient company)
:hook (after-init . company-prescient-mode))
(provide 'misc/completion)
;;; completion.el ends here

View File

@ -1,12 +1,13 @@
;;; client.el --- Network clients. -*- lexical-binding: t; -*-
;; Time-stamp: <2020-05-27T04:11:23+0200>
;; Time-stamp: <2020-12-08T14:08:16+0100>
;;; Commentary:
;;; Code:
(require 'basics/package-management)
(require 'misc/completion)
;; Explore and test HTTP REST webservices.
(use-package restclient

View File

@ -1,6 +1,6 @@
;;; common.el --- Common programming settings. -*- lexical-binding: t; -*-
;; Time-stamp: <2020-12-08T13:08:13+0100>
;; Time-stamp: <2020-12-08T14:04:19+0100>
;;; Commentary:
@ -8,6 +8,7 @@
(require 'basics/package-management)
(require 'basics/global-variables)
(require 'misc/completion)
(use-package emacs
:straight (:type built-in)
@ -62,31 +63,6 @@
("<f6>" . flycheck-next-error)
("<f7>" . flycheck-list-errors)))
;; Autocompletion mode with many plugins.
(use-package company
:unless slow-computer
:diminish company-mode
:custom ((company-minimum-prefix-length 1) ; Suggestions after 1 character.
(company-selection-wrap-around t)
(company-tooltip-align-annotations t) ; Align to the right border.
(company-idle-delay 0.5))
:bind (:map company-active-map
("<return>" . nil) ; Disable completion on return.
("RET" . nil) ; https://emacs.stackexchange.com/a/13290
("<tab>" . company-complete-selection) ; Make tab work in lists.
("TAB" . company-complete-selection)) ; Tab in terminals.
:hook (after-init . global-company-mode))
;; Documentation popups for completions.
(use-package company-quickhelp
:after (company)
:config (company-quickhelp-mode))
;; Sorting and filtering for company.
(use-package company-prescient
:after (prescient company)
:hook (after-init . company-prescient-mode))
;; Automatic project management.
(use-package projectile
:unless slow-computer
@ -162,6 +138,23 @@ collapse other projects."
(:map projectile-mode-map ; Only override in projectile-mode.
("C-x C-f" . 'projectile-find-file))))
(use-package counsel-projectile
:demand t
:after (projectile)
:config (progn
;; I'm not exactly sure what I did here but it seems to work.
(defun my/counsel-projectile-switch-project-action (project)
"Call `my/switch-project'."
(let ((projectile-switch-project-action 'my/switch-project))
(counsel-projectile-switch-project-by-name project)))
(counsel-projectile-modify-action
'counsel-projectile-switch-project-action
'((add ("Y" my/counsel-projectile-switch-project-action
"open project in treemacs") 1)))
;; Overwrite keybindings and so on.
(counsel-projectile-mode)))
;; Highlight TODO, FIXME, NOTE and so on.
(use-package hl-todo
:bind (:map hl-todo-mode-map

View File

@ -1,12 +1,13 @@
;;; latex.el --- Settings for LaTeX. -*- lexical-binding: t; -*-
;; Time-stamp: <2020-03-27T17:57:36+0100>
;; Time-stamp: <2020-12-08T14:08:10+0100>
;;; Commentary:
;;; Code:
(require 'basics/package-management)
(require 'misc/completion)
(use-package tex-site
:straight auctex

View File

@ -1,14 +1,15 @@
;;; misc.el --- Miscellaneous file formats. -*- lexical-binding: t; -*-
;; Time-stamp: <2020-12-07T20:40:06+0100>
;; Time-stamp: <2020-12-08T13:58:30+0100>
;;; Commentary:
;;; Code:
(require 'basics/package-management)
(require 'text/common)
(require 'basics/buffers)
(require 'misc/completion)
(require 'text/common)
(use-package conf-mode
:straight (:type built-in)

View File

@ -1,12 +1,13 @@
;;; web.el --- Settings for web stuff. -*- lexical-binding: t; -*-
;; Time-stamp: <2020-05-24T22:54:55+0200>
;; Time-stamp: <2020-12-08T14:08:02+0100>
;;; Commentary:
;;; Code:
(require 'basics/package-management)
(require 'misc/completion)
;; Use company auto-completion for (X)HTML.
(use-package company-web