diff options
Diffstat (limited to '.config/emacs/bd-mode-and-themes.el')
-rw-r--r-- | .config/emacs/bd-mode-and-themes.el | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/.config/emacs/bd-mode-and-themes.el b/.config/emacs/bd-mode-and-themes.el new file mode 100644 index 0000000..7f4104b --- /dev/null +++ b/.config/emacs/bd-mode-and-themes.el @@ -0,0 +1,151 @@ +;; -*- lexical-binding: t; -*- + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; excellent resources : https://gitlab.com/mark.feller/emacs.d/-/blob/master/modules/module-solarized.el ;; +;; https://protesilaos.com/codelog/2023-07-29-emacs-custom-modeline-tutorial/ ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;;; icon components for filename and git status +(use-package all-the-icons + :init + (progn (progn (defun modeline-buffer-name () + "Return 'buffer-name' with proper spacing and icon." + (format " %s %s" (all-the-icons-icon-for-file (buffer-name)) (buffer-name))) + (defvar-local bd/buffer-identification-mode-line + '(:eval (format "%s" (modeline-buffer-name))) + "Formats the modeline-buffer-name.")) + + (progn (defun git-vc-modeline () + (let ((branch (mapconcat 'concat (cdr (split-string vc-mode "[:-]")) "-"))) + (concat + (propertize (format " %s" (all-the-icons-octicon "git-branch")) + 'face `(:height 1 :family ,(all-the-icons-octicon-family)) + 'display '(raise 0)) + (propertize (format " %s" branch)) + (propertize " ")))) + (defvar-local bd/vc-mode-line + '(:eval (when (and vc-mode (not (eq major-mode 'magit-status-mode))) ; temp fix to avoid bug which occurs in magit buffer + (format "%s" + (propertize (git-vc-modeline) 'face 'shadow)))) + "Formats the checked out git repository."))) + :config + (setq emms-mode-line-icon-before-format (format "%s" (all-the-icons-fileicon "owl")) + emms-mode-line-icon-enabled-p t)) + +;;;; time and date +(setq display-time-format "%m/%d/%y %H:%M (%a)" + display-time-default-load-average nil) +(display-time) +(display-battery-mode 1) + +(defvar-local bd/misc-mode-line + '(:eval + (when (mode-line-window-selected-p) + global-mode-string)) + "Displays misc mode line content (emms, time, etc.) +only in the selected buffer.") + +(defun mode-line-fill (reserve) + "Return empty space, leaving RESERVE space on the right." + (unless reserve + (setq reserve 20)) + (when (and window-system (eq 'right (get-scroll-bar-mode))) + (setq reserve (- reserve 3))) + (propertize " " + 'display `((space :align-to (- (+ right right-fringe right-margin) ,reserve))))) + +;;;; pad out space for time (this method is probably horrendous) +(insert-into-list global-mode-string (mode-line-fill 21) (cl-position 'display-time-string global-mode-string)) + +(dolist (construct '(bd/buffer-identification-mode-line + bd/vc-mode-line + bd/misc-mode-line)) + (put construct 'risky-local-variable t)) + +(setq-default mode-line-format + (list + mode-line-front-space + ;; mode-line-mule-info + ;; mode-line-frame-identification + bd/buffer-identification-mode-line + " " + mode-line-modes + " " + ;; mode-line-position + mode-line-modified + bd/vc-mode-line + " " + bd/misc-mode-line + (mode-line-fill 3))) + +;;;; remove mode-line-clutter +(define-minor-mode minor-mode-blackout-mode + "Hides minor modes from the mode line." + t) + +(catch 'done + (mapc (lambda (x) + (when (and (consp x) + (equal (cadr x) '("" minor-mode-alist))) + (let ((original (copy-sequence x))) + (setcar x 'minor-mode-blackout-mode) + (setcdr x (list "" original))) + (throw 'done t))) + mode-line-modes)) + +(global-set-key (kbd "C-c m") 'minor-mode-blackout-mode) + +(defun disable_mode_line () + (setq mode-line-format nil)) + +;; custom function to remove mode line from images +(add-hook 'image-mode-hook 'disable_mode_line) + +(global-display-line-numbers-mode) +(global-visual-line-mode t) +(setq display-line-numbers-type 'relative) +;; required for other customizations later in themes. +(global-hl-line-mode 1) + +;;;; true transparency +(when (>= emacs-major-version 29) + (add-to-list 'default-frame-alist '(alpha-background . 60))) + +(defun set-frame-alpha (value) + "Sets the transparency of the frame background. 0=transparent/100=opaque" + (interactive "nTransparency Value 0 - 100 opaque:") + (setq value (clamp 0 100 value)) + (set-frame-parameter (selected-frame) 'alpha-background value) + (message "Alpha set to %d" value)) + +;;;; modus themes +(defun modus-themes-custom-faces () + (modus-themes-with-colors + (custom-set-faces + `(mode-line-inactive ((,class :background ,bg-main + :foreground ,fg-active))) + `(mode-line-active ((,class :background ,bg-main + :foreground ,fg-active))) + + `(hl-line ((,class :background ,magenta-nuanced-bg))) + + `(emms-playlist-track-face ((,class :foreground ,blue-nuanced-fg))) + `(emms-playlist-selected-face ((,class :foreground ,fg-special-cold))) + `(emms-browser-track-face ((,class :foreground ,blue-nuanced-fg)))))) + +(add-hook 'modus-themes-after-load-theme-hook #'modus-themes-custom-faces) + +(setq modus-themes-italic-constructs t + modus-themes-hl-line '(accented) + modus-themes-subtle-line-numbers t + modus-themes-paren-match '(intense) + modus-themes-region '(bg-only) + modus-themes-syntax '(faint) + modus-themes-mode-line '(borderless) + modus-themes-org-blocks 'gray-background + modus-themes-headings '( + (1 . (rainbow overline)))) + +(load-theme 'modus-vivendi t) + +(modus-themes-custom-faces) |