diff --git a/.config/emacs/init.el b/.config/emacs/init.el index 9228f11..376dae0 100644 --- a/.config/emacs/init.el +++ b/.config/emacs/init.el @@ -56,15 +56,17 @@ Otherwise the startup will be very slow. " (require 'init-base) (require 'init-hydra) +(require 'init-evil) (require 'init-general) (require 'init-ui) (require 'init-edit) -(require 'init-evil) (require 'init-vertico) (require 'init-yasnippet) (require 'init-dashboard) +(require 'init-dired) +(require 'init-highlight) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; init.el ends here diff --git a/.config/emacs/lisp/init-dashboard.el b/.config/emacs/lisp/init-dashboard.el index efeace9..f767360 100644 --- a/.config/emacs/lisp/init-dashboard.el +++ b/.config/emacs/lisp/init-dashboard.el @@ -62,10 +62,11 @@ dashboard-path-style 'truncate-middle dashboard-path-max-length 60 dashboard-center-content t - dashboard-show-shortcuts nil + dashboard-show-shortcuts t dashboard-items '((recents . 10) (bookmarks . 5) - (projects . 5)) + (projects . 5) + (registers . 5)) dashboard-set-init-info t dashboard-display-icons-p #'icons-displayable-p @@ -89,22 +90,22 @@ dashboard-navigator-buttons `(((,(when (icons-displayable-p) (nerd-icons-mdicon "nf-md-github" :height 1.5)) - "Github" + " Github" "Browse my repository" (lambda (&rest _) (browse-url "https://github.com/JaeUs3792/"))) (,(when (icons-displayable-p) (nerd-icons-mdicon "nf-md-home" :height 1.5)) - "Homepage" + " Homepage" "Browse my homepage" (lambda (&rest _) (browse-url "https://jaeus.net"))) (,(when (icons-displayable-p) (nerd-icons-mdicon "nf-md-backup_restore" :height 1.5)) - "Restore" + " Restore" "Restore previous session" (lambda (&rest _) (restore-previous-session))) (,(when (icons-displayable-p) (nerd-icons-mdicon "nf-md-update" :height 1.5)) - "Update" + " Update" "Update dotfiles and packages" (lambda (&rest _) (update-dotfiles-and-packages))) (,(if (icons-displayable-p) diff --git a/.config/emacs/lisp/init-dired.el b/.config/emacs/lisp/init-dired.el index 7d8c156..3d609c5 100644 --- a/.config/emacs/lisp/init-dired.el +++ b/.config/emacs/lisp/init-dired.el @@ -2,6 +2,73 @@ (require 'init-const) (require 'init-funcs) +;; Directory operations +(use-package dired + :ensure nil + :general + (:keymaps 'dired-mode-map + "C-c C-p" 'wdired-change-to-wdired-mode) + :config + ;; Guess a default target directory + (setq dired-dwim-target t) + + ;; Always delete and copy recursively + (setq dired-recursive-deletes 'always + dired-recursive-copies 'always) + + ;; Show directory first + (setq dired-listing-switches "-alh --group-directories-first") + + ;; Quick sort dired buffers via hydra + (use-package dired-quick-sort + :defer t + :config + (evil-collection-define-key 'normal 'dired-mode-map + "S" 'hydra-dired-quick-sort/body)) + + ;; Show git info in dired + (use-package dired-git-info) + + ;; Allow rsync from dired buffers + (use-package dired-rsync + :bind (:map dired-mode-map + ("C-c C-r" . dired-rsync))) + + ;; Colorful dired + (use-package diredfl + :hook (dired-mode . diredfl-mode)) + + ;; Shows icons + (use-package nerd-icons-dired + :diminish + :commands nerd-icons-dired-mode + :custom-face + (nerd-icons-dired-dir-face ((t (:inherit nerd-icons-dsilver :foreground unspecified)))) + :hook (dired-mode . nerd-icons-dired-mode)) + + ;; Extra Dired functionality + (use-package dired-aux :ensure nil) + + (use-package dired-single + :commands (dired dired-jump)) + (use-package diff-hl + :hook ((dired-mode . diff-hl-dired-mode-unless-remote) + (magit-post-refresh . diff-hl-magit-post-refresh)) + :config + (diff-hl-margin-mode)) + (use-package dired-hide-dotfiles + :hook (dired-mode) ;; hide default when dired-mode enabled. + :config + (evil-collection-define-key 'normal 'dired-mode-map + "H" 'dired-hide-dotfiles-mode)) + (evil-collection-define-key 'normal 'dired-mode-map + "h" 'dired-single-up-directory + "l" 'dired-single-buffer + ")" 'dired-git-info-mode)) + +;; `find-dired' alternative using `fd' +(when (executable-find "fd") + (use-package fd-dired)) (provide 'init-dired) ;;; init-dired.el ends here diff --git a/.config/emacs/lisp/init-evil.el b/.config/emacs/lisp/init-evil.el index 177acb1..714f327 100644 --- a/.config/emacs/lisp/init-evil.el +++ b/.config/emacs/lisp/init-evil.el @@ -24,29 +24,29 @@ (evil-set-initial-state 'dashboard-mode 'normal) ;; eshell no evil (dolist (mode '(eshell-mode)) - (add-to-list 'evil-emacs-state-modes mode))) + (add-to-list 'evil-emacs-state-modes mode)) -(use-package evil-collection - :after evil - :config - (evil-collection-init)) + (use-package evil-collection + :defer nil + :config + (evil-collection-init)) -(use-package evil-nerd-commenter - :after evil - :config - ;; evil nerd commenter - (define-key evil-normal-state-map (kbd "g c") 'evilnc-comment-or-uncomment-lines) - (define-key evil-visual-state-map (kbd "g c") 'evilnc-comment-or-uncomment-lines)) + (use-package evil-nerd-commenter + :defer nil + :config + ;; evil nerd commenter + (define-key evil-normal-state-map (kbd "g c") 'evilnc-comment-or-uncomment-lines) + (define-key evil-visual-state-map (kbd "g c") 'evilnc-comment-or-uncomment-lines)) -(use-package evil-numbers - :after evil - :config - ;; evil numbers - ;; unfortunately C-x is emacs common key binding. - (define-key evil-normal-state-map (kbd "g =") 'evil-numbers/inc-at-pt) - (define-key evil-normal-state-map (kbd "g -") 'evil-numbers/dec-at-pt) - (define-key evil-visual-state-map (kbd "g =") 'evil-numbers/inc-at-pt) - (define-key evil-visual-state-map (kbd "g -") 'evil-numbers/dec-at-pt)) + (use-package evil-numbers + :defer nil + :config + ;; evil numbers + ;; unfortunately C-x is emacs common key binding. + (define-key evil-normal-state-map (kbd "g =") 'evil-numbers/inc-at-pt) + (define-key evil-normal-state-map (kbd "g -") 'evil-numbers/dec-at-pt) + (define-key evil-visual-state-map (kbd "g =") 'evil-numbers/inc-at-pt) + (define-key evil-visual-state-map (kbd "g -") 'evil-numbers/dec-at-pt))) (provide 'init-evil) ;;; init-evil.el ends here. diff --git a/.config/emacs/lisp/init-highlight.el b/.config/emacs/lisp/init-highlight.el new file mode 100644 index 0000000..770b7c6 --- /dev/null +++ b/.config/emacs/lisp/init-highlight.el @@ -0,0 +1,12 @@ +;;; init-highlight.el -*- lexical-binding: t -*- +(require 'init-const) +(require 'init-funcs) + +(use-package hl-line + :ensure nil + :hook ((after-init . global-hl-line-mode) + ((dashboard-mode eshell-mode shell-mode term-mode vterm-mode) . + (lambda () (setq-local global-hl-line-mode nil))))) + +(provide 'init-highlight) +;;; init-highlight.el ends here diff --git a/.config/emacs/lisp/init-vertico.el b/.config/emacs/lisp/init-vertico.el index 632c01a..893ba1a 100644 --- a/.config/emacs/lisp/init-vertico.el +++ b/.config/emacs/lisp/init-vertico.el @@ -78,20 +78,21 @@ (eldoc-add-command #'corfu-insert) (define-key corfu-map (kbd "M-p") #'corfu-popupinfo-scroll-down) (define-key corfu-map (kbd "M-n") #'corfu-popupinfo-scroll-up) - (define-key corfu-map (kbd "M-d") #'corfu-popupinfo-toggle)) + (define-key corfu-map (kbd "M-d") #'corfu-popupinfo-toggle) + + (use-package kind-icon + :defer nil + :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 corfu-terminal :config (unless (display-graphic-p) (corfu-terminal-mode))) -(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)) ;;; Cape ;; Setup Cape for better completion-at-point support and more diff --git a/.config/emacs/lisp/init-yasnippet.el b/.config/emacs/lisp/init-yasnippet.el index b1c355d..0efaf00 100644 --- a/.config/emacs/lisp/init-yasnippet.el +++ b/.config/emacs/lisp/init-yasnippet.el @@ -2,7 +2,9 @@ ;; Yet another snippet extension (use-package yasnippet :diminish yas-minor-mode - :hook (after-init . yas-global-mode)) + :hook (after-init . yas-global-mode) + :config + (setq yas-indent-line nil)) ;; indent does not work properly. ;; Collection of yasnippet snippets (use-package yasnippet-snippets) diff --git a/.config/emacs/logos/xemacs_color.svg b/.config/emacs/logos/xemacs_color.svg new file mode 100644 index 0000000..90d0d27 --- /dev/null +++ b/.config/emacs/logos/xemacs_color.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +