From e7427f4b7e1af6a63600183be6b4c5724beb2f66 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 13:24:20 +0100 Subject: [PATCH 01/14] patch 7.4.910 Problem: Compiler complains about type punned pointer. Solution: Use another way to increment the ref count. --- src/if_py_both.h | 10 ++++++---- src/version.c | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/if_py_both.h b/src/if_py_both.h index e2f4857e42..1ad7dc616d 100644 --- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -476,16 +476,18 @@ AlwaysNone(PyObject *self UNUSED) AlwaysFalse(PyObject *self UNUSED) { /* do nothing */ - Py_INCREF(Py_False); - return Py_False; + PyObject *ret = Py_False; + Py_INCREF(ret); + return ret; } static PyObject * AlwaysTrue(PyObject *self UNUSED) { /* do nothing */ - Py_INCREF(Py_True); - return Py_True; + PyObject *ret = Py_True; + Py_INCREF(ret); + return ret; } /***************/ diff --git a/src/version.c b/src/version.c index 73713feacf..e8b664fa69 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 910, /**/ 909, /**/ From 450ca4335e467ac29c1560b7397225a974aee3bf Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 13:30:39 +0100 Subject: [PATCH 02/14] patch 7.4.911 Problem: t_Ce and t_Cs are documented but not supported. (Hirohito Higashi) Solution: Define the options. --- src/option.c | 2 ++ src/version.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/option.c b/src/option.c index 7c9f9c8f52..db3a197af4 100644 --- a/src/option.c +++ b/src/option.c @@ -2981,8 +2981,10 @@ static struct vimoption p_term("t_ce", T_CE) p_term("t_cl", T_CL) p_term("t_cm", T_CM) + p_term("t_Ce", T_UCE) p_term("t_Co", T_CCO) p_term("t_CS", T_CCS) + p_term("t_Cs", T_UCS) p_term("t_cs", T_CS) #ifdef FEAT_VERTSPLIT p_term("t_CV", T_CSV) diff --git a/src/version.c b/src/version.c index e8b664fa69..734f84f3c6 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 911, /**/ 910, /**/ From e01f4f86cef7bed3cb99b26f9f57d86f6eb5fe1a Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 14:06:53 +0100 Subject: [PATCH 03/14] patch 7.4.912 Problem: Wrong indenting for C++ constructor. Solution: Recognize ::. (Anhong) --- src/misc1.c | 13 +++++++++++++ src/testdir/test3.in | 7 +++++++ src/testdir/test3.ok | 7 +++++++ src/version.c | 2 ++ 4 files changed, 29 insertions(+) diff --git a/src/misc1.c b/src/misc1.c index fa1e049d31..5190db4a13 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -6250,6 +6250,19 @@ cin_isfuncdecl(sp, first_lnum, min_lnum) { if (cin_iscomment(s)) /* ignore comments */ s = cin_skipcomment(s); + else if (*s == ':') + { + if (*(s + 1) == ':') + s += 2; + else + /* To avoid a mistake in the following situation: + * A::A(int a, int b) + * : a(0) // <--not a function decl + * , b(0) + * {... + */ + return FALSE; + } else ++s; } diff --git a/src/testdir/test3.in b/src/testdir/test3.in index f3d4f182f8..c0a68d0941 100644 --- a/src/testdir/test3.in +++ b/src/testdir/test3.in @@ -663,6 +663,13 @@ Constructor::Constructor(int a, { } +A::A(int a, int b) +: aa(a), +bb(b), +cc(c) +{ +} + class CAbc : public BaseClass1, protected BaseClass2 diff --git a/src/testdir/test3.ok b/src/testdir/test3.ok index 477aacc1ca..c4c01a3d4f 100644 --- a/src/testdir/test3.ok +++ b/src/testdir/test3.ok @@ -651,6 +651,13 @@ Constructor::Constructor(int a, { } +A::A(int a, int b) + : aa(a), + bb(b), + cc(c) +{ +} + class CAbc : public BaseClass1, protected BaseClass2 diff --git a/src/version.c b/src/version.c index 734f84f3c6..a0896f8d90 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 912, /**/ 911, /**/ From 72f4cc4a987d123c0ed909c85b9a05f65cef7202 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 14:35:18 +0100 Subject: [PATCH 04/14] patch 7.4.913 Problem: No utf-8 support for the hangul input feature. Solution: Add utf-8 support. (Namsh) --- runtime/doc/hangulin.txt | 51 +++++++++++++++++++++++----------------- src/feature.h | 4 ---- src/gui.c | 31 ++++++++++++++++++++---- src/hangulin.c | 46 ++++++++++++++++++++++++++++++++++++ src/proto/hangulin.pro | 2 ++ src/screen.c | 8 ++++++- src/ui.c | 9 +++++++ src/version.c | 2 ++ 8 files changed, 121 insertions(+), 32 deletions(-) diff --git a/runtime/doc/hangulin.txt b/runtime/doc/hangulin.txt index 79ebff1100..6aacca77f7 100644 --- a/runtime/doc/hangulin.txt +++ b/runtime/doc/hangulin.txt @@ -1,11 +1,8 @@ -*hangulin.txt* For Vim version 7.4. Last change: 2009 Jun 24 +*hangulin.txt* For Vim version 7.4. Last change: 2015 Nov 10 VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam -NOTE: The |+hangul_input| feature is scheduled to be removed. If you want to -keep it, please send a message to the Vim user maillist. - Introduction *hangul* ------------ @@ -17,7 +14,8 @@ Compile ------- Next is a basic option. You can add any other configure option. > - ./configure --with-x --enable-multibyte --enable-fontset --enable-hangulinput + ./configure --with-x --enable-multibyte --enable-hangulinput \ + --disable-xim And you should check feature.h. If |+hangul_input| feature is enabled by configure, you can select more options such as keyboard type, 2 bulsik @@ -26,18 +24,21 @@ or 3 bulsik. You can find keywords like next in there. > #define HANGUL_DEFAULT_KEYBOARD 2 #define ESC_CHG_TO_ENG_MODE /* #define X_LOCALE */ - /* #define SLOW_XSERVER */ Environment variables --------------------- -You should set LANG variable to Korean locale such as ko or ko_KR.euc. +You should set LANG variable to Korean locale such as ko, ko_KR.eucKR +or ko_KR.UTF-8. If you set LC_ALL variable, it should be set to Korean locale also. VIM resource ------------ -You should add nexts to your global vimrc ($HOME/.vimrc). > +You may want to set 'encoding' and 'fileencodings'. +Next are examples: - :set fileencoding=korea + :set encoding=euc-kr + :set encoding=utf-8 + :set fileencodings=ucs-bom,utf-8,cp949,euc-kr,latin1 Keyboard -------- @@ -52,8 +53,16 @@ If both are set, VIM_KEYBOARD has higher priority. Hangul Fonts ------------ -You can set text font using $HOME/.Xdefaults or in your gvimrc file. -But to use Hangul, you should set 'guifontset' in your vimrc. +If you use GTK version of GVIM, you should set 'guifont' and 'guifontwide'. +For example: + set guifont=Courier\ 12 + set guifontwide=NanumGothicCoding\ 12 + +If you use Motif or Athena version of GVIM, you should set 'guifontset' in +your vimrc. You can set fontset in the .Xdefaults file. + +$HOME/.gvimrc: > + set guifontset=english_font,hangul_font $HOME/.Xdefaults: > Vim.font: english_font @@ -66,40 +75,38 @@ $HOME/.Xdefaults: > *international: True Vim*fontList: english_font;hangul_font: -$HOME/.gvimrc: > - set guifontset=english_font,hangul_font - attention! the , (comma) or ; (semicolon) And there should be no ':set guifont'. If it exists, then Gvim ignores ':set guifontset'. It means VIM runs without fontset supporting. So, you can see only English. Hangul does not be correctly displayed. -After 'fontset' feature is enabled, VIM does not allow using 'font'. +After 'fontset' feature is enabled, VIM does not allow using english +font only in 'font' setting for syntax. For example, if you use > :set guifontset=eng_font,your_font in your .gvimrc, then you should do for syntax > :hi Comment guifg=Cyan font=another_eng_font,another_your_font If you just do > :hi Comment font=another_eng_font -then you can see a GOOD error message. Be careful! +then you can see a error message. Be careful! hangul_font width should be twice than english_font width. Unsupported Feature ------------------- -Johab font not yet supported. And I don't have any plan. -If you really want to use johab font, you can use the -hanguldraw.c in gau package. +We don't support Johab font. +We don't support Hanja input. +And We don't have any plan to support them. -Hanja input not yet supported. And I don't have any plan. -If you really want to input hanja, just use VIM with hanterm. +If you really need such features, you can use console version of VIM with a +capable terminal emulator. Bug or Comment -------------- Send comments, patches and suggestions to: - Chi-Deok Hwang SungHyun Nam + Chi-Deok Hwang <...> vim:tw=78:ts=8:ft=help:norl: diff --git a/src/feature.h b/src/feature.h index 01f611e381..c499d9d50a 100644 --- a/src/feature.h +++ b/src/feature.h @@ -677,9 +677,6 @@ # define ESC_CHG_TO_ENG_MODE /* if defined, when ESC pressed, * turn to english mode */ -# if !defined(FEAT_XFONTSET) && defined(HAVE_X11) && !defined(FEAT_GUI_GTK) -# define FEAT_XFONTSET /* Hangul input requires xfontset */ -# endif # if defined(FEAT_XIM) && !defined(LINT) Error: You should select only ONE of XIM and HANGUL INPUT # endif @@ -687,7 +684,6 @@ #if defined(FEAT_HANGULIN) || defined(FEAT_XIM) /* # define X_LOCALE */ /* for OS with incomplete locale support, like old linux versions. */ -/* # define SLOW_XSERVER */ /* for extremely slow X server */ #endif /* diff --git a/src/gui.c b/src/gui.c index fc2981c6ca..07365224d3 100644 --- a/src/gui.c +++ b/src/gui.c @@ -1223,8 +1223,19 @@ gui_update_cursor(force, clear_selection) gui.highlight_mask = (cattr | attr); #ifdef FEAT_HANGULIN if (composing_hangul) - (void)gui_outstr_nowrap(composing_hangul_buffer, 2, - GUI_MON_IS_CURSOR | GUI_MON_NOCLEAR, cfg, cbg, 0); + { + char_u *comp_buf; + int comp_len; + + comp_buf = hangul_composing_buffer_get(&comp_len); + if (comp_buf) + { + (void)gui_outstr_nowrap(comp_buf, comp_len, + GUI_MON_IS_CURSOR | GUI_MON_NOCLEAR, + cfg, cbg, 0); + vim_free(comp_buf); + } + } else #endif (void)gui_screenchar(LineOffset[gui.row] + gui.col, @@ -2572,9 +2583,19 @@ gui_undraw_cursor() #ifdef FEAT_HANGULIN if (composing_hangul && gui.col == gui.cursor_col && gui.row == gui.cursor_row) - (void)gui_outstr_nowrap(composing_hangul_buffer, 2, - GUI_MON_IS_CURSOR | GUI_MON_NOCLEAR, - gui.norm_pixel, gui.back_pixel, 0); + { + char_u *comp_buf; + int comp_len; + + comp_buf = hangul_composing_buffer_get(&comp_len); + if (comp_buf) + { + (void)gui_outstr_nowrap(comp_buf, comp_len, + GUI_MON_IS_CURSOR | GUI_MON_NOCLEAR, + gui.norm_pixel, gui.back_pixel, 0); + vim_free(comp_buf); + } + } else { #endif diff --git a/src/hangulin.c b/src/hangulin.c index 24cf18002d..f02cad8174 100644 --- a/src/hangulin.c +++ b/src/hangulin.c @@ -1619,3 +1619,49 @@ convert_3_to_ks(fv, mv, lv, des) *des++ = johab_lcon_to_wan[lv]; return 8; } + + char_u * +hangul_string_convert(buf, p_len) + char_u *buf; + int *p_len; +{ + char_u *tmpbuf = NULL; + vimconv_T vc; + + if (enc_utf8) + { + vc.vc_type = CONV_NONE; + if (convert_setup(&vc, (char_u *)"euc-kr", p_enc) == OK) + { + tmpbuf = string_convert(&vc, buf, p_len); + convert_setup(&vc, NULL, NULL); + } + } + + return tmpbuf; +} + + char_u * +hangul_composing_buffer_get(p_len) + int *p_len; +{ + char_u *tmpbuf = NULL; + + if (composing_hangul) + { + int len = 2; + + tmpbuf = hangul_string_convert(composing_hangul_buffer, &len); + if (tmpbuf != NULL) + { + *p_len = len; + } + else + { + tmpbuf = vim_strnsave(composing_hangul_buffer, 2); + *p_len = 2; + } + } + + return tmpbuf; +} diff --git a/src/proto/hangulin.pro b/src/proto/hangulin.pro index adfde142ff..59e6986bdc 100644 --- a/src/proto/hangulin.pro +++ b/src/proto/hangulin.pro @@ -6,4 +6,6 @@ void hangul_input_state_toggle __ARGS((void)); void hangul_keyboard_set __ARGS((void)); int hangul_input_process __ARGS((char_u *s, int len)); void hangul_input_clear __ARGS((void)); +char_u *hangul_string_convert __ARGS((char_u *buf, int *p_len)); +char_u *hangul_composing_buffer_get __ARGS((int *p_len)); /* vim: set ft=c : */ diff --git a/src/screen.c b/src/screen.c index b1af862d37..de9e04df68 100644 --- a/src/screen.c +++ b/src/screen.c @@ -10047,7 +10047,13 @@ showmode() if (gui.in_use) { if (hangul_input_state_get()) - MSG_PUTS_ATTR(" \307\321\261\333", attr); /* HANGUL */ + { + /* HANGUL */ + if (enc_utf8) + MSG_PUTS_ATTR(" \355\225\234\352\270\200", attr); + else + MSG_PUTS_ATTR(" \307\321\261\333", attr); + } } #endif #ifdef FEAT_INS_EXPAND diff --git a/src/ui.c b/src/ui.c index e0e54d9242..5438a38c56 100644 --- a/src/ui.c +++ b/src/ui.c @@ -1723,8 +1723,17 @@ push_raw_key(s, len) char_u *s; int len; { + char_u *tmpbuf; + + tmpbuf = hangul_string_convert(s, &len); + if (tmpbuf != NULL) + s = tmpbuf; + while (len--) inbuf[inbufcount++] = *s++; + + if (tmpbuf != NULL) + vim_free(tmpbuf); } #endif diff --git a/src/version.c b/src/version.c index a0896f8d90..1604635aeb 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 913, /**/ 912, /**/ From 98b30a473a58ae98c280e0383c8b1e08c0ebced5 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 15:18:02 +0100 Subject: [PATCH 05/14] patch 7.4.914 Problem: New compiler warning: logical-not-parentheses Solution: Silence the warning. --- src/term.c | 2 +- src/version.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/term.c b/src/term.c index d35a57e046..51698fb993 100644 --- a/src/term.c +++ b/src/term.c @@ -2276,7 +2276,7 @@ add_termcap_entry(name, force) */ for (i = 0; i < 2; ++i) { - if (!builtin_first == i) + if ((!builtin_first) == i) #endif /* * Search in builtin termcap diff --git a/src/version.c b/src/version.c index 1604635aeb..450892a5c5 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 914, /**/ 913, /**/ From 174674743d9a2d7361c9cd89836f8dd8651edeeb Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 17:50:24 +0100 Subject: [PATCH 06/14] patch 7.4.915 Problem: When removing from 'path' and then adding, a comma may go missing. (Malcolm Rowe) Solution: Fix the check for P_ONECOMMA. (closes #471) --- src/option.c | 7 ++++--- src/testdir/test_options.in | 6 ++++++ src/testdir/test_options.ok | 1 + src/version.c | 2 ++ 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/option.c b/src/option.c index db3a197af4..bc44cb2d4b 100644 --- a/src/option.c +++ b/src/option.c @@ -4883,9 +4883,10 @@ do_set(arg, opt_flags) { i = (int)STRLEN(origval); /* strip a trailing comma, would get 2 */ - if (comma && (flags & P_ONECOMMA) && i > 1 - && origval[i - 1] == ',' - && origval[i - 2] != '\\') + if (comma && i > 1 + && (flags & P_ONECOMMA) == P_ONECOMMA + && origval[i - 1] == ',' + && origval[i - 2] != '\\') i--; mch_memmove(newval + i + comma, newval, STRLEN(newval) + 1); diff --git a/src/testdir/test_options.in b/src/testdir/test_options.in index bf1232a223..6e56fa2427 100644 --- a/src/testdir/test_options.in +++ b/src/testdir/test_options.in @@ -10,6 +10,12 @@ STARTTEST :endtry :buf 1 :$put =caught +:" +:" Test that changing 'path' keeps two commas. +:set path=foo,,bar +:set path-=bar +:set path+=bar +:$put =&path :/^result/,$w! test.out :qa! ENDTEST diff --git a/src/testdir/test_options.ok b/src/testdir/test_options.ok index a2e1494a1f..07731526bc 100644 --- a/src/testdir/test_options.ok +++ b/src/testdir/test_options.ok @@ -1,2 +1,3 @@ result ok +foo,,bar diff --git a/src/version.c b/src/version.c index 450892a5c5..4fb004d72e 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 915, /**/ 914, /**/ From 8648357841065295e39831d2b559d87ca01a7a7c Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 19:04:23 +0100 Subject: [PATCH 07/14] patch 7.4.916 Problem: When running out of memory while copying a dict memory may be freed twice. (ZyX) Solution: Do not call the garbage collector when running out of memory. --- src/misc2.c | 3 --- src/version.c | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/misc2.c b/src/misc2.c index 6ac1e5fa5f..3f1568d101 100644 --- a/src/misc2.c +++ b/src/misc2.c @@ -952,9 +952,6 @@ lalloc(size, message) clear_sb_text(); /* free any scrollback text */ try_again = mf_release_all(); /* release as many blocks as possible */ -#ifdef FEAT_EVAL - try_again |= garbage_collect(); /* cleanup recursive lists/dicts */ -#endif releasing = FALSE; if (!try_again) diff --git a/src/version.c b/src/version.c index 4fb004d72e..8effc142bc 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 916, /**/ 915, /**/ From 1be2ed6c11671eabefa0fc8600fd2af6cd3963e8 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 19:11:58 +0100 Subject: [PATCH 08/14] patch 7.4.917 Problem: Compiler warning for comparing signed and unsigned. Solution: Add a type cast. --- src/hangulin.c | 2 +- src/version.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/hangulin.c b/src/hangulin.c index f02cad8174..4e1a7f8014 100644 --- a/src/hangulin.c +++ b/src/hangulin.c @@ -1515,7 +1515,7 @@ convert_ks_to_3(src, fp, mp, lp) int i; if ((i = han_index(h, low)) >= 0 - && i < sizeof(ks_table1)/sizeof(ks_table1[0])) + && i < (int)(sizeof(ks_table1)/sizeof(ks_table1[0]))) { *fp = ks_table1[i][0]; *mp = ks_table1[i][1]; diff --git a/src/version.c b/src/version.c index 8effc142bc..0255d52011 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 917, /**/ 916, /**/ From 0796c0625fa4b9eb2f47fe8c976b78523924e1fb Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 19:41:37 +0100 Subject: [PATCH 09/14] patch 7.4.918 Problem: A digit in an option name has problems. Solution: Rename 'python3dll' to 'pythonthreedll'. --- runtime/doc/options.txt | 4 ++-- src/option.c | 2 +- src/option.h | 2 +- src/version.c | 2 ++ 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index f0e4f58c1f..c987545eae 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -5698,8 +5698,8 @@ A jump table for the options with a short description can be found at |Q_op|. Insert mode completion. When zero as much space as available is used. |ins-completion-menu|. - *'python3dll'* -'python3dll' string (default empty) + *'pythonthreedll'* +'pythonthreedll' string (default empty) global {not in Vi} {only for Unix} {only available when compiled with the |+python3/dyn| diff --git a/src/option.c b/src/option.c index bc44cb2d4b..6f9c5f5c2a 100644 --- a/src/option.c +++ b/src/option.c @@ -2130,7 +2130,7 @@ static struct vimoption #endif {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, #if defined(DYNAMIC_PYTHON3) && !defined(WIN3264) - {"python3dll", NULL, P_STRING|P_VI_DEF|P_SECURE, + {"pythonthreedll", NULL, P_STRING|P_VI_DEF|P_SECURE, (char_u *)&p_py3dll, PV_NONE, {(char_u *)"", (char_u *)0L} SCRIPTID_INIT}, #endif diff --git a/src/option.h b/src/option.h index 739fd67bbe..f87283687a 100644 --- a/src/option.h +++ b/src/option.h @@ -689,7 +689,7 @@ EXTERN char_u *p_cdpath; /* 'cdpath' */ EXTERN char_u *p_perldll; /* 'perldll' */ #endif #if defined(DYNAMIC_PYTHON3) && !defined(WIN3264) -EXTERN char_u *p_py3dll; /* 'python3dll' */ +EXTERN char_u *p_py3dll; /* 'pythonthreedll' */ #endif #if defined(DYNAMIC_PYTHON) && !defined(WIN3264) EXTERN char_u *p_pydll; /* 'pythondll' */ diff --git a/src/version.c b/src/version.c index 0255d52011..eef83bdc38 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 918, /**/ 917, /**/ From d4ece23e2e602d820ab7367c383dc0d72dd87029 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 19:48:14 +0100 Subject: [PATCH 10/14] patch 7.4.919 Problem: The dll options are not in the options window. Solution: Add the dll options. And other fixes. --- runtime/optwin.vim | 18 +++++++++++++++++- src/version.c | 2 ++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/runtime/optwin.vim b/runtime/optwin.vim index e5bd6c802d..d1e53367b8 100644 --- a/runtime/optwin.vim +++ b/runtime/optwin.vim @@ -1,7 +1,7 @@ " These commands create the option window. " " Maintainer: Bram Moolenaar -" Last Change: 2015 Jul 22 +" Last Change: 2015 Nov 10 " If there already is an option window, jump to that one. if bufwinnr("option-window") > 0 @@ -1307,6 +1307,22 @@ if has("mzscheme") call append("$", "mzquantum\tinterval in milliseconds between polls for MzScheme threads") call append("$", " \tset mzq=" . &mzq) endif +if exists("&luadll") + call append("$", "luadll\tname of the Lua dynamic library") + call OptionG("luadll", &luadll) +endif +if exists("&perldll") + call append("$", "perldll\tname of the Perl dynamic library") + call OptionG("perldll", &perldll) +endif +if exists("&pythondll") + call append("$", "pythondll\tname of the Python 2 dynamic library") + call OptionG("pythondll", &pythondll) +endif +if exists("&pythonthreedll") + call append("$", "pythonthreedll\tname of the Python 3 dynamic library") + call OptionG("pythonthreedll", &pythonthreedll) +endif set cpo&vim diff --git a/src/version.c b/src/version.c index eef83bdc38..a52dca9825 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 919, /**/ 918, /**/ From a93f975e8b39d7cfc8145dbe181cc4e5e4ec0bdf Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 20:45:09 +0100 Subject: [PATCH 11/14] patch 7.4.920 Problem: The rubydll option is not in the options window. Solution: Add the rubydll option. --- runtime/optwin.vim | 4 ++++ src/version.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/runtime/optwin.vim b/runtime/optwin.vim index d1e53367b8..048b1ad7ee 100644 --- a/runtime/optwin.vim +++ b/runtime/optwin.vim @@ -1323,6 +1323,10 @@ if exists("&pythonthreedll") call append("$", "pythonthreedll\tname of the Python 3 dynamic library") call OptionG("pythonthreedll", &pythonthreedll) endif +if exists("&rubydll") + call append("$", "rubydll\tname of the Ruby dynamic library") + call OptionG("rubydll", &rubydll) +endif set cpo&vim diff --git a/src/version.c b/src/version.c index a52dca9825..eb418a7052 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 920, /**/ 919, /**/ From cd1c55f706c2f9b8310b8a9fc1f8226c7fd19372 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 20:52:04 +0100 Subject: [PATCH 12/14] patch 7.4.921 Problem: Missing proto file update. (Randall W. Morris) Solution: Add the missing line for mch_ishidden. --- src/proto/os_win32.pro | 1 + src/version.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/proto/os_win32.pro b/src/proto/os_win32.pro index cbabe3a9f1..1431f69da5 100644 --- a/src/proto/os_win32.pro +++ b/src/proto/os_win32.pro @@ -19,6 +19,7 @@ int mch_dirname __ARGS((char_u *buf, int len)); long mch_getperm __ARGS((char_u *name)); int mch_setperm __ARGS((char_u *name, long perm)); void mch_hide __ARGS((char_u *name)); +int mch_ishidden __ARGS((char_u *name)); int mch_isdir __ARGS((char_u *name)); int mch_mkdir __ARGS((char_u *name)); int mch_is_hard_link __ARGS((char_u *fname)); diff --git a/src/version.c b/src/version.c index eb418a7052..3792aa05b0 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 921, /**/ 920, /**/ From 1c2836e268ce930bca9ea1287d0d83e92ce1b3ff Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 21:05:48 +0100 Subject: [PATCH 13/14] patch 7.4.922 Problem: Leaking memory with ":helpt {dir-not-exists}". Solution: Free dirname. (Dominique Pelle) --- src/ex_cmds.c | 1 + src/version.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/ex_cmds.c b/src/ex_cmds.c index b23f158f4f..c2b600c5b6 100644 --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -6574,6 +6574,7 @@ ex_helptags(eap) if (dirname == NULL || !mch_isdir(dirname)) { EMSG2(_("E150: Not a directory: %s"), eap->arg); + vim_free(dirname); return; } diff --git a/src/version.c b/src/version.c index 3792aa05b0..73c1b8f64e 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 922, /**/ 921, /**/ From b4ff518d95aa57c2f8c0568c915035bef849581b Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 10 Nov 2015 21:15:48 +0100 Subject: [PATCH 14/14] Updated runtime files. --- runtime/doc/diff.txt | 6 +- runtime/doc/if_pyth.txt | 4 +- runtime/doc/options.txt | 24 ++--- runtime/doc/quickref.txt | 7 +- runtime/doc/syntax.txt | 5 +- runtime/doc/tags | 14 ++- runtime/doc/todo.txt | 61 +++++++----- runtime/doc/vi_diff.txt | 2 +- runtime/indent/yaml.vim | 4 +- runtime/syntax/cpp.vim | 14 ++- runtime/syntax/remind.vim | 20 ++-- runtime/syntax/sh.vim | 190 ++++++++++++++++++-------------------- runtime/syntax/tex.vim | 164 ++++++++++++++++---------------- runtime/syntax/vim.vim | 69 ++++++++------ 14 files changed, 318 insertions(+), 266 deletions(-) diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt index beb0137dbc..db7e4e859a 100644 --- a/runtime/doc/diff.txt +++ b/runtime/doc/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 7.4. Last change: 2015 Jul 03 +*diff.txt* For Vim version 7.4. Last change: 2015 Nov 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -182,8 +182,8 @@ hidden buffers. You can use ":hide" to close a window without unloading the buffer. If you don't want a buffer to remain used for the diff do ":set nodiff" before hiding it. - *:diffu* *:diffupdate* -:diffu[pdate][!] Update the diff highlighting and folds. + *:dif* *:diffupdate* +:dif[fupdate][!] Update the diff highlighting and folds. Vim attempts to keep the differences updated when you make changes to the text. This mostly takes care of inserted and deleted lines. Changes within a diff --git a/runtime/doc/if_pyth.txt b/runtime/doc/if_pyth.txt index 3d066e33ee..cc47beb27e 100644 --- a/runtime/doc/if_pyth.txt +++ b/runtime/doc/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.4. Last change: 2015 Oct 16 +*if_pyth.txt* For Vim version 7.4. Last change: 2015 Nov 10 VIM REFERENCE MANUAL by Paul Moore @@ -693,7 +693,7 @@ The name of the DLL must match the Python version Vim was compiled with. Currently the name is "python24.dll". That is for Python 2.4. To know for sure edit "gvim.exe" and search for "python\d*.dll\c". -On Unix the 'pythondll' or 'python3dll' option can be used to specify the +On Unix the 'pythondll' or 'pythonthreedll' option can be used to specify the Python shared library file instead of DYNAMIC_PYTHON_DLL or DYNAMIC_PYTHON3_DLL file what were specified at compile time. The version of the shared library must match the Python 2.x or Python 3 version Vim was diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index c987545eae..413353c426 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.4. Last change: 2015 Nov 01 +*options.txt* For Vim version 7.4. Last change: 2015 Nov 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -5698,17 +5698,6 @@ A jump table for the options with a short description can be found at |Q_op|. Insert mode completion. When zero as much space as available is used. |ins-completion-menu|. - *'pythonthreedll'* -'pythonthreedll' string (default empty) - global - {not in Vi} {only for Unix} - {only available when compiled with the |+python3/dyn| - feature} - Specifies the path of the Python 3 shared library instead of - DYNAMIC_PYTHON3_DLL what was specified at compile time. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. - *'pythondll'* 'pythondll' string (default empty) global @@ -5718,6 +5707,17 @@ A jump table for the options with a short description can be found at |Q_op|. Specifies the path of the Python 2.x shared library instead of DYNAMIC_PYTHON_DLL what was specified at compile time. This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + + *'pythonthreedll'* +'pythonthreedll' string (default empty) + global + {not in Vi} {only for Unix} + {only available when compiled with the |+python3/dyn| + feature} + Specifies the path of the Python 3 shared library instead of + DYNAMIC_PYTHON3_DLL what was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. *'quoteescape'* *'qe'* diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt index a2128297f9..e275c4383d 100644 --- a/runtime/doc/quickref.txt +++ b/runtime/doc/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.4. Last change: 2015 Jul 21 +*quickref.txt* For Vim version 7.4. Last change: 2015 Nov 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -777,6 +777,7 @@ Short explanation of each option: *option-list* 'list' show and 'listchars' 'lcs' characters for displaying in list mode 'loadplugins' 'lpl' load plugin scripts when starting up +'luadll' name of the Lua dynamic library 'macatsui' Mac GUI: use ATSUI text drawing 'magic' changes special characters in search patterns 'makeef' 'mef' name of the errorfile for ":make" @@ -816,6 +817,7 @@ Short explanation of each option: *option-list* 'patchexpr' 'pex' expression used to patch a file 'patchmode' 'pm' keep the oldest version of a file 'path' 'pa' list of directories searched with "gf" et.al. +'perldll' name of the Perl dynamic library 'preserveindent' 'pi' preserve the indent structure when reindenting 'previewheight' 'pvh' height of the preview window 'previewwindow' 'pvw' identifies the preview window @@ -828,6 +830,8 @@ Short explanation of each option: *option-list* 'printmbfont' 'pmbfn' font names to be used for CJK output of :hardcopy 'printoptions' 'popt' controls the format of :hardcopy output 'pumheight' 'ph' maximum height of the popup menu +'pythondll' name of the Python 2 dynamic library +'pythonthreedll' name of the Python 3 dynamic library 'quoteescape' 'qe' escape characters used in a string 'readonly' 'ro' disallow writing the buffer 'redrawtime' 'rdt' timeout for 'hlsearch' and |:match| highlighting @@ -840,6 +844,7 @@ Short explanation of each option: *option-list* 'revins' 'ri' inserting characters will work backwards 'rightleft' 'rl' window is right-to-left oriented 'rightleftcmd' 'rlc' commands for which editing works right-to-left +'rubydll' name of the Ruby dynamic library 'ruler' 'ru' show cursor line and column in the status line 'rulerformat' 'ruf' custom format for the ruler 'runtimepath' 'rtp' list of directories used for runtime files diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 0e71a39e86..7c676db99d 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.4. Last change: 2015 Oct 17 +*syntax.txt* For Vim version 7.4. Last change: 2015 Nov 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1082,6 +1082,7 @@ Most of things are same as |ft-c-syntax|. Variable Highlight ~ cpp_no_cpp11 don't highlight C++11 standard items +cpp_no_cpp14 don't highlight C++14 standard items CSH *csh.vim* *ft-csh-syntax* @@ -4165,7 +4166,7 @@ example, for instance, can be done like this: > As can be seen here, the \z actually does double duty. In the start pattern, it marks the "\(\I\i*\)" sub-expression as external; in the end pattern, it -changes the \1 back-reference into an external reference referring to the +changes the \z1 back-reference into an external reference referring to the first external sub-expression in the start pattern. External references can also be used in skip patterns: > :syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1" diff --git a/runtime/doc/tags b/runtime/doc/tags index 9b2a73b35a..fb6d5aa4eb 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -415,6 +415,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* 'lpl' options.txt /*'lpl'* 'ls' options.txt /*'ls'* 'lsp' options.txt /*'lsp'* +'luadll' options.txt /*'luadll'* 'lw' options.txt /*'lw'* 'lz' options.txt /*'lz'* 'ma' options.txt /*'ma'* @@ -499,6 +500,8 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* 'nobk' options.txt /*'nobk'* 'nobl' options.txt /*'nobl'* 'nobomb' options.txt /*'nobomb'* +'nobreakindent' options.txt /*'nobreakindent'* +'nobri' options.txt /*'nobri'* 'nobuflisted' options.txt /*'nobuflisted'* 'nocf' options.txt /*'nocf'* 'noci' options.txt /*'noci'* @@ -549,6 +552,8 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* 'nofk' options.txt /*'nofk'* 'nofkmap' options.txt /*'nofkmap'* 'nofoldenable' options.txt /*'nofoldenable'* +'nofs' options.txt /*'nofs'* +'nofsync' options.txt /*'nofsync'* 'nogd' options.txt /*'nogd'* 'nogdefault' options.txt /*'nogdefault'* 'noguipty' options.txt /*'noguipty'* @@ -575,11 +580,13 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* 'nois' options.txt /*'nois'* 'nojoinspaces' options.txt /*'nojoinspaces'* 'nojs' options.txt /*'nojs'* +'nolangnoremap' options.txt /*'nolangnoremap'* 'nolazyredraw' options.txt /*'nolazyredraw'* 'nolbr' options.txt /*'nolbr'* 'nolinebreak' options.txt /*'nolinebreak'* 'nolisp' options.txt /*'nolisp'* 'nolist' options.txt /*'nolist'* +'nolnr' options.txt /*'nolnr'* 'noloadplugins' options.txt /*'noloadplugins'* 'nolpl' options.txt /*'nolpl'* 'nolz' options.txt /*'nolz'* @@ -727,6 +734,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* 'path' options.txt /*'path'* 'pdev' options.txt /*'pdev'* 'penc' options.txt /*'penc'* +'perldll' options.txt /*'perldll'* 'pex' options.txt /*'pex'* 'pexpr' options.txt /*'pexpr'* 'pfn' options.txt /*'pfn'* @@ -753,6 +761,8 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* 'pumheight' options.txt /*'pumheight'* 'pvh' options.txt /*'pvh'* 'pvw' options.txt /*'pvw'* +'pythondll' options.txt /*'pythondll'* +'pythonthreedll' options.txt /*'pythonthreedll'* 'qe' options.txt /*'qe'* 'quote motion.txt /*'quote* 'quoteescape' options.txt /*'quoteescape'* @@ -779,6 +789,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* 'rs' options.txt /*'rs'* 'rtp' options.txt /*'rtp'* 'ru' options.txt /*'ru'* +'rubydll' options.txt /*'rubydll'* 'ruf' options.txt /*'ruf'* 'ruler' options.txt /*'ruler'* 'rulerformat' options.txt /*'rulerformat'* @@ -2132,6 +2143,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* :delm motion.txt /*:delm* :delmarks motion.txt /*:delmarks* :di change.txt /*:di* +:dif diff.txt /*:dif* :diffg diff.txt /*:diffg* :diffget diff.txt /*:diffget* :diffo diff.txt /*:diffo* @@ -2144,7 +2156,6 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* :diffsplit diff.txt /*:diffsplit* :difft diff.txt /*:difft* :diffthis diff.txt /*:diffthis* -:diffu diff.txt /*:diffu* :diffupdate diff.txt /*:diffupdate* :dig digraph.txt /*:dig* :digraphs digraph.txt /*:digraphs* @@ -6867,6 +6878,7 @@ lua if_lua.txt /*lua* lua-buffer if_lua.txt /*lua-buffer* lua-commands if_lua.txt /*lua-commands* lua-dict if_lua.txt /*lua-dict* +lua-dynamic if_lua.txt /*lua-dynamic* lua-eval if_lua.txt /*lua-eval* lua-funcref if_lua.txt /*lua-funcref* lua-list if_lua.txt /*lua-list* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index c0582c12ae..1eb377615b 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 7.4. Last change: 2015 Oct 31 +*todo.txt* For Vim version 7.4. Last change: 2015 Nov 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -35,6 +35,8 @@ not be repeated below, unless there is extra information. -------------------- Known bugs and current work ----------------------- Regexp problems: +- Instructions for reproducing issue #465 (crash in nfa_regtry): + https://github.com/mgedmin/vim-bug-465 - The regexp engines are not reentrant, causing havoc when interrupted by a remote expression or something else. Move global variables onto the stack or into an allocated struct. @@ -75,6 +77,12 @@ Regexp problems: - The pattern "\1" with the old engine gives E65, with the new engine it matches the empty string. (Dominique Pelle, 2015 Oct 2) +runtime/optwin.vim missing options: +rubydll +pythondll +perldll +luadll + Still using freed memory after using setloclist(). (lcd, 2014 Jul 23) More info Jul 24. Not clear why. @@ -83,6 +91,20 @@ work. (ZyX, 2013 Sep 28) Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15) +When running out of memory, lalloc() invokes the garbage collector. +May cause freeing used memory. Just remove that call? +Or add flag to avoid it when undesired. + +Installation of .desktop files does not work everywhere. +It's now fixed, but the target directory probably isn't right. +Add configure check? +Should use /usr/local/share/applications or /usr/share/applications. +Or use $XDG_DATA_DIRS. +Also need to run update-desktop-database (Kuriyama Kazunobu, 2015 Nov 4) + +Access to uninitialized memory in match_backref() regexp_nda.c:4882 +(Dominique Pelle, 2015 Nov 6) + Netrw update. (Charles 2015 Oct 23) Patch to use local value of 'errorformat' in :cexpr. (Christian Brabandt, @@ -96,8 +118,6 @@ directory exists. (Sergio Gallelli, 2013 Dec 29) Updated syntax files. (Charles Campbell, 2015 Oct 19) -Patch to include .desktop files in the distribution. PR #455. - Better changelog syntax file. (Martin Florian, 2015 Oct 25) Better readline syntax file. (Raphael Bazaud, 2015 Oct 25) @@ -112,19 +132,10 @@ changes the window layout and the current window. Make a variant that saves and restores. Use in the matchparen plugin. Perhaps we can use ":silent window"? -Patch for documentation mistakes. (Hirohito Higashi, 2015 Oct 22) - Illegal memory access, requires ASAN to see. (Dominique Pelle, 2015 Jul 28) Gvim: when both Tab and CTRL-I are mapped, use CTRL-I not for Tab. -Patch for yaml indent, #458. - -Patch for Python to add isatty, readable, etc. (PR #464) - -Patch to add options for specifying dll names. (Kazuki Sakamoto, 2015 Oct 16) -PR #452 Check if it's secure (can't set from modeline). - Unexpected delay when using CTRL-O u. It's not timeoutlen. (Gary Johnson, 2015 Aug 28) @@ -133,9 +144,23 @@ Same for src/xxd/Make_cyg.mak Python: ":py raw_input('prompt')" doesn't work. (Manu Hack) +Patch to fix memory leak. (Dominique Pelle, 2015 Nov 4) + +Using uninitialized memory. (Dominique Pelle, 2015 Nov 4) + +Patch to recognize string slice for variable followed by colon. +(Hirohito Higashi, 2015 Nov 3) + +Patch to support hangul input with utf-8. + +Patch to support UTF-8 for Hangul. (Shawn Y.H. Kim, 2011 May 1) +Needs more work. Pinged 2012 Jan 4. + Patch to add debug backtrace. (Alberto Fanjul, 2015 Sep 27) Asked for :frame command. +vt52 terminal codes are not correct. Patch from Random, 2015 Nov 5. + MS-Windows: When editing a file with a leading space, writing it uses the wrong name. (Aram, 2014 Nov 7) Vim 7.4. @@ -143,7 +168,7 @@ Can't recognize the $ProgramFiles(x86) environment variable. Recognize it specifically? First try with the parens, then without. Patch to add 'tagcase' option, whether to ignore case for tags. -(Gary Johnson, 2015 Oct 17) +(Gary Johnson, 2015 Nov 6) Patch to fix "." after CTRL-A in Visual block mode. (Ozaki Kiichi, 2015 Oct 24) @@ -196,6 +221,8 @@ Example in editing.txt uses $HOME with the expectating that it ends in a slash. For me it does, but perhaps not for everybody. Add a function that inserts a slash when needed? pathconcat(dir, path) (Thilo Six, 2015 Aug 12) +Patch to load TCL dynamically. (Ken Takata, 2015 Nov 10) + ml_updatechunk() is slow when retrying for another encoding. (John Little, 2014 Sep 11) @@ -222,9 +249,6 @@ Is this right? Patch to have CTRL-A and CTRL-X update the '[ and '] marks. (Yukihiro Nakadaira, 2015 Aug 23) -On MS-Windows viminfo file is always given the hidden attribute? (raulnac, -2015 Oct 30) - Patch to make getregtype() return the right size for non-linux systems. (Yasuhiro Matsumoto, 2014 Jul 8) Breaks test_eval. Inefficient, can we only compute y_width when needed? @@ -409,8 +433,6 @@ from? Problem with upwards search on Windows (works OK on Linux). (Brett Stahlman, 2014 Jun 8) -Patch to load TCL dynamically. (Ken Takata, 2014 Sep 20) - Include a plugin manager with Vim? Neobundle seems to be the best currently. Long message about this from ZyX, 2014 Mar 23. And following replies. Also see http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html @@ -803,9 +825,6 @@ Only for MS-Windows. No documentation. Do we want this? Patch to support cursor shape in Cygwin console. (Ben bgold, 2011 Dec 27) -Patch to support UTF-8 for Hangul. (Shawn Y.H. Kim, 2011 May 1) -Needs more work. Pinged 2012 Jan 4. - Issue 64: when 'incsearch' is on can't paste LF on command line. On MS-Windows a temp dir with a & init causes system() to fail. (Ben Fritz, diff --git a/runtime/doc/vi_diff.txt b/runtime/doc/vi_diff.txt index aadbf9b419..2a7bbe4672 100644 --- a/runtime/doc/vi_diff.txt +++ b/runtime/doc/vi_diff.txt @@ -1,4 +1,4 @@ -*vi_diff.txt* For Vim version 7.4. Last change: 2013 Aug 22 +*vi_diff.txt* For Vim version 7.4. Last change: 2015 Nov 01 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/runtime/indent/yaml.vim b/runtime/indent/yaml.vim index 95a53b1386..aa4906ce0a 100644 --- a/runtime/indent/yaml.vim +++ b/runtime/indent/yaml.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: YAML " Maintainer: Nikolai Pavlov -" Last Change: 2015 Sep 25 +" Last Change: 2015 Nov 01 " Only load this indent file when no other was loaded. if exists('b:did_indent') @@ -14,7 +14,7 @@ set cpo&vim let b:did_indent = 1 setlocal indentexpr=GetYAMLIndent(v:lnum) -setlocal indentkeys=!^F,o,O,0#,0},0],<:>,- +setlocal indentkeys=!^F,o,O,0#,0},0],<:>,0- setlocal nosmartindent let b:undo_indent = 'setlocal indentexpr< indentkeys< smartindent<' diff --git a/runtime/syntax/cpp.vim b/runtime/syntax/cpp.vim index 135b8c9244..c7a68388be 100644 --- a/runtime/syntax/cpp.vim +++ b/runtime/syntax/cpp.vim @@ -2,7 +2,7 @@ " Language: C++ " Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp) " Previous Maintainer: Ken Shan -" Last Change: 2015 May 04 +" Last Change: 2015 Nov 10 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -23,7 +23,8 @@ endif " C++ extensions syn keyword cppStatement new delete this friend using syn keyword cppAccess public protected private -syn keyword cppType inline virtual explicit export bool wchar_t +syn keyword cppModifier inline virtual explicit export +syn keyword cppType bool wchar_t syn keyword cppExceptions throw try catch syn keyword cppOperator operator typeid syn keyword cppOperator and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq @@ -36,7 +37,8 @@ syn keyword cppConstant __cplusplus " C++ 11 extensions if !exists("cpp_no_cpp11") - syn keyword cppType override final + syn keyword cppModifier override final + syn keyword cppType nullptr_t syn keyword cppExceptions noexcept syn keyword cppStorageClass constexpr decltype thread_local syn keyword cppConstant nullptr @@ -49,6 +51,11 @@ if !exists("cpp_no_cpp11") syn region cppRawString matchgroup=cppRawStringDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell endif +" C++ 14 extensions +if !exists("cpp_no_cpp14") + syn match cppNumber display "\<0b[01]\+\(u\=l\{0,2}\|ll\=u\)\>" +endif + " The minimum and maximum operators in GNU C++ syn match cppMinMax "[<>]?" @@ -65,6 +72,7 @@ if version >= 508 || !exists("did_cpp_syntax_inits") HiLink cppExceptions Exception HiLink cppOperator Operator HiLink cppStatement Statement + HiLink cppModifier Type HiLink cppType Type HiLink cppStorageClass StorageClass HiLink cppStructure Structure diff --git a/runtime/syntax/remind.vim b/runtime/syntax/remind.vim index 93a7178479..98064e043a 100644 --- a/runtime/syntax/remind.vim +++ b/runtime/syntax/remind.vim @@ -1,13 +1,17 @@ " Vim syntax file " Language: Remind -" Maintainer: Davide Alberani -" Last Change: 18 Sep 2009 -" Version: 0.5 -" URL: http://erlug.linux.it/~da/vim/syntax/remind.vim +" Maintainer: Davide Alberani +" Last Change: 02 Nov 2015 +" Version: 0.7 +" URL: http://ismito.it/vim/syntax/remind.vim " -" remind is a sophisticated reminder service -" you can download remind from: -" http://www.roaringpenguin.com/penguin/open_source_remind.php +" Remind is a sophisticated calendar and alarm program. +" You can download remind from: +" https://www.roaringpenguin.com/products/remind +" +" Changelog +" version 0.7: updated email and link +" version 0.6: added THROUGH keyword (courtesy of Ben Orchard) if version < 600 syntax clear @@ -19,7 +23,7 @@ endif syn case ignore syn keyword remindCommands REM OMIT SET FSET UNSET -syn keyword remindExpiry UNTIL FROM SCANFROM SCAN WARN SCHED +syn keyword remindExpiry UNTIL FROM SCANFROM SCAN WARN SCHED THROUGH syn keyword remindTag PRIORITY TAG syn keyword remindTimed AT DURATION syn keyword remindMove ONCE SKIP BEFORE AFTER diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim index 60f23d2d83..830539428b 100644 --- a/runtime/syntax/sh.vim +++ b/runtime/syntax/sh.vim @@ -2,11 +2,11 @@ " Language: shell (sh) Korn shell (ksh) bash (sh) " Maintainer: Charles E. Campbell " Previous Maintainer: Lennart Schultz -" Last Change: Oct 09, 2015 -" Version: 139 +" Last Change: Oct 21, 2015 +" Version: 141 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH " For options and settings, please use: :help ft-sh-syntax -" This file includes many ideas from ?ric Brunet (eric.brunet@ens.fr) +" This file includes many ideas from Eric Brunet (eric.brunet@ens.fr) " For version 5.x: Clear all syntax items {{{1 " For version 6.x: Quit when a syntax file was already loaded @@ -16,17 +16,6 @@ elseif exists("b:current_syntax") finish endif -" AFAICT "." should be considered part of the iskeyword for ksh. Using iskeywords -" in syntax is dicey, so the following code permits the user to prevent/override -" g:sh_isk set to a string : specify iskeyword. -" g:sh_noisk exists : don't change iskeyword -" g:sh_noisk does not exist : (default) append "." to iskeyword for kornshell -if exists("g:sh_isk") && type(g:sh_isk) == 1 " user specifying iskeyword - exe "setl isk=".g:sh_isk -elseif !exists("g:sh_noisk") && exists("b:is_kornshell") " append '.' to iskeyword - setl isk+=. -endif - " trying to answer the question: which shell is /bin/sh, really? " If the user has not specified any of g:is_kornshell, g:is_bash, g:is_posix, g:is_sh, then guess. if !exists("g:is_kornshell") && !exists("g:is_bash") && !exists("g:is_posix") && !exists("g:is_sh") @@ -73,6 +62,7 @@ if !exists("b:is_kornshell") && !exists("b:is_bash") endif " set up default g:sh_fold_enabled {{{1 +" ================================ if !exists("g:sh_fold_enabled") let g:sh_fold_enabled= 0 elseif g:sh_fold_enabled != 0 && !has("folding") @@ -95,6 +85,24 @@ if g:sh_fold_enabled && &fdm == "manual" setl fdm=syntax endif +" Set up folding commands for shell {{{1 +" ================================= +if s:sh_fold_functions + com! -nargs=* ShFoldFunctions fold +else + com! -nargs=* ShFoldFunctions +endif +if s:sh_fold_heredoc + com! -nargs=* ShFoldHereDoc fold +else + com! -nargs=* ShFoldHereDoc +endif +if s:sh_fold_ifdofor + com! -nargs=* ShFoldIfDoFor fold +else + com! -nargs=* ShFoldIfDoFor +endif + " sh syntax is case sensitive {{{1 syn case match @@ -126,9 +134,10 @@ syn cluster shHereList contains=shBeginHere,shHerePayload syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo -syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shForPP,shIf,shOption,shSet,shTest,shTestOpr +syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shForPP,shIf,shOption,shSet,shTest,shTestOpr,shTouch syn cluster shSubShList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator syn cluster shTestList contains=shCharClass,shCommandSub,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr + " Echo: {{{1 " ==== " This one is needed INSIDE a CommandSub, so that `echo bla` be correct @@ -145,6 +154,11 @@ if exists("b:is_kornshell") || exists("b:is_bash") syn match shStatement "\" syn region shAlias matchgroup=shStatement start="\\s\+\(\h[-._[:alnum:]]\+\)\@=" skip="\\$" end="\>\|`" syn region shAlias matchgroup=shStatement start="\\s\+\(\h[-._[:alnum:]]\+=\)\@=" skip="\\$" end="=" + + " Touch: {{{1 + " ===== + syn match shTouch '\[^;#]*' skipwhite nextgroup=shTouchList contains=shTouchCmd + syn match shTouchCmd '\' contained endif " Error Codes: {{{1 @@ -193,15 +207,16 @@ syn region shSubSh transparent matchgroup=shSubShRegion start="[^(]\zs(" end=")" "======= syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial syn region shTest transparent matchgroup=shStatement start="\+ end="\<;\_s*then\>" end="\" contains=@shIfList - syn region shFor fold matchgroup=shLoop start="\+ end="\<;\_s*then\>" end="\" contains=@shIfList - syn region shFor matchgroup=shLoop start="\+ end="\<;\_s*then\>" end="\" contains=@shIfList +ShFoldIfDoFor syn region shFor matchgroup=shLoop start="\ -" Last Change: Oct 19, 2015 -" Version: 89 +" Last Change: Oct 20, 2015 +" Version: 90 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX " " Notes: {{{1 @@ -62,11 +62,6 @@ if version >= 508 || !exists("did_tex_syntax_inits") command -nargs=+ HiLink hi def link endif endif -if exists("g:tex_no_error") && g:tex_no_error - let s:tex_no_error= 1 -else - let s:tex_no_error= 0 -endif " by default, enable all region-based highlighting let s:tex_fast= "bcmMprsSvV" @@ -78,8 +73,6 @@ if exists("g:tex_fast") else let s:tex_fast= g:tex_fast endif -else - let s:tex_fast= "bcmMprsSvV" endif " let user determine which classes of concealment will be supported @@ -114,15 +107,17 @@ endif " handle folding {{{1 if !exists("g:tex_fold_enabled") - let g:tex_fold_enabled= 0 + let s:tex_fold_enabled= 0 elseif g:tex_fold_enabled && !has("folding") - let g:tex_fold_enabled= 0 + let s:tex_fold_enabled= 0 echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support" +else + let s:tex_fold_enabled= 1 endif -if g:tex_fold_enabled && &fdm == "manual" +if s:tex_fold_enabled && &fdm == "manual" setl fdm=syntax endif -if g:tex_fold_enabled && has("folding") +if s:tex_fold_enabled && has("folding") com! -nargs=* TexFold fold else com! -nargs=* TexFold @@ -140,41 +135,53 @@ endif if b:tex_stylish setlocal isk+=@-@ endif -if exists("g:tex_nospell") && g:tex_nospell && !exists("g:tex_comment_nospell") - let g:tex_comment_nospell= 1 +if exists("g:tex_no_error") && g:tex_no_error + let s:tex_no_error= 1 +else + let s:tex_no_error= 0 +endif +if exists("g:tex_comment_nospell") && g:tex_comment_nospell + let s:tex_comment_nospell= 1 +else + let s:tex_comment_nospell= 0 +endif +if exists("g:tex_nospell") && g:tex_nospell + let s:tex_nospell = 1 +else + let s:tex_nospell = 0 endif " Clusters: {{{1 " -------- -syn cluster texCmdGroup contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texBeginEnd,texBeginEndName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle +syn cluster texCmdGroup contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texBeginEnd,texBeginEndName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle if !s:tex_no_error - syn cluster texCmdGroup add=texMathError + syn cluster texCmdGroup add=texMathError endif -syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement -syn cluster texFoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texItalStyle,texNoSpell -syn cluster texBoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texBoldItalStyle,texNoSpell -syn cluster texItalGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texItalStyle,texItalBoldStyle,texNoSpell -if !exists("g:tex_nospell") || !g:tex_nospell - syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,@Spell - syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,@Spell,texStyleMatcher +syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement +syn cluster texFoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texItalStyle,texNoSpell +syn cluster texBoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texBoldItalStyle,texNoSpell +syn cluster texItalGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texItalStyle,texItalBoldStyle,texNoSpell +if !s:tex_nospell + syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,@Spell + syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,@Spell,texStyleMatcher else - syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption - syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher + syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption + syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher endif syn cluster texPreambleMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTitle,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texMathZoneZ -syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter +syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter if !exists("g:tex_no_math") -syn cluster texPreambleMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTitle,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texMathZoneZ - syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ - syn cluster texMatchGroup add=@texMathZones - syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2 - syn cluster texMathMatchGroup contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone - syn cluster texMathZoneGroup contains=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle + syn cluster texPreambleMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTitle,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texMathZoneZ + syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ + syn cluster texMatchGroup add=@texMathZones + syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2 + syn cluster texMathMatchGroup contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone + syn cluster texMathZoneGroup contains=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle if !s:tex_no_error - syn cluster texMathMatchGroup add=texMathError - syn cluster texMathZoneGroup add=texMathError + syn cluster texMathMatchGroup add=texMathError + syn cluster texMathZoneGroup add=texMathError endif - syn cluster texMathZoneGroup add=@NoSpell + syn cluster texMathZoneGroup add=@NoSpell " following used in the \part \chapter \section \subsection \subsubsection " \paragraph \subparagraph \author \title highlighting syn cluster texDocGroup contains=texPartZone,@texPartGroup @@ -185,24 +192,24 @@ syn cluster texPreambleMatchGroup contains=texAccent,texBadMath,texComment,texDe syn cluster texSubSubSectionGroup contains=texParaZone syn cluster texParaGroup contains=texSubParaZone if has("conceal") && &enc == 'utf-8' - syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol - syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol + syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol + syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol endif endif " Try to flag {} and () mismatches: {{{1 if s:tex_fast =~ 'm' if !s:tex_no_error - syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup,texError - syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup,texError,@NoSpell + syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError + syn region texMatcher matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell else - syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup - syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup + syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup + syn region texMatcher matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchGroup endif - if !exists("g:tex_nospell") || !g:tex_nospell - syn region texParen start="(" end=")" contains=@texMatchGroup,@Spell + if !s:tex_nospell + syn region texParen start="(" end=")" transparent contains=@texMatchGroup,@Spell else - syn region texParen start="(" end=")" contains=@texMatchGroup + syn region texParen start="(" end=")" transparent contains=@texMatchGroup endif endif if !s:tex_no_error @@ -213,7 +220,7 @@ if s:tex_fast =~ 'M' if !s:tex_no_error syn match texMathError "}" contained endif - syn region texMathMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup + syn region texMathMatcher matchgroup=Delimiter start="{" skip="\%(\\\\\)*\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup endif endif @@ -232,7 +239,6 @@ endif " TeX/LaTeX delimiters: {{{1 syn match texDelimiter "&" syn match texDelimiter "\\\\" -" syn match texDelimiter "[{}]" " Tex/Latex Options: {{{1 syn match texOption "[^\\]\zs#\d\+\|^#\d\+" @@ -253,7 +259,7 @@ syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$" " \begin{}/\end{} section markers: {{{1 syn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName if s:tex_fast =~ 'm' - syn region texBeginEndName matchgroup=Delimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment + syn region texBeginEndName matchgroup=Delimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment syn region texBeginEndModifier matchgroup=Delimiter start="\[" end="]" contained contains=texComment,@NoSpell endif @@ -264,7 +270,7 @@ if s:tex_fast =~ 'm' endif " Preamble syntax-based folding support: {{{1 -if g:tex_fold_enabled && has("folding") +if s:tex_fold_enabled && has("folding") syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texPreambleMatchGroup endif @@ -342,28 +348,28 @@ syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained " Sections, subsections, etc: {{{1 if s:tex_fast =~ 'p' - if !exists("g:tex_nospell") || !g:tex_nospell - TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell - TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell - TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell - TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell - TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell - TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell - TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup,@Spell - TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@Spell - TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell - TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell - else - TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup - TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup - TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup - TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup - TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup - TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup - TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup - TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup - TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup - TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup + if !s:tex_nospell + TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell + TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell + TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell + TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell + TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell + TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell + TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup,@Spell + TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@Spell + TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell + TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell + else + TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup + TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup + TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup + TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup + TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup + TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup + TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup + TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup + TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup + TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup endif endif @@ -400,7 +406,7 @@ if !exists("g:tex_no_math") fun! TexNewMathZone(sfx,mathzone,starform) let grpname = "texMathZone".a:sfx let syncname = "texSyncMathZone".a:sfx - if g:tex_fold_enabled + if s:tex_fold_enabled let foldcmd= " fold" else let foldcmd= "" @@ -449,7 +455,7 @@ if !exists("g:tex_no_math") else syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup - syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup + syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\%(\\\\\)*\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup endif syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup @@ -544,7 +550,7 @@ endif " Comments: {{{1 " Normal TeX LaTeX : %.... " Documented TeX Format: ^^A... -and- leading %s (only) -if !exists("g:tex_comment_nospell") || !g:tex_comment_nospell +if !s:tex_comment_nospell syn cluster texCommentGroup contains=texTodo,@Spell else syn cluster texCommentGroup contains=texTodo,@NoSpell @@ -556,18 +562,18 @@ if s:extfname == "dtx" syn match texComment "\^\^A.*$" contains=@texCommentGroup syn match texComment "^%\+" contains=@texCommentGroup else - if g:tex_fold_enabled + if s:tex_fold_enabled " allows syntax-folding of 2 or more contiguous comment lines " single-line comments are not folded - syn match texComment "%.*$" contains=@texCommentGroup + syn match texComment "%.*$" contains=@texCommentGroup if s:tex_fast =~ 'c' - TexFold syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' - TexFold syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell + TexFold syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' contains=@texCommentGroup + TexFold syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell endif else syn match texComment "%.*$" contains=@texCommentGroup if s:tex_fast =~ 'c' - syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell + syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell endif endif endif diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index d90d8843b6..beb955ca0d 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -2,7 +2,7 @@ " Language: Vim 7.4 script " Maintainer: Charles E. Campbell " Last Change: October 19, 2015 -" Version: 7.4-35 +" Version: 7.4-36 " Automatically generated keyword lists: {{{1 " Quit when a syntax file was already loaded {{{2 @@ -157,7 +157,7 @@ syn match vimNumber "\<0[xX]\x\+" syn match vimNumber "\%(^\|[^a-zA-Z]\)\zs#\x\{6}" " All vimCommands are contained by vimIsCommands. {{{2 -syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd +syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd syn match vimIsCommand "\<\h\w*\>" contains=vimCommand syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>" syn match vimVar "\<[bwglsav]:\h[a-zA-Z0-9#_]*\>" @@ -190,8 +190,12 @@ syn keyword vimFTOption contained detect indent off on plugin " Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2 " ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking. syn cluster vimAugroupList contains=vimAugroup,vimIsCommand,vimCommand,vimUserCmd,vimExecute,vimNotFunc,vimFuncName,vimFunction,vimFunctionError,vimLineComment,vimMap,vimSpecFile,vimOper,vimNumber,vimOperParen,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue -VimFolda syn region vimAugroup matchgroup=vimStatement start="\\)\@3\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList -syn match vimAugroup "aug\%[roup]!" contains=vimAugroupKey +if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'a' + syn region vimAugroup fold matchgroup=vimAugroupKey start="\\ze\s\+\K\k*" end="\\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList +else + syn region vimAugroup matchgroup=vimAugroupKey start="\\ze\s\+\K\k*" end="\\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList +endif +syn match vimAugroup "aug\%[roup]!" contains=vimAugroupKey if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror") syn match vimAugroupError "\\s\+[eE][nN][dD]\>" endif @@ -199,12 +203,11 @@ syn keyword vimAugroupKey contained aug[roup] " Operators: {{{2 " ========= -" COMBAK: vimOperParen used to have "oneline" syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue syn match vimOper "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup -syn region vimOperParen matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar +syn region vimOperParen matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror") syn match vimOperError ")" endif @@ -212,11 +215,15 @@ endif " Functions : Tag is provided for those who wish to highlight tagged functions {{{2 " ========= syn cluster vimFuncList contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID -syn cluster vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimHighlight,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand +syn cluster vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimGlobal,vimHighlight,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand syn match vimFunction "\\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody -VimFoldf syn region vimFuncBody contained start="\ze(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList -syn match vimFuncVar contained "a:\(\h\w*\|\d\+\)" +if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'f' + syn region vimFuncBody contained fold start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList +else + syn region vimFuncBody contained start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList +endif +syn match vimFuncVar contained "a:\(\K\k*\|\d\+\)" syn match vimFuncSID contained "\c\|\.*$" contains=vimUserAttrb,vimUserCommand,@vimUserCmdList -syn match vimUserAttrb contained "-n\%[args]=[01*?+]" contains=vimUserAttrbKey,vimOper -syn match vimUserAttrb contained "-com\%[plete]=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError -syn match vimUserAttrb contained "-ra\%[nge]\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey -syn match vimUserAttrb contained "-cou\%[nt]=\d\+" contains=vimNumber,vimOper,vimUserAttrbKey -syn match vimUserAttrb contained "-bang\=\>" contains=vimOper,vimUserAttrbKey -syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey -syn match vimUserAttrb contained "-re\%[gister]\>" contains=vimOper,vimUserAttrbKey +syn match vimUserCmd "\.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList +syn match vimUserAttrbError contained "-\a\+\ze\s" +syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper +syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError +syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror") syn match vimUserCmdError contained "\S\+\>" endif @@ -318,7 +327,7 @@ syn match vimMark "\\)' syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar oneline syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar -syn match vimSetSep contained "[,:]" +syn match vimSetSep contained "[,:]" skipwhite nextgroup=vimCommand syn match vimSetMod contained "&vim\=\|[!&?<]\|all&" " Let {{{2 @@ -373,11 +382,11 @@ syn keyword vimMap mapc[lear] smapc[lear] syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs -syn match vimMapMod contained "\c<\(buffer\|expr\|\(local\)\=leader\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs +syn match vimMapMod contained "\c<\(buffer\|expr\|\(local\)\=leader\|nowait\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend -syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimNotation,vimCtrlChar,vimContinue skipnl nextgroup=vimMapRhsExtend +syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue syn case ignore -syn keyword vimMapModKey contained buffer expr leader localleader plug script sid silent unique +syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique syn case match " Menus {{{2 @@ -597,12 +606,12 @@ syn region vimGlobal matchgroup=Statement start='\\s\+[eE][nN][dD]" " Highlighting Settings {{{2 " ==================== - if !exists("g:vimsyn_noerror") hi def link vimBehaveError vimError hi def link vimCollClassErr vimError @@ -925,6 +935,7 @@ hi def link vimUserAttrbCmpltFunc Special hi def link vimUserAttrbCmplt vimSpecial hi def link vimUserAttrbKey vimOption hi def link vimUserAttrb vimSpecial +hi def link vimUserAttrbError Error hi def link vimUserCmdError Error hi def link vimUserCommand vimCommand hi def link vimUserFunc Normal