branch: externals/nano-theme
commit 7e23364973fcd556a1c7b4c88f4214d94872144f
Author: Nicolas P. Rougier <nicolas.roug...@inria.fr>
Commit: Nicolas P. Rougier <nicolas.roug...@inria.fr>

    Code refactoring
---
 nano-dark-theme.el  |  16 +-------
 nano-light-theme.el |  94 ++++++++++++++++++++++++++++---------------
 nano-theme.el       | 113 +++++++++++++++++++++++++++++-----------------------
 3 files changed, 127 insertions(+), 96 deletions(-)

diff --git a/nano-dark-theme.el b/nano-dark-theme.el
index 128aff4..8502809 100644
--- a/nano-dark-theme.el
+++ b/nano-dark-theme.el
@@ -39,25 +39,13 @@
 (deftheme nano-dark
   "N Λ N O dark theme")
 
+
 (set-foreground-color nano-dark-foreground)
 (set-background-color nano-dark-background)
 (nano-theme 'dark)
 
-;; (set-frame-parameter nil 'background-mode 'dark)
-;; (set frame-background-mode 'dark)
-;; (frame-set-background-mode (selected-frame))
-
-;; (nano-theme 'dark) 
-
-;; (dolist (buffer (list " *Minibuf-0*" " *Echo Area 0*"
-;;                       " *Minibuf-1*" " *Echo Area 1*"))
-;;   (when (get-buffer buffer)
-;;     (with-current-buffer buffer
-;;       (face-remap-add-relative 'default 'nano-faded))))
-
-
 ;;;###autoload
-(when (and (boundp 'custom-theme-load-path) load-file-name)
+(when load-file-name
   (add-to-list 'custom-theme-load-path
                (file-name-as-directory (file-name-directory load-file-name))))
 
diff --git a/nano-light-theme.el b/nano-light-theme.el
index a3c22b5..d003c96 100644
--- a/nano-light-theme.el
+++ b/nano-light-theme.el
@@ -1,35 +1,65 @@
+;;; nano-light-theme.el --- N Λ N O theme -*- lexical-binding: t -*-
+
+;; Copyright (C) 2021 Free Software Foundation, Inc.
+
+;; Maintainer: Nicolas P. Rougier <nicolas.roug...@inria.fr>
+;; URL: https://github.com/rougier/nano-theme
+;; Version: 0.1
+;; Package-Requires: ((emacs "27.1"))
+;; Keywords: theme, dark, light
+
+;; 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:
+;;
+;; N Λ N O theme is a consistent theme that comes in two flavors:
+;;  - a light theme that is based on Material (https://material.io/)
+;;  - a dark theme that is based on Nord (https://www.nordtheme.com/).
+;;
+;; A theme is fully defined by a set of (1+6) faces as explained in
+;; "On the Design of Text Editors" / https://arxiv.org/abs/2008.06030
+;;
+
+;;; Code:
+(require 'nano-theme)
+
+(deftheme nano-light
+  "N Λ N O light theme")
+
+(set-foreground-color nano-light-foreground)
+(set-background-color nano-light-background)
+(nano-theme 'light)
+
+
+(defun nano-light ()
+  "Nano theme light"
 
-(defun nano-new-frame (&optional mode)
   (interactive)
-  (let ((mode (or mode (frame-parameter nil 'background-mode)))
-        (background-mode frame-background-mode)
-        (selected-frame (selected-frame))
-        (new-frame nil))
-
-    ;; Set mode
-    (setq frame-background-mode mode)
-    (setq new-frame (make-frame-command))
-    (select-frame new-frame)
-
-    ;; This forces recomputation of faces on the new frame
-    (frame-set-background-mode (selected-frame))
-           
-    (when (eq mode 'light)
-      (set-foreground-color nano-light-foreground)
-      (set-background-color nano-light-background))
-
-    (when (eq mode 'dark)
-      (set-foreground-color nano-dark-foreground)
-      (set-background-color nano-dark-background))
-
-    ;; Restore background mode
-    (setq frame-background-mode background-mode)
-    (frame-set-background-mode selected-frame)
-    
-    new-frame))
-
-
-(nano-new-frame 'light)
-(nano-new-frame 'dark)
-(nano-new-frame)
+  (set-foreground-color nano-light-foreground)
+  (set-background-color nano-light-background)
+  (load-theme 'nano-light t))
+
+;;;###autoload
+(when load-file-name
+  (add-to-list 'custom-theme-load-path
+               (file-name-as-directory (file-name-directory load-file-name))))
+
+(provide-theme 'nano-light)
+;;; nano-light-theme.el ends here
+
+
+
 
diff --git a/nano-theme.el b/nano-theme.el
index 8b47b86..9d03592 100644
--- a/nano-theme.el
+++ b/nano-theme.el
@@ -404,61 +404,26 @@ background color that is barely perceptible."
 
 ;; (defun nano-light ()
 ;;   "Nano theme light"
-  
+
 ;;   (interactive)
-;;   (setq widget-image-enable nil)
-;;   (setq x-underline-at-descent-line t)
-;;   (set-foreground-color nano-light-foreground)
-;;   (set-face-background 'internal-border nano-light-background 
(selected-frame))
-;;   (custom-set-variables '(frame-background-mode 'light))
-;;   (load-theme 'nano t)
+
 ;;   (set-frame-parameter nil 'background-mode 'light)
-;;   (if (assq 'background-color default-frame-alist)
-;;       (setcdr (assq 'background-color default-frame-alist)
-;;               nano-light-background)
-;;     (add-to-list 'default-frame-alist
-;;                  `(background-color . ,nano-light-background)))
-;;   (if (assq 'background-mode default-frame-alist)
-;;       (setcdr (assq 'background-mode default-frame-alist) 'light)
-;;     (add-to-list 'default-frame-alist '(background-mode . light)))
-
-;;   (dolist (buffer (list " *Minibuf-0*" " *Echo Area 0*"
-;;                         " *Minibuf-1*" " *Echo Area 1*"))
-;;     (when (get-buffer buffer)
-;;       (with-current-buffer buffer
-;;         (face-remap-add-relative 'default 'nano-faded))))
-;;   (frame-set-background-mode (selected-frame))
-;;   (set-background-color nano-light-background))
+;;   (setq frame-background-mode 'light)
 
+;;   (set-foreground-color nano-light-foreground)
+;;   (set-background-color nano-light-background)
+;;   (nano-theme 'light))
 
 ;; (defun nano-dark ()
 ;;   "Nano theme dark"
-  
+
 ;;   (interactive)
-;;   (setq widget-image-enable nil)
-;;   (setq x-underline-at-descent-line t)
-;;   (set-foreground-color nano-dark-foreground)
-;;   (set-face-background 'internal-border nano-dark-background 
(selected-frame))
-;;   (custom-set-variables '(frame-background-mode 'dark))
-;;   (load-theme 'nano t)
 ;;   (set-frame-parameter nil 'background-mode 'dark)
+;;   (setq frame-background-mode 'dark)
 
-;;   (if (assq 'background-color default-frame-alist)
-;;       (setcdr (assq 'background-color default-frame-alist)
-;;               nano-dark-background)
-;;     (add-to-list 'default-frame-alist
-;;                  `(background-color . ,nano-dark-background)))
-;;   (if (assq 'background-mode default-frame-alist)
-;;       (setcdr (assq 'background-mode default-frame-alist) 'dark)
-;;     (add-to-list 'default-frame-alist '(background-mode . dark)))
-
-;;   (dolist (buffer (list " *Minibuf-0*" " *Echo Area 0*"
-;;                         " *Minibuf-1*" " *Echo Area 1*"))
-;;     (when (get-buffer buffer)
-;;       (with-current-buffer buffer
-;;         (face-remap-add-relative 'default 'nano-faded))))
-;;   (frame-set-background-mode (selected-frame))
-;;   (set-background-color nano-dark-background))
+;;   (set-foreground-color nano-dark-foreground)
+;;   (set-background-color nano-dark-background)
+;;   (nano-theme 'dark))
 
 
 ;; (defun inherit (face &optional inherit)
@@ -479,12 +444,56 @@ background color that is barely perceptible."
 ;;       properties)))
 
 
-(defun nano-theme (mode)
+(defun nano-new-frame (&optional mode)
+  "This funcion creates a new frame in light or dark mode)"
+  
+  (interactive)
+  (let ((mode (or mode (frame-parameter nil 'background-mode)))
+        (background-mode frame-background-mode)
+        (selected-frame (selected-frame))
+        (new-frame nil))
+
+    ;; Set mode
+    (setq frame-background-mode mode)
+    (setq new-frame (make-frame-command))
+    (select-frame new-frame)
+
+    ;; This forces recomputation of faces on the new frame
+    (frame-set-background-mode (selected-frame))
+           
+    (when (eq mode 'light)
+      (set-foreground-color nano-light-foreground)
+      (set-background-color nano-light-background))
+
+    (when (eq mode 'dark)
+      (set-foreground-color nano-dark-foreground)
+      (set-background-color nano-dark-background))
+
+    ;; Restore background mode
+    (setq frame-background-mode background-mode)
+    (frame-set-background-mode selected-frame)
+    
+    new-frame))
+
+(defun nano-dark ()
+  "Load the nano dark theme on current frame."
+
+  (interactive)
+  (set-foreground-color nano-dark-foreground)
+  (set-background-color nano-dark-background)
+  (load-theme 'nano-dark t))
 
-  (set-frame-parameter nil 'background-mode mode)
-  (setq frame-background-mode mode)
-  (frame-set-background-mode (selected-frame))
+(defun nano-light ()
+  "Load the nano light theme on current frame."
 
+  (interactive)
+  (set-foreground-color nano-light-foreground)
+  (set-background-color nano-light-background)
+  (load-theme 'nano-light t))
+
+
+(defun nano-theme (mode)
+  "Apply the nano theme according to MODE which can be 'dark or 'light."
 
   (let ((light     '((background light)))
         (dark      '((background dark)))
@@ -492,6 +501,10 @@ background color that is barely perceptible."
                        'nano-dark
                      'nano-light)))
 
+    (set-frame-parameter nil 'background-mode mode)
+    (setq frame-background-mode mode)
+    (frame-set-background-mode (selected-frame))
+    
     (if nano-fonts-use
         (custom-theme-set-faces theme
          `(default ((,light (:foreground ,nano-light-foreground

Reply via email to