Mercurial > vim
comparison src/spell.c @ 11127:506f5d8b7d8b v8.0.0451
patch 8.0.0451: some macros are in lower case
commit https://github.com/vim/vim/commit/91acfffc1e6c0d8c2abfb186a0e79a5bf19c3f3f
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Mar 12 19:22:36 2017 +0100
patch 8.0.0451: some macros are in lower case
Problem: Some macros are in lower case.
Solution: Make a few more macros upper case. Avoid lower case macros use an
argument twice.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 12 Mar 2017 19:30:05 +0100 |
parents | 778c10516955 |
children | f4ea50924c6d |
comparison
equal
deleted
inserted
replaced
11126:48599a3eae0b | 11127:506f5d8b7d8b |
---|---|
466 mi.mi_fend = ptr; | 466 mi.mi_fend = ptr; |
467 if (spell_iswordp(mi.mi_fend, wp)) | 467 if (spell_iswordp(mi.mi_fend, wp)) |
468 { | 468 { |
469 do | 469 do |
470 { | 470 { |
471 mb_ptr_adv(mi.mi_fend); | 471 MB_PTR_ADV(mi.mi_fend); |
472 } while (*mi.mi_fend != NUL && spell_iswordp(mi.mi_fend, wp)); | 472 } while (*mi.mi_fend != NUL && spell_iswordp(mi.mi_fend, wp)); |
473 | 473 |
474 if (capcol != NULL && *capcol == 0 && wp->w_s->b_cap_prog != NULL) | 474 if (capcol != NULL && *capcol == 0 && wp->w_s->b_cap_prog != NULL) |
475 { | 475 { |
476 /* Check word starting with capital letter. */ | 476 /* Check word starting with capital letter. */ |
492 mi.mi_win = wp; | 492 mi.mi_win = wp; |
493 | 493 |
494 /* case-fold the word with one non-word character, so that we can check | 494 /* case-fold the word with one non-word character, so that we can check |
495 * for the word end. */ | 495 * for the word end. */ |
496 if (*mi.mi_fend != NUL) | 496 if (*mi.mi_fend != NUL) |
497 mb_ptr_adv(mi.mi_fend); | 497 MB_PTR_ADV(mi.mi_fend); |
498 | 498 |
499 (void)spell_casefold(ptr, (int)(mi.mi_fend - ptr), mi.mi_fword, | 499 (void)spell_casefold(ptr, (int)(mi.mi_fend - ptr), mi.mi_fword, |
500 MAXWLEN + 1); | 500 MAXWLEN + 1); |
501 mi.mi_fwordlen = (int)STRLEN(mi.mi_fword); | 501 mi.mi_fwordlen = (int)STRLEN(mi.mi_fword); |
502 | 502 |
580 return 1; | 580 return 1; |
581 } | 581 } |
582 else if (mi.mi_end == ptr) | 582 else if (mi.mi_end == ptr) |
583 /* Always include at least one character. Required for when there | 583 /* Always include at least one character. Required for when there |
584 * is a mixup in "midword". */ | 584 * is a mixup in "midword". */ |
585 mb_ptr_adv(mi.mi_end); | 585 MB_PTR_ADV(mi.mi_end); |
586 else if (mi.mi_result == SP_BAD | 586 else if (mi.mi_result == SP_BAD |
587 && LANGP_ENTRY(wp->w_s->b_langp, 0)->lp_slang->sl_nobreak) | 587 && LANGP_ENTRY(wp->w_s->b_langp, 0)->lp_slang->sl_nobreak) |
588 { | 588 { |
589 char_u *p, *fp; | 589 char_u *p, *fp; |
590 int save_result = mi.mi_result; | 590 int save_result = mi.mi_result; |
596 { | 596 { |
597 p = mi.mi_word; | 597 p = mi.mi_word; |
598 fp = mi.mi_fword; | 598 fp = mi.mi_fword; |
599 for (;;) | 599 for (;;) |
600 { | 600 { |
601 mb_ptr_adv(p); | 601 MB_PTR_ADV(p); |
602 mb_ptr_adv(fp); | 602 MB_PTR_ADV(fp); |
603 if (p >= mi.mi_end) | 603 if (p >= mi.mi_end) |
604 break; | 604 break; |
605 mi.mi_compoff = (int)(fp - mi.mi_fword); | 605 mi.mi_compoff = (int)(fp - mi.mi_fword); |
606 find_word(&mi, FIND_COMPOUND); | 606 find_word(&mi, FIND_COMPOUND); |
607 if (mi.mi_result != SP_BAD) | 607 if (mi.mi_result != SP_BAD) |
825 * when folding case. This can be slow, take a shortcut when the | 825 * when folding case. This can be slow, take a shortcut when the |
826 * case-folded word is equal to the keep-case word. */ | 826 * case-folded word is equal to the keep-case word. */ |
827 p = mip->mi_word; | 827 p = mip->mi_word; |
828 if (STRNCMP(ptr, p, wlen) != 0) | 828 if (STRNCMP(ptr, p, wlen) != 0) |
829 { | 829 { |
830 for (s = ptr; s < ptr + wlen; mb_ptr_adv(s)) | 830 for (s = ptr; s < ptr + wlen; MB_PTR_ADV(s)) |
831 mb_ptr_adv(p); | 831 MB_PTR_ADV(p); |
832 wlen = (int)(p - mip->mi_word); | 832 wlen = (int)(p - mip->mi_word); |
833 } | 833 } |
834 } | 834 } |
835 #endif | 835 #endif |
836 | 836 |
950 if (has_mbyte && STRNCMP(ptr, mip->mi_word, | 950 if (has_mbyte && STRNCMP(ptr, mip->mi_word, |
951 mip->mi_compoff) != 0) | 951 mip->mi_compoff) != 0) |
952 { | 952 { |
953 /* case folding may have changed the length */ | 953 /* case folding may have changed the length */ |
954 p = mip->mi_word; | 954 p = mip->mi_word; |
955 for (s = ptr; s < ptr + mip->mi_compoff; mb_ptr_adv(s)) | 955 for (s = ptr; s < ptr + mip->mi_compoff; MB_PTR_ADV(s)) |
956 mb_ptr_adv(p); | 956 MB_PTR_ADV(p); |
957 } | 957 } |
958 else | 958 else |
959 #endif | 959 #endif |
960 p = mip->mi_word + mip->mi_compoff; | 960 p = mip->mi_word + mip->mi_compoff; |
961 capflags = captype(p, mip->mi_word + wlen); | 961 capflags = captype(p, mip->mi_word + wlen); |
967 { | 967 { |
968 /* When the character before the word is a word | 968 /* When the character before the word is a word |
969 * character we do not accept a Onecap word. We do | 969 * character we do not accept a Onecap word. We do |
970 * accept a no-caps word, even when the dictionary | 970 * accept a no-caps word, even when the dictionary |
971 * word specifies ONECAP. */ | 971 * word specifies ONECAP. */ |
972 mb_ptr_back(mip->mi_word, p); | 972 MB_PTR_BACK(mip->mi_word, p); |
973 if (spell_iswordp_nmw(p, mip->mi_win) | 973 if (spell_iswordp_nmw(p, mip->mi_win) |
974 ? capflags == WF_ONECAP | 974 ? capflags == WF_ONECAP |
975 : (flags & WF_ONECAP) != 0 | 975 : (flags & WF_ONECAP) != 0 |
976 && capflags != WF_ONECAP) | 976 && capflags != WF_ONECAP) |
977 continue; | 977 continue; |
1036 * folding case. This can be slow, take a shortcut when | 1036 * folding case. This can be slow, take a shortcut when |
1037 * the case-folded word is equal to the keep-case word. */ | 1037 * the case-folded word is equal to the keep-case word. */ |
1038 p = mip->mi_fword; | 1038 p = mip->mi_fword; |
1039 if (STRNCMP(ptr, p, wlen) != 0) | 1039 if (STRNCMP(ptr, p, wlen) != 0) |
1040 { | 1040 { |
1041 for (s = ptr; s < ptr + wlen; mb_ptr_adv(s)) | 1041 for (s = ptr; s < ptr + wlen; MB_PTR_ADV(s)) |
1042 mb_ptr_adv(p); | 1042 MB_PTR_ADV(p); |
1043 mip->mi_compoff = (int)(p - mip->mi_fword); | 1043 mip->mi_compoff = (int)(p - mip->mi_fword); |
1044 } | 1044 } |
1045 } | 1045 } |
1046 #endif | 1046 #endif |
1047 #if 0 /* Disabled, see below */ | 1047 #if 0 /* Disabled, see below */ |
1504 char_u *p; | 1504 char_u *p; |
1505 | 1505 |
1506 p = mip->mi_fend; | 1506 p = mip->mi_fend; |
1507 do | 1507 do |
1508 { | 1508 { |
1509 mb_ptr_adv(mip->mi_fend); | 1509 MB_PTR_ADV(mip->mi_fend); |
1510 } while (*mip->mi_fend != NUL && spell_iswordp(mip->mi_fend, mip->mi_win)); | 1510 } while (*mip->mi_fend != NUL && spell_iswordp(mip->mi_fend, mip->mi_win)); |
1511 | 1511 |
1512 /* Include the non-word character so that we can check for the word end. */ | 1512 /* Include the non-word character so that we can check for the word end. */ |
1513 if (*mip->mi_fend != NUL) | 1513 if (*mip->mi_fend != NUL) |
1514 mb_ptr_adv(mip->mi_fend); | 1514 MB_PTR_ADV(mip->mi_fend); |
1515 | 1515 |
1516 (void)spell_casefold(p, (int)(mip->mi_fend - p), | 1516 (void)spell_casefold(p, (int)(mip->mi_fend - p), |
1517 mip->mi_fword + mip->mi_fwordlen, | 1517 mip->mi_fword + mip->mi_fwordlen, |
1518 MAXWLEN - mip->mi_fwordlen); | 1518 MAXWLEN - mip->mi_fwordlen); |
1519 flen = (int)STRLEN(mip->mi_fword + mip->mi_fwordlen); | 1519 flen = (int)STRLEN(mip->mi_fword + mip->mi_fwordlen); |
2758 int firstcap; | 2758 int firstcap; |
2759 int allcap; | 2759 int allcap; |
2760 int past_second = FALSE; /* past second word char */ | 2760 int past_second = FALSE; /* past second word char */ |
2761 | 2761 |
2762 /* find first letter */ | 2762 /* find first letter */ |
2763 for (p = word; !spell_iswordp_nmw(p, curwin); mb_ptr_adv(p)) | 2763 for (p = word; !spell_iswordp_nmw(p, curwin); MB_PTR_ADV(p)) |
2764 if (end == NULL ? *p == NUL : p >= end) | 2764 if (end == NULL ? *p == NUL : p >= end) |
2765 return 0; /* only non-word characters, illegal word */ | 2765 return 0; /* only non-word characters, illegal word */ |
2766 #ifdef FEAT_MBYTE | 2766 #ifdef FEAT_MBYTE |
2767 if (has_mbyte) | 2767 if (has_mbyte) |
2768 c = mb_ptr2char_adv(&p); | 2768 c = mb_ptr2char_adv(&p); |
2773 | 2773 |
2774 /* | 2774 /* |
2775 * Need to check all letters to find a word with mixed upper/lower. | 2775 * Need to check all letters to find a word with mixed upper/lower. |
2776 * But a word with an upper char only at start is a ONECAP. | 2776 * But a word with an upper char only at start is a ONECAP. |
2777 */ | 2777 */ |
2778 for ( ; end == NULL ? *p != NUL : p < end; mb_ptr_adv(p)) | 2778 for ( ; end == NULL ? *p != NUL : p < end; MB_PTR_ADV(p)) |
2779 if (spell_iswordp_nmw(p, curwin)) | 2779 if (spell_iswordp_nmw(p, curwin)) |
2780 { | 2780 { |
2781 c = PTR2CHAR(p); | 2781 c = PTR2CHAR(p); |
2782 if (!SPELL_ISUPPER(c)) | 2782 if (!SPELL_ISUPPER(c)) |
2783 { | 2783 { |
2816 if (flags & WF_KEEPCAP) | 2816 if (flags & WF_KEEPCAP) |
2817 { | 2817 { |
2818 /* Count the number of UPPER and lower case letters. */ | 2818 /* Count the number of UPPER and lower case letters. */ |
2819 l = u = 0; | 2819 l = u = 0; |
2820 first = FALSE; | 2820 first = FALSE; |
2821 for (p = word; p < end; mb_ptr_adv(p)) | 2821 for (p = word; p < end; MB_PTR_ADV(p)) |
2822 { | 2822 { |
2823 c = PTR2CHAR(p); | 2823 c = PTR2CHAR(p); |
2824 if (SPELL_ISUPPER(c)) | 2824 if (SPELL_ISUPPER(c)) |
2825 { | 2825 { |
2826 ++u; | 2826 ++u; |
3383 curwin->w_cursor = prev_cursor; | 3383 curwin->w_cursor = prev_cursor; |
3384 line = ml_get_curline(); | 3384 line = ml_get_curline(); |
3385 p = line + curwin->w_cursor.col; | 3385 p = line + curwin->w_cursor.col; |
3386 /* Backup to before start of word. */ | 3386 /* Backup to before start of word. */ |
3387 while (p > line && spell_iswordp_nmw(p, curwin)) | 3387 while (p > line && spell_iswordp_nmw(p, curwin)) |
3388 mb_ptr_back(line, p); | 3388 MB_PTR_BACK(line, p); |
3389 /* Forward to start of word. */ | 3389 /* Forward to start of word. */ |
3390 while (*p != NUL && !spell_iswordp_nmw(p, curwin)) | 3390 while (*p != NUL && !spell_iswordp_nmw(p, curwin)) |
3391 mb_ptr_adv(p); | 3391 MB_PTR_ADV(p); |
3392 | 3392 |
3393 if (!spell_iswordp_nmw(p, curwin)) /* No word found. */ | 3393 if (!spell_iswordp_nmw(p, curwin)) /* No word found. */ |
3394 { | 3394 { |
3395 beep_flush(); | 3395 beep_flush(); |
3396 return; | 3396 return; |
3622 regmatch.regprog = curwin->w_s->b_cap_prog; | 3622 regmatch.regprog = curwin->w_s->b_cap_prog; |
3623 regmatch.rm_ic = FALSE; | 3623 regmatch.rm_ic = FALSE; |
3624 p = line + endcol; | 3624 p = line + endcol; |
3625 for (;;) | 3625 for (;;) |
3626 { | 3626 { |
3627 mb_ptr_back(line, p); | 3627 MB_PTR_BACK(line, p); |
3628 if (p == line || spell_iswordp_nmw(p, curwin)) | 3628 if (p == line || spell_iswordp_nmw(p, curwin)) |
3629 break; | 3629 break; |
3630 if (vim_regexec(®match, p, 0) | 3630 if (vim_regexec(®match, p, 0) |
3631 && regmatch.endp[0] == line + endcol) | 3631 && regmatch.endp[0] == line + endcol) |
3632 { | 3632 { |
4642 compound_ok = FALSE; | 4642 compound_ok = FALSE; |
4643 } | 4643 } |
4644 | 4644 |
4645 /* Get pointer to last char of previous word. */ | 4645 /* Get pointer to last char of previous word. */ |
4646 p = preword + sp->ts_prewordlen; | 4646 p = preword + sp->ts_prewordlen; |
4647 mb_ptr_back(preword, p); | 4647 MB_PTR_BACK(preword, p); |
4648 } | 4648 } |
4649 } | 4649 } |
4650 | 4650 |
4651 /* | 4651 /* |
4652 * Form the word with proper case in preword. | 4652 * Form the word with proper case in preword. |
4744 else if (sp->ts_fidx > 0) | 4744 else if (sp->ts_fidx > 0) |
4745 { | 4745 { |
4746 /* Give a penalty when changing non-word char to word | 4746 /* Give a penalty when changing non-word char to word |
4747 * char, e.g., "thes," -> "these". */ | 4747 * char, e.g., "thes," -> "these". */ |
4748 p = fword + sp->ts_fidx; | 4748 p = fword + sp->ts_fidx; |
4749 mb_ptr_back(fword, p); | 4749 MB_PTR_BACK(fword, p); |
4750 if (!spell_iswordp(p, curwin)) | 4750 if (!spell_iswordp(p, curwin)) |
4751 { | 4751 { |
4752 p = preword + STRLEN(preword); | 4752 p = preword + STRLEN(preword); |
4753 mb_ptr_back(preword, p); | 4753 MB_PTR_BACK(preword, p); |
4754 if (spell_iswordp(p, curwin)) | 4754 if (spell_iswordp(p, curwin)) |
4755 newscore += SCORE_NONWORD; | 4755 newscore += SCORE_NONWORD; |
4756 } | 4756 } |
4757 | 4757 |
4758 /* Give a bonus to words seen before. */ | 4758 /* Give a bonus to words seen before. */ |
5155 /* If the previous character was the same, | 5155 /* If the previous character was the same, |
5156 * thus doubling a character, give a bonus | 5156 * thus doubling a character, give a bonus |
5157 * to the score. Also for the soundfold | 5157 * to the score. Also for the soundfold |
5158 * tree (might seem illogical but does | 5158 * tree (might seem illogical but does |
5159 * give better scores). */ | 5159 * give better scores). */ |
5160 mb_ptr_back(tword, p); | 5160 MB_PTR_BACK(tword, p); |
5161 if (c == mb_ptr2char(p)) | 5161 if (c == mb_ptr2char(p)) |
5162 sp->ts_score -= SCORE_INS | 5162 sp->ts_score -= SCORE_INS |
5163 - SCORE_INSDUP; | 5163 - SCORE_INSDUP; |
5164 } | 5164 } |
5165 } | 5165 } |
5865 nofold_len(char_u *fword, int flen, char_u *word) | 5865 nofold_len(char_u *fword, int flen, char_u *word) |
5866 { | 5866 { |
5867 char_u *p; | 5867 char_u *p; |
5868 int i = 0; | 5868 int i = 0; |
5869 | 5869 |
5870 for (p = fword; p < fword + flen; mb_ptr_adv(p)) | 5870 for (p = fword; p < fword + flen; MB_PTR_ADV(p)) |
5871 ++i; | 5871 ++i; |
5872 for (p = word; i > 0; mb_ptr_adv(p)) | 5872 for (p = word; i > 0; MB_PTR_ADV(p)) |
5873 --i; | 5873 --i; |
5874 return (int)(p - word); | 5874 return (int)(p - word); |
5875 } | 5875 } |
5876 #endif | 5876 #endif |
5877 | 5877 |
6743 { | 6743 { |
6744 goodlen = (int)(pgood - goodword); | 6744 goodlen = (int)(pgood - goodword); |
6745 badlen = (int)(pbad - su->su_badptr); | 6745 badlen = (int)(pbad - su->su_badptr); |
6746 if (goodlen <= 0 || badlen <= 0) | 6746 if (goodlen <= 0 || badlen <= 0) |
6747 break; | 6747 break; |
6748 mb_ptr_back(goodword, pgood); | 6748 MB_PTR_BACK(goodword, pgood); |
6749 mb_ptr_back(su->su_badptr, pbad); | 6749 MB_PTR_BACK(su->su_badptr, pbad); |
6750 #ifdef FEAT_MBYTE | 6750 #ifdef FEAT_MBYTE |
6751 if (has_mbyte) | 6751 if (has_mbyte) |
6752 { | 6752 { |
6753 if (mb_ptr2char(pgood) != mb_ptr2char(pbad)) | 6753 if (mb_ptr2char(pgood) != mb_ptr2char(pbad)) |
6754 break; | 6754 break; |
8974 spell_to_word_end(char_u *start, win_T *win) | 8974 spell_to_word_end(char_u *start, win_T *win) |
8975 { | 8975 { |
8976 char_u *p = start; | 8976 char_u *p = start; |
8977 | 8977 |
8978 while (*p != NUL && spell_iswordp(p, win)) | 8978 while (*p != NUL && spell_iswordp(p, win)) |
8979 mb_ptr_adv(p); | 8979 MB_PTR_ADV(p); |
8980 return p; | 8980 return p; |
8981 } | 8981 } |
8982 | 8982 |
8983 #if defined(FEAT_INS_EXPAND) || defined(PROTO) | 8983 #if defined(FEAT_INS_EXPAND) || defined(PROTO) |
8984 /* | 8984 /* |
9000 | 9000 |
9001 /* Find a word character before "startcol". */ | 9001 /* Find a word character before "startcol". */ |
9002 line = ml_get_curline(); | 9002 line = ml_get_curline(); |
9003 for (p = line + startcol; p > line; ) | 9003 for (p = line + startcol; p > line; ) |
9004 { | 9004 { |
9005 mb_ptr_back(line, p); | 9005 MB_PTR_BACK(line, p); |
9006 if (spell_iswordp_nmw(p, curwin)) | 9006 if (spell_iswordp_nmw(p, curwin)) |
9007 break; | 9007 break; |
9008 } | 9008 } |
9009 | 9009 |
9010 /* Go back to start of the word. */ | 9010 /* Go back to start of the word. */ |
9011 while (p > line) | 9011 while (p > line) |
9012 { | 9012 { |
9013 col = (int)(p - line); | 9013 col = (int)(p - line); |
9014 mb_ptr_back(line, p); | 9014 MB_PTR_BACK(line, p); |
9015 if (!spell_iswordp(p, curwin)) | 9015 if (!spell_iswordp(p, curwin)) |
9016 break; | 9016 break; |
9017 col = 0; | 9017 col = 0; |
9018 } | 9018 } |
9019 | 9019 |