[Emacs Lisp] Personal ~/.emacs.d/ configuration folder.
Mode line and header line nearly completed.
smart-documents.org
@@ -431,24 +431,12 @@
431
431
(previous-buffer))))
432
432
#+END_SRC
433
433
434
Removed:
*** Header line commands
435
Removed:
436
Removed:
#+BEGIN_SRC emacs-lisp :tangle no
437
Removed:
(global-set-key (kbd "<header-line> <mouse-1>")
438
Removed:
(lambda ()
439
Removed:
"Delete window; if sole window, previous buffer."
440
Removed:
(interactive)
441
Removed:
(if (> (length (window-list)) 1)
442
Removed:
(delete-window)
443
Removed:
(previous-buffer))))
444
Removed:
#+END_SRC
445
Removed:
446
434
** Frame
447
435
448
436
*** Make new frame
449
437
450
438
#+BEGIN_SRC emacs-lisp :tangle yes
451
Removed:
(global-set-key [f5] 'make-frame)
439
Added:
(global-set-key (kbd "C-n") 'make-frame)
452
440
#+END_SRC
453
441
454
442
*** Make only frame
@@ -990,31 +978,7 @@
990
978
(setf rm-whitelist "projectile")
991
979
#+END_SRC
992
980
993
Removed:
This interpretation of the ideal mode line is the result of
994
Removed:
carefully studying the default ~mode-line~, as well as studying
995
Removed:
various customizations online.
996
981
997
Removed:
#+BEGIN_SRC emacs-lisp :tangle yes
998
Removed:
;; (%e mode-line-front-space mode-line-mule-info mode-line-client
999
Removed:
;; mode-line-modified mode-line-remote
1000
Removed:
;; mode-line-frame-identification mode-line-buffer-identification
1001
Removed:
;; mode-line-position (vc-mode vc-mode) mode-line-modes
1002
Removed:
;; mode-line-misc-info mode-line-end-spaces)
1003
Removed:
1004
Removed:
(setq-default mode-line-format
1005
Removed:
(list
1006
Removed:
mode-line-front-space
1007
Removed:
'(:eval (if buffer-read-only
1008
Removed:
(propertize "🔒" 'help-echo "C-x C-q: unlock buffer.")
1009
Removed:
(propertize "🔓" 'help-echo "C-x C-q: lock buffer.")))
1010
Removed:
'(:eval (if (buffer-modified-p)
1011
Removed:
(propertize " 🖉 " 'help-echo "Buffer is modified.")
1012
Removed:
(propertize " ✓ " 'help-echo "Buffer is saved.")))
1013
Removed:
mode-line-buffer-identification " "
1014
Removed:
mode-line-modes " "
1015
Removed:
mode-line-end-spaces))
1016
Removed:
#+END_SRC
1017
Removed:
1018
982
*** Emojis
1019
983
1020
984
Emojis are a symbol of modernity, and their tasteful use enables
@@ -1488,82 +1452,92 @@
1488
1452
1489
1453
#+END_SRC
1490
1454
1491
Removed:
**** TODO Header line
1492
Removed:
# Figure out how to do 'keymap cleanly
1455
Added:
**** Header line
1493
1456
1494
1457
In Org mode, the document header line will be the title of the
1495
Removed:
document we are working on currently.
1458
Added:
document we are working on currently. We start by defining
1459
Added:
keybindings for our header line buttons for navigating through
1460
Added:
open windows.
1496
1461
1497
Removed:
#+BEGIN_SRC emacs-lisp :tangle no
1498
Removed:
(setq header-line-format ; This will be our experimental header line.
1499
Removed:
(list
1500
Removed:
(propertize "..." 'display sd-icon-loading)
1501
Removed:
'(:eval
1502
Removed:
(list
1503
Removed:
(if (eq (length (window-list)) 1)
1504
Removed:
(propertize " ↤ " 'mouse-face 'highlight
1505
Removed:
'face 'org-special-keyword
1506
Removed:
'local-map 'previous-buffer
1507
Removed:
'help-echo "Return to previous window.")
1508
Removed:
(list (propertize " ❌ " 'mouse-face 'org-todo
1509
Removed:
'face 'org-special-keyword
1510
Removed:
'help-echo "Close this window.")
1511
Removed:
(propertize " ⇱" 'mouse-face 'highlight
1512
Removed:
'face 'org-special-keyword
1513
Removed:
'help-echo "Maximize this window.")
1514
Removed:
(propertize "⇲ " 'mouse-face 'highlight
1515
Removed:
'face 'org-special-keyword
1516
Removed:
'help-echo "Minimize this window.")))
1517
Removed:
(if (eq major-mode 'org-mode)
1518
Removed:
(org-property-value "TITLE")
1519
Removed:
(buffer-name))))))
1462
Added:
#+BEGIN_SRC emacs-lisp :tangle yes
1463
Added:
(defvar sd-header-line-previous-buffer-keymap
1464
Added:
;; Add menu of window navigation to the header line.
1465
Added:
(let ((map (make-sparse-keymap)))
1466
Added:
(define-key map [header-line mouse-1] 'previous-buffer)
1467
Added:
map)
1468
Added:
"Keymap for what is displayed in the header line, with a single window.")
1520
1469
1521
Removed:
(setq sd-header-windows-nt ; This will be our fallback header line.
1522
Removed:
(list
1523
Removed:
'(:eval
1524
Removed:
(list
1525
Removed:
(if (eq (length (window-list)) 1)
1526
Removed:
(propertize " ↤ " 'mouse-face 'highlight
1527
Removed:
'face 'org-special-keyword
1528
Removed:
'local-map 'previous-buffer
1529
Removed:
'help-echo "Return to previous window.")
1530
Removed:
(list (propertize " ❌ " 'mouse-face 'org-todo
1531
Removed:
'face 'org-special-keyword
1532
Removed:
'help-echo "Close this window.")
1533
Removed:
(propertize " ⇱" 'mouse-face 'highlight
1534
Removed:
'face 'org-special-keyword
1535
Removed:
'help-echo "Maximize this window.")
1536
Removed:
(propertize "⇲ " 'mouse-face 'highlight
1537
Removed:
'face 'org-special-keyword
1538
Removed:
'help-echo "Minimize this window.")))
1539
Removed:
(if (eq major-mode 'org-mode)
1540
Removed:
(org-property-value "TITLE")
1541
Removed:
(buffer-name))))))
1470
Added:
(defvar sd-header-line-kill-buffer-keymap
1471
Added:
;; Close current buffer and window.
1472
Added:
(let ((map (make-sparse-keymap)))
1473
Added:
(define-key map [header-line mouse-1] 'kill-buffer-and-window)
1474
Added:
map)
1475
Added:
"Keymap for closing current window.")
1542
1476
1543
Removed:
;; (cond ((string-equal system-type "windows-nt")
1544
Removed:
;; (setq header-line-format sd-header-windows-nt))
1545
Removed:
;; ((string-equal system-type "gnu/linux")
1546
Removed:
;; (setq header-line-format sd-header-gnu-linux)))
1477
Added:
(defvar sd-header-line-maximize-window-keymap
1478
Added:
;; Maximize current window.
1479
Added:
(let ((map (make-sparse-keymap)))
1480
Added:
(define-key map [header-line mouse-1] 'delete-other-windows)
1481
Added:
map)
1482
Added:
"Keymap for maximizing the current window.")
1547
1483
1548
Removed:
;; Ensure our icons are animated on start
1484
Added:
(defvar sd-header-line-minimize-window-keymap
1485
Added:
(let ((map (make-sparse-keymap)))
1486
Added:
(define-key map [header-line mouse-1] 'delete-window)
1487
Added:
map)
1488
Added:
"Keymap for minimizing the current window.")
1489
Added:
#+END_SRC
1490
Added:
1491
Added:
Now, we describe the actual format of the header line.
1492
Added:
1493
Added:
#+BEGIN_SRC emacs-lisp :tangle yes
1494
Added:
(setq-default header-line-format
1495
Added:
'(:eval
1496
Added:
(list
1497
Added:
(if (eq (length (window-list)) 1)
1498
Added:
(propertize " ↤ "
1499
Added:
'face 'org-special-keyword
1500
Added:
'mouse-face 'highlight
1501
Added:
'keymap sd-header-line-previous-buffer-keymap
1502
Added:
'help-echo "Return to previous window.")
1503
Added:
(list (propertize " ❌ "
1504
Added:
'face 'org-special-keyword
1505
Added:
'mouse-face 'org-todo
1506
Added:
'keymap sd-header-line-kill-buffer-keymap
1507
Added:
'help-echo "Close this window.")
1508
Added:
(propertize " ⇱"
1509
Added:
'face 'org-special-keyword
1510
Added:
'mouse-face 'highlight
1511
Added:
'keymap sd-header-line-maximize-window-keymap
1512
Added:
'help-echo "Maximize this window.")
1513
Added:
(propertize "⇲ "
1514
Added:
'face 'org-special-keyword
1515
Added:
'mouse-face 'highlight
1516
Added:
'keymap sd-header-line-minimize-window-keymap
1517
Added:
'help-echo "Minimize this window.")))
1518
Added:
mode-line-buffer-identification)))
1519
Added:
1549
1520
(image-animate sd-icon-loading 0 t)
1550
1521
#+END_SRC
1551
1522
1552
Removed:
**** TODO Mode line
1523
Added:
**** Mode line
1553
1524
1554
Removed:
#+NAME: mode-line-format
1555
Removed:
#+BEGIN_SRC emacs-lisp :tangle no
1556
Removed:
(setq mode-line-format
1557
Removed:
(list mode-line-modified
1558
Removed:
'(:eval
1559
Removed:
(list
1560
Removed:
" "
1561
Removed:
(if buffer-read-only "🔒" "🔓")
1562
Removed:
(propertize " %b "
1563
Removed:
'help-echo (buffer-file-name)
1564
Removed:
)
1565
Removed:
(if (buffer-modified-p) "🖉" "✓")
1566
Removed:
))))
1525
Added:
This interpretation of the ideal mode line is the result of
1526
Added:
carefully studying the default ~mode-line~, as well as studying
1527
Added:
various customizations online.
1528
Added:
1529
Added:
#+BEGIN_SRC emacs-lisp :tangle yes
1530
Added:
(setq-default mode-line-format
1531
Added:
(list
1532
Added:
mode-line-front-space
1533
Added:
'(:eval (if buffer-read-only
1534
Added:
(propertize "🔒" 'help-echo "C-x C-q: unlock buffer.")
1535
Added:
(propertize "🔓" 'help-echo "C-x C-q: lock buffer.")))
1536
Added:
'(:eval (if (buffer-modified-p)
1537
Added:
(propertize " 🖉 " 'help-echo "Buffer is modified.")
1538
Added:
(propertize " ✓ " 'help-echo "Buffer is saved.")))
1539
Added:
mode-line-modes " "
1540
Added:
mode-line-end-spaces))
1567
1541
#+END_SRC
1568
1542
1569
1543
** Window