emacs-elpa-diffs
[Top][All Lists]
Advanced

[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)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]