summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/spack/__init__.py19
-rw-r--r--lib/spack/spack/cmd/edit.py7
-rw-r--r--lib/spack/spack/util/editor.py54
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