updating config and corfu module
This commit is contained in:
parent
8bd123ef11
commit
b59a7f8cf8
8 changed files with 224 additions and 298 deletions
53
bindings.el
53
bindings.el
|
@ -167,6 +167,19 @@
|
|||
(modulep! :completion helm)))
|
||||
:desc "List project tasks" "z" #'+taskrunner/project-tasks))
|
||||
|
||||
;;; <leader> i --- insert
|
||||
(:prefix-map ("i" . "insert")
|
||||
(:when (> emacs-major-version 28)
|
||||
:desc "Emoji" "e" #'emoji-search)
|
||||
(:when (modulep! :ui emoji)
|
||||
:desc "Emoji" "e" #'emojify-insert-emoji)
|
||||
:desc "Current file name" "f" #'+default/insert-file-path
|
||||
:desc "Current file path" "F" (cmd!! #'+default/insert-file-path t)
|
||||
:desc "Snippet" "s" #'yas-insert-snippet
|
||||
:desc "Unicode" "u" #'insert-char
|
||||
:desc "From clipboard" "y" #'+default/yank-pop)
|
||||
|
||||
|
||||
;;; <leader> s --- search
|
||||
(:prefix-map ("s" . "search")
|
||||
:desc "Search buffer" "b" #'+default/search-buffer
|
||||
|
@ -338,6 +351,7 @@
|
|||
:desc "LSP Find declaration" "j" #'eglot-find-declaration
|
||||
(:when (modulep! :completion vertico)
|
||||
:desc "Jump to symbol in current workspace" "j" #'consult-eglot-symbols))
|
||||
:desc "PlatformIO Mode Toggle" "p" #'platformio-mode
|
||||
:desc "Compile" "c" #'compile
|
||||
:desc "Recompile" "C" #'recompile
|
||||
:desc "Jump to definition" "d" #'+lookup/definition
|
||||
|
@ -373,13 +387,13 @@
|
|||
;; some helpful general keys
|
||||
(map! "s-c" #'kill-ring-save
|
||||
"s-v" #'yank
|
||||
"s-V" #'consult-yank-from-kill-ring ; paste from previous copdied text
|
||||
"s-x" #'kill-region
|
||||
"s-a" #'mark-whole-buffer
|
||||
"s-z" #'undo
|
||||
"s-w" #'kill-buffer
|
||||
"s-f" #'+default/search-buffer
|
||||
"s-g" #'vertico-repeat ; repeat last search (or other vertico action)
|
||||
"s-V" #'consult-yank-from-kill-ring ; paste from previous copdied text
|
||||
"s-g" #'vertico-repeat
|
||||
"M-s-<up>" #'next-window-any-frame
|
||||
"M-s-<down>" #'previous-window-any-frame
|
||||
;; "s-<up>" #'beginning-of-buffer
|
||||
|
@ -416,10 +430,10 @@
|
|||
"s-M-]" #'sp-forward-sexp
|
||||
"s-M-{" #'sp-backward-up-sexp
|
||||
"s-M-}" #'sp-down-sexp
|
||||
"s-M-S-<left>" #'sp-backward-sexp
|
||||
"s-M-S-<right>" #'sp-forward-sexp
|
||||
"s-M-S-<up>" #'sp-backward-up-sexp
|
||||
"s-M-S-<down>" #'sp-down-sexp
|
||||
"C-M-[" #'sp-backward-sexp
|
||||
"C-M-]" #'sp-forward-sexp
|
||||
"C-M-{" #'sp-backward-up-sexp
|
||||
"C-M-}" #'sp-down-sexp
|
||||
"s-(" #'sp-wrap-round
|
||||
"s-)" #'sp-unwrap-sexp
|
||||
"s-[" #'sp-wrap-square
|
||||
|
@ -427,6 +441,33 @@
|
|||
"s-{" #'sp-wrap-curly
|
||||
"s-}" #'sp-unwrap-sexp)
|
||||
|
||||
;; platform io local leader bindings
|
||||
(map!
|
||||
:map platformio-mode-map
|
||||
:localleader
|
||||
"b" #'platformio-build
|
||||
"u" #'platformio-upload
|
||||
"B" #'platformio-boards
|
||||
"c" #'platformio-clean
|
||||
"m" #'platformio-device-monitor)
|
||||
|
||||
(map!
|
||||
:map sclang-mode-map
|
||||
:localleader
|
||||
"b" 'sclang-server-boot
|
||||
"." 'sclang-server-free-all
|
||||
"k" 'sclang-kill
|
||||
"r" 'sclang-server-reboot
|
||||
"e" 'sclang-eval-region-or-line
|
||||
"h" 'sclang-find-help
|
||||
"H" 'sclang-open-help-gui
|
||||
"s" 'sclang-start)
|
||||
|
||||
(map!
|
||||
:map sclang-mode-map
|
||||
"M-C-x" 'sclang-eval-region-or-line
|
||||
"M-C-z" 'sclang-server-free-all)
|
||||
|
||||
(map!
|
||||
:map web-mode-map
|
||||
"s-<" #'web-mode-element-wrap)
|
||||
|
|
35
config.el
35
config.el
|
@ -20,6 +20,11 @@
|
|||
(setq scroll-preserve-screen-position t)
|
||||
(setq global-hl-line-modes nil)
|
||||
|
||||
(setq locale-coding-system 'utf-8)
|
||||
(set-terminal-coding-system 'utf-8)
|
||||
(set-keyboard-coding-system 'utf-8)
|
||||
(prefer-coding-system 'utf-8)
|
||||
|
||||
(setq org-directory "~/Library/Mobile Documents/iCloud~md~obsidian/Documents/Primary/org/")
|
||||
|
||||
;; Modeline
|
||||
|
@ -90,19 +95,19 @@
|
|||
(smart-tabs-insinuate 'c 'javascript 'python))
|
||||
|
||||
;; lsp mode config to work with corfu/cape
|
||||
(after! lsp-mode
|
||||
(setq lsp-completion-provider :none)
|
||||
(setq lsp-signature-render-documentation nil)
|
||||
(setq lsp-completion-show-kind t)
|
||||
(setq lsp-ui-doc-show-with-mouse nil)
|
||||
;; (after! lsp-mode
|
||||
;; (setq lsp-completion-provider :none)
|
||||
;; (setq lsp-signature-render-documentation nil)
|
||||
;; (setq lsp-completion-show-kind t)
|
||||
;; (setq lsp-ui-doc-show-with-mouse nil)
|
||||
|
||||
(setq +lsp-company-backends
|
||||
'(:separate company-capf company-yasnippet company-dabbrev))
|
||||
;; (setq +lsp-company-backends
|
||||
;; '(:separate company-capf company-yasnippet company-dabbrev))
|
||||
|
||||
(defun my/lsp-mode-setup-completion ()
|
||||
(setf (alist-get 'styles (alist-get 'lsp-capf completion-category-defaults))
|
||||
'(orderless)))
|
||||
(add-hook! lsp-completion-mode 'my/lsp-mode-setup-completion))
|
||||
;; (defun my/lsp-mode-setup-completion ()
|
||||
;; (setf (alist-get 'styles (alist-get 'lsp-capf completion-category-defaults))
|
||||
;; '(orderless)))
|
||||
;; (add-hook! lsp-completion-mode 'my/lsp-mode-setup-completion))
|
||||
|
||||
;; bibliography file location
|
||||
(after! citar
|
||||
|
@ -115,6 +120,7 @@
|
|||
(setq web-mode-engines-alist
|
||||
'(("svelte" . "\\.svelte\\'")))
|
||||
(add-hook! web-mode (web-mode-use-tabs) (setq indent-tabs-mode t))
|
||||
(add-hook! web-mode (web-mode-toggle-current-element-highlight))
|
||||
|
||||
;; fix centaur tabs to show at the right times and add my muscle memory keybind
|
||||
(after! centaur-tabs
|
||||
|
@ -171,9 +177,16 @@
|
|||
;; (define-key sly-doc-map (kbd "s") 'cl-patterns-supercollider-documentation))
|
||||
(add-hook 'sly-connected-hook 'cl-patterns-helpers-load)))
|
||||
|
||||
;; adding supercollider path
|
||||
(setq exec-path (append exec-path '("/Applications/SuperCollider.app/Contents/MacOS/")))
|
||||
|
||||
;; tidal cycles!
|
||||
(setq tidal-boot-script-path "~/.cabal/share/aarch64-osx-ghc-9.4.2/tidal-1.9.3/BootTidal.hs")
|
||||
|
||||
;; add platformio to ino files
|
||||
(add-to-list 'auto-mode-alist '("\\.ino\\'" . arduino-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.ino\\'" . platformio-mode))
|
||||
|
||||
;; (defvar company-backends '())
|
||||
|
||||
(load! "obsidian-config.el")
|
||||
|
|
14
init.el
14
init.el
|
@ -26,19 +26,19 @@
|
|||
;;ido ; the other *other* search engine...
|
||||
;;ivy ; a search engine for love and life
|
||||
(vertico +orderless) ; the search engine of the future
|
||||
(corfu +orderless)
|
||||
(corfu +orderless +icons)
|
||||
|
||||
:ui
|
||||
;;deft ; notational velocity for Emacs
|
||||
doom ; what makes DOOM look the way it does
|
||||
doom-dashboard ; a nifty splash screen for Emacs
|
||||
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||
;; (emoji +unicode) ; 🙂
|
||||
(emoji +unicode) ; 🙂
|
||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||
;;hydra
|
||||
;; indent-guides ; highlighted indent columns
|
||||
ligatures ; ligatures and symbols to make your code pretty again
|
||||
;; minimap ; show a map of the code on the side
|
||||
minimap ; show a map of the code on the side
|
||||
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||
nav-flash ; blink cursor line after big motions
|
||||
;; neotree ; a project drawer, like NERDTree for vim
|
||||
|
@ -46,7 +46,7 @@
|
|||
(popup +all +defaults) ; tame sudden yet inevitable temporary windows
|
||||
tabs ; a tab bar for Emacs
|
||||
(treemacs +lsp +icons) ; a project drawer, like neotree but cooler
|
||||
;;unicode ; extended unicode support for various languages
|
||||
unicode ; extended unicode support for various languages
|
||||
(vc-gutter +pretty) ; vcs diff in the fringe
|
||||
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||
;;window-select ; visually switch windows
|
||||
|
@ -90,7 +90,7 @@
|
|||
;;ansible
|
||||
biblio ; Writes a PhD for you (citation needed)
|
||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||
;;direnv
|
||||
direnv
|
||||
;;docker
|
||||
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||
;;ein ; tame Jupyter notebooks with emacs
|
||||
|
@ -165,8 +165,8 @@
|
|||
;;raku ; the artist formerly known as perl6
|
||||
;;rest ; Emacs as a REST client
|
||||
;;rst ; ReST in peace
|
||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
;; (rust +lsp +tree-sitter) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
(rust +lsp +tree-sitter) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
;;scala ; java, but good
|
||||
(scheme +guile +chez) ; a fully conniving family of lisps
|
||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||
|
|
|
@ -25,12 +25,12 @@ highly non-native, but has some extra features and more maturity.
|
|||
supported.
|
||||
- +orderless ::
|
||||
Pull in [[doom-package:orderless]] if necessary and apply multi-component
|
||||
completion (still needed if [[:completion vertico]] is active).
|
||||
completion (still needed if [[doom-module::completion vertico]] is active).
|
||||
|
||||
** Packages
|
||||
- [[doom-package:corfu]]
|
||||
- [[doom-package:cape]]
|
||||
- [[doom-package:kind-icon]] if [[doom-module::completion corfu +icons]]
|
||||
- [[doom-package:nerd-icons-completion]] if [[doom-module::completion corfu +icons]]
|
||||
- [[doom-package:orderless]] if [[doom-module::completion corfu +orderless]]
|
||||
- [[doom-package:corfu-terminal]] if [[doom-module::os tty]]
|
||||
- [[doom-package:yasnippet-capf]] if [[doom-module::editor snippets]]
|
||||
|
@ -78,13 +78,13 @@ is visible, the following relevant keys are available:
|
|||
| [[kbd:][C-S-j]] | (evil) Go to next doc line |
|
||||
| [[kbd:][C-S-k]] | (evil) Go to previous doc line |
|
||||
| [[kbd:][C-h]] | Toggle documentation (if available) |
|
||||
| [[kbd:][s-<down>]] | Export to minibuffer (if [[doom-module:][:completion vertico]]) |
|
||||
| [[kbd:][s-j]] | (evil) Export to minibuffer (if [[doom-module:][:completion vertico]]) |
|
||||
| [[kbd:][s-<down>]] | Export to minibuffer (if [[doom-module::completion vertico]]) |
|
||||
| [[kbd:][s-j]] | (evil) Export to minibuffer (if [[doom-module::completion vertico]]) |
|
||||
| [[kbd:][RET]] | Insert candidate |
|
||||
| [[kbd:][C-SPC]] | (when completing) Insert separator (see below) |
|
||||
| [[kbd:][C-SPC]] | Complete (unless [[doom-module:][:completion corfu +tng]]) |
|
||||
| [[kbd:][C-SPC]] | Complete (unless [[doom-module::completion corfu +tng]]) |
|
||||
|
||||
If you prefer a [[kbd:][TAB]]-centric completion style, enable the [[doom-module:][:completion corfu +tng]]
|
||||
If you prefer a [[kbd:][TAB]]-centric completion style, enable the [[doom-module::completion corfu +tng]]
|
||||
flag so that, instead, you trigger completion with [[kbd:][TAB]], getting the following
|
||||
additional binds:
|
||||
|
||||
|
@ -95,15 +95,16 @@ additional binds:
|
|||
| [[kbd:][S-TAB]] | (when completing) Go to previous candidate |
|
||||
|
||||
** Searching with multiple keywords
|
||||
If the ~+orderless~ flag is enabled, users can perform code completion
|
||||
with multiple search keywords by use of space as separator. More information can
|
||||
be found [[https://github.com/oantolin/orderless#company][here]]. Pressing [[kdb:][C-SPC]] again while completing inserts a space as
|
||||
separator. This allows searching with space-separated terms; each piece will
|
||||
match individually and in any order, with smart casing. Pressing just [[kbd:][SPC]] acts
|
||||
as normal and restarts completion, so that when typing sentences it doesn't try
|
||||
to complete the whole sentence instead of just the word.
|
||||
If the [[doom-module::completion corfu +orderless]] flag is enabled, users can
|
||||
perform code completion with multiple search keywords by use of space as
|
||||
separator. More information can be found [[https://github.com/oantolin/orderless#company][here]]. Pressing [[kdb:][C-SPC]] again while
|
||||
completing inserts a space as separator. This allows searching with
|
||||
space-separated terms; each piece will match individually and in any order, with
|
||||
smart casing. Pressing just [[kbd:][SPC]] acts as normal and restarts completion, so that
|
||||
when typing sentences it doesn't try to complete the whole sentence instead of
|
||||
just the word.
|
||||
|
||||
** Exporting to the minibuffer (requires [[doom-module:][:completion vertico]])
|
||||
** Exporting to the minibuffer (requires [[doom-module::completion vertico]])
|
||||
When using the [[doom-module::completion vertico]] module, which pulls in the
|
||||
[[doom-package:consult]] package, the entries shown in the completion popup can be
|
||||
exported to a consult minibuffer, giving access to all the manipulations the
|
||||
|
@ -117,13 +118,28 @@ A few variables may be set to change behavior of this module:
|
|||
Number of seconds till completion occurs automatically. Defaults to 0.1.
|
||||
- [[var:corfu-auto-prefix]] ::
|
||||
Number of characters till auto-completion starts to happen. Defaults to 2.
|
||||
- [[var:+corfu-want-multi-component]] ::
|
||||
Sets whether orderless-style matching should be supported with space as a
|
||||
separator.
|
||||
- [[var:corfu-on-exact-match]] ::
|
||||
Configures behavior for exact matches. Its default is nil, and it's
|
||||
recommended to leave it at that. Otherwise, single matches on snippet keys
|
||||
expand immediately.
|
||||
- [[var:+corfu-completion-styles]] ::
|
||||
Used to override [[var:completion-styles]] for corfu invocations, such that it
|
||||
can have a value separate from, say, [[doom-package:consult]].
|
||||
- [[var:+corfu-icon-mapping]] ::
|
||||
Configures icons used for each completion. See its documentation for details.
|
||||
|
||||
** Adding CAPFs to a mode
|
||||
To add other CAPFs on a mode-per-mode basis, put either of the following in your
|
||||
~config.el~:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(add-hook! some-mode (add-to-list 'completion-at-point-functions #'some-capf))
|
||||
;; OR, but note the different call signature
|
||||
(add-hook 'some-mode-hook (lambda () (add-to-list 'completion-at-point-functions #'some-capf)))
|
||||
#+end_src
|
||||
|
||||
Also see ~add-hook!~'s documentation for additional ways to call it.
|
||||
~add-hook~ only accepts the quoted arguments form above.
|
||||
|
||||
* Troubleshooting
|
||||
[[doom-report:][Report an issue?]]
|
||||
|
|
|
@ -1,9 +1,64 @@
|
|||
;;; completion/corfu/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defvar +corfu-completion-styles '(basic partial-completion flex)
|
||||
"Completion styles for corfu to use.
|
||||
|
||||
If the user enables +orderless, `orderless' is automatically appended to this
|
||||
list before fowarding to `completion-styles'.")
|
||||
|
||||
(defvar +corfu-icon-mapping
|
||||
`((array ,(nerd-icons-codicon "nf-cod-symbol_array") :face font-lock-type-face)
|
||||
(boolean ,(nerd-icons-codicon "nf-cod-symbol_boolean") :face font-lock-builtin-face)
|
||||
(class ,(nerd-icons-codicon "nf-cod-symbol_class") :face font-lock-type-face)
|
||||
(color ,(nerd-icons-codicon "nf-cod-symbol_color") :face success)
|
||||
(command ,(nerd-icons-codicon "nf-cod-terminal") :face default)
|
||||
(constant ,(nerd-icons-codicon "nf-cod-symbol_constant") :face font-lock-constant-face)
|
||||
(constructor ,(nerd-icons-codicon "nf-cod-triangle_right") :face font-lock-function-name-face)
|
||||
(enummember ,(nerd-icons-codicon "nf-cod-symbol_enum_member") :face font-lock-builtin-face)
|
||||
(enum-member ,(nerd-icons-codicon "nf-cod-symbol_enum_member") :face font-lock-builtin-face)
|
||||
(enum ,(nerd-icons-codicon "nf-cod-symbol_enum") :face font-lock-builtin-face)
|
||||
(event ,(nerd-icons-codicon "nf-cod-symbol_event") :face font-lock-warning-face)
|
||||
(field ,(nerd-icons-codicon "nf-cod-symbol_field") :face font-lock-variable-name-face)
|
||||
(file ,(nerd-icons-codicon "nf-cod-symbol_file") :face font-lock-string-face)
|
||||
(folder ,(nerd-icons-codicon "nf-cod-folder") :face font-lock-doc-face)
|
||||
(interface ,(nerd-icons-codicon "nf-cod-symbol_interface") :face font-lock-type-face)
|
||||
(keyword ,(nerd-icons-codicon "nf-cod-symbol_keyword") :face font-lock-keyword-face)
|
||||
(macro ,(nerd-icons-codicon "nf-cod-symbol_misc") :face font-lock-keyword-face)
|
||||
(magic ,(nerd-icons-codicon "nf-cod-wand") :face font-lock-builtin-face)
|
||||
(method ,(nerd-icons-codicon "nf-cod-symbol_method") :face font-lock-function-name-face)
|
||||
(function ,(nerd-icons-codicon "nf-cod-symbol_method") :face font-lock-function-name-face)
|
||||
(module ,(nerd-icons-codicon "nf-cod-file_submodule") :face font-lock-preprocessor-face)
|
||||
(numeric ,(nerd-icons-codicon "nf-cod-symbol_numeric") :face font-lock-builtin-face)
|
||||
(operator ,(nerd-icons-codicon "nf-cod-symbol_operator") :face font-lock-comment-delimiter-face)
|
||||
(param ,(nerd-icons-codicon "nf-cod-symbol_parameter") :face default)
|
||||
(property ,(nerd-icons-codicon "nf-cod-symbol_property") :face font-lock-variable-name-face)
|
||||
(reference ,(nerd-icons-codicon "nf-cod-references") :face font-lock-variable-name-face)
|
||||
(snippet ,(nerd-icons-codicon "nf-cod-symbol_snippet") :face font-lock-string-face)
|
||||
(string ,(nerd-icons-codicon "nf-cod-symbol_string") :face font-lock-string-face)
|
||||
(struct ,(nerd-icons-codicon "nf-cod-symbol_structure") :face font-lock-variable-name-face)
|
||||
(text ,(nerd-icons-codicon "nf-cod-text_size") :face font-lock-doc-face)
|
||||
(typeparameter ,(nerd-icons-codicon "nf-cod-list_unordered") :face font-lock-type-face)
|
||||
(type-parameter ,(nerd-icons-codicon "nf-cod-list_unordered") :face font-lock-type-face)
|
||||
(unit ,(nerd-icons-codicon "nf-cod-symbol_ruler") :face font-lock-constant-face)
|
||||
(value ,(nerd-icons-codicon "nf-cod-symbol_field") :face font-lock-builtin-face)
|
||||
(variable ,(nerd-icons-codicon "nf-cod-symbol_variable") :face font-lock-variable-name-face)
|
||||
(t ,(nerd-icons-codicon "nf-cod-code") :face font-lock-warning-face))
|
||||
"Mapping of completion kinds to icons.
|
||||
|
||||
It should be a list of elements with the form (KIND ICON-TXT [:face FACE]).
|
||||
KIND is a symbol determining what the completion is, and comes from calling the
|
||||
`:company-kind' property of the completion. ICON-TXT is a string with the icon
|
||||
to use, usually as a character from the `nerd-icons' symbol font. See that
|
||||
package for how to get these. Note that it can be simple text if that is
|
||||
preferred. FACE, if present, is applied to the icon, mainly for its color. The
|
||||
special `t' symbol should be used for KIND to represent the default icon, and
|
||||
must be present.")
|
||||
|
||||
;;
|
||||
;;; Packages
|
||||
(use-package! corfu
|
||||
:hook (doom-first-buffer . global-corfu-mode)
|
||||
:hook (org-mode . corfu-mode)
|
||||
:init
|
||||
;; Auto-completion settings, must be set before calling `global-corfu-mode'.
|
||||
;; Due to lazy-loading, setting them in config.el works too.
|
||||
|
@ -16,8 +71,6 @@
|
|||
gud-mode
|
||||
vterm-mode))
|
||||
:config
|
||||
(add-to-list 'completion-styles 'partial-completion t)
|
||||
(add-to-list 'completion-styles 'initials t)
|
||||
(setq corfu-cycle t
|
||||
corfu-separator (when (modulep! +orderless) ?\s)
|
||||
corfu-preselect t
|
||||
|
@ -30,12 +83,50 @@
|
|||
;; In the case of +tng, TAB should be smart regarding completion;
|
||||
;; However, it should otherwise behave like normal, whatever normal was.
|
||||
tab-always-indent (if (modulep! +tng) 'complete tab-always-indent))
|
||||
|
||||
(when (modulep! +orderless)
|
||||
(cond ((modulep! :tools lsp +eglot) (add-to-list 'completion-category-overrides '(eglot (styles orderless))))
|
||||
((modulep! :tools lsp) (add-hook 'lsp-completion-mode-hook
|
||||
(defun doom--use-orderless-lsp-capf ()
|
||||
(setf (alist-get 'styles (alist-get 'lsp-capf completion-category-defaults))
|
||||
'(orderless)))))))
|
||||
(after! 'lsp-mode
|
||||
(add-to-list 'completion-category-overrides
|
||||
`(lsp-capf (styles ,@+corfu-completion-styles ,(when (modulep! +orderless) 'orderless)))))
|
||||
(after! 'eglot
|
||||
(add-to-list 'completion-category-overrides
|
||||
`(eglot (styles ,@+corfu-completion-styles ,(when (modulep! +orderless) 'orderless))))))
|
||||
|
||||
;; For the icons, we use a custom margin formatter, which simply reads the
|
||||
;; mapping in `+corfu-icon-mapping'.
|
||||
(when (modulep! +icons)
|
||||
(defun icon-margin-formatter (metadata)
|
||||
(when-let ((kindfunc (or (plist-get completion-extra-properties :company-kind)
|
||||
(assq 'company-kind metadata))))
|
||||
(lambda (cand)
|
||||
(let* ((kind (funcall kindfunc cand))
|
||||
(icon-entry (assq (or kind t) +corfu-icon-mapping))
|
||||
(str (cadr icon-entry))
|
||||
(props (cddr icon-entry))
|
||||
(extra-face (plist-get props :face))
|
||||
(space (propertize " " 'display '(space :width 1)))
|
||||
(str (concat " " str space)))
|
||||
(when extra-face
|
||||
(put-text-property 0 3 'face extra-face str))
|
||||
str))))
|
||||
(setq corfu-margin-formatters '(icon-margin-formatter)))
|
||||
|
||||
;; This is to decouple the use of `completion-styles' in corfu from other
|
||||
;; completion packages, such as vertico. That way, the user can leave the
|
||||
;; global value of the variable alone, say, to be used by the default
|
||||
;; front-end or consult. The vertico module also does something similar with
|
||||
;; `+vertico-company-completion-styles'.
|
||||
(defadvice! +corfu--completion-styles (orig &rest args)
|
||||
"Try default completion styles before orderless.
|
||||
|
||||
Meant as :around advice for `corfu--recompute'."
|
||||
:around #'corfu--recompute
|
||||
(let ((completion-styles
|
||||
(append +corfu-completion-styles (when (modulep! +orderless)
|
||||
'(orderless))))
|
||||
completion-category-overrides completion-category-defaults)
|
||||
(apply orig args)))
|
||||
|
||||
(map! (:unless (modulep! +tng)
|
||||
"C-SPC" #'completion-at-point)
|
||||
(:map 'corfu-map
|
||||
|
@ -46,8 +137,7 @@
|
|||
[backtab] #'corfu-previous
|
||||
"TAB" #'corfu-next
|
||||
"S-TAB" #'corfu-previous)))
|
||||
|
||||
(when (modulep! :editor evil)
|
||||
(after! evil-collection-corfu
|
||||
(evil-collection-define-key 'insert 'corfu-map
|
||||
(kbd "RET") #'corfu-insert
|
||||
[return] #'corfu-insert))
|
||||
|
@ -66,10 +156,9 @@
|
|||
(use-package! cape
|
||||
:after corfu
|
||||
:config
|
||||
(add-hook 'prog-mode-hook
|
||||
(lambda () (add-to-list 'completion-at-point-functions #'cape-file)))
|
||||
(add-hook! (markdown-mode org-mode)
|
||||
(lambda () (add-to-list 'completion-at-point-functions #'cape-elisp-block))))
|
||||
(add-hook! prog-mode (add-to-list 'completion-at-point-functions #'cape-file))
|
||||
(add-hook! (org-mode markdown-mode) (add-to-list 'completion-at-point-functions #'cape-elisp-block))
|
||||
(advice-add #'lsp-completion-at-point :around #'cape-wrap-noninterruptible))
|
||||
|
||||
(use-package! yasnippet-capf
|
||||
:after corfu
|
||||
|
@ -77,47 +166,6 @@
|
|||
(add-hook 'yas-minor-mode-hook
|
||||
(lambda () (add-to-list 'completion-at-point-functions #'yasnippet-capf))))
|
||||
|
||||
(use-package! svg-lib
|
||||
:after kind-icon)
|
||||
(use-package! kind-icon
|
||||
:commands (kind-icon-margin-formatter
|
||||
kind-icon-reset-cache
|
||||
kind-icon-formatted)
|
||||
:init
|
||||
(add-hook 'corfu-margin-formatters #'kind-icon-margin-formatter)
|
||||
:config
|
||||
(defface corfu-kind-icon '((t :inherit corfu-default))
|
||||
"Face for the icons in the corfu popup.
|
||||
For changing color, you should probably use `kind-icon-mapping', which see. The
|
||||
purpose here is overriding size and helping with scaling issues."
|
||||
:group 'corfu)
|
||||
(setq kind-icon-default-face 'corfu-kind-icon
|
||||
kind-icon-blend-background t
|
||||
kind-icon-blend-frac 0.2)
|
||||
(let ((def-style (svg-lib-style-compute-default 'corfu-kind-icon))
|
||||
res)
|
||||
(cl-loop for (key value) on def-style by 'cddr
|
||||
do (unless (member key '(:foreground
|
||||
:background
|
||||
:font-size
|
||||
:font-width
|
||||
:font-weight
|
||||
:font-family
|
||||
:width))
|
||||
(setq res (plist-put res key value))))
|
||||
(setq kind-icon-default-style (plist-put res :stroke 0.25)))
|
||||
(defadvice! doom--kind-icon-remove-padding (orig kind)
|
||||
"Rescale icon images to 1, and set surrounding spaces to width 0.
|
||||
This fixes the cropping due to scaling issues."
|
||||
:around #'kind-icon-formatted
|
||||
(let* ((text (funcall orig kind))
|
||||
(image (get-text-property 1 'display text)))
|
||||
(when (eq (car-safe image) 'image)
|
||||
(setf (image-property image :scale) 1)
|
||||
(put-text-property 0 1 'display '(space :width (0)) text)
|
||||
(put-text-property 2 3 'display '(space :width (0)) text))
|
||||
text)))
|
||||
|
||||
(use-package! corfu-terminal
|
||||
:when (not (display-graphic-p))
|
||||
:hook (corfu-mode . corfu-terminal-mode))
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; completion/corfu/packages.el
|
||||
|
||||
(package! corfu)
|
||||
(package! cape)
|
||||
(package! corfu :recipe (:files ("*.el" "extensions/*.el")) :pin "cc244c54b392ce4d27ed166730efde4f4d01a07f")
|
||||
(package! cape :pin "4506ee82129a8e9ff9e4650a9b16eb8c4ae355f3")
|
||||
(when (modulep! +icons)
|
||||
(package! svg-lib)
|
||||
(package! kind-icon))
|
||||
(package! nerd-icons-completion :pin "c2db8557a3c1a9588d111f8c8e91cae96ee85010"))
|
||||
(when (modulep! +orderless)
|
||||
(package! orderless))
|
||||
(package! orderless :pin "e6784026717a8a6a7dcd0bf31fd3414f148c542e"))
|
||||
(when (modulep! :os tty)
|
||||
(package! corfu-terminal))
|
||||
(package! corfu-terminal :pin "501548c3d51f926c687e8cd838c5865ec45d03cc"))
|
||||
(when (modulep! :editor snippets)
|
||||
(package! yasnippet-capf))
|
||||
(package! yasnippet-capf :pin "40654214db7a44db3a99321447632b43a10fae57"))
|
||||
|
|
|
@ -56,116 +56,6 @@
|
|||
"'" #'repeat
|
||||
"<escape>" #'corfu-quit))
|
||||
|
||||
;; Colemak
|
||||
(defun meow/setup-colemak ()
|
||||
(setq meow-cheatsheet-layout meow-cheatsheet-layout-colemak)
|
||||
(meow/setup)
|
||||
(when (modulep! +override)
|
||||
(meow-motion-overwrite-define-key
|
||||
;; Use e to move up, n to move down.
|
||||
;; Since special modes usually use n to move down, we only overwrite e here.
|
||||
'("e" . meow-prev))
|
||||
(when (modulep! :editor meow +leader)
|
||||
(meow-motion-overwrite-define-key '("\\ e" . "H-e")))
|
||||
(meow-leader-define-key '("e" . "H-e")))
|
||||
(map! :map meow-normal-state-keymap
|
||||
"[" #'meow-beginning-of-thing
|
||||
"]" #'meow-end-of-thing
|
||||
"/" #'meow-visit
|
||||
"a" #'meow-append
|
||||
"A" #'meow-open-below
|
||||
"b" #'meow-back-word
|
||||
"B" #'meow-back-symbol
|
||||
"c" #'meow-change
|
||||
"d" #'meow-delete
|
||||
"e" #'meow-prev
|
||||
"E" #'meow-prev-expand
|
||||
"f" #'meow-find
|
||||
"g" #'meow-cancel-selection
|
||||
"G" #'meow-grab
|
||||
"h" #'meow-left
|
||||
"H" #'meow-left-expand
|
||||
"i" #'meow-right
|
||||
"I" #'meow-right-expand
|
||||
"j" #'meow-join
|
||||
"k" #'meow-kill
|
||||
"l" #'meow-line
|
||||
"L" #'meow-goto-line
|
||||
"m" #'meow-mark-word
|
||||
"M" #'meow-mark-symbol
|
||||
"n" #'meow-next
|
||||
"N" #'meow-next-expand
|
||||
"o" #'meow-block
|
||||
"O" #'meow-to-block
|
||||
"p" #'meow-yank
|
||||
"q" #'meow-quit
|
||||
"r" #'meow-replace
|
||||
"s" #'meow-insert
|
||||
"S" #'meow-open-above
|
||||
"t" #'meow-till
|
||||
"u" #'meow-undo
|
||||
"U" #'meow-undo-in-selection
|
||||
"v" #'meow-search
|
||||
"w" #'meow-next-word
|
||||
"W" #'meow-next-symbol
|
||||
"x" #'meow-delete
|
||||
"X" #'meow-backward-delete
|
||||
"y" #'meow-save
|
||||
"z" #'meow-pop-selection))
|
||||
|
||||
;; Dvorak
|
||||
(defun meow/setup-dvorak ()
|
||||
(setq meow-cheatsheet-layout meow-cheatsheet-layout-dvorak)
|
||||
(when (modulep! +override)
|
||||
(meow-motion-overwrite-define-key)) ; custom keybinding for motion state
|
||||
(meow/setup)
|
||||
(map! :map meow-normal-state-keymap
|
||||
"<" #'meow-beginning-of-thing
|
||||
">" #'meow-end-of-thing
|
||||
"a" #'meow-append
|
||||
"A" #'meow-open-below
|
||||
"b" #'meow-back-word
|
||||
"B" #'meow-back-symbol
|
||||
"c" #'meow-change
|
||||
"d" #'meow-delete
|
||||
"D" #'meow-backward-delete
|
||||
"e" #'meow-line
|
||||
"E" #'meow-goto-line
|
||||
"f" #'meow-find
|
||||
"g" #'meow-cancel-selection
|
||||
"G" #'meow-grab
|
||||
"h" #'meow-left
|
||||
"H" #'meow-left-expand
|
||||
"I" #'meow-open-above
|
||||
"i" #'meow-insert
|
||||
"j" #'meow-join
|
||||
"k" #'meow-kill
|
||||
"l" #'meow-till
|
||||
"m" #'meow-mark-word
|
||||
"M" #'meow-mark-symbol
|
||||
"n" #'meow-next
|
||||
"N" #'meow-next-expand
|
||||
"o" #'meow-block
|
||||
"O" #'meow-to-block
|
||||
"p" #'meow-prev
|
||||
"P" #'meow-prev-expand
|
||||
"q" #'meow-quit
|
||||
"Q" #'meow-goto-line
|
||||
"r" #'meow-replace
|
||||
"R" #'meow-swap-grab
|
||||
"s" #'meow-search
|
||||
"t" #'meow-right
|
||||
"T" #'meow-right-expand
|
||||
"u" #'meow-undo
|
||||
"U" #'meow-undo-in-selection
|
||||
"v" #'meow-visit
|
||||
"w" #'meow-next-word
|
||||
"W" #'meow-next-symbol
|
||||
"x" #'meow-save
|
||||
"X" #'meow-sync-grab
|
||||
"y" #'meow-yank
|
||||
"z" #'meow-pop-selection))
|
||||
|
||||
;; Qwerty
|
||||
(defun meow/setup-qwerty ()
|
||||
(setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty)
|
||||
|
@ -229,93 +119,11 @@
|
|||
"Y" #'meow-sync-grab
|
||||
"z" #'meow-pop-selection))
|
||||
|
||||
;; Programmer Dvorak
|
||||
(defun meow/setup-dvp ()
|
||||
(setq meow-cheatsheet-layout meow-cheatsheet-layout-dvp)
|
||||
(when (modulep! +override)
|
||||
(meow-motion-overwrite-define-key)) ; custom keybinding for motion state
|
||||
(map! :map meow-normal-state-keymap
|
||||
"?" #'meow-cheatsheet
|
||||
"*" #'meow-expand-0
|
||||
"=" #'meow-expand-9
|
||||
"!" #'meow-expand-8
|
||||
"[" #'meow-expand-7
|
||||
"]" #'meow-expand-6
|
||||
"{" #'meow-expand-5
|
||||
"+" #'meow-expand-4
|
||||
"}" #'meow-expand-3
|
||||
")" #'meow-expand-2
|
||||
"(" #'meow-expand-1
|
||||
"1" #'digit-argument
|
||||
"2" #'digit-argument
|
||||
"3" #'digit-argument
|
||||
"4" #'digit-argument
|
||||
"5" #'digit-argument
|
||||
"6" #'digit-argument
|
||||
"7" #'digit-argument
|
||||
"8" #'digit-argument
|
||||
"9" #'digit-argument
|
||||
"0" #'digit-argument
|
||||
"-" #'negative-argument
|
||||
";" #'meow-reverse
|
||||
"," #'meow-inner-of-thing
|
||||
"." #'meow-bounds-of-thing
|
||||
"<" #'meow-beginning-of-thing
|
||||
">" #'meow-end-of-thing
|
||||
"a" #'meow-append
|
||||
"A" #'meow-open-below
|
||||
"b" #'meow-back-word
|
||||
"B" #'meow-back-symbol
|
||||
"c" #'meow-change
|
||||
"d" #'meow-delete
|
||||
"D" #'meow-backward-delete
|
||||
"e" #'meow-line
|
||||
"E" #'meow-goto-line
|
||||
"f" #'meow-find
|
||||
"g" #'meow-cancel-selection
|
||||
"G" #'meow-grab
|
||||
"h" #'meow-left
|
||||
"H" #'meow-left-expand
|
||||
"i" #'meow-insert
|
||||
"I" #'meow-open-above
|
||||
"j" #'meow-join
|
||||
"k" #'meow-kill
|
||||
"l" #'meow-till
|
||||
"m" #'meow-mark-word
|
||||
"M" #'meow-mark-symbol
|
||||
"n" #'meow-next
|
||||
"N" #'meow-next-expand
|
||||
"o" #'meow-block
|
||||
"O" #'meow-to-block
|
||||
"p" #'meow-prev
|
||||
"P" #'meow-prev-expand
|
||||
"q" #'meow-quit
|
||||
"r" #'meow-replace
|
||||
"R" #'meow-swap-grab
|
||||
"s" #'meow-search
|
||||
"t" #'meow-right
|
||||
"T" #'meow-right-expand
|
||||
"u" #'meow-undo
|
||||
"U" #'meow-undo-in-selection
|
||||
"v" #'meow-visit
|
||||
"w" #'meow-next-word
|
||||
"W" #'meow-next-symbol
|
||||
"x" #'meow-save
|
||||
"X" #'meow-sync-grab
|
||||
"y" #'meow-yank
|
||||
"z" #'meow-pop-selection
|
||||
"'" #'repeat
|
||||
"<escape>" #'ignore))
|
||||
|
||||
(use-package! meow
|
||||
:hook (doom-after-modules-config . meow-global-mode)
|
||||
:demand t
|
||||
:config
|
||||
(cond
|
||||
((modulep! +colemak) (meow/setup-colemak))
|
||||
((modulep! +dvorak) (meow/setup-dvorak))
|
||||
((modulep! +qwerty) (meow/setup-qwerty))
|
||||
((modulep! +dvp) (meow/setup-dvp)))
|
||||
(meow/setup-qwerty)
|
||||
(cond
|
||||
((modulep! +leader)
|
||||
(map! :map meow-normal-state-keymap
|
||||
|
@ -328,4 +136,5 @@
|
|||
(t (meow/setup-keypad)))
|
||||
(pushnew! meow-mode-state-list '(sly-db-mode . motion))
|
||||
(pushnew! meow-mode-state-list '(sly-inspector-mode . motion))
|
||||
(map! :map meow-keymap [remap describe-key] #'helpful-key))
|
||||
(pushnew! meow-mode-state-list '(Custom-mode . normal))
|
||||
(map! :map meow-keymap [remap describe-key] #'helpfl-key))
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
:host github
|
||||
:repo "serialdev/ijanet-mode"))
|
||||
|
||||
|
||||
(package! platformio-mode)
|
||||
|
||||
|
||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue