- Timestamp:
- Jul 11, 2009, 1:14:35 PM (16 years ago)
- Branches:
- master, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- a60edf2
- Parents:
- 16cfd12a
- git-author:
- Nelson Elhage <nelhage@mit.edu> (07/07/09 22:49:07)
- git-committer:
- Nelson Elhage <nelhage@mit.edu> (07/11/09 13:14:35)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
editwin.c
r16cfd12a r7f0c26f 90 90 } 91 91 92 static inline void oe_set_mark(owl_editwin *e, int mark) 93 { 94 e->mark = mark; 95 } 96 97 void owl_editwin_set_mark(owl_editwin *e) 98 { 99 oe_set_mark(e, e->index); 100 /* owl_function_makemsg("Mark set."); */ 101 } 102 92 103 /* initialize the editwin e. 93 104 * 'win' is an already initialzed curses window that will be used by editwin … … 101 112 e->allocated=INCR; 102 113 oe_set_index(e, 0); 103 e->mark = 0;114 oe_set_mark(e, -1); 104 115 e->goal_column = -1; 105 116 e->cursorx = -1; … … 299 310 { 300 311 x->index = e->index; 312 x->mark = e->mark; 301 313 x->goal_column = e->goal_column; 302 314 x->lock = e->lock; … … 331 343 oe_set_index(e, x->index); 332 344 e->goal_column = x->goal_column; 345 e->mark = x->mark; 333 346 e->lock = x->lock; 334 347 … … 497 510 } 498 511 512 static inline void oe_fixup(int *target, int start, int end, int change) { 513 if (*target > start) { 514 if (*target < end) 515 *target = end; 516 else 517 *target += change; 518 } 519 } 520 499 521 /* replace count characters at the point with s, returning the change in size */ 500 522 static int owl_editwin_replace(owl_editwin *e, int replace, char *s) … … 537 559 e->index += strlen(s); 538 560 561 /* fix up the mark */ 562 if (e->mark != -1) 563 oe_fixup(&e->mark, start, end, change); 539 564 /* fix up any saved points after the replaced area */ 540 for (x = e->excursions; x != NULL; x = x->next) 541 if (x->index > start) { 542 if (x->index < end) 543 x->index = end; 544 else 545 x->index += change; 546 } 565 for (x = e->excursions; x != NULL; x = x->next) { 566 oe_fixup(&x->index, start, end, change); 567 if (x->mark != -1) 568 oe_fixup(&x->mark, start, end, change); 569 } 547 570 548 571 return change; … … 644 667 { 645 668 return g_utf8_get_char(e->buff + e->index); 669 } 670 671 void owl_editwin_exchange_point_and_mark(owl_editwin *e) { 672 int tmp; 673 674 if (e->mark != -1) { 675 tmp = e->mark; 676 owl_editwin_set_mark(e); 677 oe_set_index(e, tmp); 678 } 646 679 } 647 680
Note: See TracChangeset
for help on using the changeset viewer.