From fa30149008268d61f2bcb47a33a178e62b4878df Mon Sep 17 00:00:00 2001 From: jgrogan Date: Fri, 31 May 2024 16:32:03 +0100 Subject: [PATCH] Continue breaking init into modules --- emacs/.emacs.d/init.el | 245 +-------------------------- emacs/.emacs.d/modules/jg-core.el | 7 + emacs/.emacs.d/modules/jg-dev.el | 11 ++ emacs/.emacs.d/modules/jg-display.el | 111 ++++++++++++ emacs/.emacs.d/modules/jg-keys.el | 38 +++++ emacs/.emacs.d/modules/jg-media.el | 15 ++ emacs/.emacs.d/modules/jg-org.el | 56 ++++++ emacs/.emacs.d/modules/jg-style.el | 14 ++ 8 files changed, 258 insertions(+), 239 deletions(-) create mode 100644 emacs/.emacs.d/modules/jg-dev.el create mode 100644 emacs/.emacs.d/modules/jg-display.el create mode 100644 emacs/.emacs.d/modules/jg-keys.el create mode 100644 emacs/.emacs.d/modules/jg-media.el create mode 100644 emacs/.emacs.d/modules/jg-org.el create mode 100644 emacs/.emacs.d/modules/jg-style.el diff --git a/emacs/.emacs.d/init.el b/emacs/.emacs.d/init.el index ead325e..0df7b80 100644 --- a/emacs/.emacs.d/init.el +++ b/emacs/.emacs.d/init.el @@ -1,45 +1,23 @@ ;; -*- lexical-binding: t; -*- - ;; Personal modules (add-to-list 'load-path '"~/.dotfiles/emacs/.emacs.d/modules") -(setq vc-follow-symlinks t) - ;; Slightly nicer theme (set-face-attribute 'default nil :font "Menlo" :height 130) (require 'jg-package) (require 'jg-core) - -(setq custom-file (concat user-emacs-directory "custom.el")) -(when (file-exists-p custom-file) - (load custom-file)) +(require 'jg-display) +(require 'jg-style) +(require 'jg-keys) +(require 'jg-dev) +(require 'jg-org) (use-package ivy :diminish :config (ivy-mode 1)) -(use-package all-the-icons) - -(use-package doom-themes - :ensure t - :config - (load-theme 'doom-dracula t) - (setq doom-themes-treemacs-theme "doom-atom") - (doom-themes-treemacs-config) - (doom-themes-org-config) - ) - -(use-package doom-modeline - :ensure t - :init (doom-modeline-mode 1) - :custom ((doom-modeline-height 15)) - ) - -(use-package rainbow-delimiters - :hook (prog-mode . rainbow-delimiters-mode)) - (use-package which-key :init (which-key-mode) :diminish which-key-mode @@ -57,8 +35,6 @@ :bind-keymap ("C-c p" . projectile-command-map) :init - (when (file-directory-p "~/code") - (setq projectile-project-search-path '("~/code"))) (setq projectile-switch-project-action #'projectile-dired)) (use-package counsel-projectile @@ -66,214 +42,5 @@ :config (counsel-projectile-mode 1)) -(use-package magit - :commands (magit-status magit-get-current-branch) - :custom - (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1)) +(setq vc-follow-symlinks t) -(defun rune/evil-hook () - (dolist (mode '(custom-mode - eshell-mode - git-rebase-mode - erc-mode - circe-server-mode - circe-chat-mode - circe-query-mode - sauron-mode - term-mode)) - (add-to-list 'evil-emacs-state-modes mode))) - -(use-package evil - :init - (setq evil-want-integration t) - (setq evil-want-keybinding nil) - (setq evil-want-C-u-scroll t) - (setq evil-want-C-i-jump nil) -;; :hook (evil-mode . rune/evil-hook) - :config - (evil-mode 1) - (define-key evil-insert-state-map (kbd "C-g") 'evil-normal-state) -;; (define-key evil-insert-state-map (kbd "C-h") 'evil-delete-backward-char-and-join) - ;; Use visual line motions even outside of visual-line-mode buffers - (evil-global-set-key 'motion "j" 'evil-next-visual-line) - (evil-global-set-key 'motion "k" 'evil-previous-visual-line) - - (evil-set-initial-state 'messages-buffer-mode 'normal) - (evil-set-initial-state 'dashboard-mode 'normal)) - -(use-package evil-collection - :after evil - :config - (evil-collection-init)) - - -(use-package emms - :init - (require 'emms-setup) - (require 'emms-mpris) - (emms-all) - (emms-default-players) - ;;(emms-mpris-enable) - :config - (setq emms-source-file-default-directory "~/Music/") - (setq emms-player-mplayer-parameters '("-novideo")) - ) - -(use-package treemacs - :ensure t - :defer t - :init - (with-eval-after-load 'winum - (define-key winum-keymap (kbd "M-0") #'treemacs-select-window)) - :hook (emacs-startup . treemacs) - :config (progn - (setq treemacs-collapse-dirs (if treemacs-python-executable 3 0) - treemacs-deferred-git-apply-delay 0.5 - treemacs-directory-name-transformer #'identity - treemacs-display-in-side-window t - treemacs-eldoc-display 'simple - treemacs-file-event-delay 2000 - treemacs-file-extension-regex treemacs-last-period-regex-value - treemacs-file-follow-delay 0.2 - treemacs-file-name-transformer #'identity - treemacs-follow-after-init t - treemacs-expand-after-init t - treemacs-find-workspace-method 'find-for-file-or-pick-first - treemacs-git-command-pipe "" - treemacs-goto-tag-strategy 'refetch-index - treemacs-header-scroll-indicators '(nil . "^^^^^^") - treemacs-hide-dot-git-directory t - treemacs-indentation 2 - treemacs-indentation-string " " - treemacs-is-never-other-window nil - treemacs-max-git-entries 5000 - treemacs-missing-project-action 'ask - treemacs-move-files-by-mouse-dragging t - treemacs-move-forward-on-expand nil - treemacs-no-png-images nil - treemacs-no-delete-other-windows t - treemacs-project-follow-cleanup nil - treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory) - treemacs-position 'left - treemacs-read-string-input 'from-child-frame - treemacs-recenter-distance 0.1 - treemacs-recenter-after-file-follow nil - treemacs-recenter-after-tag-follow nil - treemacs-recenter-after-project-jump 'always - treemacs-recenter-after-project-expand 'on-distance - treemacs-litter-directories '("/node_modules" "/.venv" "/.cask") - treemacs-project-follow-into-home nil - treemacs-show-cursor nil - treemacs-show-hidden-files t - treemacs-silent-filewatch nil - treemacs-silent-refresh nil - treemacs-sorting 'alphabetic-asc - treemacs-select-when-already-in-treemacs 'move-back - treemacs-space-between-root-nodes t - treemacs-tag-follow-cleanup t - treemacs-tag-follow-delay 1.5 - treemacs-text-scale nil - treemacs-user-mode-line-format nil - treemacs-user-header-line-format nil - treemacs-wide-toggle-width 70 - treemacs-width 35 - treemacs-width-increment 1 - treemacs-width-is-initially-locked t - treemacs-workspace-switch-cleanup nil) - - ;; The default width and height of the icons is 22 pixels. If you are - ;; using a Hi-DPI display, uncomment this to double the icon size. - (treemacs-resize-icons 18) - - (treemacs-follow-mode t) - (treemacs-filewatch-mode t) - (treemacs-fringe-indicator-mode 'always) - (when treemacs-python-executable - (treemacs-git-commit-diff-mode t)) - - (pcase (cons (not (null (executable-find "git"))) - (not (null treemacs-python-executable))) - (`(t . t) - (treemacs-git-mode 'deferred)) - (`(t . _) - (treemacs-git-mode 'simple))) - - (treemacs-hide-gitignored-files-mode nil)) - :bind - (:map global-map - ("M-0" . treemacs-select-window) - ("C-x t 1" . treemacs-delete-other-windows) - ("C-x t t" . treemacs) - ("C-x t d" . treemacs-select-directory) - ("C-x t B" . treemacs-bookmark) - ("C-x t C-t" . treemacs-find-file) - ("C-x t M-t" . treemacs-find-tag))) - -(use-package treemacs-all-the-icons - :after (treemacs all-the-icons)) - -(use-package treemacs-projectile - :after (treemacs projectile)) - -(use-package treemacs-evil - :after (treemacs evil)) - -(use-package treemacs-magit - :after (treemacs magit)) - -(use-package treemacs-icons-dired - :hook (dired-mode . treemacs-icons-dired-enable-once) - :after (treemacs)) - -(defun efs/org-mode-setup () - (org-indent-mode) - (variable-pitch-mode 1) - (visual-line-mode 1)) - -;; Org Mode Configuration ------------------------------------------------------ - -(defun efs/org-font-setup () - ;; Replace list hyphen with dot - (font-lock-add-keywords 'org-mode - '(("^ *\\([-]\\) " - (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•")))))) - - ;; Set faces for heading levels - (dolist (face '((org-level-1 . 1.2) - (org-level-2 . 1.1) - (org-level-3 . 1.05) - (org-level-4 . 1.0) - (org-level-5 . 1.1) - (org-level-6 . 1.1) - (org-level-7 . 1.1) - (org-level-8 . 1.1))) - (set-face-attribute (car face) nil :font "Cantarell" :weight 'regular :height (cdr face))) - - ;; Ensure that anything that should be fixed-pitch in Org files appears that way - (set-face-attribute 'org-block nil :foreground nil :inherit 'fixed-pitch) - (set-face-attribute 'org-code nil :inherit '(shadow fixed-pitch)) - (set-face-attribute 'org-table nil :inherit '(shadow fixed-pitch)) - (set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch)) - (set-face-attribute 'org-special-keyword nil :inherit '(font-lock-comment-face fixed-pitch)) - (set-face-attribute 'org-meta-line nil :inherit '(font-lock-comment-face fixed-pitch)) - (set-face-attribute 'org-checkbox nil :inherit 'fixed-pitch)) - -(use-package org - :hook (org-mode . efs/org-mode-setup) - :config - (setq org-ellipsis " ▾") - (efs/org-font-setup)) - -(use-package org-bullets - :after org - :hook (org-mode . org-bullets-mode) - :custom - (org-bullets-bullet-list '("◉" "○" "●" "○" "●" "○" "●"))) - -(defun efs/org-mode-visual-fill () - (setq visual-fill-column-width 100 - visual-fill-column-center-text t) - (visual-fill-column-mode 1)) - -(use-package visual-fill-column - :hook (org-mode . efs/org-mode-visual-fill)) diff --git a/emacs/.emacs.d/modules/jg-core.el b/emacs/.emacs.d/modules/jg-core.el index 8fba0d4..6a8c3d9 100644 --- a/emacs/.emacs.d/modules/jg-core.el +++ b/emacs/.emacs.d/modules/jg-core.el @@ -8,6 +8,9 @@ (tool-bar-mode -1) (scroll-bar-mode -1) +;; line numbers +(global-display-line-numbers-mode 1) + ;; Add small window fringes (set-fringe-mode 10) @@ -19,4 +22,8 @@ `((".*" ,(concat user-emacs-directory "auto-save/") t))) (setq backup-directory-alist '(("" . "~/.emacs.d/emacs-backup"))) +(setq custom-file (concat user-emacs-directory "custom.el")) +(when (file-exists-p custom-file) + (load custom-file)) + (provide 'jg-core) diff --git a/emacs/.emacs.d/modules/jg-dev.el b/emacs/.emacs.d/modules/jg-dev.el new file mode 100644 index 0000000..4de4503 --- /dev/null +++ b/emacs/.emacs.d/modules/jg-dev.el @@ -0,0 +1,11 @@ +; -*- lexical-binding: t; -*- + +(use-package magit + :commands (magit-status magit-get-current-branch) + :custom + (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1)) + +(use-package rainbow-delimiters + :hook (prog-mode . rainbow-delimiters-mode)) + +(provide 'jg-dev) diff --git a/emacs/.emacs.d/modules/jg-display.el b/emacs/.emacs.d/modules/jg-display.el new file mode 100644 index 0000000..03134d4 --- /dev/null +++ b/emacs/.emacs.d/modules/jg-display.el @@ -0,0 +1,111 @@ +; -*- lexical-binding: t; -*- + +;; treemacs and plugins +(use-package treemacs + :ensure t + :defer t + :init + (with-eval-after-load 'winum + (define-key winum-keymap (kbd "M-0") #'treemacs-select-window)) + :hook (emacs-startup . treemacs) + :config (progn + (setq treemacs-collapse-dirs (if treemacs-python-executable 3 0) + treemacs-deferred-git-apply-delay 0.5 + treemacs-directory-name-transformer #'identity + treemacs-display-in-side-window t + treemacs-eldoc-display 'simple + treemacs-file-event-delay 2000 + treemacs-file-extension-regex treemacs-last-period-regex-value + treemacs-file-follow-delay 0.2 + treemacs-file-name-transformer #'identity + treemacs-follow-after-init t + treemacs-expand-after-init t + treemacs-find-workspace-method 'find-for-file-or-pick-first + treemacs-git-command-pipe "" + treemacs-goto-tag-strategy 'refetch-index + treemacs-header-scroll-indicators '(nil . "^^^^^^") + treemacs-hide-dot-git-directory t + treemacs-indentation 2 + treemacs-indentation-string " " + treemacs-is-never-other-window nil + treemacs-max-git-entries 5000 + treemacs-missing-project-action 'ask + treemacs-move-files-by-mouse-dragging t + treemacs-move-forward-on-expand nil + treemacs-no-png-images nil + treemacs-no-delete-other-windows t + treemacs-project-follow-cleanup nil + treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory) + treemacs-position 'left + treemacs-read-string-input 'from-child-frame + treemacs-recenter-distance 0.1 + treemacs-recenter-after-file-follow nil + treemacs-recenter-after-tag-follow nil + treemacs-recenter-after-project-jump 'always + treemacs-recenter-after-project-expand 'on-distance + treemacs-litter-directories '("/node_modules" "/.venv" "/.cask") + treemacs-project-follow-into-home nil + treemacs-show-cursor nil + treemacs-show-hidden-files t + treemacs-silent-filewatch nil + treemacs-silent-refresh nil + treemacs-sorting 'alphabetic-asc + treemacs-select-when-already-in-treemacs 'move-back + treemacs-space-between-root-nodes t + treemacs-tag-follow-cleanup t + treemacs-tag-follow-delay 1.5 + treemacs-text-scale nil + treemacs-user-mode-line-format nil + treemacs-user-header-line-format nil + treemacs-wide-toggle-width 70 + treemacs-width 35 + treemacs-width-increment 1 + treemacs-width-is-initially-locked t + treemacs-workspace-switch-cleanup nil) + + ;; The default width and height of the icons is 22 pixels. If you are + ;; using a Hi-DPI display, uncomment this to double the icon size. + (treemacs-resize-icons 18) + + (treemacs-follow-mode t) + (treemacs-filewatch-mode t) + (treemacs-fringe-indicator-mode 'always) + (when treemacs-python-executable + (treemacs-git-commit-diff-mode t)) + + (pcase (cons (not (null (executable-find "git"))) + (not (null treemacs-python-executable))) + (`(t . t) + (treemacs-git-mode 'deferred)) + (`(t . _) + (treemacs-git-mode 'simple))) + + (treemacs-hide-gitignored-files-mode nil)) + :bind + (:map global-map + ("M-0" . treemacs-select-window) + ("C-x t 1" . treemacs-delete-other-windows) + ("C-x t t" . treemacs) + ("C-x t d" . treemacs-select-directory) + ("C-x t B" . treemacs-bookmark) + ("C-x t C-t" . treemacs-find-file) + ("C-x t M-t" . treemacs-find-tag))) + +(use-package treemacs-all-the-icons + :after (treemacs all-the-icons)) + +(use-package treemacs-projectile + :after (treemacs projectile)) + +(use-package treemacs-evil + :after (treemacs evil)) + +(use-package treemacs-magit + :after (treemacs magit)) + +(use-package treemacs-icons-dired + :hook (dired-mode . treemacs-icons-dired-enable-once) + :after (treemacs)) + + +(provide 'jg-display) diff --git a/emacs/.emacs.d/modules/jg-keys.el b/emacs/.emacs.d/modules/jg-keys.el new file mode 100644 index 0000000..227dddd --- /dev/null +++ b/emacs/.emacs.d/modules/jg-keys.el @@ -0,0 +1,38 @@ +;; -*- lexical-binding: t; -*- + +(defun rune/evil-hook () + (dolist (mode '(custom-mode + eshell-mode + git-rebase-mode + erc-mode + circe-server-mode + circe-chat-mode + circe-query-mode + sauron-mode + term-mode)) + (add-to-list 'evil-emacs-state-modes mode))) + +(use-package evil + :init + (setq evil-want-integration t) + (setq evil-want-keybinding nil) + (setq evil-want-C-u-scroll t) + (setq evil-want-C-i-jump nil) +;; :hook (evil-mode . rune/evil-hook) + :config + (evil-mode 1) + (define-key evil-insert-state-map (kbd "C-g") 'evil-normal-state) +;; (define-key evil-insert-state-map (kbd "C-h") 'evil-delete-backward-char-and-join) + ;; Use visual line motions even outside of visual-line-mode buffers + (evil-global-set-key 'motion "j" 'evil-next-visual-line) + (evil-global-set-key 'motion "k" 'evil-previous-visual-line) + + (evil-set-initial-state 'messages-buffer-mode 'normal) + (evil-set-initial-state 'dashboard-mode 'normal)) + +(use-package evil-collection + :after evil + :config + (evil-collection-init)) + +(provide 'jg-keys) diff --git a/emacs/.emacs.d/modules/jg-media.el b/emacs/.emacs.d/modules/jg-media.el new file mode 100644 index 0000000..7a8f736 --- /dev/null +++ b/emacs/.emacs.d/modules/jg-media.el @@ -0,0 +1,15 @@ +;; -*- lexical-binding: t; -*- + +(use-package emms + :init + (require 'emms-setup) + (require 'emms-mpris) + (emms-all) + (emms-default-players) + ;;(emms-mpris-enable) + :config + (setq emms-source-file-default-directory "~/Music/") + (setq emms-player-mplayer-parameters '("-novideo")) + ) + +(provide 'jg-media) diff --git a/emacs/.emacs.d/modules/jg-org.el b/emacs/.emacs.d/modules/jg-org.el new file mode 100644 index 0000000..2e36eb9 --- /dev/null +++ b/emacs/.emacs.d/modules/jg-org.el @@ -0,0 +1,56 @@ +;;; -*- lexical-binding: t; -*- + +(defun efs/org-mode-setup () + (org-indent-mode) + (variable-pitch-mode 1) + (visual-line-mode 1)) + +;; Org Mode Configuration ------------------------------------------------------ + +(defun efs/org-font-setup () + ;; Replace list hyphen with dot + (font-lock-add-keywords 'org-mode + '(("^ *\\([-]\\) " + (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•")))))) + + ;; Set faces for heading levels + (dolist (face '((org-level-1 . 1.2) + (org-level-2 . 1.1) + (org-level-3 . 1.05) + (org-level-4 . 1.0) + (org-level-5 . 1.1) + (org-level-6 . 1.1) + (org-level-7 . 1.1) + (org-level-8 . 1.1))) + (set-face-attribute (car face) nil :font "Cantarell" :weight 'regular :height (cdr face))) + + ;; Ensure that anything that should be fixed-pitch in Org files appears that way + (set-face-attribute 'org-block nil :foreground nil :inherit 'fixed-pitch) + (set-face-attribute 'org-code nil :inherit '(shadow fixed-pitch)) + (set-face-attribute 'org-table nil :inherit '(shadow fixed-pitch)) + (set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch)) + (set-face-attribute 'org-special-keyword nil :inherit '(font-lock-comment-face fixed-pitch)) + (set-face-attribute 'org-meta-line nil :inherit '(font-lock-comment-face fixed-pitch)) + (set-face-attribute 'org-checkbox nil :inherit 'fixed-pitch)) + +(use-package org + :hook (org-mode . efs/org-mode-setup) + :config + (setq org-ellipsis " ▾") + (efs/org-font-setup)) + +(use-package org-bullets + :after org + :hook (org-mode . org-bullets-mode) + :custom + (org-bullets-bullet-list '("◉" "○" "●" "○" "●" "○" "●"))) + +(defun efs/org-mode-visual-fill () + (setq visual-fill-column-width 100 + visual-fill-column-center-text t) + (visual-fill-column-mode 1)) + +(use-package visual-fill-column + :hook (org-mode . efs/org-mode-visual-fill)) +(provide 'jg-org) + diff --git a/emacs/.emacs.d/modules/jg-style.el b/emacs/.emacs.d/modules/jg-style.el new file mode 100644 index 0000000..889b544 --- /dev/null +++ b/emacs/.emacs.d/modules/jg-style.el @@ -0,0 +1,14 @@ +;; -*- lexical-binding: t; -*- + + +(use-package all-the-icons) + +(use-package doom-themes + :config + (load-theme 'doom-dracula t) + (setq doom-themes-treemacs-theme "doom-atom") + (doom-themes-treemacs-config) + (doom-themes-org-config) + ) + +(provide 'jg-style)