diff options
Diffstat (limited to 'patches/source/vim')
408 files changed, 82260 insertions, 0 deletions
diff --git a/patches/source/vim/doinst.sh b/patches/source/vim/doinst.sh new file mode 100644 index 00000000..f1ccd5ca --- /dev/null +++ b/patches/source/vim/doinst.sh @@ -0,0 +1,5 @@ + +# If there's no vi link, take over: +if [ ! -r usr/bin/vi ]; then + ( cd usr/bin ; ln -sf vim vi ) +fi diff --git a/patches/source/vim/gvim.desktop b/patches/source/vim/gvim.desktop new file mode 100644 index 00000000..520c72e6 --- /dev/null +++ b/patches/source/vim/gvim.desktop @@ -0,0 +1,120 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=Vi IMproved +Name[af]=Vi Verbeterde +Name[ar]=في.أي المحسن +Name[bn]=ভি-আই উন্নত +Name[br]=Vi gwellaet +Name[ca]=Vi millorat +Name[cy]=VIM (Vi wedi'i wella) +Name[da]=Vi IMproved (Vi forbedret) +Name[eo]=VIM +Name[fa]=Vi پیشرفت کرده VIM +Name[hi]=वीआई इम्प्रूव्ड +Name[hu]=VIM +Name[is]=Vi endurbættur (vim) +Name[it]=Vi iMproved +Name[ko]=더 나은 Vi +Name[mn]=Сайжирсан Vi +Name[nso]=KAonafaditswe ka Vi +Name[oc]=VI aMillorat +Name[pl]=Poprawiony VI (vim) +Name[pt_BR]=Vi melhorado +Name[ru]=Улучшенный vi +Name[rw]=Vi Ivuguruwe +Name[sl]=Izboljšani vi (vim) +Name[sv]=Förbättrad Vi +Name[ta]=Vi மேம்படுத்தப்பட்ட +Name[tg]=Vi пешрафт кардаи VIM +Name[th]=VI IMprove +Name[uz]=Яхшиланган Vi +Name[ven]=Vi Khwinifhadzhwa +Name[vi]=Vi Cải tiến +Name[wa]=VIM +Name[zh_CN]=改进的 VI (VIM) +Name[zh_TW]=VIM +Name[zu]=I-Vi yenziwe ngcono +GenericName=Text Editor +GenericName[af]=Teks Redigeerder +GenericName[ar]=محرر نصوص +GenericName[az]=Mətn Editoru +GenericName[be]=Тэкставы рэдактар +GenericName[bg]=Текстов редактор +GenericName[bn]=টেক্সট সম্পাদক +GenericName[br]=Aozer skrid +GenericName[bs]=Tekst editor +GenericName[ca]=Editor de text +GenericName[cs]=Textový editor +GenericName[cy]=Golygydd Testun +GenericName[da]= Teksteditor +GenericName[de]=Texteditor +GenericName[el]=Επεξεργαστής κειμένου +GenericName[eo]=Tekstredaktilo +GenericName[es]=Editor de texto +GenericName[et]=Tekstiredaktor +GenericName[eu]=Testu editorea +GenericName[fa]=ویرایشگر متن +GenericName[fi]=Tekstieditori +GenericName[fo]=Tekstritil +GenericName[fr]=Éditeur de texte +GenericName[fy]=Tekst Bewurker +GenericName[ga]=Eagarthóir Téacs +GenericName[gl]=Editor de Textos +GenericName[he]=עורך טקסט +GenericName[hi]=पाठ संपादक +GenericName[hr]=Uređivač teksta +GenericName[hsb]=Wobdźěłar tekstow +GenericName[hu]=Szövegszerkesztő +GenericName[is]=Textaritill +GenericName[it]=Editor di testi +GenericName[ja]=テキストエディタ +GenericName[km]=កម្មវិធីវាយអត្ថបទ +GenericName[ko]=글월 편집기 +GenericName[lo]=ເຄື່ອງມືແກ້ໄຂຂໍ້ຄວາມ +GenericName[lt]=Teksto rengyklė +GenericName[lv]=Teksta Redaktors +GenericName[mk]=Уредувач на текст +GenericName[mn]=Текст боловсруулагч +GenericName[ms]=Penyunting Teks +GenericName[mt]=Editur tat-test +GenericName[nb]=Skriveprogram +GenericName[nds]=Texteditor +GenericName[nl]=Teksteditor +GenericName[nn]=Skriveprogram +GenericName[nso]=Mofetosi wa Sengwalwana +GenericName[pa]=ਪਾਠ ਸੰਪਾਦਕ +GenericName[pl]=Edytor tekstu +GenericName[pt]=Editor de Texto +GenericName[pt_BR]=Editor de Texto +GenericName[ro]=Editor de text +GenericName[ru]=Текстовый редактор +GenericName[rw]=Muhinduzi Umwandiko +GenericName[se]=Čállinprográmma +GenericName[sk]=Textový editor +GenericName[sl]=Urejevalnik besedil +GenericName[sr]=Уређивач текста +GenericName[sr@Latn]=Uređivač teksta +GenericName[ss]=Sihleli sembhalo +GenericName[sv]=Texteditor +GenericName[ta]=உரை தொகுப்பாளர் +GenericName[tg]=Муҳаррири матн +GenericName[th]=โปรแกรมแก้ไขข้อความ +GenericName[tr]=Metin Düzenleyici +GenericName[tt]=Mäten Tözätkeçe +GenericName[uk]=Редактор текстів +GenericName[uz]=Матн таҳрирчи +GenericName[ven]=Musengulusi wa Manwalwa +GenericName[vi]=Trình soạn văn bản +GenericName[wa]=Aspougneu di tecse +GenericName[xh]=Umhleli Wombhalo +GenericName[zh_CN]=文本编辑器 +GenericName[zh_TW]=文字編輯器 +GenericName[zu]=Umlungisi wombhalo +MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++; +Exec=gvim -f %f +Icon=gvim.png +Type=Application +Terminal=false +X-KDE-StartupNotify=true +X-KDE-AuthorizeAction=shell_access +Categories=TextEditor; diff --git a/patches/source/vim/gvim.png b/patches/source/vim/gvim.png Binary files differnew file mode 100644 index 00000000..2bdc8bd8 --- /dev/null +++ b/patches/source/vim/gvim.png diff --git a/patches/source/vim/patches/7.4.001 b/patches/source/vim/patches/7.4.001 new file mode 100644 index 00000000..5788972a --- /dev/null +++ b/patches/source/vim/patches/7.4.001 @@ -0,0 +1,489 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.001 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.001 +Problem: Character classes such as [a-z] to not react to 'ignorecase'. + Breaks man page highlighting. (Mario Grgic) +Solution: Add separate items for classes that react to 'ignorecase'. Clean + up logic handling character classes. Add more tests. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + + +*** ../vim-7.4.000/src/regexp_nfa.c 2013-08-01 18:27:51.000000000 +0200 +--- src/regexp_nfa.c 2013-08-14 11:49:50.000000000 +0200 +*************** +*** 29,34 **** +--- 29,37 ---- + # define NFA_REGEXP_DEBUG_LOG "nfa_regexp_debug.log" + #endif + ++ /* Added to NFA_ANY - NFA_NUPPER_IC to include a NL. */ ++ #define NFA_ADD_NL 31 ++ + enum + { + NFA_SPLIT = -1024, +*************** +*** 183,188 **** +--- 186,198 ---- + NFA_NLOWER, /* Match non-lowercase char */ + NFA_UPPER, /* Match uppercase char */ + NFA_NUPPER, /* Match non-uppercase char */ ++ NFA_LOWER_IC, /* Match [a-z] */ ++ NFA_NLOWER_IC, /* Match [^a-z] */ ++ NFA_UPPER_IC, /* Match [A-Z] */ ++ NFA_NUPPER_IC, /* Match [^A-Z] */ ++ ++ NFA_FIRST_NL = NFA_ANY + NFA_ADD_NL, ++ NFA_LAST_NL = NFA_NUPPER_IC + NFA_ADD_NL, + + NFA_CURSOR, /* Match cursor pos */ + NFA_LNUM, /* Match line number */ +*************** +*** 199,207 **** + NFA_MARK_LT, /* Match < mark */ + NFA_VISUAL, /* Match Visual area */ + +- NFA_FIRST_NL = NFA_ANY + ADD_NL, +- NFA_LAST_NL = NFA_NUPPER + ADD_NL, +- + /* Character classes [:alnum:] etc */ + NFA_CLASS_ALNUM, + NFA_CLASS_ALPHA, +--- 209,214 ---- +*************** +*** 578,583 **** +--- 585,592 ---- + * On failure, return 0 (=FAIL) + * Start points to the first char of the range, while end should point + * to the closing brace. ++ * Keep in mind that 'ignorecase' applies at execution time, thus [a-z] may ++ * need to be interpreted as [a-zA-Z]. + */ + static int + nfa_recognize_char_class(start, end, extra_newl) +*************** +*** 681,687 **** + return FAIL; + + if (newl == TRUE) +! extra_newl = ADD_NL; + + switch (config) + { +--- 690,696 ---- + return FAIL; + + if (newl == TRUE) +! extra_newl = NFA_ADD_NL; + + switch (config) + { +*************** +*** 710,722 **** + case CLASS_not | CLASS_az | CLASS_AZ: + return extra_newl + NFA_NALPHA; + case CLASS_az: +! return extra_newl + NFA_LOWER; + case CLASS_not | CLASS_az: +! return extra_newl + NFA_NLOWER; + case CLASS_AZ: +! return extra_newl + NFA_UPPER; + case CLASS_not | CLASS_AZ: +! return extra_newl + NFA_NUPPER; + } + return FAIL; + } +--- 719,731 ---- + case CLASS_not | CLASS_az | CLASS_AZ: + return extra_newl + NFA_NALPHA; + case CLASS_az: +! return extra_newl + NFA_LOWER_IC; + case CLASS_not | CLASS_az: +! return extra_newl + NFA_NLOWER_IC; + case CLASS_AZ: +! return extra_newl + NFA_UPPER_IC; + case CLASS_not | CLASS_AZ: +! return extra_newl + NFA_NUPPER_IC; + } + return FAIL; + } +*************** +*** 914,920 **** + break; + } + +! extra = ADD_NL; + + /* "\_[" is collection plus newline */ + if (c == '[') +--- 923,929 ---- + break; + } + +! extra = NFA_ADD_NL; + + /* "\_[" is collection plus newline */ + if (c == '[') +*************** +*** 970,976 **** + } + #endif + EMIT(nfa_classcodes[p - classchars]); +! if (extra == ADD_NL) + { + EMIT(NFA_NEWL); + EMIT(NFA_OR); +--- 979,985 ---- + } + #endif + EMIT(nfa_classcodes[p - classchars]); +! if (extra == NFA_ADD_NL) + { + EMIT(NFA_NEWL); + EMIT(NFA_OR); +*************** +*** 1240,1260 **** + { + /* + * Try to reverse engineer character classes. For example, +! * recognize that [0-9] stands for \d and [A-Za-z_] with \h, + * and perform the necessary substitutions in the NFA. + */ + result = nfa_recognize_char_class(regparse, endp, +! extra == ADD_NL); + if (result != FAIL) + { +! if (result >= NFA_DIGIT && result <= NFA_NUPPER) +! EMIT(result); +! else /* must be char class + newline */ + { +! EMIT(result - ADD_NL); + EMIT(NFA_NEWL); + EMIT(NFA_OR); + } + regparse = endp; + mb_ptr_adv(regparse); + return OK; +--- 1249,1269 ---- + { + /* + * Try to reverse engineer character classes. For example, +! * recognize that [0-9] stands for \d and [A-Za-z_] for \h, + * and perform the necessary substitutions in the NFA. + */ + result = nfa_recognize_char_class(regparse, endp, +! extra == NFA_ADD_NL); + if (result != FAIL) + { +! if (result >= NFA_FIRST_NL && result <= NFA_LAST_NL) + { +! EMIT(result - NFA_ADD_NL); + EMIT(NFA_NEWL); + EMIT(NFA_OR); + } ++ else ++ EMIT(result); + regparse = endp; + mb_ptr_adv(regparse); + return OK; +*************** +*** 1504,1510 **** + * collection, add an OR below. But not for negated + * range. */ + if (!negated) +! extra = ADD_NL; + } + else + { +--- 1513,1519 ---- + * collection, add an OR below. But not for negated + * range. */ + if (!negated) +! extra = NFA_ADD_NL; + } + else + { +*************** +*** 1537,1543 **** + EMIT(NFA_END_COLL); + + /* \_[] also matches \n but it's not negated */ +! if (extra == ADD_NL) + { + EMIT(reg_string ? NL : NFA_NEWL); + EMIT(NFA_OR); +--- 1546,1552 ---- + EMIT(NFA_END_COLL); + + /* \_[] also matches \n but it's not negated */ +! if (extra == NFA_ADD_NL) + { + EMIT(reg_string ? NL : NFA_NEWL); + EMIT(NFA_OR); +*************** +*** 2011,2017 **** + if (c >= NFA_FIRST_NL && c <= NFA_LAST_NL) + { + addnl = TRUE; +! c -= ADD_NL; + } + + STRCPY(code, ""); +--- 2020,2026 ---- + if (c >= NFA_FIRST_NL && c <= NFA_LAST_NL) + { + addnl = TRUE; +! c -= NFA_ADD_NL; + } + + STRCPY(code, ""); +*************** +*** 2217,2222 **** +--- 2226,2235 ---- + case NFA_NLOWER:STRCPY(code, "NFA_NLOWER"); break; + case NFA_UPPER: STRCPY(code, "NFA_UPPER"); break; + case NFA_NUPPER:STRCPY(code, "NFA_NUPPER"); break; ++ case NFA_LOWER_IC: STRCPY(code, "NFA_LOWER_IC"); break; ++ case NFA_NLOWER_IC: STRCPY(code, "NFA_NLOWER_IC"); break; ++ case NFA_UPPER_IC: STRCPY(code, "NFA_UPPER_IC"); break; ++ case NFA_NUPPER_IC: STRCPY(code, "NFA_NUPPER_IC"); break; + + default: + STRCPY(code, "CHAR(x)"); +*************** +*** 2687,2692 **** +--- 2700,2709 ---- + case NFA_NLOWER: + case NFA_UPPER: + case NFA_NUPPER: ++ case NFA_LOWER_IC: ++ case NFA_NLOWER_IC: ++ case NFA_UPPER_IC: ++ case NFA_NUPPER_IC: + /* possibly non-ascii */ + #ifdef FEAT_MBYTE + if (has_mbyte) +*************** +*** 3841,3846 **** +--- 3858,3867 ---- + case NFA_NLOWER: + case NFA_UPPER: + case NFA_NUPPER: ++ case NFA_LOWER_IC: ++ case NFA_NLOWER_IC: ++ case NFA_UPPER_IC: ++ case NFA_NUPPER_IC: + case NFA_START_COLL: + case NFA_START_NEG_COLL: + case NFA_NEWL: +*************** +*** 5872,5877 **** +--- 5893,5920 ---- + ADD_STATE_IF_MATCH(t->state); + break; + ++ case NFA_LOWER_IC: /* [a-z] */ ++ result = ri_lower(curc) || (ireg_ic && ri_upper(curc)); ++ ADD_STATE_IF_MATCH(t->state); ++ break; ++ ++ case NFA_NLOWER_IC: /* [^a-z] */ ++ result = curc != NUL ++ && !(ri_lower(curc) || (ireg_ic && ri_upper(curc))); ++ ADD_STATE_IF_MATCH(t->state); ++ break; ++ ++ case NFA_UPPER_IC: /* [A-Z] */ ++ result = ri_upper(curc) || (ireg_ic && ri_lower(curc)); ++ ADD_STATE_IF_MATCH(t->state); ++ break; ++ ++ case NFA_NUPPER_IC: /* ^[A-Z] */ ++ result = curc != NUL ++ && !(ri_upper(curc) || (ireg_ic && ri_lower(curc))); ++ ADD_STATE_IF_MATCH(t->state); ++ break; ++ + case NFA_BACKREF1: + case NFA_BACKREF2: + case NFA_BACKREF3: +*** ../vim-7.4.000/src/testdir/test64.in 2013-08-01 17:45:33.000000000 +0200 +--- src/testdir/test64.in 2013-08-14 11:50:11.000000000 +0200 +*************** +*** 289,303 **** + :call add(tl, [2, '.a\%$', " a\n "]) + :call add(tl, [2, '.a\%$', " a\n_a", "_a"]) + :" +! :"""" Test recognition of some character classes +! :call add(tl, [2, '[0-9]', '8', '8']) +! :call add(tl, [2, '[^0-9]', '8']) +! :call add(tl, [2, '[0-9a-fA-F]*', '0a7', '0a7']) +! :call add(tl, [2, '[^0-9A-Fa-f]\+', '0a7']) +! :call add(tl, [2, '[a-z_A-Z0-9]\+', 'aso_sfoij', 'aso_sfoij']) +! :call add(tl, [2, '[a-z]', 'a', 'a']) +! :call add(tl, [2, '[a-zA-Z]', 'a', 'a']) +! :call add(tl, [2, '[A-Z]', 'a']) + :call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa']) + :" + :"""" Tests for \z features +--- 289,317 ---- + :call add(tl, [2, '.a\%$', " a\n "]) + :call add(tl, [2, '.a\%$', " a\n_a", "_a"]) + :" +! :"""" Test recognition of character classes +! :call add(tl, [2, '[0-7]\+', 'x0123456789x', '01234567']) +! :call add(tl, [2, '[^0-7]\+', '0a;X+% 897', 'a;X+% 89']) +! :call add(tl, [2, '[0-9]\+', 'x0123456789x', '0123456789']) +! :call add(tl, [2, '[^0-9]\+', '0a;X+% 9', 'a;X+% ']) +! :call add(tl, [2, '[0-9a-fA-F]\+', 'x0189abcdefg', '0189abcdef']) +! :call add(tl, [2, '[^0-9A-Fa-f]\+', '0189g;X+% ab', 'g;X+% ']) +! :call add(tl, [2, '[a-z_A-Z0-9]\+', ';+aso_SfOij ', 'aso_SfOij']) +! :call add(tl, [2, '[^a-z_A-Z0-9]\+', 'aSo_;+% sfOij', ';+% ']) +! :call add(tl, [2, '[a-z_A-Z]\+', '0abyz_ABYZ;', 'abyz_ABYZ']) +! :call add(tl, [2, '[^a-z_A-Z]\+', 'abAB_09;+% yzYZ', '09;+% ']) +! :call add(tl, [2, '[a-z]\+', '0abcxyz1', 'abcxyz']) +! :call add(tl, [2, '[a-z]\+', 'AabxyzZ', 'abxyz']) +! :call add(tl, [2, '[^a-z]\+', 'a;X09+% x', ';X09+% ']) +! :call add(tl, [2, '[^a-z]\+', 'abX0;%yz', 'X0;%']) +! :call add(tl, [2, '[a-zA-Z]\+', '0abABxzXZ9', 'abABxzXZ']) +! :call add(tl, [2, '[^a-zA-Z]\+', 'ab09_;+ XZ', '09_;+ ']) +! :call add(tl, [2, '[A-Z]\+', 'aABXYZz', 'ABXYZ']) +! :call add(tl, [2, '[^A-Z]\+', 'ABx0;%YZ', 'x0;%']) +! :call add(tl, [2, '[a-z]\+\c', '0abxyzABXYZ;', 'abxyzABXYZ']) +! :call add(tl, [2, '[A-Z]\+\c', '0abABxzXZ9', 'abABxzXZ']) +! :call add(tl, [2, '\c[^a-z]\+', 'ab09_;+ XZ', '09_;+ ']) +! :call add(tl, [2, '\c[^A-Z]\+', 'ab09_;+ XZ', '09_;+ ']) + :call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa']) + :" + :"""" Tests for \z features +*** ../vim-7.4.000/src/testdir/test64.ok 2013-08-01 18:28:56.000000000 +0200 +--- src/testdir/test64.ok 2013-08-14 11:50:37.000000000 +0200 +*************** +*** 650,679 **** + OK 0 - .a\%$ + OK 1 - .a\%$ + OK 2 - .a\%$ +! OK 0 - [0-9] +! OK 1 - [0-9] +! OK 2 - [0-9] +! OK 0 - [^0-9] +! OK 1 - [^0-9] +! OK 2 - [^0-9] +! OK 0 - [0-9a-fA-F]* +! OK 1 - [0-9a-fA-F]* +! OK 2 - [0-9a-fA-F]* + OK 0 - [^0-9A-Fa-f]\+ + OK 1 - [^0-9A-Fa-f]\+ + OK 2 - [^0-9A-Fa-f]\+ + OK 0 - [a-z_A-Z0-9]\+ + OK 1 - [a-z_A-Z0-9]\+ + OK 2 - [a-z_A-Z0-9]\+ +! OK 0 - [a-z] +! OK 1 - [a-z] +! OK 2 - [a-z] +! OK 0 - [a-zA-Z] +! OK 1 - [a-zA-Z] +! OK 2 - [a-zA-Z] +! OK 0 - [A-Z] +! OK 1 - [A-Z] +! OK 2 - [A-Z] + OK 0 - \C[^A-Z]\+ + OK 1 - \C[^A-Z]\+ + OK 2 - \C[^A-Z]\+ +--- 650,721 ---- + OK 0 - .a\%$ + OK 1 - .a\%$ + OK 2 - .a\%$ +! OK 0 - [0-7]\+ +! OK 1 - [0-7]\+ +! OK 2 - [0-7]\+ +! OK 0 - [^0-7]\+ +! OK 1 - [^0-7]\+ +! OK 2 - [^0-7]\+ +! OK 0 - [0-9]\+ +! OK 1 - [0-9]\+ +! OK 2 - [0-9]\+ +! OK 0 - [^0-9]\+ +! OK 1 - [^0-9]\+ +! OK 2 - [^0-9]\+ +! OK 0 - [0-9a-fA-F]\+ +! OK 1 - [0-9a-fA-F]\+ +! OK 2 - [0-9a-fA-F]\+ + OK 0 - [^0-9A-Fa-f]\+ + OK 1 - [^0-9A-Fa-f]\+ + OK 2 - [^0-9A-Fa-f]\+ + OK 0 - [a-z_A-Z0-9]\+ + OK 1 - [a-z_A-Z0-9]\+ + OK 2 - [a-z_A-Z0-9]\+ +! OK 0 - [^a-z_A-Z0-9]\+ +! OK 1 - [^a-z_A-Z0-9]\+ +! OK 2 - [^a-z_A-Z0-9]\+ +! OK 0 - [a-z_A-Z]\+ +! OK 1 - [a-z_A-Z]\+ +! OK 2 - [a-z_A-Z]\+ +! OK 0 - [^a-z_A-Z]\+ +! OK 1 - [^a-z_A-Z]\+ +! OK 2 - [^a-z_A-Z]\+ +! OK 0 - [a-z]\+ +! OK 1 - [a-z]\+ +! OK 2 - [a-z]\+ +! OK 0 - [a-z]\+ +! OK 1 - [a-z]\+ +! OK 2 - [a-z]\+ +! OK 0 - [^a-z]\+ +! OK 1 - [^a-z]\+ +! OK 2 - [^a-z]\+ +! OK 0 - [^a-z]\+ +! OK 1 - [^a-z]\+ +! OK 2 - [^a-z]\+ +! OK 0 - [a-zA-Z]\+ +! OK 1 - [a-zA-Z]\+ +! OK 2 - [a-zA-Z]\+ +! OK 0 - [^a-zA-Z]\+ +! OK 1 - [^a-zA-Z]\+ +! OK 2 - [^a-zA-Z]\+ +! OK 0 - [A-Z]\+ +! OK 1 - [A-Z]\+ +! OK 2 - [A-Z]\+ +! OK 0 - [^A-Z]\+ +! OK 1 - [^A-Z]\+ +! OK 2 - [^A-Z]\+ +! OK 0 - [a-z]\+\c +! OK 1 - [a-z]\+\c +! OK 2 - [a-z]\+\c +! OK 0 - [A-Z]\+\c +! OK 1 - [A-Z]\+\c +! OK 2 - [A-Z]\+\c +! OK 0 - \c[^a-z]\+ +! OK 1 - \c[^a-z]\+ +! OK 2 - \c[^a-z]\+ +! OK 0 - \c[^A-Z]\+ +! OK 1 - \c[^A-Z]\+ +! OK 2 - \c[^A-Z]\+ + OK 0 - \C[^A-Z]\+ + OK 1 - \C[^A-Z]\+ + OK 2 - \C[^A-Z]\+ +*** ../vim-7.4.000/src/version.c 2013-08-10 13:29:20.000000000 +0200 +--- src/version.c 2013-08-14 11:54:57.000000000 +0200 +*************** +*** 729,730 **** +--- 729,732 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1, + /**/ + +-- +How many light bulbs does it take to change a person? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.002 b/patches/source/vim/patches/7.4.002 new file mode 100644 index 00000000..d92f4de6 --- /dev/null +++ b/patches/source/vim/patches/7.4.002 @@ -0,0 +1,77 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.002 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4b.002 +Problem: Pattern with two alternative look-behind matches does not match. + (Amadeus Demarzi) +Solution: When comparing PIMs also compare their state ID to see if they are + different. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + + +*** ../vim-7.4.001/src/regexp_nfa.c 2013-08-14 12:05:54.000000000 +0200 +--- src/regexp_nfa.c 2013-08-14 13:12:09.000000000 +0200 +*************** +*** 3782,3787 **** +--- 3782,3790 ---- + if (two_unused) + /* one is used and two is not: not equal */ + return FALSE; ++ /* compare the state id */ ++ if (one->state->id != two->state->id) ++ return FALSE; + /* compare the position */ + if (REG_MULTI) + return one->end.pos.lnum == two->end.pos.lnum +*** ../vim-7.4.001/src/testdir/test64.in 2013-08-14 12:05:54.000000000 +0200 +--- src/testdir/test64.in 2013-08-14 12:58:38.000000000 +0200 +*************** +*** 421,426 **** +--- 421,429 ---- + :call add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo']) + :call add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo']) + :" ++ :" complicated look-behind match ++ :call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/']) ++ :" + :""""" \@> + :call add(tl, [2, '\(a*\)\@>a', 'aaaa']) + :call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa']) +*** ../vim-7.4.001/src/testdir/test64.ok 2013-08-14 12:05:54.000000000 +0200 +--- src/testdir/test64.ok 2013-08-14 13:14:09.000000000 +0200 +*************** +*** 974,979 **** +--- 974,982 ---- + OK 0 - \(foo\)\@<=.* + OK 1 - \(foo\)\@<=.* + OK 2 - \(foo\)\@<=.* ++ OK 0 - \(r\@<=\|\w\@<!\)\/ ++ OK 1 - \(r\@<=\|\w\@<!\)\/ ++ OK 2 - \(r\@<=\|\w\@<!\)\/ + OK 0 - \(a*\)\@>a + OK 1 - \(a*\)\@>a + OK 2 - \(a*\)\@>a +*** ../vim-7.4.001/src/version.c 2013-08-14 12:05:54.000000000 +0200 +--- src/version.c 2013-08-14 13:13:45.000000000 +0200 +*************** +*** 729,730 **** +--- 729,732 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 2, + /**/ + +-- +From "know your smileys": + :-)-O Smiling doctor with stethoscope + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.003 b/patches/source/vim/patches/7.4.003 new file mode 100644 index 00000000..9aad3c8c --- /dev/null +++ b/patches/source/vim/patches/7.4.003 @@ -0,0 +1,100 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.003 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.003 +Problem: Memory access error in Ruby syntax highlighting. (Christopher Chow) +Solution: Refresh stale pointer. (James McCoy) +Files: src/regexp_nfa.c + + +*** ../vim-7.4.002/src/regexp_nfa.c 2013-08-14 13:31:03.000000000 +0200 +--- src/regexp_nfa.c 2013-08-14 14:02:06.000000000 +0200 +*************** +*** 4120,4126 **** + sub = &subs->norm; + } + #ifdef FEAT_SYN_HL +! else if (state->c >= NFA_ZOPEN) + { + subidx = state->c - NFA_ZOPEN; + sub = &subs->synt; +--- 4120,4126 ---- + sub = &subs->norm; + } + #ifdef FEAT_SYN_HL +! else if (state->c >= NFA_ZOPEN && state->c <= NFA_ZOPEN9) + { + subidx = state->c - NFA_ZOPEN; + sub = &subs->synt; +*************** +*** 4189,4194 **** +--- 4189,4201 ---- + } + + subs = addstate(l, state->out, subs, pim, off); ++ /* "subs" may have changed, need to set "sub" again */ ++ #ifdef FEAT_SYN_HL ++ if (state->c >= NFA_ZOPEN && state->c <= NFA_ZOPEN9) ++ sub = &subs->synt; ++ else ++ #endif ++ sub = &subs->norm; + + if (save_in_use == -1) + { +*************** +*** 4237,4243 **** + sub = &subs->norm; + } + #ifdef FEAT_SYN_HL +! else if (state->c >= NFA_ZCLOSE) + { + subidx = state->c - NFA_ZCLOSE; + sub = &subs->synt; +--- 4244,4250 ---- + sub = &subs->norm; + } + #ifdef FEAT_SYN_HL +! else if (state->c >= NFA_ZCLOSE && state->c <= NFA_ZCLOSE9) + { + subidx = state->c - NFA_ZCLOSE; + sub = &subs->synt; +*************** +*** 4281,4286 **** +--- 4288,4300 ---- + } + + subs = addstate(l, state->out, subs, pim, off); ++ /* "subs" may have changed, need to set "sub" again */ ++ #ifdef FEAT_SYN_HL ++ if (state->c >= NFA_ZCLOSE && state->c <= NFA_ZCLOSE9) ++ sub = &subs->synt; ++ else ++ #endif ++ sub = &subs->norm; + + if (REG_MULTI) + sub->list.multi[subidx].end = save_lpos; +*** ../vim-7.4.002/src/version.c 2013-08-14 13:31:03.000000000 +0200 +--- src/version.c 2013-08-14 14:03:51.000000000 +0200 +*************** +*** 729,730 **** +--- 729,732 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 3, + /**/ + +-- +Where do you want to crash today? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.004 b/patches/source/vim/patches/7.4.004 new file mode 100644 index 00000000..f629d673 --- /dev/null +++ b/patches/source/vim/patches/7.4.004 @@ -0,0 +1,232 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.004 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.004 +Problem: When closing a window fails ":bwipe" may hang. +Solution: Let win_close() return FAIL and break out of the loop. +Files: src/window.c, src/proto/window.pro, src/buffer.c + + +*** ../vim-7.4.003/src/window.c 2013-07-24 17:38:29.000000000 +0200 +--- src/window.c 2013-08-14 16:52:44.000000000 +0200 +*************** +*** 2172,2179 **** + * If "free_buf" is TRUE related buffer may be unloaded. + * + * Called by :quit, :close, :xit, :wq and findtag(). + */ +! void + win_close(win, free_buf) + win_T *win; + int free_buf; +--- 2172,2180 ---- + * If "free_buf" is TRUE related buffer may be unloaded. + * + * Called by :quit, :close, :xit, :wq and findtag(). ++ * Returns FAIL when the window was not closed. + */ +! int + win_close(win, free_buf) + win_T *win; + int free_buf; +*************** +*** 2190,2210 **** + if (last_window()) + { + EMSG(_("E444: Cannot close last window")); +! return; + } + + #ifdef FEAT_AUTOCMD + if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing)) +! return; /* window is already being closed */ + if (win == aucmd_win) + { + EMSG(_("E813: Cannot close autocmd window")); +! return; + } + if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window()) + { + EMSG(_("E814: Cannot close window, only autocmd window would remain")); +! return; + } + #endif + +--- 2191,2211 ---- + if (last_window()) + { + EMSG(_("E444: Cannot close last window")); +! return FAIL; + } + + #ifdef FEAT_AUTOCMD + if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing)) +! return FAIL; /* window is already being closed */ + if (win == aucmd_win) + { + EMSG(_("E813: Cannot close autocmd window")); +! return FAIL; + } + if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window()) + { + EMSG(_("E814: Cannot close window, only autocmd window would remain")); +! return FAIL; + } + #endif + +*************** +*** 2212,2218 **** + * and then close the window and the tab page to avoid that curwin and + * curtab are invalid while we are freeing memory. */ + if (close_last_window_tabpage(win, free_buf, prev_curtab)) +! return; + + /* When closing the help window, try restoring a snapshot after closing + * the window. Otherwise clear the snapshot, it's now invalid. */ +--- 2213,2219 ---- + * and then close the window and the tab page to avoid that curwin and + * curtab are invalid while we are freeing memory. */ + if (close_last_window_tabpage(win, free_buf, prev_curtab)) +! return FAIL; + + /* When closing the help window, try restoring a snapshot after closing + * the window. Otherwise clear the snapshot, it's now invalid. */ +*************** +*** 2240,2261 **** + win->w_closing = TRUE; + apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf); + if (!win_valid(win)) +! return; + win->w_closing = FALSE; + if (last_window()) +! return; + } + win->w_closing = TRUE; + apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf); + if (!win_valid(win)) +! return; + win->w_closing = FALSE; + if (last_window()) +! return; + # ifdef FEAT_EVAL + /* autocmds may abort script processing */ + if (aborting()) +! return; + # endif + } + #endif +--- 2241,2262 ---- + win->w_closing = TRUE; + apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf); + if (!win_valid(win)) +! return FAIL; + win->w_closing = FALSE; + if (last_window()) +! return FAIL; + } + win->w_closing = TRUE; + apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf); + if (!win_valid(win)) +! return FAIL; + win->w_closing = FALSE; + if (last_window()) +! return FAIL; + # ifdef FEAT_EVAL + /* autocmds may abort script processing */ + if (aborting()) +! return FAIL; + # endif + } + #endif +*************** +*** 2303,2309 **** + * other window or moved to another tab page. */ + else if (!win_valid(win) || last_window() || curtab != prev_curtab + || close_last_window_tabpage(win, free_buf, prev_curtab)) +! return; + + /* Free the memory used for the window and get the window that received + * the screen space. */ +--- 2304,2310 ---- + * other window or moved to another tab page. */ + else if (!win_valid(win) || last_window() || curtab != prev_curtab + || close_last_window_tabpage(win, free_buf, prev_curtab)) +! return FAIL; + + /* Free the memory used for the window and get the window that received + * the screen space. */ +*************** +*** 2383,2388 **** +--- 2384,2390 ---- + #endif + + redraw_all_later(NOT_VALID); ++ return OK; + } + + /* +*** ../vim-7.4.003/src/proto/window.pro 2013-08-10 13:37:30.000000000 +0200 +--- src/proto/window.pro 2013-08-14 16:52:50.000000000 +0200 +*************** +*** 9,15 **** + void win_equal __ARGS((win_T *next_curwin, int current, int dir)); + void close_windows __ARGS((buf_T *buf, int keep_curwin)); + int one_window __ARGS((void)); +! void win_close __ARGS((win_T *win, int free_buf)); + void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp)); + void win_free_all __ARGS((void)); + win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp)); +--- 9,15 ---- + void win_equal __ARGS((win_T *next_curwin, int current, int dir)); + void close_windows __ARGS((buf_T *buf, int keep_curwin)); + int one_window __ARGS((void)); +! int win_close __ARGS((win_T *win, int free_buf)); + void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp)); + void win_free_all __ARGS((void)); + win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp)); +*** ../vim-7.4.003/src/buffer.c 2013-07-17 16:39:00.000000000 +0200 +--- src/buffer.c 2013-08-14 16:54:34.000000000 +0200 +*************** +*** 1186,1192 **** + && !(curwin->w_closing || curwin->w_buffer->b_closing) + # endif + && (firstwin != lastwin || first_tabpage->tp_next != NULL)) +! win_close(curwin, FALSE); + #endif + + /* +--- 1186,1195 ---- + && !(curwin->w_closing || curwin->w_buffer->b_closing) + # endif + && (firstwin != lastwin || first_tabpage->tp_next != NULL)) +! { +! if (win_close(curwin, FALSE) == FAIL) +! break; +! } + #endif + + /* +*** ../vim-7.4.003/src/version.c 2013-08-14 14:18:37.000000000 +0200 +--- src/version.c 2013-08-14 17:10:23.000000000 +0200 +*************** +*** 729,730 **** +--- 729,732 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 4, + /**/ + +-- +From "know your smileys": + *<|:-) Santa Claus (Ho Ho Ho) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.005 b/patches/source/vim/patches/7.4.005 new file mode 100644 index 00000000..f85d1f0e --- /dev/null +++ b/patches/source/vim/patches/7.4.005 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.005 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.005 +Problem: Using "vaB" while 'virtualedit' is set selects the wrong area. + (Dimitar Dimitrov) +Solution: Reset coladd when finding a match. +Files: src/search.c + + +*** ../vim-7.4.004/src/search.c 2013-07-17 19:20:47.000000000 +0200 +--- src/search.c 2013-08-14 17:32:38.000000000 +0200 +*************** +*** 1760,1765 **** +--- 1760,1768 ---- + #endif + + pos = curwin->w_cursor; ++ #ifdef FEAT_VIRTUALEDIT ++ pos.coladd = 0; ++ #endif + linep = ml_get(pos.lnum); + + cpo_match = (vim_strchr(p_cpo, CPO_MATCH) != NULL); +*** ../vim-7.4.004/src/version.c 2013-08-14 17:11:14.000000000 +0200 +--- src/version.c 2013-08-14 17:38:05.000000000 +0200 +*************** +*** 729,730 **** +--- 729,732 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 5, + /**/ + +-- +You can't have everything. Where would you put it? + -- Steven Wright + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.006 b/patches/source/vim/patches/7.4.006 new file mode 100644 index 00000000..55d3802c --- /dev/null +++ b/patches/source/vim/patches/7.4.006 @@ -0,0 +1,66 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.006 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.006 +Problem: mkdir("foo/bar/", "p") gives an error message. (David Barnett) +Solution: Remove the trailing slash. (lcd) +Files: src/eval.c + + +*** ../vim-7.4.005/src/eval.c 2013-07-05 18:23:42.000000000 +0200 +--- src/eval.c 2013-08-22 12:00:28.000000000 +0200 +*************** +*** 14292,14297 **** +--- 14292,14301 ---- + return; + + dir = get_tv_string_buf(&argvars[0], buf); ++ if (*gettail(dir) == NUL) ++ /* remove trailing slashes */ ++ *gettail_sep(dir) = NUL; ++ + if (argvars[1].v_type != VAR_UNKNOWN) + { + if (argvars[2].v_type != VAR_UNKNOWN) +*************** +*** 14299,14305 **** + if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0) + mkdir_recurse(dir, prot); + } +! rettv->vval.v_number = prot != -1 ? vim_mkdir_emsg(dir, prot) : 0; + } + #endif + +--- 14303,14309 ---- + if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0) + mkdir_recurse(dir, prot); + } +! rettv->vval.v_number = prot == -1 ? FAIL : vim_mkdir_emsg(dir, prot); + } + #endif + +*** ../vim-7.4.005/src/version.c 2013-08-14 17:45:25.000000000 +0200 +--- src/version.c 2013-08-22 12:02:46.000000000 +0200 +*************** +*** 729,730 **** +--- 729,732 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 6, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +97. Your mother tells you to remember something, and you look for + a File/Save command. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.007 b/patches/source/vim/patches/7.4.007 new file mode 100644 index 00000000..5495ffbf --- /dev/null +++ b/patches/source/vim/patches/7.4.007 @@ -0,0 +1,95 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.007 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.007 +Problem: Creating a preview window on startup leaves the screen layout in a + messed up state. (Marius Gedminas) +Solution: Don't change firstwin. (Christian Brabandt) +Files: src/main.c + + +*** ../vim-7.4.006/src/main.c 2013-07-03 12:36:49.000000000 +0200 +--- src/main.c 2013-08-22 14:02:39.000000000 +0200 +*************** +*** 2727,2732 **** +--- 2727,2733 ---- + int arg_idx; /* index in argument list */ + int i; + int advance = TRUE; ++ win_T *win; + + # ifdef FEAT_AUTOCMD + /* +*************** +*** 2816,2839 **** + # ifdef FEAT_AUTOCMD + --autocmd_no_enter; + # endif + #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) +! /* +! * Avoid making a preview window the current window. +! */ +! if (firstwin->w_p_pvw) + { +! win_T *win; +! +! for (win = firstwin; win != NULL; win = win->w_next) +! if (!win->w_p_pvw) +! { +! firstwin = win; +! break; +! } + } + #endif +! /* make the first window the current window */ +! win_enter(firstwin, FALSE); + + # ifdef FEAT_AUTOCMD + --autocmd_no_leave; +--- 2817,2838 ---- + # ifdef FEAT_AUTOCMD + --autocmd_no_enter; + # endif ++ ++ /* make the first window the current window */ ++ win = firstwin; + #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) +! /* Avoid making a preview window the current window. */ +! while (win->w_p_pvw) + { +! win = win->w_next; +! if (win == NULL) +! { +! win = firstwin; +! break; +! } + } + #endif +! win_enter(win, FALSE); + + # ifdef FEAT_AUTOCMD + --autocmd_no_leave; +*** ../vim-7.4.006/src/version.c 2013-08-22 12:06:50.000000000 +0200 +--- src/version.c 2013-08-22 14:04:11.000000000 +0200 +*************** +*** 729,730 **** +--- 729,732 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 7, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +105. When someone asks you for your address, you tell them your URL. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.008 b/patches/source/vim/patches/7.4.008 new file mode 100644 index 00000000..6abd493f --- /dev/null +++ b/patches/source/vim/patches/7.4.008 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.008 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.008 +Problem: New regexp engine can't be interrupted. +Solution: Check for CTRL-C pressed. (Yasuhiro Matsumoto) +Files: src/regexp_nfa.c, src/regexp.c + + +*** ../vim-7.4.007/src/regexp_nfa.c 2013-08-14 14:18:37.000000000 +0200 +--- src/regexp_nfa.c 2013-08-25 16:55:56.000000000 +0200 +*************** +*** 5089,5094 **** +--- 5089,5100 ---- + return FALSE; + } + #endif ++ /* Some patterns may take a long time to match, especially when using ++ * recursive_regmatch(). Allow interrupting them with CTRL-C. */ ++ fast_breakcheck(); ++ if (got_int) ++ return FALSE; ++ + nfa_match = FALSE; + + /* Allocate memory for the lists of nodes. */ +*** ../vim-7.4.007/src/regexp.c 2013-08-01 18:31:30.000000000 +0200 +--- src/regexp.c 2013-08-25 16:57:35.000000000 +0200 +*************** +*** 4311,4318 **** + */ + for (;;) + { +! /* Some patterns may cause a long time to match, even though they are not +! * illegal. E.g., "\([a-z]\+\)\+Q". Allow breaking them with CTRL-C. */ + fast_breakcheck(); + + #ifdef DEBUG +--- 4311,4318 ---- + */ + for (;;) + { +! /* Some patterns may take a long time to match, e.g., "\([a-z]\+\)\+Q". +! * Allow interrupting them with CTRL-C. */ + fast_breakcheck(); + + #ifdef DEBUG +*** ../vim-7.4.007/src/version.c 2013-08-22 14:14:23.000000000 +0200 +--- src/version.c 2013-08-25 16:57:51.000000000 +0200 +*************** +*** 729,730 **** +--- 729,732 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 8, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +124. You begin conversations with, "Who is your internet service provider?" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.009 b/patches/source/vim/patches/7.4.009 new file mode 100644 index 00000000..f5e5fa60 --- /dev/null +++ b/patches/source/vim/patches/7.4.009 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.009 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.009 +Problem: When a file was not decrypted (yet), writing it may destroy the + contents. +Solution: Mark the file as readonly until decryption was done. (Christian + Brabandt) +Files: src/fileio.c + + +*** ../vim-7.4.008/src/fileio.c 2013-08-05 21:58:03.000000000 +0200 +--- src/fileio.c 2013-08-25 17:45:27.000000000 +0200 +*************** +*** 2926,2934 **** +--- 2926,2939 ---- + int *did_ask; /* flag: whether already asked for key */ + { + int method = crypt_method_from_magic((char *)ptr, *sizep); ++ int b_p_ro = curbuf->b_p_ro; + + if (method >= 0) + { ++ /* Mark the buffer as read-only until the decryption has taken place. ++ * Avoids accidentally overwriting the file with garbage. */ ++ curbuf->b_p_ro = TRUE; ++ + set_crypt_method(curbuf, method); + if (method > 0) + (void)blowfish_self_test(); +*************** +*** 2977,2982 **** +--- 2982,2989 ---- + *sizep -= CRYPT_MAGIC_LEN + salt_len + seed_len; + mch_memmove(ptr, ptr + CRYPT_MAGIC_LEN + salt_len + seed_len, + (size_t)*sizep); ++ /* Restore the read-only flag. */ ++ curbuf->b_p_ro = b_p_ro; + } + } + /* When starting to edit a new file which does not have encryption, clear +*** ../vim-7.4.008/src/version.c 2013-08-25 17:01:36.000000000 +0200 +--- src/version.c 2013-08-25 17:44:30.000000000 +0200 +*************** +*** 729,730 **** +--- 729,732 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 9, + /**/ + +-- +I have a watch cat! Just break in and she'll watch. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.010 b/patches/source/vim/patches/7.4.010 new file mode 100644 index 00000000..fee6ba5b --- /dev/null +++ b/patches/source/vim/patches/7.4.010 @@ -0,0 +1,79 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.010 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.010 (after 7.4.006) +Problem: Crash with invalid argument to mkdir(). +Solution: Check for empty string. (lcd47) +Files: src/eval.c + + +*** ../vim-7.4.009/src/eval.c 2013-08-22 12:06:50.000000000 +0200 +--- src/eval.c 2013-08-30 15:47:47.000000000 +0200 +*************** +*** 14292,14309 **** + return; + + dir = get_tv_string_buf(&argvars[0], buf); +! if (*gettail(dir) == NUL) +! /* remove trailing slashes */ +! *gettail_sep(dir) = NUL; +! +! if (argvars[1].v_type != VAR_UNKNOWN) + { +! if (argvars[2].v_type != VAR_UNKNOWN) +! prot = get_tv_number_chk(&argvars[2], NULL); +! if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0) +! mkdir_recurse(dir, prot); + } +- rettv->vval.v_number = prot == -1 ? FAIL : vim_mkdir_emsg(dir, prot); + } + #endif + +--- 14292,14314 ---- + return; + + dir = get_tv_string_buf(&argvars[0], buf); +! if (*dir == NUL) +! rettv->vval.v_number = FAIL; +! else + { +! if (*gettail(dir) == NUL) +! /* remove trailing slashes */ +! *gettail_sep(dir) = NUL; +! +! if (argvars[1].v_type != VAR_UNKNOWN) +! { +! if (argvars[2].v_type != VAR_UNKNOWN) +! prot = get_tv_number_chk(&argvars[2], NULL); +! if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0) +! mkdir_recurse(dir, prot); +! } +! rettv->vval.v_number = prot == -1 ? FAIL : vim_mkdir_emsg(dir, prot); + } + } + #endif + +*** ../vim-7.4.009/src/version.c 2013-08-25 17:46:05.000000000 +0200 +--- src/version.c 2013-08-30 15:48:37.000000000 +0200 +*************** +*** 729,730 **** +--- 729,732 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 10, + /**/ + +-- +I wish there was a knob on the TV to turn up the intelligence. +There's a knob called "brightness", but it doesn't seem to work. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.011 b/patches/source/vim/patches/7.4.011 new file mode 100644 index 00000000..efff82c5 --- /dev/null +++ b/patches/source/vim/patches/7.4.011 @@ -0,0 +1,100 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.011 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.011 +Problem: Cannot find out if "acl" and "xpm" features are supported. +Solution: Add "acl" and "xpm" to the list of features. (Ken Takata) +Files: src/eval.c, src/version.c + + +*** ../vim-7.4.010/src/eval.c 2013-08-30 16:00:04.000000000 +0200 +--- src/eval.c 2013-08-30 16:34:12.000000000 +0200 +*************** +*** 12135,12140 **** +--- 12135,12143 ---- + #ifndef CASE_INSENSITIVE_FILENAME + "fname_case", + #endif ++ #ifdef HAVE_ACL ++ "acl", ++ #endif + #ifdef FEAT_ARABIC + "arabic", + #endif +*************** +*** 12538,12544 **** + "xfontset", + #endif + #ifdef FEAT_XPM_W32 +! "xpm_w32", + #endif + #ifdef USE_XSMP + "xsmp", +--- 12541,12552 ---- + "xfontset", + #endif + #ifdef FEAT_XPM_W32 +! "xpm", +! "xpm_w32", /* for backward compatibility */ +! #else +! # if defined(HAVE_XPM) +! "xpm", +! # endif + #endif + #ifdef USE_XSMP + "xsmp", +*** ../vim-7.4.010/src/version.c 2013-08-30 16:00:04.000000000 +0200 +--- src/version.c 2013-08-30 16:34:37.000000000 +0200 +*************** +*** 60,65 **** +--- 60,70 ---- + + static char *(features[]) = + { ++ #ifdef HAVE_ACL ++ "+acl", ++ #else ++ "-acl", ++ #endif + #ifdef AMIGA /* only for Amiga systems */ + # ifdef FEAT_ARP + "+ARP", +*************** +*** 721,726 **** +--- 726,737 ---- + # else + "-xpm_w32", + # endif ++ #else ++ # ifdef HAVE_XPM ++ "+xpm", ++ # else ++ "-xpm", ++ # endif + #endif + NULL + }; +*** ../vim-7.4.010/src/version.c 2013-08-30 16:00:04.000000000 +0200 +--- src/version.c 2013-08-30 16:34:37.000000000 +0200 +*************** +*** 729,730 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 11, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +141. You'd rather go to http://www.weather.com/ than look out your window. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.012 b/patches/source/vim/patches/7.4.012 new file mode 100644 index 00000000..f831442e --- /dev/null +++ b/patches/source/vim/patches/7.4.012 @@ -0,0 +1,202 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.012 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.012 +Problem: MS-Windows: resolving shortcut does not work properly with + multi-byte characters. +Solution: Use wide system functions. (Ken Takata) +Files: src/os_mswin.c + + +*** ../vim-7.4.011/src/os_mswin.c 2013-06-16 16:41:11.000000000 +0200 +--- src/os_mswin.c 2013-08-30 16:43:23.000000000 +0200 +*************** +*** 1761,1769 **** + IPersistFile *ppf = NULL; + OLECHAR wsz[MAX_PATH]; + WIN32_FIND_DATA ffd; // we get those free of charge +! TCHAR buf[MAX_PATH]; // could have simply reused 'wsz'... + char_u *rfname = NULL; + int len; + + /* Check if the file name ends in ".lnk". Avoid calling + * CoCreateInstance(), it's quite slow. */ +--- 1761,1773 ---- + IPersistFile *ppf = NULL; + OLECHAR wsz[MAX_PATH]; + WIN32_FIND_DATA ffd; // we get those free of charge +! CHAR buf[MAX_PATH]; // could have simply reused 'wsz'... + char_u *rfname = NULL; + int len; ++ # ifdef FEAT_MBYTE ++ IShellLinkW *pslw = NULL; ++ WIN32_FIND_DATAW ffdw; // we get those free of charge ++ # endif + + /* Check if the file name ends in ".lnk". Avoid calling + * CoCreateInstance(), it's quite slow. */ +*************** +*** 1775,1792 **** + + CoInitialize(NULL); + + // create a link manager object and request its interface + hr = CoCreateInstance( + &CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, + &IID_IShellLink, (void**)&psl); + if (hr != S_OK) +! goto shortcut_error; + + // Get a pointer to the IPersistFile interface. + hr = psl->lpVtbl->QueryInterface( + psl, &IID_IPersistFile, (void**)&ppf); + if (hr != S_OK) +! goto shortcut_error; + + // full path string must be in Unicode. + MultiByteToWideChar(CP_ACP, 0, fname, -1, wsz, MAX_PATH); +--- 1779,1840 ---- + + CoInitialize(NULL); + ++ # ifdef FEAT_MBYTE ++ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) ++ { ++ // create a link manager object and request its interface ++ hr = CoCreateInstance( ++ &CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, ++ &IID_IShellLinkW, (void**)&pslw); ++ if (hr == S_OK) ++ { ++ WCHAR *p = enc_to_utf16(fname, NULL); ++ ++ if (p != NULL) ++ { ++ // Get a pointer to the IPersistFile interface. ++ hr = pslw->lpVtbl->QueryInterface( ++ pslw, &IID_IPersistFile, (void**)&ppf); ++ if (hr != S_OK) ++ goto shortcut_errorw; ++ ++ // "load" the name and resolve the link ++ hr = ppf->lpVtbl->Load(ppf, p, STGM_READ); ++ if (hr != S_OK) ++ goto shortcut_errorw; ++ # if 0 // This makes Vim wait a long time if the target does not exist. ++ hr = pslw->lpVtbl->Resolve(pslw, NULL, SLR_NO_UI); ++ if (hr != S_OK) ++ goto shortcut_errorw; ++ # endif ++ ++ // Get the path to the link target. ++ ZeroMemory(wsz, MAX_PATH * sizeof(WCHAR)); ++ hr = pslw->lpVtbl->GetPath(pslw, wsz, MAX_PATH, &ffdw, 0); ++ if (hr == S_OK && wsz[0] != NUL) ++ rfname = utf16_to_enc(wsz, NULL); ++ ++ shortcut_errorw: ++ vim_free(p); ++ if (hr == S_OK) ++ goto shortcut_end; ++ } ++ } ++ /* Retry with non-wide function (for Windows 98). */ ++ } ++ # endif + // create a link manager object and request its interface + hr = CoCreateInstance( + &CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, + &IID_IShellLink, (void**)&psl); + if (hr != S_OK) +! goto shortcut_end; + + // Get a pointer to the IPersistFile interface. + hr = psl->lpVtbl->QueryInterface( + psl, &IID_IPersistFile, (void**)&ppf); + if (hr != S_OK) +! goto shortcut_end; + + // full path string must be in Unicode. + MultiByteToWideChar(CP_ACP, 0, fname, -1, wsz, MAX_PATH); +*************** +*** 1794,1805 **** + // "load" the name and resolve the link + hr = ppf->lpVtbl->Load(ppf, wsz, STGM_READ); + if (hr != S_OK) +! goto shortcut_error; +! #if 0 // This makes Vim wait a long time if the target doesn't exist. + hr = psl->lpVtbl->Resolve(psl, NULL, SLR_NO_UI); + if (hr != S_OK) +! goto shortcut_error; +! #endif + + // Get the path to the link target. + ZeroMemory(buf, MAX_PATH); +--- 1842,1853 ---- + // "load" the name and resolve the link + hr = ppf->lpVtbl->Load(ppf, wsz, STGM_READ); + if (hr != S_OK) +! goto shortcut_end; +! # if 0 // This makes Vim wait a long time if the target doesn't exist. + hr = psl->lpVtbl->Resolve(psl, NULL, SLR_NO_UI); + if (hr != S_OK) +! goto shortcut_end; +! # endif + + // Get the path to the link target. + ZeroMemory(buf, MAX_PATH); +*************** +*** 1807,1818 **** + if (hr == S_OK && buf[0] != NUL) + rfname = vim_strsave(buf); + +! shortcut_error: + // Release all interface pointers (both belong to the same object) + if (ppf != NULL) + ppf->lpVtbl->Release(ppf); + if (psl != NULL) + psl->lpVtbl->Release(psl); + + CoUninitialize(); + return rfname; +--- 1855,1870 ---- + if (hr == S_OK && buf[0] != NUL) + rfname = vim_strsave(buf); + +! shortcut_end: + // Release all interface pointers (both belong to the same object) + if (ppf != NULL) + ppf->lpVtbl->Release(ppf); + if (psl != NULL) + psl->lpVtbl->Release(psl); ++ # ifdef FEAT_MBYTE ++ if (pslw != NULL) ++ pslw->lpVtbl->Release(pslw); ++ # endif + + CoUninitialize(); + return rfname; +*** ../vim-7.4.011/src/version.c 2013-08-30 16:35:41.000000000 +0200 +--- src/version.c 2013-08-30 16:39:40.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 12, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +142. You dream about creating the world's greatest web site. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.013 b/patches/source/vim/patches/7.4.013 new file mode 100644 index 00000000..dcbe0fb3 --- /dev/null +++ b/patches/source/vim/patches/7.4.013 @@ -0,0 +1,99 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.013 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.013 +Problem: File name buffer too small for utf-8. +Solution: Use character count instead of byte count. (Ken Takata) +Files: src/os_mswin.c + + +*** ../vim-7.4.012/src/os_mswin.c 2013-08-30 16:44:15.000000000 +0200 +--- src/os_mswin.c 2013-08-30 16:47:54.000000000 +0200 +*************** +*** 456,462 **** +--- 456,469 ---- + int + mch_isFullName(char_u *fname) + { ++ #ifdef FEAT_MBYTE ++ /* WinNT and later can use _MAX_PATH wide characters for a pathname, which ++ * means that the maximum pathname is _MAX_PATH * 3 bytes when 'enc' is ++ * UTF-8. */ ++ char szName[_MAX_PATH * 3 + 1]; ++ #else + char szName[_MAX_PATH + 1]; ++ #endif + + /* A name like "d:/foo" and "//server/share" is absolute */ + if ((fname[0] && fname[1] == ':' && (fname[2] == '/' || fname[2] == '\\')) +*************** +*** 464,470 **** + return TRUE; + + /* A name that can't be made absolute probably isn't absolute. */ +! if (mch_FullName(fname, szName, _MAX_PATH, FALSE) == FAIL) + return FALSE; + + return pathcmp(fname, szName, -1) == 0; +--- 471,477 ---- + return TRUE; + + /* A name that can't be made absolute probably isn't absolute. */ +! if (mch_FullName(fname, szName, sizeof(szName) - 1, FALSE) == FAIL) + return FALSE; + + return pathcmp(fname, szName, -1) == 0; +*************** +*** 498,507 **** + int + vim_stat(const char *name, struct stat *stp) + { + char buf[_MAX_PATH + 1]; + char *p; + +! vim_strncpy((char_u *)buf, (char_u *)name, _MAX_PATH); + p = buf + strlen(buf); + if (p > buf) + mb_ptr_back(buf, p); +--- 505,521 ---- + int + vim_stat(const char *name, struct stat *stp) + { ++ #ifdef FEAT_MBYTE ++ /* WinNT and later can use _MAX_PATH wide characters for a pathname, which ++ * means that the maximum pathname is _MAX_PATH * 3 bytes when 'enc' is ++ * UTF-8. */ ++ char buf[_MAX_PATH * 3 + 1]; ++ #else + char buf[_MAX_PATH + 1]; ++ #endif + char *p; + +! vim_strncpy((char_u *)buf, (char_u *)name, sizeof(buf) - 1); + p = buf + strlen(buf); + if (p > buf) + mb_ptr_back(buf, p); +*** ../vim-7.4.012/src/version.c 2013-08-30 16:44:15.000000000 +0200 +--- src/version.c 2013-08-30 16:47:36.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 13, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +143. You dream in pallettes of 216 websafe colors. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.014 b/patches/source/vim/patches/7.4.014 new file mode 100644 index 00000000..f6554337 --- /dev/null +++ b/patches/source/vim/patches/7.4.014 @@ -0,0 +1,102 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.014 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.014 +Problem: MS-Windows: check for writing to device does not work. +Solution: Fix #ifdefs. (Ken Takata) +Files: src/fileio.c + + +*** ../vim-7.4.013/src/fileio.c 2013-08-25 17:46:05.000000000 +0200 +--- src/fileio.c 2013-08-30 16:56:46.000000000 +0200 +*************** +*** 428,440 **** + } + } + +- #ifdef UNIX +- /* +- * On Unix it is possible to read a directory, so we have to +- * check for it before the mch_open(). +- */ + if (!read_stdin && !read_buffer) + { + perm = mch_getperm(fname); + if (perm >= 0 && !S_ISREG(perm) /* not a regular file ... */ + # ifdef S_ISFIFO +--- 428,440 ---- + } + } + + if (!read_stdin && !read_buffer) + { ++ #ifdef UNIX ++ /* ++ * On Unix it is possible to read a directory, so we have to ++ * check for it before the mch_open(). ++ */ + perm = mch_getperm(fname); + if (perm >= 0 && !S_ISREG(perm) /* not a regular file ... */ + # ifdef S_ISFIFO +*************** +*** 457,464 **** + msg_scroll = msg_save; + return FAIL; + } +! +! # if defined(MSDOS) || defined(MSWIN) || defined(OS2) + /* + * MS-Windows allows opening a device, but we will probably get stuck + * trying to read it. +--- 457,464 ---- + msg_scroll = msg_save; + return FAIL; + } +! #endif +! #if defined(MSDOS) || defined(MSWIN) || defined(OS2) + /* + * MS-Windows allows opening a device, but we will probably get stuck + * trying to read it. +*************** +*** 470,478 **** + msg_scroll = msg_save; + return FAIL; + } +- # endif +- } + #endif + + /* Set default or forced 'fileformat' and 'binary'. */ + set_file_options(set_options, eap); +--- 470,477 ---- + msg_scroll = msg_save; + return FAIL; + } + #endif ++ } + + /* Set default or forced 'fileformat' and 'binary'. */ + set_file_options(set_options, eap); +*** ../vim-7.4.013/src/version.c 2013-08-30 16:51:15.000000000 +0200 +--- src/version.c 2013-08-30 16:54:33.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 14, + /**/ + +-- +Drink wet cement and get really stoned. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.015 b/patches/source/vim/patches/7.4.015 new file mode 100644 index 00000000..e8b284d1 --- /dev/null +++ b/patches/source/vim/patches/7.4.015 @@ -0,0 +1,106 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.015 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.015 +Problem: MS-Windows: Detecting node type does not work for multi-byte + characters. +Solution: Use wide character function when needed. (Ken Takata) +Files: src/os_win32.c + + +*** ../vim-7.4.014/src/os_win32.c 2013-08-10 12:39:12.000000000 +0200 +--- src/os_win32.c 2013-08-30 17:09:47.000000000 +0200 +*************** +*** 3107,3112 **** +--- 3107,3115 ---- + { + HANDLE hFile; + int type; ++ #ifdef FEAT_MBYTE ++ WCHAR *wn = NULL; ++ #endif + + /* We can't open a file with a name "\\.\con" or "\\.\prn" and trying to + * read from it later will cause Vim to hang. Thus return NODE_WRITABLE +*************** +*** 3114,3127 **** + if (STRNCMP(name, "\\\\.\\", 4) == 0) + return NODE_WRITABLE; + +! hFile = CreateFile(name, /* file name */ +! GENERIC_WRITE, /* access mode */ +! 0, /* share mode */ +! NULL, /* security descriptor */ +! OPEN_EXISTING, /* creation disposition */ +! 0, /* file attributes */ +! NULL); /* handle to template file */ + + if (hFile == INVALID_HANDLE_VALUE) + return NODE_NORMAL; + +--- 3117,3157 ---- + if (STRNCMP(name, "\\\\.\\", 4) == 0) + return NODE_WRITABLE; + +! #ifdef FEAT_MBYTE +! if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) +! { +! wn = enc_to_utf16(name, NULL); +! if (wn != NULL) +! { +! hFile = CreateFileW(wn, /* file name */ +! GENERIC_WRITE, /* access mode */ +! 0, /* share mode */ +! NULL, /* security descriptor */ +! OPEN_EXISTING, /* creation disposition */ +! 0, /* file attributes */ +! NULL); /* handle to template file */ +! if (hFile == INVALID_HANDLE_VALUE +! && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) +! { +! /* Retry with non-wide function (for Windows 98). */ +! vim_free(wn); +! wn = NULL; +! } +! } +! } +! if (wn == NULL) +! #endif +! hFile = CreateFile(name, /* file name */ +! GENERIC_WRITE, /* access mode */ +! 0, /* share mode */ +! NULL, /* security descriptor */ +! OPEN_EXISTING, /* creation disposition */ +! 0, /* file attributes */ +! NULL); /* handle to template file */ + ++ #ifdef FEAT_MBYTE ++ vim_free(wn); ++ #endif + if (hFile == INVALID_HANDLE_VALUE) + return NODE_NORMAL; + +*** ../vim-7.4.014/src/version.c 2013-08-30 17:06:56.000000000 +0200 +--- src/version.c 2013-08-30 17:09:35.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 15, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +144. You eagerly await the update of the "Cool Site of the Day." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.016 b/patches/source/vim/patches/7.4.016 new file mode 100644 index 00000000..c58c605f --- /dev/null +++ b/patches/source/vim/patches/7.4.016 @@ -0,0 +1,221 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.016 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.016 +Problem: MS-Windows: File name completion doesn't work properly with + Chinese characters. (Yue Wu) +Solution: Add fname_casew(). (Ken Takata) +Files: src/os_win32.c + + +*** ../vim-7.4.015/src/os_win32.c 2013-08-30 17:11:29.000000000 +0200 +--- src/os_win32.c 2013-08-30 17:28:30.000000000 +0200 +*************** +*** 2500,2508 **** +--- 2500,2624 ---- + } + + ++ #ifdef FEAT_MBYTE ++ /* ++ * fname_casew(): Wide version of fname_case(). Set the case of the file name, ++ * if it already exists. When "len" is > 0, also expand short to long ++ * filenames. ++ * Return FAIL if wide functions are not available, OK otherwise. ++ * NOTE: much of this is identical to fname_case(), keep in sync! ++ */ ++ static int ++ fname_casew( ++ WCHAR *name, ++ int len) ++ { ++ WCHAR szTrueName[_MAX_PATH + 2]; ++ WCHAR szTrueNameTemp[_MAX_PATH + 2]; ++ WCHAR *ptrue, *ptruePrev; ++ WCHAR *porig, *porigPrev; ++ int flen; ++ WIN32_FIND_DATAW fb; ++ HANDLE hFind; ++ int c; ++ int slen; ++ ++ flen = (int)wcslen(name); ++ if (flen > _MAX_PATH) ++ return OK; ++ ++ /* slash_adjust(name) not needed, already adjusted by fname_case(). */ ++ ++ /* Build the new name in szTrueName[] one component at a time. */ ++ porig = name; ++ ptrue = szTrueName; ++ ++ if (iswalpha(porig[0]) && porig[1] == L':') ++ { ++ /* copy leading drive letter */ ++ *ptrue++ = *porig++; ++ *ptrue++ = *porig++; ++ *ptrue = NUL; /* in case nothing follows */ ++ } ++ ++ while (*porig != NUL) ++ { ++ /* copy \ characters */ ++ while (*porig == psepc) ++ *ptrue++ = *porig++; ++ ++ ptruePrev = ptrue; ++ porigPrev = porig; ++ while (*porig != NUL && *porig != psepc) ++ { ++ *ptrue++ = *porig++; ++ } ++ *ptrue = NUL; ++ ++ /* To avoid a slow failure append "\*" when searching a directory, ++ * server or network share. */ ++ wcscpy(szTrueNameTemp, szTrueName); ++ slen = (int)wcslen(szTrueNameTemp); ++ if (*porig == psepc && slen + 2 < _MAX_PATH) ++ wcscpy(szTrueNameTemp + slen, L"\\*"); ++ ++ /* Skip "", "." and "..". */ ++ if (ptrue > ptruePrev ++ && (ptruePrev[0] != L'.' ++ || (ptruePrev[1] != NUL ++ && (ptruePrev[1] != L'.' || ptruePrev[2] != NUL))) ++ && (hFind = FindFirstFileW(szTrueNameTemp, &fb)) ++ != INVALID_HANDLE_VALUE) ++ { ++ c = *porig; ++ *porig = NUL; ++ ++ /* Only use the match when it's the same name (ignoring case) or ++ * expansion is allowed and there is a match with the short name ++ * and there is enough room. */ ++ if (_wcsicoll(porigPrev, fb.cFileName) == 0 ++ || (len > 0 ++ && (_wcsicoll(porigPrev, fb.cAlternateFileName) == 0 ++ && (int)(ptruePrev - szTrueName) ++ + (int)wcslen(fb.cFileName) < len))) ++ { ++ wcscpy(ptruePrev, fb.cFileName); ++ ++ /* Look for exact match and prefer it if found. Must be a ++ * long name, otherwise there would be only one match. */ ++ while (FindNextFileW(hFind, &fb)) ++ { ++ if (*fb.cAlternateFileName != NUL ++ && (wcscoll(porigPrev, fb.cFileName) == 0 ++ || (len > 0 ++ && (_wcsicoll(porigPrev, ++ fb.cAlternateFileName) == 0 ++ && (int)(ptruePrev - szTrueName) ++ + (int)wcslen(fb.cFileName) < len)))) ++ { ++ wcscpy(ptruePrev, fb.cFileName); ++ break; ++ } ++ } ++ } ++ FindClose(hFind); ++ *porig = c; ++ ptrue = ptruePrev + wcslen(ptruePrev); ++ } ++ else if (hFind == INVALID_HANDLE_VALUE ++ && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) ++ return FAIL; ++ } ++ ++ wcscpy(name, szTrueName); ++ return OK; ++ } ++ #endif ++ + /* + * fname_case(): Set the case of the file name, if it already exists. + * When "len" is > 0, also expand short to long filenames. ++ * NOTE: much of this is identical to fname_casew(), keep in sync! + */ + void + fname_case( +*************** +*** 2520,2530 **** + int slen; + + flen = (int)STRLEN(name); +! if (flen == 0 || flen > _MAX_PATH) + return; + + slash_adjust(name); + + /* Build the new name in szTrueName[] one component at a time. */ + porig = name; + ptrue = szTrueName; +--- 2636,2679 ---- + int slen; + + flen = (int)STRLEN(name); +! if (flen == 0) + return; + + slash_adjust(name); + ++ #ifdef FEAT_MBYTE ++ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) ++ { ++ WCHAR *p = enc_to_utf16(name, NULL); ++ ++ if (p != NULL) ++ { ++ char_u *q; ++ WCHAR buf[_MAX_PATH + 2]; ++ ++ wcscpy(buf, p); ++ vim_free(p); ++ ++ if (fname_casew(buf, (len > 0) ? _MAX_PATH : 0) == OK) ++ { ++ q = utf16_to_enc(buf, NULL); ++ if (q != NULL) ++ { ++ vim_strncpy(name, q, (len > 0) ? len - 1 : flen); ++ vim_free(q); ++ return; ++ } ++ } ++ } ++ /* Retry with non-wide function (for Windows 98). */ ++ } ++ #endif ++ ++ /* If 'enc' is utf-8, flen can be larger than _MAX_PATH. ++ * So we should check this after calling wide function. */ ++ if (flen > _MAX_PATH) ++ return; ++ + /* Build the new name in szTrueName[] one component at a time. */ + porig = name; + ptrue = szTrueName; +*** ../vim-7.4.015/src/version.c 2013-08-30 17:11:29.000000000 +0200 +--- src/version.c 2013-08-30 17:15:06.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 16, + /**/ + +-- +Fingers not found - Pound head on keyboard to continue. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.017 b/patches/source/vim/patches/7.4.017 new file mode 100644 index 00000000..7d7fad83 --- /dev/null +++ b/patches/source/vim/patches/7.4.017 @@ -0,0 +1,78 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.017 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.017 +Problem: ":help !!" does not find the "!!" tag in the help file. (Ben + Fritz) +Solution: When reading the start of the tags file do parse lines that are + not header lines. +Files: src/tag.c + + +*** ../vim-7.4.016/src/tag.c 2013-06-15 22:26:26.000000000 +0200 +--- src/tag.c 2013-09-05 12:03:38.000000000 +0200 +*************** +*** 1797,1809 **** + */ + if (state == TS_START) + { +! /* The header ends when the line sorts below "!_TAG_". +! * There may be non-header items before the header though, +! * e.g. "!" itself. When case is folded lower case letters +! * sort before "_". */ + if (STRNCMP(lbuf, "!_TAG_", 6) <= 0 + || (lbuf[0] == '!' && ASCII_ISLOWER(lbuf[1]))) + { + /* + * Read header line. + */ +--- 1797,1812 ---- + */ + if (state == TS_START) + { +! /* The header ends when the line sorts below "!_TAG_". When +! * case is folded lower case letters sort before "_". */ + if (STRNCMP(lbuf, "!_TAG_", 6) <= 0 + || (lbuf[0] == '!' && ASCII_ISLOWER(lbuf[1]))) + { ++ if (STRNCMP(lbuf, "!_TAG_", 6) != 0) ++ /* Non-header item before the header, e.g. "!" itself. ++ */ ++ goto parse_line; ++ + /* + * Read header line. + */ +*************** +*** 1898,1903 **** +--- 1901,1907 ---- + #endif + } + ++ parse_line: + /* + * Figure out where the different strings are in this line. + * For "normal" tags: Do a quick check if the tag matches. +*** ../vim-7.4.016/src/version.c 2013-08-30 17:29:10.000000000 +0200 +--- src/version.c 2013-09-05 12:02:01.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 17, + /**/ + +-- +An error has occurred. Hit any user to continue. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.018 b/patches/source/vim/patches/7.4.018 new file mode 100644 index 00000000..2214c30b --- /dev/null +++ b/patches/source/vim/patches/7.4.018 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.018 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.018 +Problem: When completing item becomes unselected. (Shougo Matsu) +Solution: Revert patch 7.3.1269. +Files: src/edit.c + + +*** ../vim-7.4.017/src/edit.c 2013-07-04 20:22:25.000000000 +0200 +--- src/edit.c 2013-09-05 12:39:53.000000000 +0200 +*************** +*** 3467,3473 **** + } + + compl_enter_selects = !compl_used_match; +- compl_shown_match = compl_curr_match = compl_first_match; + + /* Show the popup menu with a different set of matches. */ + ins_compl_show_pum(); +--- 3467,3472 ---- +*** ../vim-7.4.017/src/version.c 2013-09-05 12:06:26.000000000 +0200 +--- src/version.c 2013-09-05 12:40:34.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 18, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +169. You hire a housekeeper for your home page. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.019 b/patches/source/vim/patches/7.4.019 new file mode 100644 index 00000000..b1532c19 --- /dev/null +++ b/patches/source/vim/patches/7.4.019 @@ -0,0 +1,61 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.019 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.019 +Problem: MS-Windows: File name completion doesn't work properly with + Chinese characters. (Yue Wu) +Solution: Take care of multi-byte characters when looking for the start of + the file name. (Ken Takata) +Files: src/edit.c + + +*** ../vim-7.4.018/src/edit.c 2013-09-05 12:49:48.000000000 +0200 +--- src/edit.c 2013-09-05 13:45:27.000000000 +0200 +*************** +*** 5183,5190 **** + } + else if (ctrl_x_mode == CTRL_X_FILES) + { +! while (--startcol >= 0 && vim_isfilec(line[startcol])) +! ; + compl_col += ++startcol; + compl_length = (int)curs_col - startcol; + compl_pattern = addstar(line + compl_col, compl_length, +--- 5183,5196 ---- + } + else if (ctrl_x_mode == CTRL_X_FILES) + { +! char_u *p = line + startcol; +! +! /* Go back to just before the first filename character. */ +! mb_ptr_back(line, p); +! while (vim_isfilec(PTR2CHAR(p)) && p >= line) +! mb_ptr_back(line, p); +! startcol = p - line; +! + compl_col += ++startcol; + compl_length = (int)curs_col - startcol; + compl_pattern = addstar(line + compl_col, compl_length, +*** ../vim-7.4.018/src/version.c 2013-09-05 12:49:48.000000000 +0200 +--- src/version.c 2013-09-05 13:41:47.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 19, + /**/ + +-- + Very funny, Scotty. Now beam down my clothes. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.020 b/patches/source/vim/patches/7.4.020 new file mode 100644 index 00000000..942d82fe --- /dev/null +++ b/patches/source/vim/patches/7.4.020 @@ -0,0 +1,82 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.020 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.020 +Problem: NFA engine matches too much with \@>. (John McGowan) +Solution: When a whole pattern match is found stop searching. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + + +*** ../vim-7.4.019/src/regexp_nfa.c 2013-08-25 17:01:36.000000000 +0200 +--- src/regexp_nfa.c 2013-09-05 15:59:44.000000000 +0200 +*************** +*** 5322,5328 **** + log_subsexpr(m); + #endif + nfa_match = TRUE; +! break; + + case NFA_START_INVISIBLE: + case NFA_START_INVISIBLE_FIRST: +--- 5322,5331 ---- + log_subsexpr(m); + #endif + nfa_match = TRUE; +! /* See comment above at "goto nextchar". */ +! if (nextlist->n == 0) +! clen = 0; +! goto nextchar; + + case NFA_START_INVISIBLE: + case NFA_START_INVISIBLE_FIRST: +*** ../vim-7.4.019/src/testdir/test64.in 2013-08-14 13:31:03.000000000 +0200 +--- src/testdir/test64.in 2013-09-05 15:35:44.000000000 +0200 +*************** +*** 427,432 **** +--- 427,433 ---- + :""""" \@> + :call add(tl, [2, '\(a*\)\@>a', 'aaaa']) + :call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa']) ++ :call add(tl, [2, '^\(.\{-}b\)\@>.', ' abcbd', ' abc', ' ab']) + :" TODO: BT engine does not restore submatch after failure + :call add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa']) + :" +*** ../vim-7.4.019/src/testdir/test64.ok 2013-08-14 13:31:03.000000000 +0200 +--- src/testdir/test64.ok 2013-09-05 16:03:34.000000000 +0200 +*************** +*** 983,988 **** +--- 983,991 ---- + OK 0 - \(a*\)\@>b + OK 1 - \(a*\)\@>b + OK 2 - \(a*\)\@>b ++ OK 0 - ^\(.\{-}b\)\@>. ++ OK 1 - ^\(.\{-}b\)\@>. ++ OK 2 - ^\(.\{-}b\)\@>. + OK 0 - \(a*\)\@>a\|a\+ + OK 2 - \(a*\)\@>a\|a\+ + OK 0 - \_[^8-9]\+ +*** ../vim-7.4.019/src/version.c 2013-09-05 13:50:49.000000000 +0200 +--- src/version.c 2013-09-05 16:04:32.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 20, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +173. You keep tracking down the email addresses of all your friends + (even childhood friends). + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.021 b/patches/source/vim/patches/7.4.021 new file mode 100644 index 00000000..0936d9a1 --- /dev/null +++ b/patches/source/vim/patches/7.4.021 @@ -0,0 +1,86 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.021 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.021 +Problem: NFA regexp: Using \ze in one branch which doesn't match may cause + end of another branch to be wrong. (William Fugh) +Solution: Set end position if it wasn't set yet. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + + +*** ../vim-7.4.020/src/regexp_nfa.c 2013-09-05 16:05:32.000000000 +0200 +--- src/regexp_nfa.c 2013-09-05 20:56:25.000000000 +0200 +*************** +*** 4209,4218 **** + break; + + case NFA_MCLOSE: +! if (nfa_has_zend) + { +! /* Do not overwrite the position set by \ze. If no \ze +! * encountered end will be set in nfa_regtry(). */ + subs = addstate(l, state->out, subs, pim, off); + break; + } +--- 4209,4219 ---- + break; + + case NFA_MCLOSE: +! if (nfa_has_zend && (REG_MULTI +! ? subs->norm.list.multi[0].end.lnum >= 0 +! : subs->norm.list.line[0].end != NULL)) + { +! /* Do not overwrite the position set by \ze. */ + subs = addstate(l, state->out, subs, pim, off); + break; + } +*** ../vim-7.4.020/src/testdir/test64.in 2013-09-05 16:05:32.000000000 +0200 +--- src/testdir/test64.in 2013-09-05 20:55:18.000000000 +0200 +*************** +*** 328,333 **** +--- 328,334 ---- + :call add(tl, [2, 'abc \zsmatch\ze abc', 'abc abc abc match abc abc', 'match']) + :call add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if last']) + :call add(tl, [2, '\>\zs.', 'aword. ', '.']) ++ :call add(tl, [2, '\s\+\ze\[/\|\s\zs\s\+', 'is [a t', ' ']) + :" + :"""" Tests for \@= and \& features + :call add(tl, [2, 'abc\@=', 'abc', 'ab']) +*** ../vim-7.4.020/src/testdir/test64.ok 2013-09-05 16:05:32.000000000 +0200 +--- src/testdir/test64.ok 2013-09-05 21:09:56.000000000 +0200 +*************** +*** 752,757 **** +--- 752,760 ---- + OK 0 - \>\zs. + OK 1 - \>\zs. + OK 2 - \>\zs. ++ OK 0 - \s\+\ze\[/\|\s\zs\s\+ ++ OK 1 - \s\+\ze\[/\|\s\zs\s\+ ++ OK 2 - \s\+\ze\[/\|\s\zs\s\+ + OK 0 - abc\@= + OK 1 - abc\@= + OK 2 - abc\@= +*** ../vim-7.4.020/src/version.c 2013-09-05 16:05:32.000000000 +0200 +--- src/version.c 2013-09-05 21:11:38.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 21, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +174. You know what a listserv is. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.022 b/patches/source/vim/patches/7.4.022 new file mode 100644 index 00000000..81a0901f --- /dev/null +++ b/patches/source/vim/patches/7.4.022 @@ -0,0 +1,148 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.022 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.022 +Problem: Deadlock while exiting, because of allocating memory. +Solution: Do not use gettext() in deathtrap(). (James McCoy) +Files: src/os_unix.c, src/misc1.c + + +*** ../vim-7.4.021/src/os_unix.c 2013-07-03 16:32:32.000000000 +0200 +--- src/os_unix.c 2013-09-05 21:40:06.000000000 +0200 +*************** +*** 957,964 **** + + /* + * This function handles deadly signals. +! * It tries to preserve any swap file and exit properly. + * (partly from Elvis). + */ + static RETSIGTYPE + deathtrap SIGDEFARG(sigarg) +--- 957,966 ---- + + /* + * This function handles deadly signals. +! * It tries to preserve any swap files and exit properly. + * (partly from Elvis). ++ * NOTE: Avoid unsafe functions, such as allocating memory, they can result in ++ * a deadlock. + */ + static RETSIGTYPE + deathtrap SIGDEFARG(sigarg) +*************** +*** 1090,1107 **** + } + if (entered == 2) + { +! OUT_STR(_("Vim: Double signal, exiting\n")); + out_flush(); + getout(1); + } + + #ifdef SIGHASARG +! sprintf((char *)IObuff, _("Vim: Caught deadly signal %s\n"), + signal_info[i].name); + #else +! sprintf((char *)IObuff, _("Vim: Caught deadly signal\n")); + #endif +! preserve_exit(); /* preserve files and exit */ + + #ifdef NBDEBUG + reset_signals(); +--- 1092,1114 ---- + } + if (entered == 2) + { +! /* No translation, it may call malloc(). */ +! OUT_STR("Vim: Double signal, exiting\n"); + out_flush(); + getout(1); + } + ++ /* No translation, it may call malloc(). */ + #ifdef SIGHASARG +! sprintf((char *)IObuff, "Vim: Caught deadly signal %s\n", + signal_info[i].name); + #else +! sprintf((char *)IObuff, "Vim: Caught deadly signal\n"); + #endif +! +! /* Preserve files and exit. This sets the really_exiting flag to prevent +! * calling free(). */ +! preserve_exit(); + + #ifdef NBDEBUG + reset_signals(); +*** ../vim-7.4.021/src/misc1.c 2013-08-03 17:29:33.000000000 +0200 +--- src/misc1.c 2013-09-05 21:34:04.000000000 +0200 +*************** +*** 9174,9179 **** +--- 9174,9181 ---- + /* + * Preserve files and exit. + * When called IObuff must contain a message. ++ * NOTE: This may be called from deathtrap() in a signal handler, avoid unsafe ++ * functions, such as allocating memory. + */ + void + preserve_exit() +*************** +*** 9196,9202 **** + { + if (buf->b_ml.ml_mfp != NULL && buf->b_ml.ml_mfp->mf_fname != NULL) + { +! OUT_STR(_("Vim: preserving files...\n")); + screen_start(); /* don't know where cursor is now */ + out_flush(); + ml_sync_all(FALSE, FALSE); /* preserve all swap files */ +--- 9198,9204 ---- + { + if (buf->b_ml.ml_mfp != NULL && buf->b_ml.ml_mfp->mf_fname != NULL) + { +! OUT_STR("Vim: preserving files...\n"); + screen_start(); /* don't know where cursor is now */ + out_flush(); + ml_sync_all(FALSE, FALSE); /* preserve all swap files */ +*************** +*** 9206,9212 **** + + ml_close_all(FALSE); /* close all memfiles, without deleting */ + +! OUT_STR(_("Vim: Finished.\n")); + + getout(1); + } +--- 9208,9214 ---- + + ml_close_all(FALSE); /* close all memfiles, without deleting */ + +! OUT_STR("Vim: Finished.\n"); + + getout(1); + } +*** ../vim-7.4.021/src/version.c 2013-09-05 21:15:38.000000000 +0200 +--- src/version.c 2013-09-05 21:30:18.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 22, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +175. You send yourself e-mail before you go to bed to remind you + what to do when you wake up. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.023 b/patches/source/vim/patches/7.4.023 new file mode 100644 index 00000000..03005213 --- /dev/null +++ b/patches/source/vim/patches/7.4.023 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.023 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.023 +Problem: Compiler warning on 64 bit windows. +Solution: Add type cast. (Mike Williams) +Files: src/edit.c + + +*** ../vim-7.4.022/src/edit.c 2013-09-05 13:50:49.000000000 +0200 +--- src/edit.c 2013-09-06 17:32:55.000000000 +0200 +*************** +*** 5189,5195 **** + mb_ptr_back(line, p); + while (vim_isfilec(PTR2CHAR(p)) && p >= line) + mb_ptr_back(line, p); +! startcol = p - line; + + compl_col += ++startcol; + compl_length = (int)curs_col - startcol; +--- 5189,5195 ---- + mb_ptr_back(line, p); + while (vim_isfilec(PTR2CHAR(p)) && p >= line) + mb_ptr_back(line, p); +! startcol = (int)(p - line); + + compl_col += ++startcol; + compl_length = (int)curs_col - startcol; +*** ../vim-7.4.022/src/version.c 2013-09-05 21:41:35.000000000 +0200 +--- src/version.c 2013-09-06 17:33:41.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 23, + /**/ + +-- +Wizards had always known that the act of observation changed the thing that +was observed, and sometimes forgot that it also changed the observer too. + Terry Pratchett - Interesting times + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.024 b/patches/source/vim/patches/7.4.024 new file mode 100644 index 00000000..da0df9c6 --- /dev/null +++ b/patches/source/vim/patches/7.4.024 @@ -0,0 +1,61 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.024 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.024 +Problem: When root edits a file the undo file is owned by root while the + edited file may be owned by another user, which is not allowed. + (cac2s) +Solution: Accept an undo file owned by the current user. +Files: src/undo.c + + +*** ../vim-7.4.023/src/undo.c 2013-06-10 20:13:37.000000000 +0200 +--- src/undo.c 2013-09-07 15:45:56.000000000 +0200 +*************** +*** 1604,1613 **** + + #ifdef UNIX + /* For safety we only read an undo file if the owner is equal to the +! * owner of the text file. */ + if (mch_stat((char *)orig_name, &st_orig) >= 0 + && mch_stat((char *)file_name, &st_undo) >= 0 +! && st_orig.st_uid != st_undo.st_uid) + { + if (p_verbose > 0) + { +--- 1604,1614 ---- + + #ifdef UNIX + /* For safety we only read an undo file if the owner is equal to the +! * owner of the text file or equal to the current user. */ + if (mch_stat((char *)orig_name, &st_orig) >= 0 + && mch_stat((char *)file_name, &st_undo) >= 0 +! && st_orig.st_uid != st_undo.st_uid +! && st_undo.st_uid != getuid()) + { + if (p_verbose > 0) + { +*** ../vim-7.4.023/src/version.c 2013-09-07 16:35:38.000000000 +0200 +--- src/version.c 2013-09-08 15:38:52.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 24, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +186. You overstay in the office so you can have more time surfing the net. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.025 b/patches/source/vim/patches/7.4.025 new file mode 100644 index 00000000..9ead176e --- /dev/null +++ b/patches/source/vim/patches/7.4.025 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.025 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.025 (after 7.4.019 +Problem: Reading before start of a string. +Solution: Do not call mb_ptr_back() at start of a string. (Dominique Pelle) +Files: src/edit.c + + +*** ../vim-7.4.024/src/edit.c 2013-09-07 16:35:38.000000000 +0200 +--- src/edit.c 2013-09-08 15:57:20.000000000 +0200 +*************** +*** 5187,5197 **** + + /* Go back to just before the first filename character. */ + mb_ptr_back(line, p); +! while (vim_isfilec(PTR2CHAR(p)) && p >= line) + mb_ptr_back(line, p); +! startcol = (int)(p - line); + +! compl_col += ++startcol; + compl_length = (int)curs_col - startcol; + compl_pattern = addstar(line + compl_col, compl_length, + EXPAND_FILES); +--- 5187,5199 ---- + + /* Go back to just before the first filename character. */ + mb_ptr_back(line, p); +! while (p > line && vim_isfilec(PTR2CHAR(p))) + mb_ptr_back(line, p); +! startcol = (int)(p - line) + 1; +! if (p == line && vim_isfilec(PTR2CHAR(p))) +! startcol = 0; + +! compl_col += startcol; + compl_length = (int)curs_col - startcol; + compl_pattern = addstar(line + compl_col, compl_length, + EXPAND_FILES); +*** ../vim-7.4.024/src/version.c 2013-09-08 15:40:45.000000000 +0200 +--- src/version.c 2013-09-08 15:52:39.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 25, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +188. You purchase a laptop so you can surf while sitting on the can. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.026 b/patches/source/vim/patches/7.4.026 new file mode 100644 index 00000000..8add91f7 --- /dev/null +++ b/patches/source/vim/patches/7.4.026 @@ -0,0 +1,65 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.026 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.026 +Problem: Clang warning for int shift overflow. +Solution: Use unsigned and cast back to int. (Dominique Pelle) +Files: src/misc2.c + + +*** ../vim-7.4.025/src/misc2.c 2013-07-07 16:03:35.000000000 +0200 +--- src/misc2.c 2013-09-08 16:04:54.000000000 +0200 +*************** +*** 6496,6508 **** + get4c(fd) + FILE *fd; + { +! int n; + +! n = getc(fd); +! n = (n << 8) + getc(fd); +! n = (n << 8) + getc(fd); +! n = (n << 8) + getc(fd); +! return n; + } + + /* +--- 6496,6510 ---- + get4c(fd) + FILE *fd; + { +! /* Use unsigned rather than int otherwise result is undefined +! * when left-shift sets the MSB. */ +! unsigned n; + +! n = (unsigned)getc(fd); +! n = (n << 8) + (unsigned)getc(fd); +! n = (n << 8) + (unsigned)getc(fd); +! n = (n << 8) + (unsigned)getc(fd); +! return (int)n; + } + + /* +*** ../vim-7.4.025/src/version.c 2013-09-08 16:03:40.000000000 +0200 +--- src/version.c 2013-09-08 16:05:40.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 26, + /**/ + +-- +A computer program does what you tell it to do, not what you want it to do. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.027 b/patches/source/vim/patches/7.4.027 new file mode 100644 index 00000000..ab43d59a --- /dev/null +++ b/patches/source/vim/patches/7.4.027 @@ -0,0 +1,89 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.027 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.027 (after 7.4.025) +Problem: Another valgrind error when using CTRL-X CTRL-F at the start of + the line. (Dominique Pelle) +Solution: Don't call mb_ptr_back() at the start of the line. Add a test. +Files: src/edit.c, src/testdir/test32.in + + +*** ../vim-7.4.026/src/edit.c 2013-09-08 16:03:40.000000000 +0200 +--- src/edit.c 2013-09-08 18:18:32.000000000 +0200 +*************** +*** 5183,5197 **** + } + else if (ctrl_x_mode == CTRL_X_FILES) + { +- char_u *p = line + startcol; +- + /* Go back to just before the first filename character. */ +! mb_ptr_back(line, p); +! while (p > line && vim_isfilec(PTR2CHAR(p))) + mb_ptr_back(line, p); +! startcol = (int)(p - line) + 1; +! if (p == line && vim_isfilec(PTR2CHAR(p))) +! startcol = 0; + + compl_col += startcol; + compl_length = (int)curs_col - startcol; +--- 5183,5201 ---- + } + else if (ctrl_x_mode == CTRL_X_FILES) + { + /* Go back to just before the first filename character. */ +! if (startcol > 0) +! { +! char_u *p = line + startcol; +! + mb_ptr_back(line, p); +! while (p > line && vim_isfilec(PTR2CHAR(p))) +! mb_ptr_back(line, p); +! if (p == line && vim_isfilec(PTR2CHAR(p))) +! startcol = 0; +! else +! startcol = (int)(p - line) + 1; +! } + + compl_col += startcol; + compl_length = (int)curs_col - startcol; +*** ../vim-7.4.026/src/testdir/test32.in 2010-05-15 13:04:10.000000000 +0200 +--- src/testdir/test32.in 2013-09-08 18:08:07.000000000 +0200 +*************** +*** 36,41 **** +--- 36,44 ---- + :w Xtest11.one + :w Xtest11.two + OIXA ++ :" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use ++ :" CTRL-X CTRL-F again to verify this doesn't cause trouble. ++ OXddk + :se cpt=w + OST + :se cpt=u nohid +*** ../vim-7.4.026/src/version.c 2013-09-08 16:07:03.000000000 +0200 +--- src/version.c 2013-09-08 18:14:17.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 27, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +190. You quickly hand over your wallet, leather jacket, and car keys + during a mugging, then proceed to beat the crap out of your + assailant when he asks for your laptop. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.028 b/patches/source/vim/patches/7.4.028 new file mode 100644 index 00000000..4a0e3cf9 --- /dev/null +++ b/patches/source/vim/patches/7.4.028 @@ -0,0 +1,753 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.028 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.028 +Problem: Equivalence classes are not working for multi-byte characters. +Solution: Copy the rules from the old to the new regexp engine. Add a test + to check both engines. +Files: src/regexp_nfa.c, src/testdir/test44.in, src/testdir/test99.in, + src/testdir/test99.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile + + +*** ../vim-7.4.027/src/regexp_nfa.c 2013-09-05 21:15:38.000000000 +0200 +--- src/regexp_nfa.c 2013-09-19 16:40:08.000000000 +0200 +*************** +*** 742,748 **** + nfa_emit_equi_class(c) + int c; + { +! #define EMIT2(c) EMIT(c); EMIT(NFA_CONCAT); + + #ifdef FEAT_MBYTE + if (enc_utf8 || STRCMP(p_enc, "latin1") == 0 +--- 742,753 ---- + nfa_emit_equi_class(c) + int c; + { +! #define EMIT2(c) EMIT(c); EMIT(NFA_CONCAT); +! #ifdef FEAT_MBYTE +! # define EMITMBC(c) EMIT(c); EMIT(NFA_CONCAT); +! #else +! # define EMITMBC(c) +! #endif + + #ifdef FEAT_MBYTE + if (enc_utf8 || STRCMP(p_enc, "latin1") == 0 +*************** +*** 753,844 **** + { + case 'A': case 0300: case 0301: case 0302: + case 0303: case 0304: case 0305: +! EMIT2('A'); EMIT2(0300); EMIT2(0301); +! EMIT2(0302); EMIT2(0303); EMIT2(0304); +! EMIT2(0305); + return OK; + + case 'C': case 0307: +! EMIT2('C'); EMIT2(0307); + return OK; + + case 'E': case 0310: case 0311: case 0312: case 0313: +! EMIT2('E'); EMIT2(0310); EMIT2(0311); +! EMIT2(0312); EMIT2(0313); + return OK; + + case 'I': case 0314: case 0315: case 0316: case 0317: +! EMIT2('I'); EMIT2(0314); EMIT2(0315); +! EMIT2(0316); EMIT2(0317); + return OK; + + case 'N': case 0321: +! EMIT2('N'); EMIT2(0321); + return OK; + + case 'O': case 0322: case 0323: case 0324: case 0325: +! case 0326: +! EMIT2('O'); EMIT2(0322); EMIT2(0323); +! EMIT2(0324); EMIT2(0325); EMIT2(0326); + return OK; + + case 'U': case 0331: case 0332: case 0333: case 0334: +! EMIT2('U'); EMIT2(0331); EMIT2(0332); +! EMIT2(0333); EMIT2(0334); + return OK; + + case 'Y': case 0335: +! EMIT2('Y'); EMIT2(0335); + return OK; + + case 'a': case 0340: case 0341: case 0342: + case 0343: case 0344: case 0345: +! EMIT2('a'); EMIT2(0340); EMIT2(0341); +! EMIT2(0342); EMIT2(0343); EMIT2(0344); +! EMIT2(0345); + return OK; + + case 'c': case 0347: +! EMIT2('c'); EMIT2(0347); + return OK; + + case 'e': case 0350: case 0351: case 0352: case 0353: +! EMIT2('e'); EMIT2(0350); EMIT2(0351); +! EMIT2(0352); EMIT2(0353); + return OK; + + case 'i': case 0354: case 0355: case 0356: case 0357: +! EMIT2('i'); EMIT2(0354); EMIT2(0355); +! EMIT2(0356); EMIT2(0357); + return OK; + + case 'n': case 0361: +! EMIT2('n'); EMIT2(0361); + return OK; + + case 'o': case 0362: case 0363: case 0364: case 0365: +! case 0366: +! EMIT2('o'); EMIT2(0362); EMIT2(0363); +! EMIT2(0364); EMIT2(0365); EMIT2(0366); + return OK; + + case 'u': case 0371: case 0372: case 0373: case 0374: +! EMIT2('u'); EMIT2(0371); EMIT2(0372); +! EMIT2(0373); EMIT2(0374); + return OK; + + case 'y': case 0375: case 0377: +! EMIT2('y'); EMIT2(0375); EMIT2(0377); + return OK; + +! default: +! return FAIL; + } + } + +! EMIT(c); + return OK; + #undef EMIT2 + } + + /* +--- 758,1095 ---- + { + case 'A': case 0300: case 0301: case 0302: + case 0303: case 0304: case 0305: +! CASEMBC(0x100) CASEMBC(0x102) CASEMBC(0x104) CASEMBC(0x1cd) +! CASEMBC(0x1de) CASEMBC(0x1e0) CASEMBC(0x1ea2) +! EMIT2('A'); EMIT2(0300); EMIT2(0301); EMIT2(0302); +! EMIT2(0303); EMIT2(0304); EMIT2(0305); +! EMITMBC(0x100) EMITMBC(0x102) EMITMBC(0x104) +! EMITMBC(0x1cd) EMITMBC(0x1de) EMITMBC(0x1e0) +! EMITMBC(0x1ea2) +! return OK; +! +! case 'B': CASEMBC(0x1e02) CASEMBC(0x1e06) +! EMIT2('B'); EMITMBC(0x1e02) EMITMBC(0x1e06) + return OK; + + case 'C': case 0307: +! CASEMBC(0x106) CASEMBC(0x108) CASEMBC(0x10a) CASEMBC(0x10c) +! EMIT2('C'); EMIT2(0307); EMITMBC(0x106) EMITMBC(0x108) +! EMITMBC(0x10a) EMITMBC(0x10c) +! return OK; +! +! case 'D': CASEMBC(0x10e) CASEMBC(0x110) CASEMBC(0x1e0a) +! CASEMBC(0x1e0e) CASEMBC(0x1e10) +! EMIT2('D'); EMITMBC(0x10e) EMITMBC(0x110) EMITMBC(0x1e0a) +! EMITMBC(0x1e0e) EMITMBC(0x1e10) + return OK; + + case 'E': case 0310: case 0311: case 0312: case 0313: +! CASEMBC(0x112) CASEMBC(0x114) CASEMBC(0x116) CASEMBC(0x118) +! CASEMBC(0x11a) CASEMBC(0x1eba) CASEMBC(0x1ebc) +! EMIT2('E'); EMIT2(0310); EMIT2(0311); EMIT2(0312); +! EMIT2(0313); +! EMITMBC(0x112) EMITMBC(0x114) EMITMBC(0x116) +! EMITMBC(0x118) EMITMBC(0x11a) EMITMBC(0x1eba) +! EMITMBC(0x1ebc) +! return OK; +! +! case 'F': CASEMBC(0x1e1e) +! EMIT2('F'); EMITMBC(0x1e1e) +! return OK; +! +! case 'G': CASEMBC(0x11c) CASEMBC(0x11e) CASEMBC(0x120) +! CASEMBC(0x122) CASEMBC(0x1e4) CASEMBC(0x1e6) CASEMBC(0x1f4) +! CASEMBC(0x1e20) +! EMIT2('G'); EMITMBC(0x11c) EMITMBC(0x11e) EMITMBC(0x120) +! EMITMBC(0x122) EMITMBC(0x1e4) EMITMBC(0x1e6) +! EMITMBC(0x1f4) EMITMBC(0x1e20) +! return OK; +! +! case 'H': CASEMBC(0x124) CASEMBC(0x126) CASEMBC(0x1e22) +! CASEMBC(0x1e26) CASEMBC(0x1e28) +! EMIT2('H'); EMITMBC(0x124) EMITMBC(0x126) EMITMBC(0x1e22) +! EMITMBC(0x1e26) EMITMBC(0x1e28) + return OK; + + case 'I': case 0314: case 0315: case 0316: case 0317: +! CASEMBC(0x128) CASEMBC(0x12a) CASEMBC(0x12c) CASEMBC(0x12e) +! CASEMBC(0x130) CASEMBC(0x1cf) CASEMBC(0x1ec8) +! EMIT2('I'); EMIT2(0314); EMIT2(0315); EMIT2(0316); +! EMIT2(0317); EMITMBC(0x128) EMITMBC(0x12a) +! EMITMBC(0x12c) EMITMBC(0x12e) EMITMBC(0x130) +! EMITMBC(0x1cf) EMITMBC(0x1ec8) +! return OK; +! +! case 'J': CASEMBC(0x134) +! EMIT2('J'); EMITMBC(0x134) +! return OK; +! +! case 'K': CASEMBC(0x136) CASEMBC(0x1e8) CASEMBC(0x1e30) +! CASEMBC(0x1e34) +! EMIT2('K'); EMITMBC(0x136) EMITMBC(0x1e8) EMITMBC(0x1e30) +! EMITMBC(0x1e34) +! return OK; +! +! case 'L': CASEMBC(0x139) CASEMBC(0x13b) CASEMBC(0x13d) +! CASEMBC(0x13f) CASEMBC(0x141) CASEMBC(0x1e3a) +! EMIT2('L'); EMITMBC(0x139) EMITMBC(0x13b) EMITMBC(0x13d) +! EMITMBC(0x13f) EMITMBC(0x141) EMITMBC(0x1e3a) +! return OK; +! +! case 'M': CASEMBC(0x1e3e) CASEMBC(0x1e40) +! EMIT2('M'); EMITMBC(0x1e3e) EMITMBC(0x1e40) + return OK; + + case 'N': case 0321: +! CASEMBC(0x143) CASEMBC(0x145) CASEMBC(0x147) CASEMBC(0x1e44) +! CASEMBC(0x1e48) +! EMIT2('N'); EMIT2(0321); EMITMBC(0x143) EMITMBC(0x145) +! EMITMBC(0x147) EMITMBC(0x1e44) EMITMBC(0x1e48) + return OK; + + case 'O': case 0322: case 0323: case 0324: case 0325: +! case 0326: case 0330: +! CASEMBC(0x14c) CASEMBC(0x14e) CASEMBC(0x150) CASEMBC(0x1a0) +! CASEMBC(0x1d1) CASEMBC(0x1ea) CASEMBC(0x1ec) CASEMBC(0x1ece) +! EMIT2('O'); EMIT2(0322); EMIT2(0323); EMIT2(0324); +! EMIT2(0325); EMIT2(0326); EMIT2(0330); +! EMITMBC(0x14c) EMITMBC(0x14e) EMITMBC(0x150) +! EMITMBC(0x1a0) EMITMBC(0x1d1) EMITMBC(0x1ea) +! EMITMBC(0x1ec) EMITMBC(0x1ece) +! return OK; +! +! case 'P': case 0x1e54: case 0x1e56: +! EMIT2('P'); EMITMBC(0x1e54) EMITMBC(0x1e56) +! return OK; +! +! case 'R': CASEMBC(0x154) CASEMBC(0x156) CASEMBC(0x158) +! CASEMBC(0x1e58) CASEMBC(0x1e5e) +! EMIT2('R'); EMITMBC(0x154) EMITMBC(0x156) EMITMBC(0x158) +! EMITMBC(0x1e58) EMITMBC(0x1e5e) +! return OK; +! +! case 'S': CASEMBC(0x15a) CASEMBC(0x15c) CASEMBC(0x15e) +! CASEMBC(0x160) CASEMBC(0x1e60) +! EMIT2('S'); EMITMBC(0x15a) EMITMBC(0x15c) EMITMBC(0x15e) +! EMITMBC(0x160) EMITMBC(0x1e60) +! return OK; +! +! case 'T': CASEMBC(0x162) CASEMBC(0x164) CASEMBC(0x166) +! CASEMBC(0x1e6a) CASEMBC(0x1e6e) +! EMIT2('T'); EMITMBC(0x162) EMITMBC(0x164) EMITMBC(0x166) +! EMITMBC(0x1e6a) EMITMBC(0x1e6e) + return OK; + + case 'U': case 0331: case 0332: case 0333: case 0334: +! CASEMBC(0x168) CASEMBC(0x16a) CASEMBC(0x16c) CASEMBC(0x16e) +! CASEMBC(0x170) CASEMBC(0x172) CASEMBC(0x1af) CASEMBC(0x1d3) +! CASEMBC(0x1ee6) +! EMIT2('U'); EMIT2(0331); EMIT2(0332); EMIT2(0333); +! EMIT2(0334); EMITMBC(0x168) EMITMBC(0x16a) +! EMITMBC(0x16c) EMITMBC(0x16e) EMITMBC(0x170) +! EMITMBC(0x172) EMITMBC(0x1af) EMITMBC(0x1d3) +! EMITMBC(0x1ee6) +! return OK; +! +! case 'V': CASEMBC(0x1e7c) +! EMIT2('V'); EMITMBC(0x1e7c) +! return OK; +! +! case 'W': CASEMBC(0x174) CASEMBC(0x1e80) CASEMBC(0x1e82) +! CASEMBC(0x1e84) CASEMBC(0x1e86) +! EMIT2('W'); EMITMBC(0x174) EMITMBC(0x1e80) EMITMBC(0x1e82) +! EMITMBC(0x1e84) EMITMBC(0x1e86) +! return OK; +! +! case 'X': CASEMBC(0x1e8a) CASEMBC(0x1e8c) +! EMIT2('X'); EMITMBC(0x1e8a) EMITMBC(0x1e8c) + return OK; + + case 'Y': case 0335: +! CASEMBC(0x176) CASEMBC(0x178) CASEMBC(0x1e8e) CASEMBC(0x1ef2) +! CASEMBC(0x1ef6) CASEMBC(0x1ef8) +! EMIT2('Y'); EMIT2(0335); EMITMBC(0x176) EMITMBC(0x178) +! EMITMBC(0x1e8e) EMITMBC(0x1ef2) EMITMBC(0x1ef6) +! EMITMBC(0x1ef8) +! return OK; +! +! case 'Z': CASEMBC(0x179) CASEMBC(0x17b) CASEMBC(0x17d) +! CASEMBC(0x1b5) CASEMBC(0x1e90) CASEMBC(0x1e94) +! EMIT2('Z'); EMITMBC(0x179) EMITMBC(0x17b) EMITMBC(0x17d) +! EMITMBC(0x1b5) EMITMBC(0x1e90) EMITMBC(0x1e94) + return OK; + + case 'a': case 0340: case 0341: case 0342: + case 0343: case 0344: case 0345: +! CASEMBC(0x101) CASEMBC(0x103) CASEMBC(0x105) CASEMBC(0x1ce) +! CASEMBC(0x1df) CASEMBC(0x1e1) CASEMBC(0x1ea3) +! EMIT2('a'); EMIT2(0340); EMIT2(0341); EMIT2(0342); +! EMIT2(0343); EMIT2(0344); EMIT2(0345); +! EMITMBC(0x101) EMITMBC(0x103) EMITMBC(0x105) +! EMITMBC(0x1ce) EMITMBC(0x1df) EMITMBC(0x1e1) +! EMITMBC(0x1ea3) +! return OK; +! +! case 'b': CASEMBC(0x1e03) CASEMBC(0x1e07) +! EMIT2('b'); EMITMBC(0x1e03) EMITMBC(0x1e07) + return OK; + + case 'c': case 0347: +! CASEMBC(0x107) CASEMBC(0x109) CASEMBC(0x10b) CASEMBC(0x10d) +! EMIT2('c'); EMIT2(0347); EMITMBC(0x107) EMITMBC(0x109) +! EMITMBC(0x10b) EMITMBC(0x10d) +! return OK; +! +! case 'd': CASEMBC(0x10f) CASEMBC(0x111) CASEMBC(0x1d0b) +! CASEMBC(0x1e11) +! EMIT2('d'); EMITMBC(0x10f) EMITMBC(0x111) EMITMBC(0x1e0b) +! EMITMBC(0x01e0f) EMITMBC(0x1e11) + return OK; + + case 'e': case 0350: case 0351: case 0352: case 0353: +! CASEMBC(0x113) CASEMBC(0x115) CASEMBC(0x117) CASEMBC(0x119) +! CASEMBC(0x11b) CASEMBC(0x1ebb) CASEMBC(0x1ebd) +! EMIT2('e'); EMIT2(0350); EMIT2(0351); EMIT2(0352); +! EMIT2(0353); EMITMBC(0x113) EMITMBC(0x115) +! EMITMBC(0x117) EMITMBC(0x119) EMITMBC(0x11b) +! EMITMBC(0x1ebb) EMITMBC(0x1ebd) +! return OK; +! +! case 'f': CASEMBC(0x1e1f) +! EMIT2('f'); EMITMBC(0x1e1f) +! return OK; +! +! case 'g': CASEMBC(0x11d) CASEMBC(0x11f) CASEMBC(0x121) +! CASEMBC(0x123) CASEMBC(0x1e5) CASEMBC(0x1e7) CASEMBC(0x1f5) +! CASEMBC(0x1e21) +! EMIT2('g'); EMITMBC(0x11d) EMITMBC(0x11f) EMITMBC(0x121) +! EMITMBC(0x123) EMITMBC(0x1e5) EMITMBC(0x1e7) +! EMITMBC(0x1f5) EMITMBC(0x1e21) +! return OK; +! +! case 'h': CASEMBC(0x125) CASEMBC(0x127) CASEMBC(0x1e23) +! CASEMBC(0x1e27) CASEMBC(0x1e29) CASEMBC(0x1e96) +! EMIT2('h'); EMITMBC(0x125) EMITMBC(0x127) EMITMBC(0x1e23) +! EMITMBC(0x1e27) EMITMBC(0x1e29) EMITMBC(0x1e96) + return OK; + + case 'i': case 0354: case 0355: case 0356: case 0357: +! CASEMBC(0x129) CASEMBC(0x12b) CASEMBC(0x12d) CASEMBC(0x12f) +! CASEMBC(0x1d0) CASEMBC(0x1ec9) +! EMIT2('i'); EMIT2(0354); EMIT2(0355); EMIT2(0356); +! EMIT2(0357); EMITMBC(0x129) EMITMBC(0x12b) +! EMITMBC(0x12d) EMITMBC(0x12f) EMITMBC(0x1d0) +! EMITMBC(0x1ec9) +! return OK; +! +! case 'j': CASEMBC(0x135) CASEMBC(0x1f0) +! EMIT2('j'); EMITMBC(0x135) EMITMBC(0x1f0) +! return OK; +! +! case 'k': CASEMBC(0x137) CASEMBC(0x1e9) CASEMBC(0x1e31) +! CASEMBC(0x1e35) +! EMIT2('k'); EMITMBC(0x137) EMITMBC(0x1e9) EMITMBC(0x1e31) +! EMITMBC(0x1e35) +! return OK; +! +! case 'l': CASEMBC(0x13a) CASEMBC(0x13c) CASEMBC(0x13e) +! CASEMBC(0x140) CASEMBC(0x142) CASEMBC(0x1e3b) +! EMIT2('l'); EMITMBC(0x13a) EMITMBC(0x13c) EMITMBC(0x13e) +! EMITMBC(0x140) EMITMBC(0x142) EMITMBC(0x1e3b) +! return OK; +! +! case 'm': CASEMBC(0x1e3f) CASEMBC(0x1e41) +! EMIT2('m'); EMITMBC(0x1e3f) EMITMBC(0x1e41) + return OK; + + case 'n': case 0361: +! CASEMBC(0x144) CASEMBC(0x146) CASEMBC(0x148) CASEMBC(0x149) +! CASEMBC(0x1e45) CASEMBC(0x1e49) +! EMIT2('n'); EMIT2(0361); EMITMBC(0x144) EMITMBC(0x146) +! EMITMBC(0x148) EMITMBC(0x149) EMITMBC(0x1e45) +! EMITMBC(0x1e49) + return OK; + + case 'o': case 0362: case 0363: case 0364: case 0365: +! case 0366: case 0370: +! CASEMBC(0x14d) CASEMBC(0x14f) CASEMBC(0x151) CASEMBC(0x1a1) +! CASEMBC(0x1d2) CASEMBC(0x1eb) CASEMBC(0x1ed) CASEMBC(0x1ecf) +! EMIT2('o'); EMIT2(0362); EMIT2(0363); EMIT2(0364); +! EMIT2(0365); EMIT2(0366); EMIT2(0370); +! EMITMBC(0x14d) EMITMBC(0x14f) EMITMBC(0x151) +! EMITMBC(0x1a1) EMITMBC(0x1d2) EMITMBC(0x1eb) +! EMITMBC(0x1ed) EMITMBC(0x1ecf) +! return OK; +! +! case 'p': CASEMBC(0x1e55) CASEMBC(0x1e57) +! EMIT2('p'); EMITMBC(0x1e55) EMITMBC(0x1e57) +! return OK; +! +! case 'r': CASEMBC(0x155) CASEMBC(0x157) CASEMBC(0x159) +! CASEMBC(0x1e59) CASEMBC(0x1e5f) +! EMIT2('r'); EMITMBC(0x155) EMITMBC(0x157) EMITMBC(0x159) +! EMITMBC(0x1e59) EMITMBC(0x1e5f) +! return OK; +! +! case 's': CASEMBC(0x15b) CASEMBC(0x15d) CASEMBC(0x15f) +! CASEMBC(0x161) CASEMBC(0x1e61) +! EMIT2('s'); EMITMBC(0x15b) EMITMBC(0x15d) EMITMBC(0x15f) +! EMITMBC(0x161) EMITMBC(0x1e61) +! return OK; +! +! case 't': CASEMBC(0x163) CASEMBC(0x165) CASEMBC(0x167) +! CASEMBC(0x1e6b) CASEMBC(0x1e6f) CASEMBC(0x1e97) +! EMIT2('t'); EMITMBC(0x163) EMITMBC(0x165) EMITMBC(0x167) +! EMITMBC(0x1e6b) EMITMBC(0x1e6f) EMITMBC(0x1e97) + return OK; + + case 'u': case 0371: case 0372: case 0373: case 0374: +! CASEMBC(0x169) CASEMBC(0x16b) CASEMBC(0x16d) CASEMBC(0x16f) +! CASEMBC(0x171) CASEMBC(0x173) CASEMBC(0x1b0) CASEMBC(0x1d4) +! CASEMBC(0x1ee7) +! EMIT2('u'); EMIT2(0371); EMIT2(0372); EMIT2(0373); +! EMIT2(0374); EMITMBC(0x169) EMITMBC(0x16b) +! EMITMBC(0x16d) EMITMBC(0x16f) EMITMBC(0x171) +! EMITMBC(0x173) EMITMBC(0x1b0) EMITMBC(0x1d4) +! EMITMBC(0x1ee7) +! return OK; +! +! case 'v': CASEMBC(0x1e7d) +! EMIT2('v'); EMITMBC(0x1e7d) +! return OK; +! +! case 'w': CASEMBC(0x175) CASEMBC(0x1e81) CASEMBC(0x1e83) +! CASEMBC(0x1e85) CASEMBC(0x1e87) CASEMBC(0x1e98) +! EMIT2('w'); EMITMBC(0x175) EMITMBC(0x1e81) EMITMBC(0x1e83) +! EMITMBC(0x1e85) EMITMBC(0x1e87) EMITMBC(0x1e98) +! return OK; +! +! case 'x': CASEMBC(0x1e8b) CASEMBC(0x1e8d) +! EMIT2('x'); EMITMBC(0x1e8b) EMITMBC(0x1e8d) + return OK; + + case 'y': case 0375: case 0377: +! CASEMBC(0x177) CASEMBC(0x1e8f) CASEMBC(0x1e99) +! CASEMBC(0x1ef3) CASEMBC(0x1ef7) CASEMBC(0x1ef9) +! EMIT2('y'); EMIT2(0375); EMIT2(0377); EMITMBC(0x177) +! EMITMBC(0x1e8f) EMITMBC(0x1e99) EMITMBC(0x1ef3) +! EMITMBC(0x1ef7) EMITMBC(0x1ef9) +! return OK; +! +! case 'z': CASEMBC(0x17a) CASEMBC(0x17c) CASEMBC(0x17e) +! CASEMBC(0x1b6) CASEMBC(0x1e91) CASEMBC(0x1e95) +! EMIT2('z'); EMITMBC(0x17a) EMITMBC(0x17c) EMITMBC(0x17e) +! EMITMBC(0x1b6) EMITMBC(0x1e91) EMITMBC(0x1e95) + return OK; + +! /* default: character itself */ + } + } + +! EMIT2(c); + return OK; + #undef EMIT2 ++ #undef EMITMBC + } + + /* +*** ../vim-7.4.027/src/testdir/test44.in 2013-05-26 14:16:31.000000000 +0200 +--- src/testdir/test44.in 2013-09-19 16:49:14.000000000 +0200 +*************** +*** 1,9 **** +--- 1,11 ---- + Tests for regexp with multi-byte encoding and various magic settings. + Test matchstr() with a count and multi-byte chars. ++ See test99 for exactly the same test with re=2. + + STARTTEST + :so mbyte.vim + :set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo ++ :set re=1 + /^1 + /a*b\{2}c\+/e + x/\Md\*e\{2}f\+/e +*** ../vim-7.4.027/src/testdir/test99.in 2013-09-19 16:59:30.000000000 +0200 +--- src/testdir/test99.in 2013-09-19 16:50:00.000000000 +0200 +*************** +*** 0 **** +--- 1,68 ---- ++ Tests for regexp with multi-byte encoding and various magic settings. ++ Test matchstr() with a count and multi-byte chars. ++ See test44 for exactly the same test with re=1. ++ ++ STARTTEST ++ :so mbyte.vim ++ :set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo ++ :set re=2 ++ /^1 ++ /a*b\{2}c\+/e ++ x/\Md\*e\{2}f\+/e ++ x:set nomagic ++ /g\*h\{2}i\+/e ++ x/\mj*k\{2}l\+/e ++ x/\vm*n{2}o+/e ++ x/\V^aa$ ++ x:set magic ++ /\v(a)(b)\2\1\1/e ++ x/\V[ab]\(\[xy]\)\1 ++ x:" Now search for multi-byte without composing char ++ /ม ++ x:" Now search for multi-byte with composing char ++ /ม่ ++ x:" find word by change of word class ++ /ち\<カヨ\>は ++ x:" Test \%u, [\u] and friends ++ /\%u20ac ++ x/[\u4f7f\u5929]\+ ++ x/\%U12345678 ++ x/[\U1234abcd\u1234\uabcd] ++ x/\%d21879b ++ x/ [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e ++ x/ [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e ++ x:" Test backwards search from a multi-byte char ++ /x ++ x?. ++ x:let @w=':%s#comb[i]nations#œ̄ṣ́m̥̄ᾱ̆́#g' ++ :@w ++ :?^1?,$w! test.out ++ :e! test.out ++ G:put =matchstr(\"אבגד\", \".\", 0, 2) " ב ++ :put =matchstr(\"אבגד\", \"..\", 0, 2) " בג ++ :put =matchstr(\"אבגד\", \".\", 0, 0) " א ++ :put =matchstr(\"אבגד\", \".\", 4, -1) " ג ++ :w! ++ :qa! ++ ENDTEST ++ ++ 1 a aa abb abbccc ++ 2 d dd dee deefff ++ 3 g gg ghh ghhiii ++ 4 j jj jkk jkklll ++ 5 m mm mnn mnnooo ++ 6 x ^aa$ x ++ 7 (a)(b) abbaa ++ 8 axx [ab]xx ++ 9 หม่x อมx ++ a อมx หม่x ++ b ちカヨは ++ c x ¬€x ++ d 天使x ++ e y ++ f z ++ g a啷bb ++ h AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐẔ ++ i aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑẕ ++ j 0123❤x ++ k combinations +*** ../vim-7.4.027/src/testdir/test99.ok 2013-09-19 16:59:30.000000000 +0200 +--- src/testdir/test99.ok 2013-09-19 16:50:16.000000000 +0200 +*************** +*** 0 **** +--- 1,24 ---- ++ 1 a aa abb abbcc ++ 2 d dd dee deeff ++ 3 g gg ghh ghhii ++ 4 j jj jkk jkkll ++ 5 m mm mnn mnnoo ++ 6 x aa$ x ++ 7 (a)(b) abba ++ 8 axx ab]xx ++ 9 หม่x อx ++ a อมx หx ++ b カヨは ++ c x ¬x ++ d 使x ++ e y ++ f z ++ g abb ++ h AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐ ++ i aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑ ++ j 012❤ ++ k œ̄ṣ́m̥̄ᾱ̆́ ++ ב ++ בג ++ א ++ ג +*** ../vim-7.4.027/src/testdir/Make_amiga.mak 2013-07-09 13:40:02.000000000 +0200 +--- src/testdir/Make_amiga.mak 2013-09-19 16:51:48.000000000 +0200 +*************** +*** 33,39 **** + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test97.out test98.out + + .SUFFIXES: .in .out + +--- 33,40 ---- + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test97.out test98.out \ +! test99.out + + .SUFFIXES: .in .out + +*************** +*** 148,150 **** +--- 149,152 ---- + test96.out: test96.in + test97.out: test97.in + test98.out: test98.in ++ test99.out: test99.in +*** ../vim-7.4.027/src/testdir/Make_dos.mak 2013-07-09 13:40:30.000000000 +0200 +--- src/testdir/Make_dos.mak 2013-09-19 16:51:56.000000000 +0200 +*************** +*** 32,38 **** + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test98.out + + SCRIPTS32 = test50.out test70.out + +--- 32,38 ---- + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test98.out test99.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.027/src/testdir/Make_ming.mak 2013-07-09 13:40:38.000000000 +0200 +--- src/testdir/Make_ming.mak 2013-09-19 16:52:01.000000000 +0200 +*************** +*** 52,58 **** + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test98.out + + SCRIPTS32 = test50.out test70.out + +--- 52,58 ---- + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test98.out test99.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.027/src/testdir/Make_os2.mak 2013-07-09 13:40:43.000000000 +0200 +--- src/testdir/Make_os2.mak 2013-09-19 16:52:07.000000000 +0200 +*************** +*** 34,40 **** + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test98.out + + .SUFFIXES: .in .out + +--- 34,40 ---- + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test98.out test99.out + + .SUFFIXES: .in .out + +*** ../vim-7.4.027/src/testdir/Make_vms.mms 2013-07-09 13:40:47.000000000 +0200 +--- src/testdir/Make_vms.mms 2013-09-19 16:52:13.000000000 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2013 Jul 09 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2013 Sep 19 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 78,84 **** + test77.out test78.out test79.out test80.out test81.out \ + test82.out test83.out test84.out test88.out test89.out \ + test90.out test91.out test92.out test93.out test94.out \ +! test95.out test96.out test97.out test98.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 78,84 ---- + test77.out test78.out test79.out test80.out test81.out \ + test82.out test83.out test84.out test88.out test89.out \ + test90.out test91.out test92.out test93.out test94.out \ +! test95.out test96.out test97.out test98.out test99.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.4.027/src/testdir/Makefile 2013-08-10 14:20:20.000000000 +0200 +--- src/testdir/Makefile 2013-09-19 16:52:22.000000000 +0200 +*************** +*** 29,35 **** + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test97.out test98.out + + SCRIPTS_GUI = test16.out + +--- 29,36 ---- + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test97.out test98.out \ +! test99.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.4.027/src/version.c 2013-09-08 20:00:45.000000000 +0200 +--- src/version.c 2013-09-19 13:54:35.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 28, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +232. You start conversations with, "Have you gotten an ISDN line?" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.029 b/patches/source/vim/patches/7.4.029 new file mode 100644 index 00000000..b87e3a35 --- /dev/null +++ b/patches/source/vim/patches/7.4.029 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.029 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.029 +Problem: An error in a pattern is reported twice. +Solution: Remove the retry with the backtracking engine, it won't work. +Files: src/regexp.c + + +*** ../vim-7.4.028/src/regexp.c 2013-08-25 17:01:36.000000000 +0200 +--- src/regexp.c 2013-09-19 17:03:31.000000000 +0200 +*************** +*** 8016,8027 **** + } + #endif + /* +! * If NFA engine failed, then revert to the backtracking engine. +! * Except when there was a syntax error, which was properly handled by +! * NFA engine. +! */ + if (regexp_engine == AUTOMATIC_ENGINE) + prog = bt_regengine.regcomp(expr, re_flags); + } + + return prog; +--- 8016,8026 ---- + } + #endif + /* +! * If the NFA engine failed, the backtracking engine won't work either. +! * + if (regexp_engine == AUTOMATIC_ENGINE) + prog = bt_regengine.regcomp(expr, re_flags); ++ */ + } + + return prog; +*** ../vim-7.4.028/src/version.c 2013-09-19 17:00:14.000000000 +0200 +--- src/version.c 2013-09-19 17:01:13.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 29, + /**/ + +-- +The term "free software" is defined by Richard M. Stallman as +being software that isn't necessarily for free. Confusing? +Let's call it "Stallman software" then! + -- Bram Moolenaar + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.030 b/patches/source/vim/patches/7.4.030 new file mode 100644 index 00000000..d685df67 --- /dev/null +++ b/patches/source/vim/patches/7.4.030 @@ -0,0 +1,109 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.030 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.030 +Problem: The -mno-cygwin argument is no longer supported by Cygwin. +Solution: Remove the arguments. (Steve Hall) +Files: src/GvimExt/Make_cyg.mak, src/Make_cyg.mak, src/xxd/Make_cyg.mak + + +*** ../vim-7.4.029/src/GvimExt/Make_cyg.mak 2011-09-30 16:45:49.000000000 +0200 +--- src/GvimExt/Make_cyg.mak 2013-09-19 20:46:46.000000000 +0200 +*************** +*** 31,42 **** + ifeq ($(CROSS),yes) + DEL = rm + ifeq ($(MINGWOLD),yes) +! CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks + else +! CXXFLAGS := -O2 -mno-cygwin + endif + else +! CXXFLAGS := -O2 -mno-cygwin + ifneq (sh.exe, $(SHELL)) + DEL = rm + else +--- 31,42 ---- + ifeq ($(CROSS),yes) + DEL = rm + ifeq ($(MINGWOLD),yes) +! CXXFLAGS := -O2 -fvtable-thunks + else +! CXXFLAGS := -O2 + endif + else +! CXXFLAGS := -O2 + ifneq (sh.exe, $(SHELL)) + DEL = rm + else +*** ../vim-7.4.029/src/Make_cyg.mak 2013-07-06 13:32:11.000000000 +0200 +--- src/Make_cyg.mak 2013-09-19 20:46:55.000000000 +0200 +*************** +*** 1,6 **** + # + # Makefile for VIM on Win32, using Cygnus gcc +! # Last updated by Dan Sharp. Last Change: 2013 Apr 22 + # + # Also read INSTALLpc.txt! + # +--- 1,6 ---- + # + # Makefile for VIM on Win32, using Cygnus gcc +! # Last updated by Dan Sharp. Last Change: 2013 Sep 19 + # + # Also read INSTALLpc.txt! + # +*************** +*** 439,446 **** + ############################## + ifeq (yes, $(USEDLL)) + DEFINES += -D_MAX_PATH=256 -D__CYGWIN__ +- else +- INCLUDES += -mno-cygwin + endif + + ############################## +--- 439,444 ---- +*** ../vim-7.4.029/src/xxd/Make_cyg.mak 2010-05-15 13:04:06.000000000 +0200 +--- src/xxd/Make_cyg.mak 2013-09-19 20:47:05.000000000 +0200 +*************** +*** 8,14 **** + DEFINES = + LIBS = -lc + else +! DEFINES = -mno-cygwin + LIBS = + endif + +--- 8,14 ---- + DEFINES = + LIBS = -lc + else +! DEFINES = + LIBS = + endif + +*** ../vim-7.4.029/src/version.c 2013-09-19 17:03:57.000000000 +0200 +--- src/version.c 2013-09-19 20:46:32.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 30, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +237. You tattoo your email address on your forehead. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.031 b/patches/source/vim/patches/7.4.031 new file mode 100644 index 00000000..f4e49d86 --- /dev/null +++ b/patches/source/vim/patches/7.4.031 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.031 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.031 +Problem: ":diffoff!" resets options even when 'diff' is not set. (Charles + Cooper) +Solution: Only resets related options in a window where 'diff' is set. +Files: src/diff.c + + +*** ../vim-7.4.030/src/diff.c 2013-07-17 13:43:15.000000000 +0200 +--- src/diff.c 2013-09-20 19:58:47.000000000 +0200 +*************** +*** 1203,1209 **** + + for (wp = firstwin; wp != NULL; wp = wp->w_next) + { +! if (wp == curwin || (eap->forceit && wp->w_p_diff)) + { + /* Set 'diff', 'scrollbind' off and 'wrap' on. If option values + * were saved in diff_win_options() restore them. */ +--- 1203,1209 ---- + + for (wp = firstwin; wp != NULL; wp = wp->w_next) + { +! if (eap->forceit ? wp->w_p_diff : wp == curwin) + { + /* Set 'diff', 'scrollbind' off and 'wrap' on. If option values + * were saved in diff_win_options() restore them. */ +*** ../vim-7.4.030/src/version.c 2013-09-19 20:48:59.000000000 +0200 +--- src/version.c 2013-09-20 19:59:45.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 31, + /**/ + +-- +"Marriage is a wonderful institution... +but who wants to live in an institution?" + - Groucho Marx + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.032 b/patches/source/vim/patches/7.4.032 new file mode 100644 index 00000000..9e25dc4e --- /dev/null +++ b/patches/source/vim/patches/7.4.032 @@ -0,0 +1,82 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.032 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.032 +Problem: NFA engine does not match the NUL character. (Jonathon Merz) +Solution: Ues 0x0a instead of NUL. (Christian Brabandt) +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + + +*** ../vim-7.4.031/src/regexp_nfa.c 2013-09-19 17:00:14.000000000 +0200 +--- src/regexp_nfa.c 2013-09-22 13:53:46.000000000 +0200 +*************** +*** 1383,1390 **** + EMSG2_RET_FAIL( + _("E678: Invalid character after %s%%[dxouU]"), + reg_magic == MAGIC_ALL); + /* TODO: what if a composing character follows? */ +! EMIT(nr); + } + break; + +--- 1383,1391 ---- + EMSG2_RET_FAIL( + _("E678: Invalid character after %s%%[dxouU]"), + reg_magic == MAGIC_ALL); ++ /* A NUL is stored in the text as NL */ + /* TODO: what if a composing character follows? */ +! EMIT(nr == 0 ? 0x0a : nr); + } + break; + +*** ../vim-7.4.031/src/testdir/test64.in 2013-09-05 21:15:38.000000000 +0200 +--- src/testdir/test64.in 2013-09-22 13:51:53.000000000 +0200 +*************** +*** 373,378 **** +--- 373,379 ---- + :call add(tl, [2, '\%x20', 'yes no', ' ']) + :call add(tl, [2, '\%u0020', 'yes no', ' ']) + :call add(tl, [2, '\%U00000020', 'yes no', ' ']) ++ :call add(tl, [2, '\%d0', "yes\x0ano", "\x0a"]) + :" + :""""" \%[abc] + :call add(tl, [2, 'foo\%[bar]', 'fobar']) +*** ../vim-7.4.031/src/testdir/test64.ok 2013-09-05 21:15:38.000000000 +0200 +--- src/testdir/test64.ok 2013-09-22 13:52:41.000000000 +0200 +*************** +*** 863,868 **** +--- 863,871 ---- + OK 0 - \%U00000020 + OK 1 - \%U00000020 + OK 2 - \%U00000020 ++ OK 0 - \%d0 ++ OK 1 - \%d0 ++ OK 2 - \%d0 + OK 0 - foo\%[bar] + OK 1 - foo\%[bar] + OK 2 - foo\%[bar] +*** ../vim-7.4.031/src/version.c 2013-09-20 20:13:48.000000000 +0200 +--- src/version.c 2013-09-22 13:56:45.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 32, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +247. You use www.switchboard.com instead of dialing 411 and 555-12-12 + for directory assistance. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.033 b/patches/source/vim/patches/7.4.033 new file mode 100644 index 00000000..7eba8a0a --- /dev/null +++ b/patches/source/vim/patches/7.4.033 @@ -0,0 +1,116 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.033 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.033 +Problem: When the terminal has only 20 lines test 92 and 93 overwrite the + input file. +Solution: Explicitly write test.out. Check that the terminal is large enough + to run the tests. (Hirohito Higashi) +Files: src/testdir/test92.in, src/testdir/test93.in, + src/testdir/test1.in, src/testdir/Makefile + + +*** ../vim-7.4.032/src/testdir/test92.in 2013-04-18 23:33:45.000000000 +0200 +--- src/testdir/test92.in 2013-09-22 14:45:06.000000000 +0200 +*************** +*** 33,39 **** + :mksession! test.out + :new test.out + :v/\(^ *normal! 0\|^ *exe 'normal!\)/d +! :w + :qa! + ENDTEST + +--- 33,39 ---- + :mksession! test.out + :new test.out + :v/\(^ *normal! 0\|^ *exe 'normal!\)/d +! :w! test.out + :qa! + ENDTEST + +*** ../vim-7.4.032/src/testdir/test93.in 2013-02-26 17:13:01.000000000 +0100 +--- src/testdir/test93.in 2013-09-22 14:45:17.000000000 +0200 +*************** +*** 33,39 **** + :mksession! test.out + :new test.out + :v/\(^ *normal! 0\|^ *exe 'normal!\)/d +! :w + :qa! + ENDTEST + +--- 33,39 ---- + :mksession! test.out + :new test.out + :v/\(^ *normal! 0\|^ *exe 'normal!\)/d +! :w! test.out + :qa! + ENDTEST + +*** ../vim-7.4.032/src/testdir/test1.in 2012-04-05 16:37:37.000000000 +0200 +--- src/testdir/test1.in 2013-09-22 14:52:43.000000000 +0200 +*************** +*** 18,23 **** +--- 18,27 ---- + Similar logic is applied to the +lua feature, using lua.vim. + + STARTTEST ++ :" If columns or lines are too small, create wrongtermsize. ++ :" (Some tests will fail. When columns and/or lines are small) ++ :if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif ++ :" + :" Write a single line to test.out to check if testing works at all. + :%d + athis is a test:w! test.out +*** ../vim-7.4.032/src/testdir/Makefile 2013-09-19 17:00:14.000000000 +0200 +--- src/testdir/Makefile 2013-09-22 14:54:39.000000000 +0200 +*************** +*** 58,66 **** + -rm -rf *.out *.failed *.rej *.orig test.log $(RM_ON_RUN) $(RM_ON_START) valgrind.* + + test1.out: test1.in +! -rm -rf $*.failed $(RM_ON_RUN) $(RM_ON_START) + $(RUN_VIM) $*.in +! @/bin/sh -c "if diff test.out $*.ok; \ + then mv -f test.out $*.out; \ + else echo; \ + echo test1 FAILED - Something basic is wrong; \ +--- 58,70 ---- + -rm -rf *.out *.failed *.rej *.orig test.log $(RM_ON_RUN) $(RM_ON_START) valgrind.* + + test1.out: test1.in +! -rm -rf $*.failed $(RM_ON_RUN) $(RM_ON_START) wrongtermsize + $(RUN_VIM) $*.in +! @/bin/sh -c "if test -e wrongtermsize; \ +! then echo; \ +! echo test1 FAILED - terminal size must be 80x24 or larger; \ +! echo; exit 1; \ +! elif diff test.out $*.ok; \ + then mv -f test.out $*.out; \ + else echo; \ + echo test1 FAILED - Something basic is wrong; \ +*** ../vim-7.4.032/src/version.c 2013-09-22 13:57:19.000000000 +0200 +--- src/version.c 2013-09-22 15:02:04.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 33, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +248. You sign your letters with your e-mail address instead of your name. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.034 b/patches/source/vim/patches/7.4.034 new file mode 100644 index 00000000..f111e116 --- /dev/null +++ b/patches/source/vim/patches/7.4.034 @@ -0,0 +1,180 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.034 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.034 +Problem: Using "p" in Visual block mode only changes the first line. +Solution: Repeat the put in all text in the block. (Christian Brabandt) +Files: runtime/doc/change.txt, src/ops.c, src/normal.c, + src/testdir/test20.in, src/testdir/test20.ok + + +*** ../vim-7.4.033/runtime/doc/change.txt 2013-08-10 13:24:52.000000000 +0200 +--- runtime/doc/change.txt 2013-09-22 15:12:20.000000000 +0200 +*************** +*** 1069,1074 **** +--- 1069,1079 ---- + replace and use "0p . You can repeat this as many times as you like, the + unnamed register will be changed each time. + ++ When you use a blockwise Visual mode command and yank only a single line into ++ a register, a paste on a visual selected area will paste that single line on ++ each of the selected lines (thus replacing the blockwise selected region by a ++ block of the pasted line). ++ + *blockwise-register* + If you use a blockwise Visual mode command to get the text into the register, + the block of text will be inserted before ("P") or after ("p") the cursor +*** ../vim-7.4.033/src/ops.c 2013-08-09 19:34:32.000000000 +0200 +--- src/ops.c 2013-09-22 15:18:03.000000000 +0200 +*************** +*** 3776,3800 **** + */ + if (y_type == MCHAR && y_size == 1) + { +! totlen = count * yanklen; +! if (totlen) +! { +! oldp = ml_get(lnum); +! newp = alloc_check((unsigned)(STRLEN(oldp) + totlen + 1)); +! if (newp == NULL) +! goto end; /* alloc() will give error message */ +! mch_memmove(newp, oldp, (size_t)col); +! ptr = newp + col; +! for (i = 0; i < count; ++i) + { +! mch_memmove(ptr, y_array[0], (size_t)yanklen); +! ptr += yanklen; + } +! STRMOVE(ptr, oldp + col); +! ml_replace(lnum, newp, FALSE); +! /* Put cursor on last putted char. */ +! curwin->w_cursor.col += (colnr_T)(totlen - 1); +! } + curbuf->b_op_end = curwin->w_cursor; + /* For "CTRL-O p" in Insert mode, put cursor after last char */ + if (totlen && (restart_edit != 0 || (flags & PUT_CURSEND))) +--- 3776,3817 ---- + */ + if (y_type == MCHAR && y_size == 1) + { +! do { +! totlen = count * yanklen; +! if (totlen > 0) + { +! oldp = ml_get(lnum); +! newp = alloc_check((unsigned)(STRLEN(oldp) + totlen + 1)); +! if (newp == NULL) +! goto end; /* alloc() gave an error message */ +! mch_memmove(newp, oldp, (size_t)col); +! ptr = newp + col; +! for (i = 0; i < count; ++i) +! { +! mch_memmove(ptr, y_array[0], (size_t)yanklen); +! ptr += yanklen; +! } +! STRMOVE(ptr, oldp + col); +! ml_replace(lnum, newp, FALSE); +! /* Place cursor on last putted char. */ +! if (lnum == curwin->w_cursor.lnum) +! curwin->w_cursor.col += (colnr_T)(totlen - 1); + } +! #ifdef FEAT_VISUAL +! if (VIsual_active) +! lnum++; +! #endif +! } while ( +! #ifdef FEAT_VISUAL +! VIsual_active && lnum <= curbuf->b_visual.vi_end.lnum +! #else +! FALSE /* stop after 1 paste */ +! #endif +! ); +! #ifdef FEAT_VISUAL +! VIsual_active = FALSE; +! #endif +! + curbuf->b_op_end = curwin->w_cursor; + /* For "CTRL-O p" in Insert mode, put cursor after last char */ + if (totlen && (restart_edit != 0 || (flags & PUT_CURSEND))) +*** ../vim-7.4.033/src/normal.c 2013-07-14 13:24:37.000000000 +0200 +--- src/normal.c 2013-09-22 15:15:18.000000000 +0200 +*************** +*** 9518,9523 **** +--- 9518,9525 ---- + /* cursor is at the end of the line or end of file, put + * forward. */ + dir = FORWARD; ++ /* May have been reset in do_put(). */ ++ VIsual_active = TRUE; + } + #endif + do_put(cap->oap->regname, dir, cap->count1, flags); +*** ../vim-7.4.033/src/testdir/test20.in 2010-05-15 13:04:10.000000000 +0200 +--- src/testdir/test20.in 2013-09-22 15:11:37.000000000 +0200 +*************** +*** 9,19 **** + @auY:quit! + GP + /start here$ +! jjlld +! :/here$/,$-1w! test.out + :qa! + ENDTEST + + test text test tex start here + some text + test text +--- 9,25 ---- + @auY:quit! + GP + /start here$ +! "by$jjlld +! /456$ +! jj"bP +! :/56$/,$-1w! test.out + :qa! + ENDTEST + ++ 123456 ++ 234567 ++ 345678 ++ + test text test tex start here + some text + test text +*** ../vim-7.4.033/src/testdir/test20.ok 2010-05-15 13:04:10.000000000 +0200 +--- src/testdir/test20.ok 2013-09-22 15:11:37.000000000 +0200 +*************** +*** 1,3 **** +--- 1,7 ---- ++ 123start here56 ++ 234start here67 ++ 345start here78 ++ + test text test tex rt here + somext + tesext +*** ../vim-7.4.033/src/version.c 2013-09-22 15:03:34.000000000 +0200 +--- src/version.c 2013-09-22 15:14:04.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 34, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +249. You've forgotten what the outside looks like. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.035 b/patches/source/vim/patches/7.4.035 new file mode 100644 index 00000000..9c4664a6 --- /dev/null +++ b/patches/source/vim/patches/7.4.035 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.035 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.035 +Problem: MS-Windows: The mouse pointer flickers when going from command + line mode to Normal mode. +Solution: Check for WM_NCMOUSEMOVE. (Ken Takata) +Files: src/gui_w48.c + + +*** ../vim-7.4.034/src/gui_w48.c 2013-08-10 13:36:45.000000000 +0200 +--- src/gui_w48.c 2013-09-22 15:41:56.000000000 +0200 +*************** +*** 1008,1014 **** + static LPARAM last_lParam = 0L; + + /* We sometimes get a mousemove when the mouse didn't move... */ +! if (uMsg == WM_MOUSEMOVE) + { + if (lParam == last_lParam) + return; +--- 1008,1014 ---- + static LPARAM last_lParam = 0L; + + /* We sometimes get a mousemove when the mouse didn't move... */ +! if (uMsg == WM_MOUSEMOVE || uMsg == WM_NCMOUSEMOVE) + { + if (lParam == last_lParam) + return; +*** ../vim-7.4.034/src/version.c 2013-09-22 15:23:38.000000000 +0200 +--- src/version.c 2013-09-22 15:41:29.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 35, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +251. You've never seen your closest friends who usually live WAY too far away. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.036 b/patches/source/vim/patches/7.4.036 new file mode 100644 index 00000000..49afc269 --- /dev/null +++ b/patches/source/vim/patches/7.4.036 @@ -0,0 +1,273 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.036 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.036 +Problem: NFA engine does not capture group correctly when using \@>. (ZyX) +Solution: Copy submatches before doing the recursive match. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + + +*** ../vim-7.4.035/src/regexp_nfa.c 2013-09-22 13:57:19.000000000 +0200 +--- src/regexp_nfa.c 2013-09-25 16:35:54.000000000 +0200 +*************** +*** 36,42 **** + { + NFA_SPLIT = -1024, + NFA_MATCH, +! NFA_SKIP_CHAR, /* matches a 0-length char */ + + NFA_START_COLL, /* [abc] start */ + NFA_END_COLL, /* [abc] end */ +--- 36,42 ---- + { + NFA_SPLIT = -1024, + NFA_MATCH, +! NFA_EMPTY, /* matches 0-length */ + + NFA_START_COLL, /* [abc] start */ + NFA_END_COLL, /* [abc] end */ +*************** +*** 2005,2012 **** + { + /* Ignore result of previous call to nfa_regatom() */ + post_ptr = post_start + my_post_start; +! /* NFA_SKIP_CHAR has 0-length and works everywhere */ +! EMIT(NFA_SKIP_CHAR); + return OK; + } + +--- 2005,2012 ---- + { + /* Ignore result of previous call to nfa_regatom() */ + post_ptr = post_start + my_post_start; +! /* NFA_EMPTY is 0-length and works everywhere */ +! EMIT(NFA_EMPTY); + return OK; + } + +*************** +*** 2170,2185 **** + old_post_pos = (int)(post_ptr - post_start); + if (nfa_regconcat() == FAIL) + return FAIL; +! /* if concat is empty, skip a input char. But do emit a node */ + if (old_post_pos == (int)(post_ptr - post_start)) +! EMIT(NFA_SKIP_CHAR); + EMIT(NFA_CONCAT); + ch = peekchr(); + } + +! /* Even if a branch is empty, emit one node for it */ + if (old_post_pos == (int)(post_ptr - post_start)) +! EMIT(NFA_SKIP_CHAR); + + return OK; + } +--- 2170,2185 ---- + old_post_pos = (int)(post_ptr - post_start); + if (nfa_regconcat() == FAIL) + return FAIL; +! /* if concat is empty do emit a node */ + if (old_post_pos == (int)(post_ptr - post_start)) +! EMIT(NFA_EMPTY); + EMIT(NFA_CONCAT); + ch = peekchr(); + } + +! /* if a branch is empty, emit one node for it */ + if (old_post_pos == (int)(post_ptr - post_start)) +! EMIT(NFA_EMPTY); + + return OK; + } +*************** +*** 2423,2429 **** + case NFA_STAR_NONGREEDY: STRCPY(code, "NFA_STAR_NONGREEDY "); break; + case NFA_QUEST: STRCPY(code, "NFA_QUEST"); break; + case NFA_QUEST_NONGREEDY: STRCPY(code, "NFA_QUEST_NON_GREEDY"); break; +! case NFA_SKIP_CHAR: STRCPY(code, "NFA_SKIP_CHAR"); break; + case NFA_OR: STRCPY(code, "NFA_OR"); break; + + case NFA_START_COLL: STRCPY(code, "NFA_START_COLL"); break; +--- 2423,2429 ---- + case NFA_STAR_NONGREEDY: STRCPY(code, "NFA_STAR_NONGREEDY "); break; + case NFA_QUEST: STRCPY(code, "NFA_QUEST"); break; + case NFA_QUEST_NONGREEDY: STRCPY(code, "NFA_QUEST_NON_GREEDY"); break; +! case NFA_EMPTY: STRCPY(code, "NFA_EMPTY"); break; + case NFA_OR: STRCPY(code, "NFA_OR"); break; + + case NFA_START_COLL: STRCPY(code, "NFA_START_COLL"); break; +*************** +*** 3067,3073 **** + case NFA_ZSTART: + case NFA_ZEND: + case NFA_OPT_CHARS: +! case NFA_SKIP_CHAR: + case NFA_START_PATTERN: + case NFA_END_PATTERN: + case NFA_COMPOSING: +--- 3067,3073 ---- + case NFA_ZSTART: + case NFA_ZEND: + case NFA_OPT_CHARS: +! case NFA_EMPTY: + case NFA_START_PATTERN: + case NFA_END_PATTERN: + case NFA_COMPOSING: +*************** +*** 3265,3279 **** + PUSH(frag(e1.start, e2.out)); + break; + +! case NFA_SKIP_CHAR: +! /* Symbol of 0-length, Used in a repetition +! * with max/min count of 0 */ + if (nfa_calc_size == TRUE) + { + nstate++; + break; + } +! s = alloc_state(NFA_SKIP_CHAR, NULL, NULL); + if (s == NULL) + goto theend; + PUSH(frag(s, list1(&s->out))); +--- 3265,3278 ---- + PUSH(frag(e1.start, e2.out)); + break; + +! case NFA_EMPTY: +! /* 0-length, used in a repetition with max/min count of 0 */ + if (nfa_calc_size == TRUE) + { + nstate++; + break; + } +! s = alloc_state(NFA_EMPTY, NULL, NULL); + if (s == NULL) + goto theend; + PUSH(frag(s, list1(&s->out))); +*************** +*** 4209,4215 **** + case NFA_MOPEN: + case NFA_ZEND: + case NFA_SPLIT: +! case NFA_SKIP_CHAR: + /* These nodes are not added themselves but their "out" and/or + * "out1" may be added below. */ + break; +--- 4208,4214 ---- + case NFA_MOPEN: + case NFA_ZEND: + case NFA_SPLIT: +! case NFA_EMPTY: + /* These nodes are not added themselves but their "out" and/or + * "out1" may be added below. */ + break; +*************** +*** 4337,4343 **** + subs = addstate(l, state->out1, subs, pim, off); + break; + +! case NFA_SKIP_CHAR: + case NFA_NOPEN: + case NFA_NCLOSE: + subs = addstate(l, state->out, subs, pim, off); +--- 4336,4342 ---- + subs = addstate(l, state->out1, subs, pim, off); + break; + +! case NFA_EMPTY: + case NFA_NOPEN: + case NFA_NCLOSE: + subs = addstate(l, state->out, subs, pim, off); +*************** +*** 5604,5612 **** + { + int in_use = m->norm.in_use; + +! /* Copy submatch info for the recursive call, so that +! * \1 can be matched. */ + copy_sub_off(&m->norm, &t->subs.norm); + + /* + * First try matching the invisible match, then what +--- 5603,5615 ---- + { + int in_use = m->norm.in_use; + +! /* Copy submatch info for the recursive call, opposite +! * of what happens on success below. */ + copy_sub_off(&m->norm, &t->subs.norm); ++ #ifdef FEAT_SYN_HL ++ if (nfa_has_zsubexpr) ++ copy_sub_off(&m->synt, &t->subs.synt); ++ #endif + + /* + * First try matching the invisible match, then what +*************** +*** 5713,5718 **** +--- 5716,5728 ---- + #endif + break; + } ++ /* Copy submatch info to the recursive call, opposite of what ++ * happens afterwards. */ ++ copy_sub_off(&m->norm, &t->subs.norm); ++ #ifdef FEAT_SYN_HL ++ if (nfa_has_zsubexpr) ++ copy_sub_off(&m->synt, &t->subs.synt); ++ #endif + + /* First try matching the pattern. */ + result = recursive_regmatch(t->state, NULL, prog, +*** ../vim-7.4.035/src/testdir/test64.in 2013-09-22 13:57:19.000000000 +0200 +--- src/testdir/test64.in 2013-09-25 15:51:12.000000000 +0200 +*************** +*** 430,435 **** +--- 430,436 ---- + :call add(tl, [2, '\(a*\)\@>a', 'aaaa']) + :call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa']) + :call add(tl, [2, '^\(.\{-}b\)\@>.', ' abcbd', ' abc', ' ab']) ++ :call add(tl, [2, '\(.\{-}\)\(\)\@>$', 'abc', 'abc', 'abc', '']) + :" TODO: BT engine does not restore submatch after failure + :call add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa']) + :" +*** ../vim-7.4.035/src/testdir/test64.ok 2013-09-22 13:57:19.000000000 +0200 +--- src/testdir/test64.ok 2013-09-25 16:39:31.000000000 +0200 +*************** +*** 992,997 **** +--- 992,1000 ---- + OK 0 - ^\(.\{-}b\)\@>. + OK 1 - ^\(.\{-}b\)\@>. + OK 2 - ^\(.\{-}b\)\@>. ++ OK 0 - \(.\{-}\)\(\)\@>$ ++ OK 1 - \(.\{-}\)\(\)\@>$ ++ OK 2 - \(.\{-}\)\(\)\@>$ + OK 0 - \(a*\)\@>a\|a\+ + OK 2 - \(a*\)\@>a\|a\+ + OK 0 - \_[^8-9]\+ +*** ../vim-7.4.035/src/version.c 2013-09-22 15:43:34.000000000 +0200 +--- src/version.c 2013-09-25 16:40:01.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 36, + /**/ + +-- +There is a fine line between courage and foolishness. +Unfortunately, it's not a fence. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.037 b/patches/source/vim/patches/7.4.037 new file mode 100644 index 00000000..3c6369b7 --- /dev/null +++ b/patches/source/vim/patches/7.4.037 @@ -0,0 +1,130 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.037 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.037 +Problem: Using "\ze" in a sub-pattern does not result in the end of the + match to be set. (Axel Bender) +Solution: Copy the end of match position when a recursive match was + successful. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + + +*** ../vim-7.4.036/src/regexp_nfa.c 2013-09-25 16:41:50.000000000 +0200 +--- src/regexp_nfa.c 2013-09-25 18:09:59.000000000 +0200 +*************** +*** 3822,3827 **** +--- 3822,3828 ---- + static void clear_sub __ARGS((regsub_T *sub)); + static void copy_sub __ARGS((regsub_T *to, regsub_T *from)); + static void copy_sub_off __ARGS((regsub_T *to, regsub_T *from)); ++ static void copy_ze_off __ARGS((regsub_T *to, regsub_T *from)); + static int sub_equal __ARGS((regsub_T *sub1, regsub_T *sub2)); + static int match_backref __ARGS((regsub_T *sub, int subidx, int *bytelen)); + static int has_state_with_pos __ARGS((nfa_list_T *l, nfa_state_T *state, regsubs_T *subs, nfa_pim_T *pim)); +*************** +*** 3909,3914 **** +--- 3910,3938 ---- + } + + /* ++ * Like copy_sub() but only do the end of the main match if \ze is present. ++ */ ++ static void ++ copy_ze_off(to, from) ++ regsub_T *to; ++ regsub_T *from; ++ { ++ if (nfa_has_zend) ++ { ++ if (REG_MULTI) ++ { ++ if (from->list.multi[0].end.lnum >= 0) ++ to->list.multi[0].end = from->list.multi[0].end; ++ } ++ else ++ { ++ if (from->list.line[0].end != NULL) ++ to->list.line[0].end = from->list.line[0].end; ++ } ++ } ++ } ++ ++ /* + * Return TRUE if "sub1" and "sub2" have the same start positions. + */ + static int +*************** +*** 5308,5313 **** +--- 5332,5338 ---- + * When "nfa_endp" is not NULL it is a required end-of-match position. + * + * Return TRUE if there is a match, FALSE otherwise. ++ * When there is a match "submatch" contains the positions. + * Note: Caller must ensure that: start != NULL. + */ + static int +*************** +*** 5633,5638 **** +--- 5658,5666 ---- + if (nfa_has_zsubexpr) + copy_sub_off(&t->subs.synt, &m->synt); + #endif ++ /* If the pattern has \ze and it matched in the ++ * sub pattern, use it. */ ++ copy_ze_off(&t->subs.norm, &m->norm); + + /* t->state->out1 is the corresponding + * END_INVISIBLE node; Add its out to the current +*** ../vim-7.4.036/src/testdir/test64.in 2013-09-25 16:41:50.000000000 +0200 +--- src/testdir/test64.in 2013-09-25 18:09:16.000000000 +0200 +*************** +*** 425,430 **** +--- 425,431 ---- + :" + :" complicated look-behind match + :call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/']) ++ :call add(tl, [2, '^[a-z]\+\ze \&\(asdf\)\@<!', 'foo bar', 'foo']) + :" + :""""" \@> + :call add(tl, [2, '\(a*\)\@>a', 'aaaa']) +*** ../vim-7.4.036/src/testdir/test64.ok 2013-09-25 16:41:50.000000000 +0200 +--- src/testdir/test64.ok 2013-09-25 18:10:05.000000000 +0200 +*************** +*** 983,988 **** +--- 983,991 ---- + OK 0 - \(r\@<=\|\w\@<!\)\/ + OK 1 - \(r\@<=\|\w\@<!\)\/ + OK 2 - \(r\@<=\|\w\@<!\)\/ ++ OK 0 - ^[a-z]\+\ze \&\(asdf\)\@<! ++ OK 1 - ^[a-z]\+\ze \&\(asdf\)\@<! ++ OK 2 - ^[a-z]\+\ze \&\(asdf\)\@<! + OK 0 - \(a*\)\@>a + OK 1 - \(a*\)\@>a + OK 2 - \(a*\)\@>a +*** ../vim-7.4.036/src/version.c 2013-09-25 16:41:50.000000000 +0200 +--- src/version.c 2013-09-25 18:14:36.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 37, + /**/ + +-- +MAN: You don't frighten us, English pig-dog! Go and boil your bottoms, + son of a silly person. I blow my nose on you, so-called Arthur-king, + you and your silly English K...kaniggets. + He puts hands to his ears and blows a raspberry. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.038 b/patches/source/vim/patches/7.4.038 new file mode 100644 index 00000000..0aae370e --- /dev/null +++ b/patches/source/vim/patches/7.4.038 @@ -0,0 +1,116 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.038 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.038 +Problem: Using "zw" and "zg" when 'spell' is off give a confusing error + message. (Gary Johnson) +Solution: Ignore the error when locating the word. Explicitly mention what + word was added. (Christian Brabandt) +Files: src/normal.c, src/spell.c + + +*** ../vim-7.4.037/src/normal.c 2013-09-22 15:23:38.000000000 +0200 +--- src/normal.c 2013-09-25 18:54:08.000000000 +0200 +*************** +*** 5246,5253 **** + { + pos_T pos = curwin->w_cursor; + +! /* Find bad word under the cursor. */ + len = spell_move_to(curwin, FORWARD, TRUE, TRUE, NULL); + if (len != 0 && curwin->w_cursor.col <= pos.col) + ptr = ml_get_pos(&curwin->w_cursor); + curwin->w_cursor = pos; +--- 5246,5257 ---- + { + pos_T pos = curwin->w_cursor; + +! /* Find bad word under the cursor. When 'spell' is +! * off this fails and find_ident_under_cursor() is +! * used below. */ +! emsg_off++; + len = spell_move_to(curwin, FORWARD, TRUE, TRUE, NULL); ++ emsg_off--; + if (len != 0 && curwin->w_cursor.col <= pos.col) + ptr = ml_get_pos(&curwin->w_cursor); + curwin->w_cursor = pos; +*** ../vim-7.4.037/src/spell.c 2013-07-17 17:28:28.000000000 +0200 +--- src/spell.c 2013-09-25 18:48:55.000000000 +0200 +*************** +*** 9479,9485 **** + if (undo) + { + home_replace(NULL, fname, NameBuff, MAXPATHL, TRUE); +! smsg((char_u *)_("Word removed from %s"), NameBuff); + } + } + fseek(fd, fpos_next, SEEK_SET); +--- 9479,9486 ---- + if (undo) + { + home_replace(NULL, fname, NameBuff, MAXPATHL, TRUE); +! smsg((char_u *)_("Word '%.*s' removed from %s"), +! len, word, NameBuff); + } + } + fseek(fd, fpos_next, SEEK_SET); +*************** +*** 9525,9531 **** + fclose(fd); + + home_replace(NULL, fname, NameBuff, MAXPATHL, TRUE); +! smsg((char_u *)_("Word added to %s"), NameBuff); + } + } + +--- 9526,9532 ---- + fclose(fd); + + home_replace(NULL, fname, NameBuff, MAXPATHL, TRUE); +! smsg((char_u *)_("Word '%.*s' added to %s"), len, word, NameBuff); + } + } + +*************** +*** 10135,10141 **** + } + + /* +! * "z?": Find badly spelled word under or after the cursor. + * Give suggestions for the properly spelled word. + * In Visual mode use the highlighted word as the bad word. + * When "count" is non-zero use that suggestion. +--- 10136,10142 ---- + } + + /* +! * "z=": Find badly spelled word under or after the cursor. + * Give suggestions for the properly spelled word. + * In Visual mode use the highlighted word as the bad word. + * When "count" is non-zero use that suggestion. +*** ../vim-7.4.037/src/version.c 2013-09-25 18:16:34.000000000 +0200 +--- src/version.c 2013-09-25 18:52:47.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 38, + /**/ + +-- +MAN: Fetchez la vache! +GUARD: Quoi? +MAN: Fetchez la vache! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.039 b/patches/source/vim/patches/7.4.039 new file mode 100644 index 00000000..5d653e35 --- /dev/null +++ b/patches/source/vim/patches/7.4.039 @@ -0,0 +1,217 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.039 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.039 +Problem: MS-Windows: MSCV10 and earlier can't handle symlinks to a + directory properly. +Solution: Add stat_symlink_aware() and wstat_symlink_aware(). (Ken Takata) +Files: src/os_mswin.c, src/os_win32.c, src/os_win32.h + + +*** ../vim-7.4.038/src/os_mswin.c 2013-08-30 16:51:15.000000000 +0200 +--- src/os_mswin.c 2013-09-25 19:09:53.000000000 +0200 +*************** +*** 498,503 **** +--- 498,595 ---- + } + } + ++ static int ++ stat_symlink_aware(const char *name, struct stat *stp) ++ { ++ #if defined(_MSC_VER) && _MSC_VER < 1700 ++ /* Work around for VC10 or earlier. stat() can't handle symlinks properly. ++ * VC9 or earlier: stat() doesn't support a symlink at all. It retrieves ++ * status of a symlink itself. ++ * VC10: stat() supports a symlink to a normal file, but it doesn't support ++ * a symlink to a directory (always returns an error). */ ++ WIN32_FIND_DATA findData; ++ HANDLE hFind, h; ++ DWORD attr = 0; ++ BOOL is_symlink = FALSE; ++ ++ hFind = FindFirstFile(name, &findData); ++ if (hFind != INVALID_HANDLE_VALUE) ++ { ++ attr = findData.dwFileAttributes; ++ if ((attr & FILE_ATTRIBUTE_REPARSE_POINT) ++ && (findData.dwReserved0 == IO_REPARSE_TAG_SYMLINK)) ++ is_symlink = TRUE; ++ FindClose(hFind); ++ } ++ if (is_symlink) ++ { ++ h = CreateFile(name, FILE_READ_ATTRIBUTES, ++ FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, ++ OPEN_EXISTING, ++ (attr & FILE_ATTRIBUTE_DIRECTORY) ++ ? FILE_FLAG_BACKUP_SEMANTICS : 0, ++ NULL); ++ if (h != INVALID_HANDLE_VALUE) ++ { ++ int fd, n; ++ ++ fd = _open_osfhandle((intptr_t)h, _O_RDONLY); ++ n = _fstat(fd, (struct _stat*)stp); ++ _close(fd); ++ return n; ++ } ++ } ++ #endif ++ return stat(name, stp); ++ } ++ ++ #ifdef FEAT_MBYTE ++ static int ++ wstat_symlink_aware(const WCHAR *name, struct _stat *stp) ++ { ++ # if defined(_MSC_VER) && _MSC_VER < 1700 ++ /* Work around for VC10 or earlier. _wstat() can't handle symlinks properly. ++ * VC9 or earlier: _wstat() doesn't support a symlink at all. It retrieves ++ * status of a symlink itself. ++ * VC10: _wstat() supports a symlink to a normal file, but it doesn't ++ * support a symlink to a directory (always returns an error). */ ++ int n; ++ BOOL is_symlink = FALSE; ++ HANDLE hFind, h; ++ DWORD attr = 0; ++ WIN32_FIND_DATAW findDataW; ++ ++ hFind = FindFirstFileW(name, &findDataW); ++ if (hFind != INVALID_HANDLE_VALUE) ++ { ++ attr = findDataW.dwFileAttributes; ++ if ((attr & FILE_ATTRIBUTE_REPARSE_POINT) ++ && (findDataW.dwReserved0 == IO_REPARSE_TAG_SYMLINK)) ++ is_symlink = TRUE; ++ FindClose(hFind); ++ } ++ if (is_symlink) ++ { ++ h = CreateFileW(name, FILE_READ_ATTRIBUTES, ++ FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, ++ OPEN_EXISTING, ++ (attr & FILE_ATTRIBUTE_DIRECTORY) ++ ? FILE_FLAG_BACKUP_SEMANTICS : 0, ++ NULL); ++ if (h != INVALID_HANDLE_VALUE) ++ { ++ int fd; ++ ++ fd = _open_osfhandle((intptr_t)h, _O_RDONLY); ++ n = _fstat(fd, stp); ++ _close(fd); ++ return n; ++ } ++ } ++ # endif ++ return _wstat(name, stp); ++ } ++ #endif + + /* + * stat() can't handle a trailing '/' or '\', remove it first. +*************** +*** 534,540 **** + + if (wp != NULL) + { +! n = _wstat(wp, (struct _stat *)stp); + vim_free(wp); + if (n >= 0) + return n; +--- 626,632 ---- + + if (wp != NULL) + { +! n = wstat_symlink_aware(wp, (struct _stat *)stp); + vim_free(wp); + if (n >= 0) + return n; +*************** +*** 544,550 **** + } + } + #endif +! return stat(buf, stp); + } + + #if defined(FEAT_GUI_MSWIN) || defined(PROTO) +--- 636,642 ---- + } + } + #endif +! return stat_symlink_aware(buf, stp); + } + + #if defined(FEAT_GUI_MSWIN) || defined(PROTO) +*** ../vim-7.4.038/src/os_win32.c 2013-08-30 17:29:10.000000000 +0200 +--- src/os_win32.c 2013-09-25 19:09:53.000000000 +0200 +*************** +*** 78,93 **** + # endif + #endif + +- /* +- * Reparse Point +- */ +- #ifndef FILE_ATTRIBUTE_REPARSE_POINT +- # define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 +- #endif +- #ifndef IO_REPARSE_TAG_SYMLINK +- # define IO_REPARSE_TAG_SYMLINK 0xA000000C +- #endif +- + /* Record all output and all keyboard & mouse input */ + /* #define MCH_WRITE_DUMP */ + +--- 78,83 ---- +*** ../vim-7.4.038/src/os_win32.h 2013-07-21 17:53:13.000000000 +0200 +--- src/os_win32.h 2013-09-25 19:09:53.000000000 +0200 +*************** +*** 130,135 **** +--- 130,148 ---- + # define DFLT_MAXMEMTOT (5*1024) /* use up to 5 Mbyte for Vim */ + #endif + ++ /* ++ * Reparse Point ++ */ ++ #ifndef FILE_ATTRIBUTE_REPARSE_POINT ++ # define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 ++ #endif ++ #ifndef IO_REPARSE_TAG_MOUNT_POINT ++ # define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003 ++ #endif ++ #ifndef IO_REPARSE_TAG_SYMLINK ++ # define IO_REPARSE_TAG_SYMLINK 0xA000000C ++ #endif ++ + #if defined(_MSC_VER) || defined(__BORLANDC__) + /* Support for __try / __except. All versions of MSVC and Borland C are + * expected to have this. Any other compilers that support it? */ +*** ../vim-7.4.038/src/version.c 2013-09-25 18:54:20.000000000 +0200 +--- src/version.c 2013-09-25 19:08:55.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 39, + /**/ + +-- + A cow comes flying over the battlements, lowing aggressively. The cow + lands on GALAHAD'S PAGE, squashing him completely. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.040 b/patches/source/vim/patches/7.4.040 new file mode 100644 index 00000000..a6002236 --- /dev/null +++ b/patches/source/vim/patches/7.4.040 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.040 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.040 +Problem: Valgrind error on exit when a script-local variable holds a + reference to the scope of another script. +Solution: First clear all variables, then free the scopes. (ZyX) +Files: src/eval.c + + +*** ../vim-7.4.039/src/eval.c 2013-08-30 16:35:41.000000000 +0200 +--- src/eval.c 2013-09-25 20:28:15.000000000 +0200 +*************** +*** 915,926 **** + /* autoloaded script names */ + ga_clear_strings(&ga_loaded); + +! /* script-local variables */ + for (i = 1; i <= ga_scripts.ga_len; ++i) +- { + vars_clear(&SCRIPT_VARS(i)); + vim_free(SCRIPT_SV(i)); +- } + ga_clear(&ga_scripts); + + /* unreferenced lists and dicts */ +--- 915,927 ---- + /* autoloaded script names */ + ga_clear_strings(&ga_loaded); + +! /* Script-local variables. First clear all the variables and in a second +! * loop free the scriptvar_T, because a variable in one script might hold +! * a reference to the whole scope of another script. */ + for (i = 1; i <= ga_scripts.ga_len; ++i) + vars_clear(&SCRIPT_VARS(i)); ++ for (i = 1; i <= ga_scripts.ga_len; ++i) + vim_free(SCRIPT_SV(i)); + ga_clear(&ga_scripts); + + /* unreferenced lists and dicts */ +*** ../vim-7.4.039/src/version.c 2013-09-25 19:13:32.000000000 +0200 +--- src/version.c 2013-09-25 20:30:06.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 40, + /**/ + +-- + A KNIGHT rides into shot and hacks him to the ground. He rides off. + We stay for a moment on the glade. A MIDDLE-AGED LADY in a C. & A. + twin-set emerges from the trees and looks in horror at the body of her + HUSBAND. +MRS HISTORIAN: FRANK! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.041 b/patches/source/vim/patches/7.4.041 new file mode 100644 index 00000000..190604e9 --- /dev/null +++ b/patches/source/vim/patches/7.4.041 @@ -0,0 +1,61 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.041 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.041 (after 7.4.034) +Problem: Visual selection does not remain after being copied over. (Axel + Bender) +Solution: Move when VIsual_active is reset. (Christian Brabandt) +Files: src/ops.c + + +*** ../vim-7.4.040/src/ops.c 2013-09-22 15:23:38.000000000 +0200 +--- src/ops.c 2013-09-25 23:20:37.000000000 +0200 +*************** +*** 3808,3816 **** + FALSE /* stop after 1 paste */ + #endif + ); +- #ifdef FEAT_VISUAL +- VIsual_active = FALSE; +- #endif + + curbuf->b_op_end = curwin->w_cursor; + /* For "CTRL-O p" in Insert mode, put cursor after last char */ +--- 3808,3813 ---- +*************** +*** 3972,3977 **** +--- 3969,3978 ---- + if (regname == '=') + vim_free(y_array); + ++ #ifdef FEAT_VISUAL ++ VIsual_active = FALSE; ++ #endif ++ + /* If the cursor is past the end of the line put it at the end. */ + adjust_cursor_eol(); + } +*** ../vim-7.4.040/src/version.c 2013-09-25 21:00:24.000000000 +0200 +--- src/version.c 2013-09-25 23:20:46.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 41, + /**/ + + +-- +press CTRL-ALT-DEL for more information + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.042 b/patches/source/vim/patches/7.4.042 new file mode 100644 index 00000000..648a1bfe --- /dev/null +++ b/patches/source/vim/patches/7.4.042 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.042 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.042 +Problem: When using ":setlocal" for 'spell' and 'spellang' then :spelldump + doesn't work. (Dimitar Dimitrov) +Solution: Copy the option variables to the new window used to show the dump. + (Christian Brabandt) +Files: src/spell.c + + +*** ../vim-7.4.041/src/spell.c 2013-09-25 18:54:20.000000000 +0200 +--- src/spell.c 2013-09-29 13:15:51.000000000 +0200 +*************** +*** 15569,15579 **** + ex_spelldump(eap) + exarg_T *eap; + { + if (no_spell_checking(curwin)) + return; + +! /* Create a new empty buffer by splitting the window. */ + do_cmdline_cmd((char_u *)"new"); + if (!bufempty() || !buf_valid(curbuf)) + return; + +--- 15569,15589 ---- + ex_spelldump(eap) + exarg_T *eap; + { ++ char_u *spl; ++ long dummy; ++ + if (no_spell_checking(curwin)) + return; ++ get_option_value((char_u*)"spl", &dummy, &spl, OPT_LOCAL); + +! /* Create a new empty buffer in a new window. */ + do_cmdline_cmd((char_u *)"new"); ++ ++ /* enable spelling locally in the new window */ ++ set_option_value((char_u*)"spell", TRUE, (char_u*)"", OPT_LOCAL); ++ set_option_value((char_u*)"spl", dummy, spl, OPT_LOCAL); ++ vim_free(spl); ++ + if (!bufempty() || !buf_valid(curbuf)) + return; + +*** ../vim-7.4.041/src/version.c 2013-09-25 23:24:54.000000000 +0200 +--- src/version.c 2013-09-29 13:15:17.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 42, + /**/ + +-- +Experience is what you get when you don't get what you want. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.043 b/patches/source/vim/patches/7.4.043 new file mode 100644 index 00000000..0c3d852c --- /dev/null +++ b/patches/source/vim/patches/7.4.043 @@ -0,0 +1,89 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.043 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.043 +Problem: VMS can't handle long function names. +Solution: Shorten may_req_ambiguous_character_width. (Samuel Ferencik) +Files: src/main.c, src/term.c, src/proto/term.pro + + +*** ../vim-7.4.042/src/main.c 2013-08-22 14:14:23.000000000 +0200 +--- src/main.c 2013-09-29 16:23:49.000000000 +0200 +*************** +*** 812,818 **** + starttermcap(); /* start termcap if not done by wait_return() */ + TIME_MSG("start termcap"); + #if defined(FEAT_TERMRESPONSE) && defined(FEAT_MBYTE) +! may_req_ambiguous_character_width(); + #endif + + #ifdef FEAT_MOUSE +--- 812,818 ---- + starttermcap(); /* start termcap if not done by wait_return() */ + TIME_MSG("start termcap"); + #if defined(FEAT_TERMRESPONSE) && defined(FEAT_MBYTE) +! may_req_ambiguous_char_width(); + #endif + + #ifdef FEAT_MOUSE +*** ../vim-7.4.042/src/term.c 2013-07-04 22:29:28.000000000 +0200 +--- src/term.c 2013-09-29 16:27:12.000000000 +0200 +*************** +*** 3356,3362 **** + * it must be called immediately after entering termcap mode. + */ + void +! may_req_ambiguous_character_width() + { + if (u7_status == U7_GET + && cur_tmode == TMODE_RAW +--- 3356,3362 ---- + * it must be called immediately after entering termcap mode. + */ + void +! may_req_ambiguous_char_width() + { + if (u7_status == U7_GET + && cur_tmode == TMODE_RAW +*** ../vim-7.4.042/src/proto/term.pro 2013-08-10 13:37:28.000000000 +0200 +--- src/proto/term.pro 2013-09-29 16:25:02.000000000 +0200 +*************** +*** 35,41 **** + void starttermcap __ARGS((void)); + void stoptermcap __ARGS((void)); + void may_req_termresponse __ARGS((void)); +! void may_req_ambiguous_character_width __ARGS((void)); + int swapping_screen __ARGS((void)); + void setmouse __ARGS((void)); + int mouse_has __ARGS((int c)); +--- 35,41 ---- + void starttermcap __ARGS((void)); + void stoptermcap __ARGS((void)); + void may_req_termresponse __ARGS((void)); +! void may_req_ambiguous_char_width __ARGS((void)); + int swapping_screen __ARGS((void)); + void setmouse __ARGS((void)); + int mouse_has __ARGS((int c)); +*** ../vim-7.4.042/src/version.c 2013-09-29 13:38:25.000000000 +0200 +--- src/version.c 2013-09-29 16:25:16.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 43, + /**/ + +-- +Back up my hard drive? I can't find the reverse switch! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.044 b/patches/source/vim/patches/7.4.044 new file mode 100644 index 00000000..3d8832df --- /dev/null +++ b/patches/source/vim/patches/7.4.044 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.044 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.044 (after 7.4.039) +Problem: Can't build with old MSVC. (Wang Shoulin) +Solution: Define OPEN_OH_ARGTYPE instead of using intptr_t directly. +Files: src/os_mswin.c + + +*** ../vim-7.4.043/src/os_mswin.c 2013-09-25 19:13:32.000000000 +0200 +--- src/os_mswin.c 2013-09-26 20:37:38.000000000 +0200 +*************** +*** 498,503 **** +--- 498,509 ---- + } + } + ++ #if (_MSC_VER >= 1300) ++ # define OPEN_OH_ARGTYPE intptr_t ++ #else ++ # define OPEN_OH_ARGTYPE long ++ #endif ++ + static int + stat_symlink_aware(const char *name, struct stat *stp) + { +*************** +*** 533,539 **** + { + int fd, n; + +! fd = _open_osfhandle((intptr_t)h, _O_RDONLY); + n = _fstat(fd, (struct _stat*)stp); + _close(fd); + return n; +--- 539,545 ---- + { + int fd, n; + +! fd = _open_osfhandle((OPEN_OH_ARGTYPE)h, _O_RDONLY); + n = _fstat(fd, (struct _stat*)stp); + _close(fd); + return n; +*************** +*** 580,586 **** + { + int fd; + +! fd = _open_osfhandle((intptr_t)h, _O_RDONLY); + n = _fstat(fd, stp); + _close(fd); + return n; +--- 586,592 ---- + { + int fd; + +! fd = _open_osfhandle((OPEN_OH_ARGTYPE)h, _O_RDONLY); + n = _fstat(fd, stp); + _close(fd); + return n; +*** ../vim-7.4.043/src/version.c 2013-09-29 16:27:42.000000000 +0200 +--- src/version.c 2013-09-29 18:27:58.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 44, + /**/ + +-- +I'd like to meet the man who invented sex and see what he's working on now. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.045 b/patches/source/vim/patches/7.4.045 new file mode 100644 index 00000000..0e82735a --- /dev/null +++ b/patches/source/vim/patches/7.4.045 @@ -0,0 +1,111 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.045 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.045 +Problem: substitute() does not work properly when the pattern starts with + "\ze". +Solution: Detect an empty match. (Christian Brabandt) +Files: src/eval.c, src/testdir/test80.in, src/testdir/test80.ok + + +*** ../vim-7.4.044/src/eval.c 2013-09-25 21:00:24.000000000 +0200 +--- src/eval.c 2013-09-29 21:03:22.000000000 +0200 +*************** +*** 24301,24306 **** +--- 24301,24307 ---- + garray_T ga; + char_u *ret; + char_u *save_cpo; ++ int zero_width; + + /* Make 'cpoptions' empty, so that the 'l' flag doesn't work here */ + save_cpo = p_cpo; +*************** +*** 24339,24358 **** + (void)vim_regsub(®match, sub, (char_u *)ga.ga_data + + ga.ga_len + i, TRUE, TRUE, FALSE); + ga.ga_len += i + sublen - 1; +! /* avoid getting stuck on a match with an empty string */ +! if (tail == regmatch.endp[0]) + { +! if (*tail == NUL) +! break; + *((char_u *)ga.ga_data + ga.ga_len) = *tail++; + ++ga.ga_len; + } +- else +- { +- tail = regmatch.endp[0]; +- if (*tail == NUL) +- break; +- } + if (!do_all) + break; + } +--- 24340,24356 ---- + (void)vim_regsub(®match, sub, (char_u *)ga.ga_data + + ga.ga_len + i, TRUE, TRUE, FALSE); + ga.ga_len += i + sublen - 1; +! zero_width = (tail == regmatch.endp[0] +! || regmatch.startp[0] == regmatch.endp[0]); +! tail = regmatch.endp[0]; +! if (*tail == NUL) +! break; +! if (zero_width) + { +! /* avoid getting stuck on a match with an empty string */ + *((char_u *)ga.ga_data + ga.ga_len) = *tail++; + ++ga.ga_len; + } + if (!do_all) + break; + } +*** ../vim-7.4.044/src/testdir/test80.in 2013-03-19 17:30:51.000000000 +0100 +--- src/testdir/test80.in 2013-09-29 20:59:00.000000000 +0200 +*************** +*** 142,147 **** +--- 142,149 ---- + :$put =\"\n\nTEST_7:\" + :$put =substitute('A
A', 'A.', '\=submatch(0)', '') + :$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '') ++ :$put =substitute('-bb', '\zeb', 'a', 'g') ++ :$put =substitute('-bb', '\ze', 'c', 'g') + /^TEST_8 + ENDTEST + +*** ../vim-7.4.044/src/testdir/test80.ok 2013-03-19 17:31:45.000000000 +0100 +--- src/testdir/test80.ok 2013-09-29 20:59:35.000000000 +0200 +*************** +*** 103,108 **** +--- 103,110 ---- + A
A + B + B ++ -abab ++ c-cbcbc + + + TEST_8: +*** ../vim-7.4.044/src/version.c 2013-09-29 19:05:17.000000000 +0200 +--- src/version.c 2013-09-29 21:04:50.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 45, + /**/ + +-- +Just think of all the things we haven't thought of yet. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.046 b/patches/source/vim/patches/7.4.046 new file mode 100644 index 00000000..5bb42658 --- /dev/null +++ b/patches/source/vim/patches/7.4.046 @@ -0,0 +1,80 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.046 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.046 +Problem: Can't use Tcl 8.6. +Solution: Change how Tcl_FindExecutable is called. (Jan Nijtmans) +Files: src/if_tcl.c + + +*** ../vim-7.4.045/src/if_tcl.c 2013-08-02 19:31:15.000000000 +0200 +--- src/if_tcl.c 2013-10-02 13:44:48.000000000 +0200 +*************** +*** 165,170 **** +--- 165,171 ---- + */ + static HANDLE hTclLib = NULL; + Tcl_Interp* (*dll_Tcl_CreateInterp)(); ++ void (*dll_Tcl_FindExecutable)(const void *); + + /* + * Table of name to function pointer of tcl. +*************** +*** 175,180 **** +--- 176,182 ---- + TCL_PROC* ptr; + } tcl_funcname_table[] = { + {"Tcl_CreateInterp", (TCL_PROC*)&dll_Tcl_CreateInterp}, ++ {"Tcl_FindExecutable", (TCL_PROC*)&dll_Tcl_FindExecutable}, + {NULL, NULL}, + }; + +*************** +*** 248,258 **** + { + Tcl_Interp *interp; + + if (interp = dll_Tcl_CreateInterp()) + { + if (Tcl_InitStubs(interp, DYNAMIC_TCL_VER, 0)) + { +- Tcl_FindExecutable(find_executable_arg); + Tcl_DeleteInterp(interp); + stubs_initialized = TRUE; + } +--- 250,261 ---- + { + Tcl_Interp *interp; + ++ dll_Tcl_FindExecutable(find_executable_arg); ++ + if (interp = dll_Tcl_CreateInterp()) + { + if (Tcl_InitStubs(interp, DYNAMIC_TCL_VER, 0)) + { + Tcl_DeleteInterp(interp); + stubs_initialized = TRUE; + } +*** ../vim-7.4.045/src/version.c 2013-09-29 21:11:00.000000000 +0200 +--- src/version.c 2013-10-02 13:46:47.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 46, + /**/ + +-- +Not too long ago, a program was something you watched on TV... + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.047 b/patches/source/vim/patches/7.4.047 new file mode 100644 index 00000000..2871340b --- /dev/null +++ b/patches/source/vim/patches/7.4.047 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.047 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.047 +Problem: When using input() in a function invoked by a mapping it doesn't + work. +Solution: Temporarily reset ex_normal_busy. (Yasuhiro Matsumoto) +Files: src/eval.c + + +*** ../vim-7.4.046/src/eval.c 2013-09-29 21:11:00.000000000 +0200 +--- src/eval.c 2013-10-02 16:40:52.000000000 +0200 +*************** +*** 13054,13062 **** +--- 13054,13071 ---- + } + + if (defstr != NULL) ++ { ++ # ifdef FEAT_EX_EXTRA ++ int save_ex_normal_busy = ex_normal_busy; ++ ex_normal_busy = 0; ++ # endif + rettv->vval.v_string = + getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr, + xp_type, xp_arg); ++ # ifdef FEAT_EX_EXTRA ++ ex_normal_busy = save_ex_normal_busy; ++ # endif ++ } + if (inputdialog && rettv->vval.v_string == NULL + && argvars[1].v_type != VAR_UNKNOWN + && argvars[2].v_type != VAR_UNKNOWN) +*** ../vim-7.4.046/src/version.c 2013-10-02 14:25:39.000000000 +0200 +--- src/version.c 2013-10-02 16:45:45.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 47, + /**/ + +-- +Not too long ago, a keyboard was something to make music with... + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.048 b/patches/source/vim/patches/7.4.048 new file mode 100644 index 00000000..6e911a0b --- /dev/null +++ b/patches/source/vim/patches/7.4.048 @@ -0,0 +1,96 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.048 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.048 +Problem: Recent clang version complains about -fno-strength-reduce. +Solution: Add a configure check for the clang version. (Kazunobu Kuriyama) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.4.047/src/configure.in 2013-08-04 20:00:50.000000000 +0200 +--- src/configure.in 2013-10-02 17:56:25.000000000 +0200 +*************** +*** 62,67 **** +--- 62,90 ---- + fi + fi + ++ dnl clang-500.2.75 or around has abandoned -f[no-]strength-reduce and issues a ++ dnl warning when that flag is passed to. Accordingly, adjust CFLAGS based on ++ dnl the version number of the clang in use. ++ dnl Note that this does not work to get the version of clang 3.1 or 3.2. ++ AC_MSG_CHECKING(for recent clang version) ++ CLANG_VERSION_STRING=`"$CC" --version 2>/dev/null | sed -n -e 's/^.*clang.*\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\).*$/\1/p'` ++ if test x"$CLANG_VERSION_STRING" != x"" ; then ++ CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*/\1/p'` ++ CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/p'` ++ CLANG_REVISION=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)/\1/p'` ++ CLANG_VERSION=`expr $CLANG_MAJOR '*' 1000000 '+' $CLANG_MINOR '*' 1000 '+' $CLANG_REVISION` ++ AC_MSG_RESULT($CLANG_VERSION) ++ dnl If you find the same issue with versions earlier than 500.2.75, ++ dnl change the constant 500002075 below appropriately. To get the ++ dnl integer corresponding to a version number, refer to the ++ dnl definition of CLANG_VERSION above. ++ if test "$CLANG_VERSION" -ge 500002075 ; then ++ CFLAGS=`echo "$CFLAGS" | sed -n -e 's/-fno-strength-reduce/ /p'` ++ fi ++ else ++ AC_MSG_RESULT(no) ++ fi ++ + dnl If configure thinks we are cross compiling, there might be something + dnl wrong with the CC or CFLAGS settings, give a useful warning message + if test "$cross_compiling" = yes; then +*** ../vim-7.4.047/src/auto/configure 2013-08-04 20:01:06.000000000 +0200 +--- src/auto/configure 2013-10-02 17:56:52.000000000 +0200 +*************** +*** 3989,3994 **** +--- 3989,4012 ---- + fi + fi + ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for recent clang version" >&5 ++ $as_echo_n "checking for recent clang version... " >&6; } ++ CLANG_VERSION_STRING=`"$CC" --version 2>/dev/null | sed -n -e 's/^.*clang.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/p'` ++ if test x"$CLANG_VERSION_STRING" != x"" ; then ++ CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*/\1/p'` ++ CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*/\1/p'` ++ CLANG_REVISION=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\)/\1/p'` ++ CLANG_VERSION=`expr $CLANG_MAJOR '*' 1000000 '+' $CLANG_MINOR '*' 1000 '+' $CLANG_REVISION` ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CLANG_VERSION" >&5 ++ $as_echo "$CLANG_VERSION" >&6; } ++ if test "$CLANG_VERSION" -ge 500002075 ; then ++ CFLAGS=`echo "$CFLAGS" | sed -n -e 's/-fno-strength-reduce/ /p'` ++ fi ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++ $as_echo "no" >&6; } ++ fi ++ + if test "$cross_compiling" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot compile a simple program; if not cross compiling check CC and CFLAGS" >&5 + $as_echo "cannot compile a simple program; if not cross compiling check CC and CFLAGS" >&6; } +*** ../vim-7.4.047/src/version.c 2013-10-02 16:46:23.000000000 +0200 +--- src/version.c 2013-10-02 17:19:31.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 48, + /**/ + +-- +I have to exercise early in the morning before my brain +figures out what I'm doing. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.049 b/patches/source/vim/patches/7.4.049 new file mode 100644 index 00000000..c1a23b98 --- /dev/null +++ b/patches/source/vim/patches/7.4.049 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.049 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.049 +Problem: In Ex mode, when line numbers are enabled the substitute prompt is + wrong. +Solution: Adjust for the line number size. (Benoit Pierre) +Files: src/ex_cmds.c + + +*** ../vim-7.4.048/src/ex_cmds.c 2013-08-07 15:15:51.000000000 +0200 +--- src/ex_cmds.c 2013-10-02 18:31:24.000000000 +0200 +*************** +*** 4740,4750 **** + char_u *resp; + colnr_T sc, ec; + +! print_line_no_prefix(lnum, FALSE, FALSE); + + getvcol(curwin, &curwin->w_cursor, &sc, NULL, NULL); + curwin->w_cursor.col = regmatch.endpos[0].col - 1; + getvcol(curwin, &curwin->w_cursor, NULL, NULL, &ec); + msg_start(); + for (i = 0; i < (long)sc; ++i) + msg_putchar(' '); +--- 4740,4756 ---- + char_u *resp; + colnr_T sc, ec; + +! print_line_no_prefix(lnum, do_number, do_list); + + getvcol(curwin, &curwin->w_cursor, &sc, NULL, NULL); + curwin->w_cursor.col = regmatch.endpos[0].col - 1; + getvcol(curwin, &curwin->w_cursor, NULL, NULL, &ec); ++ if (do_number || curwin->w_p_nu) ++ { ++ int numw = number_width(curwin) + 1; ++ sc += numw; ++ ec += numw; ++ } + msg_start(); + for (i = 0; i < (long)sc; ++i) + msg_putchar(' '); +*** ../vim-7.4.048/src/version.c 2013-10-02 18:22:58.000000000 +0200 +--- src/version.c 2013-10-02 18:33:22.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 49, + /**/ + +-- +What the word 'politics' means: 'Poli' in Latin meaning 'many' and 'tics' +meaning 'bloodsucking creatures'. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.050 b/patches/source/vim/patches/7.4.050 new file mode 100644 index 00000000..afe2b044 --- /dev/null +++ b/patches/source/vim/patches/7.4.050 @@ -0,0 +1,90 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.050 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.050 +Problem: "gn" selects too much for the pattern "\d" when there are two + lines with a single digit. (Ryan Carney) +Solution: Adjust the logic of is_one_char(). (Christian Brabandt) +Files: src/search.c, src/testdir/test53.in, src/testdir/test53.ok + + +*** ../vim-7.4.049/src/search.c 2013-08-14 17:45:25.000000000 +0200 +--- src/search.c 2013-10-02 21:49:40.000000000 +0200 +*************** +*** 4680,4687 **** + && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum + && regmatch.startpos[0].col == regmatch.endpos[0].col); + +! if (!result && incl(&pos) == 0 && pos.col == regmatch.endpos[0].col) +! result = TRUE; + } + + called_emsg |= save_called_emsg; +--- 4680,4687 ---- + && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum + && regmatch.startpos[0].col == regmatch.endpos[0].col); + +! if (!result && inc(&pos) >= 0 && pos.col == regmatch.endpos[0].col) +! result = TRUE; + } + + called_emsg |= save_called_emsg; +*** ../vim-7.4.049/src/testdir/test53.in 2013-06-30 14:31:56.000000000 +0200 +--- src/testdir/test53.in 2013-10-02 21:47:10.000000000 +0200 +*************** +*** 46,51 **** +--- 46,54 ---- + :set selection=exclusive + $cgNmongoose/i + cgnj ++ :" Make sure there is no other match y uppercase. ++ /x59 ++ gggnd + :/^start:/,/^end:/wq! test.out + ENDTEST + +*************** +*** 75,78 **** +--- 78,84 ---- + uniquepattern uniquepattern + my very excellent mother just served us nachos + for (i=0; i<=10; i++) ++ Y ++ text ++ Y + end: +*** ../vim-7.4.049/src/testdir/test53.ok 2013-06-30 14:31:56.000000000 +0200 +--- src/testdir/test53.ok 2013-10-02 21:47:34.000000000 +0200 +*************** +*** 27,30 **** +--- 27,33 ---- + uniquepattern + my very excellent mongoose just served us nachos + for (j=0; i<=10; i++) ++ ++ text ++ Y + end: +*** ../vim-7.4.049/src/version.c 2013-10-02 18:43:00.000000000 +0200 +--- src/version.c 2013-10-02 21:51:34.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 50, + /**/ + +-- +Why doesn't Tarzan have a beard? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.051 b/patches/source/vim/patches/7.4.051 new file mode 100644 index 00000000..ca5c3a04 --- /dev/null +++ b/patches/source/vim/patches/7.4.051 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.051 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.051 +Problem: Syntax highlighting a Yaml file causes a crash. (Blake Preston) +Solution: Copy the pim structure before calling addstate() to avoid it + becoming invalide when the state list is reallocated. +Files: src/regexp_nfa.c + + +*** ../vim-7.4.050/src/regexp_nfa.c 2013-09-25 18:16:34.000000000 +0200 +--- src/regexp_nfa.c 2013-10-06 15:44:31.000000000 +0200 +*************** +*** 6458,6463 **** +--- 6458,6464 ---- + if (add_state != NULL) + { + nfa_pim_T *pim; ++ nfa_pim_T pim_copy; + + if (t->pim.result == NFA_PIM_UNUSED) + pim = NULL; +*************** +*** 6531,6536 **** +--- 6532,6546 ---- + pim = NULL; + } + ++ /* If "pim" points into l->t it will become invalid when ++ * adding the state causes the list to be reallocated. Make a ++ * local copy to avoid that. */ ++ if (pim == &t->pim) ++ { ++ copy_pim(&pim_copy, pim); ++ pim = &pim_copy; ++ } ++ + if (add_here) + addstate_here(thislist, add_state, &t->subs, pim, &listidx); + else +*** ../vim-7.4.050/src/version.c 2013-10-02 21:54:57.000000000 +0200 +--- src/version.c 2013-10-06 15:21:16.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 51, + /**/ + +-- +GUARD #2: It could be carried by an African swallow! +GUARD #1: Oh, yeah, an African swallow maybe, but not a European swallow, + that's my point. +GUARD #2: Oh, yeah, I agree with that... + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.052 b/patches/source/vim/patches/7.4.052 new file mode 100644 index 00000000..502d07b5 --- /dev/null +++ b/patches/source/vim/patches/7.4.052 @@ -0,0 +1,197 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.052 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.052 +Problem: With 'fo' set to "a2" inserting a space in the first column may + cause the cursor to jump to the previous line. +Solution: Handle the case when there is no comment leader properly. (Tor + Perkins) Also fix that cursor is in the wrong place when spaces + get replaced with a Tab. +Files: src/misc1.c, src/ops.c, src/testdir/test68.in, + src/testdir/test68.ok + + +*** ../vim-7.4.051/src/misc1.c 2013-09-05 21:41:35.000000000 +0200 +--- src/misc1.c 2013-10-06 17:46:18.000000000 +0200 +*************** +*** 303,312 **** + ml_replace(curwin->w_cursor.lnum, newline, FALSE); + if (flags & SIN_CHANGED) + changed_bytes(curwin->w_cursor.lnum, 0); +! /* Correct saved cursor position if it's after the indent. */ +! if (saved_cursor.lnum == curwin->w_cursor.lnum +! && saved_cursor.col >= (colnr_T)(p - oldline)) +! saved_cursor.col += ind_len - (colnr_T)(p - oldline); + retval = TRUE; + } + else +--- 303,320 ---- + ml_replace(curwin->w_cursor.lnum, newline, FALSE); + if (flags & SIN_CHANGED) + changed_bytes(curwin->w_cursor.lnum, 0); +! /* Correct saved cursor position if it is in this line. */ +! if (saved_cursor.lnum == curwin->w_cursor.lnum) +! { +! if (saved_cursor.col >= (colnr_T)(p - oldline)) +! /* cursor was after the indent, adjust for the number of +! * bytes added/removed */ +! saved_cursor.col += ind_len - (colnr_T)(p - oldline); +! else if (saved_cursor.col >= (colnr_T)(s - newline)) +! /* cursor was in the indent, and is now after it, put it back +! * at the start of the indent (replacing spaces with TAB) */ +! saved_cursor.col = (colnr_T)(s - newline); +! } + retval = TRUE; + } + else +*************** +*** 1581,1589 **** + + #if defined(FEAT_COMMENTS) || defined(PROTO) + /* +! * get_leader_len() returns the length of the prefix of the given string +! * which introduces a comment. If this string is not a comment then 0 is +! * returned. + * When "flags" is not NULL, it is set to point to the flags of the recognized + * comment leader. + * "backward" must be true for the "O" command. +--- 1589,1597 ---- + + #if defined(FEAT_COMMENTS) || defined(PROTO) + /* +! * get_leader_len() returns the length in bytes of the prefix of the given +! * string which introduces a comment. If this string is not a comment then +! * 0 is returned. + * When "flags" is not NULL, it is set to point to the flags of the recognized + * comment leader. + * "backward" must be true for the "O" command. +*** ../vim-7.4.051/src/ops.c 2013-09-25 23:24:54.000000000 +0200 +--- src/ops.c 2013-10-06 17:11:51.000000000 +0200 +*************** +*** 4989,4995 **** + + /* + * When still in same paragraph, join the lines together. But +! * first delete the comment leader from the second line. + */ + if (!is_end_par) + { +--- 4989,4995 ---- + + /* + * When still in same paragraph, join the lines together. But +! * first delete the leader from the second line. + */ + if (!is_end_par) + { +*************** +*** 4999,5009 **** + if (line_count < 0 && u_save_cursor() == FAIL) + break; + #ifdef FEAT_COMMENTS +- (void)del_bytes((long)next_leader_len, FALSE, FALSE); + if (next_leader_len > 0) + mark_col_adjust(curwin->w_cursor.lnum, (colnr_T)0, 0L, + (long)-next_leader_len); + #endif + curwin->w_cursor.lnum--; + if (do_join(2, TRUE, FALSE, FALSE) == FAIL) + { +--- 4999,5023 ---- + if (line_count < 0 && u_save_cursor() == FAIL) + break; + #ifdef FEAT_COMMENTS + if (next_leader_len > 0) ++ { ++ (void)del_bytes((long)next_leader_len, FALSE, FALSE); + mark_col_adjust(curwin->w_cursor.lnum, (colnr_T)0, 0L, + (long)-next_leader_len); ++ } else + #endif ++ if (second_indent > 0) /* the "leader" for FO_Q_SECOND */ ++ { ++ char_u *p = ml_get_curline(); ++ int indent = skipwhite(p) - p; ++ ++ if (indent > 0) ++ { ++ (void)del_bytes(indent, FALSE, FALSE); ++ mark_col_adjust(curwin->w_cursor.lnum, ++ (colnr_T)0, 0L, (long)-indent); ++ } ++ } + curwin->w_cursor.lnum--; + if (do_join(2, TRUE, FALSE, FALSE) == FAIL) + { +*** ../vim-7.4.051/src/testdir/test68.in 2012-07-25 15:57:06.000000000 +0200 +--- src/testdir/test68.in 2013-10-06 16:20:33.000000000 +0200 +*************** +*** 62,67 **** +--- 62,81 ---- + } + + STARTTEST ++ /^{/+3 ++ :set tw=5 fo=t2a si ++ i A_ ++ ENDTEST ++ ++ { ++ ++ x a ++ b ++ c ++ ++ } ++ ++ STARTTEST + /^{/+1 + :set tw=5 fo=qn comments=:# + gwap +*** ../vim-7.4.051/src/testdir/test68.ok 2012-07-25 16:03:05.000000000 +0200 +--- src/testdir/test68.ok 2013-10-06 16:20:33.000000000 +0200 +*************** +*** 43,48 **** +--- 43,57 ---- + + + { ++ ++ x a ++ b_ ++ c ++ ++ } ++ ++ ++ { + # 1 a + # b + } +*** ../vim-7.4.051/src/version.c 2013-10-06 15:46:06.000000000 +0200 +--- src/version.c 2013-10-06 17:25:27.000000000 +0200 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 52, + /**/ + +-- +ARTHUR: Will you ask your master if he wants to join my court at Camelot?! +GUARD #1: But then of course African swallows are not migratory. +GUARD #2: Oh, yeah... +GUARD #1: So they couldn't bring a coconut back anyway... + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.053 b/patches/source/vim/patches/7.4.053 new file mode 100644 index 00000000..22724fc7 --- /dev/null +++ b/patches/source/vim/patches/7.4.053 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.053 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.053 +Problem: Test75 has a wrong header. (ZyX) +Solution: Fix the text and remove leading ". +Files: src/testdir/test75.in + + +*** ../vim-7.4.052/src/testdir/test75.in 2013-06-29 13:48:42.000000000 +0200 +--- src/testdir/test75.in 2013-10-19 20:28:53.000000000 +0200 +*************** +*** 1,4 **** +! " Tests for functions. + + STARTTEST + :so small.vim +--- 1,4 ---- +! Tests for maparg(). + + STARTTEST + :so small.vim +*** ../vim-7.4.052/src/version.c 2013-10-06 17:46:48.000000000 +0200 +--- src/version.c 2013-11-02 04:18:07.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 53, + /**/ + +-- +Every exit is an entrance into something else. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.054 b/patches/source/vim/patches/7.4.054 new file mode 100644 index 00000000..0fcffac2 --- /dev/null +++ b/patches/source/vim/patches/7.4.054 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.054 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.054 +Problem: Reading past end of the 'stl' string. +Solution: Don't increment pointer when already at the NUL. (Christian + Brabandt) +Files: src/buffer.c + + +*** ../vim-7.4.053/src/buffer.c 2013-08-14 17:11:14.000000000 +0200 +--- src/buffer.c 2013-11-02 04:34:26.000000000 +0100 +*************** +*** 4062,4068 **** + item[curitem].minwid = -syn_namen2id(t, (int)(s - t)); + curitem++; + } +! ++s; + continue; + } + +--- 4062,4069 ---- + item[curitem].minwid = -syn_namen2id(t, (int)(s - t)); + curitem++; + } +! if (*s != NUL) +! ++s; + continue; + } + +*** ../vim-7.4.053/src/version.c 2013-11-02 04:19:10.000000000 +0100 +--- src/version.c 2013-11-02 04:31:50.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 54, + /**/ + +-- +Every person is responsible for the choices he makes. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.055 b/patches/source/vim/patches/7.4.055 new file mode 100644 index 00000000..b6adc044 --- /dev/null +++ b/patches/source/vim/patches/7.4.055 @@ -0,0 +1,138 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.055 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.055 +Problem: Mac: Where availability macros are defined depends on the system. +Solution: Add a configure check. (Felix Bünemann) +Files: src/config.h.in, src/configure.in, src/auto/configure, + src/os_mac.h + +*** ../vim-7.4.054/src/config.h.in 2013-02-26 14:18:19.000000000 +0100 +--- src/config.h.in 2013-11-02 20:52:08.000000000 +0100 +*************** +*** 442,444 **** +--- 442,447 ---- + + /* Define if you want Cygwin to use the WIN32 clipboard, not compatible with X11*/ + #undef FEAT_CYGWIN_WIN32_CLIPBOARD ++ ++ /* Define if we have AvailabilityMacros.h on Mac OS X */ ++ #undef HAVE_AVAILABILITYMACROS_H +*** ../vim-7.4.054/src/configure.in 2013-10-02 18:22:58.000000000 +0200 +--- src/configure.in 2013-11-02 20:58:58.000000000 +0100 +*************** +*** 206,211 **** +--- 206,215 ---- + dnl TODO: use -arch i386 on Intel machines + CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp" + ++ dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon ++ dnl so we need to include it to have access to version macros. ++ AC_CHECK_HEADER(AvailabilityMacros.h, [AC_DEFINE(HAVE_AVAILABILITYMACROS_H, 1, [ Define if we have AvailabilityMacros.h on Mac OS X ])]) ++ + dnl If Carbon is found, assume we don't want X11 + dnl unless it was specifically asked for (--with-x) + dnl or Motif, Athena or GTK GUI is used. +*** ../vim-7.4.054/src/auto/configure 2013-10-02 18:22:58.000000000 +0200 +--- src/auto/configure 2013-11-02 21:00:40.000000000 +0100 +*************** +*** 4223,4229 **** + OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o" + CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp" + +! # On IRIX 5.3, sys/types and inttypes.h are conflicting. + for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h + do : +--- 4223,4229 ---- + OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o" + CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp" + +! # On IRIX 5.3, sys/types and inttypes.h are conflicting. + for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h + do : +*************** +*** 4241,4247 **** + done + + +! ac_fn_c_check_header_mongrel "$LINENO" "Carbon/Carbon.h" "ac_cv_header_Carbon_Carbon_h" "$ac_includes_default" + if test "x$ac_cv_header_Carbon_Carbon_h" = x""yes; then : + CARBON=yes + fi +--- 4241,4256 ---- + done + + +! ac_fn_c_check_header_mongrel "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default" +! if test "x$ac_cv_header_AvailabilityMacros_h" = x""yes; then : +! +! $as_echo "#define HAVE_AVAILABILITYMACROS_H 1" >>confdefs.h +! +! fi +! +! +! +! ac_fn_c_check_header_mongrel "$LINENO" "Carbon/Carbon.h" "ac_cv_header_Carbon_Carbon_h" "$ac_includes_default" + if test "x$ac_cv_header_Carbon_Carbon_h" = x""yes; then : + CARBON=yes + fi +*** ../vim-7.4.054/src/os_mac.h 2013-05-06 04:06:04.000000000 +0200 +--- src/os_mac.h 2013-11-02 20:59:46.000000000 +0100 +*************** +*** 16,21 **** +--- 16,26 ---- + # define OPAQUE_TOOLBOX_STRUCTS 0 + #endif + ++ /* Include MAC_OS_X_VERSION_* macros */ ++ #ifdef HAVE_AVAILABILITYMACROS_H ++ # include <AvailabilityMacros.h> ++ #endif ++ + /* + * Macintosh machine-dependent things. + * +*************** +*** 263,269 **** + #endif + + /* Some "prep work" definition to be able to compile the MacOS X +! * version with os_unix.x instead of os_mac.c. Based on the result + * of ./configure for console MacOS X. + */ + +--- 268,274 ---- + #endif + + /* Some "prep work" definition to be able to compile the MacOS X +! * version with os_unix.c instead of os_mac.c. Based on the result + * of ./configure for console MacOS X. + */ + +*** ../vim-7.4.054/src/version.c 2013-11-02 04:39:34.000000000 +0100 +--- src/version.c 2013-11-02 21:01:10.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 55, + /**/ + +-- +You can be stopped by the police for biking over 65 miles per hour. +You are not allowed to walk across a street on your hands. + [real standing laws in Connecticut, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.056 b/patches/source/vim/patches/7.4.056 new file mode 100644 index 00000000..e8c1a346 --- /dev/null +++ b/patches/source/vim/patches/7.4.056 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.056 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.056 +Problem: Mac: Compilation problem with OS X 10.9 Mavericks. +Solution: Include AvailabilityMacros.h when available. (Kazunobu Kuriyama) +Files: src/os_unix.c + + +*** ../vim-7.4.055/src/os_unix.c 2013-09-05 21:41:35.000000000 +0200 +--- src/os_unix.c 2013-11-02 21:46:05.000000000 +0100 +*************** +*** 804,809 **** +--- 804,815 ---- + * completely full. + */ + ++ #if defined(HAVE_AVAILABILITYMACROS_H) \ ++ && defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) \ ++ && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090) ++ # include <AvailabilityMacros.h> ++ #endif ++ + #ifndef SIGSTKSZ + # define SIGSTKSZ 8000 /* just a guess of how much stack is needed... */ + #endif +*** ../vim-7.4.055/src/version.c 2013-11-02 21:04:32.000000000 +0100 +--- src/version.c 2013-11-02 21:44:10.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 56, + /**/ + +-- +If an elephant is left tied to a parking meter, the parking fee has to be paid +just as it would for a vehicle. + [real standing law in Florida, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.057 b/patches/source/vim/patches/7.4.057 new file mode 100644 index 00000000..aee16b6a --- /dev/null +++ b/patches/source/vim/patches/7.4.057 @@ -0,0 +1,252 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.057 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.057 +Problem: byteidx() does not work for composing characters. +Solution: Add byteidxcomp(). +Files: src/eval.c, src/testdir/test69.in, src/testdir/test69.ok, + runtime/doc/eval.txt + + +*** ../vim-7.4.056/src/eval.c 2013-10-02 16:46:23.000000000 +0200 +--- src/eval.c 2013-11-02 22:30:08.000000000 +0100 +*************** +*** 474,480 **** +--- 474,482 ---- + static void f_bufnr __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_bufwinnr __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_byte2line __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void byteidx __ARGS((typval_T *argvars, typval_T *rettv, int comp)); + static void f_byteidx __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_byteidxcomp __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_call __ARGS((typval_T *argvars, typval_T *rettv)); + #ifdef FEAT_FLOAT + static void f_ceil __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 7861,7866 **** +--- 7863,7869 ---- + {"bufwinnr", 1, 1, f_bufwinnr}, + {"byte2line", 1, 1, f_byte2line}, + {"byteidx", 2, 2, f_byteidx}, ++ {"byteidxcomp", 2, 2, f_byteidxcomp}, + {"call", 2, 3, f_call}, + #ifdef FEAT_FLOAT + {"ceil", 1, 1, f_ceil}, +*************** +*** 9177,9189 **** + #endif + } + +- /* +- * "byteidx()" function +- */ + static void +! f_byteidx(argvars, rettv) + typval_T *argvars; + typval_T *rettv; + { + #ifdef FEAT_MBYTE + char_u *t; +--- 9180,9190 ---- + #endif + } + + static void +! byteidx(argvars, rettv, comp) + typval_T *argvars; + typval_T *rettv; ++ int comp; + { + #ifdef FEAT_MBYTE + char_u *t; +*************** +*** 9203,9209 **** + { + if (*t == NUL) /* EOL reached */ + return; +! t += (*mb_ptr2len)(t); + } + rettv->vval.v_number = (varnumber_T)(t - str); + #else +--- 9204,9213 ---- + { + if (*t == NUL) /* EOL reached */ + return; +! if (enc_utf8 && comp) +! t += utf_ptr2len(t); +! else +! t += (*mb_ptr2len)(t); + } + rettv->vval.v_number = (varnumber_T)(t - str); + #else +*************** +*** 9212,9217 **** +--- 9216,9243 ---- + #endif + } + ++ /* ++ * "byteidx()" function ++ */ ++ static void ++ f_byteidx(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ byteidx(argvars, rettv, FALSE); ++ } ++ ++ /* ++ * "byteidxcomp()" function ++ */ ++ static void ++ f_byteidxcomp(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ byteidx(argvars, rettv, TRUE); ++ } ++ + int + func_call(name, args, selfdict, rettv) + char_u *name; +*** ../vim-7.4.056/src/testdir/test69.in 2013-03-07 18:30:50.000000000 +0100 +--- src/testdir/test69.in 2013-11-02 22:46:02.000000000 +0100 +*************** +*** 1,6 **** +--- 1,7 ---- + Test for multi-byte text formatting. + Also test, that 'mps' with multibyte chars works. + And test "ra" on multi-byte characters. ++ Also test byteidx() and byteidxcomp() + + STARTTEST + :so mbyte.vim +*************** +*** 154,159 **** +--- 155,175 ---- + aab + + STARTTEST ++ :let a = '.é.' " one char of two bytes ++ :let b = '.é.' " normal e with composing char ++ /^byteidx ++ :put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteidx(a, 4)]) ++ :put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteidx(b, 4)]) ++ /^byteidxcomp ++ :put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcomp(a, 3), byteidxcomp(a, 4)]) ++ :let b = '.é.' ++ :put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)]) ++ ENDTEST ++ ++ byteidx ++ byteidxcomp ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/^Results/,$wq! test.out + ENDTEST +*** ../vim-7.4.056/src/testdir/test69.ok 2013-03-07 18:31:32.000000000 +0100 +--- src/testdir/test69.ok 2013-11-02 22:43:25.000000000 +0100 +*************** +*** 149,151 **** +--- 149,159 ---- + aaaa + aaa + ++ ++ byteidx ++ [0, 1, 3, 4, -1] ++ [0, 1, 4, 5, -1] ++ byteidxcomp ++ [0, 1, 3, 4, -1] ++ [0, 1, 2, 4, 5, -1] ++ +*** ../vim-7.4.056/runtime/doc/eval.txt 2013-08-10 13:24:53.000000000 +0200 +--- runtime/doc/eval.txt 2013-11-02 23:27:24.000000000 +0100 +*************** +*** 1712,1717 **** +--- 1713,1719 ---- + bufwinnr( {expr}) Number window number of buffer {expr} + byte2line( {byte}) Number line number at byte count {byte} + byteidx( {expr}, {nr}) Number byte index of {nr}'th char in {expr} ++ byteidxcomp( {expr}, {nr}) Number byte index of {nr}'th char in {expr} + call( {func}, {arglist} [, {dict}]) + any call {func} with arguments {arglist} + ceil( {expr}) Float round {expr} up +*************** +*** 2260,2266 **** + {expr}. Use zero for the first character, it returns zero. + This function is only useful when there are multibyte + characters, otherwise the returned value is equal to {nr}. +! Composing characters are counted as a separate character. + Example : > + echo matchstr(str, ".", byteidx(str, 3)) + < will display the fourth character. Another way to do the +--- 2262,2271 ---- + {expr}. Use zero for the first character, it returns zero. + This function is only useful when there are multibyte + characters, otherwise the returned value is equal to {nr}. +! Composing characters are not counted separately, their byte +! length is added to the preceding base character. See +! |byteidxcomp()| below for counting composing characters +! separately. + Example : > + echo matchstr(str, ".", byteidx(str, 3)) + < will display the fourth character. Another way to do the +*************** +*** 2269,2275 **** + echo strpart(s, 0, byteidx(s, 1)) + < If there are less than {nr} characters -1 is returned. + If there are exactly {nr} characters the length of the string +! is returned. + + call({func}, {arglist} [, {dict}]) *call()* *E699* + Call function {func} with the items in |List| {arglist} as +--- 2274,2293 ---- + echo strpart(s, 0, byteidx(s, 1)) + < If there are less than {nr} characters -1 is returned. + If there are exactly {nr} characters the length of the string +! in bytes is returned. +! +! byteidxcomp({expr}, {nr}) *byteidxcomp()* +! Like byteidx(), except that a composing character is counted +! as a separate character. Example: > +! let s = 'e' . nr2char(0x301) +! echo byteidx(s, 1) +! echo byteidxcomp(s, 1) +! echo byteidxcomp(s, 2) +! < The first and third echo result in 3 ('e' plus composing +! character is 3 bytes), the second echo results in 1 ('e' is +! one byte). +! Only works different from byteidx() when 'encoding' is set to +! a Unicode encoding. + + call({func}, {arglist} [, {dict}]) *call()* *E699* + Call function {func} with the items in |List| {arglist} as +*** ../vim-7.4.056/src/version.c 2013-11-02 21:49:28.000000000 +0100 +--- src/version.c 2013-11-02 22:45:13.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 57, + /**/ + +-- +Any sufficiently advanced technology is indistinguishable from magic. + Arthur C. Clarke +Any sufficiently advanced bug is indistinguishable from a feature. + Rich Kulawiec + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.058 b/patches/source/vim/patches/7.4.058 new file mode 100644 index 00000000..0715c848 --- /dev/null +++ b/patches/source/vim/patches/7.4.058 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.058 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.058 +Problem: Warnings on 64 bit Windows. +Solution: Add type casts. (Mike Williams) +Files: src/ops.c + + +*** ../vim-7.4.057/src/ops.c 2013-10-06 17:46:48.000000000 +0200 +--- src/ops.c 2013-11-02 23:56:15.000000000 +0100 +*************** +*** 5009,5022 **** + if (second_indent > 0) /* the "leader" for FO_Q_SECOND */ + { + char_u *p = ml_get_curline(); +! int indent = skipwhite(p) - p; + + if (indent > 0) + { + (void)del_bytes(indent, FALSE, FALSE); + mark_col_adjust(curwin->w_cursor.lnum, + (colnr_T)0, 0L, (long)-indent); +! } + } + curwin->w_cursor.lnum--; + if (do_join(2, TRUE, FALSE, FALSE) == FAIL) +--- 5009,5022 ---- + if (second_indent > 0) /* the "leader" for FO_Q_SECOND */ + { + char_u *p = ml_get_curline(); +! int indent = (int)(skipwhite(p) - p); + + if (indent > 0) + { + (void)del_bytes(indent, FALSE, FALSE); + mark_col_adjust(curwin->w_cursor.lnum, + (colnr_T)0, 0L, (long)-indent); +! } + } + curwin->w_cursor.lnum--; + if (do_join(2, TRUE, FALSE, FALSE) == FAIL) +*** ../vim-7.4.057/src/version.c 2013-11-02 23:29:17.000000000 +0100 +--- src/version.c 2013-11-02 23:55:01.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 58, + /**/ + +-- +Citizens are not allowed to attend a movie house or theater nor ride in a +public streetcar within at least four hours after eating garlic. + [real standing law in Indiana, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.059 b/patches/source/vim/patches/7.4.059 new file mode 100644 index 00000000..b00cbfe0 --- /dev/null +++ b/patches/source/vim/patches/7.4.059 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.059 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.059 +Problem: set_last_cursor() may encounter w_buffer being NULL. (Matt + Mkaniaris) +Solution: Check for NULL. +Files: src/mark.c + + +*** ../vim-7.4.058/src/mark.c 2013-08-02 17:22:10.000000000 +0200 +--- src/mark.c 2013-11-03 00:18:35.000000000 +0100 +*************** +*** 1374,1380 **** + set_last_cursor(win) + win_T *win; + { +! win->w_buffer->b_last_cursor = win->w_cursor; + } + + #if defined(EXITFREE) || defined(PROTO) +--- 1374,1381 ---- + set_last_cursor(win) + win_T *win; + { +! if (win->w_buffer != NULL) +! win->w_buffer->b_last_cursor = win->w_cursor; + } + + #if defined(EXITFREE) || defined(PROTO) +*** ../vim-7.4.058/src/version.c 2013-11-02 23:59:30.000000000 +0100 +--- src/version.c 2013-11-03 00:17:55.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 59, + /**/ + +-- +How do you know when you have run out of invisible ink? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.060 b/patches/source/vim/patches/7.4.060 new file mode 100644 index 00000000..d6a76727 --- /dev/null +++ b/patches/source/vim/patches/7.4.060 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.060 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.060 +Problem: Declaration has wrong return type for PyObject_SetAttrString(). +Solution: Use int instead of PyObject. (Andreas Schwab) +Files: src/if_python.c, src/if_python3.c + + +*** ../vim-7.4.059/src/if_python.c 2013-07-09 21:40:11.000000000 +0200 +--- src/if_python.c 2013-11-03 00:24:57.000000000 +0100 +*************** +*** 359,365 **** + static PyObject *(*dll_PyRun_String)(char *, int, PyObject *, PyObject *); + static PyObject* (*dll_PyObject_GetAttrString)(PyObject *, const char *); + static int (*dll_PyObject_HasAttrString)(PyObject *, const char *); +! static PyObject* (*dll_PyObject_SetAttrString)(PyObject *, const char *, PyObject *); + static PyObject* (*dll_PyObject_CallFunctionObjArgs)(PyObject *, ...); + static PyObject* (*dll_PyObject_CallFunction)(PyObject *, char *, ...); + static PyObject* (*dll_PyObject_Call)(PyObject *, PyObject *, PyObject *); +--- 359,365 ---- + static PyObject *(*dll_PyRun_String)(char *, int, PyObject *, PyObject *); + static PyObject* (*dll_PyObject_GetAttrString)(PyObject *, const char *); + static int (*dll_PyObject_HasAttrString)(PyObject *, const char *); +! static int (*dll_PyObject_SetAttrString)(PyObject *, const char *, PyObject *); + static PyObject* (*dll_PyObject_CallFunctionObjArgs)(PyObject *, ...); + static PyObject* (*dll_PyObject_CallFunction)(PyObject *, char *, ...); + static PyObject* (*dll_PyObject_Call)(PyObject *, PyObject *, PyObject *); +*** ../vim-7.4.059/src/if_python3.c 2013-07-09 21:53:21.000000000 +0200 +--- src/if_python3.c 2013-11-03 00:24:57.000000000 +0100 +*************** +*** 302,308 **** + static PyObject* (*py3_PyRun_String)(char *, int, PyObject *, PyObject *); + static PyObject* (*py3_PyObject_GetAttrString)(PyObject *, const char *); + static int (*py3_PyObject_HasAttrString)(PyObject *, const char *); +! static PyObject* (*py3_PyObject_SetAttrString)(PyObject *, const char *, PyObject *); + static PyObject* (*py3_PyObject_CallFunctionObjArgs)(PyObject *, ...); + static PyObject* (*py3__PyObject_CallFunction_SizeT)(PyObject *, char *, ...); + static PyObject* (*py3_PyObject_Call)(PyObject *, PyObject *, PyObject *); +--- 302,308 ---- + static PyObject* (*py3_PyRun_String)(char *, int, PyObject *, PyObject *); + static PyObject* (*py3_PyObject_GetAttrString)(PyObject *, const char *); + static int (*py3_PyObject_HasAttrString)(PyObject *, const char *); +! static int (*py3_PyObject_SetAttrString)(PyObject *, const char *, PyObject *); + static PyObject* (*py3_PyObject_CallFunctionObjArgs)(PyObject *, ...); + static PyObject* (*py3__PyObject_CallFunction_SizeT)(PyObject *, char *, ...); + static PyObject* (*py3_PyObject_Call)(PyObject *, PyObject *, PyObject *); +*** ../vim-7.4.059/src/version.c 2013-11-03 00:20:46.000000000 +0100 +--- src/version.c 2013-11-03 00:26:19.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 60, + /**/ + +-- +Kisses may last for as much as, but no more than, five minutes. + [real standing law in Iowa, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.061 b/patches/source/vim/patches/7.4.061 new file mode 100644 index 00000000..ebd5b2d7 --- /dev/null +++ b/patches/source/vim/patches/7.4.061 @@ -0,0 +1,144 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.061 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.061 (after 7.4.055 and 7.4.056) +Problem: Availability macros configure check in wrong place. +Solution: Also check when not using Darwin. Remove version check. +Files: src/configure.in, src/auto/configure, src/os_unix.c + + +*** ../vim-7.4.060/src/configure.in 2013-11-02 21:04:32.000000000 +0100 +--- src/configure.in 2013-11-03 00:34:07.000000000 +0100 +*************** +*** 206,215 **** + dnl TODO: use -arch i386 on Intel machines + CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp" + +- dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon +- dnl so we need to include it to have access to version macros. +- AC_CHECK_HEADER(AvailabilityMacros.h, [AC_DEFINE(HAVE_AVAILABILITYMACROS_H, 1, [ Define if we have AvailabilityMacros.h on Mac OS X ])]) +- + dnl If Carbon is found, assume we don't want X11 + dnl unless it was specifically asked for (--with-x) + dnl or Motif, Athena or GTK GUI is used. +--- 206,211 ---- +*************** +*** 232,237 **** +--- 228,237 ---- + AC_MSG_RESULT(no) + fi + ++ dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon ++ dnl so we need to include it to have access to version macros. ++ AC_CHECK_HEADER(AvailabilityMacros.h, HAVE_AVAILABILITYMACROS_H=1) ++ + AC_SUBST(OS_EXTRA_SRC) + AC_SUBST(OS_EXTRA_OBJ) + +*** ../vim-7.4.060/src/auto/configure 2013-11-02 21:04:32.000000000 +0100 +--- src/auto/configure 2013-11-03 00:36:20.000000000 +0100 +*************** +*** 4223,4229 **** + OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o" + CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp" + +! # On IRIX 5.3, sys/types and inttypes.h are conflicting. + for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h + do : +--- 4223,4229 ---- + OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o" + CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp" + +! # On IRIX 5.3, sys/types and inttypes.h are conflicting. + for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h + do : +*************** +*** 4241,4256 **** + done + + +! ac_fn_c_check_header_mongrel "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default" +! if test "x$ac_cv_header_AvailabilityMacros_h" = x""yes; then : +! +! $as_echo "#define HAVE_AVAILABILITYMACROS_H 1" >>confdefs.h +! +! fi +! +! +! +! ac_fn_c_check_header_mongrel "$LINENO" "Carbon/Carbon.h" "ac_cv_header_Carbon_Carbon_h" "$ac_includes_default" + if test "x$ac_cv_header_Carbon_Carbon_h" = x""yes; then : + CARBON=yes + fi +--- 4241,4247 ---- + done + + +! ac_fn_c_check_header_mongrel "$LINENO" "Carbon/Carbon.h" "ac_cv_header_Carbon_Carbon_h" "$ac_includes_default" + if test "x$ac_cv_header_Carbon_Carbon_h" = x""yes; then : + CARBON=yes + fi +*************** +*** 4272,4277 **** +--- 4263,4275 ---- + $as_echo "no" >&6; } + fi + ++ ac_fn_c_check_header_mongrel "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default" ++ if test "x$ac_cv_header_AvailabilityMacros_h" = x""yes; then : ++ HAVE_AVAILABILITYMACROS_H=1 ++ fi ++ ++ ++ + + + +*** ../vim-7.4.060/src/os_unix.c 2013-11-02 21:49:28.000000000 +0100 +--- src/os_unix.c 2013-11-03 00:34:29.000000000 +0100 +*************** +*** 804,812 **** + * completely full. + */ + +! #if defined(HAVE_AVAILABILITYMACROS_H) \ +! && defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) \ +! && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090) + # include <AvailabilityMacros.h> + #endif + +--- 804,810 ---- + * completely full. + */ + +! #if defined(HAVE_AVAILABILITYMACROS_H) + # include <AvailabilityMacros.h> + #endif + +*** ../vim-7.4.060/src/version.c 2013-11-03 00:28:20.000000000 +0100 +--- src/version.c 2013-11-03 00:37:02.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 61, + /**/ + +-- +It is illegal to rob a bank and then shoot at the bank teller with a water +pistol. + [real standing law in Louisana, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.062 b/patches/source/vim/patches/7.4.062 new file mode 100644 index 00000000..dad0a420 --- /dev/null +++ b/patches/source/vim/patches/7.4.062 @@ -0,0 +1,87 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.062 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.062 (after 7.4.061) +Problem: Configure check for AvailabilityMacros.h is wrong. +Solution: Use AC_CHECK_HEADERS(). +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.4.061/src/configure.in 2013-11-03 00:40:54.000000000 +0100 +--- src/configure.in 2013-11-03 20:19:42.000000000 +0100 +*************** +*** 230,236 **** + + dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon + dnl so we need to include it to have access to version macros. +! AC_CHECK_HEADER(AvailabilityMacros.h, HAVE_AVAILABILITYMACROS_H=1) + + AC_SUBST(OS_EXTRA_SRC) + AC_SUBST(OS_EXTRA_OBJ) +--- 230,236 ---- + + dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon + dnl so we need to include it to have access to version macros. +! AC_CHECK_HEADERS(AvailabilityMacros.h) + + AC_SUBST(OS_EXTRA_SRC) + AC_SUBST(OS_EXTRA_OBJ) +*** ../vim-7.4.061/src/auto/configure 2013-11-03 00:40:54.000000000 +0100 +--- src/auto/configure 2013-11-03 20:22:56.000000000 +0100 +*************** +*** 4263,4273 **** + $as_echo "no" >&6; } + fi + +! ac_fn_c_check_header_mongrel "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default" + if test "x$ac_cv_header_AvailabilityMacros_h" = x""yes; then : +! HAVE_AVAILABILITYMACROS_H=1 + fi + + + + +--- 4263,4279 ---- + $as_echo "no" >&6; } + fi + +! for ac_header in AvailabilityMacros.h +! do : +! ac_fn_c_check_header_mongrel "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default" + if test "x$ac_cv_header_AvailabilityMacros_h" = x""yes; then : +! cat >>confdefs.h <<_ACEOF +! #define HAVE_AVAILABILITYMACROS_H 1 +! _ACEOF +! + fi + ++ done + + + +*** ../vim-7.4.061/src/version.c 2013-11-03 00:40:54.000000000 +0100 +--- src/version.c 2013-11-03 20:25:31.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 62, + /**/ + +-- +Yesterday, all my deadlines seemed so far away +now it looks as though it's freeze in four days +oh I believe in cvs.. + [ CVS log "Beatles style" for FreeBSD ports/INDEX, Satoshi Asami ] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.063 b/patches/source/vim/patches/7.4.063 new file mode 100644 index 00000000..b72b0b76 --- /dev/null +++ b/patches/source/vim/patches/7.4.063 @@ -0,0 +1,105 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.063 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.063 +Problem: Crash when using invalid key in Python dictionary. +Solution: Check for object to be NULL. Add tests. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + + +*** ../vim-7.4.062/src/if_py_both.h 2013-07-24 17:09:19.000000000 +0200 +--- src/if_py_both.h 2013-11-04 00:27:40.000000000 +0100 +*************** +*** 1624,1629 **** +--- 1624,1632 ---- + PyObject *rObj = _DictionaryItem(self, keyObject, DICT_FLAG_RETURN_BOOL); + int ret; + ++ if (rObj == NULL) ++ return -1; ++ + ret = (rObj == Py_True); + + Py_DECREF(rObj); +*** ../vim-7.4.062/src/testdir/test86.in 2013-07-13 14:00:31.000000000 +0200 +--- src/testdir/test86.in 2013-11-04 00:27:11.000000000 +0100 +*************** +*** 1088,1093 **** +--- 1088,1096 ---- + stringtochars_test('d.get(%s)') + ee('d.pop("a")') + ee('dl.pop("a")') ++ cb.append(">> DictionaryContains") ++ ee('"" in d') ++ ee('0 in d') + cb.append(">> DictionaryIterNext") + ee('for i in ned: ned["a"] = 1') + del i +*** ../vim-7.4.062/src/testdir/test86.ok 2013-06-23 16:38:39.000000000 +0200 +--- src/testdir/test86.ok 2013-11-04 00:27:11.000000000 +0100 +*************** +*** 516,521 **** +--- 516,524 ---- + <<< Finished + d.pop("a"):KeyError:('a',) + dl.pop("a"):error:('dictionary is locked',) ++ >> DictionaryContains ++ "" in d:ValueError:('empty keys are not allowed',) ++ 0 in d:TypeError:('expected str() or unicode() instance, but got int',) + >> DictionaryIterNext + for i in ned: ned["a"] = 1:RuntimeError:('hashtab changed during iteration',) + >> DictionaryAssItem +*** ../vim-7.4.062/src/testdir/test87.in 2013-07-06 13:41:30.000000000 +0200 +--- src/testdir/test87.in 2013-11-04 00:27:11.000000000 +0100 +*************** +*** 1039,1044 **** +--- 1039,1047 ---- + stringtochars_test('d.get(%s)') + ee('d.pop("a")') + ee('dl.pop("a")') ++ cb.append(">> DictionaryContains") ++ ee('"" in d') ++ ee('0 in d') + cb.append(">> DictionaryIterNext") + ee('for i in ned: ned["a"] = 1') + del i +*** ../vim-7.4.062/src/testdir/test87.ok 2013-06-23 16:38:39.000000000 +0200 +--- src/testdir/test87.ok 2013-11-04 00:27:11.000000000 +0100 +*************** +*** 505,510 **** +--- 505,513 ---- + <<< Finished + d.pop("a"):(<class 'KeyError'>, KeyError('a',)) + dl.pop("a"):(<class 'vim.error'>, error('dictionary is locked',)) ++ >> DictionaryContains ++ "" in d:(<class 'ValueError'>, ValueError('empty keys are not allowed',)) ++ 0 in d:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',)) + >> DictionaryIterNext + for i in ned: ned["a"] = 1:(<class 'RuntimeError'>, RuntimeError('hashtab changed during iteration',)) + >> DictionaryAssItem +*** ../vim-7.4.062/src/version.c 2013-11-03 20:26:27.000000000 +0100 +--- src/version.c 2013-11-04 00:26:39.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 63, + /**/ + +-- +A parent can be arrested if his child cannot hold back a burp during a church +service. + [real standing law in Nebraska, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.064 b/patches/source/vim/patches/7.4.064 Binary files differnew file mode 100644 index 00000000..77132085 --- /dev/null +++ b/patches/source/vim/patches/7.4.064 diff --git a/patches/source/vim/patches/7.4.065 b/patches/source/vim/patches/7.4.065 new file mode 100644 index 00000000..fd17fa06 --- /dev/null +++ b/patches/source/vim/patches/7.4.065 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.065 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.065 +Problem: When recording, the character typed at the hit-enter prompt is + recorded twice. (Urtica Dioica) +Solution: Avoid recording the character twice. (Christian Brabandt) +Files: src/message.c + + +*** ../vim-7.4.064/src/message.c 2013-08-09 20:30:45.000000000 +0200 +--- src/message.c 2013-11-04 01:56:09.000000000 +0100 +*************** +*** 887,892 **** +--- 887,894 ---- + int oldState; + int tmpState; + int had_got_int; ++ int save_Recording; ++ FILE *save_scriptout; + + if (redraw == TRUE) + must_redraw = CLEAR; +*************** +*** 957,967 **** +--- 959,979 ---- + * typeahead buffer. */ + ++no_mapping; + ++allow_keys; ++ ++ /* Temporarily disable Recording. If Recording is active, the ++ * character will be recorded later, since it will be added to the ++ * typebuf after the loop */ ++ save_Recording = Recording; ++ save_scriptout = scriptout; ++ Recording = FALSE; ++ scriptout = NULL; + c = safe_vgetc(); + if (had_got_int && !global_busy) + got_int = FALSE; + --no_mapping; + --allow_keys; ++ Recording = save_Recording; ++ scriptout = save_scriptout; + + #ifdef FEAT_CLIPBOARD + /* Strange way to allow copying (yanking) a modeless selection at +*** ../vim-7.4.064/src/version.c 2013-11-04 01:41:11.000000000 +0100 +--- src/version.c 2013-11-04 01:53:19.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 65, + /**/ + +-- +Zen Microsystems: we're the om in .commmmmmmmm + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.066 b/patches/source/vim/patches/7.4.066 new file mode 100644 index 00000000..edab0926 --- /dev/null +++ b/patches/source/vim/patches/7.4.066 @@ -0,0 +1,354 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.066 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.066 +Problem: MS-Windows: When there is a colon in the file name (sub-stream + feature) the swap file name is wrong. +Solution: Change the colon to "%". (Yasuhiro Matsumoto) +Files: src/fileio.c, src/memline.c, src/misc1.c, src/proto/misc1.pro + + +*** ../vim-7.4.065/src/memline.c 2013-05-06 04:01:02.000000000 +0200 +--- src/memline.c 2013-11-04 02:52:44.000000000 +0100 +*************** +*** 4014,4019 **** +--- 4014,4026 ---- + else + retval = concat_fnames(dname, tail, TRUE); + ++ #ifdef WIN3264 ++ if (retval != NULL) ++ for (t = gettail(retval); *t != NUL; mb_ptr_adv(t)) ++ if (*t == ':') ++ *t = '%'; ++ #endif ++ + return retval; + } + +*************** +*** 4137,4148 **** + #ifndef SHORT_FNAME + int r; + #endif + + #if !defined(SHORT_FNAME) \ +! && ((!defined(UNIX) && !defined(OS2)) || defined(ARCHIE)) + # define CREATE_DUMMY_FILE + FILE *dummyfd = NULL; + + /* + * If we start editing a new file, e.g. "test.doc", which resides on an + * MSDOS compatible filesystem, it is possible that the file +--- 4144,4172 ---- + #ifndef SHORT_FNAME + int r; + #endif ++ char_u *buf_fname = buf->b_fname; + + #if !defined(SHORT_FNAME) \ +! && ((!defined(UNIX) && !defined(OS2)) || defined(ARCHIE)) + # define CREATE_DUMMY_FILE + FILE *dummyfd = NULL; + ++ # ifdef WIN3264 ++ if (buf_fname != NULL && !mch_isFullName(buf_fname) ++ && vim_strchr(gettail(buf_fname), ':')) ++ { ++ char_u *t; ++ ++ buf_fname = vim_strsave(buf_fname); ++ if (buf_fname == NULL) ++ buf_fname = buf->b_fname; ++ else ++ for (t = gettail(buf_fname); *t != NUL; mb_ptr_adv(t)) ++ if (*t == ':') ++ *t = '%'; ++ } ++ # endif ++ + /* + * If we start editing a new file, e.g. "test.doc", which resides on an + * MSDOS compatible filesystem, it is possible that the file +*************** +*** 4150,4158 **** + * this problem we temporarily create "test.doc". Don't do this when the + * check below for a 8.3 file name is used. + */ +! if (!(buf->b_p_sn || buf->b_shortname) && buf->b_fname != NULL +! && mch_getperm(buf->b_fname) < 0) +! dummyfd = mch_fopen((char *)buf->b_fname, "w"); + #endif + + /* +--- 4174,4182 ---- + * this problem we temporarily create "test.doc". Don't do this when the + * check below for a 8.3 file name is used. + */ +! if (!(buf->b_p_sn || buf->b_shortname) && buf_fname != NULL +! && mch_getperm(buf_fname) < 0) +! dummyfd = mch_fopen((char *)buf_fname, "w"); + #endif + + /* +*************** +*** 4171,4177 **** + if (dir_name == NULL) /* out of memory */ + fname = NULL; + else +! fname = makeswapname(buf->b_fname, buf->b_ffname, buf, dir_name); + + for (;;) + { +--- 4195,4201 ---- + if (dir_name == NULL) /* out of memory */ + fname = NULL; + else +! fname = makeswapname(buf_fname, buf->b_ffname, buf, dir_name); + + for (;;) + { +*************** +*** 4204,4210 **** + * It either contains two dots, is longer than 8 chars, or starts + * with a dot. + */ +! tail = gettail(buf->b_fname); + if ( vim_strchr(tail, '.') != NULL + || STRLEN(tail) > (size_t)8 + || *gettail(fname) == '.') +--- 4228,4234 ---- + * It either contains two dots, is longer than 8 chars, or starts + * with a dot. + */ +! tail = gettail(buf_fname); + if ( vim_strchr(tail, '.') != NULL + || STRLEN(tail) > (size_t)8 + || *gettail(fname) == '.') +*************** +*** 4273,4279 **** + { + buf->b_shortname = TRUE; + vim_free(fname); +! fname = makeswapname(buf->b_fname, buf->b_ffname, + buf, dir_name); + continue; /* try again with b_shortname set */ + } +--- 4297,4303 ---- + { + buf->b_shortname = TRUE; + vim_free(fname); +! fname = makeswapname(buf_fname, buf->b_ffname, + buf, dir_name); + continue; /* try again with b_shortname set */ + } +*************** +*** 4344,4350 **** + { + buf->b_shortname = TRUE; + vim_free(fname); +! fname = makeswapname(buf->b_fname, buf->b_ffname, + buf, dir_name); + continue; /* try again with '.' replaced with '_' */ + } +--- 4368,4374 ---- + { + buf->b_shortname = TRUE; + vim_free(fname); +! fname = makeswapname(buf_fname, buf->b_ffname, + buf, dir_name); + continue; /* try again with '.' replaced with '_' */ + } +*************** +*** 4356,4362 **** + * viewing a help file or when the path of the file is different + * (happens when all .swp files are in one directory). + */ +! if (!recoverymode && buf->b_fname != NULL + && !buf->b_help && !(buf->b_flags & BF_DUMMY)) + { + int fd; +--- 4380,4386 ---- + * viewing a help file or when the path of the file is different + * (happens when all .swp files are in one directory). + */ +! if (!recoverymode && buf_fname != NULL + && !buf->b_help && !(buf->b_flags & BF_DUMMY)) + { + int fd; +*************** +*** 4433,4439 **** + { + fclose(dummyfd); + dummyfd = NULL; +! mch_remove(buf->b_fname); + did_use_dummy = TRUE; + } + #endif +--- 4457,4463 ---- + { + fclose(dummyfd); + dummyfd = NULL; +! mch_remove(buf_fname); + did_use_dummy = TRUE; + } + #endif +*************** +*** 4448,4454 **** + * user anyway. + */ + if (swap_exists_action != SEA_NONE +! && has_autocmd(EVENT_SWAPEXISTS, buf->b_fname, buf)) + choice = do_swapexists(buf, fname); + + if (choice == 0) +--- 4472,4478 ---- + * user anyway. + */ + if (swap_exists_action != SEA_NONE +! && has_autocmd(EVENT_SWAPEXISTS, buf_fname, buf)) + choice = do_swapexists(buf, fname); + + if (choice == 0) +*************** +*** 4549,4555 **** + #ifdef CREATE_DUMMY_FILE + /* Going to try another name, need the dummy file again. */ + if (did_use_dummy) +! dummyfd = mch_fopen((char *)buf->b_fname, "w"); + #endif + } + } +--- 4573,4579 ---- + #ifdef CREATE_DUMMY_FILE + /* Going to try another name, need the dummy file again. */ + if (did_use_dummy) +! dummyfd = mch_fopen((char *)buf_fname, "w"); + #endif + } + } +*************** +*** 4581,4589 **** + if (dummyfd != NULL) /* file has been created temporarily */ + { + fclose(dummyfd); +! mch_remove(buf->b_fname); + } + #endif + return fname; + } + +--- 4605,4617 ---- + if (dummyfd != NULL) /* file has been created temporarily */ + { + fclose(dummyfd); +! mch_remove(buf_fname); + } + #endif ++ #ifdef WIN3264 ++ if (buf_fname != buf->b_fname) ++ vim_free(buf_fname); ++ #endif + return fname; + } + +*** ../vim-7.4.065/src/misc1.c 2013-10-06 17:46:48.000000000 +0200 +--- src/misc1.c 2013-11-04 02:44:28.000000000 +0100 +*************** +*** 4808,4816 **** + + if (fname == NULL) + return (char_u *)""; +! for (p1 = p2 = fname; *p2; ) /* find last part of path */ + { +! if (vim_ispathsep(*p2)) + p1 = p2 + 1; + mb_ptr_adv(p2); + } +--- 4808,4816 ---- + + if (fname == NULL) + return (char_u *)""; +! for (p1 = p2 = get_past_head(fname); *p2; ) /* find last part of path */ + { +! if (vim_ispathsep_nocolon(*p2)) + p1 = p2 + 1; + mb_ptr_adv(p2); + } +*************** +*** 4929,4935 **** + } + + /* +! * return TRUE if 'c' is a path separator. + */ + int + vim_ispathsep(c) +--- 4929,4936 ---- + } + + /* +! * Return TRUE if 'c' is a path separator. +! * Note that for MS-Windows this includes the colon. + */ + int + vim_ispathsep(c) +*************** +*** 4952,4957 **** +--- 4953,4972 ---- + #endif + } + ++ /* ++ * Like vim_ispathsep(c), but exclude the colon for MS-Windows. ++ */ ++ int ++ vim_ispathsep_nocolon(c) ++ int c; ++ { ++ return vim_ispathsep(c) ++ #ifdef BACKSLASH_IN_FILENAME ++ && c != ':' ++ #endif ++ ; ++ } ++ + #if defined(FEAT_SEARCHPATH) || defined(PROTO) + /* + * return TRUE if 'c' is a path list separator. +*** ../vim-7.4.065/src/proto/misc1.pro 2013-08-10 13:37:20.000000000 +0200 +--- src/proto/misc1.pro 2013-11-04 02:44:30.000000000 +0100 +*************** +*** 69,74 **** +--- 69,75 ---- + char_u *getnextcomp __ARGS((char_u *fname)); + char_u *get_past_head __ARGS((char_u *path)); + int vim_ispathsep __ARGS((int c)); ++ int vim_ispathsep_nocolon __ARGS((int c)); + int vim_ispathlistsep __ARGS((int c)); + void shorten_dir __ARGS((char_u *str)); + int dir_of_file_exists __ARGS((char_u *fname)); +*** ../vim-7.4.065/src/version.c 2013-11-04 02:00:55.000000000 +0100 +--- src/version.c 2013-11-04 02:50:35.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 66, + /**/ + +-- +Females are strictly forbidden to appear unshaven in public. + [real standing law in New Mexico, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.067 b/patches/source/vim/patches/7.4.067 new file mode 100644 index 00000000..75a89c2a --- /dev/null +++ b/patches/source/vim/patches/7.4.067 @@ -0,0 +1,126 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.067 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.067 +Problem: After inserting comment leader, CTRL-\ CTRL-O does move the + cursor. (Wiktor Ruben) +Solution: Avoid moving the cursor. (Christian Brabandt) +Files: src/edit.c + + +*** ../vim-7.4.066/src/edit.c 2013-09-08 20:00:45.000000000 +0200 +--- src/edit.c 2013-11-04 03:57:43.000000000 +0100 +*************** +*** 199,205 **** + static void spell_back_to_badword __ARGS((void)); + static int spell_bad_len = 0; /* length of located bad word */ + #endif +! static void stop_insert __ARGS((pos_T *end_insert_pos, int esc)); + static int echeck_abbr __ARGS((int)); + static int replace_pop __ARGS((void)); + static void replace_join __ARGS((int off)); +--- 199,205 ---- + static void spell_back_to_badword __ARGS((void)); + static int spell_bad_len = 0; /* length of located bad word */ + #endif +! static void stop_insert __ARGS((pos_T *end_insert_pos, int esc, int nomove)); + static int echeck_abbr __ARGS((int)); + static int replace_pop __ARGS((void)); + static void replace_join __ARGS((int off)); +*************** +*** 6698,6704 **** + if (!arrow_used) /* something has been inserted */ + { + AppendToRedobuff(ESC_STR); +! stop_insert(end_insert_pos, FALSE); + arrow_used = TRUE; /* this means we stopped the current insert */ + } + #ifdef FEAT_SPELL +--- 6698,6704 ---- + if (!arrow_used) /* something has been inserted */ + { + AppendToRedobuff(ESC_STR); +! stop_insert(end_insert_pos, FALSE, FALSE); + arrow_used = TRUE; /* this means we stopped the current insert */ + } + #ifdef FEAT_SPELL +*************** +*** 6787,6795 **** + * to another window/buffer. + */ + static void +! stop_insert(end_insert_pos, esc) + pos_T *end_insert_pos; + int esc; /* called by ins_esc() */ + { + int cc; + char_u *ptr; +--- 6787,6796 ---- + * to another window/buffer. + */ + static void +! stop_insert(end_insert_pos, esc, nomove) + pos_T *end_insert_pos; + int esc; /* called by ins_esc() */ ++ int nomove; /* <c-\><c-o>, don't move cursor */ + { + int cc; + char_u *ptr; +*************** +*** 6860,6866 **** + * Do this when ESC was used or moving the cursor up/down. + * Check for the old position still being valid, just in case the text + * got changed unexpectedly. */ +! if (did_ai && (esc || (vim_strchr(p_cpo, CPO_INDENT) == NULL + && curwin->w_cursor.lnum != end_insert_pos->lnum)) + && end_insert_pos->lnum <= curbuf->b_ml.ml_line_count) + { +--- 6861,6867 ---- + * Do this when ESC was used or moving the cursor up/down. + * Check for the old position still being valid, just in case the text + * got changed unexpectedly. */ +! if (!nomove && did_ai && (esc || (vim_strchr(p_cpo, CPO_INDENT) == NULL + && curwin->w_cursor.lnum != end_insert_pos->lnum)) + && end_insert_pos->lnum <= curbuf->b_ml.ml_line_count) + { +*************** +*** 8377,8383 **** + disabled_redraw = TRUE; + return FALSE; /* repeat the insert */ + } +! stop_insert(&curwin->w_cursor, TRUE); + undisplay_dollar(); + } + +--- 8378,8384 ---- + disabled_redraw = TRUE; + return FALSE; /* repeat the insert */ + } +! stop_insert(&curwin->w_cursor, TRUE, nomove); + undisplay_dollar(); + } + +*** ../vim-7.4.066/src/version.c 2013-11-04 02:53:46.000000000 +0100 +--- src/version.c 2013-11-04 03:57:29.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 67, + /**/ + +-- +Beer & pretzels can't be served at the same time in any bar or restaurant. + [real standing law in North Dakota, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.068 b/patches/source/vim/patches/7.4.068 new file mode 100644 index 00000000..a9093385 --- /dev/null +++ b/patches/source/vim/patches/7.4.068 @@ -0,0 +1,131 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.068 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.068 +Problem: Cannot build Vim on Mac with non-Apple compilers. +Solution: Remove the -no-cpp-precomp flag. (Misty De Meo) +Files: src/configure.in, src/auto/configure, src/osdef.sh + + +*** ../vim-7.4.067/src/configure.in 2013-11-03 20:26:26.000000000 +0100 +--- src/configure.in 2013-11-04 04:53:51.000000000 +0100 +*************** +*** 204,210 **** + OS_EXTRA_SRC="os_macosx.m os_mac_conv.c"; + OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o" + dnl TODO: use -arch i386 on Intel machines +! CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp" + + dnl If Carbon is found, assume we don't want X11 + dnl unless it was specifically asked for (--with-x) +--- 204,211 ---- + OS_EXTRA_SRC="os_macosx.m os_mac_conv.c"; + OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o" + dnl TODO: use -arch i386 on Intel machines +! dnl Removed -no-cpp-precomp, only for very old compilers. +! CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX" + + dnl If Carbon is found, assume we don't want X11 + dnl unless it was specifically asked for (--with-x) +*************** +*** 262,269 **** + ]) + if test "$GCC" = yes -a "$local_dir" != no; then + echo 'void f(){}' > conftest.c +! dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler) +! have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"` + have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"` + rm -f conftest.c conftest.o + fi +--- 263,270 ---- + ]) + if test "$GCC" = yes -a "$local_dir" != no; then + echo 'void f(){}' > conftest.c +! dnl Removed -no-cpp-precomp, only needed for OS X 10.2 (Ben Fowler) +! have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"` + have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"` + rm -f conftest.c conftest.o + fi +*** ../vim-7.4.067/src/auto/configure 2013-11-03 20:26:27.000000000 +0100 +--- src/auto/configure 2013-11-04 04:54:16.000000000 +0100 +*************** +*** 4221,4227 **** + MACOSX=yes + OS_EXTRA_SRC="os_macosx.m os_mac_conv.c"; + OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o" +! CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp" + + # On IRIX 5.3, sys/types and inttypes.h are conflicting. + for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ +--- 4221,4227 ---- + MACOSX=yes + OS_EXTRA_SRC="os_macosx.m os_mac_conv.c"; + OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o" +! CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX" + + # On IRIX 5.3, sys/types and inttypes.h are conflicting. + for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ +*************** +*** 4311,4317 **** + + if test "$GCC" = yes -a "$local_dir" != no; then + echo 'void f(){}' > conftest.c +! have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"` + have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"` + rm -f conftest.c conftest.o + fi +--- 4311,4317 ---- + + if test "$GCC" = yes -a "$local_dir" != no; then + echo 'void f(){}' > conftest.c +! have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"` + have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"` + rm -f conftest.c conftest.o + fi +*** ../vim-7.4.067/src/osdef.sh 2010-05-15 13:04:08.000000000 +0200 +--- src/osdef.sh 2013-11-04 04:51:36.000000000 +0100 +*************** +*** 47,57 **** + #endif + EOF + +! # Mac uses precompiled headers, but we need real headers here. +! case `uname` in +! Darwin) $CC -I. -I$srcdir -E -no-cpp-precomp osdef0.c >osdef0.cc;; +! *) $CC -I. -I$srcdir -E osdef0.c >osdef0.cc;; +! esac + + # insert a space in front of each line, so that a function name at the + # start of the line is matched with "[)*, ]\1[ (]" +--- 47,53 ---- + #endif + EOF + +! $CC -I. -I$srcdir -E osdef0.c >osdef0.cc + + # insert a space in front of each line, so that a function name at the + # start of the line is matched with "[)*, ]\1[ (]" +*** ../vim-7.4.067/src/version.c 2013-11-04 04:20:28.000000000 +0100 +--- src/version.c 2013-11-04 04:51:51.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 68, + /**/ + +-- +Violators can be fined, arrested or jailed for making ugly faces at a dog. + [real standing law in Oklahoma, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.069 b/patches/source/vim/patches/7.4.069 new file mode 100644 index 00000000..ac52affc --- /dev/null +++ b/patches/source/vim/patches/7.4.069 @@ -0,0 +1,2559 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.069 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.069 +Problem: Cannot right shift lines starting with #. +Solution: Allow the right shift when 'cino' contains #N with N > 0. + (Christian Brabandt) + Refactor parsing 'cino', store the values in the buffer. +Files: runtime/doc/indent.txt, src/buffer.c, src/edit.c, src/eval.c, + src/ex_getln.c, src/fold.c, src/misc1.c, src/ops.c, + src/proto/misc1.pro, src/proto/option.pro, src/structs.h, + src/option.c + + +*** ../vim-7.4.068/runtime/doc/indent.txt 2013-08-10 13:24:56.000000000 +0200 +--- runtime/doc/indent.txt 2013-11-05 07:10:56.000000000 +0100 +*************** +*** 545,554 **** + (default 70 lines). + + *cino-#* +! #N When N is non-zero recognize shell/Perl comments, starting with +! '#'. Default N is zero: don't recognize '#' comments. Note +! that lines starting with # will still be seen as preprocessor +! lines. + + + The defaults, spelled out in full, are: +--- 545,556 ---- + (default 70 lines). + + *cino-#* +! #N When N is non-zero recognize shell/Perl comments starting with +! '#', do not recognize preprocessor lines; allow right-shifting +! lines that start with "#". +! When N is zero (default): don't recognize '#' comments, do +! recognize preprocessor lines; right-shifting lines that start +! with "#" does not work. + + + The defaults, spelled out in full, are: +*************** +*** 556,562 **** + c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0 + + Vim puts a line in column 1 if: +! - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. + - It starts with a label (a keyword followed by ':', other than "case" and + "default") and 'cinoptions' does not contain an 'L' entry with a positive + value. +--- 558,564 ---- + c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0 + + Vim puts a line in column 1 if: +! - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#0'. + - It starts with a label (a keyword followed by ':', other than "case" and + "default") and 'cinoptions' does not contain an 'L' entry with a positive + value. +*************** +*** 581,588 **** + + Clojure indentation differs somewhat from traditional Lisps, due in part to + the use of square and curly brackets, and otherwise by community convention. +! These conventions are not always universally followed, so the Clojure indent +! script offers a few configurable options, listed below. + + If the current vim does not include searchpairpos(), the indent script falls + back to normal 'lisp' indenting, and the following options are ignored. +--- 583,590 ---- + + Clojure indentation differs somewhat from traditional Lisps, due in part to + the use of square and curly brackets, and otherwise by community convention. +! These conventions are not universally followed, so the Clojure indent script +! offers a few configurable options, listed below. + + If the current vim does not include searchpairpos(), the indent script falls + back to normal 'lisp' indenting, and the following options are ignored. +*** ../vim-7.4.068/src/buffer.c 2013-11-02 04:39:34.000000000 +0100 +--- src/buffer.c 2013-11-05 06:18:54.000000000 +0100 +*************** +*** 211,217 **** +--- 211,220 ---- + + /* if first time loading this buffer, init b_chartab[] */ + if (curbuf->b_flags & BF_NEVERLOADED) ++ { + (void)buf_init_chartab(curbuf, FALSE); ++ parse_cino(curbuf); ++ } + + /* + * Set/reset the Changed flag first, autocmds may change the buffer. +*** ../vim-7.4.068/src/edit.c 2013-11-04 04:20:28.000000000 +0100 +--- src/edit.c 2013-11-05 06:12:45.000000000 +0100 +*************** +*** 8958,8964 **** + + *inserted_space_p = FALSE; + if (p_sta && in_indent) +! ts = (int)get_sw_value(); + else + ts = (int)get_sts_value(); + /* Compute the virtual column where we want to be. Since +--- 8958,8964 ---- + + *inserted_space_p = FALSE; + if (p_sta && in_indent) +! ts = (int)get_sw_value(curbuf); + else + ts = (int)get_sts_value(); + /* Compute the virtual column where we want to be. Since +*************** +*** 9647,9653 **** + * When nothing special, insert TAB like a normal character + */ + if (!curbuf->b_p_et +! && !(p_sta && ind && curbuf->b_p_ts != get_sw_value()) + && get_sts_value() == 0) + return TRUE; + +--- 9647,9653 ---- + * When nothing special, insert TAB like a normal character + */ + if (!curbuf->b_p_et +! && !(p_sta && ind && curbuf->b_p_ts != get_sw_value(curbuf)) + && get_sts_value() == 0) + return TRUE; + +*************** +*** 9663,9669 **** + AppendToRedobuff((char_u *)"\t"); + + if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */ +! temp = (int)get_sw_value(); + else if (curbuf->b_p_sts != 0) /* use 'softtabstop' when set */ + temp = (int)get_sts_value(); + else /* otherwise use 'tabstop' */ +--- 9663,9669 ---- + AppendToRedobuff((char_u *)"\t"); + + if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */ +! temp = (int)get_sw_value(curbuf); + else if (curbuf->b_p_sts != 0) /* use 'softtabstop' when set */ + temp = (int)get_sts_value(); + else /* otherwise use 'tabstop' */ +*** ../vim-7.4.068/src/eval.c 2013-11-02 23:29:17.000000000 +0100 +--- src/eval.c 2013-11-05 06:12:49.000000000 +0100 +*************** +*** 16934,16940 **** + typval_T *argvars UNUSED; + typval_T *rettv; + { +! rettv->vval.v_number = get_sw_value(); + } + + /* +--- 16934,16940 ---- + typval_T *argvars UNUSED; + typval_T *rettv; + { +! rettv->vval.v_number = get_sw_value(curbuf); + } + + /* +*** ../vim-7.4.068/src/ex_getln.c 2013-07-05 19:44:21.000000000 +0200 +--- src/ex_getln.c 2013-11-05 06:12:57.000000000 +0100 +*************** +*** 2280,2286 **** + + if (c1 == Ctrl_T) + { +! long sw = get_sw_value(); + + p = (char_u *)line_ga.ga_data; + p[line_ga.ga_len] = NUL; +--- 2280,2286 ---- + + if (c1 == Ctrl_T) + { +! long sw = get_sw_value(curbuf); + + p = (char_u *)line_ga.ga_data; + p[line_ga.ga_len] = NUL; +*************** +*** 2337,2343 **** + p[line_ga.ga_len] = NUL; + indent = get_indent_str(p, 8); + --indent; +! indent -= indent % get_sw_value(); + } + while (get_indent_str(p, 8) > indent) + { +--- 2337,2343 ---- + p[line_ga.ga_len] = NUL; + indent = get_indent_str(p, 8); + --indent; +! indent -= indent % get_sw_value(curbuf); + } + while (get_indent_str(p, 8) > indent) + { +*************** +*** 4178,4184 **** + /* + * Prepare a string for expansion. + * When expanding file names: The string will be used with expand_wildcards(). +! * Copy the file name into allocated memory and add a '*' at the end. + * When expanding other names: The string will be used with regcomp(). Copy + * the name into allocated memory and prepend "^". + */ +--- 4178,4184 ---- + /* + * Prepare a string for expansion. + * When expanding file names: The string will be used with expand_wildcards(). +! * Copy "fname[len]" into allocated memory and add a '*' at the end. + * When expanding other names: The string will be used with regcomp(). Copy + * the name into allocated memory and prepend "^". + */ +*** ../vim-7.4.068/src/fold.c 2013-06-15 16:57:24.000000000 +0200 +--- src/fold.c 2013-11-05 06:13:03.000000000 +0100 +*************** +*** 3052,3058 **** + flp->lvl = -1; + } + else +! flp->lvl = get_indent_buf(buf, lnum) / get_sw_value(); + if (flp->lvl > flp->wp->w_p_fdn) + { + flp->lvl = flp->wp->w_p_fdn; +--- 3052,3058 ---- + flp->lvl = -1; + } + else +! flp->lvl = get_indent_buf(buf, lnum) / get_sw_value(curbuf); + if (flp->lvl > flp->wp->w_p_fdn) + { + flp->lvl = flp->wp->w_p_fdn; +*** ../vim-7.4.068/src/misc1.c 2013-11-04 02:53:46.000000000 +0100 +--- src/misc1.c 2013-11-05 06:45:15.000000000 +0100 +*************** +*** 1405,1411 **** + #ifdef FEAT_SMARTINDENT + if (did_si) + { +! int sw = (int)get_sw_value(); + + if (p_sr) + newindent -= newindent % sw; +--- 1405,1411 ---- + #ifdef FEAT_SMARTINDENT + if (did_si) + { +! int sw = (int)get_sw_value(curbuf); + + if (p_sr) + newindent -= newindent % sw; +*************** +*** 5342,5349 **** + static int find_match __ARGS((int lookfor, linenr_T ourscope, int ind_maxparen, int ind_maxcomment)); + static int cin_is_cpp_namespace __ARGS((char_u *)); + +- static int ind_hash_comment = 0; /* # starts a comment */ +- + /* + * Skip over white space and C comments within the line. + * Also skip over Perl/shell comments if desired. +--- 5342,5347 ---- +*************** +*** 5360,5366 **** + + /* Perl/shell # comment comment continues until eol. Require a space + * before # to avoid recognizing $#array. */ +! if (ind_hash_comment != 0 && s != prev_s && *s == '#') + { + s += STRLEN(s); + break; +--- 5358,5364 ---- + + /* Perl/shell # comment comment continues until eol. Require a space + * before # to avoid recognizing $#array. */ +! if (curbuf->b_ind_hash_comment != 0 && s != prev_s && *s == '#') + { + s += STRLEN(s); + break; +*************** +*** 6639,6839 **** + return retval; + } + +! int +! get_c_indent() + { +! int sw = (int)get_sw_value(); + + /* +! * spaces from a block's opening brace the prevailing indent for that +! * block should be + */ + +! int ind_level = sw; + +! /* +! * spaces from the edge of the line an open brace that's at the end of a +! * line is imagined to be. +! */ +! int ind_open_imag = 0; + +! /* +! * spaces from the prevailing indent for a line that is not preceded by +! * an opening brace. +! */ +! int ind_no_brace = 0; +! +! /* +! * column where the first { of a function should be located } +! */ +! int ind_first_open = 0; + +! /* +! * spaces from the prevailing indent a leftmost open brace should be +! * located +! */ +! int ind_open_extra = 0; + +! /* +! * spaces from the matching open brace (real location for one at the left + * edge; imaginary location from one that ends a line) the matching close +! * brace should be located +! */ +! int ind_close_extra = 0; + +! /* +! * spaces from the edge of the line an open brace sitting in the leftmost +! * column is imagined to be +! */ +! int ind_open_left_imag = 0; + +! /* +! * Spaces jump labels should be shifted to the left if N is non-negative, +! * otherwise the jump label will be put to column 1. +! */ +! int ind_jump_label = -1; + +! /* +! * spaces from the switch() indent a "case xx" label should be located +! */ +! int ind_case = sw; + +! /* +! * spaces from the "case xx:" code after a switch() should be located +! */ +! int ind_case_code = sw; + +! /* +! * lineup break at end of case in switch() with case label +! */ +! int ind_case_break = 0; + +! /* +! * spaces from the class declaration indent a scope declaration label +! * should be located +! */ +! int ind_scopedecl = sw; + +! /* +! * spaces from the scope declaration label code should be located +! */ +! int ind_scopedecl_code = sw; + +! /* +! * amount K&R-style parameters should be indented +! */ +! int ind_param = sw; + +! /* +! * amount a function type spec should be indented +! */ +! int ind_func_type = sw; + +! /* +! * amount a cpp base class declaration or constructor initialization +! * should be indented +! */ +! int ind_cpp_baseclass = sw; + +! /* +! * additional spaces beyond the prevailing indent a continuation line +! * should be located +! */ +! int ind_continuation = sw; + +! /* +! * spaces from the indent of the line with an unclosed parentheses +! */ +! int ind_unclosed = sw * 2; + +! /* +! * spaces from the indent of the line with an unclosed parentheses, which +! * itself is also unclosed +! */ +! int ind_unclosed2 = sw; + +! /* +! * suppress ignoring spaces from the indent of a line starting with an +! * unclosed parentheses. +! */ +! int ind_unclosed_noignore = 0; + +! /* +! * If the opening paren is the last nonwhite character on the line, and +! * ind_unclosed_wrapped is nonzero, use this indent relative to the outer +! * context (for very long lines). +! */ +! int ind_unclosed_wrapped = 0; + +! /* +! * suppress ignoring white space when lining up with the character after +! * an unclosed parentheses. +! */ +! int ind_unclosed_whiteok = 0; + +! /* +! * indent a closing parentheses under the line start of the matching +! * opening parentheses. +! */ +! int ind_matching_paren = 0; + +! /* +! * indent a closing parentheses under the previous line. +! */ +! int ind_paren_prev = 0; + +! /* +! * Extra indent for comments. +! */ +! int ind_comment = 0; + +! /* +! * spaces from the comment opener when there is nothing after it. +! */ +! int ind_in_comment = 3; + +! /* +! * boolean: if non-zero, use ind_in_comment even if there is something +! * after the comment opener. +! */ +! int ind_in_comment2 = 0; + +! /* +! * max lines to search for an open paren +! */ +! int ind_maxparen = 20; + +! /* +! * max lines to search for an open comment +! */ +! int ind_maxcomment = 70; + +! /* +! * handle braces for java code +! */ +! int ind_java = 0; + +! /* +! * not to confuse JS object properties with labels +! */ +! int ind_js = 0; + +! /* +! * handle blocked cases correctly +! */ +! int ind_keep_case_label = 0; + +! /* +! * handle C++ namespace +! */ +! int ind_cpp_namespace = 0; + +! /* +! * handle continuation lines containing conditions of if(), for() and +! * while() +! */ +! int ind_if_for_while = 0; + + pos_T cur_curpos; + int amount; + int scope_amount; +--- 6637,6865 ---- + return retval; + } + +! /* +! * Parse 'cinoptions' and set the values in "curbuf". +! * Must be called when 'cinoptions', 'shiftwidth' and/or 'tabstop' changes. +! */ +! void +! parse_cino(buf) +! buf_T *buf; + { +! char_u *p; +! char_u *l; +! char_u *digits; +! int n; +! int divider; +! int fraction = 0; +! int sw = (int)get_sw_value(buf); + + /* +! * Set the default values. + */ ++ /* Spaces from a block's opening brace the prevailing indent for that ++ * block should be. */ ++ buf->b_ind_level = sw; + +! /* Spaces from the edge of the line an open brace that's at the end of a +! * line is imagined to be. */ +! buf->b_ind_open_imag = 0; + +! /* Spaces from the prevailing indent for a line that is not preceded by +! * an opening brace. */ +! buf->b_ind_no_brace = 0; + +! /* Column where the first { of a function should be located }. */ +! buf->b_ind_first_open = 0; + +! /* Spaces from the prevailing indent a leftmost open brace should be +! * located. */ +! buf->b_ind_open_extra = 0; + +! /* Spaces from the matching open brace (real location for one at the left + * edge; imaginary location from one that ends a line) the matching close +! * brace should be located. */ +! buf->b_ind_close_extra = 0; + +! /* Spaces from the edge of the line an open brace sitting in the leftmost +! * column is imagined to be. */ +! buf->b_ind_open_left_imag = 0; + +! /* Spaces jump labels should be shifted to the left if N is non-negative, +! * otherwise the jump label will be put to column 1. */ +! buf->b_ind_jump_label = -1; + +! /* Spaces from the switch() indent a "case xx" label should be located. */ +! buf->b_ind_case = sw; + +! /* Spaces from the "case xx:" code after a switch() should be located. */ +! buf->b_ind_case_code = sw; + +! /* Lineup break at end of case in switch() with case label. */ +! buf->b_ind_case_break = 0; + +! /* Spaces from the class declaration indent a scope declaration label +! * should be located. */ +! buf->b_ind_scopedecl = sw; + +! /* Spaces from the scope declaration label code should be located. */ +! buf->b_ind_scopedecl_code = sw; + +! /* Amount K&R-style parameters should be indented. */ +! buf->b_ind_param = sw; + +! /* Amount a function type spec should be indented. */ +! buf->b_ind_func_type = sw; + +! /* Amount a cpp base class declaration or constructor initialization +! * should be indented. */ +! buf->b_ind_cpp_baseclass = sw; + +! /* additional spaces beyond the prevailing indent a continuation line +! * should be located. */ +! buf->b_ind_continuation = sw; + +! /* Spaces from the indent of the line with an unclosed parentheses. */ +! buf->b_ind_unclosed = sw * 2; + +! /* Spaces from the indent of the line with an unclosed parentheses, which +! * itself is also unclosed. */ +! buf->b_ind_unclosed2 = sw; + +! /* Suppress ignoring spaces from the indent of a line starting with an +! * unclosed parentheses. */ +! buf->b_ind_unclosed_noignore = 0; + +! /* If the opening paren is the last nonwhite character on the line, and +! * b_ind_unclosed_wrapped is nonzero, use this indent relative to the outer +! * context (for very long lines). */ +! buf->b_ind_unclosed_wrapped = 0; + +! /* Suppress ignoring white space when lining up with the character after +! * an unclosed parentheses. */ +! buf->b_ind_unclosed_whiteok = 0; + +! /* Indent a closing parentheses under the line start of the matching +! * opening parentheses. */ +! buf->b_ind_matching_paren = 0; + +! /* Indent a closing parentheses under the previous line. */ +! buf->b_ind_paren_prev = 0; + +! /* Extra indent for comments. */ +! buf->b_ind_comment = 0; + +! /* Spaces from the comment opener when there is nothing after it. */ +! buf->b_ind_in_comment = 3; + +! /* Boolean: if non-zero, use b_ind_in_comment even if there is something +! * after the comment opener. */ +! buf->b_ind_in_comment2 = 0; + +! /* Max lines to search for an open paren. */ +! buf->b_ind_maxparen = 20; + +! /* Max lines to search for an open comment. */ +! buf->b_ind_maxcomment = 70; + +! /* Handle braces for java code. */ +! buf->b_ind_java = 0; + +! /* Not to confuse JS object properties with labels. */ +! buf->b_ind_js = 0; + +! /* Handle blocked cases correctly. */ +! buf->b_ind_keep_case_label = 0; + +! /* Handle C++ namespace. */ +! buf->b_ind_cpp_namespace = 0; + +! /* Handle continuation lines containing conditions of if(), for() and +! * while(). */ +! buf->b_ind_if_for_while = 0; +! +! for (p = buf->b_p_cino; *p; ) +! { +! l = p++; +! if (*p == '-') +! ++p; +! digits = p; /* remember where the digits start */ +! n = getdigits(&p); +! divider = 0; +! if (*p == '.') /* ".5s" means a fraction */ +! { +! fraction = atol((char *)++p); +! while (VIM_ISDIGIT(*p)) +! { +! ++p; +! if (divider) +! divider *= 10; +! else +! divider = 10; +! } +! } +! if (*p == 's') /* "2s" means two times 'shiftwidth' */ +! { +! if (p == digits) +! n = sw; /* just "s" is one 'shiftwidth' */ +! else +! { +! n *= sw; +! if (divider) +! n += (sw * fraction + divider / 2) / divider; +! } +! ++p; +! } +! if (l[1] == '-') +! n = -n; + ++ /* When adding an entry here, also update the default 'cinoptions' in ++ * doc/indent.txt, and add explanation for it! */ ++ switch (*l) ++ { ++ case '>': buf->b_ind_level = n; break; ++ case 'e': buf->b_ind_open_imag = n; break; ++ case 'n': buf->b_ind_no_brace = n; break; ++ case 'f': buf->b_ind_first_open = n; break; ++ case '{': buf->b_ind_open_extra = n; break; ++ case '}': buf->b_ind_close_extra = n; break; ++ case '^': buf->b_ind_open_left_imag = n; break; ++ case 'L': buf->b_ind_jump_label = n; break; ++ case ':': buf->b_ind_case = n; break; ++ case '=': buf->b_ind_case_code = n; break; ++ case 'b': buf->b_ind_case_break = n; break; ++ case 'p': buf->b_ind_param = n; break; ++ case 't': buf->b_ind_func_type = n; break; ++ case '/': buf->b_ind_comment = n; break; ++ case 'c': buf->b_ind_in_comment = n; break; ++ case 'C': buf->b_ind_in_comment2 = n; break; ++ case 'i': buf->b_ind_cpp_baseclass = n; break; ++ case '+': buf->b_ind_continuation = n; break; ++ case '(': buf->b_ind_unclosed = n; break; ++ case 'u': buf->b_ind_unclosed2 = n; break; ++ case 'U': buf->b_ind_unclosed_noignore = n; break; ++ case 'W': buf->b_ind_unclosed_wrapped = n; break; ++ case 'w': buf->b_ind_unclosed_whiteok = n; break; ++ case 'm': buf->b_ind_matching_paren = n; break; ++ case 'M': buf->b_ind_paren_prev = n; break; ++ case ')': buf->b_ind_maxparen = n; break; ++ case '*': buf->b_ind_maxcomment = n; break; ++ case 'g': buf->b_ind_scopedecl = n; break; ++ case 'h': buf->b_ind_scopedecl_code = n; break; ++ case 'j': buf->b_ind_java = n; break; ++ case 'J': buf->b_ind_js = n; break; ++ case 'l': buf->b_ind_keep_case_label = n; break; ++ case '#': buf->b_ind_hash_comment = n; break; ++ case 'N': buf->b_ind_cpp_namespace = n; break; ++ case 'k': buf->b_ind_if_for_while = n; break; ++ } ++ if (*p == ',') ++ ++p; ++ } ++ } ++ ++ int ++ get_c_indent() ++ { + pos_T cur_curpos; + int amount; + int scope_amount; +*************** +*** 6868,6877 **** + + int whilelevel; + linenr_T lnum; +- char_u *options; +- char_u *digits; +- int fraction = 0; /* init for GCC */ +- int divider; + int n; + int iscase; + int lookfor_break; +--- 6894,6899 ---- +*************** +*** 6880,6962 **** + int original_line_islabel; + int added_to_amount = 0; + +! for (options = curbuf->b_p_cino; *options; ) +! { +! l = options++; +! if (*options == '-') +! ++options; +! digits = options; /* remember where the digits start */ +! n = getdigits(&options); +! divider = 0; +! if (*options == '.') /* ".5s" means a fraction */ +! { +! fraction = atol((char *)++options); +! while (VIM_ISDIGIT(*options)) +! { +! ++options; +! if (divider) +! divider *= 10; +! else +! divider = 10; +! } +! } +! if (*options == 's') /* "2s" means two times 'shiftwidth' */ +! { +! if (options == digits) +! n = sw; /* just "s" is one 'shiftwidth' */ +! else +! { +! n *= sw; +! if (divider) +! n += (sw * fraction + divider / 2) / divider; +! } +! ++options; +! } +! if (l[1] == '-') +! n = -n; +! /* When adding an entry here, also update the default 'cinoptions' in +! * doc/indent.txt, and add explanation for it! */ +! switch (*l) +! { +! case '>': ind_level = n; break; +! case 'e': ind_open_imag = n; break; +! case 'n': ind_no_brace = n; break; +! case 'f': ind_first_open = n; break; +! case '{': ind_open_extra = n; break; +! case '}': ind_close_extra = n; break; +! case '^': ind_open_left_imag = n; break; +! case 'L': ind_jump_label = n; break; +! case ':': ind_case = n; break; +! case '=': ind_case_code = n; break; +! case 'b': ind_case_break = n; break; +! case 'p': ind_param = n; break; +! case 't': ind_func_type = n; break; +! case '/': ind_comment = n; break; +! case 'c': ind_in_comment = n; break; +! case 'C': ind_in_comment2 = n; break; +! case 'i': ind_cpp_baseclass = n; break; +! case '+': ind_continuation = n; break; +! case '(': ind_unclosed = n; break; +! case 'u': ind_unclosed2 = n; break; +! case 'U': ind_unclosed_noignore = n; break; +! case 'W': ind_unclosed_wrapped = n; break; +! case 'w': ind_unclosed_whiteok = n; break; +! case 'm': ind_matching_paren = n; break; +! case 'M': ind_paren_prev = n; break; +! case ')': ind_maxparen = n; break; +! case '*': ind_maxcomment = n; break; +! case 'g': ind_scopedecl = n; break; +! case 'h': ind_scopedecl_code = n; break; +! case 'j': ind_java = n; break; +! case 'J': ind_js = n; break; +! case 'l': ind_keep_case_label = n; break; +! case '#': ind_hash_comment = n; break; +! case 'N': ind_cpp_namespace = n; break; +! case 'k': ind_if_for_while = n; break; +! } +! if (*options == ',') +! ++options; +! } + + /* remember where the cursor was when we started */ + cur_curpos = curwin->w_cursor; +--- 6902,6909 ---- + int original_line_islabel; + int added_to_amount = 0; + +! /* make a copy, value is changed below */ +! int ind_continuation = curbuf->b_ind_continuation; + + /* remember where the cursor was when we started */ + cur_curpos = curwin->w_cursor; +*************** +*** 6990,7011 **** + + curwin->w_cursor.col = 0; + +! original_line_islabel = cin_islabel(ind_maxcomment); /* XXX */ + + /* + * #defines and so on always go at the left when included in 'cinkeys'. + */ + if (*theline == '#' && (*linecopy == '#' || in_cinkeys('#', ' ', TRUE))) +! { +! amount = 0; +! } + + /* + * Is it a non-case label? Then that goes at the left margin too unless: + * - JS flag is set. + * - 'L' item has a positive value. + */ +! else if (original_line_islabel && !ind_js && ind_jump_label < 0) + { + amount = 0; + } +--- 6937,6957 ---- + + curwin->w_cursor.col = 0; + +! original_line_islabel = cin_islabel(curbuf->b_ind_maxcomment); /* XXX */ + + /* + * #defines and so on always go at the left when included in 'cinkeys'. + */ + if (*theline == '#' && (*linecopy == '#' || in_cinkeys('#', ' ', TRUE))) +! amount = curbuf->b_ind_hash_comment; + + /* + * Is it a non-case label? Then that goes at the left margin too unless: + * - JS flag is set. + * - 'L' item has a positive value. + */ +! else if (original_line_islabel && !curbuf->b_ind_js +! && curbuf->b_ind_jump_label < 0) + { + amount = 0; + } +*************** +*** 7027,7033 **** + * comment, try using the 'comments' option. + */ + else if (!cin_iscomment(theline) +! && (trypos = find_start_comment(ind_maxcomment)) != NULL) /* XXX */ + { + int lead_start_len = 2; + int lead_middle_len = 1; +--- 6973,6980 ---- + * comment, try using the 'comments' option. + */ + else if (!cin_iscomment(theline) +! && (trypos = find_start_comment(curbuf->b_ind_maxcomment)) != NULL) +! /* XXX */ + { + int lead_start_len = 2; + int lead_middle_len = 1; +*************** +*** 7161,7167 **** + } + if (amount == -1) /* use the comment opener */ + { +! if (!ind_in_comment2) + { + start = ml_get(trypos->lnum); + look = start + trypos->col + 2; /* skip / and * */ +--- 7108,7114 ---- + } + if (amount == -1) /* use the comment opener */ + { +! if (!curbuf->b_ind_in_comment2) + { + start = ml_get(trypos->lnum); + look = start + trypos->col + 2; /* skip / and * */ +*************** +*** 7170,7177 **** + } + getvcol(curwin, trypos, &col, NULL, NULL); + amount = col; +! if (ind_in_comment2 || *look == NUL) +! amount += ind_in_comment; + } + } + } +--- 7117,7124 ---- + } + getvcol(curwin, trypos, &col, NULL, NULL); + amount = col; +! if (curbuf->b_ind_in_comment2 || *look == NUL) +! amount += curbuf->b_ind_in_comment; + } + } + } +*************** +*** 7179,7187 **** + /* + * Are we inside parentheses or braces? + */ /* XXX */ +! else if (((trypos = find_match_paren(ind_maxparen, ind_maxcomment)) != NULL +! && ind_java == 0) +! || (tryposBrace = find_start_brace(ind_maxcomment)) != NULL + || trypos != NULL) + { + if (trypos != NULL && tryposBrace != NULL) +--- 7126,7136 ---- + /* + * Are we inside parentheses or braces? + */ /* XXX */ +! else if (((trypos = find_match_paren(curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) != NULL +! && curbuf->b_ind_java == 0) +! || (tryposBrace = +! find_start_brace(curbuf->b_ind_maxcomment)) != NULL + || trypos != NULL) + { + if (trypos != NULL && tryposBrace != NULL) +*************** +*** 7202,7208 **** + * If the matching paren is more than one line away, use the indent of + * a previous non-empty line that matches the same paren. + */ +! if (theline[0] == ')' && ind_paren_prev) + { + /* Line up with the start of the matching paren line. */ + amount = get_indent_lnum(curwin->w_cursor.lnum - 1); /* XXX */ +--- 7151,7157 ---- + * If the matching paren is more than one line away, use the indent of + * a previous non-empty line that matches the same paren. + */ +! if (theline[0] == ')' && curbuf->b_ind_paren_prev) + { + /* Line up with the start of the matching paren line. */ + amount = get_indent_lnum(curwin->w_cursor.lnum - 1); /* XXX */ +*************** +*** 7221,7227 **** + curwin->w_cursor.lnum = lnum; + + /* Skip a comment. XXX */ +! if ((trypos = find_start_comment(ind_maxcomment)) != NULL) + { + lnum = trypos->lnum + 1; + continue; +--- 7170,7177 ---- + curwin->w_cursor.lnum = lnum; + + /* Skip a comment. XXX */ +! if ((trypos = find_start_comment(curbuf->b_ind_maxcomment)) +! != NULL) + { + lnum = trypos->lnum + 1; + continue; +*************** +*** 7229,7236 **** + + /* XXX */ + if ((trypos = find_match_paren( +! corr_ind_maxparen(ind_maxparen, &cur_curpos), +! ind_maxcomment)) != NULL + && trypos->lnum == our_paren_pos.lnum + && trypos->col == our_paren_pos.col) + { +--- 7179,7186 ---- + + /* XXX */ + if ((trypos = find_match_paren( +! corr_ind_maxparen(curbuf->b_ind_maxparen, &cur_curpos), +! curbuf->b_ind_maxcomment)) != NULL + && trypos->lnum == our_paren_pos.lnum + && trypos->col == our_paren_pos.col) + { +*************** +*** 7258,7264 **** + int ignore_paren_col = 0; + int is_if_for_while = 0; + +! if (ind_if_for_while) + { + /* Look for the outermost opening parenthesis on this line + * and check whether it belongs to an "if", "for" or "while". */ +--- 7208,7214 ---- + int ignore_paren_col = 0; + int is_if_for_while = 0; + +! if (curbuf->b_ind_if_for_while) + { + /* Look for the outermost opening parenthesis on this line + * and check whether it belongs to an "if", "for" or "while". */ +*************** +*** 7273,7279 **** + curwin->w_cursor.lnum = outermost.lnum; + curwin->w_cursor.col = outermost.col; + +! trypos = find_match_paren(ind_maxparen, ind_maxcomment); + } while (trypos && trypos->lnum == outermost.lnum); + + curwin->w_cursor = cursor_save; +--- 7223,7230 ---- + curwin->w_cursor.lnum = outermost.lnum; + curwin->w_cursor.col = outermost.col; + +! trypos = find_match_paren(curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment); + } while (trypos && trypos->lnum == outermost.lnum); + + curwin->w_cursor = cursor_save; +*************** +*** 7284,7290 **** + cin_is_if_for_while_before_offset(line, &outermost.col); + } + +! amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment); + look = skipwhite(look); + if (*look == '(') + { +--- 7235,7242 ---- + cin_is_if_for_while_before_offset(line, &outermost.col); + } + +! amount = skip_label(our_paren_pos.lnum, &look, +! curbuf->b_ind_maxcomment); + look = skipwhite(look); + if (*look == '(') + { +*************** +*** 7298,7304 **** + line = ml_get_curline(); + look_col = (int)(look - line); + curwin->w_cursor.col = look_col + 1; +! if ((trypos = findmatchlimit(NULL, ')', 0, ind_maxparen)) + != NULL + && trypos->lnum == our_paren_pos.lnum + && trypos->col < our_paren_pos.col) +--- 7250,7257 ---- + line = ml_get_curline(); + look_col = (int)(look - line); + curwin->w_cursor.col = look_col + 1; +! if ((trypos = findmatchlimit(NULL, ')', 0, +! curbuf->b_ind_maxparen)) + != NULL + && trypos->lnum == our_paren_pos.lnum + && trypos->col < our_paren_pos.col) +*************** +*** 7307,7330 **** + curwin->w_cursor.lnum = save_lnum; + look = ml_get(our_paren_pos.lnum) + look_col; + } +! if (theline[0] == ')' || (ind_unclosed == 0 && is_if_for_while == 0) +! || (!ind_unclosed_noignore && *look == '(' + && ignore_paren_col == 0)) + { + /* + * If we're looking at a close paren, line up right there; + * otherwise, line up with the next (non-white) character. +! * When ind_unclosed_wrapped is set and the matching paren is + * the last nonwhite character of the line, use either the + * indent of the current line or the indentation of the next +! * outer paren and add ind_unclosed_wrapped (for very long + * lines). + */ + if (theline[0] != ')') + { + cur_amount = MAXCOL; + l = ml_get(our_paren_pos.lnum); +! if (ind_unclosed_wrapped + && cin_ends_in(l, (char_u *)"(", NULL)) + { + /* look for opening unmatched paren, indent one level +--- 7260,7284 ---- + curwin->w_cursor.lnum = save_lnum; + look = ml_get(our_paren_pos.lnum) + look_col; + } +! if (theline[0] == ')' || (curbuf->b_ind_unclosed == 0 +! && is_if_for_while == 0) +! || (!curbuf->b_ind_unclosed_noignore && *look == '(' + && ignore_paren_col == 0)) + { + /* + * If we're looking at a close paren, line up right there; + * otherwise, line up with the next (non-white) character. +! * When b_ind_unclosed_wrapped is set and the matching paren is + * the last nonwhite character of the line, use either the + * indent of the current line or the indentation of the next +! * outer paren and add b_ind_unclosed_wrapped (for very long + * lines). + */ + if (theline[0] != ')') + { + cur_amount = MAXCOL; + l = ml_get(our_paren_pos.lnum); +! if (curbuf->b_ind_unclosed_wrapped + && cin_ends_in(l, (char_u *)"(", NULL)) + { + /* look for opening unmatched paren, indent one level +*************** +*** 7346,7354 **** + } + + our_paren_pos.col = 0; +! amount += n * ind_unclosed_wrapped; + } +! else if (ind_unclosed_whiteok) + our_paren_pos.col++; + else + { +--- 7300,7308 ---- + } + + our_paren_pos.col = 0; +! amount += n * curbuf->b_ind_unclosed_wrapped; + } +! else if (curbuf->b_ind_unclosed_whiteok) + our_paren_pos.col++; + else + { +*************** +*** 7374,7385 **** + } + } + +! if (theline[0] == ')' && ind_matching_paren) + { + /* Line up with the start of the matching paren line. */ + } +! else if ((ind_unclosed == 0 && is_if_for_while == 0) +! || (!ind_unclosed_noignore + && *look == '(' && ignore_paren_col == 0)) + { + if (cur_amount != MAXCOL) +--- 7328,7339 ---- + } + } + +! if (theline[0] == ')' && curbuf->b_ind_matching_paren) + { + /* Line up with the start of the matching paren line. */ + } +! else if ((curbuf->b_ind_unclosed == 0 && is_if_for_while == 0) +! || (!curbuf->b_ind_unclosed_noignore + && *look == '(' && ignore_paren_col == 0)) + { + if (cur_amount != MAXCOL) +*************** +*** 7387,7425 **** + } + else + { +! /* Add ind_unclosed2 for each '(' before our matching one, but +! * ignore (void) before the line (ignore_paren_col). */ + col = our_paren_pos.col; + while ((int)our_paren_pos.col > ignore_paren_col) + { + --our_paren_pos.col; + switch (*ml_get_pos(&our_paren_pos)) + { +! case '(': amount += ind_unclosed2; + col = our_paren_pos.col; + break; +! case ')': amount -= ind_unclosed2; + col = MAXCOL; + break; + } + } + +! /* Use ind_unclosed once, when the first '(' is not inside + * braces */ + if (col == MAXCOL) +! amount += ind_unclosed; + else + { + curwin->w_cursor.lnum = our_paren_pos.lnum; + curwin->w_cursor.col = col; +! if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL) +! amount += ind_unclosed2; + else + { + if (is_if_for_while) +! amount += ind_if_for_while; + else +! amount += ind_unclosed; + } + } + /* +--- 7341,7380 ---- + } + else + { +! /* Add b_ind_unclosed2 for each '(' before our matching one, +! * but ignore (void) before the line (ignore_paren_col). */ + col = our_paren_pos.col; + while ((int)our_paren_pos.col > ignore_paren_col) + { + --our_paren_pos.col; + switch (*ml_get_pos(&our_paren_pos)) + { +! case '(': amount += curbuf->b_ind_unclosed2; + col = our_paren_pos.col; + break; +! case ')': amount -= curbuf->b_ind_unclosed2; + col = MAXCOL; + break; + } + } + +! /* Use b_ind_unclosed once, when the first '(' is not inside + * braces */ + if (col == MAXCOL) +! amount += curbuf->b_ind_unclosed; + else + { + curwin->w_cursor.lnum = our_paren_pos.lnum; + curwin->w_cursor.col = col; +! if (find_match_paren(curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment) != NULL) +! amount += curbuf->b_ind_unclosed2; + else + { + if (is_if_for_while) +! amount += curbuf->b_ind_if_for_while; + else +! amount += curbuf->b_ind_unclosed; + } + } + /* +*************** +*** 7437,7443 **** + + /* add extra indent for a comment */ + if (cin_iscomment(theline)) +! amount += ind_comment; + } + + /* +--- 7392,7398 ---- + + /* add extra indent for a comment */ + if (cin_iscomment(theline)) +! amount += curbuf->b_ind_comment; + } + + /* +*************** +*** 7480,7487 **** + */ + lnum = ourscope; + if (find_last_paren(start, '(', ')') +! && (trypos = find_match_paren(ind_maxparen, +! ind_maxcomment)) != NULL) + lnum = trypos->lnum; + + /* +--- 7435,7442 ---- + */ + lnum = ourscope; + if (find_last_paren(start, '(', ')') +! && (trypos = find_match_paren(curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) != NULL) + lnum = trypos->lnum; + + /* +*************** +*** 7490,7500 **** + * ldfd) { + * } + */ +! if (ind_js || (ind_keep_case_label + && cin_iscase(skipwhite(ml_get_curline()), FALSE))) + amount = get_indent(); + else +! amount = skip_label(lnum, &l, ind_maxcomment); + + start_brace = BRACE_AT_END; + } +--- 7445,7455 ---- + * ldfd) { + * } + */ +! if (curbuf->b_ind_js || (curbuf->b_ind_keep_case_label + && cin_iscase(skipwhite(ml_get_curline()), FALSE))) + amount = get_indent(); + else +! amount = skip_label(lnum, &l, curbuf->b_ind_maxcomment); + + start_brace = BRACE_AT_END; + } +*************** +*** 7510,7516 **** + * they may want closing braces to line up with something + * other than the open brace. indulge them, if so. + */ +! amount += ind_close_extra; + } + else + { +--- 7465,7471 ---- + * they may want closing braces to line up with something + * other than the open brace. indulge them, if so. + */ +! amount += curbuf->b_ind_close_extra; + } + else + { +*************** +*** 7523,7536 **** + lookfor = LOOKFOR_INITIAL; + if (cin_iselse(theline)) + lookfor = LOOKFOR_IF; +! else if (cin_iswhileofdo(theline, cur_curpos.lnum, ind_maxparen)) +! /* XXX */ + lookfor = LOOKFOR_DO; + if (lookfor != LOOKFOR_INITIAL) + { + curwin->w_cursor.lnum = cur_curpos.lnum; +! if (find_match(lookfor, ourscope, ind_maxparen, +! ind_maxcomment) == OK) + { + amount = get_indent(); /* XXX */ + goto theend; +--- 7478,7491 ---- + lookfor = LOOKFOR_INITIAL; + if (cin_iselse(theline)) + lookfor = LOOKFOR_IF; +! else if (cin_iswhileofdo(theline, cur_curpos.lnum, +! curbuf->b_ind_maxparen)) /* XXX */ + lookfor = LOOKFOR_DO; + if (lookfor != LOOKFOR_INITIAL) + { + curwin->w_cursor.lnum = cur_curpos.lnum; +! if (find_match(lookfor, ourscope, curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment) == OK) + { + amount = get_indent(); /* XXX */ + goto theend; +*************** +*** 7547,7558 **** + /* + * if the '{' is _really_ at the left margin, use the imaginary + * location of a left-margin brace. Otherwise, correct the +! * location for ind_open_extra. + */ + + if (start_brace == BRACE_IN_COL0) /* '{' is in column 0 */ + { +! amount = ind_open_left_imag; + lookfor_cpp_namespace = TRUE; + } + else if (start_brace == BRACE_AT_START && +--- 7502,7513 ---- + /* + * if the '{' is _really_ at the left margin, use the imaginary + * location of a left-margin brace. Otherwise, correct the +! * location for b_ind_open_extra. + */ + + if (start_brace == BRACE_IN_COL0) /* '{' is in column 0 */ + { +! amount = curbuf->b_ind_open_left_imag; + lookfor_cpp_namespace = TRUE; + } + else if (start_brace == BRACE_AT_START && +*************** +*** 7565,7580 **** + { + if (start_brace == BRACE_AT_END) /* '{' is at end of line */ + { +! amount += ind_open_imag; + + l = skipwhite(ml_get_curline()); + if (cin_is_cpp_namespace(l)) +! amount += ind_cpp_namespace; + } + else + { +! /* Compensate for adding ind_open_extra later. */ +! amount -= ind_open_extra; + if (amount < 0) + amount = 0; + } +--- 7520,7535 ---- + { + if (start_brace == BRACE_AT_END) /* '{' is at end of line */ + { +! amount += curbuf->b_ind_open_imag; + + l = skipwhite(ml_get_curline()); + if (cin_is_cpp_namespace(l)) +! amount += curbuf->b_ind_cpp_namespace; + } + else + { +! /* Compensate for adding b_ind_open_extra later. */ +! amount -= curbuf->b_ind_open_extra; + if (amount < 0) + amount = 0; + } +*************** +*** 7585,7604 **** + if (cin_iscase(theline, FALSE)) /* it's a switch() label */ + { + lookfor = LOOKFOR_CASE; /* find a previous switch() label */ +! amount += ind_case; + } + else if (cin_isscopedecl(theline)) /* private:, ... */ + { + lookfor = LOOKFOR_SCOPEDECL; /* class decl is this block */ +! amount += ind_scopedecl; + } + else + { +! if (ind_case_break && cin_isbreak(theline)) /* break; ... */ + lookfor_break = TRUE; + + lookfor = LOOKFOR_INITIAL; +! amount += ind_level; /* ind_level from start of block */ + } + scope_amount = amount; + whilelevel = 0; +--- 7540,7561 ---- + if (cin_iscase(theline, FALSE)) /* it's a switch() label */ + { + lookfor = LOOKFOR_CASE; /* find a previous switch() label */ +! amount += curbuf->b_ind_case; + } + else if (cin_isscopedecl(theline)) /* private:, ... */ + { + lookfor = LOOKFOR_SCOPEDECL; /* class decl is this block */ +! amount += curbuf->b_ind_scopedecl; + } + else + { +! if (curbuf->b_ind_case_break && cin_isbreak(theline)) +! /* break; ... */ + lookfor_break = TRUE; + + lookfor = LOOKFOR_INITIAL; +! /* b_ind_level from start of block */ +! amount += curbuf->b_ind_level; + } + scope_amount = amount; + whilelevel = 0; +*************** +*** 7636,7649 **** + { + if (curwin->w_cursor.lnum == 0 + || curwin->w_cursor.lnum +! < ourscope - ind_maxparen) + { +! /* nothing found (abuse ind_maxparen as limit) +! * assume terminated line (i.e. a variable + * initialization) */ + if (cont_amount > 0) + amount = cont_amount; +! else if (!ind_js) + amount += ind_continuation; + break; + } +--- 7593,7606 ---- + { + if (curwin->w_cursor.lnum == 0 + || curwin->w_cursor.lnum +! < ourscope - curbuf->b_ind_maxparen) + { +! /* nothing found (abuse curbuf->b_ind_maxparen as +! * limit) assume terminated line (i.e. a variable + * initialization) */ + if (cont_amount > 0) + amount = cont_amount; +! else if (!curbuf->b_ind_js) + amount += ind_continuation; + break; + } +*************** +*** 7654,7660 **** + * If we're in a comment now, skip to the start of the + * comment. + */ +! trypos = find_start_comment(ind_maxcomment); + if (trypos != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; +--- 7611,7617 ---- + * If we're in a comment now, skip to the start of the + * comment. + */ +! trypos = find_start_comment(curbuf->b_ind_maxcomment); + if (trypos != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; +*************** +*** 7680,7686 **** + */ + if (start_brace != BRACE_IN_COL0 + || !cin_isfuncdecl(&l, curwin->w_cursor.lnum, +! 0, ind_maxparen, ind_maxcomment)) + { + /* if the line is terminated with another ',' + * it is a continued variable initialization. +--- 7637,7644 ---- + */ + if (start_brace != BRACE_IN_COL0 + || !cin_isfuncdecl(&l, curwin->w_cursor.lnum, +! 0, curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) + { + /* if the line is terminated with another ',' + * it is a continued variable initialization. +*************** +*** 7711,7721 **** + */ /* XXX */ + trypos = NULL; + if (find_last_paren(l, '(', ')')) +! trypos = find_match_paren(ind_maxparen, +! ind_maxcomment); + + if (trypos == NULL && find_last_paren(l, '{', '}')) +! trypos = find_start_brace(ind_maxcomment); + + if (trypos != NULL) + { +--- 7669,7681 ---- + */ /* XXX */ + trypos = NULL; + if (find_last_paren(l, '(', ')')) +! trypos = find_match_paren( +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment); + + if (trypos == NULL && find_last_paren(l, '{', '}')) +! trypos = find_start_brace( +! curbuf->b_ind_maxcomment); + + if (trypos != NULL) + { +*************** +*** 7750,7757 **** + amount = scope_amount; + if (theline[0] == '{') + { +! amount += ind_open_extra; +! added_to_amount = ind_open_extra; + } + } + +--- 7710,7717 ---- + amount = scope_amount; + if (theline[0] == '{') + { +! amount += curbuf->b_ind_open_extra; +! added_to_amount = curbuf->b_ind_open_extra; + } + } + +*************** +*** 7773,7779 **** + + /* If we're in a comment now, skip to the start of + * the comment. */ +! trypos = find_start_comment(ind_maxcomment); + if (trypos != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; +--- 7733,7740 ---- + + /* If we're in a comment now, skip to the start of + * the comment. */ +! trypos = find_start_comment( +! curbuf->b_ind_maxcomment); + if (trypos != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; +*************** +*** 7788,7794 **** + /* Finally the actual check for "namespace". */ + if (cin_is_cpp_namespace(l)) + { +! amount += ind_cpp_namespace - added_to_amount; + break; + } + +--- 7749,7756 ---- + /* Finally the actual check for "namespace". */ + if (cin_is_cpp_namespace(l)) + { +! amount += curbuf->b_ind_cpp_namespace +! - added_to_amount; + break; + } + +*************** +*** 7802,7808 **** + /* + * If we're in a comment now, skip to the start of the comment. + */ /* XXX */ +! if ((trypos = find_start_comment(ind_maxcomment)) != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; + curwin->w_cursor.col = 0; +--- 7764,7771 ---- + /* + * If we're in a comment now, skip to the start of the comment. + */ /* XXX */ +! if ((trypos = find_start_comment(curbuf->b_ind_maxcomment)) +! != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; + curwin->w_cursor.col = 0; +*************** +*** 7856,7863 **** + * Check that this case label is not for another + * switch() + */ /* XXX */ +! if ((trypos = find_start_brace(ind_maxcomment)) == +! NULL || trypos->lnum == ourscope) + { + amount = get_indent(); /* XXX */ + break; +--- 7819,7827 ---- + * Check that this case label is not for another + * switch() + */ /* XXX */ +! if ((trypos = find_start_brace( +! curbuf->b_ind_maxcomment)) == NULL +! || trypos->lnum == ourscope) + { + amount = get_indent(); /* XXX */ + break; +*************** +*** 7900,7908 **** + if (l != NULL && cin_is_cinword(l)) + { + if (theline[0] == '{') +! amount += ind_open_extra; + else +! amount += ind_level + ind_no_brace; + } + break; + } +--- 7864,7873 ---- + if (l != NULL && cin_is_cinword(l)) + { + if (theline[0] == '{') +! amount += curbuf->b_ind_open_extra; + else +! amount += curbuf->b_ind_level +! + curbuf->b_ind_no_brace; + } + break; + } +*************** +*** 7916,7923 **** + * -> y = 1; + */ + scope_amount = get_indent() + (iscase /* XXX */ +! ? ind_case_code : ind_scopedecl_code); +! lookfor = ind_case_break ? LOOKFOR_NOBREAK : LOOKFOR_ANY; + continue; + } + +--- 7881,7890 ---- + * -> y = 1; + */ + scope_amount = get_indent() + (iscase /* XXX */ +! ? curbuf->b_ind_case_code +! : curbuf->b_ind_scopedecl_code); +! lookfor = curbuf->b_ind_case_break +! ? LOOKFOR_NOBREAK : LOOKFOR_ANY; + continue; + } + +*************** +*** 7928,7934 **** + if (lookfor == LOOKFOR_CASE || lookfor == LOOKFOR_SCOPEDECL) + { + if (find_last_paren(l, '{', '}') && (trypos = +! find_start_brace(ind_maxcomment)) != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; + curwin->w_cursor.col = 0; +--- 7895,7901 ---- + if (lookfor == LOOKFOR_CASE || lookfor == LOOKFOR_SCOPEDECL) + { + if (find_last_paren(l, '{', '}') && (trypos = +! find_start_brace(curbuf->b_ind_maxcomment)) != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; + curwin->w_cursor.col = 0; +*************** +*** 7939,7945 **** + /* + * Ignore jump labels with nothing after them. + */ +! if (!ind_js && cin_islabel(ind_maxcomment)) + { + l = after_label(ml_get_curline()); + if (l == NULL || cin_nocode(l)) +--- 7906,7912 ---- + /* + * Ignore jump labels with nothing after them. + */ +! if (!curbuf->b_ind_js && cin_islabel(curbuf->b_ind_maxcomment)) + { + l = after_label(ml_get_curline()); + if (l == NULL || cin_nocode(l)) +*************** +*** 7962,7968 **** + * constructor initialization? + */ /* XXX */ + n = FALSE; +! if (lookfor != LOOKFOR_TERM && ind_cpp_baseclass > 0) + { + n = cin_is_cpp_baseclass(&col); + l = ml_get_curline(); +--- 7929,7935 ---- + * constructor initialization? + */ /* XXX */ + n = FALSE; +! if (lookfor != LOOKFOR_TERM && curbuf->b_ind_cpp_baseclass > 0) + { + n = cin_is_cpp_baseclass(&col); + l = ml_get_curline(); +*************** +*** 7985,7992 **** + } + else + /* XXX */ +! amount = get_baseclass_amount(col, ind_maxparen, +! ind_maxcomment, ind_cpp_baseclass); + break; + } + else if (lookfor == LOOKFOR_CPP_BASECLASS) +--- 7952,7961 ---- + } + else + /* XXX */ +! amount = get_baseclass_amount(col, +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment, +! curbuf->b_ind_cpp_baseclass); + break; + } + else if (lookfor == LOOKFOR_CPP_BASECLASS) +*************** +*** 8029,8036 **** + */ + (void)find_last_paren(l, '(', ')'); + trypos = find_match_paren( +! corr_ind_maxparen(ind_maxparen, &cur_curpos), +! ind_maxcomment); + + /* + * If we are looking for ',', we also look for matching +--- 7998,8005 ---- + */ + (void)find_last_paren(l, '(', ')'); + trypos = find_match_paren( +! corr_ind_maxparen(curbuf->b_ind_maxparen, +! &cur_curpos), curbuf->b_ind_maxcomment); + + /* + * If we are looking for ',', we also look for matching +*************** +*** 8038,8044 **** + */ + if (trypos == NULL && terminated == ',' + && find_last_paren(l, '{', '}')) +! trypos = find_start_brace(ind_maxcomment); + + if (trypos != NULL) + { +--- 8007,8013 ---- + */ + if (trypos == NULL && terminated == ',' + && find_last_paren(l, '{', '}')) +! trypos = find_start_brace(curbuf->b_ind_maxcomment); + + if (trypos != NULL) + { +*************** +*** 8081,8089 **** + * Get indent and pointer to text for current line, + * ignoring any jump label. XXX + */ +! if (!ind_js) + cur_amount = skip_label(curwin->w_cursor.lnum, +! &l, ind_maxcomment); + else + cur_amount = get_indent(); + /* +--- 8050,8058 ---- + * Get indent and pointer to text for current line, + * ignoring any jump label. XXX + */ +! if (!curbuf->b_ind_js) + cur_amount = skip_label(curwin->w_cursor.lnum, +! &l, curbuf->b_ind_maxcomment); + else + cur_amount = get_indent(); + /* +*************** +*** 8098,8113 **** + { + amount = cur_amount; + /* +! * Only add ind_open_extra when the current line + * doesn't start with a '{', which must have a match + * in the same line (scope is the same). Probably: + * { 1, 2 }, + * -> { 3, 4 } + */ + if (*skipwhite(l) != '{') +! amount += ind_open_extra; + +! if (ind_cpp_baseclass) + { + /* have to look back, whether it is a cpp base + * class declaration or initialization */ +--- 8067,8082 ---- + { + amount = cur_amount; + /* +! * Only add b_ind_open_extra when the current line + * doesn't start with a '{', which must have a match + * in the same line (scope is the same). Probably: + * { 1, 2 }, + * -> { 3, 4 } + */ + if (*skipwhite(l) != '{') +! amount += curbuf->b_ind_open_extra; + +! if (curbuf->b_ind_cpp_baseclass) + { + /* have to look back, whether it is a cpp base + * class declaration or initialization */ +*************** +*** 8155,8164 **** + */ + amount = cur_amount; + if (theline[0] == '{') +! amount += ind_open_extra; + if (lookfor != LOOKFOR_TERM) + { +! amount += ind_level + ind_no_brace; + break; + } + +--- 8124,8134 ---- + */ + amount = cur_amount; + if (theline[0] == '{') +! amount += curbuf->b_ind_open_extra; + if (lookfor != LOOKFOR_TERM) + { +! amount += curbuf->b_ind_level +! + curbuf->b_ind_no_brace; + break; + } + +*************** +*** 8192,8201 **** + curwin->w_cursor.col = + (colnr_T)(l - ml_get_curline()) + 1; + +! if ((trypos = find_start_brace(ind_maxcomment)) +! == NULL + || find_match(LOOKFOR_IF, trypos->lnum, +! ind_maxparen, ind_maxcomment) == FAIL) + break; + } + } +--- 8162,8172 ---- + curwin->w_cursor.col = + (colnr_T)(l - ml_get_curline()) + 1; + +! if ((trypos = find_start_brace( +! curbuf->b_ind_maxcomment)) == NULL + || find_match(LOOKFOR_IF, trypos->lnum, +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment) == FAIL) + break; + } + } +*************** +*** 8232,8238 **** + * enumerations/initializations. */ + if (terminated == ',') + { +! if (ind_cpp_baseclass == 0) + break; + + lookfor = LOOKFOR_CPP_BASECLASS; +--- 8203,8209 ---- + * enumerations/initializations. */ + if (terminated == ',') + { +! if (curbuf->b_ind_cpp_baseclass == 0) + break; + + lookfor = LOOKFOR_CPP_BASECLASS; +*************** +*** 8290,8297 **** + * If so: Ignore until the matching "do". + */ + /* XXX */ +! else if (cin_iswhileofdo_end(terminated, ind_maxparen, +! ind_maxcomment)) + { + /* + * Found an unterminated line after a while ();, line up +--- 8261,8268 ---- + * If so: Ignore until the matching "do". + */ + /* XXX */ +! else if (cin_iswhileofdo_end(terminated, curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) + { + /* + * Found an unterminated line after a while ();, line up +*************** +*** 8315,8321 **** + lookfor = LOOKFOR_TERM; + amount = get_indent(); /* XXX */ + if (theline[0] == '{') +! amount += ind_open_extra; + } + ++whilelevel; + } +--- 8286,8292 ---- + lookfor = LOOKFOR_TERM; + amount = get_indent(); /* XXX */ + if (theline[0] == '{') +! amount += curbuf->b_ind_open_extra; + } + ++whilelevel; + } +*************** +*** 8408,8415 **** + term_again: + l = ml_get_curline(); + if (find_last_paren(l, '(', ')') +! && (trypos = find_match_paren(ind_maxparen, +! ind_maxcomment)) != NULL) + { + /* + * Check if we are on a case label now. This is +--- 8379,8387 ---- + term_again: + l = ml_get_curline(); + if (find_last_paren(l, '(', ')') +! && (trypos = find_match_paren( +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) != NULL) + { + /* + * Check if we are on a case label now. This is +*************** +*** 8436,8456 **** + * stat; + * } + */ +! iscase = (ind_keep_case_label && cin_iscase(l, FALSE)); + + /* + * Get indent and pointer to text for current line, + * ignoring any jump label. + */ + amount = skip_label(curwin->w_cursor.lnum, +! &l, ind_maxcomment); + + if (theline[0] == '{') +! amount += ind_open_extra; +! /* See remark above: "Only add ind_open_extra.." */ + l = skipwhite(l); + if (*l == '{') +! amount -= ind_open_extra; + lookfor = iscase ? LOOKFOR_ANY : LOOKFOR_TERM; + + /* +--- 8408,8429 ---- + * stat; + * } + */ +! iscase = (curbuf->b_ind_keep_case_label +! && cin_iscase(l, FALSE)); + + /* + * Get indent and pointer to text for current line, + * ignoring any jump label. + */ + amount = skip_label(curwin->w_cursor.lnum, +! &l, curbuf->b_ind_maxcomment); + + if (theline[0] == '{') +! amount += curbuf->b_ind_open_extra; +! /* See remark above: "Only add b_ind_open_extra.." */ + l = skipwhite(l); + if (*l == '{') +! amount -= curbuf->b_ind_open_extra; + lookfor = iscase ? LOOKFOR_ANY : LOOKFOR_TERM; + + /* +*************** +*** 8466,8475 **** + && cin_iselse(l) + && whilelevel == 0) + { +! if ((trypos = find_start_brace(ind_maxcomment)) +! == NULL + || find_match(LOOKFOR_IF, trypos->lnum, +! ind_maxparen, ind_maxcomment) == FAIL) + break; + continue; + } +--- 8439,8449 ---- + && cin_iselse(l) + && whilelevel == 0) + { +! if ((trypos = find_start_brace( +! curbuf->b_ind_maxcomment)) == NULL + || find_match(LOOKFOR_IF, trypos->lnum, +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment) == FAIL) + break; + continue; + } +*************** +*** 8480,8487 **** + */ + l = ml_get_curline(); + if (find_last_paren(l, '{', '}') +! && (trypos = find_start_brace(ind_maxcomment)) +! != NULL) /* XXX */ + { + curwin->w_cursor = *trypos; + /* if not "else {" check for terminated again */ +--- 8454,8461 ---- + */ + l = ml_get_curline(); + if (find_last_paren(l, '{', '}') +! && (trypos = find_start_brace( +! curbuf->b_ind_maxcomment)) != NULL) /* XXX */ + { + curwin->w_cursor = *trypos; + /* if not "else {" check for terminated again */ +*************** +*** 8500,8510 **** + + /* add extra indent for a comment */ + if (cin_iscomment(theline)) +! amount += ind_comment; + + /* subtract extra left-shift for jump labels */ +! if (ind_jump_label > 0 && original_line_islabel) +! amount -= ind_jump_label; + } + + /* +--- 8474,8484 ---- + + /* add extra indent for a comment */ + if (cin_iscomment(theline)) +! amount += curbuf->b_ind_comment; + + /* subtract extra left-shift for jump labels */ +! if (curbuf->b_ind_jump_label > 0 && original_line_islabel) +! amount -= curbuf->b_ind_jump_label; + } + + /* +*************** +*** 8525,8531 **** + + if (theline[0] == '{') + { +! amount = ind_first_open; + } + + /* +--- 8499,8505 ---- + + if (theline[0] == '{') + { +! amount = curbuf->b_ind_first_open; + } + + /* +*************** +*** 8543,8552 **** + && !cin_ends_in(theline, (char_u *)",", NULL) + && cin_isfuncdecl(NULL, cur_curpos.lnum + 1, + cur_curpos.lnum + 1, +! ind_maxparen, ind_maxcomment) + && !cin_isterminated(theline, FALSE, TRUE)) + { +! amount = ind_func_type; + } + else + { +--- 8517,8527 ---- + && !cin_ends_in(theline, (char_u *)",", NULL) + && cin_isfuncdecl(NULL, cur_curpos.lnum + 1, + cur_curpos.lnum + 1, +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment) + && !cin_isterminated(theline, FALSE, TRUE)) + { +! amount = curbuf->b_ind_func_type; + } + else + { +*************** +*** 8565,8571 **** + /* + * If we're in a comment now, skip to the start of the comment. + */ /* XXX */ +! if ((trypos = find_start_comment(ind_maxcomment)) != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; + curwin->w_cursor.col = 0; +--- 8540,8547 ---- + /* + * If we're in a comment now, skip to the start of the comment. + */ /* XXX */ +! if ((trypos = find_start_comment( +! curbuf->b_ind_maxcomment)) != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; + curwin->w_cursor.col = 0; +*************** +*** 8577,8583 **** + * constructor initialization? + */ /* XXX */ + n = FALSE; +! if (ind_cpp_baseclass != 0 && theline[0] != '{') + { + n = cin_is_cpp_baseclass(&col); + l = ml_get_curline(); +--- 8553,8559 ---- + * constructor initialization? + */ /* XXX */ + n = FALSE; +! if (curbuf->b_ind_cpp_baseclass != 0 && theline[0] != '{') + { + n = cin_is_cpp_baseclass(&col); + l = ml_get_curline(); +*************** +*** 8585,8592 **** + if (n) + { + /* XXX */ +! amount = get_baseclass_amount(col, ind_maxparen, +! ind_maxcomment, ind_cpp_baseclass); + break; + } + +--- 8561,8569 ---- + if (n) + { + /* XXX */ +! amount = get_baseclass_amount(col, curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment, +! curbuf->b_ind_cpp_baseclass); + break; + } + +*************** +*** 8617,8624 **** + { + /* take us back to opening paren */ + if (find_last_paren(l, '(', ')') +! && (trypos = find_match_paren(ind_maxparen, +! ind_maxcomment)) != NULL) + curwin->w_cursor = *trypos; + + /* For a line ending in ',' that is a continuation line go +--- 8594,8602 ---- + { + /* take us back to opening paren */ + if (find_last_paren(l, '(', ')') +! && (trypos = find_match_paren( +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) != NULL) + curwin->w_cursor = *trypos; + + /* For a line ending in ',' that is a continuation line go +*************** +*** 8650,8656 **** + * not in a comment, put it the left margin. + */ + if (cin_isfuncdecl(NULL, cur_curpos.lnum, 0, +! ind_maxparen, ind_maxcomment)) /* XXX */ + break; + l = ml_get_curline(); + +--- 8628,8635 ---- + * not in a comment, put it the left margin. + */ + if (cin_isfuncdecl(NULL, cur_curpos.lnum, 0, +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) /* XXX */ + break; + l = ml_get_curline(); + +*************** +*** 8699,8707 **** + * parameters. + */ + if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0, +! ind_maxparen, ind_maxcomment)) + { +! amount = ind_param; + break; + } + +--- 8678,8687 ---- + * parameters. + */ + if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0, +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) + { +! amount = curbuf->b_ind_param; + break; + } + +*************** +*** 8730,8737 **** + */ + find_last_paren(l, '(', ')'); + +! if ((trypos = find_match_paren(ind_maxparen, +! ind_maxcomment)) != NULL) + curwin->w_cursor = *trypos; + amount = get_indent(); /* XXX */ + break; +--- 8710,8717 ---- + */ + find_last_paren(l, '(', ')'); + +! if ((trypos = find_match_paren(curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) != NULL) + curwin->w_cursor = *trypos; + amount = get_indent(); /* XXX */ + break; +*************** +*** 8739,8745 **** + + /* add extra indent for a comment */ + if (cin_iscomment(theline)) +! amount += ind_comment; + + /* add extra indent if the previous line ended in a backslash: + * "asdfasdf\ +--- 8719,8725 ---- + + /* add extra indent for a comment */ + if (cin_iscomment(theline)) +! amount += curbuf->b_ind_comment; + + /* add extra indent if the previous line ended in a backslash: + * "asdfasdf\ +*** ../vim-7.4.068/src/ops.c 2013-11-04 01:41:11.000000000 +0100 +--- src/ops.c 2013-11-05 06:13:27.000000000 +0100 +*************** +*** 336,342 **** + { + int count; + int i, j; +! int p_sw = (int)get_sw_value(); + + count = get_indent(); /* get current indent */ + +--- 336,342 ---- + { + int count; + int i, j; +! int p_sw = (int)get_sw_value(curbuf); + + count = get_indent(); /* get current indent */ + +*************** +*** 392,398 **** + int total; + char_u *newp, *oldp; + int oldcol = curwin->w_cursor.col; +! int p_sw = (int)get_sw_value(); + int p_ts = (int)curbuf->b_p_ts; + struct block_def bd; + int incr; +--- 392,398 ---- + int total; + char_u *newp, *oldp; + int oldcol = curwin->w_cursor.col; +! int p_sw = (int)get_sw_value(curbuf); + int p_ts = (int)curbuf->b_p_ts; + struct block_def bd; + int incr; +*************** +*** 4046,4052 **** + # endif + # endif + # ifdef FEAT_CINDENT +! (curbuf->b_p_cin && in_cinkeys('#', ' ', TRUE)) + # endif + ; + } +--- 4046,4053 ---- + # endif + # endif + # ifdef FEAT_CINDENT +! (curbuf->b_p_cin && in_cinkeys('#', ' ', TRUE) +! && curbuf->b_ind_hash_comment == 0) + # endif + ; + } +*** ../vim-7.4.068/src/proto/misc1.pro 2013-11-04 02:53:46.000000000 +0100 +--- src/proto/misc1.pro 2013-11-05 06:08:46.000000000 +0100 +*************** +*** 84,89 **** +--- 84,90 ---- + int cin_islabel __ARGS((int ind_maxcomment)); + int cin_iscase __ARGS((char_u *s, int strict)); + int cin_isscopedecl __ARGS((char_u *s)); ++ void parse_cino __ARGS((buf_T *buf)); + int get_c_indent __ARGS((void)); + int get_expr_indent __ARGS((void)); + int get_lisp_indent __ARGS((void)); +*** ../vim-7.4.068/src/proto/option.pro 2013-08-10 13:37:22.000000000 +0200 +--- src/proto/option.pro 2013-11-05 06:14:46.000000000 +0100 +*************** +*** 59,65 **** + void save_file_ff __ARGS((buf_T *buf)); + int file_ff_differs __ARGS((buf_T *buf, int ignore_empty)); + int check_ff_value __ARGS((char_u *p)); +! long get_sw_value __ARGS((void)); + long get_sts_value __ARGS((void)); + void find_mps_values __ARGS((int *initc, int *findc, int *backwards, int switchit)); + /* vim: set ft=c : */ +--- 59,65 ---- + void save_file_ff __ARGS((buf_T *buf)); + int file_ff_differs __ARGS((buf_T *buf, int ignore_empty)); + int check_ff_value __ARGS((char_u *p)); +! long get_sw_value __ARGS((buf_T *buf)); + long get_sts_value __ARGS((void)); + void find_mps_values __ARGS((int *initc, int *findc, int *backwards, int switchit)); + /* vim: set ft=c : */ +*** ../vim-7.4.068/src/structs.h 2013-07-03 15:35:59.000000000 +0200 +--- src/structs.h 2013-11-05 05:08:26.000000000 +0100 +*************** +*** 1633,1638 **** +--- 1633,1677 ---- + + /* end of buffer options */ + ++ #ifdef FEAT_CINDENT ++ /* values set from b_p_cino */ ++ int b_ind_level; ++ int b_ind_open_imag; ++ int b_ind_no_brace; ++ int b_ind_first_open; ++ int b_ind_open_extra; ++ int b_ind_close_extra; ++ int b_ind_open_left_imag; ++ int b_ind_jump_label; ++ int b_ind_case; ++ int b_ind_case_code; ++ int b_ind_case_break; ++ int b_ind_param; ++ int b_ind_func_type; ++ int b_ind_comment; ++ int b_ind_in_comment; ++ int b_ind_in_comment2; ++ int b_ind_cpp_baseclass; ++ int b_ind_continuation; ++ int b_ind_unclosed; ++ int b_ind_unclosed2; ++ int b_ind_unclosed_noignore; ++ int b_ind_unclosed_wrapped; ++ int b_ind_unclosed_whiteok; ++ int b_ind_matching_paren; ++ int b_ind_paren_prev; ++ int b_ind_maxparen; ++ int b_ind_maxcomment; ++ int b_ind_scopedecl; ++ int b_ind_scopedecl_code; ++ int b_ind_java; ++ int b_ind_js; ++ int b_ind_keep_case_label; ++ int b_ind_hash_comment; ++ int b_ind_cpp_namespace; ++ int b_ind_if_for_while; ++ #endif ++ + linenr_T b_no_eol_lnum; /* non-zero lnum when last line of next binary + * write should not have an end-of-line */ + +*** ../vim-7.4.068/src/option.c 2013-07-17 21:39:13.000000000 +0200 +--- src/option.c 2013-11-05 06:58:04.000000000 +0100 +*************** +*** 5372,5377 **** +--- 5372,5378 ---- + #ifdef FEAT_CINDENT + check_string_option(&buf->b_p_cink); + check_string_option(&buf->b_p_cino); ++ parse_cino(buf); + #endif + #ifdef FEAT_AUTOCMD + check_string_option(&buf->b_p_ft); +*************** +*** 6990,6995 **** +--- 6991,7005 ---- + } + #endif + ++ #ifdef FEAT_CINDENT ++ /* 'cinoptions' */ ++ else if (gvarp == &p_cino) ++ { ++ /* TODO: recognize errors */ ++ parse_cino(curbuf); ++ } ++ #endif ++ + /* Options that are a list of flags. */ + else + { +*************** +*** 8338,8351 **** + curwin->w_p_fdc = 12; + } + } + + /* 'shiftwidth' or 'tabstop' */ + else if (pp == &curbuf->b_p_sw || pp == &curbuf->b_p_ts) + { + if (foldmethodIsIndent(curwin)) + foldUpdateAll(curwin); + } +! #endif /* FEAT_FOLDING */ + + #ifdef FEAT_MBYTE + /* 'maxcombine' */ +--- 8348,8371 ---- + curwin->w_p_fdc = 12; + } + } ++ #endif /* FEAT_FOLDING */ + ++ #if defined(FEAT_FOLDING) || defined(FEAT_CINDENT) + /* 'shiftwidth' or 'tabstop' */ + else if (pp == &curbuf->b_p_sw || pp == &curbuf->b_p_ts) + { ++ # ifdef FEAT_FOLDING + if (foldmethodIsIndent(curwin)) + foldUpdateAll(curwin); ++ # endif ++ # ifdef FEAT_CINDENT ++ /* When 'shiftwidth' changes, or it's zero and 'tabstop' changes: ++ * parse 'cinoptions'. */ ++ if (pp == &curbuf->b_p_sw || curbuf->b_p_sw == 0) ++ parse_cino(curbuf); ++ # endif + } +! #endif + + #ifdef FEAT_MBYTE + /* 'maxcombine' */ +*************** +*** 11729,11737 **** + * 'tabstop' value when 'shiftwidth' is zero. + */ + long +! get_sw_value() + { +! return curbuf->b_p_sw ? curbuf->b_p_sw : curbuf->b_p_ts; + } + + /* +--- 11749,11758 ---- + * 'tabstop' value when 'shiftwidth' is zero. + */ + long +! get_sw_value(buf) +! buf_T *buf; + { +! return buf->b_p_sw ? buf->b_p_sw : buf->b_p_ts; + } + + /* +*************** +*** 11741,11747 **** + long + get_sts_value() + { +! return curbuf->b_p_sts < 0 ? get_sw_value() : curbuf->b_p_sts; + } + + /* +--- 11762,11768 ---- + long + get_sts_value() + { +! return curbuf->b_p_sts < 0 ? get_sw_value(curbuf) : curbuf->b_p_sts; + } + + /* +*** ../vim-7.4.068/src/version.c 2013-11-04 04:57:46.000000000 +0100 +--- src/version.c 2013-11-05 04:55:36.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 69, + /**/ + +-- +A special cleaning ordinance bans housewives from hiding dirt and dust under a +rug in a dwelling. + [real standing law in Pennsylvania, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.070 b/patches/source/vim/patches/7.4.070 new file mode 100644 index 00000000..749b7445 --- /dev/null +++ b/patches/source/vim/patches/7.4.070 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.070 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.070 (after 7.4.069) +Problem: Can't compile with tiny features. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/buffer.c + + +*** ../vim-7.4.069/src/buffer.c 2013-11-05 07:12:59.000000000 +0100 +--- src/buffer.c 2013-11-05 17:37:27.000000000 +0100 +*************** +*** 213,219 **** +--- 213,221 ---- + if (curbuf->b_flags & BF_NEVERLOADED) + { + (void)buf_init_chartab(curbuf, FALSE); ++ #ifdef FEAT_CINDENT + parse_cino(curbuf); ++ #endif + } + + /* +*** ../vim-7.4.069/src/version.c 2013-11-05 07:12:59.000000000 +0100 +--- src/version.c 2013-11-05 17:38:56.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 70, + /**/ + +-- +No man may purchase alcohol without written consent from his wife. + [real standing law in Pennsylvania, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.071 b/patches/source/vim/patches/7.4.071 new file mode 100644 index 00000000..71b2984e --- /dev/null +++ b/patches/source/vim/patches/7.4.071 @@ -0,0 +1,1302 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.071 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.071 (after 7.4.069) +Problem: Passing limits around too often. +Solution: Use limits from buffer. +Files: src/edit.c, src/misc1.c, src/proto/misc1.pro + + +*** ../vim-7.4.070/src/edit.c 2013-11-05 07:12:59.000000000 +0100 +--- src/edit.c 2013-11-06 03:19:10.000000000 +0100 +*************** +*** 7857,7864 **** + if (try_match && keytyped == ':') + { + p = ml_get_curline(); +! if (cin_iscase(p, FALSE) || cin_isscopedecl(p) +! || cin_islabel(30)) + return TRUE; + /* Need to get the line again after cin_islabel(). */ + p = ml_get_curline(); +--- 7857,7863 ---- + if (try_match && keytyped == ':') + { + p = ml_get_curline(); +! if (cin_iscase(p, FALSE) || cin_isscopedecl(p) || cin_islabel()) + return TRUE; + /* Need to get the line again after cin_islabel(). */ + p = ml_get_curline(); +*************** +*** 7868,7874 **** + { + p[curwin->w_cursor.col - 1] = ' '; + i = (cin_iscase(p, FALSE) || cin_isscopedecl(p) +! || cin_islabel(30)); + p = ml_get_curline(); + p[curwin->w_cursor.col - 1] = ':'; + if (i) +--- 7867,7873 ---- + { + p[curwin->w_cursor.col - 1] = ' '; + i = (cin_iscase(p, FALSE) || cin_isscopedecl(p) +! || cin_islabel()); + p = ml_get_curline(); + p[curwin->w_cursor.col - 1] = ':'; + if (i) +*** ../vim-7.4.070/src/misc1.c 2013-11-05 07:12:59.000000000 +0100 +--- src/misc1.c 2013-11-06 03:46:59.000000000 +0100 +*************** +*** 5191,5201 **** +--- 5191,5208 ---- + #if defined(FEAT_CINDENT) || defined(FEAT_SYN_HL) + + static char_u *skip_string __ARGS((char_u *p)); ++ static pos_T *ind_find_start_comment __ARGS((void)); + + /* + * Find the start of a comment, not knowing if we are in a comment right now. + * Search starts at w_cursor.lnum and goes backwards. + */ ++ static pos_T * ++ ind_find_start_comment() /* XXX */ ++ { ++ return find_start_comment(curbuf->b_ind_maxcomment); ++ } ++ + pos_T * + find_start_comment(ind_maxcomment) /* XXX */ + int ind_maxcomment; +*************** +*** 5313,5319 **** + static int cin_isdefault __ARGS((char_u *)); + static char_u *after_label __ARGS((char_u *l)); + static int get_indent_nolabel __ARGS((linenr_T lnum)); +! static int skip_label __ARGS((linenr_T, char_u **pp, int ind_maxcomment)); + static int cin_first_id_amount __ARGS((void)); + static int cin_get_equal_amount __ARGS((linenr_T lnum)); + static int cin_ispreproc __ARGS((char_u *)); +--- 5320,5326 ---- + static int cin_isdefault __ARGS((char_u *)); + static char_u *after_label __ARGS((char_u *l)); + static int get_indent_nolabel __ARGS((linenr_T lnum)); +! static int skip_label __ARGS((linenr_T, char_u **pp)); + static int cin_first_id_amount __ARGS((void)); + static int cin_get_equal_amount __ARGS((linenr_T lnum)); + static int cin_ispreproc __ARGS((char_u *)); +*************** +*** 5322,5345 **** + static int cin_islinecomment __ARGS((char_u *)); + static int cin_isterminated __ARGS((char_u *, int, int)); + static int cin_isinit __ARGS((void)); +! static int cin_isfuncdecl __ARGS((char_u **, linenr_T, linenr_T, int, int)); + static int cin_isif __ARGS((char_u *)); + static int cin_iselse __ARGS((char_u *)); + static int cin_isdo __ARGS((char_u *)); +! static int cin_iswhileofdo __ARGS((char_u *, linenr_T, int)); + static int cin_is_if_for_while_before_offset __ARGS((char_u *line, int *poffset)); +! static int cin_iswhileofdo_end __ARGS((int terminated, int ind_maxparen, int ind_maxcomment)); + static int cin_isbreak __ARGS((char_u *)); + static int cin_is_cpp_baseclass __ARGS((colnr_T *col)); +! static int get_baseclass_amount __ARGS((int col, int ind_maxparen, int ind_maxcomment, int ind_cpp_baseclass)); + static int cin_ends_in __ARGS((char_u *, char_u *, char_u *)); + static int cin_starts_with __ARGS((char_u *s, char *word)); + static int cin_skip2pos __ARGS((pos_T *trypos)); +! static pos_T *find_start_brace __ARGS((int)); +! static pos_T *find_match_paren __ARGS((int, int)); +! static int corr_ind_maxparen __ARGS((int ind_maxparen, pos_T *startpos)); + static int find_last_paren __ARGS((char_u *l, int start, int end)); +! static int find_match __ARGS((int lookfor, linenr_T ourscope, int ind_maxparen, int ind_maxcomment)); + static int cin_is_cpp_namespace __ARGS((char_u *)); + + /* +--- 5329,5352 ---- + static int cin_islinecomment __ARGS((char_u *)); + static int cin_isterminated __ARGS((char_u *, int, int)); + static int cin_isinit __ARGS((void)); +! static int cin_isfuncdecl __ARGS((char_u **, linenr_T, linenr_T)); + static int cin_isif __ARGS((char_u *)); + static int cin_iselse __ARGS((char_u *)); + static int cin_isdo __ARGS((char_u *)); +! static int cin_iswhileofdo __ARGS((char_u *, linenr_T)); + static int cin_is_if_for_while_before_offset __ARGS((char_u *line, int *poffset)); +! static int cin_iswhileofdo_end __ARGS((int terminated)); + static int cin_isbreak __ARGS((char_u *)); + static int cin_is_cpp_baseclass __ARGS((colnr_T *col)); +! static int get_baseclass_amount __ARGS((int col)); + static int cin_ends_in __ARGS((char_u *, char_u *, char_u *)); + static int cin_starts_with __ARGS((char_u *s, char *word)); + static int cin_skip2pos __ARGS((pos_T *trypos)); +! static pos_T *find_start_brace __ARGS((void)); +! static pos_T *find_match_paren __ARGS((int)); +! static int corr_ind_maxparen __ARGS((pos_T *startpos)); + static int find_last_paren __ARGS((char_u *l, int start, int end)); +! static int find_match __ARGS((int lookfor, linenr_T ourscope)); + static int cin_is_cpp_namespace __ARGS((char_u *)); + + /* +*************** +*** 5444,5451 **** + * Note: curwin->w_cursor must be where we are looking for the label. + */ + int +! cin_islabel(ind_maxcomment) /* XXX */ +! int ind_maxcomment; + { + char_u *s; + +--- 5451,5457 ---- + * Note: curwin->w_cursor must be where we are looking for the label. + */ + int +! cin_islabel() /* XXX */ + { + char_u *s; + +*************** +*** 5479,5485 **** + * If we're in a comment now, skip to the start of the comment. + */ + curwin->w_cursor.col = 0; +! if ((trypos = find_start_comment(ind_maxcomment)) != NULL) /* XXX */ + curwin->w_cursor = *trypos; + + line = ml_get_curline(); +--- 5485,5491 ---- + * If we're in a comment now, skip to the start of the comment. + */ + curwin->w_cursor.col = 0; +! if ((trypos = ind_find_start_comment()) != NULL) /* XXX */ + curwin->w_cursor = *trypos; + + line = ml_get_curline(); +*************** +*** 5725,5734 **** + * ^ + */ + static int +! skip_label(lnum, pp, ind_maxcomment) + linenr_T lnum; + char_u **pp; +- int ind_maxcomment; + { + char_u *l; + int amount; +--- 5731,5739 ---- + * ^ + */ + static int +! skip_label(lnum, pp) + linenr_T lnum; + char_u **pp; + { + char_u *l; + int amount; +*************** +*** 5738,5745 **** + curwin->w_cursor.lnum = lnum; + l = ml_get_curline(); + /* XXX */ +! if (cin_iscase(l, FALSE) || cin_isscopedecl(l) +! || cin_islabel(ind_maxcomment)) + { + amount = get_indent_nolabel(lnum); + l = after_label(ml_get_curline()); +--- 5743,5749 ---- + curwin->w_cursor.lnum = lnum; + l = ml_get_curline(); + /* XXX */ +! if (cin_iscase(l, FALSE) || cin_isscopedecl(l) || cin_islabel()) + { + amount = get_indent_nolabel(lnum); + l = after_label(ml_get_curline()); +*************** +*** 5983,5994 **** + * "min_lnum" is the line before which we will not be looking. + */ + static int +! cin_isfuncdecl(sp, first_lnum, min_lnum, ind_maxparen, ind_maxcomment) + char_u **sp; + linenr_T first_lnum; + linenr_T min_lnum; +- int ind_maxparen; +- int ind_maxcomment; + { + char_u *s; + linenr_T lnum = first_lnum; +--- 5987,5996 ---- + * "min_lnum" is the line before which we will not be looking. + */ + static int +! cin_isfuncdecl(sp, first_lnum, min_lnum) + char_u **sp; + linenr_T first_lnum; + linenr_T min_lnum; + { + char_u *s; + linenr_T lnum = first_lnum; +*************** +*** 6002,6008 **** + s = *sp; + + if (find_last_paren(s, '(', ')') +! && (trypos = find_match_paren(ind_maxparen, ind_maxcomment)) != NULL) + { + lnum = trypos->lnum; + if (lnum < min_lnum) +--- 6004,6010 ---- + s = *sp; + + if (find_last_paren(s, '(', ')') +! && (trypos = find_match_paren(curbuf->b_ind_maxparen)) != NULL) + { + lnum = trypos->lnum; + if (lnum < min_lnum) +*************** +*** 6110,6119 **** + * ')' and ';'. The condition may be spread over several lines. + */ + static int +! cin_iswhileofdo(p, lnum, ind_maxparen) /* XXX */ + char_u *p; + linenr_T lnum; +- int ind_maxparen; + { + pos_T cursor_save; + pos_T *trypos; +--- 6112,6120 ---- + * ')' and ';'. The condition may be spread over several lines. + */ + static int +! cin_iswhileofdo(p, lnum) /* XXX */ + char_u *p; + linenr_T lnum; + { + pos_T cursor_save; + pos_T *trypos; +*************** +*** 6133,6139 **** + ++p; + ++curwin->w_cursor.col; + } +! if ((trypos = findmatchlimit(NULL, 0, 0, ind_maxparen)) != NULL + && *cin_skipcomment(ml_get_pos(trypos) + 1) == ';') + retval = TRUE; + curwin->w_cursor = cursor_save; +--- 6134,6141 ---- + ++p; + ++curwin->w_cursor.col; + } +! if ((trypos = findmatchlimit(NULL, 0, 0, +! curbuf->b_ind_maxparen)) != NULL + && *cin_skipcomment(ml_get_pos(trypos) + 1) == ';') + retval = TRUE; + curwin->w_cursor = cursor_save; +*************** +*** 6196,6205 **** + * Adjust the cursor to the line with "while". + */ + static int +! cin_iswhileofdo_end(terminated, ind_maxparen, ind_maxcomment) + int terminated; +- int ind_maxparen; +- int ind_maxcomment; + { + char_u *line; + char_u *p; +--- 6198,6205 ---- + * Adjust the cursor to the line with "while". + */ + static int +! cin_iswhileofdo_end(terminated) + int terminated; + { + char_u *line; + char_u *p; +*************** +*** 6223,6229 **** + * before the matching '('. XXX */ + i = (int)(p - line); + curwin->w_cursor.col = i; +! trypos = find_match_paren(ind_maxparen, ind_maxcomment); + if (trypos != NULL) + { + s = cin_skipcomment(ml_get(trypos->lnum)); +--- 6223,6229 ---- + * before the matching '('. XXX */ + i = (int)(p - line); + curwin->w_cursor.col = i; +! trypos = find_match_paren(curbuf->b_ind_maxparen); + if (trypos != NULL) + { + s = cin_skipcomment(ml_get(trypos->lnum)); +*************** +*** 6415,6425 **** + } + + static int +! get_baseclass_amount(col, ind_maxparen, ind_maxcomment, ind_cpp_baseclass) + int col; +- int ind_maxparen; +- int ind_maxcomment; +- int ind_cpp_baseclass; + { + int amount; + colnr_T vcol; +--- 6415,6422 ---- + } + + static int +! get_baseclass_amount(col) + int col; + { + int amount; + colnr_T vcol; +*************** +*** 6429,6439 **** + { + amount = get_indent(); + if (find_last_paren(ml_get_curline(), '(', ')') +! && (trypos = find_match_paren(ind_maxparen, +! ind_maxcomment)) != NULL) + amount = get_indent_lnum(trypos->lnum); /* XXX */ + if (!cin_ends_in(ml_get_curline(), (char_u *)",", NULL)) +! amount += ind_cpp_baseclass; + } + else + { +--- 6426,6435 ---- + { + amount = get_indent(); + if (find_last_paren(ml_get_curline(), '(', ')') +! && (trypos = find_match_paren(curbuf->b_ind_maxparen)) != NULL) + amount = get_indent_lnum(trypos->lnum); /* XXX */ + if (!cin_ends_in(ml_get_curline(), (char_u *)",", NULL)) +! amount += curbuf->b_ind_cpp_baseclass; + } + else + { +*************** +*** 6441,6448 **** + getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL); + amount = (int)vcol; + } +! if (amount < ind_cpp_baseclass) +! amount = ind_cpp_baseclass; + return amount; + } + +--- 6437,6444 ---- + getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL); + amount = (int)vcol; + } +! if (amount < curbuf->b_ind_cpp_baseclass) +! amount = curbuf->b_ind_cpp_baseclass; + return amount; + } + +*************** +*** 6526,6533 **** + /* } */ + + static pos_T * +! find_start_brace(ind_maxcomment) /* XXX */ +! int ind_maxcomment; + { + pos_T cursor_save; + pos_T *trypos; +--- 6522,6528 ---- + /* } */ + + static pos_T * +! find_start_brace() /* XXX */ + { + pos_T cursor_save; + pos_T *trypos; +*************** +*** 6543,6549 **** + pos = NULL; + /* ignore the { if it's in a // or / * * / comment */ + if ((colnr_T)cin_skip2pos(trypos) == trypos->col +! && (pos = find_start_comment(ind_maxcomment)) == NULL) /* XXX */ + break; + if (pos != NULL) + curwin->w_cursor.lnum = pos->lnum; +--- 6538,6544 ---- + pos = NULL; + /* ignore the { if it's in a // or / * * / comment */ + if ((colnr_T)cin_skip2pos(trypos) == trypos->col +! && (pos = ind_find_start_comment()) == NULL) /* XXX */ + break; + if (pos != NULL) + curwin->w_cursor.lnum = pos->lnum; +*************** +*** 6557,6565 **** + * Return NULL if no match found. + */ + static pos_T * +! find_match_paren(ind_maxparen, ind_maxcomment) /* XXX */ + int ind_maxparen; +- int ind_maxcomment; + { + pos_T cursor_save; + pos_T *trypos; +--- 6552,6559 ---- + * Return NULL if no match found. + */ + static pos_T * +! find_match_paren(ind_maxparen) /* XXX */ + int ind_maxparen; + { + pos_T cursor_save; + pos_T *trypos; +*************** +*** 6576,6582 **** + pos_copy = *trypos; /* copy trypos, findmatch will change it */ + trypos = &pos_copy; + curwin->w_cursor = *trypos; +! if (find_start_comment(ind_maxcomment) != NULL) /* XXX */ + trypos = NULL; + } + } +--- 6570,6576 ---- + pos_copy = *trypos; /* copy trypos, findmatch will change it */ + trypos = &pos_copy; + curwin->w_cursor = *trypos; +! if (ind_find_start_comment() != NULL) /* XXX */ + trypos = NULL; + } + } +*************** +*** 6591,6605 **** + * looking a few lines further. + */ + static int +! corr_ind_maxparen(ind_maxparen, startpos) +! int ind_maxparen; + pos_T *startpos; + { + long n = (long)startpos->lnum - (long)curwin->w_cursor.lnum; + +! if (n > 0 && n < ind_maxparen / 2) +! return ind_maxparen - (int)n; +! return ind_maxparen; + } + + /* +--- 6585,6598 ---- + * looking a few lines further. + */ + static int +! corr_ind_maxparen(startpos) + pos_T *startpos; + { + long n = (long)startpos->lnum - (long)curwin->w_cursor.lnum; + +! if (n > 0 && n < curbuf->b_ind_maxparen / 2) +! return curbuf->b_ind_maxparen - (int)n; +! return curbuf->b_ind_maxparen; + } + + /* +*************** +*** 6937,6943 **** + + curwin->w_cursor.col = 0; + +! original_line_islabel = cin_islabel(curbuf->b_ind_maxcomment); /* XXX */ + + /* + * #defines and so on always go at the left when included in 'cinkeys'. +--- 6930,6936 ---- + + curwin->w_cursor.col = 0; + +! original_line_islabel = cin_islabel(); /* XXX */ + + /* + * #defines and so on always go at the left when included in 'cinkeys'. +*************** +*** 6973,6979 **** + * comment, try using the 'comments' option. + */ + else if (!cin_iscomment(theline) +! && (trypos = find_start_comment(curbuf->b_ind_maxcomment)) != NULL) + /* XXX */ + { + int lead_start_len = 2; +--- 6966,6972 ---- + * comment, try using the 'comments' option. + */ + else if (!cin_iscomment(theline) +! && (trypos = ind_find_start_comment()) != NULL) + /* XXX */ + { + int lead_start_len = 2; +*************** +*** 7126,7136 **** + /* + * Are we inside parentheses or braces? + */ /* XXX */ +! else if (((trypos = find_match_paren(curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) != NULL + && curbuf->b_ind_java == 0) +! || (tryposBrace = +! find_start_brace(curbuf->b_ind_maxcomment)) != NULL + || trypos != NULL) + { + if (trypos != NULL && tryposBrace != NULL) +--- 7119,7127 ---- + /* + * Are we inside parentheses or braces? + */ /* XXX */ +! else if (((trypos = find_match_paren(curbuf->b_ind_maxparen)) != NULL + && curbuf->b_ind_java == 0) +! || (tryposBrace = find_start_brace()) != NULL + || trypos != NULL) + { + if (trypos != NULL && tryposBrace != NULL) +*************** +*** 7170,7177 **** + curwin->w_cursor.lnum = lnum; + + /* Skip a comment. XXX */ +! if ((trypos = find_start_comment(curbuf->b_ind_maxcomment)) +! != NULL) + { + lnum = trypos->lnum + 1; + continue; +--- 7161,7167 ---- + curwin->w_cursor.lnum = lnum; + + /* Skip a comment. XXX */ +! if ((trypos = ind_find_start_comment()) != NULL) + { + lnum = trypos->lnum + 1; + continue; +*************** +*** 7179,7186 **** + + /* XXX */ + if ((trypos = find_match_paren( +! corr_ind_maxparen(curbuf->b_ind_maxparen, &cur_curpos), +! curbuf->b_ind_maxcomment)) != NULL + && trypos->lnum == our_paren_pos.lnum + && trypos->col == our_paren_pos.col) + { +--- 7169,7175 ---- + + /* XXX */ + if ((trypos = find_match_paren( +! corr_ind_maxparen(&cur_curpos))) != NULL + && trypos->lnum == our_paren_pos.lnum + && trypos->col == our_paren_pos.col) + { +*************** +*** 7223,7230 **** + curwin->w_cursor.lnum = outermost.lnum; + curwin->w_cursor.col = outermost.col; + +! trypos = find_match_paren(curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment); + } while (trypos && trypos->lnum == outermost.lnum); + + curwin->w_cursor = cursor_save; +--- 7212,7218 ---- + curwin->w_cursor.lnum = outermost.lnum; + curwin->w_cursor.col = outermost.col; + +! trypos = find_match_paren(curbuf->b_ind_maxparen); + } while (trypos && trypos->lnum == outermost.lnum); + + curwin->w_cursor = cursor_save; +*************** +*** 7235,7242 **** + cin_is_if_for_while_before_offset(line, &outermost.col); + } + +! amount = skip_label(our_paren_pos.lnum, &look, +! curbuf->b_ind_maxcomment); + look = skipwhite(look); + if (*look == '(') + { +--- 7223,7229 ---- + cin_is_if_for_while_before_offset(line, &outermost.col); + } + +! amount = skip_label(our_paren_pos.lnum, &look); + look = skipwhite(look); + if (*look == '(') + { +*************** +*** 7366,7373 **** + { + curwin->w_cursor.lnum = our_paren_pos.lnum; + curwin->w_cursor.col = col; +! if (find_match_paren(curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment) != NULL) + amount += curbuf->b_ind_unclosed2; + else + { +--- 7353,7359 ---- + { + curwin->w_cursor.lnum = our_paren_pos.lnum; + curwin->w_cursor.col = col; +! if (find_match_paren(curbuf->b_ind_maxparen) != NULL) + amount += curbuf->b_ind_unclosed2; + else + { +*************** +*** 7435,7442 **** + */ + lnum = ourscope; + if (find_last_paren(start, '(', ')') +! && (trypos = find_match_paren(curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) != NULL) + lnum = trypos->lnum; + + /* +--- 7421,7428 ---- + */ + lnum = ourscope; + if (find_last_paren(start, '(', ')') +! && (trypos = find_match_paren(curbuf->b_ind_maxparen)) +! != NULL) + lnum = trypos->lnum; + + /* +*************** +*** 7449,7455 **** + && cin_iscase(skipwhite(ml_get_curline()), FALSE))) + amount = get_indent(); + else +! amount = skip_label(lnum, &l, curbuf->b_ind_maxcomment); + + start_brace = BRACE_AT_END; + } +--- 7435,7441 ---- + && cin_iscase(skipwhite(ml_get_curline()), FALSE))) + amount = get_indent(); + else +! amount = skip_label(lnum, &l); + + start_brace = BRACE_AT_END; + } +*************** +*** 7478,7491 **** + lookfor = LOOKFOR_INITIAL; + if (cin_iselse(theline)) + lookfor = LOOKFOR_IF; +! else if (cin_iswhileofdo(theline, cur_curpos.lnum, +! curbuf->b_ind_maxparen)) /* XXX */ + lookfor = LOOKFOR_DO; + if (lookfor != LOOKFOR_INITIAL) + { + curwin->w_cursor.lnum = cur_curpos.lnum; +! if (find_match(lookfor, ourscope, curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment) == OK) + { + amount = get_indent(); /* XXX */ + goto theend; +--- 7464,7475 ---- + lookfor = LOOKFOR_INITIAL; + if (cin_iselse(theline)) + lookfor = LOOKFOR_IF; +! else if (cin_iswhileofdo(theline, cur_curpos.lnum)) /* XXX */ + lookfor = LOOKFOR_DO; + if (lookfor != LOOKFOR_INITIAL) + { + curwin->w_cursor.lnum = cur_curpos.lnum; +! if (find_match(lookfor, ourscope) == OK) + { + amount = get_indent(); /* XXX */ + goto theend; +*************** +*** 7611,7617 **** + * If we're in a comment now, skip to the start of the + * comment. + */ +! trypos = find_start_comment(curbuf->b_ind_maxcomment); + if (trypos != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; +--- 7595,7601 ---- + * If we're in a comment now, skip to the start of the + * comment. + */ +! trypos = ind_find_start_comment(); + if (trypos != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; +*************** +*** 7636,7644 **** + * (it's a variable declaration). + */ + if (start_brace != BRACE_IN_COL0 +! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum, +! 0, curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) + { + /* if the line is terminated with another ',' + * it is a continued variable initialization. +--- 7620,7626 ---- + * (it's a variable declaration). + */ + if (start_brace != BRACE_IN_COL0 +! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0)) + { + /* if the line is terminated with another ',' + * it is a continued variable initialization. +*************** +*** 7670,7681 **** + trypos = NULL; + if (find_last_paren(l, '(', ')')) + trypos = find_match_paren( +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment); + + if (trypos == NULL && find_last_paren(l, '{', '}')) +! trypos = find_start_brace( +! curbuf->b_ind_maxcomment); + + if (trypos != NULL) + { +--- 7652,7661 ---- + trypos = NULL; + if (find_last_paren(l, '(', ')')) + trypos = find_match_paren( +! curbuf->b_ind_maxparen); + + if (trypos == NULL && find_last_paren(l, '{', '}')) +! trypos = find_start_brace(); + + if (trypos != NULL) + { +*************** +*** 7733,7740 **** + + /* If we're in a comment now, skip to the start of + * the comment. */ +! trypos = find_start_comment( +! curbuf->b_ind_maxcomment); + if (trypos != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; +--- 7713,7719 ---- + + /* If we're in a comment now, skip to the start of + * the comment. */ +! trypos = ind_find_start_comment(); + if (trypos != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; +*************** +*** 7764,7771 **** + /* + * If we're in a comment now, skip to the start of the comment. + */ /* XXX */ +! if ((trypos = find_start_comment(curbuf->b_ind_maxcomment)) +! != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; + curwin->w_cursor.col = 0; +--- 7743,7749 ---- + /* + * If we're in a comment now, skip to the start of the comment. + */ /* XXX */ +! if ((trypos = ind_find_start_comment()) != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; + curwin->w_cursor.col = 0; +*************** +*** 7819,7826 **** + * Check that this case label is not for another + * switch() + */ /* XXX */ +! if ((trypos = find_start_brace( +! curbuf->b_ind_maxcomment)) == NULL + || trypos->lnum == ourscope) + { + amount = get_indent(); /* XXX */ +--- 7797,7803 ---- + * Check that this case label is not for another + * switch() + */ /* XXX */ +! if ((trypos = find_start_brace()) == NULL + || trypos->lnum == ourscope) + { + amount = get_indent(); /* XXX */ +*************** +*** 7894,7901 **** + */ + if (lookfor == LOOKFOR_CASE || lookfor == LOOKFOR_SCOPEDECL) + { +! if (find_last_paren(l, '{', '}') && (trypos = +! find_start_brace(curbuf->b_ind_maxcomment)) != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; + curwin->w_cursor.col = 0; +--- 7871,7878 ---- + */ + if (lookfor == LOOKFOR_CASE || lookfor == LOOKFOR_SCOPEDECL) + { +! if (find_last_paren(l, '{', '}') +! && (trypos = find_start_brace()) != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; + curwin->w_cursor.col = 0; +*************** +*** 7906,7912 **** + /* + * Ignore jump labels with nothing after them. + */ +! if (!curbuf->b_ind_js && cin_islabel(curbuf->b_ind_maxcomment)) + { + l = after_label(ml_get_curline()); + if (l == NULL || cin_nocode(l)) +--- 7883,7889 ---- + /* + * Ignore jump labels with nothing after them. + */ +! if (!curbuf->b_ind_js && cin_islabel()) + { + l = after_label(ml_get_curline()); + if (l == NULL || cin_nocode(l)) +*************** +*** 7952,7961 **** + } + else + /* XXX */ +! amount = get_baseclass_amount(col, +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment, +! curbuf->b_ind_cpp_baseclass); + break; + } + else if (lookfor == LOOKFOR_CPP_BASECLASS) +--- 7929,7935 ---- + } + else + /* XXX */ +! amount = get_baseclass_amount(col); + break; + } + else if (lookfor == LOOKFOR_CPP_BASECLASS) +*************** +*** 7997,8005 **** + * matching it will take us back to the start of the line. + */ + (void)find_last_paren(l, '(', ')'); +! trypos = find_match_paren( +! corr_ind_maxparen(curbuf->b_ind_maxparen, +! &cur_curpos), curbuf->b_ind_maxcomment); + + /* + * If we are looking for ',', we also look for matching +--- 7971,7977 ---- + * matching it will take us back to the start of the line. + */ + (void)find_last_paren(l, '(', ')'); +! trypos = find_match_paren(corr_ind_maxparen(&cur_curpos)); + + /* + * If we are looking for ',', we also look for matching +*************** +*** 8007,8013 **** + */ + if (trypos == NULL && terminated == ',' + && find_last_paren(l, '{', '}')) +! trypos = find_start_brace(curbuf->b_ind_maxcomment); + + if (trypos != NULL) + { +--- 7979,7985 ---- + */ + if (trypos == NULL && terminated == ',' + && find_last_paren(l, '{', '}')) +! trypos = find_start_brace(); + + if (trypos != NULL) + { +*************** +*** 8051,8058 **** + * ignoring any jump label. XXX + */ + if (!curbuf->b_ind_js) +! cur_amount = skip_label(curwin->w_cursor.lnum, +! &l, curbuf->b_ind_maxcomment); + else + cur_amount = get_indent(); + /* +--- 8023,8029 ---- + * ignoring any jump label. XXX + */ + if (!curbuf->b_ind_js) +! cur_amount = skip_label(curwin->w_cursor.lnum, &l); + else + cur_amount = get_indent(); + /* +*************** +*** 8162,8172 **** + curwin->w_cursor.col = + (colnr_T)(l - ml_get_curline()) + 1; + +! if ((trypos = find_start_brace( +! curbuf->b_ind_maxcomment)) == NULL +! || find_match(LOOKFOR_IF, trypos->lnum, +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment) == FAIL) + break; + } + } +--- 8133,8141 ---- + curwin->w_cursor.col = + (colnr_T)(l - ml_get_curline()) + 1; + +! if ((trypos = find_start_brace()) == NULL +! || find_match(LOOKFOR_IF, trypos->lnum) +! == FAIL) + break; + } + } +*************** +*** 8261,8268 **** + * If so: Ignore until the matching "do". + */ + /* XXX */ +! else if (cin_iswhileofdo_end(terminated, curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) + { + /* + * Found an unterminated line after a while ();, line up +--- 8230,8236 ---- + * If so: Ignore until the matching "do". + */ + /* XXX */ +! else if (cin_iswhileofdo_end(terminated)) + { + /* + * Found an unterminated line after a while ();, line up +*************** +*** 8380,8387 **** + l = ml_get_curline(); + if (find_last_paren(l, '(', ')') + && (trypos = find_match_paren( +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) != NULL) + { + /* + * Check if we are on a case label now. This is +--- 8348,8354 ---- + l = ml_get_curline(); + if (find_last_paren(l, '(', ')') + && (trypos = find_match_paren( +! curbuf->b_ind_maxparen)) != NULL) + { + /* + * Check if we are on a case label now. This is +*************** +*** 8415,8422 **** + * Get indent and pointer to text for current line, + * ignoring any jump label. + */ +! amount = skip_label(curwin->w_cursor.lnum, +! &l, curbuf->b_ind_maxcomment); + + if (theline[0] == '{') + amount += curbuf->b_ind_open_extra; +--- 8382,8388 ---- + * Get indent and pointer to text for current line, + * ignoring any jump label. + */ +! amount = skip_label(curwin->w_cursor.lnum, &l); + + if (theline[0] == '{') + amount += curbuf->b_ind_open_extra; +*************** +*** 8439,8449 **** + && cin_iselse(l) + && whilelevel == 0) + { +! if ((trypos = find_start_brace( +! curbuf->b_ind_maxcomment)) == NULL +! || find_match(LOOKFOR_IF, trypos->lnum, +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment) == FAIL) + break; + continue; + } +--- 8405,8413 ---- + && cin_iselse(l) + && whilelevel == 0) + { +! if ((trypos = find_start_brace()) == NULL +! || find_match(LOOKFOR_IF, trypos->lnum) +! == FAIL) + break; + continue; + } +*************** +*** 8453,8461 **** + * that block. + */ + l = ml_get_curline(); +! if (find_last_paren(l, '{', '}') +! && (trypos = find_start_brace( +! curbuf->b_ind_maxcomment)) != NULL) /* XXX */ + { + curwin->w_cursor = *trypos; + /* if not "else {" check for terminated again */ +--- 8417,8424 ---- + * that block. + */ + l = ml_get_curline(); +! if (find_last_paren(l, '{', '}') /* XXX */ +! && (trypos = find_start_brace()) != NULL) + { + curwin->w_cursor = *trypos; + /* if not "else {" check for terminated again */ +*************** +*** 8516,8524 **** + && !cin_ends_in(theline, (char_u *)":", NULL) + && !cin_ends_in(theline, (char_u *)",", NULL) + && cin_isfuncdecl(NULL, cur_curpos.lnum + 1, +! cur_curpos.lnum + 1, +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment) + && !cin_isterminated(theline, FALSE, TRUE)) + { + amount = curbuf->b_ind_func_type; +--- 8479,8485 ---- + && !cin_ends_in(theline, (char_u *)":", NULL) + && !cin_ends_in(theline, (char_u *)",", NULL) + && cin_isfuncdecl(NULL, cur_curpos.lnum + 1, +! cur_curpos.lnum + 1) + && !cin_isterminated(theline, FALSE, TRUE)) + { + amount = curbuf->b_ind_func_type; +*************** +*** 8540,8547 **** + /* + * If we're in a comment now, skip to the start of the comment. + */ /* XXX */ +! if ((trypos = find_start_comment( +! curbuf->b_ind_maxcomment)) != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; + curwin->w_cursor.col = 0; +--- 8501,8507 ---- + /* + * If we're in a comment now, skip to the start of the comment. + */ /* XXX */ +! if ((trypos = ind_find_start_comment()) != NULL) + { + curwin->w_cursor.lnum = trypos->lnum + 1; + curwin->w_cursor.col = 0; +*************** +*** 8561,8569 **** + if (n) + { + /* XXX */ +! amount = get_baseclass_amount(col, curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment, +! curbuf->b_ind_cpp_baseclass); + break; + } + +--- 8521,8527 ---- + if (n) + { + /* XXX */ +! amount = get_baseclass_amount(col); + break; + } + +*************** +*** 8595,8602 **** + /* take us back to opening paren */ + if (find_last_paren(l, '(', ')') + && (trypos = find_match_paren( +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) != NULL) + curwin->w_cursor = *trypos; + + /* For a line ending in ',' that is a continuation line go +--- 8553,8559 ---- + /* take us back to opening paren */ + if (find_last_paren(l, '(', ')') + && (trypos = find_match_paren( +! curbuf->b_ind_maxparen)) != NULL) + curwin->w_cursor = *trypos; + + /* For a line ending in ',' that is a continuation line go +*************** +*** 8627,8635 **** + * If the line looks like a function declaration, and we're + * not in a comment, put it the left margin. + */ +! if (cin_isfuncdecl(NULL, cur_curpos.lnum, 0, +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) /* XXX */ + break; + l = ml_get_curline(); + +--- 8584,8590 ---- + * If the line looks like a function declaration, and we're + * not in a comment, put it the left margin. + */ +! if (cin_isfuncdecl(NULL, cur_curpos.lnum, 0)) /* XXX */ + break; + l = ml_get_curline(); + +*************** +*** 8677,8685 **** + * line (and the ones that follow) needs to be indented as + * parameters. + */ +! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0, +! curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) + { + amount = curbuf->b_ind_param; + break; +--- 8632,8638 ---- + * line (and the ones that follow) needs to be indented as + * parameters. + */ +! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0)) + { + amount = curbuf->b_ind_param; + break; +*************** +*** 8710,8717 **** + */ + find_last_paren(l, '(', ')'); + +! if ((trypos = find_match_paren(curbuf->b_ind_maxparen, +! curbuf->b_ind_maxcomment)) != NULL) + curwin->w_cursor = *trypos; + amount = get_indent(); /* XXX */ + break; +--- 8663,8669 ---- + */ + find_last_paren(l, '(', ')'); + +! if ((trypos = find_match_paren(curbuf->b_ind_maxparen)) != NULL) + curwin->w_cursor = *trypos; + amount = get_indent(); /* XXX */ + break; +*************** +*** 8754,8764 **** + } + + static int +! find_match(lookfor, ourscope, ind_maxparen, ind_maxcomment) + int lookfor; + linenr_T ourscope; +- int ind_maxparen; +- int ind_maxcomment; + { + char_u *look; + pos_T *theirscope; +--- 8706,8714 ---- + } + + static int +! find_match(lookfor, ourscope) + int lookfor; + linenr_T ourscope; + { + char_u *look; + pos_T *theirscope; +*************** +*** 8788,8800 **** + if (cin_iselse(look) + || cin_isif(look) + || cin_isdo(look) /* XXX */ +! || cin_iswhileofdo(look, curwin->w_cursor.lnum, ind_maxparen)) + { + /* + * if we've gone outside the braces entirely, + * we must be out of scope... + */ +! theirscope = find_start_brace(ind_maxcomment); /* XXX */ + if (theirscope == NULL) + break; + +--- 8738,8750 ---- + if (cin_iselse(look) + || cin_isif(look) + || cin_isdo(look) /* XXX */ +! || cin_iswhileofdo(look, curwin->w_cursor.lnum)) + { + /* + * if we've gone outside the braces entirely, + * we must be out of scope... + */ +! theirscope = find_start_brace(); /* XXX */ + if (theirscope == NULL) + break; + +*************** +*** 8832,8838 **** + * if it was a "while" then we need to go back to + * another "do", so increment whilelevel. XXX + */ +! if (cin_iswhileofdo(look, curwin->w_cursor.lnum, ind_maxparen)) + { + ++whilelevel; + continue; +--- 8782,8788 ---- + * if it was a "while" then we need to go back to + * another "do", so increment whilelevel. XXX + */ +! if (cin_iswhileofdo(look, curwin->w_cursor.lnum)) + { + ++whilelevel; + continue; +*** ../vim-7.4.070/src/proto/misc1.pro 2013-11-05 07:12:59.000000000 +0100 +--- src/proto/misc1.pro 2013-11-06 03:19:45.000000000 +0100 +*************** +*** 81,87 **** + char_u *FullName_save __ARGS((char_u *fname, int force)); + pos_T *find_start_comment __ARGS((int ind_maxcomment)); + void do_c_expr_indent __ARGS((void)); +! int cin_islabel __ARGS((int ind_maxcomment)); + int cin_iscase __ARGS((char_u *s, int strict)); + int cin_isscopedecl __ARGS((char_u *s)); + void parse_cino __ARGS((buf_T *buf)); +--- 81,87 ---- + char_u *FullName_save __ARGS((char_u *fname, int force)); + pos_T *find_start_comment __ARGS((int ind_maxcomment)); + void do_c_expr_indent __ARGS((void)); +! int cin_islabel __ARGS((void)); + int cin_iscase __ARGS((char_u *s, int strict)); + int cin_isscopedecl __ARGS((char_u *s)); + void parse_cino __ARGS((buf_T *buf)); +*** ../vim-7.4.070/src/version.c 2013-11-05 17:40:47.000000000 +0100 +--- src/version.c 2013-11-06 03:43:44.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 71, + /**/ + +-- +A law to reduce crime states: "It is mandatory for a motorist with criminal +intentions to stop at the city limits and telephone the chief of police as he +is entering the town. + [real standing law in Washington, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.072 b/patches/source/vim/patches/7.4.072 new file mode 100644 index 00000000..e96888e7 --- /dev/null +++ b/patches/source/vim/patches/7.4.072 @@ -0,0 +1,61 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.072 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.072 +Problem: Crash when using Insert mode completion. +Solution: Avoid going past the end of pum_array. (idea by Fransisco Lopes) +Files: src/popupmnu.c + + +*** ../vim-7.4.071/src/popupmnu.c 2011-08-17 18:04:28.000000000 +0200 +--- src/popupmnu.c 2013-11-02 04:01:06.000000000 +0100 +*************** +*** 282,287 **** +--- 282,291 ---- + int round; + int n; + ++ /* Never display more than we have */ ++ if (pum_first > pum_size - pum_height) ++ pum_first = pum_size - pum_height; ++ + if (pum_scrollbar) + { + thumb_heigth = pum_height * pum_height / pum_size; +*************** +*** 672,681 **** + #endif + } + +- /* Never display more than we have */ +- if (pum_first > pum_size - pum_height) +- pum_first = pum_size - pum_height; +- + if (!resized) + pum_redraw(); + +--- 676,681 ---- +*** ../vim-7.4.071/src/version.c 2013-11-06 04:01:31.000000000 +0100 +--- src/version.c 2013-11-06 04:03:18.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 72, + /**/ + +-- +No children may attend school with their breath smelling of "wild onions." + [real standing law in West Virginia, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.073 b/patches/source/vim/patches/7.4.073 new file mode 100644 index 00000000..7d9cedcf --- /dev/null +++ b/patches/source/vim/patches/7.4.073 @@ -0,0 +1,404 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.073 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.073 +Problem: Setting undolevels for one buffer changes undo in another. +Solution: Make 'undolevels' a global-local option. (Christian Brabandt) +Files: runtime/doc/options.txt, src/buffer.c, src/option.c, src/option.h + src/structs.h, src/undo.c + + +*** ../vim-7.4.072/runtime/doc/options.txt 2013-08-10 13:24:57.000000000 +0200 +--- runtime/doc/options.txt 2013-11-06 04:18:43.000000000 +0100 +*************** +*** 7594,7600 **** + *'undolevels'* *'ul'* + 'undolevels' 'ul' number (default 100, 1000 for Unix, VMS, + Win32 and OS/2) +! global + {not in Vi} + Maximum number of changes that can be undone. Since undo information + is kept in memory, higher numbers will cause more memory to be used +--- 7594,7600 ---- + *'undolevels'* *'ul'* + 'undolevels' 'ul' number (default 100, 1000 for Unix, VMS, + Win32 and OS/2) +! global or local to buffer |global-local| + {not in Vi} + Maximum number of changes that can be undone. Since undo information + is kept in memory, higher numbers will cause more memory to be used +*************** +*** 7605,7612 **** + < But you can also get Vi compatibility by including the 'u' flag in + 'cpoptions', and still be able to use CTRL-R to repeat undo. + Also see |undo-two-ways|. +! Set to a negative number for no undo at all: > +! set ul=-1 + < This helps when you run out of memory for a single change. + Also see |clear-undo|. + +--- 7605,7613 ---- + < But you can also get Vi compatibility by including the 'u' flag in + 'cpoptions', and still be able to use CTRL-R to repeat undo. + Also see |undo-two-ways|. +! Set to -1 for no undo at all. You might want to do this only for the +! current buffer: > +! setlocal ul=-1 + < This helps when you run out of memory for a single change. + Also see |clear-undo|. + +*** ../vim-7.4.072/src/buffer.c 2013-11-05 17:40:47.000000000 +0100 +--- src/buffer.c 2013-11-06 04:25:27.000000000 +0100 +*************** +*** 1949,1954 **** +--- 1949,1955 ---- + clear_string_option(&buf->b_p_qe); + #endif + buf->b_p_ar = -1; ++ buf->b_p_ul = NO_LOCAL_UNDOLEVEL; + } + + /* +*** ../vim-7.4.072/src/option.c 2013-11-05 07:12:59.000000000 +0100 +--- src/option.c 2013-11-06 04:34:23.000000000 +0100 +*************** +*** 234,239 **** +--- 234,240 ---- + #ifdef FEAT_STL_OPT + # define PV_STL OPT_BOTH(OPT_WIN(WV_STL)) + #endif ++ #define PV_UL OPT_BOTH(OPT_BUF(BV_UL)) + #ifdef FEAT_WINDOWS + # define PV_WFH OPT_WIN(WV_WFH) + #endif +*************** +*** 2683,2689 **** + #endif + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, + {"undolevels", "ul", P_NUM|P_VI_DEF, +! (char_u *)&p_ul, PV_NONE, + { + #if defined(UNIX) || defined(WIN3264) || defined(OS2) || defined(VMS) + (char_u *)1000L, +--- 2684,2690 ---- + #endif + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, + {"undolevels", "ul", P_NUM|P_VI_DEF, +! (char_u *)&p_ul, PV_UL, + { + #if defined(UNIX) || defined(WIN3264) || defined(OS2) || defined(VMS) + (char_u *)1000L, +*************** +*** 3313,3318 **** +--- 3314,3320 ---- + + curbuf->b_p_initialized = TRUE; + curbuf->b_p_ar = -1; /* no local 'autoread' value */ ++ curbuf->b_p_ul = NO_LOCAL_UNDOLEVEL; + check_buf_options(curbuf); + check_win_options(curwin); + check_options(); +*************** +*** 4512,4519 **** + ((flags & P_VI_DEF) || cp_val) + ? VI_DEFAULT : VIM_DEFAULT]; + else if (nextchar == '<') +! value = *(long *)get_varp_scope(&(options[opt_idx]), +! OPT_GLOBAL); + else if (((long *)varp == &p_wc + || (long *)varp == &p_wcm) + && (*arg == '<' +--- 4514,4529 ---- + ((flags & P_VI_DEF) || cp_val) + ? VI_DEFAULT : VIM_DEFAULT]; + else if (nextchar == '<') +! { +! /* For 'undolevels' NO_LOCAL_UNDOLEVEL means to +! * use the global value. */ +! if ((long *)varp == &curbuf->b_p_ul +! && opt_flags == OPT_LOCAL) +! value = NO_LOCAL_UNDOLEVEL; +! else +! value = *(long *)get_varp_scope( +! &(options[opt_idx]), OPT_GLOBAL); +! } + else if (((long *)varp == &p_wc + || (long *)varp == &p_wcm) + && (*arg == '<' +*************** +*** 8487,8492 **** +--- 8497,8509 ---- + u_sync(TRUE); + p_ul = value; + } ++ else if (pp == &curbuf->b_p_ul) ++ { ++ /* use the old value, otherwise u_sync() may not work properly */ ++ curbuf->b_p_ul = old_value; ++ u_sync(TRUE); ++ curbuf->b_p_ul = value; ++ } + + #ifdef FEAT_LINEBREAK + /* 'numberwidth' must be positive */ +*************** +*** 9720,9726 **** + /* + * Unset local option value, similar to ":set opt<". + */ +- + void + unset_global_local_option(name, from) + char_u *name; +--- 9737,9742 ---- +*************** +*** 9793,9798 **** +--- 9809,9817 ---- + clear_string_option(&((win_T *)from)->w_p_stl); + break; + #endif ++ case PV_UL: ++ buf->b_p_ul = NO_LOCAL_UNDOLEVEL; ++ break; + } + } + +*************** +*** 9841,9846 **** +--- 9860,9866 ---- + #ifdef FEAT_STL_OPT + case PV_STL: return (char_u *)&(curwin->w_p_stl); + #endif ++ case PV_UL: return (char_u *)&(curbuf->b_p_ul); + } + return NULL; /* "cannot happen" */ + } +*************** +*** 9905,9910 **** +--- 9925,9932 ---- + case PV_STL: return *curwin->w_p_stl != NUL + ? (char_u *)&(curwin->w_p_stl) : p->var; + #endif ++ case PV_UL: return curbuf->b_p_ul != NO_LOCAL_UNDOLEVEL ++ ? (char_u *)&(curbuf->b_p_ul) : p->var; + + #ifdef FEAT_ARABIC + case PV_ARAB: return (char_u *)&(curwin->w_p_arab); +*************** +*** 10445,10450 **** +--- 10467,10473 ---- + /* options that are normally global but also have a local value + * are not copied, start using the global value */ + buf->b_p_ar = -1; ++ buf->b_p_ul = NO_LOCAL_UNDOLEVEL; + #ifdef FEAT_QUICKFIX + buf->b_p_gp = empty_option; + buf->b_p_mp = empty_option; +*** ../vim-7.4.072/src/option.h 2013-06-26 18:41:39.000000000 +0200 +--- src/option.h 2013-11-06 04:17:40.000000000 +0100 +*************** +*** 1031,1036 **** +--- 1031,1037 ---- + , BV_TW + , BV_TX + , BV_UDF ++ , BV_UL + , BV_WM + , BV_COUNT /* must be the last one */ + }; +*************** +*** 1109,1111 **** +--- 1110,1115 ---- + , WV_WRAP + , WV_COUNT /* must be the last one */ + }; ++ ++ /* Value for b_p_ul indicating the global value must be used. */ ++ #define NO_LOCAL_UNDOLEVEL -123456 +*** ../vim-7.4.072/src/structs.h 2013-11-05 07:12:59.000000000 +0100 +--- src/structs.h 2013-11-06 04:26:17.000000000 +0100 +*************** +*** 1627,1632 **** +--- 1627,1633 ---- + char_u *b_p_dict; /* 'dictionary' local value */ + char_u *b_p_tsr; /* 'thesaurus' local value */ + #endif ++ long b_p_ul; /* 'undolevels' local value */ + #ifdef FEAT_PERSISTENT_UNDO + int b_p_udf; /* 'undofile' */ + #endif +*** ../vim-7.4.072/src/undo.c 2013-09-08 15:40:45.000000000 +0200 +--- src/undo.c 2013-11-06 04:33:12.000000000 +0100 +*************** +*** 83,88 **** +--- 83,89 ---- + + #include "vim.h" + ++ static long get_undolevel __ARGS((void)); + static void u_unch_branch __ARGS((u_header_T *uhp)); + static u_entry_T *u_get_headentry __ARGS((void)); + static void u_getbot __ARGS((void)); +*************** +*** 336,341 **** +--- 337,353 ---- + } + + /* ++ * Get the undolevle value for the current buffer. ++ */ ++ static long ++ get_undolevel() ++ { ++ if (curbuf->b_p_ul == NO_LOCAL_UNDOLEVEL) ++ return p_ul; ++ return curbuf->b_p_ul; ++ } ++ ++ /* + * Common code for various ways to save text before a change. + * "top" is the line above the first changed line. + * "bot" is the line below the last changed line. +*************** +*** 419,425 **** + curbuf->b_new_change = TRUE; + #endif + +! if (p_ul >= 0) + { + /* + * Make a new header entry. Do this first so that we don't mess +--- 431,437 ---- + curbuf->b_new_change = TRUE; + #endif + +! if (get_undolevel() >= 0) + { + /* + * Make a new header entry. Do this first so that we don't mess +*************** +*** 449,455 **** + /* + * free headers to keep the size right + */ +! while (curbuf->b_u_numhead > p_ul && curbuf->b_u_oldhead != NULL) + { + u_header_T *uhfree = curbuf->b_u_oldhead; + +--- 461,468 ---- + /* + * free headers to keep the size right + */ +! while (curbuf->b_u_numhead > get_undolevel() +! && curbuf->b_u_oldhead != NULL) + { + u_header_T *uhfree = curbuf->b_u_oldhead; + +*************** +*** 530,536 **** + } + else + { +! if (p_ul < 0) /* no undo at all */ + return OK; + + /* +--- 543,549 ---- + } + else + { +! if (get_undolevel() < 0) /* no undo at all */ + return OK; + + /* +*************** +*** 1972,1978 **** + { + if (curbuf->b_u_curhead == NULL) /* first undo */ + curbuf->b_u_curhead = curbuf->b_u_newhead; +! else if (p_ul > 0) /* multi level undo */ + /* get next undo */ + curbuf->b_u_curhead = curbuf->b_u_curhead->uh_next.ptr; + /* nothing to undo */ +--- 1985,1991 ---- + { + if (curbuf->b_u_curhead == NULL) /* first undo */ + curbuf->b_u_curhead = curbuf->b_u_newhead; +! else if (get_undolevel() > 0) /* multi level undo */ + /* get next undo */ + curbuf->b_u_curhead = curbuf->b_u_curhead->uh_next.ptr; + /* nothing to undo */ +*************** +*** 1993,1999 **** + } + else + { +! if (curbuf->b_u_curhead == NULL || p_ul <= 0) + { + beep_flush(); /* nothing to redo */ + if (count == startcount - 1) +--- 2006,2012 ---- + } + else + { +! if (curbuf->b_u_curhead == NULL || get_undolevel() <= 0) + { + beep_flush(); /* nothing to redo */ + if (count == startcount - 1) +*************** +*** 2751,2757 **** + if (im_is_preediting()) + return; /* XIM is busy, don't break an undo sequence */ + #endif +! if (p_ul < 0) + curbuf->b_u_synced = TRUE; /* no entries, nothing to do */ + else + { +--- 2764,2770 ---- + if (im_is_preediting()) + return; /* XIM is busy, don't break an undo sequence */ + #endif +! if (get_undolevel() < 0) + curbuf->b_u_synced = TRUE; /* no entries, nothing to do */ + else + { +*************** +*** 2911,2917 **** + } + if (!curbuf->b_u_synced) + return; /* already unsynced */ +! if (p_ul < 0) + return; /* no entries, nothing to do */ + else + { +--- 2924,2930 ---- + } + if (!curbuf->b_u_synced) + return; /* already unsynced */ +! if (get_undolevel() < 0) + return; /* no entries, nothing to do */ + else + { +*** ../vim-7.4.072/src/version.c 2013-11-06 04:04:29.000000000 +0100 +--- src/version.c 2013-11-06 05:21:43.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 73, + /**/ + +-- +Living on Earth includes an annual free trip around the Sun. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.074 b/patches/source/vim/patches/7.4.074 new file mode 100644 index 00000000..70045c08 --- /dev/null +++ b/patches/source/vim/patches/7.4.074 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.074 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.074 +Problem: When undo'ing all changes and creating a new change the undo + structure is incorrect. (Christian Brabandt) +Solution: When deleting the branch starting at the old header, delete the + whole branch, not just the first entry. +Files: src/undo.c + + +*** ../vim-7.4.073/src/undo.c 2013-11-06 05:26:08.000000000 +0100 +--- src/undo.c 2013-11-07 03:01:42.000000000 +0100 +*************** +*** 3121,3127 **** + * all the pointers. */ + if (uhp == buf->b_u_oldhead) + { +! u_freeheader(buf, uhp, uhpp); + return; + } + +--- 3121,3128 ---- + * all the pointers. */ + if (uhp == buf->b_u_oldhead) + { +! while (buf->b_u_oldhead != NULL) +! u_freeheader(buf, buf->b_u_oldhead, uhpp); + return; + } + +*** ../vim-7.4.073/src/version.c 2013-11-06 05:26:08.000000000 +0100 +--- src/version.c 2013-11-07 03:03:02.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 74, + /**/ + +-- +LETTERS TO THE EDITOR (The Times of London) + +Dear Sir, + +I am firmly opposed to the spread of microchips either to the home or +to the office. We have more than enough of them foisted upon us in +public places. They are a disgusting Americanism, and can only result +in the farmers being forced to grow smaller potatoes, which in turn +will cause massive unemployment in the already severely depressed +agricultural industry. + +Yours faithfully, + Capt. Quinton D'Arcy, J. P. + Sevenoaks + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.075 b/patches/source/vim/patches/7.4.075 new file mode 100644 index 00000000..f7ba21e1 --- /dev/null +++ b/patches/source/vim/patches/7.4.075 @@ -0,0 +1,290 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.075 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.075 +Problem: Locally setting 'undolevels' is not tested. +Solution: Add a test. (Christian Brabandt) +Files: src/testdir/test100.in, src/testdir/test100.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, src/Makefile + + +*** ../vim-7.4.074/src/testdir/test100.in 2013-11-07 03:24:56.000000000 +0100 +--- src/testdir/test100.in 2013-11-07 03:20:32.000000000 +0100 +*************** +*** 0 **** +--- 1,42 ---- ++ Tests for 'undolevel' setting being global-local ++ ++ STARTTEST ++ :so small.vim ++ :set nocompatible viminfo+=nviminfo ul=5 ++ :fu! FillBuffer() ++ :for i in range(1,13) ++ :put=i ++ :exe "setg ul=" . &g:ul ++ :endfor ++ :endfu ++ :fu! UndoLevel() ++ :redir @a | setglobal undolevels? | echon ' global' | setlocal undolevels? | echon ' local' |redir end ++ :$put a ++ :endfu ++ :new one ++ :0put ='ONE: expecting global undolevels: 5, local undolevels: -123456 (default)' ++ :call FillBuffer() ++ :call feedkeys(":earlier 10\n", 't') ++ :call UndoLevel() ++ :%w! test.out ++ :new two ++ :0put ='TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards)' ++ :setlocal ul=2 ++ :call FillBuffer() ++ :call feedkeys(":earlier 10\n", 't') ++ :call UndoLevel() ++ :setlocal ul=10 ++ :call UndoLevel() ++ :%w >> test.out ++ :wincmd p ++ :redir >>test.out | echo "global value shouldn't be changed and still be 5!" | echo 'ONE: expecting global undolevels: 5, local undolevels: -123456 (default)'|:setglobal undolevels? | echon ' global' | setlocal undolevels? | echon ' local' |echo "" |redir end ++ :new three ++ :setglobal ul=50 ++ :1put ='global value should be changed to 50' ++ :2put ='THREE: expecting global undolevels: 50, local undolevels: -123456 (default)' ++ :call UndoLevel() ++ :%w >> test.out ++ :"sleep 10 ++ :qa! ++ ENDTEST ++ +*** ../vim-7.4.074/src/testdir/test100.ok 2013-11-07 03:24:56.000000000 +0100 +--- src/testdir/test100.ok 2013-11-07 03:11:51.000000000 +0100 +*************** +*** 0 **** +--- 1,41 ---- ++ ONE: expecting global undolevels: 5, local undolevels: -123456 (default) ++ 1 ++ 2 ++ 3 ++ 4 ++ 5 ++ 6 ++ 7 ++ ++ ++ undolevels=5 global ++ undolevels=-123456 local ++ TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards) ++ 1 ++ 2 ++ 3 ++ 4 ++ 5 ++ 6 ++ 7 ++ 8 ++ 9 ++ 10 ++ ++ ++ undolevels=5 global ++ undolevels=2 local ++ ++ undolevels=5 global ++ undolevels=10 local ++ ++ global value shouldn't be changed and still be 5! ++ ONE: expecting global undolevels: 5, local undolevels: -123456 (default) ++ undolevels=5 global ++ undolevels=-123456 local ++ ++ global value should be changed to 50 ++ THREE: expecting global undolevels: 50, local undolevels: -123456 (default) ++ ++ undolevels=50 global ++ undolevels=-123456 local +*** ../vim-7.4.074/src/testdir/Make_amiga.mak 2013-09-19 17:00:14.000000000 +0200 +--- src/testdir/Make_amiga.mak 2013-11-07 03:07:57.000000000 +0100 +*************** +*** 34,40 **** + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out + + .SUFFIXES: .in .out + +--- 34,40 ---- + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out test100.out + + .SUFFIXES: .in .out + +*************** +*** 150,152 **** +--- 150,153 ---- + test97.out: test97.in + test98.out: test98.in + test99.out: test99.in ++ test100.out: test100.in +*** ../vim-7.4.074/src/testdir/Make_dos.mak 2013-09-19 17:00:14.000000000 +0200 +--- src/testdir/Make_dos.mak 2013-11-07 03:08:05.000000000 +0100 +*************** +*** 32,38 **** + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test98.out test99.out + + SCRIPTS32 = test50.out test70.out + +--- 32,39 ---- + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test98.out test99.out \ +! test100.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.074/src/testdir/Make_ming.mak 2013-09-19 17:00:14.000000000 +0200 +--- src/testdir/Make_ming.mak 2013-11-07 03:08:12.000000000 +0100 +*************** +*** 52,58 **** + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test98.out test99.out + + SCRIPTS32 = test50.out test70.out + +--- 52,59 ---- + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test98.out test99.out \ +! test100out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.074/src/testdir/Make_os2.mak 2013-09-19 17:00:14.000000000 +0200 +--- src/testdir/Make_os2.mak 2013-11-07 03:08:18.000000000 +0100 +*************** +*** 34,40 **** + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test98.out test99.out + + .SUFFIXES: .in .out + +--- 34,41 ---- + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ +! test94.out test95.out test96.out test98.out test99.out \ +! test100.out + + .SUFFIXES: .in .out + +*** ../vim-7.4.074/src/testdir/Make_vms.mms 2013-09-19 17:00:14.000000000 +0200 +--- src/testdir/Make_vms.mms 2013-11-07 03:08:24.000000000 +0100 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2013 Sep 19 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2013 Nov 07 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 78,84 **** + test77.out test78.out test79.out test80.out test81.out \ + test82.out test83.out test84.out test88.out test89.out \ + test90.out test91.out test92.out test93.out test94.out \ +! test95.out test96.out test97.out test98.out test99.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 78,85 ---- + test77.out test78.out test79.out test80.out test81.out \ + test82.out test83.out test84.out test88.out test89.out \ + test90.out test91.out test92.out test93.out test94.out \ +! test95.out test96.out test97.out test98.out test99.out \ +! test100.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.4.074/src/testdir/Makefile 2013-09-22 15:03:34.000000000 +0200 +--- src/testdir/Makefile 2013-11-07 03:08:31.000000000 +0100 +*************** +*** 30,36 **** + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out + + SCRIPTS_GUI = test16.out + +--- 30,36 ---- + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out test100.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.4.074/src/Makefile 2013-08-10 14:21:15.000000000 +0200 +--- src/Makefile 2013-11-07 03:10:40.000000000 +0100 +*************** +*** 1882,1888 **** + test60 test61 test62 test63 test64 test65 test66 test67 test68 test69 \ + test70 test71 test72 test73 test74 test75 test76 test77 test78 test79 \ + test80 test81 test82 test83 test84 test85 test86 test87 test88 test89 \ +! test90 test91 test92 test93 test94 test95 test96 test97 test98 test99: + cd testdir; rm $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET) + + testclean: +--- 1883,1890 ---- + test60 test61 test62 test63 test64 test65 test66 test67 test68 test69 \ + test70 test71 test72 test73 test74 test75 test76 test77 test78 test79 \ + test80 test81 test82 test83 test84 test85 test86 test87 test88 test89 \ +! test90 test91 test92 test93 test94 test95 test96 test97 test98 test99 \ +! test100 test101 test102 test103 test104 test105 test106 test107: + cd testdir; rm $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET) + + testclean: +*** ../vim-7.4.074/src/version.c 2013-11-07 03:04:06.000000000 +0100 +--- src/version.c 2013-11-07 03:10:10.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 75, + /**/ + +-- +Why is "abbreviation" such a long word? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.076 b/patches/source/vim/patches/7.4.076 new file mode 100644 index 00000000..fa9abbc2 --- /dev/null +++ b/patches/source/vim/patches/7.4.076 @@ -0,0 +1,66 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.076 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.076 +Problem: "cgn" does not wrap around the end of the file. (Dimitrov + Dimitrov) +Solution: Restore 'wrapscan' earlier. (Christian Brabandt) +Files: src/search.c + + +*** ../vim-7.4.075/src/search.c 2013-10-02 21:54:57.000000000 +0200 +--- src/search.c 2013-11-07 04:38:46.000000000 +0100 +*************** +*** 4592,4598 **** + ml_get(curwin->w_buffer->b_ml.ml_line_count)); + } + } +! + } + + start_pos = pos; +--- 4592,4598 ---- + ml_get(curwin->w_buffer->b_ml.ml_line_count)); + } + } +! p_ws = old_p_ws; + } + + start_pos = pos; +*************** +*** 4607,4613 **** + if (!VIsual_active) + VIsual = start_pos; + +- p_ws = old_p_ws; + curwin->w_cursor = pos; + VIsual_active = TRUE; + VIsual_mode = 'v'; +--- 4607,4612 ---- +*** ../vim-7.4.075/src/version.c 2013-11-07 03:25:51.000000000 +0100 +--- src/version.c 2013-11-07 04:44:44.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 76, + /**/ + +-- +INSPECTOR END OF FILM: Move along. There's nothing to see! Keep moving! + [Suddenly he notices the cameras.] +INSPECTOR END OF FILM: (to Camera) All right, put that away sonny. + [He walks over to it and puts his hand over the lens.] + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.077 b/patches/source/vim/patches/7.4.077 new file mode 100644 index 00000000..fd2d3d7c --- /dev/null +++ b/patches/source/vim/patches/7.4.077 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.077 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.077 +Problem: DOS installer creates shortcut without a path, resulting in the + current directory to be C:\Windows\system32. +Solution: Use environment variables. +Files: src/dosinst.c + + +*** ../vim-7.4.076/src/dosinst.c 2013-05-06 04:06:04.000000000 +0200 +--- src/dosinst.c 2013-11-06 18:18:47.000000000 +0100 +*************** +*** 1773,1781 **** + + /* + * We used to use "homedir" as the working directory, but that is a bad choice +! * on multi-user systems. Not specifying a directory appears to work best. + */ +! #define WORKDIR "" + + /* + * Create shortcut(s) in the Start Menu\Programs\Vim folder. +--- 1773,1783 ---- + + /* + * We used to use "homedir" as the working directory, but that is a bad choice +! * on multi-user systems. However, not specifying a directory results in the +! * current directory to be c:\Windows\system32 on Windows 7. Use environment +! * variables instead. + */ +! #define WORKDIR "%HOMEDRIVE%%HOMEPATH%" + + /* + * Create shortcut(s) in the Start Menu\Programs\Vim folder. +*** ../vim-7.4.076/src/version.c 2013-11-07 04:46:43.000000000 +0100 +--- src/version.c 2013-11-07 04:47:42.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 77, + /**/ + +-- +JOHN CLEESE PLAYED: SECOND SOLDIER WITH A KEEN INTEREST IN BIRDS, LARGE MAN + WITH DEAD BODY, BLACK KNIGHT, MR NEWT (A VILLAGE + BLACKSMITH INTERESTED IN BURNING WITCHES), A QUITE + EXTRAORDINARILY RUDE FRENCHMAN, TIM THE WIZARD, SIR + LAUNCELOT + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.078 b/patches/source/vim/patches/7.4.078 new file mode 100644 index 00000000..56b50763 --- /dev/null +++ b/patches/source/vim/patches/7.4.078 @@ -0,0 +1,114 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.078 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.078 +Problem: MSVC 2013 is not supported. +Solution: Recognize and support MSVC 2013. (Ed Brown) +Files: src/Make_mvc.mak + + +*** ../vim-7.4.077/src/Make_mvc.mak 2013-07-09 13:13:12.000000000 +0200 +--- src/Make_mvc.mak 2013-11-08 03:12:48.000000000 +0100 +*************** +*** 424,429 **** +--- 424,432 ---- + !if "$(_NMAKE_VER)" == "11.00.60610.1" + MSVCVER = 11.0 + !endif ++ !if "$(_NMAKE_VER)" == "12.00.21005.1" ++ MSVCVER = 12.0 ++ !endif + !endif + + # Abort building VIM if version of VC is unrecognised. +*************** +*** 438,444 **** + !endif + + # Convert processor ID to MVC-compatible number +! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0") && ("$(MSVCVER)" != "10.0") && ("$(MSVCVER)" != "11.0") + !if "$(CPUNR)" == "i386" + CPUARG = /G3 + !elseif "$(CPUNR)" == "i486" +--- 441,447 ---- + !endif + + # Convert processor ID to MVC-compatible number +! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0") && ("$(MSVCVER)" != "10.0") && ("$(MSVCVER)" != "11.0") && ("$(MSVCVER)" != "12.0") + !if "$(CPUNR)" == "i386" + CPUARG = /G3 + !elseif "$(CPUNR)" == "i486" +*************** +*** 472,478 **** + OPTFLAG = /Ox + !endif + +! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0") + # Use link time code generation if not worried about size + !if "$(OPTIMIZE)" != "SPACE" + OPTFLAG = $(OPTFLAG) /GL +--- 475,481 ---- + OPTFLAG = /Ox + !endif + +! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0") || ("$(MSVCVER)" == "12.0") + # Use link time code generation if not worried about size + !if "$(OPTIMIZE)" != "SPACE" + OPTFLAG = $(OPTFLAG) /GL +*************** +*** 485,491 **** + !endif + + # Static code analysis generally available starting with VS2012 +! !if ("$(ANALYZE)" == "yes") && ("$(MSVCVER)" == "11.0") + CFLAGS=$(CFLAGS) /analyze + !endif + +--- 488,494 ---- + !endif + + # Static code analysis generally available starting with VS2012 +! !if ("$(ANALYZE)" == "yes") && ("$(MSVCVER)" == "11.0") && ("$(MSVCVER)" == "12.0") + CFLAGS=$(CFLAGS) /analyze + !endif + +*************** +*** 943,949 **** + + # Report link time code generation progress if used. + !ifdef NODEBUG +! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0") + !if "$(OPTIMIZE)" != "SPACE" + LINKARGS1 = $(LINKARGS1) /LTCG:STATUS + !endif +--- 946,952 ---- + + # Report link time code generation progress if used. + !ifdef NODEBUG +! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0") || ("$(MSVCVER)" == "12.0") + !if "$(OPTIMIZE)" != "SPACE" + LINKARGS1 = $(LINKARGS1) /LTCG:STATUS + !endif +*** ../vim-7.4.077/src/version.c 2013-11-07 04:49:23.000000000 +0100 +--- src/version.c 2013-11-08 03:13:56.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 78, + /**/ + +-- +Every time I lose weight, it finds me again! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.079 b/patches/source/vim/patches/7.4.079 new file mode 100644 index 00000000..fbda97d8 --- /dev/null +++ b/patches/source/vim/patches/7.4.079 @@ -0,0 +1,470 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.079 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.079 +Problem: A script cannot detect whether 'hlsearch' highlighting is actually + displayed. +Solution: Add the "v:hlsearch" variable. (ZyX) +Files: src/runtime/doc/eval.txt, src/eval.c, src/ex_docmd.c, + src/option.c, src/screen.c, src/search.c, src/tag.c, src/vim.h, + src/testdir/test101.in, src/testdir/test101.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + + +diff: ../vim-7.4.078/src/runtime/doc/eval.txt: No such file or directory +diff: src/runtime/doc/eval.txt: No such file or directory +*** ../vim-7.4.078/src/eval.c 2013-11-05 07:12:59.000000000 +0100 +--- src/eval.c 2013-11-08 04:11:46.000000000 +0100 +*************** +*** 356,361 **** +--- 356,362 ---- + {VV_NAME("mouse_col", VAR_NUMBER), 0}, + {VV_NAME("operator", VAR_STRING), VV_RO}, + {VV_NAME("searchforward", VAR_NUMBER), 0}, ++ {VV_NAME("hlsearch", VAR_NUMBER), 0}, + {VV_NAME("oldfiles", VAR_LIST), 0}, + {VV_NAME("windowid", VAR_NUMBER), VV_RO}, + }; +*************** +*** 871,876 **** +--- 872,878 ---- + hash_add(&compat_hashtab, p->vv_di.di_key); + } + set_vim_var_nr(VV_SEARCHFORWARD, 1L); ++ set_vim_var_nr(VV_HLSEARCH, 1L); + set_reg_var(0); /* default for v:register is not 0 but '"' */ + + #ifdef EBCDIC +*************** +*** 20613,20618 **** +--- 20615,20627 ---- + v->di_tv.vval.v_number = get_tv_number(tv); + if (STRCMP(varname, "searchforward") == 0) + set_search_direction(v->di_tv.vval.v_number ? '/' : '?'); ++ #ifdef FEAT_SEARCH_EXTRA ++ else if (STRCMP(varname, "hlsearch") == 0) ++ { ++ no_hlsearch = !v->di_tv.vval.v_number; ++ redraw_all_later(SOME_VALID); ++ } ++ #endif + } + return; + } +*** ../vim-7.4.078/src/ex_docmd.c 2013-07-24 15:09:37.000000000 +0200 +--- src/ex_docmd.c 2013-11-08 04:17:01.000000000 +0100 +*************** +*** 11389,11395 **** + ex_nohlsearch(eap) + exarg_T *eap UNUSED; + { +! no_hlsearch = TRUE; + redraw_all_later(SOME_VALID); + } + +--- 11389,11395 ---- + ex_nohlsearch(eap) + exarg_T *eap UNUSED; + { +! SET_NO_HLSEARCH(TRUE); + redraw_all_later(SOME_VALID); + } + +*** ../vim-7.4.078/src/option.c 2013-11-06 05:26:08.000000000 +0100 +--- src/option.c 2013-11-08 04:17:32.000000000 +0100 +*************** +*** 7811,7817 **** + /* when 'hlsearch' is set or reset: reset no_hlsearch */ + else if ((int *)varp == &p_hls) + { +! no_hlsearch = FALSE; + } + #endif + +--- 7811,7817 ---- + /* when 'hlsearch' is set or reset: reset no_hlsearch */ + else if ((int *)varp == &p_hls) + { +! SET_NO_HLSEARCH(FALSE); + } + #endif + +*** ../vim-7.4.078/src/screen.c 2013-07-13 12:23:00.000000000 +0200 +--- src/screen.c 2013-11-08 04:17:48.000000000 +0100 +*************** +*** 7447,7453 **** + { + /* don't free regprog in the match list, it's a copy */ + vim_regfree(shl->rm.regprog); +! no_hlsearch = TRUE; + } + shl->rm.regprog = NULL; + shl->lnum = 0; +--- 7447,7453 ---- + { + /* don't free regprog in the match list, it's a copy */ + vim_regfree(shl->rm.regprog); +! SET_NO_HLSEARCH(TRUE); + } + shl->rm.regprog = NULL; + shl->lnum = 0; +*** ../vim-7.4.078/src/search.c 2013-11-07 04:46:43.000000000 +0100 +--- src/search.c 2013-11-08 04:18:57.000000000 +0100 +*************** +*** 289,295 **** + /* If 'hlsearch' set and search pat changed: need redraw. */ + if (p_hls) + redraw_all_later(SOME_VALID); +! no_hlsearch = FALSE; + #endif + } + } +--- 289,295 ---- + /* If 'hlsearch' set and search pat changed: need redraw. */ + if (p_hls) + redraw_all_later(SOME_VALID); +! SET_NO_HLSEARCH(FALSE); + #endif + } + } +*************** +*** 333,339 **** + spats[1] = saved_spats[1]; + last_idx = saved_last_idx; + # ifdef FEAT_SEARCH_EXTRA +! no_hlsearch = saved_no_hlsearch; + # endif + } + } +--- 333,339 ---- + spats[1] = saved_spats[1]; + last_idx = saved_last_idx; + # ifdef FEAT_SEARCH_EXTRA +! SET_NO_HLSEARCH(saved_no_hlsearch); + # endif + } + } +*************** +*** 1148,1154 **** + if (no_hlsearch && !(options & SEARCH_KEEP)) + { + redraw_all_later(SOME_VALID); +! no_hlsearch = FALSE; + } + #endif + +--- 1148,1154 ---- + if (no_hlsearch && !(options & SEARCH_KEEP)) + { + redraw_all_later(SOME_VALID); +! SET_NO_HLSEARCH(FALSE); + } + #endif + +*************** +*** 5561,5567 **** + spats[idx].off.off = off; + #ifdef FEAT_SEARCH_EXTRA + if (setlast) +! no_hlsearch = !hlsearch_on; + #endif + } + } +--- 5561,5569 ---- + spats[idx].off.off = off; + #ifdef FEAT_SEARCH_EXTRA + if (setlast) +! { +! SET_NO_HLSEARCH(!hlsearch_on); +! } + #endif + } + } +*** ../vim-7.4.078/src/tag.c 2013-09-05 12:06:26.000000000 +0200 +--- src/tag.c 2013-11-08 04:19:14.000000000 +0100 +*************** +*** 3330,3336 **** + #ifdef FEAT_SEARCH_EXTRA + /* restore no_hlsearch when keeping the old search pattern */ + if (search_options) +! no_hlsearch = save_no_hlsearch; + #endif + + /* Return OK if jumped to another file (at least we found the file!). */ +--- 3330,3338 ---- + #ifdef FEAT_SEARCH_EXTRA + /* restore no_hlsearch when keeping the old search pattern */ + if (search_options) +! { +! SET_NO_HLSEARCH(save_no_hlsearch); +! } + #endif + + /* Return OK if jumped to another file (at least we found the file!). */ +*** ../vim-7.4.078/src/vim.h 2013-08-02 16:02:27.000000000 +0200 +--- src/vim.h 2013-11-08 04:16:57.000000000 +0100 +*************** +*** 1864,1872 **** + #define VV_MOUSE_COL 51 + #define VV_OP 52 + #define VV_SEARCHFORWARD 53 +! #define VV_OLDFILES 54 +! #define VV_WINDOWID 55 +! #define VV_LEN 56 /* number of v: vars */ + + #ifdef FEAT_CLIPBOARD + +--- 1864,1873 ---- + #define VV_MOUSE_COL 51 + #define VV_OP 52 + #define VV_SEARCHFORWARD 53 +! #define VV_HLSEARCH 54 +! #define VV_OLDFILES 55 +! #define VV_WINDOWID 56 +! #define VV_LEN 57 /* number of v: vars */ + + #ifdef FEAT_CLIPBOARD + +*************** +*** 2246,2249 **** +--- 2247,2256 ---- + /* Character used as separated in autoload function/variable names. */ + #define AUTOLOAD_CHAR '#' + ++ #ifdef FEAT_EVAL ++ # define SET_NO_HLSEARCH(flag) no_hlsearch = (flag); set_vim_var_nr(VV_HLSEARCH, !no_hlsearch) ++ #else ++ # define SET_NO_HLSEARCH(flag) no_hlsearch = (flag) ++ #endif ++ + #endif /* VIM__H */ +*** ../vim-7.4.078/src/testdir/test101.in 2013-11-08 04:28:49.000000000 +0100 +--- src/testdir/test101.in 2013-11-08 04:11:46.000000000 +0100 +*************** +*** 0 **** +--- 1,45 ---- ++ Test for v:hlsearch vim: set ft=vim : ++ ++ STARTTEST ++ :" Last abc: Q ++ :so small.vim ++ :new ++ :call setline(1, repeat(['aaa'], 10)) ++ :set hlsearch nolazyredraw ++ :let r=[] ++ :command -nargs=0 -bar AddR :call add(r, [screenattr(1, 1), v:hlsearch]) ++ /aaa ++ :AddR ++ :nohlsearch ++ :AddR ++ :let v:hlsearch=1 ++ :AddR ++ :let v:hlsearch=0 ++ :AddR ++ :set hlsearch ++ :AddR ++ :let v:hlsearch=0 ++ :AddR ++ n:AddR ++ :let v:hlsearch=0 ++ :AddR ++ / ++ :AddR ++ :let r1=r[0][0] ++ :" I guess it is not guaranteed that screenattr outputs always the same character ++ :call map(r, 'v:val[1].":".(v:val[0]==r1?"highlighted":"not highlighted")') ++ :try ++ : let v:hlsearch=[] ++ :catch ++ : call add(r, matchstr(v:exception,'^Vim(let):E\d\+:')) ++ :endtry ++ :bwipeout! ++ :$put=r ++ :call garbagecollect(1) ++ :" ++ :/^start:/,$wq! test.out ++ :" vim: et ts=4 isk-=\: ++ :call getchar() ++ ENDTEST ++ ++ start: +*** ../vim-7.4.078/src/testdir/test101.ok 2013-11-08 04:28:49.000000000 +0100 +--- src/testdir/test101.ok 2013-11-08 04:11:46.000000000 +0100 +*************** +*** 0 **** +--- 1,11 ---- ++ start: ++ 1:highlighted ++ 0:not highlighted ++ 1:highlighted ++ 0:not highlighted ++ 1:highlighted ++ 0:not highlighted ++ 1:highlighted ++ 0:not highlighted ++ 1:highlighted ++ Vim(let):E706: +*** ../vim-7.4.078/src/testdir/Make_amiga.mak 2013-11-07 03:25:51.000000000 +0100 +--- src/testdir/Make_amiga.mak 2013-11-08 04:22:13.000000000 +0100 +*************** +*** 34,40 **** + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out test100.out + + .SUFFIXES: .in .out + +--- 34,40 ---- + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out test100.out test101.out + + .SUFFIXES: .in .out + +*************** +*** 151,153 **** +--- 151,154 ---- + test98.out: test98.in + test99.out: test99.in + test100.out: test100.in ++ test101.out: test101.in +*** ../vim-7.4.078/src/testdir/Make_dos.mak 2013-11-07 03:25:51.000000000 +0100 +--- src/testdir/Make_dos.mak 2013-11-08 04:22:17.000000000 +0100 +*************** +*** 33,39 **** + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out + + SCRIPTS32 = test50.out test70.out + +--- 33,39 ---- + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.078/src/testdir/Make_ming.mak 2013-11-07 03:25:51.000000000 +0100 +--- src/testdir/Make_ming.mak 2013-11-08 04:22:19.000000000 +0100 +*************** +*** 53,59 **** + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100out + + SCRIPTS32 = test50.out test70.out + +--- 53,59 ---- + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100out test101.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.4.078/src/testdir/Make_os2.mak 2013-11-07 03:25:51.000000000 +0100 +--- src/testdir/Make_os2.mak 2013-11-08 04:22:21.000000000 +0100 +*************** +*** 35,41 **** + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out + + .SUFFIXES: .in .out + +--- 35,41 ---- + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test98.out test99.out \ +! test100.out test101.out + + .SUFFIXES: .in .out + +*** ../vim-7.4.078/src/testdir/Make_vms.mms 2013-11-07 03:25:51.000000000 +0100 +--- src/testdir/Make_vms.mms 2013-11-08 04:22:23.000000000 +0100 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2013 Nov 07 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> + # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> + # +! # Last change: 2013 Nov 08 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 79,85 **** + test82.out test83.out test84.out test88.out test89.out \ + test90.out test91.out test92.out test93.out test94.out \ + test95.out test96.out test97.out test98.out test99.out \ +! test100.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 79,85 ---- + test82.out test83.out test84.out test88.out test89.out \ + test90.out test91.out test92.out test93.out test94.out \ + test95.out test96.out test97.out test98.out test99.out \ +! test100.out test101.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.4.078/src/testdir/Makefile 2013-11-07 03:25:51.000000000 +0100 +--- src/testdir/Makefile 2013-11-08 04:22:26.000000000 +0100 +*************** +*** 30,36 **** + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out test100.out + + SCRIPTS_GUI = test16.out + +--- 30,36 ---- + test84.out test85.out test86.out test87.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out test100.out test101.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.4.078/src/version.c 2013-11-08 03:15:39.000000000 +0100 +--- src/version.c 2013-11-08 04:11:08.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 79, + /**/ + +-- +Corn oil comes from corn and olive oil comes from olives, so where +does baby oil come from? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.080 b/patches/source/vim/patches/7.4.080 new file mode 100644 index 00000000..eeec1dec --- /dev/null +++ b/patches/source/vim/patches/7.4.080 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.080 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.080 (after 7.4.079) +Problem: Missing documentation for v:hlsearch. +Solution: Include the right file in the patch. +Files: runtime/doc/eval.txt + + +*** ../vim-7.4.079/runtime/doc/eval.txt 2013-11-02 23:29:17.000000000 +0100 +--- runtime/doc/eval.txt 2013-11-08 04:20:27.000000000 +0100 +*************** +*** 1454,1459 **** +--- 1455,1467 ---- + v:foldstart Used for 'foldtext': first line of closed fold. + Read-only in the |sandbox|. |fold-foldtext| + ++ *v:hlsearch* *hlsearch-variable* ++ v:hlsearch Variable that determines whether search highlighting is on. ++ Makes sense only if 'hlsearch' is enabled which requires ++ |+extra_search|. Setting this variable to zero acts the like ++ |:nohlsearch| command, setting it to one acts like > ++ let &hlsearch = &hlsearch ++ < + *v:insertmode* *insertmode-variable* + v:insertmode Used for the |InsertEnter| and |InsertChange| autocommand + events. Values: +*** ../vim-7.4.079/src/version.c 2013-11-08 04:30:06.000000000 +0100 +--- src/version.c 2013-11-09 01:42:56.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 80, + /**/ + +-- +The chat program is in public domain. This is not the GNU public license. +If it breaks then you get to keep both pieces. + -- Copyright notice for the chat program + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.081 b/patches/source/vim/patches/7.4.081 new file mode 100644 index 00000000..b2c61d9a --- /dev/null +++ b/patches/source/vim/patches/7.4.081 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.081 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.081 (after 7.4.078) +Problem: Wrong logic when ANALYZE is "yes". +Solution: Use or instead of and. (KF Leong) +Files: src/Make_mvc.mak + + +*** ../vim-7.4.080/src/Make_mvc.mak 2013-11-08 03:15:39.000000000 +0100 +--- src/Make_mvc.mak 2013-11-08 18:02:54.000000000 +0100 +*************** +*** 488,494 **** + !endif + + # Static code analysis generally available starting with VS2012 +! !if ("$(ANALYZE)" == "yes") && ("$(MSVCVER)" == "11.0") && ("$(MSVCVER)" == "12.0") + CFLAGS=$(CFLAGS) /analyze + !endif + +--- 488,494 ---- + !endif + + # Static code analysis generally available starting with VS2012 +! !if ("$(ANALYZE)" == "yes") && (("$(MSVCVER)" == "10.0") || ("$(MSVCVER)" == "11.0") || ("$(MSVCVER)" == "12.0")) + CFLAGS=$(CFLAGS) /analyze + !endif + +*** ../vim-7.4.080/src/version.c 2013-11-09 01:44:38.000000000 +0100 +--- src/version.c 2013-11-09 02:31:34.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 81, + /**/ + +-- +Wi n0t trei a h0liday in Sweden thi yer? + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.082 b/patches/source/vim/patches/7.4.082 new file mode 100644 index 00000000..03089d66 --- /dev/null +++ b/patches/source/vim/patches/7.4.082 @@ -0,0 +1,344 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.082 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.082 +Problem: Using "gf" in a changed buffer suggests adding "!", which is not + possible. (Tim Chase) +Solution: Pass a flag to check_changed() wether adding ! make sense. +Files: src/vim.h, src/ex_cmds2.c, src/proto/ex_cmds2.pro, src/globals.h, + src/ex_cmds.c, src/ex_docmd.c + + +*** ../vim-7.4.081/src/vim.h 2013-11-08 04:30:06.000000000 +0100 +--- src/vim.h 2013-11-09 03:00:00.000000000 +0100 +*************** +*** 1176,1181 **** +--- 1176,1190 ---- + #define RESIZE_BOTH 15 /* resize in both directions */ + + /* ++ * flags for check_changed() ++ */ ++ #define CCGD_AW 1 /* do autowrite if buffer was changed */ ++ #define CCGD_MULTWIN 2 /* check also when several wins for the buf */ ++ #define CCGD_FORCEIT 4 /* ! used */ ++ #define CCGD_ALLBUF 8 /* may write all buffers */ ++ #define CCGD_EXCMD 16 /* may suggest using ! */ ++ ++ /* + * "flags" values for option-setting functions. + * When OPT_GLOBAL and OPT_LOCAL are both missing, set both local and global + * values, get local value. +*** ../vim-7.4.081/src/ex_cmds2.c 2013-06-28 20:14:53.000000000 +0200 +--- src/ex_cmds2.c 2013-11-09 03:14:44.000000000 +0100 +*************** +*** 1436,1455 **** + } + + /* +! * return TRUE if buffer was changed and cannot be abandoned. + */ + int +! check_changed(buf, checkaw, mult_win, forceit, allbuf) + buf_T *buf; +! int checkaw; /* do autowrite if buffer was changed */ +! int mult_win; /* check also when several wins for the buf */ +! int forceit; +! int allbuf UNUSED; /* may write all buffers */ + { + if ( !forceit + && bufIsChanged(buf) +! && (mult_win || buf->b_nwindows <= 1) +! && (!checkaw || autowrite(buf, forceit) == FAIL)) + { + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + if ((p_confirm || cmdmod.confirm) && p_write) +--- 1436,1455 ---- + } + + /* +! * Return TRUE if buffer was changed and cannot be abandoned. +! * For flags use the CCGD_ values. + */ + int +! check_changed(buf, flags) + buf_T *buf; +! int flags; + { ++ int forceit = (flags & CCGD_FORCEIT); ++ + if ( !forceit + && bufIsChanged(buf) +! && ((flags & CCGD_MULTWIN) || buf->b_nwindows <= 1) +! && (!(flags & CCGD_AW) || autowrite(buf, forceit) == FAIL)) + { + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + if ((p_confirm || cmdmod.confirm) && p_write) +*************** +*** 1457,1463 **** + buf_T *buf2; + int count = 0; + +! if (allbuf) + for (buf2 = firstbuf; buf2 != NULL; buf2 = buf2->b_next) + if (bufIsChanged(buf2) + && (buf2->b_ffname != NULL +--- 1457,1463 ---- + buf_T *buf2; + int count = 0; + +! if (flags & CCGD_ALLBUF) + for (buf2 = firstbuf; buf2 != NULL; buf2 = buf2->b_next) + if (bufIsChanged(buf2) + && (buf2->b_ffname != NULL +*************** +*** 1480,1486 **** + return bufIsChanged(buf); + } + #endif +! EMSG(_(e_nowrtmsg)); + return TRUE; + } + return FALSE; +--- 1480,1489 ---- + return bufIsChanged(buf); + } + #endif +! if (flags & CCGD_EXCMD) +! EMSG(_(e_nowrtmsg)); +! else +! EMSG(_(e_nowrtmsg_nobang)); + return TRUE; + } + return FALSE; +*************** +*** 1690,1696 **** + { + /* Try auto-writing the buffer. If this fails but the buffer no + * longer exists it's not changed, that's OK. */ +! if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf)) + break; /* didn't save - still changes */ + } + } +--- 1693,1701 ---- + { + /* Try auto-writing the buffer. If this fails but the buffer no + * longer exists it's not changed, that's OK. */ +! if (check_changed(buf, (p_awa ? CCGD_AW : 0) +! | CCGD_MULTWIN +! | CCGD_ALLBUF) && buf_valid(buf)) + break; /* didn't save - still changes */ + } + } +*************** +*** 2274,2280 **** + vim_free(p); + } + if ((!P_HID(curbuf) || !other) +! && check_changed(curbuf, TRUE, !other, eap->forceit, FALSE)) + return; + } + +--- 2279,2288 ---- + vim_free(p); + } + if ((!P_HID(curbuf) || !other) +! && check_changed(curbuf, CCGD_AW +! | (other ? 0 : CCGD_MULTWIN) +! | (eap->forceit ? CCGD_FORCEIT : 0) +! | CCGD_EXCMD)) + return; + } + +*************** +*** 2315,2321 **** + */ + if ( P_HID(curbuf) + || eap->cmdidx == CMD_snext +! || !check_changed(curbuf, TRUE, FALSE, eap->forceit, FALSE)) + { + if (*eap->arg != NUL) /* redefine file list */ + { +--- 2323,2331 ---- + */ + if ( P_HID(curbuf) + || eap->cmdidx == CMD_snext +! || !check_changed(curbuf, CCGD_AW +! | (eap->forceit ? CCGD_FORCEIT : 0) +! | CCGD_EXCMD)) + { + if (*eap->arg != NUL) /* redefine file list */ + { +*************** +*** 2458,2464 **** + if (eap->cmdidx == CMD_windo + || eap->cmdidx == CMD_tabdo + || P_HID(curbuf) +! || !check_changed(curbuf, TRUE, FALSE, eap->forceit, FALSE)) + { + /* start at the first argument/window/buffer */ + i = 0; +--- 2468,2476 ---- + if (eap->cmdidx == CMD_windo + || eap->cmdidx == CMD_tabdo + || P_HID(curbuf) +! || !check_changed(curbuf, CCGD_AW +! | (eap->forceit ? CCGD_FORCEIT : 0) +! | CCGD_EXCMD)) + { + /* start at the first argument/window/buffer */ + i = 0; +*** ../vim-7.4.081/src/proto/ex_cmds2.pro 2013-08-10 13:37:10.000000000 +0200 +--- src/proto/ex_cmds2.pro 2013-11-09 03:18:02.000000000 +0100 +*************** +*** 35,41 **** + int prof_def_func __ARGS((void)); + int autowrite __ARGS((buf_T *buf, int forceit)); + void autowrite_all __ARGS((void)); +! int check_changed __ARGS((buf_T *buf, int checkaw, int mult_win, int forceit, int allbuf)); + void browse_save_fname __ARGS((buf_T *buf)); + void dialog_changed __ARGS((buf_T *buf, int checkall)); + int can_abandon __ARGS((buf_T *buf, int forceit)); +--- 35,41 ---- + int prof_def_func __ARGS((void)); + int autowrite __ARGS((buf_T *buf, int forceit)); + void autowrite_all __ARGS((void)); +! int check_changed __ARGS((buf_T *buf, int flags)); + void browse_save_fname __ARGS((buf_T *buf)); + void dialog_changed __ARGS((buf_T *buf, int checkall)); + int can_abandon __ARGS((buf_T *buf, int forceit)); +*** ../vim-7.4.081/src/globals.h 2013-07-04 19:53:44.000000000 +0200 +--- src/globals.h 2013-11-09 03:05:54.000000000 +0100 +*************** +*** 1490,1495 **** +--- 1490,1496 ---- + EXTERN char_u e_notopen[] INIT(= N_("E484: Can't open file %s")); + EXTERN char_u e_notread[] INIT(= N_("E485: Can't read file %s")); + EXTERN char_u e_nowrtmsg[] INIT(= N_("E37: No write since last change (add ! to override)")); ++ EXTERN char_u e_nowrtmsg_nobang[] INIT(= N_("E37: No write since last change")); + EXTERN char_u e_null[] INIT(= N_("E38: Null argument")); + #ifdef FEAT_DIGRAPHS + EXTERN char_u e_number_exp[] INIT(= N_("E39: Number expected")); +*** ../vim-7.4.081/src/ex_cmds.c 2013-10-02 18:43:00.000000000 +0200 +--- src/ex_cmds.c 2013-11-09 03:19:25.000000000 +0100 +*************** +*** 3253,3260 **** + if ( ((!other_file && !(flags & ECMD_OLDBUF)) + || (curbuf->b_nwindows == 1 + && !(flags & (ECMD_HIDE | ECMD_ADDBUF)))) +! && check_changed(curbuf, p_awa, !other_file, +! (flags & ECMD_FORCEIT), FALSE)) + { + if (fnum == 0 && other_file && ffname != NULL) + (void)setaltfname(ffname, sfname, newlnum < 0 ? 0 : newlnum); +--- 3253,3262 ---- + if ( ((!other_file && !(flags & ECMD_OLDBUF)) + || (curbuf->b_nwindows == 1 + && !(flags & (ECMD_HIDE | ECMD_ADDBUF)))) +! && check_changed(curbuf, (p_awa ? CCGD_AW : 0) +! | (other_file ? 0 : CCGD_MULTWIN) +! | ((flags & ECMD_FORCEIT) ? CCGD_FORCEIT : 0) +! | (eap == NULL ? 0 : CCGD_EXCMD))) + { + if (fnum == 0 && other_file && ffname != NULL) + (void)setaltfname(ffname, sfname, newlnum < 0 ? 0 : newlnum); +*************** +*** 7664,7670 **** + # ifdef FEAT_WINDOWS + ++emsg_off; + # endif +! split = check_changed(curbuf, TRUE, FALSE, FALSE, FALSE); + # ifdef FEAT_WINDOWS + --emsg_off; + # else +--- 7666,7672 ---- + # ifdef FEAT_WINDOWS + ++emsg_off; + # endif +! split = check_changed(curbuf, CCGD_AW | CCGD_EXCMD); + # ifdef FEAT_WINDOWS + --emsg_off; + # else +*** ../vim-7.4.081/src/ex_docmd.c 2013-11-08 04:30:06.000000000 +0100 +--- src/ex_docmd.c 2013-11-09 03:30:10.000000000 +0100 +*************** +*** 6565,6571 **** + if (check_more(FALSE, eap->forceit) == OK && only_one_window()) + exiting = TRUE; + if ((!P_HID(curbuf) +! && check_changed(curbuf, p_awa, FALSE, eap->forceit, FALSE)) + || check_more(TRUE, eap->forceit) == FAIL + || (only_one_window() && check_changed_any(eap->forceit))) + { +--- 6565,6573 ---- + if (check_more(FALSE, eap->forceit) == OK && only_one_window()) + exiting = TRUE; + if ((!P_HID(curbuf) +! && check_changed(curbuf, (p_awa ? CCGD_AW : 0) +! | (eap->forceit ? CCGD_FORCEIT : 0) +! | CCGD_EXCMD)) + || check_more(TRUE, eap->forceit) == FAIL + || (only_one_window() && check_changed_any(eap->forceit))) + { +*************** +*** 7099,7105 **** + if (!P_HID(curbuf) && !split) + { + ++emsg_off; +! split = check_changed(curbuf, TRUE, FALSE, FALSE, FALSE); + --emsg_off; + } + if (split) +--- 7101,7107 ---- + if (!P_HID(curbuf) && !split) + { + ++emsg_off; +! split = check_changed(curbuf, CCGD_AW); + --emsg_off; + } + if (split) +*************** +*** 7361,7367 **** + { + /* Set recoverymode right away to avoid the ATTENTION prompt. */ + recoverymode = TRUE; +! if (!check_changed(curbuf, p_awa, TRUE, eap->forceit, FALSE) + && (*eap->arg == NUL + || setfname(curbuf, eap->arg, NULL, TRUE) == OK)) + ml_recover(); +--- 7363,7373 ---- + { + /* Set recoverymode right away to avoid the ATTENTION prompt. */ + recoverymode = TRUE; +! if (!check_changed(curbuf, (p_awa ? CCGD_AW : 0) +! | CCGD_MULTWIN +! | (eap->forceit ? CCGD_FORCEIT : 0) +! | CCGD_EXCMD) +! + && (*eap->arg == NUL + || setfname(curbuf, eap->arg, NULL, TRUE) == OK)) + ml_recover(); +*** ../vim-7.4.081/src/version.c 2013-11-09 02:32:15.000000000 +0100 +--- src/version.c 2013-11-09 03:26:06.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 82, + /**/ + +-- +People who want to share their religious views with you +almost never want you to share yours with them. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.083 b/patches/source/vim/patches/7.4.083 new file mode 100644 index 00000000..c71450eb --- /dev/null +++ b/patches/source/vim/patches/7.4.083 @@ -0,0 +1,136 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.083 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.083 +Problem: It's hard to avoid adding a used pattern to the search history. +Solution: Add the ":keeppatterns" modifier. (Christian Brabandt) +Files: runtime/doc/cmdline.txt, src/ex_cmds.h, src/ex_docmd.c, + src/ex_getln.c, src/structs.h + + +*** ../vim-7.4.082/runtime/doc/cmdline.txt 2013-08-10 13:24:52.000000000 +0200 +--- runtime/doc/cmdline.txt 2013-11-09 04:26:30.000000000 +0100 +*************** +*** 356,361 **** +--- 356,365 ---- + List the recent five entries from all histories: > + :history all -5, + ++ :keepp[atterns] {command} *:keepp* *:keeppatterns* ++ Execute {command}, without adding anything to the search ++ history ++ + ============================================================================== + 2. Command-line completion *cmdline-completion* + +*** ../vim-7.4.082/src/ex_cmds.h 2013-06-08 15:08:20.000000000 +0200 +--- src/ex_cmds.h 2013-11-09 04:26:30.000000000 +0100 +*************** +*** 477,482 **** +--- 477,484 ---- + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_keepjumps, "keepjumps", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), ++ EX(CMD_keeppatterns, "keeppatterns", ex_wrongmodifier, ++ NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_keepalt, "keepalt", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_list, "list", ex_print, +*** ../vim-7.4.082/src/ex_docmd.c 2013-11-09 03:31:45.000000000 +0100 +--- src/ex_docmd.c 2013-11-09 04:31:36.000000000 +0100 +*************** +*** 1843,1848 **** +--- 1843,1853 ---- + cmdmod.keepalt = TRUE; + continue; + } ++ if (checkforcmd(&ea.cmd, "keeppatterns", 5)) ++ { ++ cmdmod.keeppatterns = TRUE; ++ continue; ++ } + if (!checkforcmd(&ea.cmd, "keepjumps", 5)) + break; + cmdmod.keepjumps = TRUE; +*************** +*** 2584,2589 **** +--- 2589,2595 ---- + case CMD_keepalt: + case CMD_keepjumps: + case CMD_keepmarks: ++ case CMD_keeppatterns: + case CMD_leftabove: + case CMD_let: + case CMD_lockmarks: +*************** +*** 3089,3094 **** +--- 3095,3101 ---- + {"keepalt", 5, FALSE}, + {"keepjumps", 5, FALSE}, + {"keepmarks", 3, FALSE}, ++ {"keeppatterns", 5, FALSE}, + {"leftabove", 5, FALSE}, + {"lockmarks", 3, FALSE}, + {"noautocmd", 3, FALSE}, +*************** +*** 3597,3602 **** +--- 3604,3610 ---- + case CMD_keepalt: + case CMD_keepjumps: + case CMD_keepmarks: ++ case CMD_keeppatterns: + case CMD_leftabove: + case CMD_lockmarks: + case CMD_rightbelow: +*** ../vim-7.4.082/src/ex_getln.c 2013-11-05 07:12:59.000000000 +0100 +--- src/ex_getln.c 2013-11-09 04:26:30.000000000 +0100 +*************** +*** 5498,5503 **** +--- 5498,5506 ---- + if (hislen == 0) /* no history */ + return; + ++ if (cmdmod.keeppatterns && histype == HIST_SEARCH) ++ return; ++ + /* + * Searches inside the same mapping overwrite each other, so that only + * the last line is kept. Be careful not to remove a line that was moved +*** ../vim-7.4.082/src/structs.h 2013-11-06 05:26:08.000000000 +0100 +--- src/structs.h 2013-11-09 04:26:30.000000000 +0100 +*************** +*** 542,547 **** +--- 542,548 ---- + int keepmarks; /* TRUE when ":keepmarks" was used */ + int keepjumps; /* TRUE when ":keepjumps" was used */ + int lockmarks; /* TRUE when ":lockmarks" was used */ ++ int keeppatterns; /* TRUE when ":keeppatterns" was used */ + # ifdef FEAT_AUTOCMD + char_u *save_ei; /* saved value of 'eventignore' */ + # endif +*** ../vim-7.4.082/src/version.c 2013-11-09 03:31:45.000000000 +0100 +--- src/version.c 2013-11-09 04:29:07.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 83, + /**/ + +-- +I am always surprised in the Linux world how quickly solutions can be +obtained. (Imagine sending an email to Bill Gates, asking why Windows +crashed, and how to fix it... and then getting an answer that fixed the +problem... <0>_<0> !) -- Mark Langdon + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.084 b/patches/source/vim/patches/7.4.084 new file mode 100644 index 00000000..142e251d --- /dev/null +++ b/patches/source/vim/patches/7.4.084 @@ -0,0 +1,184 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.084 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.084 +Problem: Python: interrupt not being properly discarded. (Yggdroot Chen) +Solution: Discard interrupt in VimTryEnd. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + + +*** ../vim-7.4.083/src/if_py_both.h 2013-11-04 00:34:47.000000000 +0100 +--- src/if_py_both.h 2013-11-11 00:56:41.000000000 +0100 +*************** +*** 558,564 **** + /* Keyboard interrupt should be preferred over anything else */ + if (got_int) + { +! did_throw = got_int = FALSE; + PyErr_SetNone(PyExc_KeyboardInterrupt); + return -1; + } +--- 558,568 ---- + /* Keyboard interrupt should be preferred over anything else */ + if (got_int) + { +! if (current_exception != NULL) +! discard_current_exception(); +! else +! need_rethrow = did_throw = FALSE; +! got_int = FALSE; + PyErr_SetNone(PyExc_KeyboardInterrupt); + return -1; + } +*************** +*** 567,573 **** + /* Python exception is preferred over vim one; unlikely to occur though */ + else if (PyErr_Occurred()) + { +! did_throw = FALSE; + return -1; + } + /* Finally transform VimL exception to python one */ +--- 571,580 ---- + /* Python exception is preferred over vim one; unlikely to occur though */ + else if (PyErr_Occurred()) + { +! if (current_exception != NULL) +! discard_current_exception(); +! else +! need_rethrow = did_throw = FALSE; + return -1; + } + /* Finally transform VimL exception to python one */ +*** ../vim-7.4.083/src/testdir/test86.in 2013-11-04 00:34:47.000000000 +0100 +--- src/testdir/test86.in 2013-11-11 00:56:11.000000000 +0100 +*************** +*** 1281,1286 **** +--- 1281,1317 ---- + EOF + :delfunction Exe + :" ++ :" Regression: interrupting vim.command propagates to next vim.command ++ py << EOF ++ def test_keyboard_interrupt(): ++ try: ++ vim.command('while 1 | endwhile') ++ except KeyboardInterrupt: ++ cb.append('Caught KeyboardInterrupt') ++ except Exception: ++ cb.append('!!!!!!!! Caught exception: ' + repr(sys.exc_info)) ++ else: ++ cb.append('!!!!!!!! No exception') ++ try: ++ vim.command('$ put =\'Running :put\'') ++ except KeyboardInterrupt: ++ cb.append('!!!!!!!! Caught KeyboardInterrupt') ++ except Exception: ++ cb.append('!!!!!!!! Caught exception: ' + repr(sys.exc_info)) ++ else: ++ cb.append('No exception') ++ EOF ++ :debuggreedy ++ :call inputsave() ++ :call feedkeys("s\ns\ns\ns\nq\n") ++ :redir => output ++ :debug silent! py test_keyboard_interrupt() ++ :redir END ++ :0 debuggreedy ++ :silent $put =output ++ :unlet output ++ :py del test_keyboard_interrupt ++ :" + :" Cleanup + py << EOF + del cb +*** ../vim-7.4.083/src/testdir/test86.ok 2013-11-04 00:34:47.000000000 +0100 +--- src/testdir/test86.ok 2013-11-11 00:56:11.000000000 +0100 +*************** +*** 1198,1200 **** +--- 1198,1204 ---- + vim.eval("Exe('echoerr ''jkl''')"):error:('Vim(echoerr):jkl',) + vim.eval("Exe('xxx_non_existent_command_xxx')"):error:('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',) + vim.bindeval("Exe('xxx_non_existent_command_xxx')"):error:('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',) ++ Caught KeyboardInterrupt ++ Running :put ++ No exception ++ +*** ../vim-7.4.083/src/testdir/test87.in 2013-11-04 00:34:47.000000000 +0100 +--- src/testdir/test87.in 2013-11-11 00:56:11.000000000 +0100 +*************** +*** 1232,1237 **** +--- 1232,1268 ---- + EOF + :delfunction Exe + :" ++ :" Regression: interrupting vim.command propagates to next vim.command ++ py3 << EOF ++ def test_keyboard_interrupt(): ++ try: ++ vim.command('while 1 | endwhile') ++ except KeyboardInterrupt: ++ cb.append('Caught KeyboardInterrupt') ++ except Exception as e: ++ cb.append('!!!!!!!! Caught exception: ' + repr(e)) ++ else: ++ cb.append('!!!!!!!! No exception') ++ try: ++ vim.command('$ put =\'Running :put\'') ++ except KeyboardInterrupt: ++ cb.append('!!!!!!!! Caught KeyboardInterrupt') ++ except Exception as e: ++ cb.append('!!!!!!!! Caught exception: ' + repr(e)) ++ else: ++ cb.append('No exception') ++ EOF ++ :debuggreedy ++ :call inputsave() ++ :call feedkeys("s\ns\ns\ns\nq\n") ++ :redir => output ++ :debug silent! py3 test_keyboard_interrupt() ++ :redir END ++ :0 debuggreedy ++ :silent $put =output ++ :unlet output ++ :py3 del test_keyboard_interrupt ++ :" + :" Cleanup + py3 << EOF + del cb +*** ../vim-7.4.083/src/testdir/test87.ok 2013-11-04 00:34:47.000000000 +0100 +--- src/testdir/test87.ok 2013-11-11 00:56:11.000000000 +0100 +*************** +*** 1187,1189 **** +--- 1187,1193 ---- + vim.eval("Exe('echoerr ''jkl''')"):(<class 'vim.error'>, error('Vim(echoerr):jkl',)) + vim.eval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',)) + vim.bindeval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',)) ++ Caught KeyboardInterrupt ++ Running :put ++ No exception ++ +*** ../vim-7.4.083/src/version.c 2013-11-09 05:30:18.000000000 +0100 +--- src/version.c 2013-11-11 00:55:23.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 84, + /**/ + +-- +Computers make very fast, very accurate, mistakes. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.085 b/patches/source/vim/patches/7.4.085 new file mode 100644 index 00000000..a6e9a804 --- /dev/null +++ b/patches/source/vim/patches/7.4.085 @@ -0,0 +1,118 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.085 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.085 +Problem: When inserting text in Visual block mode and moving the cursor the + wrong text gets repeated in other lines. +Solution: Use the '[ mark to find the start of the actually inserted text. + (Christian Brabandt) +Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok + + +*** ../vim-7.4.084/src/ops.c 2013-11-05 07:12:59.000000000 +0100 +--- src/ops.c 2013-11-11 01:23:14.000000000 +0100 +*************** +*** 2640,2645 **** +--- 2640,2670 ---- + { + struct block_def bd2; + ++ /* The user may have moved the cursor before inserting something, try ++ * to adjust the block for that. */ ++ if (oap->start.lnum == curbuf->b_op_start.lnum) ++ { ++ if (oap->op_type == OP_INSERT ++ && oap->start.col != curbuf->b_op_start.col) ++ { ++ oap->start.col = curbuf->b_op_start.col; ++ pre_textlen -= getviscol2(oap->start.col, oap->start.coladd) ++ - oap->start_vcol; ++ oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd); ++ } ++ else if (oap->op_type == OP_APPEND ++ && oap->end.col >= curbuf->b_op_start.col) ++ { ++ oap->start.col = curbuf->b_op_start.col; ++ /* reset pre_textlen to the value of OP_INSERT */ ++ pre_textlen += bd.textlen; ++ pre_textlen -= getviscol2(oap->start.col, oap->start.coladd) ++ - oap->start_vcol; ++ oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd); ++ oap->op_type = OP_INSERT; ++ } ++ } ++ + /* + * Spaces and tabs in the indent may have changed to other spaces and + * tabs. Get the starting column again and correct the length. +*** ../vim-7.4.084/src/testdir/test39.in 2013-11-04 01:41:11.000000000 +0100 +--- src/testdir/test39.in 2013-11-11 01:20:51.000000000 +0100 +*************** +*** 19,24 **** +--- 19,28 ---- + :" Test block-change + G$khhhhhkkcmno + :$-4,$w! test.out ++ :" Test block-insert using cursor keys for movement ++ /^aaaa/ ++ :exe ":norm! l\<C-V>jjjlllI\<Right>\<Right> \<Esc>" ++ :/^aa/,/^$/w >> test.out + :" gUe must uppercase a whole word, also when changes to SS + Gothe youtueuu endYpk0wgUe + :" gUfx must uppercase until x, inclusive. +*************** +*** 40,45 **** +--- 44,54 ---- + :qa! + ENDTEST + ++ aaaaaa ++ bbbbbb ++ cccccc ++ dddddd ++ + abcdefghijklm + abcdefghijklm + abcdefghijklm +*** ../vim-7.4.084/src/testdir/test39.ok 2013-11-04 01:41:11.000000000 +0100 +--- src/testdir/test39.ok 2013-11-11 01:20:51.000000000 +0100 +*************** +*** 3,8 **** +--- 3,13 ---- + axyzqqqqef mno ghijklm + axyzqqqqefgmnoklm + abcdqqqqijklm ++ aaa aaa ++ bbb bbb ++ ccc ccc ++ ddd ddd ++ + the YOUTUSSEUU end + - yOUSSTUSSEXu - + THE YOUTUSSEUU END +*** ../vim-7.4.084/src/version.c 2013-11-11 01:05:43.000000000 +0100 +--- src/version.c 2013-11-11 01:18:01.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 85, + /**/ + +-- +SOLDIER: What? Ridden on a horse? +ARTHUR: Yes! +SOLDIER: You're using coconuts! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.086 b/patches/source/vim/patches/7.4.086 new file mode 100644 index 00000000..46f9eb90 --- /dev/null +++ b/patches/source/vim/patches/7.4.086 @@ -0,0 +1,145 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.086 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.086 +Problem: Skipping over an expression when not evaluating it does not work + properly for dict members. +Solution: Skip over unrecognized expression. (ZyX) +Files: src/eval.c, src/testdir/test34.in, src/testdir/test34.ok + + +*** ../vim-7.4.085/src/eval.c 2013-11-08 04:30:06.000000000 +0100 +--- src/eval.c 2013-11-11 04:11:38.000000000 +0100 +*************** +*** 19845,19868 **** + while (ret == OK + && (**arg == '[' + || (**arg == '.' && rettv->v_type == VAR_DICT) +! || (**arg == '(' && rettv->v_type == VAR_FUNC)) + && !vim_iswhite(*(*arg - 1))) + { + if (**arg == '(') + { + /* need to copy the funcref so that we can clear rettv */ +! functv = *rettv; +! rettv->v_type = VAR_UNKNOWN; + +! /* Invoke the function. Recursive! */ +! s = functv.vval.v_string; + ret = get_func_tv(s, (int)STRLEN(s), rettv, arg, + curwin->w_cursor.lnum, curwin->w_cursor.lnum, + &len, evaluate, selfdict); + + /* Clear the funcref afterwards, so that deleting it while + * evaluating the arguments is possible (see test55). */ +! clear_tv(&functv); + + /* Stop the expression evaluation when immediately aborting on + * error, or when an interrupt occurred or an exception was thrown +--- 19845,19874 ---- + while (ret == OK + && (**arg == '[' + || (**arg == '.' && rettv->v_type == VAR_DICT) +! || (**arg == '(' && (!evaluate || rettv->v_type == VAR_FUNC))) + && !vim_iswhite(*(*arg - 1))) + { + if (**arg == '(') + { + /* need to copy the funcref so that we can clear rettv */ +! if (evaluate) +! { +! functv = *rettv; +! rettv->v_type = VAR_UNKNOWN; + +! /* Invoke the function. Recursive! */ +! s = functv.vval.v_string; +! } +! else +! s = (char_u *)""; + ret = get_func_tv(s, (int)STRLEN(s), rettv, arg, + curwin->w_cursor.lnum, curwin->w_cursor.lnum, + &len, evaluate, selfdict); + + /* Clear the funcref afterwards, so that deleting it while + * evaluating the arguments is possible (see test55). */ +! if (evaluate) +! clear_tv(&functv); + + /* Stop the expression evaluation when immediately aborting on + * error, or when an interrupt occurred or an exception was thrown +*** ../vim-7.4.085/src/testdir/test34.in 2012-07-16 16:51:29.000000000 +0200 +--- src/testdir/test34.in 2013-11-11 04:10:13.000000000 +0100 +*************** +*** 1,6 **** +--- 1,7 ---- + Test for user functions. + Also test an <expr> mapping calling a function. + Also test that a builtin function cannot be replaced. ++ Also test for regression when calling arbitrary expression. + + STARTTEST + :so small.vim +*************** +*** 62,68 **** + [(one again:call append(line('$'), max([1, 2, 3])) + :call extend(g:, {'max': function('min')}) + :call append(line('$'), max([1, 2, 3])) +! :$-7,$w! test.out + :delfunc Table + :delfunc Compute + :delfunc Expr1 +--- 63,79 ---- + [(one again:call append(line('$'), max([1, 2, 3])) + :call extend(g:, {'max': function('min')}) + :call append(line('$'), max([1, 2, 3])) +! :try +! : " Regression: the first line below used to throw ?E110: Missing ')'? +! : " Second is here just to prove that this line is correct when not skipping +! : " rhs of &&. +! : $put =(0&&(function('tr'))(1, 2, 3)) +! : $put =(1&&(function('tr'))(1, 2, 3)) +! :catch +! : $put ='!!! Unexpected exception:' +! : $put =v:exception +! :endtry +! :$-9,$w! test.out + :delfunc Table + :delfunc Compute + :delfunc Expr1 +*** ../vim-7.4.085/src/testdir/test34.ok 2012-07-16 16:43:15.000000000 +0200 +--- src/testdir/test34.ok 2013-11-11 04:10:13.000000000 +0100 +*************** +*** 6,8 **** +--- 6,10 ---- + 1. one again + 3 + 3 ++ 0 ++ 1 +*** ../vim-7.4.085/src/version.c 2013-11-11 01:29:16.000000000 +0100 +--- src/version.c 2013-11-11 04:15:59.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 86, + /**/ + +-- +ARTHUR: The swallow may fly south with the sun, or the house martin or the + plover seek warmer hot lands in winter, yet these are not strangers to + our land. +SOLDIER: Are you suggesting coconuts migrate? + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.087 b/patches/source/vim/patches/7.4.087 new file mode 100644 index 00000000..b8c1a48a --- /dev/null +++ b/patches/source/vim/patches/7.4.087 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.087 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.087 +Problem: Compiler warning on 64 bit Windows systems. +Solution: Fix type cast. (Mike Williams) +Files: src/ops.c + + +*** ../vim-7.4.086/src/ops.c 2013-11-11 01:29:16.000000000 +0100 +--- src/ops.c 2013-11-11 23:16:06.000000000 +0100 +*************** +*** 2193,2199 **** + else + { + /* Replacing with \r or \n means splitting the line. */ +! after_p = alloc_check((unsigned)oldlen + 1 + n - STRLEN(newp)); + if (after_p != NULL) + STRMOVE(after_p, oldp); + } +--- 2193,2200 ---- + else + { + /* Replacing with \r or \n means splitting the line. */ +! after_p = alloc_check( +! (unsigned)(oldlen + 1 + n - STRLEN(newp))); + if (after_p != NULL) + STRMOVE(after_p, oldp); + } +*** ../vim-7.4.086/src/version.c 2013-11-11 04:25:48.000000000 +0100 +--- src/version.c 2013-11-11 23:16:23.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 87, + /**/ + + +-- +SECOND SOLDIER: It could be carried by an African swallow! +FIRST SOLDIER: Oh yes! An African swallow maybe ... but not a European + swallow. that's my point. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.088 b/patches/source/vim/patches/7.4.088 new file mode 100644 index 00000000..62dc91ca --- /dev/null +++ b/patches/source/vim/patches/7.4.088 @@ -0,0 +1,564 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.088 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.088 +Problem: When spell checking is enabled Asian characters are always marked + as error. +Solution: When 'spelllang' contains "cjk" do not mark Asian characters as + error. (Ken Takata) +Files: runtime/doc/options.txt, runtime/doc/spell.txt, src/mbyte.c, + src/option.c, src/spell.c, src/structs.h + + +*** ../vim-7.4.087/runtime/doc/options.txt 2013-11-06 05:26:08.000000000 +0100 +--- runtime/doc/options.txt 2013-11-12 04:00:51.000000000 +0100 +*************** +*** 6555,6560 **** +--- 6555,6563 ---- + region by listing them: "en_us,en_ca" supports both US and Canadian + English, but not words specific for Australia, New Zealand or Great + Britain. ++ If the name "cjk" is included East Asian characters are excluded from ++ spell checking. This is useful when editing text that also has Asian ++ words. + *E757* + As a special case the name of a .spl file can be given as-is. The + first "_xx" in the name is removed and used as the region name +*** ../vim-7.4.087/runtime/doc/spell.txt 2013-08-10 13:25:01.000000000 +0200 +--- runtime/doc/spell.txt 2013-11-12 04:02:27.000000000 +0100 +*************** +*** 269,274 **** +--- 269,281 ---- + latin1 yi transliterated Yiddish + utf-8 yi-tr transliterated Yiddish + ++ *spell-cjk* ++ Chinese, Japanese and other East Asian characters are normally marked as ++ errors, because spell checking of these characters is not supported. If ++ 'spelllang' includes "cjk", these characters are not marked as errors. This ++ is useful when editing text with spell checking while some Asian words are ++ present. ++ + + SPELL FILES *spell-load* + +*** ../vim-7.4.087/src/mbyte.c 2013-07-05 20:07:21.000000000 +0200 +--- src/mbyte.c 2013-11-12 03:55:50.000000000 +0100 +*************** +*** 947,954 **** + { + case 0x2121: /* ZENKAKU space */ + return 0; +! case 0x2122: /* KU-TEN (Japanese comma) */ +! case 0x2123: /* TOU-TEN (Japanese period) */ + case 0x2124: /* ZENKAKU comma */ + case 0x2125: /* ZENKAKU period */ + return 1; +--- 947,954 ---- + { + case 0x2121: /* ZENKAKU space */ + return 0; +! case 0x2122: /* TOU-TEN (Japanese comma) */ +! case 0x2123: /* KU-TEN (Japanese period) */ + case 0x2124: /* ZENKAKU comma */ + case 0x2125: /* ZENKAKU period */ + return 1; +*************** +*** 2477,2485 **** + /* sorted list of non-overlapping intervals */ + static struct clinterval + { +! unsigned short first; +! unsigned short last; +! unsigned short class; + } classes[] = + { + {0x037e, 0x037e, 1}, /* Greek question mark */ +--- 2477,2485 ---- + /* sorted list of non-overlapping intervals */ + static struct clinterval + { +! unsigned int first; +! unsigned int last; +! unsigned int class; + } classes[] = + { + {0x037e, 0x037e, 1}, /* Greek question mark */ +*************** +*** 2544,2549 **** +--- 2544,2553 ---- + {0xff1a, 0xff20, 1}, /* half/fullwidth ASCII */ + {0xff3b, 0xff40, 1}, /* half/fullwidth ASCII */ + {0xff5b, 0xff65, 1}, /* half/fullwidth ASCII */ ++ {0x20000, 0x2a6df, 0x4e00}, /* CJK Ideographs */ ++ {0x2a700, 0x2b73f, 0x4e00}, /* CJK Ideographs */ ++ {0x2b740, 0x2b81f, 0x4e00}, /* CJK Ideographs */ ++ {0x2f800, 0x2fa1f, 0x4e00}, /* CJK Ideographs */ + }; + int bot = 0; + int top = sizeof(classes) / sizeof(struct clinterval) - 1; +*************** +*** 2563,2571 **** + while (top >= bot) + { + mid = (bot + top) / 2; +! if (classes[mid].last < c) + bot = mid + 1; +! else if (classes[mid].first > c) + top = mid - 1; + else + return (int)classes[mid].class; +--- 2567,2575 ---- + while (top >= bot) + { + mid = (bot + top) / 2; +! if (classes[mid].last < (unsigned int)c) + bot = mid + 1; +! else if (classes[mid].first > (unsigned int)c) + top = mid - 1; + else + return (int)classes[mid].class; +*** ../vim-7.4.087/src/option.c 2013-11-08 04:30:06.000000000 +0100 +--- src/option.c 2013-11-12 04:34:46.000000000 +0100 +*************** +*** 7122,7127 **** +--- 7122,7132 ---- + if (varp == &(curwin->w_s->b_p_spl)) + { + char_u fname[200]; ++ char_u *q = curwin->w_s->b_p_spl; ++ ++ /* Skip the first name if it is "cjk". */ ++ if (STRNCMP(q, "cjk,", 4) == 0) ++ q += 4; + + /* + * Source the spell/LANG.vim in 'runtimepath'. +*************** +*** 7129,7139 **** + * Use the first name in 'spelllang' up to '_region' or + * '.encoding'. + */ +! for (p = curwin->w_s->b_p_spl; *p != NUL; ++p) + if (vim_strchr((char_u *)"_.,", *p) != NULL) + break; +! vim_snprintf((char *)fname, 200, "spell/%.*s.vim", +! (int)(p - curwin->w_s->b_p_spl), curwin->w_s->b_p_spl); + source_runtime(fname, TRUE); + } + #endif +--- 7134,7143 ---- + * Use the first name in 'spelllang' up to '_region' or + * '.encoding'. + */ +! for (p = q; *p != NUL; ++p) + if (vim_strchr((char_u *)"_.,", *p) != NULL) + break; +! vim_snprintf((char *)fname, 200, "spell/%.*s.vim", (int)(p - q), q); + source_runtime(fname, TRUE); + } + #endif +*** ../vim-7.4.087/src/spell.c 2013-09-29 13:38:25.000000000 +0200 +--- src/spell.c 2013-11-12 04:37:33.000000000 +0100 +*************** +*** 754,762 **** + static void clear_spell_chartab __ARGS((spelltab_T *sp)); + static int set_spell_finish __ARGS((spelltab_T *new_st)); + static int spell_iswordp __ARGS((char_u *p, win_T *wp)); +! static int spell_iswordp_nmw __ARGS((char_u *p)); + #ifdef FEAT_MBYTE +! static int spell_mb_isword_class __ARGS((int cl)); + static int spell_iswordp_w __ARGS((int *p, win_T *wp)); + #endif + static int write_spell_prefcond __ARGS((FILE *fd, garray_T *gap)); +--- 754,762 ---- + static void clear_spell_chartab __ARGS((spelltab_T *sp)); + static int set_spell_finish __ARGS((spelltab_T *new_st)); + static int spell_iswordp __ARGS((char_u *p, win_T *wp)); +! static int spell_iswordp_nmw __ARGS((char_u *p, win_T *wp)); + #ifdef FEAT_MBYTE +! static int spell_mb_isword_class __ARGS((int cl, win_T *wp)); + static int spell_iswordp_w __ARGS((int *p, win_T *wp)); + #endif + static int write_spell_prefcond __ARGS((FILE *fd, garray_T *gap)); +*************** +*** 1149,1155 **** + + /* When we are at a non-word character there is no error, just + * skip over the character (try looking for a word after it). */ +! else if (!spell_iswordp_nmw(ptr)) + { + if (capcol != NULL && wp->w_s->b_cap_prog != NULL) + { +--- 1149,1155 ---- + + /* When we are at a non-word character there is no error, just + * skip over the character (try looking for a word after it). */ +! else if (!spell_iswordp_nmw(ptr, wp)) + { + if (capcol != NULL && wp->w_s->b_cap_prog != NULL) + { +*************** +*** 1561,1567 **** + * accept a no-caps word, even when the dictionary + * word specifies ONECAP. */ + mb_ptr_back(mip->mi_word, p); +! if (spell_iswordp_nmw(p) + ? capflags == WF_ONECAP + : (flags & WF_ONECAP) != 0 + && capflags != WF_ONECAP) +--- 1561,1567 ---- + * accept a no-caps word, even when the dictionary + * word specifies ONECAP. */ + mb_ptr_back(mip->mi_word, p); +! if (spell_iswordp_nmw(p, mip->mi_win) + ? capflags == WF_ONECAP + : (flags & WF_ONECAP) != 0 + && capflags != WF_ONECAP) +*************** +*** 4234,4240 **** + if (spl_copy == NULL) + goto theend; + +! /* loop over comma separated language names. */ + for (splp = spl_copy; *splp != NUL; ) + { + /* Get one language name. */ +--- 4234,4242 ---- + if (spl_copy == NULL) + goto theend; + +! wp->w_s->b_cjk = 0; +! +! /* Loop over comma separated language names. */ + for (splp = spl_copy; *splp != NUL; ) + { + /* Get one language name. */ +*************** +*** 4242,4247 **** +--- 4244,4255 ---- + region = NULL; + len = (int)STRLEN(lang); + ++ if (STRCMP(lang, "cjk") == 0) ++ { ++ wp->w_s->b_cjk = 1; ++ continue; ++ } ++ + /* If the name ends in ".spl" use it as the name of the spell file. + * If there is a region name let "region" point to it and remove it + * from the name. */ +*************** +*** 4601,4607 **** + int past_second = FALSE; /* past second word char */ + + /* find first letter */ +! for (p = word; !spell_iswordp_nmw(p); mb_ptr_adv(p)) + if (end == NULL ? *p == NUL : p >= end) + return 0; /* only non-word characters, illegal word */ + #ifdef FEAT_MBYTE +--- 4609,4615 ---- + int past_second = FALSE; /* past second word char */ + + /* find first letter */ +! for (p = word; !spell_iswordp_nmw(p, curwin); mb_ptr_adv(p)) + if (end == NULL ? *p == NUL : p >= end) + return 0; /* only non-word characters, illegal word */ + #ifdef FEAT_MBYTE +*************** +*** 4617,4623 **** + * But a word with an upper char only at start is a ONECAP. + */ + for ( ; end == NULL ? *p != NUL : p < end; mb_ptr_adv(p)) +! if (spell_iswordp_nmw(p)) + { + c = PTR2CHAR(p); + if (!SPELL_ISUPPER(c)) +--- 4625,4631 ---- + * But a word with an upper char only at start is a ONECAP. + */ + for ( ; end == NULL ? *p != NUL : p < end; mb_ptr_adv(p)) +! if (spell_iswordp_nmw(p, curwin)) + { + c = PTR2CHAR(p); + if (!SPELL_ISUPPER(c)) +*************** +*** 9907,9913 **** + + c = mb_ptr2char(s); + if (c > 255) +! return spell_mb_isword_class(mb_get_class(s)); + return spelltab.st_isw[c]; + } + #endif +--- 9915,9921 ---- + + c = mb_ptr2char(s); + if (c > 255) +! return spell_mb_isword_class(mb_get_class(s), wp); + return spelltab.st_isw[c]; + } + #endif +*************** +*** 9920,9927 **** + * Unlike spell_iswordp() this doesn't check for "midword" characters. + */ + static int +! spell_iswordp_nmw(p) + char_u *p; + { + #ifdef FEAT_MBYTE + int c; +--- 9928,9936 ---- + * Unlike spell_iswordp() this doesn't check for "midword" characters. + */ + static int +! spell_iswordp_nmw(p, wp) + char_u *p; ++ win_T *wp; + { + #ifdef FEAT_MBYTE + int c; +*************** +*** 9930,9936 **** + { + c = mb_ptr2char(p); + if (c > 255) +! return spell_mb_isword_class(mb_get_class(p)); + return spelltab.st_isw[c]; + } + #endif +--- 9939,9945 ---- + { + c = mb_ptr2char(p); + if (c > 255) +! return spell_mb_isword_class(mb_get_class(p), wp); + return spelltab.st_isw[c]; + } + #endif +*************** +*** 9942,9952 **** + * Return TRUE if word class indicates a word character. + * Only for characters above 255. + * Unicode subscript and superscript are not considered word characters. + */ + static int +! spell_mb_isword_class(cl) +! int cl; + { + return cl >= 2 && cl != 0x2070 && cl != 0x2080; + } + +--- 9951,9966 ---- + * Return TRUE if word class indicates a word character. + * Only for characters above 255. + * Unicode subscript and superscript are not considered word characters. ++ * See also dbcs_class() and utf_class() in mbyte.c. + */ + static int +! spell_mb_isword_class(cl, wp) +! int cl; +! win_T *wp; + { ++ if (wp->w_s->b_cjk) ++ /* East Asian characters are not considered word characters. */ ++ return cl == 2 || cl == 0x2800; + return cl >= 2 && cl != 0x2070 && cl != 0x2080; + } + +*************** +*** 9971,9979 **** + if (*s > 255) + { + if (enc_utf8) +! return spell_mb_isword_class(utf_class(*s)); + if (enc_dbcs) +! return dbcs_class((unsigned)*s >> 8, *s & 0xff) >= 2; + return 0; + } + return spelltab.st_isw[*s]; +--- 9985,9994 ---- + if (*s > 255) + { + if (enc_utf8) +! return spell_mb_isword_class(utf_class(*s), wp); + if (enc_dbcs) +! return spell_mb_isword_class( +! dbcs_class((unsigned)*s >> 8, *s & 0xff), wp); + return 0; + } + return spelltab.st_isw[*s]; +*************** +*** 10193,10205 **** + line = ml_get_curline(); + p = line + curwin->w_cursor.col; + /* Backup to before start of word. */ +! while (p > line && spell_iswordp_nmw(p)) + mb_ptr_back(line, p); + /* Forward to start of word. */ +! while (*p != NUL && !spell_iswordp_nmw(p)) + mb_ptr_adv(p); + +! if (!spell_iswordp_nmw(p)) /* No word found. */ + { + beep_flush(); + return; +--- 10208,10220 ---- + line = ml_get_curline(); + p = line + curwin->w_cursor.col; + /* Backup to before start of word. */ +! while (p > line && spell_iswordp_nmw(p, curwin)) + mb_ptr_back(line, p); + /* Forward to start of word. */ +! while (*p != NUL && !spell_iswordp_nmw(p, curwin)) + mb_ptr_adv(p); + +! if (!spell_iswordp_nmw(p, curwin)) /* No word found. */ + { + beep_flush(); + return; +*************** +*** 10436,10442 **** + for (;;) + { + mb_ptr_back(line, p); +! if (p == line || spell_iswordp_nmw(p)) + break; + if (vim_regexec(®match, p, 0) + && regmatch.endp[0] == line + endcol) +--- 10451,10457 ---- + for (;;) + { + mb_ptr_back(line, p); +! if (p == line || spell_iswordp_nmw(p, curwin)) + break; + if (vim_regexec(®match, p, 0) + && regmatch.endp[0] == line + endcol) +*************** +*** 11645,11651 **** + + /* When appending a compound word after a word character don't + * use Onecap. */ +! if (p != NULL && spell_iswordp_nmw(p)) + c &= ~WF_ONECAP; + make_case_word(tword + sp->ts_splitoff, + preword + sp->ts_prewordlen, c); +--- 11660,11666 ---- + + /* When appending a compound word after a word character don't + * use Onecap. */ +! if (p != NULL && spell_iswordp_nmw(p, curwin)) + c &= ~WF_ONECAP; + make_case_word(tword + sp->ts_splitoff, + preword + sp->ts_prewordlen, c); +*************** +*** 11895,11901 **** + * character when the word ends. But only when the + * good word can end. */ + if (((!try_compound && !spell_iswordp_nmw(fword +! + sp->ts_fidx)) + || fword_ends) + && fword[sp->ts_fidx] != NUL + && goodword_ends) +--- 11910,11917 ---- + * character when the word ends. But only when the + * good word can end. */ + if (((!try_compound && !spell_iswordp_nmw(fword +! + sp->ts_fidx, +! curwin)) + || fword_ends) + && fword[sp->ts_fidx] != NUL + && goodword_ends) +*************** +*** 14226,14232 **** + } + else + { +! if (spell_iswordp_nmw(s)) + *t++ = *s; + ++s; + } +--- 14242,14248 ---- + } + else + { +! if (spell_iswordp_nmw(s, curwin)) + *t++ = *s; + ++s; + } +*************** +*** 14521,14527 **** + else + { + did_white = FALSE; +! if (!spell_iswordp_nmw(t)) + continue; + } + } +--- 14537,14543 ---- + else + { + did_white = FALSE; +! if (!spell_iswordp_nmw(t, curwin)) + continue; + } + } +*************** +*** 16045,16051 **** + for (p = line + startcol; p > line; ) + { + mb_ptr_back(line, p); +! if (spell_iswordp_nmw(p)) + break; + } + +--- 16061,16067 ---- + for (p = line + startcol; p > line; ) + { + mb_ptr_back(line, p); +! if (spell_iswordp_nmw(p, curwin)) + break; + } + +*** ../vim-7.4.087/src/structs.h 2013-11-09 05:30:18.000000000 +0100 +--- src/structs.h 2013-11-12 03:55:50.000000000 +0100 +*************** +*** 1310,1315 **** +--- 1310,1318 ---- + regprog_T *b_cap_prog; /* program for 'spellcapcheck' */ + char_u *b_p_spf; /* 'spellfile' */ + char_u *b_p_spl; /* 'spelllang' */ ++ # ifdef FEAT_MBYTE ++ int b_cjk; /* all CJK letters as OK */ ++ # endif + #endif + #if !defined(FEAT_SYN_HL) && !defined(FEAT_SPELL) + int dummy; +*** ../vim-7.4.087/src/version.c 2013-11-11 23:17:31.000000000 +0100 +--- src/version.c 2013-11-12 03:59:03.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 88, + /**/ + +-- +THEOREM: VI is perfect. +PROOF: VI in roman numerals is 6. The natural numbers < 6 which divide 6 are +1, 2, and 3. 1+2+3 = 6. So 6 is a perfect number. Therefore, VI is perfect. +QED + -- Arthur Tateishi + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.089 b/patches/source/vim/patches/7.4.089 new file mode 100644 index 00000000..80697cef --- /dev/null +++ b/patches/source/vim/patches/7.4.089 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.089 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.089 +Problem: When editing a file in a directory mounted through sshfs Vim + doesn't set the security context on a renamed file. +Solution: Add mch_copy_sec() to vim_rename(). (Peter Backes) +Files: src/fileio.c + + +*** ../vim-7.4.088/src/fileio.c 2013-08-30 17:06:56.000000000 +0200 +--- src/fileio.c 2013-11-12 05:07:22.000000000 +0100 +*************** +*** 6707,6712 **** +--- 6707,6715 ---- + mch_set_acl(to, acl); + mch_free_acl(acl); + #endif ++ #ifdef HAVE_SELINUX ++ mch_copy_sec(from, to) ++ #endif + if (errmsg != NULL) + { + EMSG2(errmsg, to); +*** ../vim-7.4.088/src/version.c 2013-11-12 04:43:57.000000000 +0100 +--- src/version.c 2013-11-12 05:11:02.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 89, + /**/ + +-- +Kiss me twice. I'm schizophrenic. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/patches/source/vim/patches/7.4.090 b/patches/source/vim/patches/7.4.090 new file mode 100644 index 00000000..a7ee9275 --- /dev/null +++ b/patches/source/vim/patches/7.4.090 @@ -0,0 +1,223 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.090 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.090 +Problem: Win32: When a directory name contains an exclamation mark, + completion doesn't complete the contents of the directory. +Solution: Escape the exclamation mark. (Jan Stocker) +Files: src/ex_getln.c, src/testdir/test102.in, src/testdir/test102.ok + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + + +*** ../vim-7.4.089/src/ex_getln.c 2013-11-09 05:30:18.000000000 +0100 +--- src/ex_getln.c 2013-11-12 05:23:15.000000000 +0100 +*************** +*** 3852,3860 **** + char_u buf[20]; + int j = 0; + +! /* Don't escape '[' and '{' if they are in 'isfname'. */ + for (p = PATH_ESC_CHARS; *p != NUL; ++p) +! if ((*p != '[' && *p != '{') || !vim_isfilec(*p)) + buf[j++] = *p; + buf[j] = NUL; + p = vim_strsave_escaped(fname, buf); +--- 3852,3860 ---- + char_u buf[20]; + int j = 0; + +! /* Don't escape '[', '{' and '!' if they are in 'isfname'. */ + for (p = PATH_ESC_CHARS; *p != NUL; ++p) +! if ((*p != '[' && *p != '{' && *p != '!') || !vim_isfilec(*p)) + buf[j++] = *p; + buf[j] = NUL; + p = vim_strsave_escaped(fname, buf); +*** ../vim-7.4.089/src/testdir/test102.in 2013-11-12 05:27:48.000000000 +0100 +--- src/testdir/test102.in 2013-11-12 05:21:26.000000000 +0100 +*************** +*** 0 **** +--- 1,12 ---- ++ Test if fnameescape is correct for special chars like ! ++ ++ STARTTEST ++ :%d ++ :let fname = 'Xspa ce' ++ :try | exe "w! " . fnameescape(fname) | put='Space' | endtry ++ :let fname = 'Xemark!' ++ :try | exe "w! " . fnameescape(fname) | put='ExclamationMark' | endtry ++ :w! test.out ++ :qa! ++ ENDTEST ++ +*** ../vim-7.4.089/src/testdir/test102.ok 2013-11-12 05:27:48.000000000 +0100 +--- src/testdir/test102.ok 2013-11-12 05:21:19.000000000 +0100 +*************** +*** 0 **** +--- 1,3 ---- ++ ++ Space ++ ExclamationMark +*** ../vim-7.4.089/src/testdir/Make_amiga.mak 2013-11-08 04:30:06.000000000 +0100 +--- src/testdir/Make_amiga.mak 2013-11-12 05:20:03.000000000 +0100 +*************** +*** 34,40 **** + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out test100.out test101.out + + .SUFFIXES: .in .out + +--- 34,40 ---- + test81.out test82.out test83.out test84.out test88.out \ + test89.out test90.out test91.out test92.out test93.out \ + test94.out test95.out test96.out test97.out test98.out \ +! test99.out test100.out test101.out test102.out + + .SUFFIXES: .in .out |