[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/nano-modeline ac0b497 15/24: Cleanup code
From: |
ELPA Syncer |
Subject: |
[elpa] externals/nano-modeline ac0b497 15/24: Cleanup code |
Date: |
Wed, 6 Oct 2021 17:57:35 -0400 (EDT) |
branch: externals/nano-modeline
commit ac0b497fd9b4e6b332ac493b55669a58934fba9a
Author: Nicolas P. Rougier <Nicolas.Rougier@inria.fr>
Commit: Nicolas P. Rougier <Nicolas.Rougier@inria.fr>
Cleanup code
---
images/nano-modeline-deft.png | Bin 14852 -> 14660 bytes
nano-modeline.el | 320 ++++++++++++++++++++++++------------------
2 files changed, 180 insertions(+), 140 deletions(-)
diff --git a/images/nano-modeline-deft.png b/images/nano-modeline-deft.png
index 28cbfa9..35a3cb7 100644
Binary files a/images/nano-modeline-deft.png and
b/images/nano-modeline-deft.png differ
diff --git a/nano-modeline.el b/nano-modeline.el
index b4caadb..606565f 100644
--- a/nano-modeline.el
+++ b/nano-modeline.el
@@ -1,35 +1,62 @@
-;;; nano-modeline.el --- N Λ N O Modeline -*- lexical-binding: t -*-
-;; -------------------------------------------------------------------
-;; GNU Emacs / N Λ N O Modeline
-;; Copyright (C) 2020-2021 - N Λ N O developers
-;;
+;;; nano-modeline.el --- N Λ N O modeline -*- lexical-binding: t -*-
+
+;; Copyright (C) 2021 Free Software Foundation, Inc.
+
+;; Maintainer: Nicolas P. Rougier <Nicolas.Rougier@inria.fr>
+;; URL: https://github.com/rougier/nano-modeline
+;; Version: 0.1
+;; Package-Requires: ((emacs "27.1"))
+;; Keywords: mode-line, header-line
+
;; This file is not part of GNU Emacs.
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; For a full copy of the GNU General Public License
+;; see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; Nano modeline is a custome modeline rendered as:
+;; [ status | name (primary) secondary ]
;;
-;; This program is free software: you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation, either version 3 of the
-;; License, or (at your option) any later version.
+;; It can be displayed on bottom (mode-line) or top (header-line)
+;; depending on nano-modeline-position custom setting.
;;
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
+;; There are two sets of faces (for active and inactive modelines) that
+;; can be customized (M-x: customize-group + nano-modeline)
;;
-;; You should have received a copy of the GNU General Public License
-;; along with this program. If not, see <http://www.gnu.org/licenses/>
-;; -------------------------------------------------------------------
+;; - nano-modeline-active-name / nano-modeline-inactive-name
+;; - nano-modeline-active-primary / nano-modeline-inactive-primary
+;; - nano-modeline-active-secondary / nano-modeline-inactive-secondary
+;; - nano-modeline-active-status-RO / nano-modeline-inactive-status-RO
+;; - nano-modeline-active-status-RW / nano-modeline-inactive-status-RW
+;; - nano-modeline-active-status-** / nano-modeline-inactive-status-**
;;
-;; Modeline is rendered as:
-;; [ status | name (primary) secondary ]
+;; Usage example:
;;
-;; -------------------------------------------------------------------
-(require 's)
-
+;; M-x: nano-modeline
+;;
+;;; NEWS:
+;;
+;; Version 0.1
+;; - Submission to ELPA
+;;
+;;; Code:
(defgroup nano nil
- "N Λ N O")
+ "N Λ N O"
+ :group 'convenience)
(defgroup nano-modeline nil
- "Modeline settings"
+ "N Λ N O modeline"
:group 'nano)
(defgroup nano-modeline-active nil
@@ -153,47 +180,47 @@ Modeline is composed as:
"Compose a string with provided information"
(let* ((char-width (window-font-width nil 'header-line))
(window (get-buffer-window (current-buffer)))
- (active (eq window nano-modeline--selected-window))
+ (active (eq window nano-modeline--selected-window))
(space-up +0.20)
(space-down -0.25)
- (prefix (cond ((string= status "RO")
- (propertize (if (window-dedicated-p)" -- " " RO ")
- 'face (if active
'nano-modeline-active-status-RO
-
'nano-modeline-inactive-status-RO)))
+ (prefix (cond ((string= status "RO")
+ (propertize (if (window-dedicated-p)"•RO " " RO ")
+ 'face (if active 'nano-modeline-active-status-RO
+ 'nano-modeline-inactive-status-RO)))
((string= status "**")
- (propertize (if (window-dedicated-p)" -- " " ** ")
- 'face (if active
'nano-modeline-active-status-**
-
'nano-modeline-inactive-status-**)))
+ (propertize (if (window-dedicated-p)"•** " " ** ")
+ 'face (if active 'nano-modeline-active-status-**
+ 'nano-modeline-inactive-status-**)))
((string= status "RW")
- (propertize (if (window-dedicated-p)" -- " " RW ")
- 'face (if active
'nano-modeline-active-status-RW
-
'nano-modeline-inactive-status-RW)))
- (t (propertize status
- 'face (if active
'nano-modeline-active-status-**
-
'nano-modeline-inactive-status-**)))))
+ (propertize (if (window-dedicated-p) "•RW " " RW ")
+ 'face (if active 'nano-modeline-active-status-RW
+ 'nano-modeline-inactive-status-RW)))
+ (t (propertize status
+ 'face (if active 'nano-modeline-active-status-**
+ 'nano-modeline-inactive-status-**)))))
(left (concat
(propertize " " 'face (if active 'nano-modeline-active
- 'nano-modeline-inactive)
- 'display `(raise ,space-up))
+ 'nano-modeline-inactive)
+ 'display `(raise ,space-up))
(propertize name 'face (if active 'nano-modeline-active-name
- 'nano-modeline-inactive-name))
+ 'nano-modeline-inactive-name))
(propertize " " 'face (if active 'nano-modeline-active
- 'nano-modeline-inactive)
+ 'nano-modeline-inactive)
'display `(raise ,space-down))
- (propertize primary 'face (if active
'nano-modeline-active-primary
+ (propertize primary 'face (if active 'nano-modeline-active-primary
'nano-modeline-inactive-primary))))
(right (concat secondary " "))
(available-width (- (window-total-width)
- (length prefix) (length left) (length right)
- (/ (window-right-divider-width) char-width)))
- (available-width (max 1 available-width)))
+ (length prefix) (length left) (length right)
+ (/ (window-right-divider-width) char-width)))
+ (available-width (max 1 available-width)))
(concat prefix
- left
- (propertize (make-string available-width ?\ )
- 'face (if active 'nano-modeline-active
- 'nano-modeline-inactive))
- (propertize right 'face (if active 'nano-modeline-active-secondary
-
'nano-modeline-inactive-secondary)))))
+ left
+ (propertize (make-string available-width ?\ )
+ 'face (if active 'nano-modeline-active
+ 'nano-modeline-inactive))
+ (propertize right 'face (if active 'nano-modeline-active-secondary
+ 'nano-modeline-inactive-secondary)))))
;; ---------------------------------------------------------------------
(defun nano-modeline-mu4e-dashboard-mode-p ()
@@ -297,26 +324,26 @@ Modeline is composed as:
(defun nano-modeline-info-breadcrumbs ()
(let ((nodes (Info-toc-nodes Info-current-file))
(cnode Info-current-node)
- (node Info-current-node)
+ (node Info-current-node)
(crumbs ())
(depth Info-breadcrumbs-depth)
- line)
+ line)
(while (> depth 0)
(setq node (nth 1 (assoc node nodes)))
(if node (push node crumbs))
(setq depth (1- depth)))
(setq crumbs (cons "Top" (if (member (pop crumbs) '(nil "Top"))
- crumbs (cons nil crumbs))))
+ crumbs (cons nil crumbs))))
(forward-line 1)
(dolist (node crumbs)
(let ((text
- (if (not (equal node "Top")) node
- (format "%s"
- (if (stringp Info-current-file)
- (file-name-sans-extension
- (file-name-nondirectory Info-current-file))
- Info-current-file)))))
- (setq line (concat line (if (null line) "" " > ")
+ (if (not (equal node "Top")) node
+ (format "%s"
+ (if (stringp Info-current-file)
+ (file-name-sans-extension
+ (file-name-nondirectory Info-current-file))
+ Info-current-file)))))
+ (setq line (concat line (if (null line) "" " > ")
(if (null node) "..." text)))))
(if (and cnode (not (equal cnode "Top")))
(setq line (concat line (if (null line) "" " > ") cnode)))
@@ -357,6 +384,16 @@ Modeline is composed as:
(shorten-directory default-directory 32)))
;; ---------------------------------------------------------------------
+(defun nano-modeline-mu4e-loading-mode-p ()
+ (derived-mode-p 'mu4e-loading-mode))
+
+(defun nano-modeline-mu4e-loading-mode ()
+ (nano-modeline-compose (nano-modeline-status)
+ "Mail"
+ (nano-modeline-mu4e-context)
+ (format-time-string "%A %d %B %Y, %H:%M")))
+
+;; ---------------------------------------------------------------------
(defun nano-modeline-mu4e-main-mode-p ()
(derived-mode-p 'mu4e-main-mode))
@@ -374,7 +411,10 @@ Modeline is composed as:
(nano-modeline-compose (nano-modeline-status)
(mu4e~quote-for-modeline mu4e~headers-last-query)
""
- ""))
+ (format "[%s]"
+ (mu4e~quote-for-modeline
+ (mu4e-context-name (mu4e-context-current))))
+ ))
(with-eval-after-load 'mu4e
(defun mu4e~header-line-format () (nano-modeline)))
@@ -453,20 +493,20 @@ Modeline is composed as:
(defun nano-modeline-docview-mode ()
(let ((buffer-name (format-mode-line "%b"))
- (mode-name (nano-mode-name))
- (branch (vc-branch))
- (page-number (concat
- (number-to-string (doc-view-current-page)) "/"
- (or (ignore-errors
- (number-to-string (doc-view-last-page-number)))
- "???"))))
+ (mode-name (nano-mode-name))
+ (branch (vc-branch))
+ (page-number (concat
+ (number-to-string (doc-view-current-page)) "/"
+ (or (ignore-errors
+ (number-to-string (doc-view-last-page-number)))
+ "???"))))
(nano-modeline-compose
(nano-modeline-status)
buffer-name
(concat "(" mode-name
- (if branch (concat ", "
- (propertize branch 'face 'italic)))
- ")" )
+ (if branch (concat ", "
+ (propertize branch 'face 'italic)))
+ ")" )
page-number)))
;; ---------------------------------------------------------------------
@@ -475,20 +515,20 @@ Modeline is composed as:
(defun nano-modeline-pdf-view-mode ()
(let ((buffer-name (format-mode-line "%b"))
- (mode-name (nano-mode-name))
- (branch (vc-branch))
- (page-number (concat
- (number-to-string (pdf-view-current-page)) "/"
- (or (ignore-errors
- (number-to-string (pdf-cache-number-of-pages)))
- "???"))))
+ (mode-name (nano-mode-name))
+ (branch (vc-branch))
+ (page-number (concat
+ (number-to-string (pdf-view-current-page)) "/"
+ (or (ignore-errors
+ (number-to-string (pdf-cache-number-of-pages)))
+ "???"))))
(nano-modeline-compose
"RW"
buffer-name
(concat "(" mode-name
- (if branch (concat ", "
- (propertize branch 'face 'italic)))
- ")" )
+ (if branch (concat ", "
+ (propertize branch 'face 'italic)))
+ ")" )
page-number)))
;; ---------------------------------------------------------------------
@@ -601,72 +641,72 @@ Modeline is composed as:
(setq eshell-status-in-modeline nil)
;; TTY mode top
- (cond ((and (not (display-graphic-p)) (eq nano-modeline-position 'top))
- (setq mode-line-format nil)
- (setq-default mode-line-format nil)
- (set-face-attribute 'mode-line nil :inherit 'nano-modeline-active)
- (set-face-attribute 'mode-line-inactive nil :inherit
'nano-modeline-inactive))
-
- ;; TTY Mode bottom
- ((and (not (display-graphic-p)) (eq nano-modeline-position 'top))
- (setq header-line-format nil)
- (setq-default header-line-format nil))
-
- ;; Graphic mode, modeline at top
- ((eq nano-modeline-position 'top)
- (setq mode-line-format (list ""))
- (setq-default mode-line-format (list ""))
- (set-face-attribute 'mode-line nil :inherit 'nano-modeline-active
- :height 0.1)
- (set-face-attribute 'mode-line-inactive nil :inherit
'nano-modeline-inactive
- :height 0.1))
-
- ;; Graphic mode, modeline at bottom
- (t
- (setq header-line-format nil)
- (setq-default header-line-format nil)
- (set-face-attribute 'mode-line nil :height (face-attribute
'default :height))
- (set-face-attribute 'mode-line-inactive nil :height (face-attribute
'default :height))))
-
-
- (let ((format
- '((:eval
- (cond
- ((nano-modeline-prog-mode-p) (nano-modeline-default-mode))
- ((nano-modeline-message-mode-p) (nano-modeline-message-mode))
- ((nano-modeline-elfeed-search-mode-p)
(nano-modeline-elfeed-search-mode))
- ((nano-modeline-elfeed-show-mode-p)
(nano-modeline-elfeed-show-mode))
- ((nano-modeline-deft-mode-p) (nano-modeline-deft-mode))
- ((nano-modeline-info-mode-p) (nano-modeline-info-mode))
- ((nano-modeline-calendar-mode-p) (nano-modeline-calendar-mode))
- ((nano-modeline-org-capture-mode-p)
(nano-modeline-org-capture-mode))
- ((nano-modeline-org-agenda-mode-p)
(nano-modeline-org-agenda-mode))
- ((nano-modeline-org-clock-mode-p) (nano-modeline-org-clock-mode))
- ((nano-modeline-term-mode-p) (nano-modeline-term-mode))
- ((nano-modeline-vterm-mode-p) (nano-modeline-term-mode))
- ((nano-modeline-mu4e-dashboard-mode-p)
(nano-modeline-mu4e-dashboard-mode))
- ((nano-modeline-mu4e-main-mode-p) (nano-modeline-mu4e-main-mode))
- ((nano-modeline-mu4e-headers-mode-p)
(nano-modeline-mu4e-headers-mode))
- ((nano-modeline-mu4e-view-mode-p) (nano-modeline-mu4e-view-mode))
- ((nano-modeline-text-mode-p) (nano-modeline-default-mode))
- ((nano-modeline-pdf-view-mode-p) (nano-modeline-pdf-view-mode))
- ((nano-modeline-docview-mode-p) (nano-modeline-docview-mode))
-
-;; ((nano-modeline-buffer-menu-mode-p)
(nano-modeline-buffer-menu-mode))
+ (cond ((and (not (display-graphic-p))
+ (eq nano-modeline-position 'top))
+ (setq mode-line-format nil)
+ (setq-default mode-line-format nil)
+ (set-face-attribute 'mode-line nil :inherit 'nano-modeline-active)
+ (set-face-attribute 'mode-line-inactive nil :inherit
'nano-modeline-inactive))
+
+ ;; TTY Mode bottom
+ ((and (not (display-graphic-p))
+ (eq nano-modeline-position 'top))
+ (setq header-line-format nil)
+ (setq-default header-line-format nil))
+
+ ;; Graphic mode, modeline at top
+ ((eq nano-modeline-position 'top)
+ (setq mode-line-format (list ""))
+ (setq-default mode-line-format (list ""))
+ (set-face-attribute 'mode-line nil :inherit 'nano-modeline-active
+ :height 0.1)
+ (set-face-attribute 'mode-line-inactive nil :inherit
'nano-modeline-inactive
+ :height 0.1))
- ((nano-modeline-completion-list-mode-p)
(nano-modeline-completion-list-mode))
- ((nano-modeline-nano-help-mode-p) (nano-modeline-nano-help-mode))
- (t
(nano-modeline-default-mode)))))))
+ ;; Graphic mode, modeline at bottom
+ (t
+ (setq header-line-format nil)
+ (setq-default header-line-format nil)
+ (set-face-attribute 'mode-line nil :height (face-attribute
'default :height))
+ (set-face-attribute 'mode-line-inactive nil :height (face-attribute
'default :height))))
+
+ (let* ((format
+ '((:eval
+ (cond
+ ((nano-modeline-prog-mode-p)
(nano-modeline-default-mode))
+ ((nano-modeline-message-mode-p)
(nano-modeline-message-mode))
+ ((nano-modeline-elfeed-search-mode-p)
(nano-modeline-elfeed-search-mode))
+ ((nano-modeline-elfeed-show-mode-p)
(nano-modeline-elfeed-show-mode))
+ ((nano-modeline-deft-mode-p)
(nano-modeline-deft-mode))
+ ((nano-modeline-info-mode-p)
(nano-modeline-info-mode))
+ ((nano-modeline-calendar-mode-p)
(nano-modeline-calendar-mode))
+ ((nano-modeline-org-capture-mode-p)
(nano-modeline-org-capture-mode))
+ ((nano-modeline-org-agenda-mode-p)
(nano-modeline-org-agenda-mode))
+ ((nano-modeline-org-clock-mode-p)
(nano-modeline-org-clock-mode))
+ ((nano-modeline-term-mode-p)
(nano-modeline-term-mode))
+ ((nano-modeline-vterm-mode-p)
(nano-modeline-term-mode))
+ ((nano-modeline-mu4e-dashboard-mode-p)
(nano-modeline-mu4e-dashboard-mode))
+ ((nano-modeline-mu4e-main-mode-p)
(nano-modeline-mu4e-main-mode))
+ ((nano-modeline-mu4e-loading-mode-p)
(nano-modeline-mu4e-loading-mode))
+ ((nano-modeline-mu4e-headers-mode-p)
(nano-modeline-mu4e-headers-mode))
+ ((nano-modeline-mu4e-view-mode-p)
(nano-modeline-mu4e-view-mode))
+ ((nano-modeline-text-mode-p)
(nano-modeline-default-mode))
+ ((nano-modeline-pdf-view-mode-p)
(nano-modeline-pdf-view-mode))
+ ((nano-modeline-docview-mode-p)
(nano-modeline-docview-mode))
+ ;; ((nano-modeline-buffer-menu-mode-p)
(nano-modeline-buffer-menu-mode))
+ ((nano-modeline-completion-list-mode-p)
(nano-modeline-completion-list-mode))
+ ((nano-modeline-nano-help-mode-p)
(nano-modeline-nano-help-mode))
+ (t
(nano-modeline-default-mode)))))))
+
(if (eq nano-modeline-position 'top)
- (setq-default header-line-format format)
+ (setq-default header-line-format format)
(setq-default mode-line-format format))))
-
;; This hooks is necessary to register selected window because when
;; a modeline is evaluated, the corresponding window is always selected.
(add-hook 'post-command-hook
- (lambda () (setq nano-modeline--selected-window (selected-window))))
+ (lambda () (setq nano-modeline--selected-window (selected-window))))
(nano-modeline)
- [elpa] externals/nano-modeline 8b049b8 02/24: Added installation and usage instructions, (continued)
- [elpa] externals/nano-modeline 8b049b8 02/24: Added installation and usage instructions, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline c574429 07/24: Added screenshots, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline 992acf6 10/24: Merge pull request #2 from vllur/patch-1, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline 3bfc046 11/24: Added buffer menu mode, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline 5036cd2 08/24: Added screenshots for some modes, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline b572986 09/24: Fixed modeline display in HTML files in web-mode, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline 5690ea3 06/24: Added screenshots, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline 53d327a 13/24: Fix incompatibilities with mu4e > 1.6.5, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline 5edeac2 22/24: Typo, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline 9d5290a 14/24: Merge pull request #4 from seblemaguer/fix-mu4e, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline ac0b497 15/24: Cleanup code,
ELPA Syncer <=
- [elpa] externals/nano-modeline c3c6f4c 17/24: Fix mu4e modeline and added user mode, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline 0c94fc8 20/24: Linting, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline d6cb2a6 23/24: Linting + bugfix (mu4e), ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline 8052795 24/24: Added autoload, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline edcbfe4 12/24: Merge remote-tracking branch 'origin/master', ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline 18c437b 04/24: Added TTY top/bottom case, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline e84ca06 05/24: Removed optional position, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline 9ca47db 16/24: Merge remote-tracking branch 'origin/master', ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline 2bbe1d5 19/24: Linting and removed s.el dependency, ELPA Syncer, 2021/10/06
- [elpa] externals/nano-modeline 2574703 18/24: Updated deft screenshot, ELPA Syncer, 2021/10/06