From 1ce96dd9271445133b920cff81bbb44085a5fe7c Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 12 Aug 2015 15:44:22 +0300 Subject: emacs: Add and use 'guix-concat-strings'. * emacs/guix-utils.el (guix-concat-strings): New function. * emacs/guix-pcomplete.el (guix-pcomplete-short-options): Use it. * emacs/guix-base.el (guix-get-package-strings): Likewise. --- emacs/guix-base.el | 2 +- emacs/guix-pcomplete.el | 2 +- emacs/guix-utils.el | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/emacs/guix-base.el b/emacs/guix-base.el index 2212dd746f..76974e12ab 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -913,7 +913,7 @@ ENTRIES is a list of package entries to get info about packages." (concat (guix-get-full-name entry) (when outputs (concat ":" - (mapconcat #'identity outputs ","))) + (guix-concat-strings outputs ","))) (when location (concat "\t(" location ")"))))))) specs))) diff --git a/emacs/guix-pcomplete.el b/emacs/guix-pcomplete.el index 0049c94d38..2b9249554b 100644 --- a/emacs/guix-pcomplete.el +++ b/emacs/guix-pcomplete.el @@ -147,7 +147,7 @@ subcommands, actions, etc. for this guix COMMAND." "Return a string with available short options for guix COMMAND." guix-pcomplete-parse-short-option-regexp (lambda (list) - (mapconcat #'identity list ""))) + (guix-concat-strings list ""))) (guix-memoized-defun guix-pcomplete-all-packages () "Return a list of all available Guix packages." diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el index 8a0673a3a0..df6636c139 100644 --- a/emacs/guix-utils.el +++ b/emacs/guix-utils.el @@ -128,6 +128,22 @@ split it into several short lines." (fill-region (point-min) (point-max))) (buffer-string))) +(defun guix-concat-strings (strings separator &optional location) + "Return new string by concatenating STRINGS with SEPARATOR. +If LOCATION is a symbol `head', add another SEPARATOR to the +beginning of the returned string; if `tail' - add SEPARATOR to +the end of the string; if nil, do not add SEPARATOR; otherwise +add both to the end and to the beginning." + (let ((str (mapconcat #'identity strings separator))) + (cond ((null location) + str) + ((eq location 'head) + (concat separator str)) + ((eq location 'tail) + (concat str separator)) + (t + (concat separator str separator))))) + (defun guix-completing-read-multiple (prompt table &optional predicate require-match initial-input hist def inherit-input-method) -- cgit v1.2.3