~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/msgeditor.py

MergeĀ fromĀ jam-storage.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
 
22
22
import os
23
23
from subprocess import call
 
24
 
 
25
import bzrlib.config as config
24
26
from bzrlib.errors import BzrError
25
27
 
26
28
def _get_editor():
27
29
    """Return a sequence of possible editor binaries for the current platform"""
28
 
    from bzrlib.osutils import _read_config_value
29
 
    
30
 
    e = _read_config_value("editor")
 
30
    try:
 
31
        yield os.environ["BZR_EDITOR"]
 
32
    except KeyError:
 
33
        pass
 
34
 
 
35
    e = config.GlobalConfig().get_editor()
31
36
    if e is not None:
32
37
        yield e
33
38
        
34
39
    try:
35
40
        yield os.environ["EDITOR"]
36
41
    except KeyError:
37
 
        if os.name == "nt":
38
 
            yield "notepad.exe"
39
 
        elif os.name == "posix":
40
 
            yield "/usr/bin/vi"
 
42
        pass
 
43
 
 
44
    if os.name == "nt":
 
45
        yield "notepad.exe"
 
46
    elif os.name == "posix":
 
47
        yield "/usr/bin/vi"
41
48
 
42
49
 
43
50
def _run_editor(filename):
72
79
        ignoreline = "-- This line and the following will be ignored --"
73
80
        
74
81
    try:
75
 
        tmp_fileno, msgfilename = tempfile.mkstemp()
 
82
        tmp_fileno, msgfilename = tempfile.mkstemp(prefix='bzr_log.', dir=u'.')
76
83
        msgfile = os.close(tmp_fileno)
77
84
        if infotext is not None and infotext != "":
78
85
            hasinfo = True
107
114
            msg.append(line)
108
115
            
109
116
        if len(msg) == 0:
110
 
            return None
 
117
            return ""
111
118
        # delete empty lines at the end
112
119
        del msg[lastline:]
113
120
        # add a newline at the end, if needed
120
127
        try: os.unlink(msgfilename)
121
128
        except IOError: pass
122
129
 
 
130
 
 
131
def make_commit_message_template(working_tree, specific_files):
 
132
    """Prepare a template file for a commit into a branch.
 
133
 
 
134
    Returns a unicode string containing the template.
 
135
    """
 
136
    # TODO: Should probably be given the WorkingTree not the branch
 
137
    #
 
138
    # TODO: make provision for this to be overridden or modified by a hook
 
139
    #
 
140
    # TODO: Rather than running the status command, should prepare a draft of
 
141
    # the revision to be committed, then pause and ask the user to
 
142
    # confirm/write a message.
 
143
    from StringIO import StringIO       # must be unicode-safe
 
144
    from bzrlib.status import show_status
 
145
    status_tmp = StringIO()
 
146
    show_status(working_tree.branch, specific_files=specific_files, to_file=status_tmp)
 
147
    return status_tmp.getvalue()