diff --git a/init.d/basics/buffers.el b/init.d/basics/buffers.el index 698e64e..8fef38a 100644 --- a/init.d/basics/buffers.el +++ b/init.d/basics/buffers.el @@ -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-" . purpose-toggle-window-buffer-dedicated) ("M-" . 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 diff --git a/init.d/basics/ui.el b/init.d/basics/ui.el index 6222cac..51d55db 100644 --- a/init.d/basics/ui.el +++ b/init.d/basics/ui.el @@ -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-" . ivy-previous-history-element) - ("M-" . ivy-next-history-element) - ("S-" . 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 diff --git a/init.d/misc/completion.el b/init.d/misc/completion.el new file mode 100644 index 0000000..ef12732 --- /dev/null +++ b/init.d/misc/completion.el @@ -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-" . ivy-previous-history-element) + ("M-" . ivy-next-history-element) + ("S-" . 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 + ("" . nil) ; Disable completion on return. + ("RET" . nil) ; https://emacs.stackexchange.com/a/13290 + ("" . 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 diff --git a/init.d/net/client.el b/init.d/net/client.el index 2aa8e0c..601ddb0 100644 --- a/init.d/net/client.el +++ b/init.d/net/client.el @@ -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 diff --git a/init.d/programming/common.el b/init.d/programming/common.el index 57d7606..3c47d16 100644 --- a/init.d/programming/common.el +++ b/init.d/programming/common.el @@ -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 @@ ("" . flycheck-next-error) ("" . 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 - ("" . nil) ; Disable completion on return. - ("RET" . nil) ; https://emacs.stackexchange.com/a/13290 - ("" . 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 diff --git a/init.d/text/latex.el b/init.d/text/latex.el index 58608ef..4b82b77 100644 --- a/init.d/text/latex.el +++ b/init.d/text/latex.el @@ -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 diff --git a/init.d/text/misc.el b/init.d/text/misc.el index 0ca6811..cbc227c 100644 --- a/init.d/text/misc.el +++ b/init.d/text/misc.el @@ -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) diff --git a/init.d/text/web.el b/init.d/text/web.el index 82d702b..f1cd4e8 100644 --- a/init.d/text/web.el +++ b/init.d/text/web.el @@ -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