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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/nix-mode c8f33e5869 1/3: Differentiate realised/unrealised


From: ELPA Syncer
Subject: [nongnu] elpa/nix-mode c8f33e5869 1/3: Differentiate realised/unrealised store paths
Date: Wed, 31 Aug 2022 00:58:58 -0400 (EDT)

branch: elpa/nix-mode
commit c8f33e586917262359d32cbe1a6726b168a6010a
Author: Daniel Nagy <danielnagy@posteo.de>
Commit: Daniel Nagy <danielnagy@posteo.de>

    Differentiate realised/unrealised store paths
    
    * propertize store-paths with their respective face
---
 nix-mode.el  | 14 ++++++++++++++
 nix-store.el | 34 ++++++++++++++++++++++------------
 2 files changed, 36 insertions(+), 12 deletions(-)

diff --git a/nix-mode.el b/nix-mode.el
index 59ca5a2101..9a67544ed2 100644
--- a/nix-mode.el
+++ b/nix-mode.el
@@ -81,6 +81,20 @@ very large Nix files (all-packages.nix)."
   "Face used to highlight Nix antiquotes."
   :group 'nix-faces)
 
+(defface nix-store-path-face nil
+  "Face used to highlight Nix store paths."
+  :group 'nix-faces)
+
+(defface nix-store-path-realised-face
+  '((t :inherit 'nix-store-path-face))
+  "Face used to highlight realised Nix store paths."
+  :group 'nix-faces)
+
+(defface nix-store-path-unrealised-face
+  '((t :inherit 'nix-store-path-face))
+  "Face used to highlight unrealised Nix store paths."
+  :group 'nix-faces)
+
 ;;; Constants
 
 (defconst nix-system-types
diff --git a/nix-store.el b/nix-store.el
index a05f1d34ec..d633031393 100644
--- a/nix-store.el
+++ b/nix-store.el
@@ -34,15 +34,15 @@ PATH the path within /nix/store to realise"
 (defvar-local nix-buffer-store-path nil "Buffer-local object holding an 
`nix-store-path` object.")
 
 (defclass nix-store-path ()
-  ((path      :initarg :path                       :accessor 
nix-store-path-path)
-    (status   :initarg :status :initform 'realised :accessor 
nix-store-path-status)
-    (hash     :initarg :hash                       :accessor 
nix-store-path-hash)
-    (size     :initarg :size                       :accessor 
nix-store-path-size)
-    (derivers :initarg :derivers                   :accessor 
nix-store-path-derivers)
-    (outputs  :initarg :outputs                    :accessor 
nix-store-path-outputs)
-    (references :initarg :references               :accessor 
nix-store-path-references)
-    (referrers  :initarg :referrers                :accessor 
nix-store-path-referrers)
-    (requisites :initarg :requisites               :accessor 
nix-store-path-requisites))
+  ((path      :initarg :path          :accessor nix-store-path-path)
+    (status   :initarg :status        :accessor nix-store-path-status)
+    (hash     :initarg :hash          :accessor nix-store-path-hash)
+    (size     :initarg :size          :accessor nix-store-path-size)
+    (derivers :initarg :derivers      :accessor nix-store-path-derivers)
+    (outputs  :initarg :outputs       :accessor nix-store-path-outputs)
+    (references :initarg :references  :accessor nix-store-path-references)
+    (referrers  :initarg :referrers   :accessor nix-store-path-referrers)
+    (requisites :initarg :requisites  :accessor nix-store-path-requisites))
   "Nix-Store-Path Class holds all information of the path that
 is displayed")
 
@@ -55,6 +55,7 @@ is displayed")
   (oset object :referrers (nix-store--query 'referrers (nix-store-path-path 
object)))
   (oset object :requisites (nix-store--query 'requisites (nix-store-path-path 
object)))
   (oset object :references (nix-store--query 'references (nix-store-path-path 
object)))
+  (oset object :status (file-exists-p (car (nix-store-path-outputs object))))
   object)
 
 (cl-defun nix-store--query (argument &optional (path (nix-store-path-path 
nix-buffer-store-path)))
@@ -85,7 +86,10 @@ information."
   "Insert a section showing the path of STORE-PATH."
   (magit-insert-section (path (nix-store-path-path store-path))
     (magit-insert-heading (propertize (format "%-11s" "Path:") 'face 
'magit-section-heading)
-      (format "%s" (oref store-path path)))))
+      (propertize (oref store-path path)
+       'face (if (file-exists-p (nix-store-path-path store-path))
+               'nix-store-path-realised-face
+               'nix-store-path-unrealised-face) ))))
 
 (cl-defun nix-store-path-insert-size (&optional (store-path 
nix-buffer-store-path))
   "Insert a section showing the size of STORE-PATH."
@@ -103,7 +107,7 @@ information."
   "Insert a section showing the status of STORE-PATH."
   (magit-insert-section (status (nix-store-path-status store-path))
     (magit-insert-heading (propertize (format "%-11s" "Status:") 'face 
'magit-section-heading)
-      (format "%s" (oref store-path status)))))
+      (if (nix-store-path-status store-path) "realised" "unrealised"))))
 
 (defmacro nix-store--magit-insert-section-list (type value label)
   "Helper macro for inserting a list as a magit-section.
@@ -113,7 +117,13 @@ respectively. The LABEL is the text displayed."
      (when (and (listp value) (> (length value) 0))
        (magit-insert-section (,type value)
         (magit-insert-heading ,label)
-        (cl-loop for x in value do (magit-insert-section (store-path x) 
(insert x) (newline)))
+        (cl-loop for x in value
+          for exists = (file-exists-p x)
+          do
+          (magit-insert-section (store-path x)
+            (insert
+              (propertize x 'face (if exists 'nix-store-path-realised-face 
'nix-store-path-unrealised-face))
+              ?\n)))
         (insert ?\n)
         (magit-insert-child-count (magit-current-section))))))
 



reply via email to

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