Changeset 211
- Timestamp:
- 11/05/02 19:06:35 (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/j/src/org/armedbear/j/WrapText.java
r98 r211 3 3 * 4 4 * Copyright (C) 1998-2002 Peter Graves 5 * $Id: WrapText.java,v 1. 3 2002-10-11 14:07:35 piso Exp $5 * $Id: WrapText.java,v 1.4 2002-11-05 19:06:35 piso Exp $ 6 6 * 7 7 * This program is free software; you can redistribute it and/or … … 22 22 package org.armedbear.j; 23 23 24 import gnu.regexp.RE; 25 import gnu.regexp.REMatch; 26 import gnu.regexp.UncheckedRE; 24 27 import javax.swing.undo.CompoundEdit; 25 28 import org.armedbear.j.mail.SendMail; … … 70 73 public void wrapParagraph() 71 74 { 72 Position begin = findStartOfParagraph(dot); 73 Position end = findEndOfParagraph(dot); 75 String prefix = getPrefix(dot.getLine()); 76 final Position begin, end; 77 if (prefix != null) { 78 int prefixLength = prefix.length(); 79 begin = findStartOfQuotedText(dot, prefix, prefixLength); 80 end = findEndOfQuotedText(dot, prefix, prefixLength); 81 } else { 82 begin = findStartOfParagraph(dot); 83 end = findEndOfParagraph(dot); 84 } 74 85 if (begin != null && end != null) { 75 86 Region r = new Region(buffer, begin, end); 76 wrapRegion(r );87 wrapRegion(r, prefix); 77 88 } 78 89 } … … 87 98 } 88 99 } 89 100 90 101 private void wrapCommentInternal() 91 102 { … … 141 152 private void wrapRegion(Region r) 142 153 { 154 wrapRegion(r, null); 155 } 156 157 private void wrapRegion(Region r, String prefix) 158 { 143 159 try { 144 160 r.getBuffer().lockWrite(); … … 149 165 } 150 166 try { 151 processRegion(r, null, true);167 processRegion(r, prefix, true); 152 168 } 153 169 finally { … … 523 539 return new Position(endLine, endLine.length()); 524 540 } 541 542 private static final RE prefixRE = new UncheckedRE("^[> ]+"); 543 544 private static String getPrefix(Line line) 545 { 546 REMatch match = prefixRE.getMatch(line.getText()); 547 return match != null ? match.toString() : null; 548 } 549 550 private static Position findStartOfQuotedText(Position pos, String prefix, 551 int prefixLength) 552 { 553 Line start = pos.getLine(); 554 for (Line line = start.previous(); line != null; line = line.previous()) { 555 if (!prefix.equals(getPrefix(line))) 556 break; 557 if (line.substring(prefixLength).trim().length() == 0) 558 break; // Blank line (except for prefix string). 559 start = line; 560 } 561 return new Position(start, 0); 562 } 563 564 private static Position findEndOfQuotedText(Position pos, String prefix, 565 int prefixLength) 566 { 567 Line end = pos.getLine(); 568 for (Line line = end.next(); line != null; line = line.next()) { 569 if (!prefix.equals(getPrefix(line))) 570 break; 571 if (line.substring(prefixLength).trim().length() == 0) 572 break; // Blank line (except for prefix string). 573 end = line; 574 } 575 if (end.next() != null) 576 return new Position(end.next(), 0); 577 return new Position(end, end.length()); 578 } 525 579 526 580 private void detab(Region r)
Note: See TracChangeset
for help on using the changeset viewer.