;;; guix-external.el --- External programs -*- lexical-binding: t -*- ;; Copyright © 2015 Alex Kost ;; This file is part of GNU Guix. ;; GNU Guix 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. ;; GNU Guix 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. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; This file provides auxiliary code for running external programs. ;;; Code: (require 'cl-lib) (require 'guix-config) (defgroup guix-external nil "Settings for external programs." :group 'guix) (defcustom guix-guile-program guix-config-guile-program "Name of the 'guile' executable used for Guix REPL. May be either a string (the name of the executable) or a list of strings of the form: (NAME . ARGS) Where ARGS is a list of arguments to the guile program." :type 'string :group 'guix-external) (defcustom guix-dot-program (if (file-name-absolute-p guix-config-dot-program) guix-config-dot-program (executable-find "dot")) "Name of the 'dot' executable." :type 'string :group 'guix-external) (defcustom guix-dot-default-arguments '("-Tpng") "Default arguments for 'dot' program." :type '(repeat string) :group 'guix-external) (defcustom guix-dot-file-name-function #'guix-png-file-name "Function used to define a file name of a temporary 'dot' file. The function is called without arguments." :type '(choice (function-item guix-png-file-name) (function :tag "Other function")) :group 'guix-external) (defun guix-dot-arguments (output-file &rest args) "Return a list of dot arguments for writing a graph into OUTPUT-FILE. If ARGS is nil, use `guix-dot-default-arguments'." (or guix-dot-program (error (concat "Couldn't find 'dot'.\n" "Set guix-dot-program to a proper value"))) (cl-list* guix-dot-program (concat "-o" output-file) (or args guix-dot-default-arguments))) (defun guix-dot-file-name () "Call `guix-dot-file-name-function'." (funcall guix-dot-file-name-function)) (defun guix-png-file-name () "Return '.png' file name in the `temporary-file-directory'." (concat (make-temp-name (concat (file-name-as-directory temporary-file-directory) "guix-emacs-graph-")) ".png")) (provide 'guix-external) ;;; guix-external.el ends here >gnu: ed: Update to 1.15....Efraim Flashner 2017-04-03gnu: ed: Update to 1.14.2....Marius Bakke 2017-01-12gnu: ed: Update to 1.14.1....Marius Bakke 2016-02-15gnu: ed: Use 'modify-phases'....Efraim Flashner 2016-02-15gnu: ed: Update to 1.13....Efraim Flashner 2015-07-10gnu: ed: Update to 1.12....Mark H Weaver 2015-04-04gnu: ed: Update to 1.11....Mark H Weaver 2014-09-13gnu: Synchronize GNU package descriptions with upstream....Ludovic Courtès 2014-03-29gnu: ed: Upgrade to 1.10....Ludovic Courtès 2013-12-01gnu: Synchronize descriptions with 'gnumaint'.Ludovic Courtès 2013-10-09Synchronize package descriptions with the Womb....Ludovic Courtès