]> git.vanrenterghem.biz Git - Dotty.git/commitdiff
Use Corfu and Cape instead of Company for completion.
authorFrederik Vanrenterghem <frederik@vanrenterghem.biz>
Mon, 21 Oct 2024 23:35:59 +0000 (07:35 +0800)
committerFrederik Vanrenterghem <frederik@vanrenterghem.biz>
Mon, 21 Oct 2024 23:35:59 +0000 (07:35 +0800)
emacs/.emacs.d/init.el

index bc2dd2b3b8f3d5104c2998653f0281c183f284bf..256c9b4c4896237413b026707e61c5f975c09148 100644 (file)
@@ -54,25 +54,54 @@ vc-follow-symlinks t
 (setq inferior-julia-program-name "/usr/bin/julia")
 
 ;; enable autocomplete
-(use-package company
+(use-package corfu
   :ensure t
-  :demand t ;; Needed to ensure global company-mode works.
-  :commands company-mode
-  :bind(:map company-active-map
-             ("<return>" . nil)
-             ("RET" . nil)
-             ("C-<return>" . company-complete-selection)
-            ([tab]    . company-complete-common)            
-             ("TAB"    . company-complete-common))
-  :config
-  (setq ispell-complete-word-dict
-   (expand-file-name (concat user-emacs-directory "aspell_words.txt")))
-  ;(defun my/text-mode-hook ()
-  ;  (setq-local company-backends
-;              '((company-dabbrev company-ispell :separate)
- ;                 company-files)))
- ; (add-hook 'text-mode-hook #'my/text-mode-hook)
-  (global-company-mode 1))
+  ;; Optional customizations
+  :custom
+  (corfu-cycle t)                ;; Enable cycling for `corfu-next/previous'
+  (corfu-auto t)                 ;; Enable auto completion
+  ;; (corfu-separator ?\s)          ;; Orderless field separator
+  ;; (corfu-quit-at-boundary nil)   ;; Never quit at completion boundary
+  ;; (corfu-quit-no-match nil)      ;; Never quit, even if there is no match
+  ;; (corfu-preview-current nil)    ;; Disable current candidate preview
+  ;; (corfu-preselect 'prompt)      ;; Preselect the prompt
+  ;; (corfu-on-exact-match nil)     ;; Configure handling of exact matches
+  ;; (corfu-scroll-margin 5)        ;; Use scroll margin
+
+  ;; Enable Corfu only for certain modes. See also `global-corfu-modes'.
+  ;; :hook ((prog-mode . corfu-mode)
+  ;;        (shell-mode . corfu-mode)
+  ;;        (eshell-mode . corfu-mode))
+
+  ;; Recommended: Enable Corfu globally.  This is recommended since Dabbrev can
+  ;; be used globally (M-/).  See also the customization variable
+  ;; `global-corfu-modes' to exclude certain modes.
+  :init
+  (global-corfu-mode)
+  (corfu-history-mode))
+
+(use-package cape
+  :ensure t
+  ;; Bind prefix keymap providing all Cape commands under a mnemonic key.
+  ;; Press C-c p ? to for help.
+  :bind ("C-c p" . cape-prefix-map) ;; Alternative keys: M-p, M-+, ...
+  ;; Alternatively bind Cape commands individually.
+  ;; :bind (("C-c p d" . cape-dabbrev)
+  ;;        ("C-c p h" . cape-history)
+  ;;        ("C-c p f" . cape-file)
+  ;;        ...)
+  :init
+  ;; Add to the global default value of `completion-at-point-functions' which is
+  ;; used by `completion-at-point'.  The order of the functions matters, the
+  ;; first function returning a result wins.  Note that the list of buffer-local
+  ;; completion functions takes precedence over the global list.
+  (add-hook 'completion-at-point-functions #'cape-dict) ;; requires words package to be installed on Arch to provide /usr/share/dict/words
+  (add-hook 'completion-at-point-functions #'cape-dabbrev)
+  (add-hook 'completion-at-point-functions #'cape-file) 
+  (add-hook 'completion-at-point-functions #'cape-elisp-block)
+  ;; (add-hook 'completion-at-point-functions #'cape-history)
+  ;; ...
+  )
 
 (use-package org
   :ensure t