Mode line and header line nearly completed.

Commit
400c1a4a740ef4b137386624a3e0d8aac39ce5e3
Author
Blendoit <blendoit@gmail.com>
Author date
Committer
Blendoit <blendoit@gmail.com>
Committer date
smart-documents.org
index e442bb16..1b09768d 100644..100644
@@ -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