diff options
-rw-r--r-- | lib/spack/spack/__init__.py | 19 | ||||
-rw-r--r-- | lib/spack/spack/cmd/edit.py | 7 | ||||
-rw-r--r-- | lib/spack/spack/util/editor.py | 54 |
3 files changed, 58 insertions, 22 deletions
diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index e0ed62c0fd..e9c4f4191c 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -207,25 +207,6 @@ import spack.util.executable from spack.util.executable import * __all__ += spack.util.executable.__all__ - -# Set up the user's editor -# $EDITOR environment variable has the highest precedence -editor = os.environ.get('EDITOR') - -# if editor is not set, use some sensible defaults -if editor is not None: - editor = Executable(editor) -else: - editor = which('vim', 'vi', 'emacs', 'nano') - -# If there is no editor, only raise an error if we actually try to use it. -if not editor: - def editor_not_found(*args, **kwargs): - raise EnvironmentError( - 'No text editor found! Please set the EDITOR environment variable ' - 'to your preferred text editor.') - editor = editor_not_found - from spack.package import \ install_dependency_symlinks, flatten_dependencies, \ DependencyConflictError, InstallError, ExternalPackageError diff --git a/lib/spack/spack/cmd/edit.py b/lib/spack/spack/cmd/edit.py index 0b555d50e1..fb85acaacc 100644 --- a/lib/spack/spack/cmd/edit.py +++ b/lib/spack/spack/cmd/edit.py @@ -31,6 +31,7 @@ import spack.cmd import spack.paths from spack.spec import Spec from spack.repository import Repo +from spack.util.editor import editor description = "open package files in $EDITOR" section = "packaging" @@ -64,7 +65,7 @@ def edit_package(name, repo_path, namespace): tty.die("No package for '{0}' was found.".format(spec.name), " Use `spack create` to create a new package") - spack.editor(path) + editor(path) def setup_parser(subparser): @@ -137,9 +138,9 @@ def edit(parser, args): path)) path = files[0] # already confirmed only one entry in files - spack.editor(path) + editor(path) elif name: edit_package(name, args.repo, args.namespace) else: # By default open the directory where packages live - spack.editor(path) + editor(path) diff --git a/lib/spack/spack/util/editor.py b/lib/spack/spack/util/editor.py new file mode 100644 index 0000000000..f0f05fc345 --- /dev/null +++ b/lib/spack/spack/util/editor.py @@ -0,0 +1,54 @@ +############################################################################## +# Copyright (c) 2013-2018, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/spack/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program 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 terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +"""Module for finding the user's preferred text editor. + +Defines one variable: ``editor``, which is a +``spack.util.executable.Executable`` object that can be called to invoke +the editor. + +If no ``editor`` is found, an ``EnvironmentError`` is raised when +``editor`` is invoked. +""" +import os + +from spack.util.executable import Executable, which + +# Set up the user's editor +# $EDITOR environment variable has the highest precedence +editor = os.environ.get('EDITOR') + +# if editor is not set, use some sensible defaults +if editor is not None: + editor = Executable(editor) +else: + editor = which('vim', 'vi', 'emacs', 'nano') + +# If there is no editor, only raise an error if we actually try to use it. +if not editor: + def editor_not_found(*args, **kwargs): + raise EnvironmentError( + 'No text editor found! Please set the EDITOR environment variable ' + 'to your preferred text editor.') + editor = editor_not_found |