Mercurial > vim
comparison src/if_ruby.c @ 896:354ea37841d1 v7.0.022
updated for version 7.0-022
author | vimboss |
---|---|
date | Tue, 20 Jun 2006 19:10:43 +0000 |
parents | 8cd729851562 |
children | e44efb3af0d5 |
comparison
equal
deleted
inserted
replaced
895:4ec4c53046b5 | 896:354ea37841d1 |
---|---|
641 return Qnil; /* For stop warning */ | 641 return Qnil; /* For stop warning */ |
642 } | 642 } |
643 | 643 |
644 static VALUE set_buffer_line(buf_T *buf, linenr_T n, VALUE str) | 644 static VALUE set_buffer_line(buf_T *buf, linenr_T n, VALUE str) |
645 { | 645 { |
646 buf_T *savebuf = curbuf; | 646 char *line = STR2CSTR(str); |
647 char *line = STR2CSTR(str); | 647 #ifdef FEAT_AUTOCMD |
648 | 648 aco_save_T aco; |
649 if (n > 0 && n <= buf->b_ml.ml_line_count && line != NULL) { | 649 #else |
650 buf_T *save_curbuf = curbuf; | |
651 #endif | |
652 | |
653 if (n > 0 && n <= buf->b_ml.ml_line_count && line != NULL) | |
654 { | |
655 #ifdef FEAT_AUTOCMD | |
656 /* set curwin/curbuf for "buf" and save some things */ | |
657 aucmd_prepbuf(&aco, buf); | |
658 #else | |
650 curbuf = buf; | 659 curbuf = buf; |
660 curwin->w_buffer = buf; | |
661 #endif | |
662 | |
651 if (u_savesub(n) == OK) { | 663 if (u_savesub(n) == OK) { |
652 ml_replace(n, (char_u *)line, TRUE); | 664 ml_replace(n, (char_u *)line, TRUE); |
653 changed(); | 665 changed(); |
654 #ifdef SYNTAX_HL | 666 #ifdef SYNTAX_HL |
655 syn_changed(n); /* recompute syntax hl. for this line */ | 667 syn_changed(n); /* recompute syntax hl. for this line */ |
656 #endif | 668 #endif |
657 } | 669 } |
658 curbuf = savebuf; | 670 |
671 #ifdef FEAT_AUTOCMD | |
672 /* restore curwin/curbuf and a few other things */ | |
673 aucmd_restbuf(&aco); | |
674 /* Careful: autocommands may have made "buf" invalid! */ | |
675 #else | |
676 curwin->w_buffer = save_curbuf; | |
677 curbuf = save_curbuf; | |
678 #endif | |
659 update_curbuf(NOT_VALID); | 679 update_curbuf(NOT_VALID); |
660 } | 680 } |
661 else { | 681 else |
682 { | |
662 rb_raise(rb_eIndexError, "index %d out of buffer", n); | 683 rb_raise(rb_eIndexError, "index %d out of buffer", n); |
663 return Qnil; /* For stop warning */ | 684 return Qnil; /* For stop warning */ |
664 } | 685 } |
665 return str; | 686 return str; |
666 } | 687 } |
674 return str; | 695 return str; |
675 } | 696 } |
676 | 697 |
677 static VALUE buffer_delete(VALUE self, VALUE num) | 698 static VALUE buffer_delete(VALUE self, VALUE num) |
678 { | 699 { |
679 buf_T *buf = get_buf(self); | 700 buf_T *buf = get_buf(self); |
680 buf_T *savebuf = curbuf; | 701 long n = NUM2LONG(num); |
681 long n = NUM2LONG(num); | 702 #ifdef FEAT_AUTOCMD |
682 | 703 aco_save_T aco; |
683 if (n > 0 && n <= buf->b_ml.ml_line_count) { | 704 #else |
705 buf_T *save_curbuf = curbuf; | |
706 #endif | |
707 | |
708 if (n > 0 && n <= buf->b_ml.ml_line_count) | |
709 { | |
710 #ifdef FEAT_AUTOCMD | |
711 /* set curwin/curbuf for "buf" and save some things */ | |
712 aucmd_prepbuf(&aco, buf); | |
713 #else | |
684 curbuf = buf; | 714 curbuf = buf; |
715 curwin->w_buffer = buf; | |
716 #endif | |
717 | |
685 if (u_savedel(n, 1) == OK) { | 718 if (u_savedel(n, 1) == OK) { |
686 ml_delete(n, 0); | 719 ml_delete(n, 0); |
687 | 720 |
688 /* Changes to non-active buffers should properly refresh | 721 /* Changes to non-active buffers should properly refresh |
689 * SegPhault - 01/09/05 */ | 722 * SegPhault - 01/09/05 */ |
690 deleted_lines_mark(n, 1L); | 723 deleted_lines_mark(n, 1L); |
691 | 724 |
692 changed(); | 725 changed(); |
693 } | 726 } |
694 curbuf = savebuf; | 727 |
728 #ifdef FEAT_AUTOCMD | |
729 /* restore curwin/curbuf and a few other things */ | |
730 aucmd_restbuf(&aco); | |
731 /* Careful: autocommands may have made "buf" invalid! */ | |
732 #else | |
733 curwin->w_buffer = save_curbuf; | |
734 curbuf = save_curbuf; | |
735 #endif | |
695 update_curbuf(NOT_VALID); | 736 update_curbuf(NOT_VALID); |
696 } | 737 } |
697 else { | 738 else |
739 { | |
698 rb_raise(rb_eIndexError, "index %d out of buffer", n); | 740 rb_raise(rb_eIndexError, "index %d out of buffer", n); |
699 } | 741 } |
700 return Qnil; | 742 return Qnil; |
701 } | 743 } |
702 | 744 |
703 static VALUE buffer_append(VALUE self, VALUE num, VALUE str) | 745 static VALUE buffer_append(VALUE self, VALUE num, VALUE str) |
704 { | 746 { |
705 buf_T *buf = get_buf(self); | 747 buf_T *buf = get_buf(self); |
706 buf_T *savebuf = curbuf; | 748 char *line = STR2CSTR(str); |
707 char *line = STR2CSTR(str); | 749 long n = NUM2LONG(num); |
708 long n = NUM2LONG(num); | 750 #ifdef FEAT_AUTOCMD |
709 | 751 aco_save_T aco; |
710 if (n >= 0 && n <= buf->b_ml.ml_line_count && line != NULL) { | 752 #else |
753 buf_T *save_curbuf = curbuf; | |
754 #endif | |
755 | |
756 if (n >= 0 && n <= buf->b_ml.ml_line_count && line != NULL) | |
757 { | |
758 #ifdef FEAT_AUTOCMD | |
759 /* set curwin/curbuf for "buf" and save some things */ | |
760 aucmd_prepbuf(&aco, buf); | |
761 #else | |
711 curbuf = buf; | 762 curbuf = buf; |
763 curwin->w_buffer = buf; | |
764 #endif | |
765 | |
712 if (u_inssub(n + 1) == OK) { | 766 if (u_inssub(n + 1) == OK) { |
713 ml_append(n, (char_u *) line, (colnr_T) 0, FALSE); | 767 ml_append(n, (char_u *) line, (colnr_T) 0, FALSE); |
714 | 768 |
715 /* Changes to non-active buffers should properly refresh screen | 769 /* Changes to non-active buffers should properly refresh screen |
716 * SegPhault - 12/20/04 */ | 770 * SegPhault - 12/20/04 */ |
717 appended_lines_mark(n, 1L); | 771 appended_lines_mark(n, 1L); |
718 | 772 |
719 changed(); | 773 changed(); |
720 } | 774 } |
721 curbuf = savebuf; | 775 |
776 #ifdef FEAT_AUTOCMD | |
777 /* restore curwin/curbuf and a few other things */ | |
778 aucmd_restbuf(&aco); | |
779 /* Careful: autocommands may have made "buf" invalid! */ | |
780 #else | |
781 curwin->w_buffer = save_curbuf; | |
782 curbuf = save_curbuf; | |
783 #endif | |
722 update_curbuf(NOT_VALID); | 784 update_curbuf(NOT_VALID); |
723 } | 785 } |
724 else { | 786 else { |
725 rb_raise(rb_eIndexError, "index %d out of buffer", n); | 787 rb_raise(rb_eIndexError, "index %d out of buffer", n); |
726 } | 788 } |