summaryrefslogtreecommitdiff
path: root/.config/emacs/modules/bd--modeline.el
blob: 5d2af9e4eedcf7fd66a0eb6d57df2af3153d8595 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
;;; -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:


;;;; remove all the stupid stupid stupid crap
(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 ,") 'minor-mode-blackout-mode)

(defvar-local bd/buffer-identification-mode-line
    '(:eval (format "%s" (propertize (buffer-name) 'face
				     (if (mode-line-window-selected-p)
					 'font-lock-keyword-face
				       'mode-line-inactive))))
  "Formats the modeline-buffer-name.")

(defvar-local bd/project-mode-line
    '(:eval
      (when-let ((project (project-current))
		 (file? (buffer-file-name)))
	(let ((last-coding-system-used last-coding-system-used))
	  (format "%s "
	   (propertize
            (project-name project)
            'face 'shadow
            'mouse-face 'mode-line-highlight
            'help-echo "mouse-1: Project menu"
            'local-map project-mode-line-map))))))

(column-number-mode 1)
(setopt mode-line-position-column-line-format '("%l:%c")
	mode-line-percent-position nil)
(defvar-local bd/line-position
    '(:eval
      (when (mode-line-window-selected-p)
        mode-line-position)))

(defvar-local bd/vc-mode-line
    '(:eval (when vc-mode
	      (format "%s "
		      (propertize (cadr (split-string vc-mode "[:-]")) 'face 'shadow))))
  "Formats the checked out git repository.")

(defvar-local bd/modeline-window-dedicated
    '(:eval
      (when (window-dedicated-p)
        (format "%s -- "
		(propertize "LK" 'face 'font-lock-comment-face))))
  "Indicator for dedicated window.")

(dolist (construct '(bd/buffer-identification-mode-line
		     bd/project-mode-line
                     bd/vc-mode-line
		     bd/line-position
		     bd/modeline-window-dedicated))
  (put construct 'risky-local-variable t))


(setopt mode-line-right-align-edge 'window)
(setq-default mode-line-format
              '("%e"
		mode-line-front-space
		bd/project-mode-line
		bd/buffer-identification-mode-line
		" -- "
		mode-line-modes
		"-- "
		bd/line-position
		mode-line-format-right-align
		bd/modeline-window-dedicated
		bd/vc-mode-line
		mode-line-mule-info
		mode-line-modified
		mode-line-front-space
		))


(provide 'bd--modeline)
;;; bd--modeline.el ends here