aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--becommands/comment.py2
-rw-r--r--libbe/utility.py32
2 files changed, 28 insertions, 6 deletions
diff --git a/becommands/comment.py b/becommands/comment.py
index 4f0bf3b..5f7128d 100644
--- a/becommands/comment.py
+++ b/becommands/comment.py
@@ -49,7 +49,7 @@ def execute(args):
bug, parent_comment = cmdutil.get_bug_and_comment(args[0])
if len(args) == 1:
try:
- body = utility.editor_string()
+ body = utility.editor_string("Please enter your comment above")
except utility.CantFindEditor:
raise cmdutil.UserError(
"No comment supplied, and EDITOR not specified.")
diff --git a/libbe/utility.py b/libbe/utility.py
index e62f2cd..a8c3e24 100644
--- a/libbe/utility.py
+++ b/libbe/utility.py
@@ -98,7 +98,7 @@ class CantFindEditor(Exception):
def __init__(self):
Exception.__init__(self, "Can't find editor to get string from")
-def editor_string():
+def editor_string(comment=None):
"""Invokes the editor, and returns the user_produced text as a string
@@ -117,15 +117,37 @@ def editor_string():
raise CantFindEditor()
fhandle, fname = tempfile.mkstemp()
try:
+ if comment is not None:
+ os.write(fhandle, '\n'+comment_string(comment))
os.close(fhandle)
oldmtime = os.path.getmtime(fname)
os.system("%s %s" % (editor, fname))
- if oldmtime == os.path.getmtime(fname) and\
- file(fname, "rb").read() == "":
+ output = trimmed_string(file(fname, "rb").read())
+ if output.rstrip('\n') == "":
output = None
- else:
- output = file(fname, "rb").read()
finally:
os.unlink(fname)
return output
+
+def comment_string(comment):
+ """
+ >>> comment_string('hello')
+ '== Anything below this line will be ignored ==\\nhello'
+ """
+ return '== Anything below this line will be ignored ==\n' + comment
+
+
+def trimmed_string(instring):
+ """
+ >>> trimmed_string("hello\\n== Anything below this line will be ignored")
+ 'hello\\n'
+ >>> trimmed_string("hi!\\n" + comment_string('Booga'))
+ 'hi!\\n'
+ """
+ out = []
+ for line in instring.splitlines(True):
+ if line.startswith('== Anything below this line will be ignored'):
+ break
+ out.append(line)
+ return ''.join(out)