diff --git a/lisp/icejam-company-yasnippet.el b/lisp/icejam-company-yasnippet.el index 927aaa9..3a4dada 100644 --- a/lisp/icejam-company-yasnippet.el +++ b/lisp/icejam-company-yasnippet.el @@ -33,23 +33,35 @@ (global-company-mode t) +(defun just-one-face (fn &rest args) + (let ((orderless-match-faces [completions-common-part])) + (apply fn args))) + +(advice-add 'company-capf--candidates :around #'just-one-face) + +(defun company-completion-styles (capf-fn &rest args) + (let ((completion-styles '(basic partial-match))) + (apply capf-fn args))) + +(advice-add 'company-capf :around #'company-completion-styles) + (setq-default - company-minimum-prefix-length 3 ;; minimum prefix character number for auto complete. + company-minimum-prefix-length 3 ;; minimum prefix character number for auto complete. company-idle-delay 0.1 company-require-match nil company-echo-delay 0 ;;;; company-show-numbers t company-tooltip-align-annotations t ;; align annotations to the right tooltip border. company-tooltip-flip-when-above t - company-tooltip-limit 10 ;; tooltip candidates max limit. - company-tooltip-minimum 2 ;; minimum candidates limit. - company-tooltip-minimum-width 10 ;; The minimum width of the tooltip's inner area. - ;; This doesn't include the margins and the scroll bar. - company-tooltip-margin 2 ;; width of margin columns to show around the tooltip + company-tooltip-limit 10 ;; tooltip candidates max limit. + company-tooltip-minimum 2 ;; minimum candidates limit. + company-tooltip-minimum-width 10 ;; The minimum width of the tooltip's inner area. + ;; This doesn't include the margins and the scroll bar. + company-tooltip-margin 2 ;; width of margin columns to show around the tooltip company-tooltip-offset-display 'lines ;; 'lines - how to show tooltip unshown candidates number. company-show-numbers nil ;; t: show quick-access numbers for the first ten candidates. company-selection-wrap-around t ;; loop over candidates company-dabbrev-other-buffers t ;; Only offer dabbrev from the same major mode - company-dabbrev-downcase nil ;; Preserve case of candidates + company-dabbrev-downcase nil ;; Preserve case of candidates company-format-margin-function nil ;; company-async-wait 0.03 ;; company-async-timeout 2 diff --git a/lisp/icejam-completing-read.el b/lisp/icejam-completing-read.el new file mode 100644 index 0000000..e94c172 --- /dev/null +++ b/lisp/icejam-completing-read.el @@ -0,0 +1,63 @@ +;;; icejam-completing-read -- Functions related to completing-read -*- lexical-binding: t; -*- +;;; Commentary: +;;; +;;; Code: + +(require 'icejam-keys-mode) + +(use-package vertico :straight t :defer t + :init + (vertico-mode) + :custom + (vertico-scroll-margin 0) ;; Different scroll margin + (vertico-count 15) ;; Show more candidates + (vertico-resize t) ;; Grow and shrink the Vertico minibuffer + (vertico-cycle t) ;; Enable cycling for `vertico-next/previous') + ) + +;; A few more useful configurations... +(use-package emacs + :custom + ;; Support opening new minibuffers from inside existing minibuffers. + (enable-recursive-minibuffers t) + ;; Hide commands in M-x which do not work in the current mode. Vertico + ;; commands are hidden in normal buffers. This setting is useful beyond + ;; Vertico. + (read-extended-command-predicate #'command-completion-default-include-p) + :init + ;; Add prompt indicator to `completing-read-multiple'. + ;; We display [CRM], e.g., [CRM,] if the separator is a comma. + (defun crm-indicator (args) + (cons (format "[CRM%s] %s" + (replace-regexp-in-string + "\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" "" + crm-separator) + (car args)) + (cdr args))) + (advice-add #'completing-read-multiple :filter-args #'crm-indicator) + + ;; Do not allow the cursor in the minibuffer prompt + (setq minibuffer-prompt-properties + '(read-only t cursor-intangible t face minibuffer-prompt)) + (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)) + +;; Optionally use the `orderless' completion style. +(use-package orderless :straight t :defer t + :custom + ;; Configure a custom style dispatcher (see the Consult wiki) + ;; (orderless-style-dispatchers '(+orderless-consult-dispatch orderless-affix-dispatch)) + ;; (orderless-component-separator #'orderless-escapable-split-on-space) + (completion-styles '(orderless basic)) + (completion-category-defaults nil) + (completion-category-overrides '((file (styles partial-completion))))) + +(use-package marginalia :straight t :defer t :init (marginalia-mode)) +(use-package consult :straight t :defer t) +(use-package helpful :straight t :defer t) + +(with-eval-after-load 'consult + (define-key icejam-keys-mode-map (kbd "C-c a") 'consult-ripgrep) + (define-key icejam-keys-mode-map (kbd "C-c t") 'find-file)) + +(provide 'icejam-completing-read) +;;; icejam-completing-read.el ends here diff --git a/lisp/icejam-custom-init.el b/lisp/icejam-custom-init.el index a8f3653..f2a426f 100644 --- a/lisp/icejam-custom-init.el +++ b/lisp/icejam-custom-init.el @@ -42,13 +42,12 @@ (require 'icejam-base) (require 'icejam-sys-specific) (require 'icejam-tree-sitter) -(require 'icejam-ivy) +(require 'icejam-completing-read) (require 'icejam-avy) (require 'icejam-transient) (require 'icejam-prog-mode) (require 'icejam-company-yasnippet) (require 'icejam-flycheck) -(require 'icejam-projectile) (require 'icejam-ispell) (require 'icejam-deft) (require 'icejam-lsp) diff --git a/lisp/icejam-dashboard.el b/lisp/icejam-dashboard.el index 2cec7f0..6488c77 100644 --- a/lisp/icejam-dashboard.el +++ b/lisp/icejam-dashboard.el @@ -19,7 +19,6 @@ '("Happy coding!" "I showed you my source code, pls respond")) (setq dashboard-startup-banner 'logo) - (setq dashboard-projects-backend 'projectile) (setq dashboard-items '((recents . 5) ;; (bookmarks . 5) diff --git a/lisp/icejam-diminish.el b/lisp/icejam-diminish.el index 88cf9c7..c048208 100644 --- a/lisp/icejam-diminish.el +++ b/lisp/icejam-diminish.el @@ -12,7 +12,6 @@ (use-package diminish :straight t) (eval-after-load 'flyspell '(diminish 'flyspell-mode)) -(eval-after-load 'projectile '(diminish 'projectile-mode)) (eval-after-load 'flycheck '(diminish 'flycheck-mode)) (eval-after-load 'rainbow-mode '(diminish 'rainbow-mode)) (eval-after-load 'undo-tree '(diminish 'undo-tree-mode)) diff --git a/lisp/icejam-ivy.el b/lisp/icejam-ivy.el deleted file mode 100644 index de89f84..0000000 --- a/lisp/icejam-ivy.el +++ /dev/null @@ -1,47 +0,0 @@ -;;; icejam-ivy -- Counsel, Swiper and Ivy. -*- lexical-binding: t; -*- -;;; Commentary: -;;; -;;; Code: - -(require 'icejam-keys-mode) - -(use-package helpful :straight t :defer t) -(use-package ivy :straight t :defer t - :config (setq ivy-use-virtual-buffers t ;; Display recent files in ivy-switch-buffer - ivy-count-format "(%d of %d) " ;; Current candidate count style - ivy-wrap t ;; Wrap around completions - ivy-display-style 'fancy) ;; Formatting style - (ivy-mode 1)) - -(use-package swiper :straight t) -(use-package counsel :straight t :requires (helpful ivy swiper)) - -(with-eval-after-load 'counsel - (define-key icejam-keys-mode-map (kbd "C-c a") 'counsel-rg) - (define-key icejam-keys-mode-map (kbd "C-c t") 'counsel-find-file) - (define-key icejam-keys-mode-map (kbd "C-c C-s") 'swiper) ;; Find things by regexp - (define-key icejam-keys-mode-map (kbd "M-x") 'counsel-M-x) ;; M-x on steroids - - ;; Help bindings - (define-key icejam-keys-mode-map (kbd " f") 'counsel-describe-function) - (define-key icejam-keys-mode-map (kbd " v") 'counsel-describe-variable) - (define-key icejam-keys-mode-map (kbd " b") 'counsel-descbinds) - (define-key icejam-keys-mode-map (kbd " x") 'helpful-command) - (define-key icejam-keys-mode-map (kbd " l") 'counsel-find-library) - (define-key icejam-keys-mode-map (kbd "C-h f") 'counsel-describe-function) - (define-key icejam-keys-mode-map (kbd "C-h v") 'counsel-describe-variable) - (define-key icejam-keys-mode-map (kbd "C-h b") 'counsel-descbinds) - (define-key icejam-keys-mode-map (kbd "C-h x") 'helpful-command) - (define-key icejam-keys-mode-map (kbd "C-h l") 'counsel-find-library) - - (setq counsel-describe-function-function 'helpful-callable) - (setq counsel-describe-variable-function 'helpful-variable) - - ;; Other stuff - (define-key icejam-keys-mode-map (kbd " i") 'counsel-info-lookup-symbol) - (define-key icejam-keys-mode-map (kbd " u") 'counsel-unicode-char)) - - - -(provide 'icejam-ivy) -;;; icejam-ivy.el ends here diff --git a/lisp/icejam-projectile.el b/lisp/icejam-projectile.el deleted file mode 100644 index dd48f24..0000000 --- a/lisp/icejam-projectile.el +++ /dev/null @@ -1,26 +0,0 @@ -;;; icejam-projectile.el -- summary -*- lexical-binding: t; -*- -;;; Commentary: -;;; Project management based on git repos -;;; Code: - -(use-package counsel-projectile :straight t :defer t) - -(use-package projectile - :straight t - :requires (counsel counsel-projectile) - :ensure t - :init - (projectile-mode) - (remove-hook 'buffer-list-update-hook #'projectile-track-known-projects-find-file-hook) - :config - (setq-default projectile-completion-system 'ivy ;; Use ivy as completion system - projectile-enable-caching t ;; Cache project files - projectile-file-exists-local-cache-expire (* 3 60) ;; keep cache for 3 minutes - projectile-sort-order (quote recently-active) ;; Order by recently active projects - projectile-globally-ignored-directories - (append '("node_modules" ".svn" "_build" "tmp" "log") projectile-globally-ignored-directories) - ;; Add certain folders to ignored - )) - -(provide 'icejam-projectile) -;;; icejam-projectile.el ends here diff --git a/lisp/icejam-transient.el b/lisp/icejam-transient.el index f999dbc..0174731 100644 --- a/lisp/icejam-transient.el +++ b/lisp/icejam-transient.el @@ -15,16 +15,14 @@ (transient-define-prefix icejam/project-menu () "Project Commands." ["" - ["Projectile" - ("s" "Switch project" counsel-projectile-switch-project) - ("f" "Find file in project" counsel-projectile-find-file) - ("g" "Grep in project" counsel-projectile-rg) - ("c" "invalidate cache" projectile-invalidate-cache) - ("n" "New project" projectile-add-known-project)] + ["Project" + ("s" "Switch project" project-switch-project) + ("f" "Find file in project" project-find-file) + ("g" "Grep in project" consult-ripgrep)] ["Ivy" - ("a" "Grep in buffer" counsel-rg) + ("a" "Grep in buffer" consult-ripgrep) ("b" "Buffer list" ibuffer) - ("t" "Find file" counsel-find-file)] + ("t" "Find file" find-file)] ["Magit" ("m" "Git status" magit-status) ("C" "Git checkout" magit-checkout) diff --git a/lisp/langs/icejam-lang-erlang.el b/lisp/langs/icejam-lang-erlang.el index a19573f..9be6046 100644 --- a/lisp/langs/icejam-lang-erlang.el +++ b/lisp/langs/icejam-lang-erlang.el @@ -4,7 +4,6 @@ (require 'icejam-prog-mode) (require 'icejam-lsp) -(require 'icejam-projectile) (declare-function lsp "lsp-mode" nil) (declare-function column-enforce-n "column-enforce-mode" (number)) @@ -90,15 +89,15 @@ ;; Add include path so that Erlang does not complain about ;; missing header files. (setq-local flycheck-erlang-include-path - (list (format "%sdeps" (projectile-project-root)) - (format "%s_build/default/lib" (projectile-project-root)) - (format "%sinclude" (projectile-project-root)) - (format "%sapps" (projectile-project-root)))) + (list (format "%sdeps" (project-root (project-current))) + (format "%s_build/default/lib" (project-root (project-current))) + (format "%sinclude" (project-root (project-current))) + (format "%sapps" (project-root (project-current))))) (setq-local flycheck-erlang-library-path - (list (format "%sdeps" (projectile-project-root)) - (format "%s_build/default/lib" (projectile-project-root)) - (format "%sapps" (projectile-project-root)))) + (list (format "%sdeps" (project-root (project-current))) + (format "%s_build/default/lib" (project-root (project-current))) + (format "%sapps" (project-root (project-current))))) ;; Company list override (add-to-list (make-local-variable 'company-backends) diff --git a/lisp/langs/icejam-lang-ruby.el b/lisp/langs/icejam-lang-ruby.el index 43dfb59..c137008 100644 --- a/lisp/langs/icejam-lang-ruby.el +++ b/lisp/langs/icejam-lang-ruby.el @@ -3,7 +3,6 @@ ;;; Code: (require 'icejam-prog-mode) -(require 'icejam-projectile) (use-package rspec-mode :straight t :defer t) (use-package ruby-end :straight t :defer t) diff --git a/straight/versions/default.el b/straight/versions/default.el index 5d4d154..3f76393 100644 --- a/straight/versions/default.el +++ b/straight/versions/default.el @@ -16,8 +16,8 @@ ("company-box" . "c4f2e243fba03c11e46b1600b124e036f2be7691") ("company-mode" . "9c273fc7c1a9dd69ccf508589211c4f8bd0e0765") ("compat" . "c1f94ac75d6ea7f93c8da51e3f78ab3f39dbc2a2") + ("consult" . "afda4c68a4ebcc9104bf2a645848d7e92269f054") ("copilot.el" . "b5878d6a8c741138b5efbf4fe1c594f3fd69dbdd") - ("counsel-projectile" . "40d1e1d4bb70acb00fddd6f4df9778bf2c52734b") ("cyberpunk-theme.el" . "1fd5350ddfc53c30e6eef82af77c62d7c825df3c") ("dap-mode" . "496dd3a60f71a396df7e9a5ff6c500127d00ec03") ("dart-mode" . "02e919c1cf200b4938139c18068577faff1fb364") @@ -92,6 +92,7 @@ ("macrostep" . "4939d88779761e8b5461b4cf73f86600172987db") ("magit" . "7c842b8ac0a904049fc68b321b47e42d642e5c51") ("map" . "cc174d5d2b3f9dacc31e9c55da1c80eb5f49c112") + ("marginalia" . "be2e57efff640880251c082ac93bd365b7202e6a") ("markdown-mode" . "6102ac5b7301b4c4fc0262d9c6516693d5a33f2b") ("melpa" . "04fdd633207a28b91f0a6e64aa25d114ab229a13") ("merlin" . "0821c50b5b0bea8e3b4cb2878004466a9a993178") @@ -100,6 +101,7 @@ ("nginx-mode" . "c4ac5de975d65c84893a130a470af32a48b0b66c") ("nongnu-elpa" . "4b8b3633c7e29412c89f1c9d6ad7a951772be758") ("opam-switch-mode" . "1069e56a662f23ea09d4e05611bdedeb99257012") + ("orderless" . "96b74d2450ab4ab1a175d0e86c62f6695c4709b5") ("otp" . "12fa6666fa14debc0b63b2976d1db7c170150701") ("paredit" . "037b9b8acbca75151f133b6c0f7f3ff97d9042e5") ("parseclj" . "6af22372e0fe14df882dd300b22b12ba2d7e00b0") @@ -109,7 +111,6 @@ ("php-mode" . "e3087db57e6b1682eb80af2916f106ac19472ce3") ("posframe" . "570273bcf6c21641f02ccfcc9478607728f0a2a2") ("powerline" . "c35c35bdf5ce2d992882c1f06f0f078058870d4a") - ("projectile" . "41f8a8e7bdc50467256af632108989b5c980cd56") ("purescript-mode" . "d187b3d4bbb4d9cb36a4c6c55f35d63d159a26e8") ("queue" . "8df1334d54d4735d2f821790422a850dfaaa08ef") ("rainbow-delimiters" . "f40ece58df8b2f0fb6c8576b527755a552a5e763") @@ -136,6 +137,7 @@ ("tuareg" . "1d53723e39f22ab4ab76d31f2b188a2879305092") ("typescript.el" . "fc3a4f3b275e8cf6cf41aa0c9ef42e25ef908feb") ("use-package" . "a6e856418d2ebd053b34e0ab2fda328abeba731c") + ("vertico" . "e826dfcb14af5e2cfd88ed110d0208ddc2d37788") ("visual-regexp-steroids.el" . "a6420b25ec0fbba43bf57875827092e1196d8a9e") ("visual-regexp.el" . "48457d42a5e0fe10fa3a9c15854f1f127ade09b5") ("vundo" . "5374125dc0aaf1769bb0965344befb90f809ccfc")