From cfcff77bf47910e4c5aaaad8fa33f181281f94ee Mon Sep 17 00:00:00 2001 From: Todd Leonhardt Date: Thu, 14 Mar 2019 21:13:46 -0400 Subject: Converted dynamic class attributes to instance attributes The following attritubes which are intended to be dynamically settable at runtime are now instance attributes: - colors - continuation_prompt - debug - echo - editor - feedback_to_output - locals_in_py - quiet - timing - settable Also: - Moved code for finding a default editor to a function in utils and set a new DEFAULT_EDITOR class attribute with the return value of that --- cmd2/utils.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'cmd2/utils.py') diff --git a/cmd2/utils.py b/cmd2/utils.py index c43ff62a..f3c29227 100644 --- a/cmd2/utils.py +++ b/cmd2/utils.py @@ -5,6 +5,7 @@ import collections import os import re +import sys import unicodedata from typing import Any, Iterable, List, Optional, Union @@ -351,3 +352,17 @@ def unquote_redirection_tokens(args: List[str]) -> None: unquoted_arg = strip_quotes(arg) if unquoted_arg in constants.REDIRECTION_TOKENS: args[i] = unquoted_arg + + +def find_editor() -> str: + """Find a reasonable editor to use by default for the system that the cmd2 application is running on.""" + editor = os.environ.get('EDITOR') + if not editor: + if sys.platform[:3] == 'win': + editor = 'notepad' + else: + # Favor command-line editors first so we don't leave the terminal to edit + for editor in ['vim', 'vi', 'emacs', 'nano', 'pico', 'gedit', 'kate', 'subl', 'geany', 'atom']: + if which(editor): + break + return editor -- cgit v1.2.1