comparison src/mark.c @ 24:8ff7fd162d3c v7.0016

updated for version 7.0016
author vimboss
date Mon, 13 Sep 2004 20:26:32 +0000
parents 3fc0f57ecb91
children 410fa1a31baf
comparison
equal deleted inserted replaced
23:3f44e9abe4ec 24:8ff7fd162d3c
738 if (mustfree) 738 if (mustfree)
739 vim_free(name); 739 vim_free(name);
740 } 740 }
741 } 741 }
742 out_flush(); /* show one line at a time */ 742 out_flush(); /* show one line at a time */
743 }
744 }
745
746 /*
747 * ":delmarks[!] [marks]"
748 */
749 void
750 ex_delmarks(eap)
751 exarg_T *eap;
752 {
753 char_u *p;
754 int from, to;
755 int i;
756 int lower;
757 int digit;
758 int n;
759
760 if (*eap->arg == NUL && eap->forceit)
761 /* clear all marks */
762 clrallmarks(curbuf);
763 else if (eap->forceit)
764 EMSG(_(e_invarg));
765 else if (*eap->arg == NUL)
766 EMSG(_(e_argreq));
767 else
768 {
769 /* clear specified marks only */
770 for (p = eap->arg; *p != NUL; ++p)
771 {
772 lower = ASCII_ISLOWER(*p);
773 digit = VIM_ISDIGIT(*p);
774 if (lower || digit || ASCII_ISUPPER(*p))
775 {
776 if (p[1] == '-')
777 {
778 /* clear range of marks */
779 from = *p;
780 to = p[2];
781 if (!(lower ? ASCII_ISLOWER(p[2])
782 : (digit ? VIM_ISDIGIT(p[2])
783 : ASCII_ISUPPER(p[2])))
784 || to < from)
785 {
786 EMSG2(_(e_invarg2), p);
787 return;
788 }
789 p += 2;
790 }
791 else
792 /* clear one lower case mark */
793 from = to = *p;
794
795 for (i = from; i <= to; ++i)
796 {
797 if (lower)
798 curbuf->b_namedm[i - 'a'].lnum = 0;
799 else
800 {
801 if (digit)
802 n = i - '0' + NMARKS;
803 else
804 n = i - 'A';
805 namedfm[n].fmark.mark.lnum = 0;
806 vim_free(namedfm[n].fname);
807 namedfm[n].fname = NULL;
808 }
809 }
810 }
811 else
812 switch (*p)
813 {
814 case '"': curbuf->b_last_cursor.lnum = 0; break;
815 case '^': curbuf->b_last_insert.lnum = 0; break;
816 case '.': curbuf->b_last_change.lnum = 0; break;
817 case '[': curbuf->b_op_start.lnum = 0; break;
818 case ']': curbuf->b_op_end.lnum = 0; break;
819 #ifdef FEAT_VISUAL
820 case '<': curbuf->b_visual_start.lnum = 0; break;
821 case '>': curbuf->b_visual_end.lnum = 0; break;
822 #endif
823 case ' ': break;
824 default: EMSG2(_(e_invarg2), p);
825 return;
826 }
827 }
743 } 828 }
744 } 829 }
745 830
746 #if defined(FEAT_JUMPLIST) || defined(PROTO) 831 #if defined(FEAT_JUMPLIST) || defined(PROTO)
747 /* 832 /*