aboutsummaryrefslogtreecommitdiff
path: root/.emacs.d/lisp/init-completion.el
diff options
context:
space:
mode:
authorGuangxiong Lin <[email protected]>2022-03-20 10:12:46 +0800
committerGuangxiong Lin <[email protected]>2022-03-20 10:12:46 +0800
commit0e18684eef402794f470b5a10658002136cb5195 (patch)
treedee6adcf24015879e982e411802f396f16f6832c /.emacs.d/lisp/init-completion.el
parente4b65a6ea63c4043167c7ded7a8fe688d7780335 (diff)
downloaddotfiles-0e18684eef402794f470b5a10658002136cb5195.tar.gz
dotfiles-0e18684eef402794f470b5a10658002136cb5195.tar.bz2
dotfiles-0e18684eef402794f470b5a10658002136cb5195.zip
Separate completion config (emacs)
Diffstat (limited to '.emacs.d/lisp/init-completion.el')
-rw-r--r--.emacs.d/lisp/init-completion.el29
1 files changed, 29 insertions, 0 deletions
diff --git a/.emacs.d/lisp/init-completion.el b/.emacs.d/lisp/init-completion.el
new file mode 100644
index 0000000..fb2b2b0
--- /dev/null
+++ b/.emacs.d/lisp/init-completion.el
@@ -0,0 +1,29 @@
+(when (gx/maybe-require-package 'orderless)
+
+ (setq orderless-matching-styles
+ '(orderless-literal orderless-regexp orderless-prefixes))
+
+ (defun gx/orderless-without-if-bang (pattern _index _total)
+ (cond
+ ((equal "!" pattern)
+ '(orderless-literal . ""))
+ ((string-prefix-p "!" pattern)
+ `(orderless-without-literal . ,(substring pattern 1)))))
+
+ (defun gx/orderless-flex-if-twiddle (pattern _index _total)
+ (when (string-suffix-p "~" pattern)
+ `(orderless-flex . ,(substring pattern 0 -1))))
+
+ (setq orderless-style-dispatchers
+ '(gx/orderless-without-if-bang
+ gx/orderless-flex-if-twiddle))
+
+ (setq completion-styles '(substring orderless flex)
+ completion-category-defaults nil
+ completion-category-overrides
+ '((file (styles . (partial-completion))))))
+
+(when (gx/maybe-require-package 'cape)
+ (add-to-list 'completion-at-point-functions #'cape-file))
+
+(provide 'init-completion)