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 }