diff --git a/README.org b/README.org index 00b18336..e6278f1c 100644 --- a/README.org +++ b/README.org @@ -389,7 +389,7 @@ Let's use =no-littering= in order to stop emacs from filling all our folders wit ** Ligatures Here let's try to add ligatures to our font system since the VictorMono Nerd Font supports all ligatures being a "Nerd Font". -#+begin_src emacs-lisp :tangle yes +#+begin_src emacs-lisp (let ((alist '((?! . "\\(?:!\\(?:==\\|[!=]\\)\\)") (?# . "\\(?:#\\(?:###?\\|_(\\|[!#(:=?[_{]\\)\\)") (?$ . "\\(?:\\$>\\)") @@ -2207,6 +2207,7 @@ Trying out corfu instead of company (corfu-scroll-margin 5) ;; Use scroll margin (corfu-count 15) (corfu-auto-prefix 2) + (corfu-auto-delay 0.5) ;; You may want to enable Corfu only for certain modes. ;; :hook ((prog-mode . corfu-mode) @@ -2296,14 +2297,27 @@ Trying out corfu instead of company ;;(add-to-list 'completion-at-point-functions #'cape-line) :config - (setq cape-dabbrev-min-length 2) + (setq cape-dabbrev-min-length 4) ) #+END_SRC +*** kind-icon +Kind icon adds icons to corfu +#+begin_src emacs-lisp +(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)) +#+end_src *** Devdocs Devdocs.io is a pretty great place to see documentation on nearly any developer technology. Devdocs.el will bring all that documentation right inside Emacs. #+begin_src emacs-lisp (use-package devdocs + :config + (evil-collection-devdocs-setup) :general (chris/leader-keys 'normal "hd" 'devdocs-lookup)) @@ -2416,6 +2430,8 @@ Ace link provides an avy like search for links. Upon using the keybindings prese (display-buffer-in-side-window) (side . bottom) (window-height . 0.25)) + ("\\*e?shell-terminal\\*" + (display-buffer-same-window)) ("*helpful*" (display-buffer-in-side-window) (side . right) @@ -2460,6 +2476,8 @@ Ace link provides an avy like search for links. Upon using the keybindings prese (display-buffer-in-side-window) (side . bottom) (window-height . 0.25)) + ("\\*e?shell-terminal\\*" + (display-buffer-same-window)) ("*helpful*" (display-buffer-in-side-window) (side . bottom) @@ -3416,7 +3434,7 @@ Use magit, because why wouldn't you? duh! Let's add our own eshell prompt. and set the password cache to a significantly higher time in order to not need to constantly reuse my password. #+begin_src emacs-lisp (use-package eshell - :ensure nil + :ensure t :config (require 'em-tramp) @@ -3537,6 +3555,21 @@ Let's add our own eshell prompt. and set the password cache to a significantly h (interactive) (consult-buffer)) + (defun chris/eshell-window () + "Open a new emacs window with eshell as a sole buffer" + (interactive) + (with-selected-frame (make-frame '((name . "*eshell-terminal*"))) + (setq eshell-terminal (eshell 100)) + (display-buffer-same-window + (generate-new-buffer-name "*eshell-terminal*") '()) + (eshell 100) + (other-window 1) + (switch-to-buffer "*eshell*<100>") + (other-window 1) + (delete-window))) + + (add-hook 'eshell-load-hook #'eat-eshell-mode) + :general (chris/leader-keys :states 'normal @@ -3546,6 +3579,13 @@ Let's add our own eshell prompt. and set the password cache to a significantly h (general-def '(normal insert) eshell-mode-map "C-d" 'kill-buffer-and-window)) #+end_src + +*** EAT +Emulate a terminal +#+begin_src emacs-lisp +(add-hook 'eshell-load-hook #'eat-eshell-mode) +#+end_src + *** Esh-autosuggest #+begin_src emacs-lisp :tangle no (use-package esh-autosuggest diff --git a/init.el b/init.el index a9c07be8..ea99e4be 100644 --- a/init.el +++ b/init.el @@ -168,6 +168,33 @@ (setq auto-save-file-name-transforms `((".*" ,(no-littering-expand-var-file-name "auto-save/") t))) +(let ((alist '((?! . "\\(?:!\\(?:==\\|[!=]\\)\\)") + (?# . "\\(?:#\\(?:###?\\|_(\\|[!#(:=?[_{]\\)\\)") + (?$ . "\\(?:\\$>\\)") + (?& . "\\(?:&&&?\\)") + (?* . "\\(?:\\*\\(?:\\*\\*\\|[/>]\\)\\)") + (?+ . "\\(?:\\+\\(?:\\+\\+\\|[+>]\\)\\)") + (?- . "\\(?:-\\(?:-[>-]\\|<<\\|>>\\|[<>|~-]\\)\\)") + (?. . "\\(?:\\.\\(?:\\.[.<]\\|[.=?-]\\)\\)") + (?/ . "\\(?:/\\(?:\\*\\*\\|//\\|==\\|[*/=>]\\)\\)") + (?: . "\\(?::\\(?:::\\|\\?>\\|[:<-?]\\)\\)") + (?\; . "\\(?:;;\\)") + (?< . "\\(?:<\\(?:!--\\|\\$>\\|\\*>\\|\\+>\\|-[<>|]\\|/>\\|<[<=-]\\|=\\(?:=>\\|[<=>|]\\)\\||\\(?:||::=\\|[>|]\\)\\|~[>~]\\|[$*+/:<=>|~-]\\)\\)") + (?= . "\\(?:=\\(?:!=\\|/=\\|:=\\|=[=>]\\|>>\\|[=>]\\)\\)") + (?> . "\\(?:>\\(?:=>\\|>[=>-]\\|[]:=-]\\)\\)") + (?? . "\\(?:\\?[.:=?]\\)") + (?\[ . "\\(?:\\[\\(?:||]\\|[<|]\\)\\)") + (?\ . "\\(?:\\\\/?\\)") + (?\] . "\\(?:]#\\)") + (?^ . "\\(?:\\^=\\)") + (?_ . "\\(?:_\\(?:|?_\\)\\)") + (?{ . "\\(?:{|\\)") + (?| . "\\(?:|\\(?:->\\|=>\\||\\(?:|>\\|[=>-]\\)\\|[]=>|}-]\\)\\)") + (?~ . "\\(?:~\\(?:~>\\|[=>@~-]\\)\\)")))) + (dolist (char-regexp alist) + (set-char-table-range composition-function-table (car char-regexp) + `([,(cdr char-regexp) 0 font-shape-gstring])))) + (use-package evil :init (setq evil-want-integration t @@ -1610,6 +1637,7 @@ targets." (corfu-scroll-margin 5) ;; Use scroll margin (corfu-count 15) (corfu-auto-prefix 2) + (corfu-auto-delay 0.5) ;; You may want to enable Corfu only for certain modes. ;; :hook ((prog-mode . corfu-mode) @@ -1699,10 +1727,20 @@ targets." ;;(add-to-list 'completion-at-point-functions #'cape-line) :config - (setq cape-dabbrev-min-length 2) + (setq cape-dabbrev-min-length 4) ) +(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)) + (use-package devdocs + :config + (evil-collection-devdocs-setup) :general (chris/leader-keys 'normal "hd" 'devdocs-lookup)) @@ -1779,6 +1817,8 @@ targets." (display-buffer-in-side-window) (side . bottom) (window-height . 0.25)) + ("\\*e?shell-terminal\\*" + (display-buffer-same-window)) ("*helpful*" (display-buffer-in-side-window) (side . right) @@ -1823,6 +1863,8 @@ targets." (display-buffer-in-side-window) (side . bottom) (window-height . 0.25)) + ("\\*e?shell-terminal\\*" + (display-buffer-same-window)) ("*helpful*" (display-buffer-in-side-window) (side . bottom) @@ -2491,7 +2533,7 @@ targets." (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1)) (use-package eshell - :ensure nil + :ensure t :config (require 'em-tramp) @@ -2612,6 +2654,21 @@ targets." (interactive) (consult-buffer)) + (defun chris/eshell-window () + "Open a new emacs window with eshell as a sole buffer" + (interactive) + (with-selected-frame (make-frame '((name . "*eshell-terminal*"))) + (setq eshell-terminal (eshell 100)) + (display-buffer-same-window + (generate-new-buffer-name "*eshell-terminal*") '()) + (eshell 100) + (other-window 1) + (switch-to-buffer "*eshell*<100>") + (other-window 1) + (delete-window))) + + (add-hook 'eshell-load-hook #'eat-eshell-mode) + :general (chris/leader-keys :states 'normal @@ -2621,6 +2678,8 @@ targets." (general-def '(normal insert) eshell-mode-map "C-d" 'kill-buffer-and-window)) +(add-hook 'eshell-load-hook #'eat-eshell-mode) + (setq vterm-buffer-name-string "vterm %s") (defun chris/vterm-setup () "Setup vterm with my preferred settings"