2023-05-02 06:32:14 +02:00
;;; init-corfu.el --- Autocompletado con corfu -*- lexical-binding: t -*-
;; Author: kj <webmaster@outcontrol.net>
;; URL: https://git.kj2.me/kj/confi-emacs-actual
;;; Commentary:
;; Archivo de configuración específico para el paquete corfu.
;; Corfu, de manera resumida, es el que nos muestra el autocompletado
;; en Emacs, tanto para código como para otro tipo de textos.
;;
;; Este paquete viene a ser una alternativa a Company, por lo
;; que no se deberían activar los 2 al mismo tiempo.
;;; Code:
( use-package corfu
:defer t
2024-04-04 00:40:00 +02:00
:ensure ( :files ( :defaults " extensions/* " )
2023-05-02 06:32:14 +02:00
:includes ( corfu-info corfu-history ) )
2023-09-16 21:54:28 +02:00
:hook ( ( elpaca-after-init . global-corfu-mode )
2023-05-02 06:32:14 +02:00
( corfu-mode . corfu-popupinfo-mode ) )
2024-04-26 08:52:40 +02:00
:bind ( :map corfu-map
2024-09-10 18:36:16 +02:00
( " <tab> " . corfu-quit )
( " <escape> " . corfu-quit )
( " <SPC> " . corfu-insert-separator ) )
2023-05-02 06:32:14 +02:00
:custom
( corfu-auto t )
:config
( setq corfu-popupinfo-delay 0
2024-07-01 16:08:56 +02:00
;; corfu-auto-delay 0.5
2023-05-02 06:32:14 +02:00
corfu-auto-prefix 1
corfu-cycle t
2024-09-13 09:34:56 +02:00
corfu-quit-at-boundary t
2023-05-02 06:32:14 +02:00
corfu-preview-current nil
corfu-quit-no-match t )
2024-09-10 17:31:57 +02:00
( when ( < emacs-major-version 29 )
( advice-add 'pcomplete-completions-at-point :around #' cape-wrap-silent )
( advice-add 'pcomplete-completions-at-point :around #' cape-wrap-purify ) )
( corfu-history-mode 1 )
( savehist-mode 1 )
( add-to-list 'savehist-additional-variables 'corfu-history )
2023-05-02 06:32:14 +02:00
)
2024-04-21 05:34:47 +02:00
;; Cambia la forma de mostrar y buscar sugerencias (afecta a corfu, pero también a otros como vertico).
2023-08-26 20:10:20 +02:00
( use-package orderless
2024-09-13 05:00:01 +02:00
:defer t
2024-09-13 04:51:24 +02:00
:custom
( completion-styles ' ( orderless ) ) ; Use orderless
( completion-category-defaults nil ) ; I want to be in control!
2024-09-13 05:00:01 +02:00
( setq completion-ignore-case t )
( completion-category-overrides ' ( ( file ( styles basic partial-completion orderless ) ) ) )
2024-09-13 04:51:24 +02:00
( orderless-matching-styles
' ( orderless-literal
orderless-prefixes
orderless-initialism
orderless-regexp
orderless-flex ; Basically fuzzy finding
;; orderless-strict-leading-initialism
;; orderless-strict-initialism
;; orderless-strict-full-initialism
;; orderless-without-literal ; Recommended for dispatches instead
) )
)
2023-08-26 20:10:20 +02:00
2024-04-21 05:34:47 +02:00
;; Set de funciones de para las sugerencias de corfu.
2023-05-02 06:32:14 +02:00
( use-package cape
2024-04-26 08:20:53 +02:00
:defer t
2024-04-04 00:40:00 +02:00
:ensure ( :host github :repo " minad/cape " )
2023-05-02 06:32:14 +02:00
:after corfu
2024-04-21 05:34:47 +02:00
:bind ( ( " C-c f " . cape-file )
( " C-c l " . cape-line )
( " C-c _ " . cape-tex ) )
2023-05-02 06:32:14 +02:00
:init
2024-09-10 18:36:16 +02:00
( setq text-mode-ispell-word-completion nil )
2024-04-18 13:25:37 +02:00
;; (add-to-list 'completion-at-point-functions #'cape-line) ;; Completar línea actual en función de lo que dice otras líneas de buffer.
;; (add-to-list 'completion-at-point-functions #'cape-tex) ;; Completar Latex (caracteres unicode).
( add-to-list 'completion-at-point-functions #' cape-dict ) ;; Completar desde un diccionario (por defecto toma el de linux que está en /usr/share/dict/words).
2024-04-17 05:36:00 +02:00
( add-to-list 'completion-at-point-functions #' cape-dabbrev ) ;; Completar desde otras la palabras del buffer.
( add-to-list 'completion-at-point-functions #' cape-abbrev ) ;; Completar desde una abreviaciónes configuradas con add-global-abbrev (añadir abreviación global) o add-mode-abbrev (abreviación para el modo actual).
2024-04-21 05:34:47 +02:00
( add-to-list 'completion-at-point-functions #' cape-file ) ;; Completar rutas de archivos.
2024-04-18 13:25:37 +02:00
( add-to-list 'completion-at-point-functions #' cape-keyword ) ;; Completar desde keyword del lenguaje.
2024-06-25 21:06:51 +02:00
( advice-add 'eglot-completion-at-point :around #' cape-wrap-buster )
2023-05-02 06:32:14 +02:00
)
;; Hacer que corfu funcione en la terminal
2023-06-23 11:31:48 +02:00
( unless ( display-graphic-p )
( use-package corfu-terminal
2024-04-26 08:20:53 +02:00
:after corfu
2024-04-04 00:40:00 +02:00
:ensure ( :repo " https://codeberg.org/akib/emacs-corfu-terminal.git " )
2023-06-23 11:31:48 +02:00
:config
2023-05-02 06:32:14 +02:00
( corfu-terminal-mode +1 ) )
)
;; Iconos en corfu
( use-package kind-icon
:ensure t
:after corfu
:custom
( kind-icon-default-face 'corfu-default ) ; to compute blended backgrounds correctly
:config
( add-to-list 'corfu-margin-formatters #' kind-icon-margin-formatter ) )
( provide 'init-corfu )
;;; init-corfu.el ends here