guix-commits
[Top][All Lists]
Advanced

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

01/05: emacs: Factorize code for buffer names.


From: Alex Kost
Subject: 01/05: emacs: Factorize code for buffer names.
Date: Fri, 15 Apr 2016 08:34:08 +0000

alezost pushed a commit to branch master
in repository guix.

commit 6ea80938aedd3ec4d7f5d7fd80b7da9b1993c577
Author: Alex Kost <address@hidden>
Date:   Sat Apr 2 21:07:09 2016 +0300

    emacs: Factorize code for buffer names.
    
    * emacs/guix-ui.el (guix-ui-buffer-name-default): Extract the code to
      compose buffer name and move to...
    * emacs/guix-utils.el (guix-compose-buffer-name): ... here.  New procedure.
---
 emacs/guix-ui.el    |   22 +++-------------------
 emacs/guix-utils.el |   28 +++++++++++++++++++++++++++-
 2 files changed, 30 insertions(+), 20 deletions(-)

diff --git a/emacs/guix-ui.el b/emacs/guix-ui.el
index 9a88efc..47773de 100644
--- a/emacs/guix-ui.el
+++ b/emacs/guix-ui.el
@@ -1,6 +1,6 @@
 ;;; guix-ui.el --- Common code for Guix package management interface  -*- 
lexical-binding: t -*-
 
-;; Copyright © 2014, 2015 Alex Kost <address@hidden>
+;; Copyright © 2014, 2015, 2016 Alex Kost <address@hidden>
 
 ;; This file is part of GNU Guix.
 
@@ -117,26 +117,10 @@ The function is called with 2 arguments: BASE-NAME and 
PROFILE."
   "Return BASE-NAME."
   base-name)
 
-;; TODO separate '*...*' logic from the real profile appending.  Also add
-;; another function to return '*Guix ...: /full/path/to/profile*' name.
 (defun guix-ui-buffer-name-default (base-name profile)
   "Return buffer name by appending BASE-NAME and PROFILE's base file name."
-  (let ((profile-name (file-name-base (directory-file-name profile)))
-        (re (rx string-start
-                (group (? "*"))
-                (group (*? any))
-                (group (? "*"))
-                string-end)))
-    (or (string-match re base-name)
-        (error "Unexpected error in defining guix buffer name"))
-    (let ((first*    (match-string 1 base-name))
-          (name-body (match-string 2 base-name))
-          (last*     (match-string 3 base-name)))
-      ;; Handle the case when buffer name is wrapped by '*'.
-      (if (and (string= "*" first*)
-               (string= "*" last*))
-          (concat "*" name-body ": " profile-name "*")
-        (concat base-name ": " profile-name)))))
+  (guix-compose-buffer-name base-name
+                            (file-name-base (directory-file-name profile))))
 
 (defun guix-ui-buffer-name (base-name profile)
   "Return Guix buffer name based on BASE-NAME and profile.
diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el
index 8c1a5b4..ea9933f 100644
--- a/emacs/guix-utils.el
+++ b/emacs/guix-utils.el
@@ -1,6 +1,6 @@
 ;;; guix-utils.el --- General utility functions  -*- lexical-binding: t -*-
 
-;; Copyright © 2014, 2015 Alex Kost <address@hidden>
+;; Copyright © 2014, 2015, 2016 Alex Kost <address@hidden>
 
 ;; This file is part of GNU Guix.
 
@@ -223,6 +223,32 @@ If NO-MESSAGE? is non-nil, do not display a message about 
it."
 See also `guix-copy-as-kill'."
   (guix-copy-as-kill (guix-command-string args) no-message?))
 
+(defun guix-compose-buffer-name (base-name postfix)
+  "Return buffer name by appending BASE-NAME and POSTFIX.
+
+In a simple case the result is:
+
+  BASE-NAME: POSTFIX
+
+If BASE-NAME is wrapped by '*', then the result is:
+
+  *BASE-NAME: POSTFIX*"
+  (let ((re (rx string-start
+                (group (? "*"))
+                (group (*? any))
+                (group (? "*"))
+                string-end)))
+    (or (string-match re base-name)
+        (error "Unexpected error in defining buffer name"))
+    (let ((first*    (match-string 1 base-name))
+          (name-body (match-string 2 base-name))
+          (last*     (match-string 3 base-name)))
+      ;; Handle the case when buffer name is wrapped by '*'.
+      (if (and (string= "*" first*)
+               (string= "*" last*))
+          (concat "*" name-body ": " postfix "*")
+        (concat base-name ": " postfix)))))
+
 (defun guix-completing-read (prompt table &optional predicate
                              require-match initial-input
                              hist def inherit-input-method)



reply via email to

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