/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/textmerge.py

  • Committer: Xavier Maillard
  • Date: 2008-04-13 11:48:00 UTC
  • mto: (3364.1.1 bzr.ab.integration)
  • mto: This revision was merged to the branch mainline in revision 3365.
  • Revision ID: xma@gnu.org-20080413114800-b3tp394elic1793b
Replace mail-mode call with compose-mail from GNU Emacs.

This patch is a modified version of the current revno 3323.

It overloads it by:

1. defining a different python class EmacsMail "MUA agnostic".

   To use this option, just put these lines into ~/.bazaar/bazaar.conf
    
[DEFAULT]
mail_client = emacsclient

2. supporting any mail client of GNU Emacs family (mail-mode,
   message-mode, ...) The right tool will be called according to the
   value of the variable ``mail-user-agent``. So Virtually any Emacs
   mail client will work transparently if registered against
   ``mail-user-agent``.

3. adding a wrapper function around MIME attachment. This allow us not
   to have many different functions/classes to attach a file but one.

4. tests have been updated to follow the changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
#
17
 
# Author: Martin Pool <mbp@canonical.com>
 
17
# Author: Martin Pool <mbp@canonical.com> 
18
18
#         Aaron Bentley <aaron.bentley@utoronto.ca>
19
19
 
20
20
 
29
29
    This is an iterable of tuples of lists of lines.
30
30
    Each tuple may have a length of 1 - 3, depending on whether the region it
31
31
    represents is conflicted.
32
 
 
 
32
    
33
33
    Unconflicted region tuples have length 1.
34
34
    Conflicted region tuples have length 2 or 3.  Index 1 is text_a, e.g. THIS.
35
35
    Index 1 is text_b, e.g. OTHER.  Index 2 is optional.  If present, it
60
60
                    yield line
61
61
            else:
62
62
                yield self.a_marker
63
 
                for line in lines[0]:
 
63
                for line in lines[0]: 
64
64
                    yield line
65
65
                yield self.split_marker
66
 
                for line in lines[1]:
 
66
                for line in lines[1]: 
67
67
                    yield line
68
68
                yield self.b_marker
69
69
 
120
120
    regions produce conflicts.
121
121
    """
122
122
 
123
 
    def __init__(self, lines_a, lines_b, a_marker=TextMerge.A_MARKER,
124
 
                 b_marker=TextMerge.B_MARKER,
 
123
    def __init__(self, lines_a, lines_b, a_marker=TextMerge.A_MARKER, 
 
124
                 b_marker=TextMerge.B_MARKER, 
125
125
                 split_marker=TextMerge.SPLIT_MARKER):
126
126
        TextMerge.__init__(self, a_marker, b_marker, split_marker)
127
127
        self.lines_a = lines_a
128
128
        self.lines_b = lines_b
129
129
 
130
130
    def _merge_struct(self):
131
 
        """Return structured merge info.
 
131
        """Return structured merge info.  
132
132
        See TextMerge docstring.
133
133
        """
134
134
        sm = bzrlib.patiencediff.PatienceSequenceMatcher(None, self.lines_a, self.lines_b)
139
139
            yield(self.lines_a[pos_a:ai], self.lines_b[pos_b:bi])
140
140
            # matching lines
141
141
            yield(self.lines_a[ai:ai+l],)
142
 
            pos_a = ai + l
 
142
            pos_a = ai + l 
143
143
            pos_b = bi + l
144
144
        # final non-matching lines
145
145
        yield(self.lines_a[pos_a:-1], self.lines_b[pos_b:-1])