From 9100f70c5a3a4e95f9f76da170fcbd077545f8ef Mon Sep 17 00:00:00 2001 From: Daniel Mach Date: May 09 2012 07:27:39 +0000 Subject: Merge remote branch 'fedora/f17' into rhel-7.0 --- diff --git a/7.3.472 b/7.3.472 new file mode 100644 index 0000000..217b2fc --- /dev/null +++ b/7.3.472 @@ -0,0 +1,88 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.472 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.472 +Problem: Crash when using ":redraw" in a BufEnter autocommand and + switching to another tab. (驼峰) +Solution: Move triggering the the autocommands to after correcting the + option values. Also check the row value to be out of bounds. + (Christian Brabandt, Sergey Khorev) +Files: src/screen.c, src/window.c + + +*** ../vim-7.3.471/src/screen.c 2012-02-04 23:34:57.000000000 +0100 +--- src/screen.c 2012-03-16 18:59:20.000000000 +0100 +*************** +*** 5371,5376 **** +--- 5371,5382 ---- + # define CHAR_CELLS 1 + #endif + ++ /* Check for illegal row and col, just in case. */ ++ if (row >= Rows) ++ row = Rows - 1; ++ if (endcol > Columns) ++ endcol = Columns; ++ + # ifdef FEAT_CLIPBOARD + clip_may_clear_selection(row, row); + # endif +*** ../vim-7.3.471/src/window.c 2012-02-22 14:58:24.000000000 +0100 +--- src/window.c 2012-03-16 18:43:01.000000000 +0100 +*************** +*** 3676,3688 **** + win_enter_ext(tp->tp_curwin, FALSE, TRUE); + prevwin = next_prevwin; + +- #ifdef FEAT_AUTOCMD +- apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); +- +- if (old_curbuf != curbuf) +- apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); +- #endif +- + last_status(FALSE); /* status line may appear or disappear */ + (void)win_comp_pos(); /* recompute w_winrow for all windows */ + must_redraw = CLEAR; /* need to redraw everything */ +--- 3676,3681 ---- +*************** +*** 3712,3717 **** +--- 3705,3718 ---- + gui_may_update_scrollbars(); + #endif + ++ #ifdef FEAT_AUTOCMD ++ /* Apply autocommands after updating the display, when 'rows' and ++ * 'columns' have been set correctly. */ ++ apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); ++ if (old_curbuf != curbuf) ++ apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); ++ #endif ++ + redraw_all_later(CLEAR); + } + +*** ../vim-7.3.471/src/version.c 2012-03-16 14:32:10.000000000 +0100 +--- src/version.c 2012-03-16 19:02:53.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 472, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +200. You really believe in the concept of a "paperless" office. + + /// 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/7.3.473 b/7.3.473 new file mode 100644 index 0000000..571f85d --- /dev/null +++ b/7.3.473 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.473 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.473 +Problem: 'cursorbind' does not work correctly in combination with + 'virtualedit' set to "all". +Solution: Copy coladd. (Gary Johnson) +Files: src/move.c + + +*** ../vim-7.3.472/src/move.c 2012-02-04 23:34:57.000000000 +0100 +--- src/move.c 2012-03-16 19:20:57.000000000 +0100 +*************** +*** 2843,2849 **** + do_check_cursorbind() + { + linenr_T line = curwin->w_cursor.lnum; +! colnr_T col = curwin->w_cursor.col; + win_T *old_curwin = curwin; + buf_T *old_curbuf = curbuf; + int restart_edit_save; +--- 2843,2852 ---- + do_check_cursorbind() + { + linenr_T line = curwin->w_cursor.lnum; +! colnr_T col = curwin->w_cursor.col; +! # ifdef FEAT_VIRTUALEDIT +! colnr_T coladd = curwin->w_cursor.coladd; +! # endif + win_T *old_curwin = curwin; + buf_T *old_curbuf = curbuf; + int restart_edit_save; +*************** +*** 2875,2880 **** +--- 2878,2886 ---- + # endif + curwin->w_cursor.lnum = line; + curwin->w_cursor.col = col; ++ # ifdef FEAT_VIRTUALEDIT ++ curwin->w_cursor.coladd = coladd; ++ # endif + + /* Make sure the cursor is in a valid position. Temporarily set + * "restart_edit" to allow the cursor to be beyond the EOL. */ +*** ../vim-7.3.472/src/version.c 2012-03-16 19:07:54.000000000 +0100 +--- src/version.c 2012-03-16 19:24:06.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 473, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +201. When somebody asks you where you are, you tell them in which chat room. + + /// 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/7.3.474 b/7.3.474 new file mode 100644 index 0000000..dc6b1d6 --- /dev/null +++ b/7.3.474 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.474 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.474 +Problem: Perl build with gcc 4 fails. +Solution: Remove XS() statements. (Yasuhiro Matsumoto) +Files: src/if_perl.xs + + +*** ../vim-7.3.473/src/if_perl.xs 2012-02-12 00:31:47.000000000 +0100 +--- src/if_perl.xs 2012-03-16 19:33:23.000000000 +0100 +*************** +*** 913,936 **** + win_T *win_find_nr(int n) { return curwin; } + #endif + +- XS(XS_VIM_Msg); +- XS(XS_VIM_SetOption); +- XS(XS_VIM_DoCommand); +- XS(XS_VIM_Eval); +- XS(XS_VIM_Buffers); +- XS(XS_VIM_Windows); +- XS(XS_VIWIN_DESTROY); +- XS(XS_VIWIN_Buffer); +- XS(XS_VIWIN_SetHeight); +- XS(XS_VIWIN_Cursor); +- XS(XS_VIBUF_DESTROY); +- XS(XS_VIBUF_Name); +- XS(XS_VIBUF_Number); +- XS(XS_VIBUF_Count); +- XS(XS_VIBUF_Get); +- XS(XS_VIBUF_Set); +- XS(XS_VIBUF_Delete); +- XS(XS_VIBUF_Append); + XS(boot_VIM); + + static void +--- 913,918 ---- +*** ../vim-7.3.473/src/version.c 2012-03-16 19:24:21.000000000 +0100 +--- src/version.c 2012-03-16 19:28:03.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 474, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +202. You're amazed to find out Spam is a food. + + /// 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/7.3.475 b/7.3.475 new file mode 100644 index 0000000..54c27a2 --- /dev/null +++ b/7.3.475 @@ -0,0 +1,98 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.475 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.475 +Problem: In a terminal with few colors the omnicomplete menu may be hard to + see when using the default colors. +Solution: Use more explicit colors. (suggested by Alex Henrie) +Files: src/syntax.c + + +*** ../vim-7.3.474/src/syntax.c 2012-01-10 22:26:12.000000000 +0100 +--- src/syntax.c 2012-03-16 20:14:22.000000000 +0100 +*************** +*** 6516,6523 **** + "DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red"), + #endif + #ifdef FEAT_INS_EXPAND +- CENT("PmenuThumb cterm=reverse", +- "PmenuThumb cterm=reverse gui=reverse"), + CENT("PmenuSbar ctermbg=Grey", + "PmenuSbar ctermbg=Grey guibg=Grey"), + #endif +--- 6516,6521 ---- +*************** +*** 6557,6566 **** + "SpellLocal term=underline ctermbg=Cyan guisp=DarkCyan gui=undercurl"), + #endif + #ifdef FEAT_INS_EXPAND +! CENT("Pmenu ctermbg=LightMagenta", +! "Pmenu ctermbg=LightMagenta guibg=LightMagenta"), +! CENT("PmenuSel ctermbg=LightGrey", +! "PmenuSel ctermbg=LightGrey guibg=Grey"), + #endif + CENT("SpecialKey term=bold ctermfg=DarkBlue", + "SpecialKey term=bold ctermfg=DarkBlue guifg=Blue"), +--- 6555,6566 ---- + "SpellLocal term=underline ctermbg=Cyan guisp=DarkCyan gui=undercurl"), + #endif + #ifdef FEAT_INS_EXPAND +! CENT("PmenuThumb ctermbg=Black", +! "PmenuThumb ctermbg=Black guibg=Black"), +! CENT("Pmenu ctermbg=LightMagenta ctermfg=Black", +! "Pmenu ctermbg=LightMagenta ctermfg=Black guibg=LightMagenta"), +! CENT("PmenuSel ctermbg=LightGrey ctermfg=Black", +! "PmenuSel ctermbg=LightGrey ctermfg=Black guibg=Grey"), + #endif + CENT("SpecialKey term=bold ctermfg=DarkBlue", + "SpecialKey term=bold ctermfg=DarkBlue guifg=Blue"), +*************** +*** 6645,6654 **** + "SpellLocal term=underline ctermbg=Cyan guisp=Cyan gui=undercurl"), + #endif + #ifdef FEAT_INS_EXPAND +! CENT("Pmenu ctermbg=Magenta", +! "Pmenu ctermbg=Magenta guibg=Magenta"), +! CENT("PmenuSel ctermbg=DarkGrey", +! "PmenuSel ctermbg=DarkGrey guibg=DarkGrey"), + #endif + CENT("Title term=bold ctermfg=LightMagenta", + "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"), +--- 6645,6656 ---- + "SpellLocal term=underline ctermbg=Cyan guisp=Cyan gui=undercurl"), + #endif + #ifdef FEAT_INS_EXPAND +! CENT("PmenuThumb ctermbg=White", +! "PmenuThumb ctermbg=White guibg=White"), +! CENT("Pmenu ctermbg=Magenta ctermfg=Black", +! "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta"), +! CENT("PmenuSel ctermbg=DarkGrey ctermfg=Black", +! "PmenuSel ctermbg=DarkGrey ctermfg=Black guibg=DarkGrey"), + #endif + CENT("Title term=bold ctermfg=LightMagenta", + "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"), +*** ../vim-7.3.474/src/version.c 2012-03-16 19:34:43.000000000 +0100 +--- src/version.c 2012-03-16 20:05:35.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 475, + /**/ + +-- +Spam seems to be something useful to novices. Later you realize that +it's a bunch of indigestable junk that only clogs your system. +Applies to both the food and the e-mail! + + /// 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/7.3.476 b/7.3.476 new file mode 100644 index 0000000..959b906 --- /dev/null +++ b/7.3.476 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.476 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.476 +Problem: When selecting a block, using "$" to include the end of each line + and using "A" and typing a backspace strange things happen. + (Yuangchen Xie) +Solution: Avoid using a negative length. (Christian Brabandt) +Files: src/ops.c + + +*** ../vim-7.3.475/src/ops.c 2012-03-07 19:30:32.000000000 +0100 +--- src/ops.c 2012-03-23 12:22:36.000000000 +0100 +*************** +*** 2602,2608 **** + firstline = ml_get(oap->start.lnum) + bd.textcol; + if (oap->op_type == OP_APPEND) + firstline += bd.textlen; +! if ((ins_len = (long)STRLEN(firstline) - pre_textlen) > 0) + { + ins_text = vim_strnsave(firstline, (int)ins_len); + if (ins_text != NULL) +--- 2602,2609 ---- + firstline = ml_get(oap->start.lnum) + bd.textcol; + if (oap->op_type == OP_APPEND) + firstline += bd.textlen; +! if (pre_textlen >= 0 +! && (ins_len = (long)STRLEN(firstline) - pre_textlen) > 0) + { + ins_text = vim_strnsave(firstline, (int)ins_len); + if (ins_text != NULL) +*** ../vim-7.3.475/src/version.c 2012-03-16 20:16:42.000000000 +0100 +--- src/version.c 2012-03-23 14:14:49.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 476, + /**/ + +-- +"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/7.3.477 b/7.3.477 new file mode 100644 index 0000000..8030ee6 --- /dev/null +++ b/7.3.477 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.477 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.477 +Problem: Using ":echo" to output enough lines to scroll, then using "j" and + "k" at the more prompt, displays the command on top of the output. + (Marcin Szamotulski) +Solution: Put the output below the command. (Christian Brabandt) +Files: src/eval.c + + +*** ../vim-7.3.476/src/eval.c 2012-03-07 19:16:49.000000000 +0100 +--- src/eval.c 2012-03-23 15:11:30.000000000 +0100 +*************** +*** 20492,20498 **** +--- 20492,20503 ---- + /* Call msg_start() after eval1(), evaluating the expression + * may cause a message to appear. */ + if (eap->cmdidx == CMD_echo) ++ { ++ /* Put the output below the command, makes scrolling back ++ * at more prompt work. */ ++ msg_didout = TRUE; + msg_start(); ++ } + } + else if (eap->cmdidx == CMD_echo) + msg_puts_attr((char_u *)" ", echo_attr); +*** ../vim-7.3.476/src/version.c 2012-03-23 14:16:19.000000000 +0100 +--- src/version.c 2012-03-23 15:13:58.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 477, + /**/ + +-- +"Marriage is when a man and woman become as one; the trouble starts +when they try to decide which one" + + /// 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/7.3.478 b/7.3.478 new file mode 100644 index 0000000..bad69ef --- /dev/null +++ b/7.3.478 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.478 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.478 +Problem: Memory leak using the ':rv!' command when reading dictionary or + list global variables i.e. with 'viminfo' containing !. +Solution: Free the typeval. (Dominique Pelle) +Files: src/eval.c + + +*** ../vim-7.3.477/src/eval.c 2012-03-23 15:18:20.000000000 +0100 +--- src/eval.c 2012-03-23 15:28:42.000000000 +0100 +*************** +*** 22976,22981 **** +--- 22976,22982 ---- + { + vim_free(tv.vval.v_string); + tv = *etv; ++ vim_free(etv); + } + } + +*** ../vim-7.3.477/src/version.c 2012-03-23 15:18:20.000000000 +0100 +--- src/version.c 2012-03-23 15:29:22.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 478, + /**/ + +-- +"Marriage is the process of finding out what kind of man your wife +would have preferred" + + /// 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/7.3.479 b/7.3.479 new file mode 100644 index 0000000..fc256c1 --- /dev/null +++ b/7.3.479 @@ -0,0 +1,134 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.479 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.479 +Problem: When 'cursorline' is set the line number highlighting can't be set + separately. +Solution: Add "CursorLineNr". (Howard Buchholz) +Files: src/option.c, src/screen.c, src/syntax.c, src/vim.h + + +*** ../vim-7.3.478/src/option.c 2012-02-29 13:51:32.000000000 +0100 +--- src/option.c 2012-03-23 15:44:57.000000000 +0100 +*************** +*** 460,468 **** + #if defined(FEAT_DIFF) || defined(FEAT_FOLDING) || defined(FEAT_SPELL) \ + || defined(FEAT_VERTSPLIT) || defined(FEAT_CLIPBOARD) \ + || defined(FEAT_INS_EXPAND) || defined(FEAT_SYN_HL) || defined(FEAT_CONCEAL) +! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn" + #else +! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,t:Title,v:Visual,w:WarningMsg,W:WildMenu,>:SignColumn,*:TabLine,#:TabLineSel,_:TabLineFill" + #endif + + /* +--- 460,468 ---- + #if defined(FEAT_DIFF) || defined(FEAT_FOLDING) || defined(FEAT_SPELL) \ + || defined(FEAT_VERTSPLIT) || defined(FEAT_CLIPBOARD) \ + || defined(FEAT_INS_EXPAND) || defined(FEAT_SYN_HL) || defined(FEAT_CONCEAL) +! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn" + #else +! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,t:Title,v:Visual,w:WarningMsg,W:WildMenu,>:SignColumn,*:TabLine,#:TabLineSel,_:TabLineFill" + #endif + + /* +*** ../vim-7.3.478/src/screen.c 2012-03-16 19:07:54.000000000 +0100 +--- src/screen.c 2012-03-23 16:09:15.000000000 +0100 +*************** +*** 3501,3509 **** + char_attr = hl_attr(HLF_N); + #ifdef FEAT_SYN_HL + /* When 'cursorline' is set highlight the line number of +! * the current line differently. */ + if (wp->w_p_cul && lnum == wp->w_cursor.lnum) +! char_attr = hl_combine_attr(hl_attr(HLF_CUL), char_attr); + #endif + } + } +--- 3501,3511 ---- + char_attr = hl_attr(HLF_N); + #ifdef FEAT_SYN_HL + /* When 'cursorline' is set highlight the line number of +! * the current line differently. +! * TODO: Can we use CursorLine instead of CursorLineNr +! * when CursorLineNr isn't set? */ + if (wp->w_p_cul && lnum == wp->w_cursor.lnum) +! char_attr = hl_attr(HLF_CLN); + #endif + } + } +*** ../vim-7.3.478/src/syntax.c 2012-03-16 20:16:42.000000000 +0100 +--- src/syntax.c 2012-03-23 16:23:57.000000000 +0100 +*************** +*** 6538,6543 **** +--- 6538,6545 ---- + "Directory term=bold ctermfg=DarkBlue guifg=Blue"), + CENT("LineNr term=underline ctermfg=Brown", + "LineNr term=underline ctermfg=Brown guifg=Brown"), ++ CENT("CursorLineNr term=bold ctermfg=Brown", ++ "CursorLineNr term=bold ctermfg=Brown gui=bold guifg=Brown"), + CENT("MoreMsg term=bold ctermfg=DarkGreen", + "MoreMsg term=bold ctermfg=DarkGreen gui=bold guifg=SeaGreen"), + CENT("Question term=standout ctermfg=DarkGreen", +*************** +*** 6626,6631 **** +--- 6628,6635 ---- + "Directory term=bold ctermfg=LightCyan guifg=Cyan"), + CENT("LineNr term=underline ctermfg=Yellow", + "LineNr term=underline ctermfg=Yellow guifg=Yellow"), ++ CENT("CursorLineNr term=bold ctermfg=Yellow", ++ "CursorLineNr term=bold ctermfg=Yellow gui=bold guifg=Yellow"), + CENT("MoreMsg term=bold ctermfg=LightGreen", + "MoreMsg term=bold ctermfg=LightGreen gui=bold guifg=SeaGreen"), + CENT("Question term=standout ctermfg=LightGreen", +*** ../vim-7.3.478/src/vim.h 2012-03-07 19:16:49.000000000 +0100 +--- src/vim.h 2012-03-23 15:44:57.000000000 +0100 +*************** +*** 1318,1323 **** +--- 1318,1324 ---- + , HLF_M /* "--More--" message */ + , HLF_CM /* Mode (e.g., "-- INSERT --") */ + , HLF_N /* line number for ":number" and ":#" commands */ ++ , HLF_CLN /* current line number */ + , HLF_R /* return to continue message and yes/no questions */ + , HLF_S /* status lines */ + , HLF_SNC /* status lines of not-current windows */ +*************** +*** 1355,1361 **** + /* The HL_FLAGS must be in the same order as the HLF_ enums! + * When changing this also adjust the default for 'highlight'. */ + #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \ +! 'n', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \ + 'f', 'F', 'A', 'C', 'D', 'T', '-', '>', \ + 'B', 'P', 'R', 'L', \ + '+', '=', 'x', 'X', '*', '#', '_', '!', '.', 'o'} +--- 1356,1362 ---- + /* The HL_FLAGS must be in the same order as the HLF_ enums! + * When changing this also adjust the default for 'highlight'. */ + #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \ +! 'n', 'N', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \ + 'f', 'F', 'A', 'C', 'D', 'T', '-', '>', \ + 'B', 'P', 'R', 'L', \ + '+', '=', 'x', 'X', '*', '#', '_', '!', '.', 'o'} +*** ../vim-7.3.478/src/version.c 2012-03-23 15:36:57.000000000 +0100 +--- src/version.c 2012-03-23 16:16:41.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 479, + /**/ + +-- +If you're sending someone Styrofoam, what do you pack it in? + + /// 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/7.3.480 b/7.3.480 new file mode 100644 index 0000000..6d1e21d --- /dev/null +++ b/7.3.480 @@ -0,0 +1,237 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.480 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.480 +Problem: When using ":qa" and there is a changed buffer picking the buffer + to jump to is not very good. +Solution: Consider current and other tab pages. (Hirohito Higashi) +Files: src/ex_cmds2.c + + +*** ../vim-7.3.479/src/ex_cmds2.c 2012-02-22 18:29:29.000000000 +0100 +--- src/ex_cmds2.c 2012-03-23 17:01:31.000000000 +0100 +*************** +*** 1569,1574 **** +--- 1569,1594 ---- + || forceit); + } + ++ static void add_bufnum __ARGS((int *bufnrs, int *bufnump, int nr)); ++ ++ /* ++ * Add a buffer number to "bufnrs", unless it's already there. ++ */ ++ static void ++ add_bufnum(bufnrs, bufnump, nr) ++ int *bufnrs; ++ int *bufnump; ++ int nr; ++ { ++ int i; ++ ++ for (i = 0; i < *bufnump; ++i) ++ if (bufnrs[i] == nr) ++ return; ++ bufnrs[*bufnump] = nr; ++ *bufnump = *bufnump + 1; ++ } ++ + /* + * Return TRUE if any buffer was changed and cannot be abandoned. + * That changed buffer becomes the current buffer. +*************** +*** 1577,1608 **** + check_changed_any(hidden) + int hidden; /* Only check hidden buffers */ + { + buf_T *buf; + int save; + #ifdef FEAT_WINDOWS + win_T *wp; + #endif + +! for (;;) + { +! /* check curbuf first: if it was changed we can't abandon it */ +! if (!hidden && curbufIsChanged()) +! buf = curbuf; +! else + { +! for (buf = firstbuf; buf != NULL; buf = buf->b_next) +! if ((!hidden || buf->b_nwindows == 0) && bufIsChanged(buf)) +! break; + } +- if (buf == NULL) /* No buffers changed */ +- return FALSE; +- +- /* 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 */ + } + + exiting = FALSE; + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + /* +--- 1597,1660 ---- + check_changed_any(hidden) + int hidden; /* Only check hidden buffers */ + { ++ int ret = FALSE; + buf_T *buf; + int save; ++ int i; ++ int bufnum = 0; ++ int bufcount = 0; ++ int *bufnrs; + #ifdef FEAT_WINDOWS ++ tabpage_T *tp; + win_T *wp; + #endif + +! for (buf = firstbuf; buf != NULL; buf = buf->b_next) +! ++bufcount; +! +! if (bufcount == 0) +! return FALSE; +! +! bufnrs = (int *)alloc(sizeof(int) * bufcount); +! if (bufnrs == NULL) +! return FALSE; +! +! /* curbuf */ +! bufnrs[bufnum++] = curbuf->b_fnum; +! #ifdef FEAT_WINDOWS +! /* buf in curtab */ +! FOR_ALL_WINDOWS(wp) +! if (wp->w_buffer != curbuf) +! add_bufnum(bufnrs, &bufnum, wp->w_buffer->b_fnum); +! +! /* buf in other tab */ +! for (tp = first_tabpage; tp != NULL; tp = tp->tp_next) +! if (tp != curtab) +! for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next) +! add_bufnum(bufnrs, &bufnum, wp->w_buffer->b_fnum); +! #endif +! /* any other buf */ +! for (buf = firstbuf; buf != NULL; buf = buf->b_next) +! add_bufnum(bufnrs, &bufnum, buf->b_fnum); +! +! for (i = 0; i < bufnum; ++i) + { +! buf = buflist_findnr(bufnrs[i]); +! if (buf == NULL) +! continue; +! if ((!hidden || buf->b_nwindows == 0) && bufIsChanged(buf)) + { +! /* 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 */ + } + } + ++ if (i >= bufnum) ++ goto theend; ++ ++ ret = TRUE; + exiting = FALSE; + #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) + /* +*************** +*** 1635,1658 **** + #ifdef FEAT_WINDOWS + /* Try to find a window that contains the buffer. */ + if (buf != curbuf) +! for (wp = firstwin; wp != NULL; wp = wp->w_next) + if (wp->w_buffer == buf) + { +! win_goto(wp); + # ifdef FEAT_AUTOCMD + /* Paranoia: did autocms wipe out the buffer with changes? */ + if (!buf_valid(buf)) +! return TRUE; + # endif +! break; + } + #endif + + /* Open the changed buffer in the current window. */ + if (buf != curbuf) + set_curbuf(buf, DOBUF_GOTO); + +! return TRUE; + } + + /* +--- 1687,1715 ---- + #ifdef FEAT_WINDOWS + /* Try to find a window that contains the buffer. */ + if (buf != curbuf) +! FOR_ALL_TAB_WINDOWS(tp, wp) + if (wp->w_buffer == buf) + { +! goto_tabpage_win(tp, wp); + # ifdef FEAT_AUTOCMD + /* Paranoia: did autocms wipe out the buffer with changes? */ + if (!buf_valid(buf)) +! { +! goto theend; +! } + # endif +! goto buf_found; + } ++ buf_found: + #endif + + /* Open the changed buffer in the current window. */ + if (buf != curbuf) + set_curbuf(buf, DOBUF_GOTO); + +! theend: +! vim_free(bufnrs); +! return ret; + } + + /* +*************** +*** 3274,3280 **** + home_replace(NULL, SCRIPT_ITEM(i).sn_name, + NameBuff, MAXPATHL, TRUE); + smsg((char_u *)"%3d: %s", i, NameBuff); +! } + } + + # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO) +--- 3331,3337 ---- + home_replace(NULL, SCRIPT_ITEM(i).sn_name, + NameBuff, MAXPATHL, TRUE); + smsg((char_u *)"%3d: %s", i, NameBuff); +! } + } + + # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO) +*** ../vim-7.3.479/src/version.c 2012-03-23 16:25:13.000000000 +0100 +--- src/version.c 2012-03-23 16:48:06.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 480, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +243. You unsuccessfully try to download a pizza from www.dominos.com. + + /// 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/7.3.481 b/7.3.481 new file mode 100644 index 0000000..69f6915 --- /dev/null +++ b/7.3.481 @@ -0,0 +1,65 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.481 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.481 +Problem: Changing 'virtualedit' in an operator function to "all" does not + have the desired effect. (Aaron Bohannon) +Solution: Save, reset and restore virtual_op when executing an operator + function. +Files: src/normal.c + + +*** ../vim-7.3.480/src/normal.c 2012-02-05 01:18:41.000000000 +0100 +--- src/normal.c 2012-03-28 12:59:46.000000000 +0200 +*************** +*** 2279,2284 **** +--- 2279,2285 ---- + { + #ifdef FEAT_EVAL + char_u *(argv[1]); ++ int save_virtual_op = virtual_op; + + if (*p_opfunc == NUL) + EMSG(_("E774: 'operatorfunc' is empty")); +*************** +*** 2297,2303 **** +--- 2298,2311 ---- + argv[0] = (char_u *)"line"; + else + argv[0] = (char_u *)"char"; ++ ++ /* Reset virtual_op so that 'virtualedit' can be changed in the ++ * function. */ ++ virtual_op = MAYBE; ++ + (void)call_func_retnr(p_opfunc, 1, argv, FALSE); ++ ++ virtual_op = save_virtual_op; + } + #else + EMSG(_("E775: Eval feature not available")); +*** ../vim-7.3.480/src/version.c 2012-03-23 18:39:10.000000000 +0100 +--- src/version.c 2012-03-28 12:50:20.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 481, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +269. You wonder how you can make your dustbin produce Sesame Street's + Oscar's the Garbage Monster song when you empty it. + + /// 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/7.3.482 b/7.3.482 new file mode 100644 index 0000000..56ff301 --- /dev/null +++ b/7.3.482 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.482 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.482 +Problem: With 'cursorbind' set moving up/down does not always keep the same + column. +Solution: Set curswant appropriately. (Gary Johnson) +Files: src/move.c + + +*** ../vim-7.3.481/src/move.c 2012-03-16 19:24:21.000000000 +0100 +--- src/move.c 2012-03-28 14:16:02.000000000 +0200 +*************** +*** 2847,2852 **** +--- 2847,2854 ---- + # ifdef FEAT_VIRTUALEDIT + colnr_T coladd = curwin->w_cursor.coladd; + # endif ++ colnr_T curswant = curwin->w_curswant; ++ int set_curswant = curwin->w_set_curswant; + win_T *old_curwin = curwin; + buf_T *old_curbuf = curbuf; + int restart_edit_save; +*************** +*** 2881,2886 **** +--- 2883,2890 ---- + # ifdef FEAT_VIRTUALEDIT + curwin->w_cursor.coladd = coladd; + # endif ++ curwin->w_curswant = curswant; ++ curwin->w_set_curswant = set_curswant; + + /* Make sure the cursor is in a valid position. Temporarily set + * "restart_edit" to allow the cursor to be beyond the EOL. */ +*** ../vim-7.3.481/src/version.c 2012-03-28 12:59:53.000000000 +0200 +--- src/version.c 2012-03-28 14:15:56.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 482, + /**/ + +-- +Women are probably the main cause of free software starvation. + + /// 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/7.3.483 b/7.3.483 new file mode 100644 index 0000000..bab488b --- /dev/null +++ b/7.3.483 @@ -0,0 +1,97 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.483 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.483 (after 7.3.477) +Problem: More prompt shows up too often. +Solution: Instead of adding a line break, only start a new line in the + message history. (Christian Brabandt) +Files: src/eval.c, src/message.c, src/proto/message.pro + + +*** ../vim-7.3.482/src/eval.c 2012-03-23 15:36:57.000000000 +0100 +--- src/eval.c 2012-03-28 16:41:03.000000000 +0200 +*************** +*** 20493,20501 **** + * may cause a message to appear. */ + if (eap->cmdidx == CMD_echo) + { +! /* Put the output below the command, makes scrolling back +! * at more prompt work. */ +! msg_didout = TRUE; + msg_start(); + } + } +--- 20493,20502 ---- + * may cause a message to appear. */ + if (eap->cmdidx == CMD_echo) + { +! /* Mark the saved text as finishing the line, so that what +! * follows is displayed on a new line when scrolling back +! * at the more prompt. */ +! msg_sb_eol(); + msg_start(); + } + } +*** ../vim-7.3.482/src/message.c 2012-01-26 13:01:54.000000000 +0100 +--- src/message.c 2012-03-28 16:35:26.000000000 +0200 +*************** +*** 2348,2353 **** +--- 2348,2363 ---- + } + + /* ++ * Mark the last message chunk as finishing the line. ++ */ ++ void ++ msg_sb_eol() ++ { ++ if (last_msgchunk != NULL) ++ last_msgchunk->sb_eol = TRUE; ++ } ++ ++ /* + * Display a screen line from previously displayed text at row "row". + * Returns a pointer to the text for the next line (can be NULL). + */ +*** ../vim-7.3.482/src/proto/message.pro 2012-01-20 20:44:38.000000000 +0100 +--- src/proto/message.pro 2012-03-28 16:35:33.000000000 +0200 +*************** +*** 45,50 **** +--- 45,51 ---- + void may_clear_sb_text __ARGS((void)); + void clear_sb_text __ARGS((void)); + void show_sb_text __ARGS((void)); ++ void msg_sb_eol __ARGS((void)); + int msg_use_printf __ARGS((void)); + void mch_errmsg __ARGS((char *str)); + void mch_msg __ARGS((char *str)); +*** ../vim-7.3.482/src/version.c 2012-03-28 14:19:46.000000000 +0200 +--- src/version.c 2012-03-28 16:48:53.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 483, + /**/ + +-- + We're knights of the Round Table + Our shows are formidable + But many times + We're given rhymes + That are quite unsingable + We're opera mad in Camelot + We sing from the diaphragm a lot. + "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/7.3.484 b/7.3.484 new file mode 100644 index 0000000..99968eb --- /dev/null +++ b/7.3.484 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.484 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.484 +Problem: The -E and --echo-wid command line arguments are not mentioned in + "vim --help". +Solution: Add the help lines. (Dominique Pelle) +Files: src/main.c + + +*** ../vim-7.3.483/src/main.c 2012-02-12 01:55:50.000000000 +0100 +--- src/main.c 2012-03-28 16:55:03.000000000 +0200 +*************** +*** 3181,3186 **** +--- 3181,3187 ---- + #endif + main_msg(_("-v\t\t\tVi mode (like \"vi\")")); + main_msg(_("-e\t\t\tEx mode (like \"ex\")")); ++ main_msg(_("-E\t\t\tImproved Ex mode")); + main_msg(_("-s\t\t\tSilent (batch) mode (only for \"ex\")")); + #ifdef FEAT_DIFF + main_msg(_("-d\t\t\tDiff mode (like \"vimdiff\")")); +*************** +*** 3304,3309 **** +--- 3305,3311 ---- + main_msg(_("-display \tRun vim on (also: --display)")); + main_msg(_("--role \tSet a unique role to identify the main window")); + main_msg(_("--socketid \tOpen Vim inside another GTK widget")); ++ main_msg(_("--echo-wid\t\tMake gvim echo the Window ID on stdout")); + #endif + #ifdef FEAT_GUI_W32 + main_msg(_("-P \tOpen Vim inside parent application")); +*** ../vim-7.3.483/src/version.c 2012-03-28 16:49:25.000000000 +0200 +--- src/version.c 2012-03-28 17:10:08.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 484, + /**/ + +-- + In war we're tough and able. + Quite indefatigable + Between our quests + We sequin vests + And impersonate Clark Gable + It's a busy life in Camelot. + I have to push the pram a lot. + "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/7.3.485 b/7.3.485 new file mode 100644 index 0000000..46b4cb7 --- /dev/null +++ b/7.3.485 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.485 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.485 +Problem: When building Vim LDFLAGS isn't passed on to building xxd. +Solution: Pass the LDFLAGS value. (James McCoy) +Files: src/Makefile + + +*** ../vim-7.3.484/src/Makefile 2011-12-14 20:51:19.000000000 +0100 +--- src/Makefile 2012-03-28 17:16:06.000000000 +0200 +*************** +*** 1720,1726 **** + sh $(srcdir)/link.sh + + xxd/xxd$(EXEEXT): xxd/xxd.c +! cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \ + $(MAKE) -f Makefile + + # Build the language specific files if they were unpacked. +--- 1720,1726 ---- + sh $(srcdir)/link.sh + + xxd/xxd$(EXEEXT): xxd/xxd.c +! cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ + $(MAKE) -f Makefile + + # Build the language specific files if they were unpacked. +*** ../vim-7.3.484/src/version.c 2012-03-28 17:10:26.000000000 +0200 +--- src/version.c 2012-03-28 17:16:15.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 485, + /**/ + +-- +GOD: That is your purpose Arthur ... the Quest for the Holy Grail ... + "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/7.3.486 b/7.3.486 new file mode 100644 index 0000000..44e2afe --- /dev/null +++ b/7.3.486 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.486 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.486 +Problem: Build error with mingw64 on Windows 7. +Solution: Avoid the step of going through vimres.res. (Guopeng Wen) +Files: src/Make_ming.mak + + +*** ../vim-7.3.485/src/Make_ming.mak 2012-02-29 16:56:35.000000000 +0100 +--- src/Make_ming.mak 2012-03-28 17:41:55.000000000 +0200 +*************** +*** 681,691 **** + $(OUTDIR)/%.o : %.c $(INCL) + $(CC) -c $(CFLAGS) $< -o $@ + +! $(OUTDIR)/vimres.res: vim.rc version.h gui_w32_rc.h +! $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) vim.rc $(OUTDIR)/vimres.res +! +! $(OUTDIR)/vimrc.o: $(OUTDIR)/vimres.res +! $(WINDRES) $(WINDRES_FLAGS) $(OUTDIR)/vimres.res $(OUTDIR)/vimrc.o + + $(OUTDIR): + $(MKDIR) $(OUTDIR) +--- 681,689 ---- + $(OUTDIR)/%.o : %.c $(INCL) + $(CC) -c $(CFLAGS) $< -o $@ + +! $(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h +! $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \ +! --input-format=rc --output-format=coff -i vim.rc -o $@ + + $(OUTDIR): + $(MKDIR) $(OUTDIR) +*** ../vim-7.3.485/src/version.c 2012-03-28 17:17:45.000000000 +0200 +--- src/version.c 2012-03-28 17:42:25.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 486, + /**/ + +-- +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/7.3.487 b/7.3.487 new file mode 100644 index 0000000..3c00349 --- /dev/null +++ b/7.3.487 @@ -0,0 +1,572 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.487 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.487 +Problem: When setting 'timeoutlen' or 'ttimeoutlen' the column for vertical + movement is reset unnecessarily. +Solution: Do not set w_set_curswant for every option. Add a test for this. + (Kana Natsuno) Add the P_CURSWANT flag for options. +Files: src/option.c, src/testdir/test84.in, src/testdir/test84.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.3.486/src/option.c 2012-03-23 16:25:13.000000000 +0100 +--- src/option.c 2012-03-28 19:57:46.000000000 +0200 +*************** +*** 433,449 **** + #define P_RCLR 0x7000 /* clear and redraw all */ + + #define P_COMMA 0x8000 /* comma separated list */ +! #define P_NODUP 0x10000L/* don't allow duplicate strings */ +! #define P_FLAGLIST 0x20000L/* list of single-char flags */ + +! #define P_SECURE 0x40000L/* cannot change in modeline or secure mode */ +! #define P_GETTEXT 0x80000L/* expand default value with _() */ +! #define P_NOGLOB 0x100000L/* do not use local value for global vimrc */ +! #define P_NFNAME 0x200000L/* only normal file name chars allowed */ +! #define P_INSECURE 0x400000L/* option was set from a modeline */ +! #define P_PRI_MKRC 0x800000L/* priority for :mkvimrc (setting option has + side effects) */ +! #define P_NO_ML 0x1000000L/* not allowed in modeline */ + + #define ISK_LATIN1 (char_u *)"@,48-57,_,192-255" + +--- 433,451 ---- + #define P_RCLR 0x7000 /* clear and redraw all */ + + #define P_COMMA 0x8000 /* comma separated list */ +! #define P_NODUP 0x10000L /* don't allow duplicate strings */ +! #define P_FLAGLIST 0x20000L /* list of single-char flags */ + +! #define P_SECURE 0x40000L /* cannot change in modeline or secure mode */ +! #define P_GETTEXT 0x80000L /* expand default value with _() */ +! #define P_NOGLOB 0x100000L /* do not use local value for global vimrc */ +! #define P_NFNAME 0x200000L /* only normal file name chars allowed */ +! #define P_INSECURE 0x400000L /* option was set from a modeline */ +! #define P_PRI_MKRC 0x800000L /* priority for :mkvimrc (setting option has + side effects) */ +! #define P_NO_ML 0x1000000L /* not allowed in modeline */ +! #define P_CURSWANT 0x2000000L /* update curswant required; not needed when +! * there is a redraw flag */ + + #define ISK_LATIN1 (char_u *)"@,48-57,_,192-255" + +*************** +*** 479,485 **** + #endif + options[] = + { +! {"aleph", "al", P_NUM|P_VI_DEF, + #ifdef FEAT_RIGHTLEFT + (char_u *)&p_aleph, PV_NONE, + #else +--- 481,487 ---- + #endif + options[] = + { +! {"aleph", "al", P_NUM|P_VI_DEF|P_CURSWANT, + #ifdef FEAT_RIGHTLEFT + (char_u *)&p_aleph, PV_NONE, + #else +*************** +*** 501,507 **** + {(char_u *)FALSE, (char_u *)FALSE} + #endif + SCRIPTID_INIT}, +! {"arabic", "arab", P_BOOL|P_VI_DEF|P_VIM, + #ifdef FEAT_ARABIC + (char_u *)VAR_WIN, PV_ARAB, + #else +--- 503,509 ---- + {(char_u *)FALSE, (char_u *)FALSE} + #endif + SCRIPTID_INIT}, +! {"arabic", "arab", P_BOOL|P_VI_DEF|P_VIM|P_CURSWANT, + #ifdef FEAT_ARABIC + (char_u *)VAR_WIN, PV_ARAB, + #else +*************** +*** 778,784 **** + {"columns", "co", P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR, + (char_u *)&Columns, PV_NONE, + {(char_u *)80L, (char_u *)0L} SCRIPTID_INIT}, +! {"comments", "com", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP, + #ifdef FEAT_COMMENTS + (char_u *)&p_com, PV_COM, + {(char_u *)"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-", +--- 780,786 ---- + {"columns", "co", P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR, + (char_u *)&Columns, PV_NONE, + {(char_u *)80L, (char_u *)0L} SCRIPTID_INIT}, +! {"comments", "com", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP|P_CURSWANT, + #ifdef FEAT_COMMENTS + (char_u *)&p_com, PV_COM, + {(char_u *)"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-", +*************** +*** 788,794 **** + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, +! {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF, + #ifdef FEAT_FOLDING + (char_u *)&p_cms, PV_CMS, + {(char_u *)"/*%s*/", (char_u *)0L} +--- 790,796 ---- + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, +! {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT, + #ifdef FEAT_FOLDING + (char_u *)&p_cms, PV_CMS, + {(char_u *)"/*%s*/", (char_u *)0L} +*************** +*** 953,959 **** + {"debug", NULL, P_STRING|P_VI_DEF, + (char_u *)&p_debug, PV_NONE, + {(char_u *)"", (char_u *)0L} SCRIPTID_INIT}, +! {"define", "def", P_STRING|P_ALLOCED|P_VI_DEF, + #ifdef FEAT_FIND_ID + (char_u *)&p_def, PV_DEF, + {(char_u *)"^\\s*#\\s*define", (char_u *)0L} +--- 955,961 ---- + {"debug", NULL, P_STRING|P_VI_DEF, + (char_u *)&p_debug, PV_NONE, + {(char_u *)"", (char_u *)0L} SCRIPTID_INIT}, +! {"define", "def", P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT, + #ifdef FEAT_FIND_ID + (char_u *)&p_def, PV_DEF, + {(char_u *)"^\\s*#\\s*define", (char_u *)0L} +*************** +*** 983,989 **** + (char_u *)NULL, PV_NONE, + #endif + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, +! {"diffexpr", "dex", P_STRING|P_VI_DEF|P_SECURE, + #if defined(FEAT_DIFF) && defined(FEAT_EVAL) + (char_u *)&p_dex, PV_NONE, + {(char_u *)"", (char_u *)0L} +--- 985,991 ---- + (char_u *)NULL, PV_NONE, + #endif + {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, +! {"diffexpr", "dex", P_STRING|P_VI_DEF|P_SECURE|P_CURSWANT, + #if defined(FEAT_DIFF) && defined(FEAT_EVAL) + (char_u *)&p_dex, PV_NONE, + {(char_u *)"", (char_u *)0L} +*************** +*** 1099,1105 **** + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, +! {"fileformat", "ff", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC, + (char_u *)&p_ff, PV_FF, + {(char_u *)DFLT_FF, (char_u *)0L} SCRIPTID_INIT}, + {"fileformats", "ffs", P_STRING|P_VIM|P_COMMA|P_NODUP, +--- 1101,1107 ---- + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, +! {"fileformat", "ff", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC|P_CURSWANT, + (char_u *)&p_ff, PV_FF, + {(char_u *)DFLT_FF, (char_u *)0L} SCRIPTID_INIT}, + {"fileformats", "ffs", P_STRING|P_VIM|P_COMMA|P_NODUP, +*************** +*** 1159,1165 **** + {"foldlevel", "fdl", P_NUM|P_VI_DEF|P_RWIN, + (char_u *)VAR_WIN, PV_FDL, + {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, +! {"foldlevelstart","fdls", P_NUM|P_VI_DEF, + (char_u *)&p_fdls, PV_NONE, + {(char_u *)-1L, (char_u *)0L} SCRIPTID_INIT}, + {"foldmarker", "fmr", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF| +--- 1161,1167 ---- + {"foldlevel", "fdl", P_NUM|P_VI_DEF|P_RWIN, + (char_u *)VAR_WIN, PV_FDL, + {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, +! {"foldlevelstart","fdls", P_NUM|P_VI_DEF|P_CURSWANT, + (char_u *)&p_fdls, PV_NONE, + {(char_u *)-1L, (char_u *)0L} SCRIPTID_INIT}, + {"foldmarker", "fmr", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF| +*************** +*** 1176,1182 **** + {"foldnestmax", "fdn", P_NUM|P_VI_DEF|P_RWIN, + (char_u *)VAR_WIN, PV_FDN, + {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT}, +! {"foldopen", "fdo", P_STRING|P_VI_DEF|P_COMMA|P_NODUP, + (char_u *)&p_fdo, PV_NONE, + {(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo", + (char_u *)0L} SCRIPTID_INIT}, +--- 1178,1184 ---- + {"foldnestmax", "fdn", P_NUM|P_VI_DEF|P_RWIN, + (char_u *)VAR_WIN, PV_FDN, + {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT}, +! {"foldopen", "fdo", P_STRING|P_VI_DEF|P_COMMA|P_NODUP|P_CURSWANT, + (char_u *)&p_fdo, PV_NONE, + {(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo", + (char_u *)0L} SCRIPTID_INIT}, +*************** +*** 1741,1747 **** + {"matchtime", "mat", P_NUM|P_VI_DEF, + (char_u *)&p_mat, PV_NONE, + {(char_u *)5L, (char_u *)0L} SCRIPTID_INIT}, +! {"maxcombine", "mco", P_NUM|P_VI_DEF, + #ifdef FEAT_MBYTE + (char_u *)&p_mco, PV_NONE, + #else +--- 1743,1749 ---- + {"matchtime", "mat", P_NUM|P_VI_DEF, + (char_u *)&p_mat, PV_NONE, + {(char_u *)5L, (char_u *)0L} SCRIPTID_INIT}, +! {"maxcombine", "mco", P_NUM|P_VI_DEF|P_CURSWANT, + #ifdef FEAT_MBYTE + (char_u *)&p_mco, PV_NONE, + #else +*************** +*** 2710,2716 **** + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, +! {"virtualedit", "ve", P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM, + #ifdef FEAT_VIRTUALEDIT + (char_u *)&p_ve, PV_NONE, + {(char_u *)"", (char_u *)""} +--- 2712,2718 ---- + {(char_u *)0L, (char_u *)0L} + #endif + SCRIPTID_INIT}, +! {"virtualedit", "ve", P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM|P_CURSWANT, + #ifdef FEAT_VIRTUALEDIT + (char_u *)&p_ve, PV_NONE, + {(char_u *)"", (char_u *)""} +*************** +*** 7064,7071 **** + } + #endif + +! if (curwin->w_curswant != MAXCOL) +! curwin->w_set_curswant = TRUE; /* in case 'showbreak' changed */ + #ifdef FEAT_GUI + /* check redraw when it's not a GUI option or the GUI is active. */ + if (!redraw_gui_only || gui.in_use) +--- 7066,7075 ---- + } + #endif + +! if (curwin->w_curswant != MAXCOL +! && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0) +! curwin->w_set_curswant = TRUE; +! + #ifdef FEAT_GUI + /* check redraw when it's not a GUI option or the GUI is active. */ + if (!redraw_gui_only || gui.in_use) +*************** +*** 7587,7595 **** + || (int *)varp == &curwin->w_p_nu + || (int *)varp == &curwin->w_p_rnu) + { +- if (curwin->w_curswant != MAXCOL) +- curwin->w_set_curswant = TRUE; +- + /* If 'number' is set, reset 'relativenumber'. */ + /* If 'relativenumber' is set, reset 'number'. */ + if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu) +--- 7591,7596 ---- +*************** +*** 7834,7841 **** + { + if (curwin->w_p_wrap) + curwin->w_leftcol = 0; +- if (curwin->w_curswant != MAXCOL) +- curwin->w_set_curswant = TRUE; + } + + #ifdef FEAT_WINDOWS +--- 7835,7840 ---- +*************** +*** 8062,8092 **** + curbuf->b_p_imsearch = B_IMODE_USE_INSERT; + # endif + } +- if (curwin->w_curswant != MAXCOL) +- curwin->w_set_curswant = TRUE; + } + +- else if ((int *)varp == &p_arshape) +- { +- if (curwin->w_curswant != MAXCOL) +- curwin->w_set_curswant = TRUE; +- } +- #endif +- +- #ifdef FEAT_LINEBREAK +- if ((int *)varp == &curwin->w_p_lbr) +- { +- if (curwin->w_curswant != MAXCOL) +- curwin->w_set_curswant = TRUE; +- } +- #endif +- +- #ifdef FEAT_RIGHTLEFT +- if ((int *)varp == &curwin->w_p_rl) +- { +- if (curwin->w_curswant != MAXCOL) +- curwin->w_set_curswant = TRUE; +- } + #endif + + /* +--- 8061,8068 ---- +*************** +*** 8096,8102 **** + options[opt_idx].flags |= P_WAS_SET; + + comp_col(); /* in case 'ruler' or 'showcmd' changed */ +! + check_redraw(options[opt_idx].flags); + + return NULL; +--- 8072,8080 ---- + options[opt_idx].flags |= P_WAS_SET; + + comp_col(); /* in case 'ruler' or 'showcmd' changed */ +! if (curwin->w_curswant != MAXCOL +! && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0) +! curwin->w_set_curswant = TRUE; + check_redraw(options[opt_idx].flags); + + return NULL; +*************** +*** 8611,8618 **** + options[opt_idx].flags |= P_WAS_SET; + + comp_col(); /* in case 'columns' or 'ls' changed */ +! if (curwin->w_curswant != MAXCOL) +! curwin->w_set_curswant = TRUE; /* in case 'tabstop' changed */ + check_redraw(options[opt_idx].flags); + + return errmsg; +--- 8589,8597 ---- + options[opt_idx].flags |= P_WAS_SET; + + comp_col(); /* in case 'columns' or 'ls' changed */ +! if (curwin->w_curswant != MAXCOL +! && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0) +! curwin->w_set_curswant = TRUE; + check_redraw(options[opt_idx].flags); + + return errmsg; +*** ../vim-7.3.486/src/testdir/test84.in 2012-03-28 19:55:12.000000000 +0200 +--- src/testdir/test84.in 2012-03-28 19:46:53.000000000 +0200 +*************** +*** 0 **** +--- 1,35 ---- ++ Tests for curswant not changing when setting an option ++ ++ STARTTEST ++ :so small.vim ++ :/^start target options$/+1,/^end target options$/-1 yank ++ :let target_option_names = split(@0) ++ :function TestCurswant(option_name) ++ : normal! ggf8j ++ : let curswant_before = winsaveview().curswant ++ : execute 'let' '&'.a:option_name '=' '&'.a:option_name ++ : let curswant_after = winsaveview().curswant ++ : return [a:option_name, curswant_before, curswant_after] ++ :endfunction ++ : ++ :new ++ :put =['1234567890', '12345'] ++ :1 delete _ ++ :let result = [] ++ :for option_name in target_option_names ++ : call add(result, TestCurswant(option_name)) ++ :endfor ++ : ++ :new ++ :put =map(copy(result), 'join(v:val, '' '')') ++ :1 delete _ ++ :write test.out ++ : ++ :qall! ++ ENDTEST ++ ++ start target options ++ tabstop ++ timeoutlen ++ ttimeoutlen ++ end target options +*** ../vim-7.3.486/src/testdir/test84.ok 2012-03-28 19:55:12.000000000 +0200 +--- src/testdir/test84.ok 2012-03-28 19:48:36.000000000 +0200 +*************** +*** 0 **** +--- 1,3 ---- ++ tabstop 7 4 ++ timeoutlen 7 7 ++ ttimeoutlen 7 7 +*** ../vim-7.3.486/src/testdir/Make_amiga.mak 2011-10-12 19:53:31.000000000 +0200 +--- src/testdir/Make_amiga.mak 2012-03-28 18:14:08.000000000 +0200 +*************** +*** 29,35 **** + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out + + .SUFFIXES: .in .out + +--- 29,35 ---- + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out test84.out + + .SUFFIXES: .in .out + +*************** +*** 132,134 **** +--- 132,135 ---- + test81.out: test81.in + test82.out: test82.in + test83.out: test83.in ++ test84.out: test84.in +*** ../vim-7.3.486/src/testdir/Make_dos.mak 2011-10-12 19:53:31.000000000 +0200 +--- src/testdir/Make_dos.mak 2012-03-28 18:14:41.000000000 +0200 +*************** +*** 29,35 **** + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out + + SCRIPTS32 = test50.out test70.out + +--- 29,36 ---- + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.486/src/testdir/Make_ming.mak 2011-10-12 19:53:31.000000000 +0200 +--- src/testdir/Make_ming.mak 2012-03-28 18:14:46.000000000 +0200 +*************** +*** 49,55 **** + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out + + SCRIPTS32 = test50.out test70.out + +--- 49,56 ---- + test42.out test52.out test65.out test66.out test67.out \ + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.486/src/testdir/Make_os2.mak 2011-10-12 19:53:31.000000000 +0200 +--- src/testdir/Make_os2.mak 2012-03-28 18:15:00.000000000 +0200 +*************** +*** 29,35 **** + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out + + .SUFFIXES: .in .out + +--- 29,35 ---- + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out test84.out + + .SUFFIXES: .in .out + +*** ../vim-7.3.486/src/testdir/Make_vms.mms 2011-10-12 19:53:31.000000000 +0200 +--- src/testdir/Make_vms.mms 2012-03-28 18:15:15.000000000 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2011 Jul 15 + # + # 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, + # Sandor Kopanyi, + # +! # Last change: 2012 Mar 28 + # + # 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. +*************** +*** 76,82 **** + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ +! test82.out test83.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 76,82 ---- + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ +! test82.out test83.out test84.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.3.486/src/testdir/Makefile 2011-10-12 19:53:31.000000000 +0200 +--- src/testdir/Makefile 2012-03-28 18:15:29.000000000 +0200 +*************** +*** 26,32 **** + test64.out test65.out test66.out test67.out test68.out \ + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out + + SCRIPTS_GUI = test16.out + +--- 26,33 ---- + test64.out test65.out test66.out test67.out test68.out \ + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ +! test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.486/src/version.c 2012-03-28 17:43:06.000000000 +0200 +--- src/version.c 2012-03-28 19:49:41.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 487, + /**/ + +-- +"Time flies like an arrow". So I put an arrow on my desk, now +awaiting one of these time flies showing 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/7.3.488 b/7.3.488 new file mode 100644 index 0000000..e078740 --- /dev/null +++ b/7.3.488 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.488 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.488 +Problem: ":help!" in a help file does not work as document. +Solution: When in a help file don't give an error message. (thinca) +Files: src/ex_cmds.c + + +*** ../vim-7.3.487/src/ex_cmds.c 2012-03-16 14:32:10.000000000 +0100 +--- src/ex_cmds.c 2012-04-01 14:25:35.000000000 +0200 +*************** +*** 5546,5552 **** + } + arg = eap->arg; + +! if (eap->forceit && *arg == NUL) + { + EMSG(_("E478: Don't panic!")); + return; +--- 5546,5552 ---- + } + arg = eap->arg; + +! if (eap->forceit && *arg == NUL && !curbuf->b_help) + { + EMSG(_("E478: Don't panic!")); + return; +*** ../vim-7.3.487/src/version.c 2012-03-28 19:58:34.000000000 +0200 +--- src/version.c 2012-04-05 16:04:13.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 488, + /**/ + + +-- +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/7.3.489 b/7.3.489 new file mode 100644 index 0000000..fbdf2c3 --- /dev/null +++ b/7.3.489 @@ -0,0 +1,89 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.489 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.489 +Problem: CTRL-] in Insert mode does not expand abbreviation when used in a + mapping. (Yichao Zhou) +Solution: Special case using CTRL-]. (Christian Brabandt) +Files: src/getchar.c, src/edit.c + + +*** ../vim-7.3.488/src/getchar.c 2012-02-05 22:05:44.000000000 +0100 +--- src/getchar.c 2012-04-05 15:54:00.000000000 +0200 +*************** +*** 4352,4359 **** + + if (typebuf.tb_no_abbr_cnt) /* abbrev. are not recursive */ + return FALSE; +! if ((KeyNoremap & (RM_NONE|RM_SCRIPT)) != 0) +! /* no remapping implies no abbreviation */ + return FALSE; + + /* +--- 4352,4360 ---- + + if (typebuf.tb_no_abbr_cnt) /* abbrev. are not recursive */ + return FALSE; +! +! /* no remapping implies no abbreviation, except for CTRL-] */ +! if ((KeyNoremap & (RM_NONE|RM_SCRIPT)) != 0 && c != Ctrl_RSB) + return FALSE; + + /* +*** ../vim-7.3.488/src/edit.c 2012-02-29 18:22:03.000000000 +0100 +--- src/edit.c 2012-04-05 15:57:46.000000000 +0200 +*************** +*** 1455,1467 **** + Insstart_blank_vcol = get_nolist_virtcol(); + } + +! if (vim_iswordc(c) || !echeck_abbr( + #ifdef FEAT_MBYTE + /* Add ABBR_OFF for characters above 0x100, this is + * what check_abbr() expects. */ + (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) : + #endif +! c)) + { + insert_special(c, FALSE, FALSE); + #ifdef FEAT_RIGHTLEFT +--- 1455,1470 ---- + Insstart_blank_vcol = get_nolist_virtcol(); + } + +! /* Insert a normal character and check for abbreviations on a +! * special character. Let CTRL-] expand abbreviations without +! * inserting it. */ +! if (vim_iswordc(c) || (!echeck_abbr( + #ifdef FEAT_MBYTE + /* Add ABBR_OFF for characters above 0x100, this is + * what check_abbr() expects. */ + (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) : + #endif +! c) && c != Ctrl_RSB)) + { + insert_special(c, FALSE, FALSE); + #ifdef FEAT_RIGHTLEFT +*** ../vim-7.3.488/src/version.c 2012-04-05 16:04:58.000000000 +0200 +--- src/version.c 2012-04-05 16:06:12.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 489, + /**/ + +-- +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/7.3.490 b/7.3.490 new file mode 100644 index 0000000..6c49a48 --- /dev/null +++ b/7.3.490 @@ -0,0 +1,2517 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.490 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.490 +Problem: Member confusion in Lua interface. +Solution: Fix it. Add luaeval(). (Taro Muraoka, Luis Carvalho) +Files: runtime/doc/if_lua.txt, src/eval.c, src/if_lua.c, + src/proto/if_lua.pro + + +*** ../vim-7.3.489/runtime/doc/if_lua.txt 2010-08-15 21:57:14.000000000 +0200 +--- runtime/doc/if_lua.txt 2012-04-05 16:41:35.000000000 +0200 +*************** +*** 1,4 **** +! *if_lua.txt* For Vim version 7.3. Last change: 2010 Jul 22 + + + VIM REFERENCE MANUAL by Luis Carvalho +--- 1,4 ---- +! *if_lua.txt* For Vim version 7.3. Last change: 2012 Jan 16 + + + VIM REFERENCE MANUAL by Luis Carvalho +*************** +*** 8,15 **** + + 1. Commands |lua-commands| + 2. The vim module |lua-vim| +! 3. Buffer userdata |lua-buffer| +! 4. Window userdata |lua-window| + + {Vi does not have any of these commands} + +--- 8,18 ---- + + 1. Commands |lua-commands| + 2. The vim module |lua-vim| +! 3. List userdata |lua-list| +! 4. Dict userdata |lua-dict| +! 5. Buffer userdata |lua-buffer| +! 6. Window userdata |lua-window| +! 7. The luaeval function |lua-luaeval| + + {Vi does not have any of these commands} + +*************** +*** 88,98 **** + All these commands execute a Lua chunk from either the command line (:lua and + :luado) or a file (:luafile) with the given line [range]. Similarly to the Lua + interpreter, each chunk has its own scope and so only global variables are +! shared between command calls. Lua default libraries "table", "string", "math", +! and "package" are available, "io" and "debug" are not, and "os" is restricted +! to functions "date", "clock", "time", "difftime", and "getenv". In addition, +! Lua "print" function has its output redirected to the Vim message area, with +! arguments separated by a white space instead of a tab. + + Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim + and manage buffers (|lua-buffer|) and windows (|lua-window|). However, +--- 91,99 ---- + All these commands execute a Lua chunk from either the command line (:lua and + :luado) or a file (:luafile) with the given line [range]. Similarly to the Lua + interpreter, each chunk has its own scope and so only global variables are +! shared between command calls. All Lua default libraries are available. In +! addition, Lua "print" function has its output redirected to the Vim message +! area, with arguments separated by a white space instead of a tab. + + Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim + and manage buffers (|lua-buffer|) and windows (|lua-window|). However, +*************** +*** 108,116 **** + module also includes routines for buffer, window, and current line queries, + Vim evaluation and command execution, and others. + +! vim.isbuffer(value) Returns 'true' (boolean, not string) if +! "value" is a buffer userdata and 'false' +! otherwise (see |lua-buffer|). + + vim.buffer([arg]) If "arg" is a number, returns buffer with + number "arg" in the buffer list or, if "arg" +--- 109,117 ---- + module also includes routines for buffer, window, and current line queries, + Vim evaluation and command execution, and others. + +! vim.list() Returns an empty list (see |List|). +! +! vim.dict() Returns an empty dictionary (see |Dictionary|). + + vim.buffer([arg]) If "arg" is a number, returns buffer with + number "arg" in the buffer list or, if "arg" +*************** +*** 121,136 **** + 'true' returns the first buffer in the buffer + list or else the current buffer. + +- vim.iswindow(value) Returns 'true' (boolean, not string) if +- "value" is a window userdata and +- 'false' otherwise (see |lua-window|). +- + vim.window([arg]) If "arg" is a number, returns window with + number "arg" or 'nil' (nil value, not string) + if not found. Otherwise, if "toboolean(arg)" + is 'true' returns the first window or else the + current window. + + vim.command({cmd}) Executes the vim (ex-mode) command {cmd}. + Examples: > + :lua vim.command"set tw=60" +--- 122,142 ---- + 'true' returns the first buffer in the buffer + list or else the current buffer. + + vim.window([arg]) If "arg" is a number, returns window with + number "arg" or 'nil' (nil value, not string) + if not found. Otherwise, if "toboolean(arg)" + is 'true' returns the first window or else the + current window. + ++ vim.type({arg}) Returns the type of {arg}. It is equivalent to ++ Lua's "type" function, but returns "list", ++ "dict", "buffer", or "window" if {arg} is a ++ list, dictionary, buffer, or window, ++ respectively. Examples: > ++ :lua l = vim.list() ++ :lua print(type(l), vim.type(l)) ++ :" userdata list ++ < + vim.command({cmd}) Executes the vim (ex-mode) command {cmd}. + Examples: > + :lua vim.command"set tw=60" +*************** +*** 141,147 **** + Vim strings and numbers are directly converted + to Lua strings and numbers respectively. Vim + lists and dictionaries are converted to Lua +! tables (lists become integer-keyed tables). + Examples: > + :lua tw = vim.eval"&tw" + :lua print(vim.eval"{'a': 'one'}".a) +--- 147,153 ---- + Vim strings and numbers are directly converted + to Lua strings and numbers respectively. Vim + lists and dictionaries are converted to Lua +! userdata (see |lua-list| and |lua-dict|). + Examples: > + :lua tw = vim.eval"&tw" + :lua print(vim.eval"{'a': 'one'}".a) +*************** +*** 157,163 **** + + + ============================================================================== +! 3. Buffer userdata *lua-buffer* + + Buffer userdata represent vim buffers. A buffer userdata "b" has the following + properties and methods: +--- 163,234 ---- + + + ============================================================================== +! 3. List userdata *lua-list* +! +! List userdata represent vim lists, and the interface tries to follow closely +! Vim's syntax for lists. Since lists are objects, changes in list references in +! Lua are reflected in Vim and vice-versa. A list "l" has the following +! properties and methods: +! +! Properties +! ---------- +! o "#l" is the number of items in list "l", equivalent to "len(l)" +! in Vim. +! o "l[k]" returns the k-th item in "l"; "l" is zero-indexed, as in Vim. +! To modify the k-th item, simply do "l[k] = newitem"; in +! particular, "l[k] = nil" removes the k-th item from "l". +! o "l()" returns an iterator for "l". +! +! Methods +! ------- +! o "l:add(item)" appends "item" to the end of "l". +! o "l:insert(item[, pos])" inserts "item" at (optional) +! position "pos" in the list. The default value for "pos" is 0. +! +! Examples: +! > +! :let l = [1, 'item'] +! :lua l = vim.eval('l') -- same 'l' +! :lua l:add(vim.list()) +! :lua l[0] = math.pi +! :echo l[0] " 3.141593 +! :lua l[0] = nil -- remove first item +! :lua l:insert(true, 1) +! :lua print(l, #l, l[0], l[1], l[-1]) +! :lua for item in l() do print(item) end +! < +! +! ============================================================================== +! 4. Dict userdata *lua-dict* +! +! Similarly to list userdata, dict userdata represent vim dictionaries; since +! dictionaries are also objects, references are kept between Lua and Vim. A dict +! "d" has the following properties: +! +! Properties +! ---------- +! o "#d" is the number of items in dict "d", equivalent to "len(d)" +! in Vim. +! o "d.key" or "d['key']" returns the value at entry "key" in "d". +! To modify the entry at this key, simply do "d.key = newvalue"; in +! particular, "d.key = nil" removes the entry from "d". +! o "d()" returns an iterator for "d" and is equivalent to "items(d)" in +! Vim. +! +! Examples: +! > +! :let d = {'n':10} +! :lua d = vim.eval('d') -- same 'd' +! :lua print(d, d.n, #d) +! :let d.self = d +! :lua for k, v in d() do print(d, k, v) end +! :lua d.x = math.pi +! :lua d.self = nil -- remove entry +! :echo d +! < +! +! ============================================================================== +! 5. Buffer userdata *lua-buffer* + + Buffer userdata represent vim buffers. A buffer userdata "b" has the following + properties and methods: +*************** +*** 209,215 **** + < + + ============================================================================== +! 4. Window userdata *lua-window* + + Window objects represent vim windows. A window userdata "w" has the following + properties and methods: +--- 280,286 ---- + < + + ============================================================================== +! 6. Window userdata *lua-window* + + Window objects represent vim windows. A window userdata "w" has the following + properties and methods: +*************** +*** 241,244 **** + < + + ============================================================================== +! vim:tw=78:ts=8:ft=help:norl: +--- 312,340 ---- + < + + ============================================================================== +! 7. The luaeval function *lua-luaeval* +! +! The (dual) equivalent of "vim.eval" for passing Lua values to Vim is +! "luaeval". "luaeval" takes an expression string and an optional argument and +! returns the result of the expression. It is semantically equivalent in Lua to: +! > +! local chunkheader = "local _A = select(1, ...) return " +! function luaeval (expstr, arg) +! local chunk = assert(loadstring(chunkheader .. expstr, "luaeval")) +! return chunk(arg) -- return typval +! end +! < +! Note that "_A" receives the argument to "luaeval". Examples: > +! +! :echo luaeval('math.pi') +! :lua a = vim.list():add('newlist') +! :let a = luaeval('a') +! :echo a[0] " 'newlist' +! :function Rand(x,y) " random uniform between x and y +! : return luaeval('(_A.y-_A.x)*math.random()+_A.x', {'x':a:x,'y':a:y}) +! : endfunction +! :echo Rand(1,10) +! +! +! ============================================================================== +! vim:tw=78:ts=8:noet:ft=help:norl: +*** ../vim-7.3.489/src/eval.c 2012-03-28 16:49:25.000000000 +0200 +--- src/eval.c 2012-04-05 16:41:35.000000000 +0200 +*************** +*** 622,627 **** +--- 622,630 ---- + static void f_log __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_log10 __ARGS((typval_T *argvars, typval_T *rettv)); + #endif ++ #ifdef FEAT_LUA ++ static void f_luaeval __ARGS((typval_T *argvars, typval_T *rettv)); ++ #endif + static void f_map __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_maparg __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_mapcheck __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 6777,6782 **** +--- 6780,6789 ---- + /* v: vars */ + set_ref_in_ht(&vimvarht, copyID); + ++ #ifdef FEAT_LUA ++ set_ref_in_lua(copyID); ++ #endif ++ + /* + * 2. Free lists and dictionaries that are not referenced. + */ +*************** +*** 7946,7951 **** +--- 7953,7961 ---- + {"log", 1, 1, f_log}, + {"log10", 1, 1, f_log10}, + #endif ++ #ifdef FEAT_LUA ++ {"luaeval", 1, 2, f_luaeval}, ++ #endif + {"map", 2, 2, f_map}, + {"maparg", 1, 4, f_maparg}, + {"mapcheck", 1, 3, f_mapcheck}, +*************** +*** 13626,13631 **** +--- 13636,13658 ---- + } + #endif + ++ #ifdef FEAT_LUA ++ /* ++ * "luaeval()" function ++ */ ++ static void ++ f_luaeval(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ char_u *str; ++ char_u buf[NUMBUFLEN]; ++ ++ str = get_tv_string_buf(&argvars[0], buf); ++ do_luaeval(str, argvars + 1, rettv); ++ } ++ #endif ++ + /* + * "map()" function + */ +*** ../vim-7.3.489/src/if_lua.c 2011-12-08 16:00:12.000000000 +0100 +--- src/if_lua.c 2012-04-05 16:41:35.000000000 +0200 +*************** +*** 1,4 **** +! /* vi:set ts=8 sts=4 sw=4: + * + * VIM - Vi IMproved by Bram Moolenaar + * +--- 1,4 ---- +! /* vi:set ts=8 sts=4 sw=4 noet: + * + * VIM - Vi IMproved by Bram Moolenaar + * +*************** +*** 21,35 **** +--- 21,53 ---- + + #define LUAVIM_CHUNKNAME "vim chunk" + #define LUAVIM_NAME "vim" ++ #define LUAVIM_EVALNAME "luaeval" ++ #define LUAVIM_EVALHEADER "local _A=select(1,...) return " + + typedef buf_T *luaV_Buffer; + typedef win_T *luaV_Window; ++ typedef dict_T *luaV_Dict; ++ typedef list_T *luaV_List; + typedef void (*msgfunc_T)(char_u *); + ++ static const char LUAVIM_DICT[] = "dict"; ++ static const char LUAVIM_LIST[] = "list"; + static const char LUAVIM_BUFFER[] = "buffer"; + static const char LUAVIM_WINDOW[] = "window"; + static const char LUAVIM_FREE[] = "luaV_free"; ++ static const char LUAVIM_LUAEVAL[] = "luaV_luaeval"; ++ static const char LUAVIM_SETREF[] = "luaV_setref"; + ++ /* most functions are closures with a cache table as first upvalue; ++ * get/setudata manage references to vim userdata in cache table through ++ * object pointers (light userdata) */ ++ #define luaV_getudata(L, v) \ ++ lua_pushlightuserdata((L), (void *) (v)); \ ++ lua_rawget((L), lua_upvalueindex(1)) ++ #define luaV_setudata(L, v) \ ++ lua_pushlightuserdata((L), (void *) (v)); \ ++ lua_pushvalue((L), -2); \ ++ lua_rawset((L), lua_upvalueindex(1)) + #define luaV_getfield(L, s) \ + lua_pushlightuserdata((L), (void *)(s)); \ + lua_rawget((L), LUA_REGISTRYINDEX) +*************** +*** 38,43 **** +--- 56,70 ---- + #define luaV_msg(L) luaV_msgfunc((L), (msgfunc_T) msg) + #define luaV_emsg(L) luaV_msgfunc((L), (msgfunc_T) emsg) + ++ static luaV_List *luaV_pushlist (lua_State *L, list_T *lis); ++ static luaV_Dict *luaV_pushdict (lua_State *L, dict_T *dic); ++ ++ #if LUA_VERSION_NUM <= 501 ++ #define luaV_openlib(L, l, n) luaL_openlib(L, NULL, l, n) ++ #define luaL_typeerror luaL_typerror ++ #else ++ #define luaV_openlib luaL_setfuncs ++ #endif + + #ifdef DYNAMIC_LUA + +*************** +*** 54,85 **** + #endif + + /* lauxlib */ + #define luaL_register dll_luaL_register + #define luaL_typerror dll_luaL_typerror + #define luaL_checklstring dll_luaL_checklstring + #define luaL_checkinteger dll_luaL_checkinteger + #define luaL_optinteger dll_luaL_optinteger + #define luaL_checktype dll_luaL_checktype + #define luaL_error dll_luaL_error +- #define luaL_loadfile dll_luaL_loadfile +- #define luaL_loadbuffer dll_luaL_loadbuffer + #define luaL_newstate dll_luaL_newstate + #define luaL_buffinit dll_luaL_buffinit +- #define luaL_prepbuffer dll_luaL_prepbuffer + #define luaL_addlstring dll_luaL_addlstring + #define luaL_pushresult dll_luaL_pushresult + /* lua */ + #define lua_close dll_lua_close + #define lua_gettop dll_lua_gettop + #define lua_settop dll_lua_settop + #define lua_pushvalue dll_lua_pushvalue + #define lua_replace dll_lua_replace + #define lua_isnumber dll_lua_isnumber + #define lua_isstring dll_lua_isstring + #define lua_type dll_lua_type + #define lua_rawequal dll_lua_rawequal +- #define lua_tonumber dll_lua_tonumber +- #define lua_tointeger dll_lua_tointeger + #define lua_toboolean dll_lua_toboolean + #define lua_tolstring dll_lua_tolstring + #define lua_touserdata dll_lua_touserdata +--- 81,134 ---- + #endif + + /* lauxlib */ ++ #if LUA_VERSION_NUM <= 501 + #define luaL_register dll_luaL_register ++ #define luaL_prepbuffer dll_luaL_prepbuffer ++ #define luaL_openlib dll_luaL_openlib + #define luaL_typerror dll_luaL_typerror ++ #define luaL_loadfile dll_luaL_loadfile ++ #define luaL_loadbuffer dll_luaL_loadbuffer ++ #else ++ #define luaL_prepbuffsize dll_luaL_prepbuffsize ++ #define luaL_setfuncs dll_luaL_setfuncs ++ #define luaL_loadfilex dll_luaL_loadfilex ++ #define luaL_loadbufferx dll_luaL_loadbufferx ++ #define luaL_argerror dll_luaL_argerror ++ #endif + #define luaL_checklstring dll_luaL_checklstring + #define luaL_checkinteger dll_luaL_checkinteger + #define luaL_optinteger dll_luaL_optinteger + #define luaL_checktype dll_luaL_checktype + #define luaL_error dll_luaL_error + #define luaL_newstate dll_luaL_newstate + #define luaL_buffinit dll_luaL_buffinit + #define luaL_addlstring dll_luaL_addlstring + #define luaL_pushresult dll_luaL_pushresult + /* lua */ ++ #if LUA_VERSION_NUM <= 501 ++ #define lua_tonumber dll_lua_tonumber ++ #define lua_tointeger dll_lua_tointeger ++ #define lua_call dll_lua_call ++ #define lua_pcall dll_lua_pcall ++ #else ++ #define lua_tonumberx dll_lua_tonumberx ++ #define lua_tointegerx dll_lua_tointegerx ++ #define lua_callk dll_lua_callk ++ #define lua_pcallk dll_lua_pcallk ++ #define lua_getglobal dll_lua_getglobal ++ #define lua_setglobal dll_lua_setglobal ++ #define lua_typename dll_lua_typename ++ #endif + #define lua_close dll_lua_close + #define lua_gettop dll_lua_gettop + #define lua_settop dll_lua_settop + #define lua_pushvalue dll_lua_pushvalue + #define lua_replace dll_lua_replace ++ #define lua_remove dll_lua_remove + #define lua_isnumber dll_lua_isnumber + #define lua_isstring dll_lua_isstring + #define lua_type dll_lua_type + #define lua_rawequal dll_lua_rawequal + #define lua_toboolean dll_lua_toboolean + #define lua_tolstring dll_lua_tolstring + #define lua_touserdata dll_lua_touserdata +*************** +*** 94,109 **** + #define lua_pushlightuserdata dll_lua_pushlightuserdata + #define lua_getfield dll_lua_getfield + #define lua_rawget dll_lua_rawget + #define lua_createtable dll_lua_createtable + #define lua_newuserdata dll_lua_newuserdata + #define lua_getmetatable dll_lua_getmetatable + #define lua_setfield dll_lua_setfield + #define lua_rawset dll_lua_rawset + #define lua_rawseti dll_lua_rawseti +- #define lua_remove dll_lua_remove + #define lua_setmetatable dll_lua_setmetatable +- #define lua_call dll_lua_call +- #define lua_pcall dll_lua_pcall + /* libs */ + #define luaopen_base dll_luaopen_base + #define luaopen_table dll_luaopen_table +--- 143,156 ---- + #define lua_pushlightuserdata dll_lua_pushlightuserdata + #define lua_getfield dll_lua_getfield + #define lua_rawget dll_lua_rawget ++ #define lua_rawgeti dll_lua_rawgeti + #define lua_createtable dll_lua_createtable + #define lua_newuserdata dll_lua_newuserdata + #define lua_getmetatable dll_lua_getmetatable + #define lua_setfield dll_lua_setfield + #define lua_rawset dll_lua_rawset + #define lua_rawseti dll_lua_rawseti + #define lua_setmetatable dll_lua_setmetatable + /* libs */ + #define luaopen_base dll_luaopen_base + #define luaopen_table dll_luaopen_table +*************** +*** 116,147 **** + #define luaL_openlibs dll_luaL_openlibs + + /* lauxlib */ + void (*dll_luaL_register) (lua_State *L, const char *libname, const luaL_Reg *l); + int (*dll_luaL_typerror) (lua_State *L, int narg, const char *tname); + const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l); + lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg); + lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def); + void (*dll_luaL_checktype) (lua_State *L, int narg, int t); + int (*dll_luaL_error) (lua_State *L, const char *fmt, ...); +- int (*dll_luaL_loadfile) (lua_State *L, const char *filename); +- int (*dll_luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, const char *name); + lua_State *(*dll_luaL_newstate) (void); + void (*dll_luaL_buffinit) (lua_State *L, luaL_Buffer *B); +- char *(*dll_luaL_prepbuffer) (luaL_Buffer *B); + void (*dll_luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); + void (*dll_luaL_pushresult) (luaL_Buffer *B); + /* lua */ + void (*dll_lua_close) (lua_State *L); + int (*dll_lua_gettop) (lua_State *L); + void (*dll_lua_settop) (lua_State *L, int idx); + void (*dll_lua_pushvalue) (lua_State *L, int idx); + void (*dll_lua_replace) (lua_State *L, int idx); + int (*dll_lua_isnumber) (lua_State *L, int idx); + int (*dll_lua_isstring) (lua_State *L, int idx); + int (*dll_lua_type) (lua_State *L, int idx); + int (*dll_lua_rawequal) (lua_State *L, int idx1, int idx2); +- lua_Number (*dll_lua_tonumber) (lua_State *L, int idx); +- lua_Integer (*dll_lua_tointeger) (lua_State *L, int idx); + int (*dll_lua_toboolean) (lua_State *L, int idx); + const char *(*dll_lua_tolstring) (lua_State *L, int idx, size_t *len); + void *(*dll_lua_touserdata) (lua_State *L, int idx); +--- 163,218 ---- + #define luaL_openlibs dll_luaL_openlibs + + /* lauxlib */ ++ #if LUA_VERSION_NUM <= 501 + void (*dll_luaL_register) (lua_State *L, const char *libname, const luaL_Reg *l); ++ char *(*dll_luaL_prepbuffer) (luaL_Buffer *B); ++ void (*dll_luaL_openlib) (lua_State *L, const char *libname, const luaL_Reg *l, int nup); + int (*dll_luaL_typerror) (lua_State *L, int narg, const char *tname); ++ int (*dll_luaL_loadfile) (lua_State *L, const char *filename); ++ int (*dll_luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, const char *name); ++ #else ++ char *(*dll_luaL_prepbuffsize) (luaL_Buffer *B, size_t sz); ++ void (*dll_luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup); ++ int (*dll_luaL_loadfilex) (lua_State *L, const char *filename, const char *mode); ++ int (*dll_luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, const char *name, const char *mode); ++ int (*dll_luaL_argerror) (lua_State *L, int numarg, const char *extramsg); ++ #endif + const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l); + lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg); + lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def); + void (*dll_luaL_checktype) (lua_State *L, int narg, int t); + int (*dll_luaL_error) (lua_State *L, const char *fmt, ...); + lua_State *(*dll_luaL_newstate) (void); + void (*dll_luaL_buffinit) (lua_State *L, luaL_Buffer *B); + void (*dll_luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); + void (*dll_luaL_pushresult) (luaL_Buffer *B); + /* lua */ ++ #if LUA_VERSION_NUM <= 501 ++ lua_Number (*dll_lua_tonumber) (lua_State *L, int idx); ++ lua_Integer (*dll_lua_tointeger) (lua_State *L, int idx); ++ void (*dll_lua_call) (lua_State *L, int nargs, int nresults); ++ int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc); ++ #else ++ lua_Number (*dll_lua_tonumberx) (lua_State *L, int idx, int *isnum); ++ lua_Integer (*dll_lua_tointegerx) (lua_State *L, int idx, int *isnum); ++ void (*dll_lua_callk) (lua_State *L, int nargs, int nresults, int ctx, ++ lua_CFunction k); ++ int (*dll_lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, ++ int ctx, lua_CFunction k); ++ void (*dll_lua_getglobal) (lua_State *L, const char *var); ++ void (*dll_lua_setglobal) (lua_State *L, const char *var); ++ const char *(*dll_lua_typename) (lua_State *L, int tp); ++ #endif + void (*dll_lua_close) (lua_State *L); + int (*dll_lua_gettop) (lua_State *L); + void (*dll_lua_settop) (lua_State *L, int idx); + void (*dll_lua_pushvalue) (lua_State *L, int idx); + void (*dll_lua_replace) (lua_State *L, int idx); ++ void (*dll_lua_remove) (lua_State *L, int idx); + int (*dll_lua_isnumber) (lua_State *L, int idx); + int (*dll_lua_isstring) (lua_State *L, int idx); + int (*dll_lua_type) (lua_State *L, int idx); + int (*dll_lua_rawequal) (lua_State *L, int idx1, int idx2); + int (*dll_lua_toboolean) (lua_State *L, int idx); + const char *(*dll_lua_tolstring) (lua_State *L, int idx, size_t *len); + void *(*dll_lua_touserdata) (lua_State *L, int idx); +*************** +*** 156,171 **** + void (*dll_lua_pushlightuserdata) (lua_State *L, void *p); + void (*dll_lua_getfield) (lua_State *L, int idx, const char *k); + void (*dll_lua_rawget) (lua_State *L, int idx); + void (*dll_lua_createtable) (lua_State *L, int narr, int nrec); + void *(*dll_lua_newuserdata) (lua_State *L, size_t sz); + int (*dll_lua_getmetatable) (lua_State *L, int objindex); + void (*dll_lua_setfield) (lua_State *L, int idx, const char *k); + void (*dll_lua_rawset) (lua_State *L, int idx); + void (*dll_lua_rawseti) (lua_State *L, int idx, int n); +- void (*dll_lua_remove) (lua_State *L, int idx); + int (*dll_lua_setmetatable) (lua_State *L, int objindex); +- void (*dll_lua_call) (lua_State *L, int nargs, int nresults); +- int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc); + /* libs */ + int (*dll_luaopen_base) (lua_State *L); + int (*dll_luaopen_table) (lua_State *L); +--- 227,240 ---- + void (*dll_lua_pushlightuserdata) (lua_State *L, void *p); + void (*dll_lua_getfield) (lua_State *L, int idx, const char *k); + void (*dll_lua_rawget) (lua_State *L, int idx); ++ void (*dll_lua_rawgeti) (lua_State *L, int idx, int n); + void (*dll_lua_createtable) (lua_State *L, int narr, int nrec); + void *(*dll_lua_newuserdata) (lua_State *L, size_t sz); + int (*dll_lua_getmetatable) (lua_State *L, int objindex); + void (*dll_lua_setfield) (lua_State *L, int idx, const char *k); + void (*dll_lua_rawset) (lua_State *L, int idx); + void (*dll_lua_rawseti) (lua_State *L, int idx, int n); + int (*dll_lua_setmetatable) (lua_State *L, int objindex); + /* libs */ + int (*dll_luaopen_base) (lua_State *L); + int (*dll_luaopen_table) (lua_State *L); +*************** +*** 185,216 **** + + static const luaV_Reg luaV_dll[] = { + /* lauxlib */ + {"luaL_register", (luaV_function) &dll_luaL_register}, + {"luaL_typerror", (luaV_function) &dll_luaL_typerror}, + {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring}, + {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger}, + {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger}, + {"luaL_checktype", (luaV_function) &dll_luaL_checktype}, + {"luaL_error", (luaV_function) &dll_luaL_error}, +- {"luaL_loadfile", (luaV_function) &dll_luaL_loadfile}, +- {"luaL_loadbuffer", (luaV_function) &dll_luaL_loadbuffer}, + {"luaL_newstate", (luaV_function) &dll_luaL_newstate}, + {"luaL_buffinit", (luaV_function) &dll_luaL_buffinit}, +- {"luaL_prepbuffer", (luaV_function) &dll_luaL_prepbuffer}, + {"luaL_addlstring", (luaV_function) &dll_luaL_addlstring}, + {"luaL_pushresult", (luaV_function) &dll_luaL_pushresult}, + /* lua */ + {"lua_close", (luaV_function) &dll_lua_close}, + {"lua_gettop", (luaV_function) &dll_lua_gettop}, + {"lua_settop", (luaV_function) &dll_lua_settop}, + {"lua_pushvalue", (luaV_function) &dll_lua_pushvalue}, + {"lua_replace", (luaV_function) &dll_lua_replace}, + {"lua_isnumber", (luaV_function) &dll_lua_isnumber}, + {"lua_isstring", (luaV_function) &dll_lua_isstring}, + {"lua_type", (luaV_function) &dll_lua_type}, + {"lua_rawequal", (luaV_function) &dll_lua_rawequal}, +- {"lua_tonumber", (luaV_function) &dll_lua_tonumber}, +- {"lua_tointeger", (luaV_function) &dll_lua_tointeger}, + {"lua_toboolean", (luaV_function) &dll_lua_toboolean}, + {"lua_tolstring", (luaV_function) &dll_lua_tolstring}, + {"lua_touserdata", (luaV_function) &dll_lua_touserdata}, +--- 254,307 ---- + + static const luaV_Reg luaV_dll[] = { + /* lauxlib */ ++ #if LUA_VERSION_NUM <= 501 + {"luaL_register", (luaV_function) &dll_luaL_register}, ++ {"luaL_prepbuffer", (luaV_function) &dll_luaL_prepbuffer}, ++ {"luaL_openlib", (luaV_function) &dll_luaL_openlib}, + {"luaL_typerror", (luaV_function) &dll_luaL_typerror}, ++ {"luaL_loadfile", (luaV_function) &dll_luaL_loadfile}, ++ {"luaL_loadbuffer", (luaV_function) &dll_luaL_loadbuffer}, ++ #else ++ {"luaL_prepbuffsize", (luaV_function) &dll_luaL_prepbuffsize}, ++ {"luaL_setfuncs", (luaV_function) &dll_luaL_setfuncs}, ++ {"luaL_loadfilex", (luaV_function) &dll_luaL_loadfilex}, ++ {"luaL_loadbufferx", (luaV_function) &dll_luaL_loadbufferx}, ++ {"luaL_argerror", (luaV_function) &dll_luaL_argerror}, ++ #endif + {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring}, + {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger}, + {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger}, + {"luaL_checktype", (luaV_function) &dll_luaL_checktype}, + {"luaL_error", (luaV_function) &dll_luaL_error}, + {"luaL_newstate", (luaV_function) &dll_luaL_newstate}, + {"luaL_buffinit", (luaV_function) &dll_luaL_buffinit}, + {"luaL_addlstring", (luaV_function) &dll_luaL_addlstring}, + {"luaL_pushresult", (luaV_function) &dll_luaL_pushresult}, + /* lua */ ++ #if LUA_VERSION_NUM <= 501 ++ {"lua_tonumber", (luaV_function) &dll_lua_tonumber}, ++ {"lua_tointeger", (luaV_function) &dll_lua_tointeger}, ++ {"lua_call", (luaV_function) &dll_lua_call}, ++ {"lua_pcall", (luaV_function) &dll_lua_pcall}, ++ #else ++ {"lua_tonumberx", (luaV_function) &dll_lua_tonumberx}, ++ {"lua_tointegerx", (luaV_function) &dll_lua_tointegerx}, ++ {"lua_callk", (luaV_function) &dll_lua_callk}, ++ {"lua_pcallk", (luaV_function) &dll_lua_pcallk}, ++ {"lua_getglobal", (luaV_function) &dll_lua_getglobal}, ++ {"lua_setglobal", (luaV_function) &dll_lua_setglobal}, ++ {"lua_typename", (luaV_function) &dll_lua_typename}, ++ #endif + {"lua_close", (luaV_function) &dll_lua_close}, + {"lua_gettop", (luaV_function) &dll_lua_gettop}, + {"lua_settop", (luaV_function) &dll_lua_settop}, + {"lua_pushvalue", (luaV_function) &dll_lua_pushvalue}, + {"lua_replace", (luaV_function) &dll_lua_replace}, ++ {"lua_remove", (luaV_function) &dll_lua_remove}, + {"lua_isnumber", (luaV_function) &dll_lua_isnumber}, + {"lua_isstring", (luaV_function) &dll_lua_isstring}, + {"lua_type", (luaV_function) &dll_lua_type}, + {"lua_rawequal", (luaV_function) &dll_lua_rawequal}, + {"lua_toboolean", (luaV_function) &dll_lua_toboolean}, + {"lua_tolstring", (luaV_function) &dll_lua_tolstring}, + {"lua_touserdata", (luaV_function) &dll_lua_touserdata}, +*************** +*** 225,240 **** + {"lua_pushlightuserdata", (luaV_function) &dll_lua_pushlightuserdata}, + {"lua_getfield", (luaV_function) &dll_lua_getfield}, + {"lua_rawget", (luaV_function) &dll_lua_rawget}, + {"lua_createtable", (luaV_function) &dll_lua_createtable}, + {"lua_newuserdata", (luaV_function) &dll_lua_newuserdata}, + {"lua_getmetatable", (luaV_function) &dll_lua_getmetatable}, + {"lua_setfield", (luaV_function) &dll_lua_setfield}, + {"lua_rawset", (luaV_function) &dll_lua_rawset}, + {"lua_rawseti", (luaV_function) &dll_lua_rawseti}, +- {"lua_remove", (luaV_function) &dll_lua_remove}, + {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable}, +- {"lua_call", (luaV_function) &dll_lua_call}, +- {"lua_pcall", (luaV_function) &dll_lua_pcall}, + /* libs */ + {"luaopen_base", (luaV_function) &dll_luaopen_base}, + {"luaopen_table", (luaV_function) &dll_luaopen_table}, +--- 316,329 ---- + {"lua_pushlightuserdata", (luaV_function) &dll_lua_pushlightuserdata}, + {"lua_getfield", (luaV_function) &dll_lua_getfield}, + {"lua_rawget", (luaV_function) &dll_lua_rawget}, ++ {"lua_rawgeti", (luaV_function) &dll_lua_rawgeti}, + {"lua_createtable", (luaV_function) &dll_lua_createtable}, + {"lua_newuserdata", (luaV_function) &dll_lua_newuserdata}, + {"lua_getmetatable", (luaV_function) &dll_lua_getmetatable}, + {"lua_setfield", (luaV_function) &dll_lua_setfield}, + {"lua_rawset", (luaV_function) &dll_lua_rawset}, + {"lua_rawseti", (luaV_function) &dll_lua_rawseti}, + {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable}, + /* libs */ + {"luaopen_base", (luaV_function) &dll_luaopen_base}, + {"luaopen_table", (luaV_function) &dll_luaopen_table}, +*************** +*** 294,299 **** +--- 383,398 ---- + + #endif /* DYNAMIC_LUA */ + ++ #if LUA_VERSION_NUM > 501 ++ static int ++ luaL_typeerror (lua_State *L, int narg, const char *tname) ++ { ++ const char *msg = lua_pushfstring(L, "%s expected, got %s", ++ tname, luaL_typename(L, narg)); ++ return luaL_argerror(L, narg, msg); ++ } ++ #endif ++ + + /* ======= Internal ======= */ + +*************** +*** 327,343 **** + } + + static void * + luaV_checkudata(lua_State *L, int ud, const char *tname) + { + void *p = luaV_toudata(L, ud, tname); +! if (p == NULL) luaL_typerror(L, ud, tname); + return p; + } + + static void + luaV_pushtypval(lua_State *L, typval_T *tv) + { +! if (tv == NULL) luaL_error(L, "null type"); + switch (tv->v_type) + { + case VAR_STRING: +--- 426,460 ---- + } + + static void * ++ luaV_checkcache(lua_State *L, void *p) ++ { ++ luaV_getudata(L, p); ++ if (lua_isnil(L, -1)) luaL_error(L, "invalid object"); ++ lua_pop(L, 1); ++ return p; ++ } ++ ++ #define luaV_unbox(L,luatyp,ud) (*((luatyp *) lua_touserdata((L),(ud)))) ++ ++ #define luaV_checkvalid(L,luatyp,ud) \ ++ luaV_checkcache((L), (void *) luaV_unbox((L),luatyp,(ud))) ++ ++ static void * + luaV_checkudata(lua_State *L, int ud, const char *tname) + { + void *p = luaV_toudata(L, ud, tname); +! if (p == NULL) luaL_typeerror(L, ud, tname); + return p; + } + + static void + luaV_pushtypval(lua_State *L, typval_T *tv) + { +! if (tv == NULL) +! { +! lua_pushnil(L); +! return; +! } + switch (tv->v_type) + { + case VAR_STRING: +*************** +*** 351,418 **** + lua_pushnumber(L, (lua_Number) tv->vval.v_float); + break; + #endif +! case VAR_LIST: { +! list_T *l = tv->vval.v_list; + +! if (l != NULL) + { +! /* check cache */ +! lua_pushlightuserdata(L, (void *) l); +! lua_rawget(L, LUA_ENVIRONINDEX); +! if (lua_isnil(L, -1)) /* not interned? */ + { +! listitem_T *li; +! int n = 0; +! lua_pop(L, 1); /* nil */ +! lua_newtable(L); +! lua_pushlightuserdata(L, (void *) l); +! lua_pushvalue(L, -2); +! lua_rawset(L, LUA_ENVIRONINDEX); +! for (li = l->lv_first; li != NULL; li = li->li_next) +! { +! luaV_pushtypval(L, &li->li_tv); +! lua_rawseti(L, -2, ++n); +! } + } +! } +! else lua_pushnil(L); +! break; +! } +! case VAR_DICT: { +! dict_T *d = tv->vval.v_dict; +! +! if (d != NULL) +! { +! /* check cache */ +! lua_pushlightuserdata(L, (void *) d); +! lua_rawget(L, LUA_ENVIRONINDEX); +! if (lua_isnil(L, -1)) /* not interned? */ + { +! hashtab_T *ht = &d->dv_hashtab; +! hashitem_T *hi; +! int n = ht->ht_used; /* remaining items */ +! lua_pop(L, 1); /* nil */ +! lua_newtable(L); +! lua_pushlightuserdata(L, (void *) d); +! lua_pushvalue(L, -2); +! lua_rawset(L, LUA_ENVIRONINDEX); +! for (hi = ht->ht_array; n > 0; hi++) +! { +! if (!HASHITEM_EMPTY(hi)) +! { +! dictitem_T *di = dict_lookup(hi); +! luaV_pushtypval(L, &di->di_tv); +! lua_setfield(L, -2, (char *) hi->hi_key); +! n--; +! } +! } + } + } +- else lua_pushnil(L); + break; + } + default: +! luaL_error(L, "invalid type"); + } + } + +--- 468,537 ---- + lua_pushnumber(L, (lua_Number) tv->vval.v_float); + break; + #endif +! case VAR_LIST: +! luaV_pushlist(L, tv->vval.v_list); +! break; +! case VAR_DICT: +! luaV_pushdict(L, tv->vval.v_dict); +! break; +! default: +! lua_pushnil(L); +! } +! } + +! /* converts lua value at 'pos' to typval 'tv' */ +! static void +! luaV_totypval (lua_State *L, int pos, typval_T *tv) +! { +! switch(lua_type(L, pos)) { +! case LUA_TBOOLEAN: +! tv->v_type = VAR_NUMBER; +! tv->vval.v_number = (varnumber_T) lua_toboolean(L, pos); +! break; +! case LUA_TSTRING: +! tv->v_type = VAR_STRING; +! tv->vval.v_string = vim_strsave((char_u *) lua_tostring(L, pos)); +! break; +! case LUA_TNUMBER: +! #ifdef FEAT_FLOAT +! tv->v_type = VAR_FLOAT; +! tv->vval.v_float = (float_T) lua_tonumber(L, pos); +! #else +! tv->v_type = VAR_NUMBER; +! tv->vval.v_number = (varnumber_T) lua_tointeger(L, pos); +! #endif +! break; +! case LUA_TUSERDATA: { +! void *p = lua_touserdata(L, pos); +! if (lua_getmetatable(L, pos)) /* has metatable? */ + { +! /* check list */ +! luaV_getfield(L, LUAVIM_LIST); +! if (lua_rawequal(L, -1, -2)) + { +! tv->v_type = VAR_LIST; +! tv->vval.v_list = *((luaV_List *) p); +! ++tv->vval.v_list->lv_refcount; +! lua_pop(L, 2); /* MTs */ +! return; + } +! /* check dict */ +! luaV_getfield(L, LUAVIM_DICT); +! if (lua_rawequal(L, -1, -3)) + { +! tv->v_type = VAR_DICT; +! tv->vval.v_dict = *((luaV_Dict *) p); +! ++tv->vval.v_dict->dv_refcount; +! lua_pop(L, 3); /* MTs */ +! return; + } ++ lua_pop(L, 3); /* MTs */ + } + break; + } + default: +! tv->v_type = VAR_NUMBER; +! tv->vval.v_number = 0; + } + } + +*************** +*** 481,569 **** + lua_pop(L, 2); /* original and modified strings */ + } + + +! /* ======= Buffer type ======= */ + +! static luaV_Buffer * +! luaV_newbuffer(lua_State *L, buf_T *buf) + { +! luaV_Buffer *b = (luaV_Buffer *) lua_newuserdata(L, sizeof(luaV_Buffer)); +! *b = buf; +! lua_pushlightuserdata(L, (void *) buf); +! lua_pushvalue(L, -2); +! lua_rawset(L, LUA_ENVIRONINDEX); /* env[buf] = udata */ +! /* to avoid GC, store as key in env */ +! lua_pushvalue(L, -1); +! lua_pushboolean(L, 1); +! lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = true */ +! /* set metatable */ +! luaV_getfield(L, LUAVIM_BUFFER); + lua_setmetatable(L, -2); +! return b; + } + +! static luaV_Buffer * +! luaV_pushbuffer (lua_State *L, buf_T *buf) + { +! luaV_Buffer *b = NULL; +! if (buf == NULL) +! lua_pushnil(L); +! else { +! lua_pushlightuserdata(L, (void *) buf); +! lua_rawget(L, LUA_ENVIRONINDEX); +! if (lua_isnil(L, -1)) /* not interned? */ + { +! lua_pop(L, 1); +! b = luaV_newbuffer(L, buf); + } + else +! b = (luaV_Buffer *) lua_touserdata(L, -1); + } +! return b; + } + +! /* Buffer metamethods */ + + static int +! luaV_buffer_tostring(lua_State *L) + { +! lua_pushfstring(L, "%s: %p", LUAVIM_BUFFER, lua_touserdata(L, 1)); + return 1; + } + + static int + luaV_buffer_len(lua_State *L) + { +! luaV_Buffer *b = lua_touserdata(L, 1); +! lua_pushinteger(L, (*b)->b_ml.ml_line_count); + return 1; + } + + static int + luaV_buffer_call(lua_State *L) + { +! luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1); + lua_settop(L, 1); +! set_curbuf(*b, DOBUF_SPLIT); + return 1; + } + + static int + luaV_buffer_index(lua_State *L) + { +! luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1); + linenr_T n = (linenr_T) lua_tointeger(L, 2); +! if (n > 0 && n <= (*b)->b_ml.ml_line_count) +! luaV_pushline(L, *b, n); + else if (lua_isstring(L, 2)) + { + const char *s = lua_tostring(L, 2); + if (strncmp(s, "name", 4) == 0) +! lua_pushstring(L, (char *) (*b)->b_sfname); + else if (strncmp(s, "fname", 5) == 0) +! lua_pushstring(L, (char *) (*b)->b_ffname); + else if (strncmp(s, "number", 6) == 0) +! lua_pushinteger(L, (*b)->b_fnum); + /* methods */ + else if (strncmp(s, "insert", 6) == 0 + || strncmp(s, "next", 4) == 0 +--- 600,1107 ---- + lua_pop(L, 2); /* original and modified strings */ + } + ++ #define luaV_newtype(typ,tname,luatyp,luatname) \ ++ static luatyp * \ ++ luaV_new##tname (lua_State *L, typ *obj) \ ++ { \ ++ luatyp *o = (luatyp *) lua_newuserdata(L, sizeof(luatyp)); \ ++ *o = obj; \ ++ luaV_setudata(L, obj); /* cache[obj] = udata */ \ ++ luaV_getfield(L, luatname); \ ++ lua_setmetatable(L, -2); \ ++ return o; \ ++ } ++ ++ #define luaV_pushtype(typ,tname,luatyp) \ ++ static luatyp * \ ++ luaV_push##tname (lua_State *L, typ *obj) \ ++ { \ ++ luatyp *o = NULL; \ ++ if (obj == NULL) \ ++ lua_pushnil(L); \ ++ else { \ ++ luaV_getudata(L, obj); \ ++ if (lua_isnil(L, -1)) /* not interned? */ \ ++ { \ ++ lua_pop(L, 1); \ ++ o = luaV_new##tname(L, obj); \ ++ } \ ++ else \ ++ o = (luatyp *) lua_touserdata(L, -1); \ ++ } \ ++ return o; \ ++ } ++ ++ #define luaV_type_tostring(tname,luatname) \ ++ static int \ ++ luaV_##tname##_tostring (lua_State *L) \ ++ { \ ++ lua_pushfstring(L, "%s: %p", luatname, lua_touserdata(L, 1)); \ ++ return 1; \ ++ } ++ + +! /* adapted from eval.c */ +! +! #define listitem_alloc() (listitem_T *)alloc(sizeof(listitem_T)) +! +! static listitem_T * +! list_find (list_T *l, long n) +! { +! listitem_T *li; +! if (l == NULL || n < -l->lv_len || n >= l->lv_len) +! return NULL; +! if (n < 0) /* search backward? */ +! for (li = l->lv_last; n < -1; li = li->li_prev) +! n++; +! else /* search forward */ +! for (li = l->lv_first; n > 0; li = li->li_next) +! n--; +! return li; +! } + +! static void +! list_remove (list_T *l, listitem_T *li) + { +! listwatch_T *lw; +! --l->lv_len; +! /* fix watchers */ +! for (lw = l->lv_watch; lw != NULL; lw = lw->lw_next) +! if (lw->lw_item == li) +! lw->lw_item = li->li_next; +! /* fix list pointers */ +! if (li->li_next == NULL) /* last? */ +! l->lv_last = li->li_prev; +! else +! li->li_next->li_prev = li->li_prev; +! if (li->li_prev == NULL) /* first? */ +! l->lv_first = li->li_next; +! else +! li->li_prev->li_next = li->li_next; +! l->lv_idx_item = NULL; +! } +! +! static void +! list_append(list_T *l, listitem_T *item) +! { +! if (l->lv_last == NULL) /* empty list? */ +! l->lv_first = item; +! else +! l->lv_last->li_next = item; +! item->li_prev = l->lv_last; +! item->li_next = NULL; +! l->lv_last = item; +! ++l->lv_len; +! } +! +! static int +! list_insert_tv(list_T *l, typval_T *tv, listitem_T *item) +! { +! listitem_T *ni = listitem_alloc(); +! +! if (ni == NULL) +! return FAIL; +! copy_tv(tv, &ni->li_tv); +! if (item == NULL) +! list_append(l, ni); +! else +! { +! ni->li_prev = item->li_prev; +! ni->li_next = item; +! if (item->li_prev == NULL) +! { +! l->lv_first = ni; +! ++l->lv_idx; +! } +! else +! { +! item->li_prev->li_next = ni; +! l->lv_idx_item = NULL; +! } +! item->li_prev = ni; +! ++l->lv_len; +! } +! return OK; +! } +! +! /* set references */ +! +! static void set_ref_in_tv (typval_T *tv, int copyID); +! +! static void +! set_ref_in_dict(dict_T *d, int copyID) +! { +! hashtab_T *ht = &d->dv_hashtab; +! int n = ht->ht_used; +! hashitem_T *hi; +! for (hi = ht->ht_array; n > 0; ++hi) +! if (!HASHITEM_EMPTY(hi)) +! { +! dictitem_T *di = dict_lookup(hi); +! set_ref_in_tv(&di->di_tv, copyID); +! --n; +! } +! } +! +! static void +! set_ref_in_list(list_T *l, int copyID) +! { +! listitem_T *li; +! for (li = l->lv_first; li != NULL; li = li->li_next) +! set_ref_in_tv(&li->li_tv, copyID); +! } +! +! static void +! set_ref_in_tv(typval_T *tv, int copyID) +! { +! if (tv->v_type == VAR_LIST) +! { +! list_T *l = tv->vval.v_list; +! if (l != NULL && l->lv_copyID != copyID) +! { +! l->lv_copyID = copyID; +! set_ref_in_list(l, copyID); +! } +! } +! else if (tv->v_type == VAR_DICT) +! { +! dict_T *d = tv->vval.v_dict; +! if (d != NULL && d->dv_copyID != copyID) +! { +! d->dv_copyID = copyID; +! set_ref_in_dict(d, copyID); +! } +! } +! } +! +! +! /* ======= List type ======= */ +! +! static luaV_List * +! luaV_newlist (lua_State *L, list_T *lis) +! { +! luaV_List *l = (luaV_List *) lua_newuserdata(L, sizeof(luaV_List)); +! *l = lis; +! lis->lv_refcount++; /* reference in Lua */ +! luaV_setudata(L, lis); /* cache[lis] = udata */ +! luaV_getfield(L, LUAVIM_LIST); + lua_setmetatable(L, -2); +! return l; + } + +! luaV_pushtype(list_T, list, luaV_List) +! luaV_type_tostring(list, LUAVIM_LIST) +! +! static int +! luaV_list_gc (lua_State *L) + { +! list_unref(luaV_unbox(L, luaV_List, 1)); +! return 0; +! } +! +! static int +! luaV_list_len (lua_State *L) +! { +! list_T *l = luaV_unbox(L, luaV_List, 1); +! lua_pushinteger(L, (l == NULL) ? 0 : (int) l->lv_len); +! return 1; +! } +! +! static int +! luaV_list_iter (lua_State *L) +! { +! listitem_T *li = (listitem_T *) lua_touserdata(L, lua_upvalueindex(2)); +! if (li == NULL) return 0; +! luaV_pushtypval(L, &li->li_tv); +! lua_pushlightuserdata(L, (void *) li->li_next); +! lua_replace(L, lua_upvalueindex(2)); +! return 1; +! } +! +! static int +! luaV_list_call (lua_State *L) +! { +! list_T *l = luaV_unbox(L, luaV_List, 1); +! lua_pushvalue(L, lua_upvalueindex(1)); /* pass cache table along */ +! lua_pushlightuserdata(L, (void *) l->lv_first); +! lua_pushcclosure(L, luaV_list_iter, 2); +! return 1; +! } +! +! static int +! luaV_list_index (lua_State *L) +! { +! list_T *l = luaV_unbox(L, luaV_List, 1); +! if (lua_isnumber(L, 2)) /* list item? */ +! { +! listitem_T *li = list_find(l, (long) luaL_checkinteger(L, 2)); +! if (li == NULL) +! lua_pushnil(L); +! else +! luaV_pushtypval(L, &li->li_tv); +! } +! else if (lua_isstring(L, 2)) /* method? */ +! { +! const char *s = lua_tostring(L, 2); +! if (strncmp(s, "add", 3) == 0 +! || strncmp(s, "insert", 6) == 0 +! || strncmp(s, "extend", 6) == 0) + { +! lua_getmetatable(L, 1); +! lua_getfield(L, -1, s); + } + else +! lua_pushnil(L); + } +! else +! lua_pushnil(L); +! return 1; + } + +! static int +! luaV_list_newindex (lua_State *L) +! { +! list_T *l = luaV_unbox(L, luaV_List, 1); +! long n = (long) luaL_checkinteger(L, 2); +! listitem_T *li; +! if (l->lv_lock) +! luaL_error(L, "list is locked"); +! li = list_find(l, n); +! if (li == NULL) return 0; +! if (lua_isnil(L, 3)) /* remove? */ +! { +! list_remove(l, li); +! clear_tv(&li->li_tv); +! vim_free(li); +! } +! else +! { +! typval_T v; +! luaV_totypval(L, 3, &v); +! clear_tv(&li->li_tv); +! copy_tv(&v, &li->li_tv); +! } +! return 0; +! } + + static int +! luaV_list_add (lua_State *L) + { +! luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST); +! list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis); +! listitem_T *li; +! if (l->lv_lock) +! luaL_error(L, "list is locked"); +! li = listitem_alloc(); +! if (li != NULL) +! { +! typval_T v; +! lua_settop(L, 2); +! luaV_totypval(L, 2, &v); +! copy_tv(&v, &li->li_tv); +! list_append(l, li); +! } +! lua_settop(L, 1); + return 1; + } + + static int ++ luaV_list_insert (lua_State *L) ++ { ++ luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST); ++ list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis); ++ long pos = luaL_optlong(L, 3, 0); ++ listitem_T *li = NULL; ++ typval_T v; ++ if (l->lv_lock) ++ luaL_error(L, "list is locked"); ++ if (pos < l->lv_len) ++ { ++ li = list_find(l, pos); ++ if (li == NULL) ++ luaL_error(L, "invalid position"); ++ } ++ lua_settop(L, 2); ++ luaV_totypval(L, 2, &v); ++ list_insert_tv(l, &v, li); ++ lua_settop(L, 1); ++ return 1; ++ } ++ ++ static const luaL_Reg luaV_List_mt[] = { ++ {"__tostring", luaV_list_tostring}, ++ {"__gc", luaV_list_gc}, ++ {"__len", luaV_list_len}, ++ {"__call", luaV_list_call}, ++ {"__index", luaV_list_index}, ++ {"__newindex", luaV_list_newindex}, ++ {"add", luaV_list_add}, ++ {"insert", luaV_list_insert}, ++ {NULL, NULL} ++ }; ++ ++ ++ /* ======= Dict type ======= */ ++ ++ static luaV_Dict * ++ luaV_newdict (lua_State *L, dict_T *dic) ++ { ++ luaV_Dict *d = (luaV_Dict *) lua_newuserdata(L, sizeof(luaV_Dict)); ++ *d = dic; ++ dic->dv_refcount++; /* reference in Lua */ ++ luaV_setudata(L, dic); /* cache[dic] = udata */ ++ luaV_getfield(L, LUAVIM_DICT); ++ lua_setmetatable(L, -2); ++ return d; ++ } ++ ++ luaV_pushtype(dict_T, dict, luaV_Dict) ++ luaV_type_tostring(dict, LUAVIM_DICT) ++ ++ static int ++ luaV_dict_gc (lua_State *L) ++ { ++ dict_unref(luaV_unbox(L, luaV_Dict, 1)); ++ return 0; ++ } ++ ++ static int ++ luaV_dict_len (lua_State *L) ++ { ++ dict_T *d = luaV_unbox(L, luaV_Dict, 1); ++ lua_pushinteger(L, (d == NULL) ? 0 : (int) d->dv_hashtab.ht_used); ++ return 1; ++ } ++ ++ static int ++ luaV_dict_iter (lua_State *L) ++ { ++ hashitem_T *hi = (hashitem_T *) lua_touserdata(L, lua_upvalueindex(2)); ++ int n = lua_tointeger(L, lua_upvalueindex(3)); ++ dictitem_T *di; ++ if (n <= 0) return 0; ++ while (HASHITEM_EMPTY(hi)) hi++; ++ di = dict_lookup(hi); ++ lua_pushstring(L, (char *) hi->hi_key); ++ luaV_pushtypval(L, &di->di_tv); ++ lua_pushlightuserdata(L, (void *) (hi + 1)); ++ lua_replace(L, lua_upvalueindex(2)); ++ lua_pushinteger(L, n - 1); ++ lua_replace(L, lua_upvalueindex(3)); ++ return 2; ++ } ++ ++ static int ++ luaV_dict_call (lua_State *L) ++ { ++ dict_T *d = luaV_unbox(L, luaV_Dict, 1); ++ hashtab_T *ht = &d->dv_hashtab; ++ lua_pushvalue(L, lua_upvalueindex(1)); /* pass cache table along */ ++ lua_pushlightuserdata(L, (void *) ht->ht_array); ++ lua_pushinteger(L, ht->ht_used); /* # remaining items */ ++ lua_pushcclosure(L, luaV_dict_iter, 3); ++ return 1; ++ } ++ ++ static int ++ luaV_dict_index (lua_State *L) ++ { ++ dict_T *d = luaV_unbox(L, luaV_Dict, 1); ++ char_u *key = (char_u *) luaL_checkstring(L, 2); ++ dictitem_T *di = dict_find(d, key, -1); ++ if (di == NULL) ++ lua_pushnil(L); ++ else ++ luaV_pushtypval(L, &di->di_tv); ++ return 1; ++ } ++ ++ static int ++ luaV_dict_newindex (lua_State *L) ++ { ++ dict_T *d = luaV_unbox(L, luaV_Dict, 1); ++ char_u *key = (char_u *) luaL_checkstring(L, 2); ++ dictitem_T *di; ++ if (d->dv_lock) ++ luaL_error(L, "dict is locked"); ++ di = dict_find(d, key, -1); ++ if (di == NULL) /* non-existing key? */ ++ { ++ if (lua_isnil(L, 3)) return 0; ++ di = dictitem_alloc(key); ++ if (di == NULL) return 0; ++ if (dict_add(d, di) == FAIL) ++ { ++ vim_free(di); ++ return 0; ++ } ++ } ++ else ++ clear_tv(&di->di_tv); ++ if (lua_isnil(L, 3)) /* remove? */ ++ { ++ hashitem_T *hi = hash_find(&d->dv_hashtab, di->di_key); ++ hash_remove(&d->dv_hashtab, hi); ++ dictitem_free(di); ++ } ++ else { ++ typval_T v; ++ luaV_totypval(L, 3, &v); ++ copy_tv(&v, &di->di_tv); ++ } ++ return 0; ++ } ++ ++ static const luaL_Reg luaV_Dict_mt[] = { ++ {"__tostring", luaV_dict_tostring}, ++ {"__gc", luaV_dict_gc}, ++ {"__len", luaV_dict_len}, ++ {"__call", luaV_dict_call}, ++ {"__index", luaV_dict_index}, ++ {"__newindex", luaV_dict_newindex}, ++ {NULL, NULL} ++ }; ++ ++ ++ /* ======= Buffer type ======= */ ++ ++ luaV_newtype(buf_T, buffer, luaV_Buffer, LUAVIM_BUFFER) ++ luaV_pushtype(buf_T, buffer, luaV_Buffer) ++ luaV_type_tostring(buffer, LUAVIM_BUFFER) ++ ++ static int + luaV_buffer_len(lua_State *L) + { +! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1); +! lua_pushinteger(L, b->b_ml.ml_line_count); + return 1; + } + + static int + luaV_buffer_call(lua_State *L) + { +! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1); + lua_settop(L, 1); +! set_curbuf(b, DOBUF_SPLIT); + return 1; + } + + static int + luaV_buffer_index(lua_State *L) + { +! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1); + linenr_T n = (linenr_T) lua_tointeger(L, 2); +! if (n > 0 && n <= b->b_ml.ml_line_count) +! luaV_pushline(L, b, n); + else if (lua_isstring(L, 2)) + { + const char *s = lua_tostring(L, 2); + if (strncmp(s, "name", 4) == 0) +! lua_pushstring(L, (char *) b->b_sfname); + else if (strncmp(s, "fname", 5) == 0) +! lua_pushstring(L, (char *) b->b_ffname); + else if (strncmp(s, "number", 6) == 0) +! lua_pushinteger(L, b->b_fnum); + /* methods */ + else if (strncmp(s, "insert", 6) == 0 + || strncmp(s, "next", 4) == 0 +*************** +*** 584,600 **** + static int + luaV_buffer_newindex(lua_State *L) + { +! luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1); + linenr_T n = (linenr_T) luaL_checkinteger(L, 2); + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif +! if (n < 1 || n > (*b)->b_ml.ml_line_count) + luaL_error(L, "invalid line number"); + if (lua_isnil(L, 3)) /* delete line */ + { + buf_T *buf = curbuf; +! curbuf = *b; + if (u_savedel(n, 1L) == FAIL) + { + curbuf = buf; +--- 1122,1138 ---- + static int + luaV_buffer_newindex(lua_State *L) + { +! buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1); + linenr_T n = (linenr_T) luaL_checkinteger(L, 2); + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif +! if (n < 1 || n > b->b_ml.ml_line_count) + luaL_error(L, "invalid line number"); + if (lua_isnil(L, 3)) /* delete line */ + { + buf_T *buf = curbuf; +! curbuf = b; + if (u_savedel(n, 1L) == FAIL) + { + curbuf = buf; +*************** +*** 607,613 **** + } + else { + deleted_lines_mark(n, 1L); +! if (*b == curwin->w_buffer) /* fix cursor in current window? */ + { + if (curwin->w_cursor.lnum >= n) + { +--- 1145,1151 ---- + } + else { + deleted_lines_mark(n, 1L); +! if (b == curwin->w_buffer) /* fix cursor in current window? */ + { + if (curwin->w_cursor.lnum >= n) + { +*************** +*** 627,633 **** + else if (lua_isstring(L, 3)) /* update line */ + { + buf_T *buf = curbuf; +! curbuf = *b; + if (u_savesub(n) == FAIL) + { + curbuf = buf; +--- 1165,1171 ---- + else if (lua_isstring(L, 3)) /* update line */ + { + buf_T *buf = curbuf; +! curbuf = b; + if (u_savesub(n) == FAIL) + { + curbuf = buf; +*************** +*** 640,646 **** + } + else changed_bytes(n, 0); + curbuf = buf; +! if (*b == curwin->w_buffer) + check_cursor_col(); + } + else +--- 1178,1184 ---- + } + else changed_bytes(n, 0); + curbuf = buf; +! if (b == curwin->w_buffer) + check_cursor_col(); + } + else +*************** +*** 651,658 **** + static int + luaV_buffer_insert(lua_State *L) + { +! luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! linenr_T last = (*b)->b_ml.ml_line_count; + linenr_T n = (linenr_T) luaL_optinteger(L, 3, last); + buf_T *buf; + luaL_checktype(L, 2, LUA_TSTRING); +--- 1189,1197 ---- + static int + luaV_buffer_insert(lua_State *L) + { +! luaV_Buffer *lb = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! buf_T *b = (buf_T *) luaV_checkcache(L, (void *) *lb); +! linenr_T last = b->b_ml.ml_line_count; + linenr_T n = (linenr_T) luaL_optinteger(L, 3, last); + buf_T *buf; + luaL_checktype(L, 2, LUA_TSTRING); +*************** +*** 664,670 **** + if (n > last) n = last; + /* insert */ + buf = curbuf; +! curbuf = *b; + if (u_save(n, n + 1) == FAIL) + { + curbuf = buf; +--- 1203,1209 ---- + if (n > last) n = last; + /* insert */ + buf = curbuf; +! curbuf = b; + if (u_save(n, n + 1) == FAIL) + { + curbuf = buf; +*************** +*** 686,692 **** + luaV_buffer_next(lua_State *L) + { + luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! luaV_pushbuffer(L, (*b)->b_next); + return 1; + } + +--- 1225,1232 ---- + luaV_buffer_next(lua_State *L) + { + luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! buf_T *buf = (buf_T *) luaV_checkcache(L, (void *) *b); +! luaV_pushbuffer(L, buf->b_next); + return 1; + } + +*************** +*** 694,700 **** + luaV_buffer_previous(lua_State *L) + { + luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! luaV_pushbuffer(L, (*b)->b_prev); + return 1; + } + +--- 1234,1241 ---- + luaV_buffer_previous(lua_State *L) + { + luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! buf_T *buf = (buf_T *) luaV_checkcache(L, (void *) *b); +! luaV_pushbuffer(L, buf->b_prev); + return 1; + } + +*************** +*** 702,709 **** + luaV_buffer_isvalid(lua_State *L) + { + luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! lua_pushlightuserdata(L, (void *) (*b)); +! lua_rawget(L, LUA_ENVIRONINDEX); + lua_pushboolean(L, !lua_isnil(L, -1)); + return 1; + } +--- 1243,1249 ---- + luaV_buffer_isvalid(lua_State *L) + { + luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER); +! luaV_getudata(L, *b); + lua_pushboolean(L, !lua_isnil(L, -1)); + return 1; + } +*************** +*** 724,801 **** + + /* ======= Window type ======= */ + +! static luaV_Window * +! luaV_newwindow(lua_State *L, win_T *win) +! { +! luaV_Window *w = (luaV_Window *) lua_newuserdata(L, sizeof(luaV_Window)); +! *w = win; +! lua_pushlightuserdata(L, (void *) win); +! lua_pushvalue(L, -2); +! lua_rawset(L, LUA_ENVIRONINDEX); /* env[win] = udata */ +! /* to avoid GC, store as key in env */ +! lua_pushvalue(L, -1); +! lua_pushboolean(L, 1); +! lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = true */ +! /* set metatable */ +! luaV_getfield(L, LUAVIM_WINDOW); +! lua_setmetatable(L, -2); +! return w; +! } +! +! static luaV_Window * +! luaV_pushwindow(lua_State *L, win_T *win) +! { +! luaV_Window *w = NULL; +! if (win == NULL) +! lua_pushnil(L); +! else { +! lua_pushlightuserdata(L, (void *) win); +! lua_rawget(L, LUA_ENVIRONINDEX); +! if (lua_isnil(L, -1)) /* not interned? */ +! { +! lua_pop(L, 1); +! w = luaV_newwindow(L, win); +! } +! else w = (luaV_Window *) lua_touserdata(L, -1); +! } +! return w; +! } +! +! /* Window metamethods */ +! +! static int +! luaV_window_tostring(lua_State *L) +! { +! lua_pushfstring(L, "%s: %p", LUAVIM_WINDOW, lua_touserdata(L, 1)); +! return 1; +! } + + static int + luaV_window_call(lua_State *L) + { +! luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1); + lua_settop(L, 1); +! win_goto(*w); + return 1; + } + + static int + luaV_window_index(lua_State *L) + { +! luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1); + const char *s = luaL_checkstring(L, 2); + if (strncmp(s, "buffer", 6) == 0) +! luaV_pushbuffer(L, (*w)->w_buffer); + else if (strncmp(s, "line", 4) == 0) +! lua_pushinteger(L, (*w)->w_cursor.lnum); + else if (strncmp(s, "col", 3) == 0) +! lua_pushinteger(L, (*w)->w_cursor.col + 1); + #ifdef FEAT_VERTSPLIT + else if (strncmp(s, "width", 5) == 0) +! lua_pushinteger(L, W_WIDTH((*w))); + #endif + else if (strncmp(s, "height", 6) == 0) +! lua_pushinteger(L, (*w)->w_height); + /* methods */ + else if (strncmp(s, "next", 4) == 0 + || strncmp(s, "previous", 8) == 0 +--- 1264,1299 ---- + + /* ======= Window type ======= */ + +! luaV_newtype(win_T, window, luaV_Window, LUAVIM_WINDOW) +! luaV_pushtype(win_T, window, luaV_Window) +! luaV_type_tostring(window, LUAVIM_WINDOW) + + static int + luaV_window_call(lua_State *L) + { +! win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1); + lua_settop(L, 1); +! win_goto(w); + return 1; + } + + static int + luaV_window_index(lua_State *L) + { +! win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1); + const char *s = luaL_checkstring(L, 2); + if (strncmp(s, "buffer", 6) == 0) +! luaV_pushbuffer(L, w->w_buffer); + else if (strncmp(s, "line", 4) == 0) +! lua_pushinteger(L, w->w_cursor.lnum); + else if (strncmp(s, "col", 3) == 0) +! lua_pushinteger(L, w->w_cursor.col + 1); + #ifdef FEAT_VERTSPLIT + else if (strncmp(s, "width", 5) == 0) +! lua_pushinteger(L, W_WIDTH(w)); + #endif + else if (strncmp(s, "height", 6) == 0) +! lua_pushinteger(L, w->w_height); + /* methods */ + else if (strncmp(s, "next", 4) == 0 + || strncmp(s, "previous", 8) == 0 +*************** +*** 812,818 **** + static int + luaV_window_newindex (lua_State *L) + { +! luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1); + const char *s = luaL_checkstring(L, 2); + int v = luaL_checkinteger(L, 3); + if (strncmp(s, "line", 4) == 0) +--- 1310,1316 ---- + static int + luaV_window_newindex (lua_State *L) + { +! win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1); + const char *s = luaL_checkstring(L, 2); + int v = luaL_checkinteger(L, 3); + if (strncmp(s, "line", 4) == 0) +*************** +*** 820,828 **** + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif +! if (v < 1 || v > (*w)->w_buffer->b_ml.ml_line_count) + luaL_error(L, "line out of range"); +! (*w)->w_cursor.lnum = v; + update_screen(VALID); + } + else if (strncmp(s, "col", 3) == 0) +--- 1318,1326 ---- + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif +! if (v < 1 || v > w->w_buffer->b_ml.ml_line_count) + luaL_error(L, "line out of range"); +! w->w_cursor.lnum = v; + update_screen(VALID); + } + else if (strncmp(s, "col", 3) == 0) +*************** +*** 830,836 **** + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif +! (*w)->w_cursor.col = v - 1; + update_screen(VALID); + } + #ifdef FEAT_VERTSPLIT +--- 1328,1334 ---- + #ifdef HAVE_SANDBOX + luaV_checksandbox(L); + #endif +! w->w_cursor.col = v - 1; + update_screen(VALID); + } + #ifdef FEAT_VERTSPLIT +*************** +*** 840,846 **** + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif +! curwin = *w; + win_setwidth(v); + curwin = win; + } +--- 1338,1344 ---- + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif +! curwin = w; + win_setwidth(v); + curwin = win; + } +*************** +*** 851,857 **** + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif +! curwin = *w; + win_setheight(v); + curwin = win; + } +--- 1349,1355 ---- + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif +! curwin = w; + win_setheight(v); + curwin = win; + } +*************** +*** 864,870 **** + luaV_window_next(lua_State *L) + { + luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); +! luaV_pushwindow(L, (*w)->w_next); + return 1; + } + +--- 1362,1369 ---- + luaV_window_next(lua_State *L) + { + luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); +! win_T *win = (win_T *) luaV_checkcache(L, (void *) *w); +! luaV_pushwindow(L, win->w_next); + return 1; + } + +*************** +*** 872,878 **** + luaV_window_previous(lua_State *L) + { + luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); +! luaV_pushwindow(L, (*w)->w_prev); + return 1; + } + +--- 1371,1378 ---- + luaV_window_previous(lua_State *L) + { + luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); +! win_T *win = (win_T *) luaV_checkcache(L, (void *) *w); +! luaV_pushwindow(L, win->w_prev); + return 1; + } + +*************** +*** 880,887 **** + luaV_window_isvalid(lua_State *L) + { + luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); +! lua_pushlightuserdata(L, (void *) (*w)); +! lua_rawget(L, LUA_ENVIRONINDEX); + lua_pushboolean(L, !lua_isnil(L, -1)); + return 1; + } +--- 1380,1386 ---- + luaV_window_isvalid(lua_State *L) + { + luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW); +! luaV_getudata(L, *w); + lua_pushboolean(L, !lua_isnil(L, -1)); + return 1; + } +*************** +*** 983,988 **** +--- 1482,1509 ---- + } + + static int ++ luaV_list(lua_State *L) ++ { ++ list_T *l = list_alloc(); ++ if (l == NULL) ++ lua_pushnil(L); ++ else ++ luaV_newlist(L, l); ++ return 1; ++ } ++ ++ static int ++ luaV_dict(lua_State *L) ++ { ++ dict_T *d = dict_alloc(); ++ if (d == NULL) ++ lua_pushnil(L); ++ else ++ luaV_newdict(L, d); ++ return 1; ++ } ++ ++ static int + luaV_buffer(lua_State *L) + { + buf_T *buf; +*************** +*** 1008,1022 **** + break; + } + } +- if (buf == NULL) /* not found? */ +- lua_pushnil(L); +- else +- luaV_pushbuffer(L, buf); + } +! else { + buf = (lua_toboolean(L, 1)) ? firstbuf : curbuf; /* first buffer? */ +! luaV_pushbuffer(L, buf); +! } + return 1; + } + +--- 1529,1538 ---- + break; + } + } + } +! else + buf = (lua_toboolean(L, 1)) ? firstbuf : curbuf; /* first buffer? */ +! luaV_pushbuffer(L, buf); + return 1; + } + +*************** +*** 1029,1043 **** + int n = lua_tointeger(L, 1); + for (win = firstwin; win != NULL; win = win->w_next, n--) + if (n == 1) break; +- if (win == NULL) /* not found? */ +- lua_pushnil(L); +- else +- luaV_pushwindow(L, win); + } +! else { + win = (lua_toboolean(L, 1)) ? firstwin : curwin; /* first window? */ +! luaV_pushwindow(L, win); +! } + return 1; + } + +--- 1545,1554 ---- + int n = lua_tointeger(L, 1); + for (win = firstwin; win != NULL; win = win->w_next, n--) + if (n == 1) break; + } +! else + win = (lua_toboolean(L, 1)) ? firstwin : curwin; /* first window? */ +! luaV_pushwindow(L, win); + return 1; + } + +*************** +*** 1054,1086 **** + } + + static int +! luaV_isbuffer(lua_State *L) +! { +! lua_pushboolean(L, luaV_toudata(L, 1, LUAVIM_BUFFER) != NULL); +! return 1; +! } +! +! static int +! luaV_iswindow(lua_State *L) + { +! lua_pushboolean(L, luaV_toudata(L, 1, LUAVIM_WINDOW) != NULL); +! return 1; +! } +! +! /* for freeing buffer and window objects; lightuserdata as arg */ +! static int +! luaV_free(lua_State *L) +! { +! lua_pushvalue(L, 1); /* lightudata */ +! lua_rawget(L, LUA_ENVIRONINDEX); +! if (!lua_isnil(L, -1)) + { +! lua_pushnil(L); +! lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = nil */ +! lua_pushnil(L); +! lua_rawset(L, LUA_ENVIRONINDEX); /* env[lightudata] = nil */ + } +! return 0; + } + + static const luaL_Reg luaV_module[] = { +--- 1565,1606 ---- + } + + static int +! luaV_type(lua_State *L) + { +! luaL_checkany(L, 1); +! if (lua_type(L, 1) == LUA_TUSERDATA) /* check vim udata? */ + { +! lua_settop(L, 1); +! if (lua_getmetatable(L, 1)) +! { +! luaV_getfield(L, LUAVIM_LIST); +! if (lua_rawequal(L, -1, 2)) +! { +! lua_pushstring(L, "list"); +! return 1; +! } +! luaV_getfield(L, LUAVIM_DICT); +! if (lua_rawequal(L, -1, 2)) +! { +! lua_pushstring(L, "dict"); +! return 1; +! } +! luaV_getfield(L, LUAVIM_BUFFER); +! if (lua_rawequal(L, -1, 2)) +! { +! lua_pushstring(L, "buffer"); +! return 1; +! } +! luaV_getfield(L, LUAVIM_WINDOW); +! if (lua_rawequal(L, -1, 2)) +! { +! lua_pushstring(L, "window"); +! return 1; +! } +! } + } +! lua_pushstring(L, luaL_typename(L, 1)); /* fallback */ +! return 1; + } + + static const luaL_Reg luaV_module[] = { +*************** +*** 1088,1111 **** + {"eval", luaV_eval}, + {"beep", luaV_beep}, + {"line", luaV_line}, + {"buffer", luaV_buffer}, + {"window", luaV_window}, + {"open", luaV_open}, +! {"isbuffer", luaV_isbuffer}, +! {"iswindow", luaV_iswindow}, + {NULL, NULL} + }; + + static int + luaopen_vim(lua_State *L) + { +! /* set environment */ + lua_newtable(L); + lua_newtable(L); +! lua_pushliteral(L, "v"); + lua_setfield(L, -2, "__mode"); +! lua_setmetatable(L, -2); +! lua_replace(L, LUA_ENVIRONINDEX); + /* print */ + lua_pushcfunction(L, luaV_print); + lua_setglobal(L, "print"); +--- 1608,1695 ---- + {"eval", luaV_eval}, + {"beep", luaV_beep}, + {"line", luaV_line}, ++ {"list", luaV_list}, ++ {"dict", luaV_dict}, + {"buffer", luaV_buffer}, + {"window", luaV_window}, + {"open", luaV_open}, +! {"type", luaV_type}, + {NULL, NULL} + }; + ++ /* for freeing list, dict, buffer and window objects; lightuserdata as arg */ ++ static int ++ luaV_free(lua_State *L) ++ { ++ lua_pushnil(L); ++ luaV_setudata(L, lua_touserdata(L, 1)); ++ return 0; ++ } ++ ++ static int ++ luaV_luaeval (lua_State *L) ++ { ++ luaL_Buffer b; ++ size_t l; ++ const char *str = lua_tolstring(L, 1, &l); ++ typval_T *arg = (typval_T *) lua_touserdata(L, 2); ++ typval_T *rettv = (typval_T *) lua_touserdata(L, 3); ++ luaL_buffinit(L, &b); ++ luaL_addlstring(&b, LUAVIM_EVALHEADER, sizeof(LUAVIM_EVALHEADER) - 1); ++ luaL_addlstring(&b, str, l); ++ luaL_pushresult(&b); ++ str = lua_tolstring(L, -1, &l); ++ if (luaL_loadbuffer(L, str, l, LUAVIM_EVALNAME)) /* compile error? */ ++ { ++ luaV_emsg(L); ++ return 0; ++ } ++ luaV_pushtypval(L, arg); ++ if (lua_pcall(L, 1, 1, 0)) /* running error? */ ++ { ++ luaV_emsg(L); ++ return 0; ++ } ++ luaV_totypval(L, -1, rettv); ++ return 0; ++ } ++ ++ static int ++ luaV_setref (lua_State *L) ++ { ++ int copyID = lua_tointeger(L, 1); ++ typval_T tv; ++ luaV_getfield(L, LUAVIM_LIST); ++ luaV_getfield(L, LUAVIM_DICT); ++ lua_pushnil(L); ++ while (lua_next(L, lua_upvalueindex(1)) != 0) /* traverse cache table */ ++ { ++ lua_getmetatable(L, -1); ++ if (lua_rawequal(L, -1, 2)) /* list? */ ++ { ++ tv.v_type = VAR_LIST; ++ tv.vval.v_list = (list_T *) lua_touserdata(L, 4); /* key */ ++ } ++ else if (lua_rawequal(L, -1, 3)) /* dict? */ ++ { ++ tv.v_type = VAR_DICT; ++ tv.vval.v_dict = (dict_T *) lua_touserdata(L, 4); /* key */ ++ } ++ lua_pop(L, 2); /* metatable and value */ ++ set_ref_in_tv(&tv, copyID); ++ } ++ return 0; ++ } ++ + static int + luaopen_vim(lua_State *L) + { +! /* set cache table */ + lua_newtable(L); + lua_newtable(L); +! lua_pushstring(L, "v"); + lua_setfield(L, -2, "__mode"); +! lua_setmetatable(L, -2); /* cache is weak-valued */ + /* print */ + lua_pushcfunction(L, luaV_print); + lua_setglobal(L, "print"); +*************** +*** 1116,1129 **** + lua_pop(L, 1); + /* free */ + lua_pushlightuserdata(L, (void *) LUAVIM_FREE); +! lua_pushcfunction(L, luaV_free); + lua_rawset(L, LUA_REGISTRYINDEX); + /* register */ + luaV_newmetatable(L, LUAVIM_BUFFER); +! luaL_register(L, NULL, luaV_Buffer_mt); + luaV_newmetatable(L, LUAVIM_WINDOW); +! luaL_register(L, NULL, luaV_Window_mt); +! luaL_register(L, LUAVIM_NAME, luaV_module); + return 0; + } + +--- 1700,1735 ---- + lua_pop(L, 1); + /* free */ + lua_pushlightuserdata(L, (void *) LUAVIM_FREE); +! lua_pushvalue(L, 1); /* cache table */ +! lua_pushcclosure(L, luaV_free, 1); +! lua_rawset(L, LUA_REGISTRYINDEX); +! /* luaeval */ +! lua_pushlightuserdata(L, (void *) LUAVIM_LUAEVAL); +! lua_pushvalue(L, 1); /* cache table */ +! lua_pushcclosure(L, luaV_luaeval, 1); +! lua_rawset(L, LUA_REGISTRYINDEX); +! /* setref */ +! lua_pushlightuserdata(L, (void *) LUAVIM_SETREF); +! lua_pushvalue(L, 1); /* cache table */ +! lua_pushcclosure(L, luaV_setref, 1); + lua_rawset(L, LUA_REGISTRYINDEX); + /* register */ ++ luaV_newmetatable(L, LUAVIM_LIST); ++ lua_pushvalue(L, 1); ++ luaV_openlib(L, luaV_List_mt, 1); ++ luaV_newmetatable(L, LUAVIM_DICT); ++ lua_pushvalue(L, 1); ++ luaV_openlib(L, luaV_Dict_mt, 1); + luaV_newmetatable(L, LUAVIM_BUFFER); +! lua_pushvalue(L, 1); /* cache table */ +! luaV_openlib(L, luaV_Buffer_mt, 1); + luaV_newmetatable(L, LUAVIM_WINDOW); +! lua_pushvalue(L, 1); /* cache table */ +! luaV_openlib(L, luaV_Window_mt, 1); +! lua_newtable(L); /* vim table */ +! lua_pushvalue(L, 1); /* cache table */ +! luaV_openlib(L, luaV_module, 1); +! lua_setglobal(L, LUAVIM_NAME); + return 0; + } + +*************** +*** 1154,1160 **** + static lua_State *L = NULL; + + static int +! lua_is_open(void) + { + return L != NULL; + } +--- 1760,1766 ---- + static lua_State *L = NULL; + + static int +! lua_isopen(void) + { + return L != NULL; + } +*************** +*** 1162,1168 **** + static int + lua_init(void) + { +! if (L == NULL) + { + #ifdef DYNAMIC_LUA + if (!lua_enabled(TRUE)) +--- 1768,1774 ---- + static int + lua_init(void) + { +! if (!lua_isopen()) + { + #ifdef DYNAMIC_LUA + if (!lua_enabled(TRUE)) +*************** +*** 1179,1185 **** + void + lua_end(void) + { +! if (L != NULL) + { + lua_close(L); + L = NULL; +--- 1785,1791 ---- + void + lua_end(void) + { +! if (lua_isopen()) + { + lua_close(L); + L = NULL; +*************** +*** 1273,1295 **** + } + } + +! /* buffer */ + void +! lua_buffer_free(buf_T *buf) + { +! if (!lua_is_open()) return; +! luaV_getfield(L, LUAVIM_FREE); +! lua_pushlightuserdata(L, (void *) buf); +! lua_call(L, 1, 0); + } + +- /* window */ + void +! lua_window_free(win_T *win) + { +! if (!lua_is_open()) return; +! luaV_getfield(L, LUAVIM_FREE); +! lua_pushlightuserdata(L, (void *) win); + lua_call(L, 1, 0); + } + +--- 1879,1914 ---- + } + } + +! #define luaV_freetype(typ,tname) \ +! void \ +! lua_##tname##_free(typ *o) \ +! { \ +! if (!lua_isopen()) return; \ +! luaV_getfield(L, LUAVIM_FREE); \ +! lua_pushlightuserdata(L, (void *) o); \ +! lua_call(L, 1, 0); \ +! } +! +! luaV_freetype(buf_T, buffer) +! luaV_freetype(win_T, window) +! + void +! do_luaeval (char_u *str, typval_T *arg, typval_T *rettv) + { +! lua_init(); +! luaV_getfield(L, LUAVIM_LUAEVAL); +! lua_pushstring(L, (char *) str); +! lua_pushlightuserdata(L, (void *) arg); +! lua_pushlightuserdata(L, (void *) rettv); +! lua_call(L, 3, 0); + } + + void +! set_ref_in_lua (int copyID) + { +! if (!lua_isopen()) return; +! luaV_getfield(L, LUAVIM_SETREF); +! lua_pushinteger(L, copyID); + lua_call(L, 1, 0); + } + +*** ../vim-7.3.489/src/proto/if_lua.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/if_lua.pro 2012-04-05 16:41:35.000000000 +0200 +*************** +*** 6,9 **** +--- 6,11 ---- + void ex_luafile __ARGS((exarg_T *eap)); + void lua_buffer_free __ARGS((buf_T *buf)); + void lua_window_free __ARGS((win_T *win)); ++ void do_luaeval __ARGS((char_u *str, typval_T *arg, typval_T *rettv)); ++ void set_ref_in_lua __ARGS((int copyID)); + /* vim: set ft=c : */ +*** ../vim-7.3.489/src/version.c 2012-04-05 16:07:01.000000000 +0200 +--- src/version.c 2012-04-05 16:52:08.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 490, + /**/ + +-- +Even got a Datapoint 3600(?) with a DD50 connector instead of the +usual DB25... what a nightmare trying to figure out the pinout +for *that* with no spex... + + /// 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/7.3.491 b/7.3.491 new file mode 100644 index 0000000..b675722 --- /dev/null +++ b/7.3.491 @@ -0,0 +1,235 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.491 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.491 +Problem: No tests for Lua. +Solution: Add some simple tests for Lua. (Luis Carvalho) +Files: src/testdir/test1.in, src/testdir/test85.in, src/testdir/test85.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.3.490/src/testdir/test1.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test1.in 2012-04-05 16:37:37.000000000 +0200 +*************** +*** 15,20 **** +--- 15,21 ---- + be set like small.vim above. mbyte.vim is sourced by tests that require the + +multi_byte feature. + Similar logic is applied to the +mzscheme feature, using mzscheme.vim. ++ Similar logic is applied to the +lua feature, using lua.vim. + + STARTTEST + :" Write a single line to test.out to check if testing works at all. +*************** +*** 28,37 **** +--- 29,45 ---- + qa! + :w! mbyte.vim + :w! mzscheme.vim ++ :w! lua.vim ++ :" + :" If +multi_byte feature supported, make mbyte.vim empty. + :if has("multi_byte") | sp another | w! mbyte.vim | q | endif ++ :" + :" If +mzscheme feature supported, make mzscheme.vim empty. + :if has("mzscheme") | sp another | w! mzscheme.vim | q | endif ++ :" ++ :" If +lua feature supported, make lua.vim empty. ++ :if has("lua") | sp another | w! lua.vim | q | endif ++ :" + :" If +eval feature supported quit here, leaving tiny.vim and small.vim empty. + :" Otherwise write small.vim to skip the test. + :if 1 | q! | endif +*** ../vim-7.3.490/src/testdir/test85.in 2012-04-05 16:56:12.000000000 +0200 +--- src/testdir/test85.in 2012-04-05 16:44:00.000000000 +0200 +*************** +*** 0 **** +--- 1,42 ---- ++ Test for Lua interface and luaeval() function ++ ++ STARTTEST ++ :so small.vim ++ :so lua.vim ++ :set nocompatible viminfo+=nviminfo ++ :lua l = vim.list():add"item0":add"dictionary with list OK":add"item2" ++ :lua h = vim.dict(); h.list = l ++ :call garbagecollect() ++ /^1 ++ :" change buffer contents ++ :lua curbuf = vim.buffer() ++ :lua curline = vim.eval"line('.')" ++ :lua curbuf[curline] = "1 changed line 1" ++ :" scalar test ++ :let tmp_string = luaeval('"string"') ++ :let tmp_1000 = luaeval('1000') ++ :if printf("%s%.0f", tmp_string, tmp_1000) == "string1000" ++ :let scalar_res = "OK" ++ :else ++ :let scalar_res = "FAILED" ++ :endif ++ :call append(search("^1"), "scalar test " . scalar_res) ++ :" dictionary containing a list ++ :let tmp = luaeval("h").list[1] ++ :/^2/put =tmp ++ :" circular list (at the same time test lists containing lists) ++ :lua l[2] = l ++ :let l2 = luaeval("h").list ++ :if l2[2] == l2 ++ :let res = "OK" ++ :else ++ :let res = "FAILED" ++ :endif ++ :call setline(search("^3"), "circular test " . res) ++ :?^1?,$w! test.out ++ :qa! ++ ENDTEST ++ ++ 1 line 1 ++ 2 line 2 ++ 3 line 3 +*** ../vim-7.3.490/src/testdir/test85.ok 2012-04-05 16:56:12.000000000 +0200 +--- src/testdir/test85.ok 2012-04-05 16:18:56.000000000 +0200 +*************** +*** 0 **** +--- 1,5 ---- ++ 1 changed line 1 ++ scalar test OK ++ 2 line 2 ++ dictionary with list OK ++ circular test OK +*** ../vim-7.3.490/src/testdir/Make_amiga.mak 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_amiga.mak 2012-04-05 16:21:55.000000000 +0200 +*************** +*** 13,18 **** +--- 13,19 ---- + # test25 uses symbolic link + # test27 can't edit file with "*" + # test52 only for Win32 ++ # test85 no Lua interface + + SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ + test7.out test8.out test9.out \ +*** ../vim-7.3.490/src/testdir/Make_dos.mak 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_dos.mak 2012-04-05 16:22:16.000000000 +0200 +*************** +*** 30,36 **** + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS32 = test50.out test70.out + +--- 30,36 ---- + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.490/src/testdir/Make_ming.mak 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_ming.mak 2012-04-05 16:22:25.000000000 +0200 +*************** +*** 50,56 **** + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS32 = test50.out test70.out + +--- 50,56 ---- + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.490/src/testdir/Make_os2.mak 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_os2.mak 2012-04-05 16:22:38.000000000 +0200 +*************** +*** 13,18 **** +--- 13,19 ---- + # test25 uses symbolic link + # test27 can't edit file with "*" in file name + # test52 only for Win32 ++ # test85 no Lua interface + + SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ + test7.out test8.out test9.out \ +*** ../vim-7.3.490/src/testdir/Make_vms.mms 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_vms.mms 2012-04-05 16:23:08.000000000 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2012 Mar 28 + # + # 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, + # Sandor Kopanyi, + # +! # Last change: 2012 Apr 05 + # + # 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. +*************** +*** 89,94 **** +--- 89,95 ---- + # with too many dots). + # + # Test 72: unknown reason ++ # Test 85: no Lua interface + + .IFDEF WANT_GUI + SCRIPT_GUI = test16.out +*** ../vim-7.3.490/src/testdir/Makefile 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Makefile 2012-04-05 16:21:13.000000000 +0200 +*************** +*** 27,33 **** + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS_GUI = test16.out + +--- 27,33 ---- + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.490/src/version.c 2012-04-05 16:53:56.000000000 +0200 +--- src/version.c 2012-04-05 16:55:27.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 491, + /**/ + +-- +You had connectors? Eeee, when I were a lad we 'ad to carry the +bits between the computer and the terminal with a spoon... + + /// 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/7.3.492 b/7.3.492 new file mode 100644 index 0000000..b32b6f6 --- /dev/null +++ b/7.3.492 @@ -0,0 +1,718 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.492 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.492 +Problem: Can't indent conditions separately from function arguments. +Solution: Add the 'k' flag in 'cino. (Lech Lorens) +Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, + src/testdir/test3.ok + + +*** ../vim-7.3.491/runtime/doc/indent.txt 2011-06-26 03:16:58.000000000 +0200 +--- runtime/doc/indent.txt 2012-04-05 17:12:14.000000000 +0200 +*************** +*** 459,464 **** +--- 460,481 ---- + a_short_line(argument, a_short_line(argument, + argument); argument); + < ++ *cino-k* ++ kN When in unclosed parentheses which follow "if", "for" or ++ "while" and N is non-zero, overrides the behaviour defined by ++ "(N": causes the indent to be N characters relative to the outer ++ context (i.e. the line where "if", "for" or "while" is). Has ++ no effect on deeper levels of nesting. Affects flags like "wN" ++ only for the "if", "for" and "while" conditions. If 0, defaults ++ to behaviour defined by the "(N" flag. (default: 0). ++ ++ cino=(0 cino=(0,ks > ++ if (condition1 if (condition1 ++ && condition2) && condition2) ++ action(); action(); ++ function(argument1 function(argument1 ++ && argument2); && argument2); ++ < + *cino-m* + mN When N is non-zero, line up a line starting with a closing + parentheses with the first character of the line with the +*************** +*** 527,540 **** + + *cino-#* + #N When N is non-zero recognize shell/Perl comments, starting with +! '#'. Default N is zero: don't recognizes '#' comments. Note + that lines starting with # will still be seen as preprocessor + lines. + + + The defaults, spelled out in full, are: + cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s, +! c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0 + + Vim puts a line in column 1 if: + - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. +--- 546,559 ---- + + *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: + cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s, +! 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 '#'. +*** ../vim-7.3.491/src/misc1.c 2012-02-29 13:49:03.000000000 +0100 +--- src/misc1.c 2012-04-05 17:12:14.000000000 +0200 +*************** +*** 5771,5776 **** +--- 5771,5822 ---- + } + + /* ++ * Check whether in "p" there is an "if", "for" or "while" before offset. ++ * Return 0 if there is none. ++ * Otherwise return !0 and update "*poffset" to point to the place where the ++ * string was found. ++ */ ++ static int ++ cin_is_if_for_while_before_offset(line, offset, poffset) ++ char_u *line; ++ size_t offset; ++ int *poffset; ++ { ++ ++ if (offset-- < 2) ++ return 0; ++ while (offset > 2 && vim_iswhite(line[offset])) ++ --offset; ++ ++ offset -= 1; ++ if (!STRNCMP(line + offset, "if", 2)) ++ goto probablyFound; ++ ++ if (offset >= 1) ++ { ++ offset -= 1; ++ if (!STRNCMP(line + offset, "for", 3)) ++ goto probablyFound; ++ ++ if (offset >= 2) ++ { ++ offset -= 2; ++ if (!STRNCMP(line + offset, "while", 5)) ++ goto probablyFound; ++ } ++ } ++ ++ return 0; ++ probablyFound: ++ if (!offset || !vim_isIDc(line[offset - 1])) ++ { ++ *poffset = offset; ++ return 1; ++ } ++ return 0; ++ } ++ ++ /* + * Return TRUE if we are at the end of a do-while. + * do + * nothing; +*************** +*** 6124,6130 **** + + /* + * Find the matching '(', failing if it is in a comment. +! * Return NULL of no match found. + */ + static pos_T * + find_match_paren(ind_maxparen, ind_maxcomment) /* XXX */ +--- 6170,6176 ---- + + /* + * Find the matching '(', failing if it is in a comment. +! * Return NULL if no match found. + */ + static pos_T * + find_match_paren(ind_maxparen, ind_maxcomment) /* XXX */ +*************** +*** 6393,6398 **** +--- 6439,6450 ---- + */ + 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; +*************** +*** 6437,6442 **** +--- 6489,6495 ---- + int cont_amount = 0; /* amount for continuation line */ + int original_line_islabel; + int added_to_amount = 0; ++ int is_if_for_while = 0; + + for (options = curbuf->b_p_cino; *options; ) + { +*************** +*** 6509,6514 **** +--- 6562,6568 ---- + 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; +*************** +*** 6812,6817 **** +--- 6866,6900 ---- + if (amount == -1) + { + 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". */ ++ ++ pos_T cursor_save = curwin->w_cursor; ++ pos_T outermost; ++ char_u *line; ++ int look_col; ++ ++ trypos = &our_paren_pos; ++ do { ++ outermost = *trypos; ++ 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; ++ ++ line = ml_get(outermost.lnum); ++ ++ is_if_for_while = ++ cin_is_if_for_while_before_offset(line, outermost.col, ++ &outermost.col); ++ } + + amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment); + look = skipwhite(look); +*************** +*** 6836,6842 **** + curwin->w_cursor.lnum = save_lnum; + look = ml_get(our_paren_pos.lnum) + look_col; + } +! if (theline[0] == ')' || ind_unclosed == 0 + || (!ind_unclosed_noignore && *look == '(' + && ignore_paren_col == 0)) + { +--- 6919,6925 ---- + 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)) + { +*************** +*** 6907,6913 **** + { + /* Line up with the start of the matching paren line. */ + } +! else if (ind_unclosed == 0 || (!ind_unclosed_noignore + && *look == '(' && ignore_paren_col == 0)) + { + if (cur_amount != MAXCOL) +--- 6990,6997 ---- + { + /* 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) +*************** +*** 6943,6949 **** + if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL) + amount += ind_unclosed2; + else +! amount += ind_unclosed; + } + /* + * For a line starting with ')' use the minimum of the two +--- 7027,7038 ---- + 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; +! } + } + /* + * For a line starting with ')' use the minimum of the two +*** ../vim-7.3.491/src/testdir/test3.in 2011-12-14 20:21:29.000000000 +0100 +--- src/testdir/test3.in 2012-04-05 17:12:14.000000000 +0200 +*************** +*** 1574,1579 **** +--- 1574,1793 ---- + } + + STARTTEST ++ :set cino=k2s,(0 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ STARTTEST ++ :set cino=k2s,(s ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ STARTTEST ++ :set cino=k2s,(s,U1 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ c = c1 && ++ ( ++ c2 || ++ c3 ++ ) && c4; ++ } ++ ++ STARTTEST ++ :set cino=k2s,(0,W4 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ ++ a_long_line( ++ argument, ++ argument); ++ a_short_line(argument, ++ argument); ++ } ++ ++ STARTTEST ++ :set cino=k2s,u2 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ } ++ ++ STARTTEST ++ :set cino=k2s,(0,w1 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ STARTTEST ++ :set cino=k2,(s ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ } ++ ++ STARTTEST + :set cino=N-s + /^NAMESPACESTART + =/^NAMESPACEEND +*** ../vim-7.3.491/src/testdir/test3.ok 2011-12-14 20:21:29.000000000 +0100 +--- src/testdir/test3.ok 2012-04-05 17:12:14.000000000 +0200 +*************** +*** 1411,1416 **** +--- 1411,1602 ---- + } + + ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ c = c1 && ++ ( ++ c2 || ++ c3 ++ ) && c4; ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ ++ a_long_line( ++ argument, ++ argument); ++ a_short_line(argument, ++ argument); ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ } ++ ++ + NAMESPACESTART + /* valid namespaces with normal indent */ + namespace +*** ../vim-7.3.491/src/version.c 2012-04-05 16:56:38.000000000 +0200 +--- src/version.c 2012-04-05 17:14:18.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 492, + /**/ + +-- +You were lucky to have a LAKE! There were a hundred and sixty of +us living in a small shoebox in the middle of the road. + + /// 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/7.3.493 b/7.3.493 new file mode 100644 index 0000000..ff662b2 --- /dev/null +++ b/7.3.493 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.493 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.493 (after 7.3.492) +Problem: Two unused variables. +Solution: Remove them. (Hong Xu) +Files: src/misc1.c + + +*** ../vim-7.3.492/src/misc1.c 2012-04-05 17:17:38.000000000 +0200 +--- src/misc1.c 2012-04-06 13:49:39.000000000 +0200 +*************** +*** 6489,6495 **** + int cont_amount = 0; /* amount for continuation line */ + int original_line_islabel; + int added_to_amount = 0; +- int is_if_for_while = 0; + + for (options = curbuf->b_p_cino; *options; ) + { +--- 6489,6494 ---- +*************** +*** 6876,6882 **** + pos_T cursor_save = curwin->w_cursor; + pos_T outermost; + char_u *line; +- int look_col; + + trypos = &our_paren_pos; + do { +--- 6875,6880 ---- +*** ../vim-7.3.492/src/version.c 2012-04-05 17:17:38.000000000 +0200 +--- src/version.c 2012-04-06 13:50:21.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 493, + /**/ + +-- +Not too long ago, compress was something you did to garbage... + + /// 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/7.3.494 b/7.3.494 new file mode 100644 index 0000000..81bd24b --- /dev/null +++ b/7.3.494 @@ -0,0 +1,186 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.494 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.494 (after 7.3.491) +Problem: Can't compile with Lua 9.1 or dynamic Lua. +Solution: Fix dll_ methods. Fix luado(). (Muraoka Taro, Luis Carvalho) +Files: src/if_lua.c + + +*** ../vim-7.3.493/src/if_lua.c 2012-04-05 16:53:56.000000000 +0200 +--- src/if_lua.c 2012-04-06 14:24:06.000000000 +0200 +*************** +*** 95,100 **** +--- 95,101 ---- + #define luaL_loadbufferx dll_luaL_loadbufferx + #define luaL_argerror dll_luaL_argerror + #endif ++ #define luaL_checkany dll_luaL_checkany + #define luaL_checklstring dll_luaL_checklstring + #define luaL_checkinteger dll_luaL_checkinteger + #define luaL_optinteger dll_luaL_optinteger +*************** +*** 117,124 **** + #define lua_pcallk dll_lua_pcallk + #define lua_getglobal dll_lua_getglobal + #define lua_setglobal dll_lua_setglobal +- #define lua_typename dll_lua_typename + #endif + #define lua_close dll_lua_close + #define lua_gettop dll_lua_gettop + #define lua_settop dll_lua_settop +--- 118,125 ---- + #define lua_pcallk dll_lua_pcallk + #define lua_getglobal dll_lua_getglobal + #define lua_setglobal dll_lua_setglobal + #endif ++ #define lua_typename dll_lua_typename + #define lua_close dll_lua_close + #define lua_gettop dll_lua_gettop + #define lua_settop dll_lua_settop +*************** +*** 151,156 **** +--- 152,158 ---- + #define lua_rawset dll_lua_rawset + #define lua_rawseti dll_lua_rawseti + #define lua_setmetatable dll_lua_setmetatable ++ #define lua_next dll_lua_next + /* libs */ + #define luaopen_base dll_luaopen_base + #define luaopen_table dll_luaopen_table +*************** +*** 177,182 **** +--- 179,185 ---- + int (*dll_luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, const char *name, const char *mode); + int (*dll_luaL_argerror) (lua_State *L, int numarg, const char *extramsg); + #endif ++ void (*dll_luaL_checkany) (lua_State *L, int narg); + const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l); + lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg); + lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def); +*************** +*** 201,208 **** + int ctx, lua_CFunction k); + void (*dll_lua_getglobal) (lua_State *L, const char *var); + void (*dll_lua_setglobal) (lua_State *L, const char *var); +- const char *(*dll_lua_typename) (lua_State *L, int tp); + #endif + void (*dll_lua_close) (lua_State *L); + int (*dll_lua_gettop) (lua_State *L); + void (*dll_lua_settop) (lua_State *L, int idx); +--- 204,211 ---- + int ctx, lua_CFunction k); + void (*dll_lua_getglobal) (lua_State *L, const char *var); + void (*dll_lua_setglobal) (lua_State *L, const char *var); + #endif ++ const char *(*dll_lua_typename) (lua_State *L, int tp); + void (*dll_lua_close) (lua_State *L); + int (*dll_lua_gettop) (lua_State *L); + void (*dll_lua_settop) (lua_State *L, int idx); +*************** +*** 235,240 **** +--- 238,244 ---- + void (*dll_lua_rawset) (lua_State *L, int idx); + void (*dll_lua_rawseti) (lua_State *L, int idx, int n); + int (*dll_lua_setmetatable) (lua_State *L, int objindex); ++ int (*dll_lua_next) (lua_State *L, int idx); + /* libs */ + int (*dll_luaopen_base) (lua_State *L); + int (*dll_luaopen_table) (lua_State *L); +*************** +*** 268,273 **** +--- 272,278 ---- + {"luaL_loadbufferx", (luaV_function) &dll_luaL_loadbufferx}, + {"luaL_argerror", (luaV_function) &dll_luaL_argerror}, + #endif ++ {"luaL_checkany", (luaV_function) &dll_luaL_checkany}, + {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring}, + {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger}, + {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger}, +*************** +*** 290,297 **** + {"lua_pcallk", (luaV_function) &dll_lua_pcallk}, + {"lua_getglobal", (luaV_function) &dll_lua_getglobal}, + {"lua_setglobal", (luaV_function) &dll_lua_setglobal}, +- {"lua_typename", (luaV_function) &dll_lua_typename}, + #endif + {"lua_close", (luaV_function) &dll_lua_close}, + {"lua_gettop", (luaV_function) &dll_lua_gettop}, + {"lua_settop", (luaV_function) &dll_lua_settop}, +--- 295,302 ---- + {"lua_pcallk", (luaV_function) &dll_lua_pcallk}, + {"lua_getglobal", (luaV_function) &dll_lua_getglobal}, + {"lua_setglobal", (luaV_function) &dll_lua_setglobal}, + #endif ++ {"lua_typename", (luaV_function) &dll_lua_typename}, + {"lua_close", (luaV_function) &dll_lua_close}, + {"lua_gettop", (luaV_function) &dll_lua_gettop}, + {"lua_settop", (luaV_function) &dll_lua_settop}, +*************** +*** 324,329 **** +--- 329,335 ---- + {"lua_rawset", (luaV_function) &dll_lua_rawset}, + {"lua_rawseti", (luaV_function) &dll_lua_rawseti}, + {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable}, ++ {"lua_next", (luaV_function) &dll_lua_next}, + /* libs */ + {"luaopen_base", (luaV_function) &dll_luaopen_base}, + {"luaopen_table", (luaV_function) &dll_luaopen_table}, +*************** +*** 1828,1834 **** + } + luaV_setrange(L, eap->line1, eap->line2); + luaL_buffinit(L, &b); +! luaL_addlstring(&b, "return function(line) ", 22); /* header */ + luaL_addlstring(&b, s, strlen(s)); + luaL_addlstring(&b, " end", 4); /* footer */ + luaL_pushresult(&b); +--- 1834,1840 ---- + } + luaV_setrange(L, eap->line1, eap->line2); + luaL_buffinit(L, &b); +! luaL_addlstring(&b, "return function(line, linenr) ", 30); /* header */ + luaL_addlstring(&b, s, strlen(s)); + luaL_addlstring(&b, " end", 4); /* footer */ + luaL_pushresult(&b); +*************** +*** 1845,1851 **** + { + lua_pushvalue(L, -1); /* function */ + luaV_pushline(L, curbuf, l); /* current line as arg */ +! if (lua_pcall(L, 1, 1, 0)) + { + luaV_emsg(L); + break; +--- 1851,1858 ---- + { + lua_pushvalue(L, -1); /* function */ + luaV_pushline(L, curbuf, l); /* current line as arg */ +! lua_pushinteger(L, l); /* current line number as arg */ +! if (lua_pcall(L, 2, 1, 0)) + { + luaV_emsg(L); + break; +*** ../vim-7.3.493/src/version.c 2012-04-06 13:56:00.000000000 +0200 +--- src/version.c 2012-04-06 14:25:11.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 494, + /**/ + +-- +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/7.3.495 b/7.3.495 new file mode 100644 index 0000000..54c2306 --- /dev/null +++ b/7.3.495 @@ -0,0 +1,124 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.4 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.495 (after 7.3.492) +Problem: Compiler warnings. +Solution: Add function declaration. Remove "offset" argument. +Files: src/misc1.c + + +*** ../vim-7.3.494/src/misc1.c 2012-04-06 13:56:00.000000000 +0200 +--- src/misc1.c 2012-04-09 20:25:58.000000000 +0200 +*************** +*** 4972,4977 **** +--- 4972,4978 ---- + 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)); +*************** +*** 5771,5787 **** + } + + /* +! * Check whether in "p" there is an "if", "for" or "while" before offset. + * Return 0 if there is none. + * Otherwise return !0 and update "*poffset" to point to the place where the + * string was found. + */ + static int +! cin_is_if_for_while_before_offset(line, offset, poffset) + char_u *line; +- size_t offset; + int *poffset; + { + + if (offset-- < 2) + return 0; +--- 5772,5788 ---- + } + + /* +! * Check whether in "p" there is an "if", "for" or "while" before "*poffset". + * Return 0 if there is none. + * Otherwise return !0 and update "*poffset" to point to the place where the + * string was found. + */ + static int +! cin_is_if_for_while_before_offset(line, poffset) + char_u *line; + int *poffset; + { ++ int offset = *poffset; + + if (offset-- < 2) + return 0; +*************** +*** 5805,5812 **** + goto probablyFound; + } + } +- + return 0; + probablyFound: + if (!offset || !vim_isIDc(line[offset - 1])) + { +--- 5806,5813 ---- + goto probablyFound; + } + } + return 0; ++ + probablyFound: + if (!offset || !vim_isIDc(line[offset - 1])) + { +*************** +*** 6890,6897 **** + line = ml_get(outermost.lnum); + + is_if_for_while = +! cin_is_if_for_while_before_offset(line, outermost.col, +! &outermost.col); + } + + amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment); +--- 6891,6897 ---- + line = ml_get(outermost.lnum); + + is_if_for_while = +! cin_is_if_for_while_before_offset(line, &outermost.col); + } + + amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment); +*** ../vim-7.3.494/src/version.c 2012-04-06 14:30:55.000000000 +0200 +--- src/version.c 2012-04-09 20:41:44.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 495, + /**/ + +-- + [clop clop] +GUARD #1: Halt! Who goes there? +ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of + Camelot. King of the Britons, defeator of the Saxons, sovereign of + all England! +GUARD #1: Pull the other one! + 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/7.3.496 b/7.3.496 new file mode 100644 index 0000000..8b11051 --- /dev/null +++ b/7.3.496 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.496 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.496 +Problem: MS-DOS: When "diff" trips over difference in line separators some + tests fail. +Solution: Make some .ok files use unix line separators. (David Pope) +Files: src/testdir/Make_dos.mak, src/testdir/Make_ming.mak + + +*** ../vim-7.3.495/src/testdir/Make_dos.mak 2012-04-05 16:56:38.000000000 +0200 +--- src/testdir/Make_dos.mak 2012-04-09 21:23:43.000000000 +0200 +*************** +*** 52,58 **** + + fixff: + -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok +! -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q dotest.in + + clean: + -del *.out +--- 52,59 ---- + + fixff: + -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok +! -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q \ +! dotest.in test60.ok test71.ok test74.ok + + clean: + -del *.out +*** ../vim-7.3.495/src/testdir/Make_ming.mak 2012-04-05 16:56:38.000000000 +0200 +--- src/testdir/Make_ming.mak 2012-04-09 21:25:55.000000000 +0200 +*************** +*** 75,80 **** +--- 75,82 ---- + + fixff: + -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok ++ -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q \ ++ dotest.in test60.ok test71.ok test74.ok + + clean: + -$(DEL) *.out +*** ../vim-7.3.495/src/version.c 2012-04-09 20:42:20.000000000 +0200 +--- src/version.c 2012-04-13 19:10:04.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 496, + /**/ + +-- +There are 2 kinds of people in my world: those who know Unix, Perl, Vim, GNU, +Linux, etc, and those who know COBOL. It gets very difficult for me at +parties, not knowing which group to socialise with :-) + Sitaram Chamarty + + /// 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/7.3.497 b/7.3.497 new file mode 100644 index 0000000..5cbffc4 --- /dev/null +++ b/7.3.497 @@ -0,0 +1,50 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.497 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.497 +Problem: Crash when doing ":python print" and compiled with gcc and + the optimizer enabled. +Solution: Avoid the crash, doesn't really fix the problem. (Christian + Brabandt) +Files: src/if_py_both.h + + +*** ../vim-7.3.496/src/if_py_both.h 2012-02-04 20:17:21.000000000 +0100 +--- src/if_py_both.h 2012-04-20 13:24:31.000000000 +0200 +*************** +*** 77,82 **** +--- 77,87 ---- + if (!PyArg_ParseTuple(args, "et#", ENC_OPT, &str, &len)) + return NULL; + ++ /* TODO: This works around a gcc optimizer problem and avoids Vim ++ * from crashing. Should find a real solution. */ ++ if (str == NULL) ++ return NULL; ++ + Py_BEGIN_ALLOW_THREADS + Python_Lock_Vim(); + writer((writefn)(error ? emsg : msg), (char_u *)str, len); +*** ../vim-7.3.496/src/version.c 2012-04-13 19:11:16.000000000 +0200 +--- src/version.c 2012-04-20 13:26:22.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 497, + /**/ + +-- +There can't be a crisis today, my schedule is already full. + + /// 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/7.3.498 b/7.3.498 new file mode 100644 index 0000000..aa9c621 --- /dev/null +++ b/7.3.498 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.498 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.498 +Problem: The behavior of the "- register changes depending on value of + the 'clipboard' option. (Szamotulski) +Solution: Also set the "- register when the register is "*" or "+". + (Christian Brabandt) +Files: src/ops.c + + +*** ../vim-7.3.497/src/ops.c 2012-03-23 14:16:19.000000000 +0100 +--- src/ops.c 2012-04-20 13:36:32.000000000 +0200 +*************** +*** 1720,1728 **** + did_yank = TRUE; + } + +! /* Yank into small delete register when no register specified and the +! * delete is within one line. */ +! if (oap->regname == 0 && oap->motion_type != MLINE + && oap->line_count == 1) + { + oap->regname = '-'; +--- 1720,1733 ---- + did_yank = TRUE; + } + +! /* Yank into small delete register when no named register specified +! * and the delete is within one line. */ +! if (( +! #ifdef FEAT_CLIPBOARD +! ((clip_unnamed & CLIP_UNNAMED) && oap->regname == '*') || +! ((clip_unnamed & CLIP_UNNAMED_PLUS) && oap->regname == '+') || +! #endif +! oap->regname == 0) && oap->motion_type != MLINE + && oap->line_count == 1) + { + oap->regname = '-'; +*** ../vim-7.3.497/src/version.c 2012-04-20 13:31:16.000000000 +0200 +--- src/version.c 2012-04-20 13:45:26.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 498, + /**/ + +-- +Did you ever stop to think... and forget to start again? + -- 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/7.3.499 b/7.3.499 new file mode 100644 index 0000000..4e45e4f --- /dev/null +++ b/7.3.499 @@ -0,0 +1,84 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.499 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.499 +Problem: When using any interface language when Vim is waiting for a child + process it gets confused by a child process started through the + interface. +Solution: Always used waitpid() instead of wait(). (Yasuhiro Matsumoto) +Files: src/os_unix.c + + +*** ../vim-7.3.498/src/os_unix.c 2012-02-05 22:51:27.000000000 +0100 +--- src/os_unix.c 2012-04-20 15:47:17.000000000 +0200 +*************** +*** 3734,3757 **** + + while (wait_pid != child) + { +! # ifdef _THREAD_SAFE +! /* Ugly hack: when compiled with Python threads are probably +! * used, in which case wait() sometimes hangs for no obvious +! * reason. Use waitpid() instead and loop (like the GUI). */ +! # ifdef __NeXT__ + wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0); +! # else + wait_pid = waitpid(child, status, WNOHANG); +! # endif + if (wait_pid == 0) + { + /* Wait for 1/100 sec before trying again. */ + mch_delay(10L, TRUE); + continue; + } +- # else +- wait_pid = wait(status); +- # endif + if (wait_pid <= 0 + # ifdef ECHILD + && errno == ECHILD +--- 3734,3754 ---- + + while (wait_pid != child) + { +! /* When compiled with Python threads are probably used, in which case +! * wait() sometimes hangs for no obvious reason. Use waitpid() +! * instead and loop (like the GUI). Also needed for other interfaces, +! * they might call system(). */ +! # ifdef __NeXT__ + wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0); +! # else + wait_pid = waitpid(child, status, WNOHANG); +! # endif + if (wait_pid == 0) + { + /* Wait for 1/100 sec before trying again. */ + mch_delay(10L, TRUE); + continue; + } + if (wait_pid <= 0 + # ifdef ECHILD + && errno == ECHILD +*** ../vim-7.3.498/src/version.c 2012-04-20 13:46:02.000000000 +0200 +--- src/version.c 2012-04-20 15:54:05.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 499, + /**/ + +-- +It's not hard to meet expenses, they're everywhere. + + /// 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/7.3.500 b/7.3.500 new file mode 100644 index 0000000..b3b6a37 --- /dev/null +++ b/7.3.500 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.500 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.500 +Problem: Ming makefile unconditionally sets WINVER. +Solution: Only defined when not already defined. (Yasuhiro Matsumoto) +Files: src/Make_ming.mak + + +*** ../vim-7.3.499/src/Make_ming.mak 2012-03-28 17:43:06.000000000 +0200 +--- src/Make_ming.mak 2012-04-20 16:03:50.000000000 +0200 +*************** +*** 51,57 **** +--- 51,59 ---- + # set to yes to enable OLE support + OLE=no + # Set the default $(WINVER) to make it work with pre-Win2k ++ ifndef WINVER + WINVER = 0x0400 ++ endif + # Set to yes to enable Cscope support + CSCOPE=yes + # Set to yes to enable Netbeans support +*** ../vim-7.3.499/src/version.c 2012-04-20 15:55:10.000000000 +0200 +--- src/version.c 2012-04-20 16:12:34.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 500, + /**/ + +-- +Life is a gift, living is an art. (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/7.3.501 b/7.3.501 new file mode 100644 index 0000000..a74b028 --- /dev/null +++ b/7.3.501 @@ -0,0 +1,63 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.501 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.501 +Problem: Error for "flush" not being defined when using Ruby command. +Solution: Defined "flush" as a no-op method. (Kent Sibilev) +Files: src/if_ruby.c + + +*** ../vim-7.3.500/src/if_ruby.c 2011-08-04 19:34:55.000000000 +0200 +--- src/if_ruby.c 2012-04-20 16:18:56.000000000 +0200 +*************** +*** 1238,1243 **** +--- 1238,1248 ---- + return Qnil; + } + ++ static VALUE f_nop(VALUE self) ++ { ++ return Qnil; ++ } ++ + static VALUE f_p(int argc, VALUE *argv, VALUE self UNUSED) + { + int i; +*************** +*** 1259,1264 **** +--- 1264,1270 ---- + + rb_stdout = rb_obj_alloc(rb_cObject); + rb_define_singleton_method(rb_stdout, "write", vim_message, 1); ++ rb_define_singleton_method(rb_stdout, "flush", f_nop, 0); + rb_define_global_function("p", f_p, -1); + } + +*** ../vim-7.3.500/src/version.c 2012-04-20 16:13:21.000000000 +0200 +--- src/version.c 2012-04-20 16:19:03.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 501, + /**/ + +-- +Q: What do you call a fish without an eye? +A: fsh! +Q: What do you call a deer with no eyes? +A: no eye deer. +Q: What do you call a deer with no eyes and no legs? +A: still no eye deer. + + /// 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/7.3.502 b/7.3.502 new file mode 100644 index 0000000..c9710ab --- /dev/null +++ b/7.3.502 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.502 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.502 +Problem: Netbeans insert halfway a line actually appends to the line. +Solution: Insert halfway the line. (Brian Victor) +Files: src/netbeans.c + + +*** ../vim-7.3.501/src/netbeans.c 2012-01-10 22:31:26.000000000 +0100 +--- src/netbeans.c 2012-04-20 19:44:31.000000000 +0200 +*************** +*** 1812,1825 **** + char_u *oldline = ml_get(lnum); + char_u *newline; + +! /* Insert halfway a line. For simplicity we assume we +! * need to append to the line. */ + newline = alloc_check( + (unsigned)(STRLEN(oldline) + len + 1)); + if (newline != NULL) + { +! STRCPY(newline, oldline); + STRCAT(newline, args); + ml_replace(lnum, newline, FALSE); + } + } +--- 1812,1826 ---- + char_u *oldline = ml_get(lnum); + char_u *newline; + +! /* Insert halfway a line. */ + newline = alloc_check( + (unsigned)(STRLEN(oldline) + len + 1)); + if (newline != NULL) + { +! mch_memmove(newline, oldline, (size_t)pos->col); +! newline[pos->col] = NUL; + STRCAT(newline, args); ++ STRCAT(newline, oldline + pos->col); + ml_replace(lnum, newline, FALSE); + } + } +*** ../vim-7.3.501/src/version.c 2012-04-20 18:05:42.000000000 +0200 +--- src/version.c 2012-04-20 19:46:48.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 502, + /**/ + +-- +Time flies like an arrow. +Fruit flies like a banana. + + /// 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/7.3.503 b/7.3.503 new file mode 100644 index 0000000..5b776ae --- /dev/null +++ b/7.3.503 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.503 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.503 (after 7.3.501) +Problem: Warning for unused argument. +Solution: Add UNUSED. +Files: src/if_ruby.c + + +*** ../vim-7.3.502/src/if_ruby.c 2012-04-20 18:05:42.000000000 +0200 +--- src/if_ruby.c 2012-04-25 12:26:38.000000000 +0200 +*************** +*** 1238,1244 **** + return Qnil; + } + +! static VALUE f_nop(VALUE self) + { + return Qnil; + } +--- 1238,1244 ---- + return Qnil; + } + +! static VALUE f_nop(VALUE self UNUSED) + { + return Qnil; + } +*** ../vim-7.3.502/src/version.c 2012-04-20 19:47:00.000000000 +0200 +--- src/version.c 2012-04-25 12:27:30.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 503, + /**/ + +-- +Why isn't there mouse-flavored cat food? + + /// 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/7.3.504 b/7.3.504 new file mode 100644 index 0000000..7522790 --- /dev/null +++ b/7.3.504 @@ -0,0 +1,87 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.504 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.504 +Problem: Commands in help files are not highlighted. +Solution: Allow for commands in backticks. Adjust CTRL-] to remove the + backticks. +Files: src/ex_cmds.c + + +*** ../vim-7.3.503/src/ex_cmds.c 2012-04-05 16:04:58.000000000 +0200 +--- src/ex_cmds.c 2012-04-25 12:51:41.000000000 +0200 +*************** +*** 3421,3427 **** + * and re-attach to buffer, perhaps. + */ + if (curwin->w_s == &(curwin->w_buffer->b_s)) +! curwin->w_s = &(buf->b_s); + #endif + curwin->w_buffer = buf; + curbuf = buf; +--- 3421,3427 ---- + * and re-attach to buffer, perhaps. + */ + if (curwin->w_s == &(curwin->w_buffer->b_s)) +! curwin->w_s = &(buf->b_s); + #endif + curwin->w_buffer = buf; + curbuf = buf; +*************** +*** 5965,5970 **** +--- 5965,5993 ---- + break; + } + *d = NUL; ++ ++ if (*IObuff == '`') ++ { ++ if (d > IObuff + 2 && d[-1] == '`') ++ { ++ /* remove the backticks from `command` */ ++ mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff)); ++ d[-2] = NUL; ++ } ++ else if (d > IObuff + 3 && d[-2] == '`' && d[-1] == ',') ++ { ++ /* remove the backticks and comma from `command`, */ ++ mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff)); ++ d[-3] = NUL; ++ } ++ else if (d > IObuff + 4 && d[-3] == '`' ++ && d[-2] == '\\' && d[-1] == '.') ++ { ++ /* remove the backticks and dot from `command`\. */ ++ mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff)); ++ d[-4] = NUL; ++ } ++ } + } + } + +*** ../vim-7.3.503/src/version.c 2012-04-25 12:28:05.000000000 +0200 +--- src/version.c 2012-04-25 12:46:43.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 504, + /**/ + +-- +TIM: That is not an ordinary rabbit ... 'tis the most foul cruel and + bad-tempered thing you ever set eyes on. +ROBIN: You tit. I soiled my armour I was so scared! + "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/7.3.505 b/7.3.505 new file mode 100644 index 0000000..1a8a7ea --- /dev/null +++ b/7.3.505 @@ -0,0 +1,116 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.505 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.505 +Problem: Test 11 fails on MS-Windows in some versions. +Solution: Fix #ifdefs for whether filtering through a pipe is possible. Move + setting b_no_eol_lnum back to where it was before patch 7.3.124. + (David Pope) +Files: src/feature.h, src/eval.c, src/ex_cmds.c, src/fileio.c + + +*** ../vim-7.3.504/src/feature.h 2011-10-20 21:09:25.000000000 +0200 +--- src/feature.h 2012-04-25 16:44:26.000000000 +0200 +*************** +*** 1316,1318 **** +--- 1316,1326 ---- + #ifdef FEAT_NORMAL + # define FEAT_PERSISTENT_UNDO + #endif ++ ++ /* ++ * +filterpipe ++ */ ++ #if (defined(UNIX) && !defined(USE_SYSTEM)) \ ++ || (defined(WIN3264) && defined(FEAT_GUI_W32)) ++ # define FEAT_FILTERPIPE ++ #endif +*** ../vim-7.3.504/src/eval.c 2012-04-05 16:53:55.000000000 +0200 +--- src/eval.c 2012-04-25 16:43:53.000000000 +0200 +*************** +*** 12090,12096 **** + #ifdef FEAT_SEARCHPATH + "file_in_path", + #endif +! #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264) + "filterpipe", + #endif + #ifdef FEAT_FIND_ID +--- 12090,12096 ---- + #ifdef FEAT_SEARCHPATH + "file_in_path", + #endif +! #ifdef FEAT_FILTERPIPE + "filterpipe", + #endif + #ifdef FEAT_FIND_ID +*** ../vim-7.3.504/src/ex_cmds.c 2012-04-25 12:57:23.000000000 +0200 +--- src/ex_cmds.c 2012-04-25 16:46:02.000000000 +0200 +*************** +*** 1113,1119 **** + if (do_out) + shell_flags |= SHELL_DOOUT; + +! #if (!defined(USE_SYSTEM) && defined(UNIX)) || defined(WIN3264) + if (!do_in && do_out && !p_stmp) + { + /* Use a pipe to fetch stdout of the command, do not use a temp file. */ +--- 1113,1119 ---- + if (do_out) + shell_flags |= SHELL_DOOUT; + +! #ifdef FEAT_FILTERPIPE + if (!do_in && do_out && !p_stmp) + { + /* Use a pipe to fetch stdout of the command, do not use a temp file. */ +*** ../vim-7.3.504/src/fileio.c 2012-02-29 18:22:03.000000000 +0100 +--- src/fileio.c 2012-04-25 16:40:37.000000000 +0200 +*************** +*** 2655,2664 **** + } + #endif + +- /* Reset now, following writes should not omit the EOL. Also, the line +- * number will become invalid because of edits. */ +- curbuf->b_no_eol_lnum = 0; +- + if (recoverymode && error) + return FAIL; + return OK; +--- 2655,2660 ---- +*************** +*** 5098,5103 **** +--- 5094,5101 ---- + { + aco_save_T aco; + ++ curbuf->b_no_eol_lnum = 0; /* in case it was set by the previous read */ ++ + /* + * Apply POST autocommands. + * Careful: The autocommands may call buf_write() recursively! +*** ../vim-7.3.504/src/version.c 2012-04-25 12:57:23.000000000 +0200 +--- src/version.c 2012-04-25 16:49:50.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 505, + /**/ + +-- +Lose weight, NEVER Diet again with + The "Invisible Weight Loss Patch" + (spam e-mail) + + /// 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/7.3.506 b/7.3.506 new file mode 100644 index 0000000..32be6fd --- /dev/null +++ b/7.3.506 @@ -0,0 +1,100 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.506 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.506 +Problem: GTK gives an error when selecting a non-existent file. +Solution: Add a handler to avoid the error. (Christian Brabandt) +Files: src/gui_gtk.c + + +*** ../vim-7.3.505/src/gui_gtk.c 2011-06-26 04:48:56.000000000 +0200 +--- src/gui_gtk.c 2012-04-25 17:08:58.000000000 +0200 +*************** +*** 90,95 **** +--- 90,100 ---- + static void entry_activate_cb(GtkWidget *widget, gpointer data); + static void entry_changed_cb(GtkWidget *entry, GtkWidget *dialog); + static void find_replace_cb(GtkWidget *widget, gpointer data); ++ static void recent_func_log_func( ++ const gchar *log_domain, ++ GLogLevelFlags log_level, ++ const gchar *message, ++ gpointer user_data); + + #if defined(FEAT_TOOLBAR) + /* +*************** +*** 839,844 **** +--- 844,851 ---- + GtkWidget *fc; + #endif + char_u dirbuf[MAXPATHL]; ++ guint log_handler; ++ const gchar *domain = "Gtk"; + + title = CONVERT_TO_UTF8(title); + +*************** +*** 853,858 **** +--- 860,870 ---- + /* If our pointer is currently hidden, then we should show it. */ + gui_mch_mousehide(FALSE); + ++ /* Hack: The GTK file dialog warns when it can't access a new file, this ++ * makes it shut up. http://bugzilla.gnome.org/show_bug.cgi?id=664587 */ ++ log_handler = g_log_set_handler(domain, G_LOG_LEVEL_WARNING, ++ recent_func_log_func, NULL); ++ + #ifdef USE_FILE_CHOOSER + /* We create the dialog each time, so that the button text can be "Open" + * or "Save" according to the action. */ +*************** +*** 916,921 **** +--- 928,934 ---- + gtk_widget_show(gui.filedlg); + gtk_main(); + #endif ++ g_log_remove_handler(domain, log_handler); + + CONVERT_TO_UTF8_FREE(title); + if (gui.browse_fname == NULL) +*************** +*** 1882,1884 **** +--- 1895,1908 ---- + * backwards compatibility anyway. */ + do_cmdline_cmd((char_u *)"emenu ToolBar.FindHelp"); + } ++ ++ static void ++ recent_func_log_func(const gchar *log_domain UNUSED, ++ GLogLevelFlags log_level UNUSED, ++ const gchar *message UNUSED, ++ gpointer user_data UNUSED) ++ { ++ /* We just want to suppress the warnings. */ ++ /* http://bugzilla.gnome.org/show_bug.cgi?id=664587 */ ++ } ++ +*** ../vim-7.3.505/src/version.c 2012-04-25 16:50:44.000000000 +0200 +--- src/version.c 2012-04-25 17:08:28.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 506, + /**/ + +-- +Compilation process failed successfully. + + /// 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/7.3.507 b/7.3.507 new file mode 100644 index 0000000..c96561c --- /dev/null +++ b/7.3.507 @@ -0,0 +1,149 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.507 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.507 +Problem: When exiting with unsaved changes, selecting an existing file in + the file dialog, there is no dialog to ask whether the existing + file should be overwritten. (Felipe G. Nievinski) +Solution: Call check_overwrite() before writing. (Christian Brabandt) +Files: src/ex_cmds.c, src/ex_cmds2.c, src/proto/ex_cmds.pro + + +*** ../vim-7.3.506/src/ex_cmds.c 2012-04-25 16:50:44.000000000 +0200 +--- src/ex_cmds.c 2012-04-25 17:19:53.000000000 +0200 +*************** +*** 25,31 **** + static int read_viminfo_up_to_marks __ARGS((vir_T *virp, int forceit, int writing)); + #endif + +- static int check_overwrite __ARGS((exarg_T *eap, buf_T *buf, char_u *fname, char_u *ffname, int other)); + static int check_readonly __ARGS((int *forceit, buf_T *buf)); + #ifdef FEAT_AUTOCMD + static void delbuf_msg __ARGS((char_u *name)); +--- 25,30 ---- +*************** +*** 2722,2728 **** + * May set eap->forceit if a dialog says it's OK to overwrite. + * Return OK if it's OK, FAIL if it is not. + */ +! static int + check_overwrite(eap, buf, fname, ffname, other) + exarg_T *eap; + buf_T *buf; +--- 2721,2727 ---- + * May set eap->forceit if a dialog says it's OK to overwrite. + * Return OK if it's OK, FAIL if it is not. + */ +! int + check_overwrite(eap, buf, fname, ffname, other) + exarg_T *eap; + buf_T *buf; +*** ../vim-7.3.506/src/ex_cmds2.c 2012-03-23 18:39:10.000000000 +0100 +--- src/ex_cmds2.c 2012-04-25 17:24:37.000000000 +0200 +*************** +*** 1489,1494 **** +--- 1489,1495 ---- + char_u buff[DIALOG_MSG_SIZE]; + int ret; + buf_T *buf2; ++ exarg_T ea; + + dialog_msg(buff, _("Save changes to \"%s\"?"), + (buf->b_fname != NULL) ? +*************** +*** 1498,1510 **** + else + ret = vim_dialog_yesnocancel(VIM_QUESTION, NULL, buff, 1); + + if (ret == VIM_YES) + { + #ifdef FEAT_BROWSE + /* May get file name, when there is none */ + browse_save_fname(buf); + #endif +! if (buf->b_fname != NULL) /* didn't hit Cancel */ + (void)buf_write_all(buf, FALSE); + } + else if (ret == VIM_NO) +--- 1499,1517 ---- + else + ret = vim_dialog_yesnocancel(VIM_QUESTION, NULL, buff, 1); + ++ /* Init ea pseudo-structure, this is needed for the check_overwrite() ++ * function. */ ++ ea.append = ea.forceit = FALSE; ++ + if (ret == VIM_YES) + { + #ifdef FEAT_BROWSE + /* May get file name, when there is none */ + browse_save_fname(buf); + #endif +! if (buf->b_fname != NULL && check_overwrite(&ea, buf, +! buf->b_fname, buf->b_ffname, FALSE) == OK) +! /* didn't hit Cancel */ + (void)buf_write_all(buf, FALSE); + } + else if (ret == VIM_NO) +*************** +*** 1532,1538 **** + /* May get file name, when there is none */ + browse_save_fname(buf2); + #endif +! if (buf2->b_fname != NULL) /* didn't hit Cancel */ + (void)buf_write_all(buf2, FALSE); + #ifdef FEAT_AUTOCMD + /* an autocommand may have deleted the buffer */ +--- 1539,1547 ---- + /* May get file name, when there is none */ + browse_save_fname(buf2); + #endif +! if (buf2->b_fname != NULL && check_overwrite(&ea, buf2, +! buf2->b_fname, buf2->b_ffname, FALSE) == OK) +! /* didn't hit Cancel */ + (void)buf_write_all(buf2, FALSE); + #ifdef FEAT_AUTOCMD + /* an autocommand may have deleted the buffer */ +*** ../vim-7.3.506/src/proto/ex_cmds.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/ex_cmds.pro 2012-04-25 17:25:47.000000000 +0200 +*************** +*** 23,28 **** +--- 23,29 ---- + void ex_update __ARGS((exarg_T *eap)); + void ex_write __ARGS((exarg_T *eap)); + int do_write __ARGS((exarg_T *eap)); ++ int check_overwrite __ARGS((exarg_T *eap, buf_T *buf, char_u *fname, char_u *ffname, int other)); + void ex_wnext __ARGS((exarg_T *eap)); + void do_wqall __ARGS((exarg_T *eap)); + int not_writing __ARGS((void)); +*** ../vim-7.3.506/src/version.c 2012-04-25 17:10:12.000000000 +0200 +--- src/version.c 2012-04-25 17:17:30.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 507, + /**/ + +-- +BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One. +ANOTHER MONK: And St. Attila raised his hand grenade up on high saying "O + Lord bless this thy hand grenade that with it thou mayest + blow thine enemies to tiny bits, in thy mercy. "and the Lord + did grin and people did feast upon the lambs and sloths and + carp and anchovies and orang-utans and breakfast cereals and + fruit bats and... +BROTHER MAYNARD: Skip a bit brother ... + "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/7.3.508 b/7.3.508 new file mode 100644 index 0000000..7b8e7b2 --- /dev/null +++ b/7.3.508 @@ -0,0 +1,85 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.508 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.508 +Problem: Default for v:register is not set. +Solution: Init v:register in eval_init(). Correct for 'clipboard' before the + main loop. (Ingo Karkat) +Files: src/eval.c, src/main.c + + +*** ../vim-7.3.507/src/eval.c 2012-04-25 16:50:44.000000000 +0200 +--- src/eval.c 2012-04-25 17:56:41.000000000 +0200 +*************** +*** 880,885 **** +--- 880,886 ---- + hash_add(&compat_hashtab, p->vv_di.di_key); + } + set_vim_var_nr(VV_SEARCHFORWARD, 1L); ++ set_reg_var(0); /* default for v:register is not 0 but '"' */ + + #ifdef EBCDIC + /* +*** ../vim-7.3.507/src/main.c 2012-03-28 17:10:26.000000000 +0200 +--- src/main.c 2012-04-25 18:01:28.000000000 +0200 +*************** +*** 928,933 **** +--- 928,945 ---- + TIME_MSG("VimEnter autocommands"); + #endif + ++ #if defined(FEAT_EVAL) && defined(FEAT_CLIPBOARD) ++ /* Adjust default register name for "unnamed" in 'clipboard'. Can only be ++ * done after the clipboard is available and all initial commands that may ++ * modify the 'clipboard' setting have run; i.e. just before entering the ++ * main loop. */ ++ { ++ int default_regname = 0; ++ adjust_clip_reg(&default_regname); ++ set_reg_var(default_regname); ++ } ++ #endif ++ + #if defined(FEAT_DIFF) && defined(FEAT_SCROLLBIND) + /* When a startup script or session file setup for diff'ing and + * scrollbind, sync the scrollbind now. */ +*************** +*** 1357,1363 **** + { + apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, + buf->b_fname, FALSE, buf); +! buf->b_changedtick = -1; /* note that we did it already */ + /* start all over, autocommands may mess up the lists */ + next_tp = first_tabpage; + break; +--- 1369,1375 ---- + { + apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, + buf->b_fname, FALSE, buf); +! buf->b_changedtick = -1; /* note that we did it already */ + /* start all over, autocommands may mess up the lists */ + next_tp = first_tabpage; + break; +*** ../vim-7.3.507/src/version.c 2012-04-25 17:32:14.000000000 +0200 +--- src/version.c 2012-04-25 18:00:28.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 508, + /**/ + +-- +I wonder, do vegetarians eat fruit bats? + + /// 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/7.3.509 b/7.3.509 new file mode 100644 index 0000000..8dfe9c0 --- /dev/null +++ b/7.3.509 @@ -0,0 +1,304 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.509 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.509 +Problem: ":vimgrep" fails when 'autochdir' is set. +Solution: A more generic solution for changing directory. (Ben Fritz) +Files: src/quickfix.c + + +*** ../vim-7.3.508/src/quickfix.c 2012-03-07 20:13:44.000000000 +0100 +--- src/quickfix.c 2012-04-25 18:52:24.000000000 +0200 +*************** +*** 130,138 **** + static void qf_fill_buffer __ARGS((qf_info_T *qi)); + #endif + static char_u *get_mef_name __ARGS((void)); +! static buf_T *load_dummy_buffer __ARGS((char_u *fname)); +! static void wipe_dummy_buffer __ARGS((buf_T *buf)); +! static void unload_dummy_buffer __ARGS((buf_T *buf)); + static qf_info_T *ll_get_or_alloc_list __ARGS((win_T *)); + + /* Quickfix window check helper macro */ +--- 130,139 ---- + static void qf_fill_buffer __ARGS((qf_info_T *qi)); + #endif + static char_u *get_mef_name __ARGS((void)); +! static void restore_start_dir __ARGS((char_u *dirname_start)); +! static buf_T *load_dummy_buffer __ARGS((char_u *fname, char_u *dirname_start, char_u *resulting_dir)); +! static void wipe_dummy_buffer __ARGS((buf_T *buf, char_u *dirname_start)); +! static void unload_dummy_buffer __ARGS((buf_T *buf, char_u *dirname_start)); + static qf_info_T *ll_get_or_alloc_list __ARGS((win_T *)); + + /* Quickfix window check helper macro */ +*************** +*** 3237,3255 **** + + /* Load file into a buffer, so that 'fileencoding' is detected, + * autocommands applied, etc. */ +! buf = load_dummy_buffer(fname); +! +! /* When autocommands changed directory: go back. We assume it was +! * ":lcd %:p:h". */ +! mch_dirname(dirname_now, MAXPATHL); +! if (STRCMP(dirname_start, dirname_now) != 0) +! { +! exarg_T ea; +! +! ea.arg = dirname_start; +! ea.cmdidx = CMD_lcd; +! ex_cd(&ea); +! } + + p_mls = save_mls; + #if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL) +--- 3238,3244 ---- + + /* Load file into a buffer, so that 'fileencoding' is detected, + * autocommands applied, etc. */ +! buf = load_dummy_buffer(fname, dirname_start, dirname_now); + + p_mls = save_mls; + #if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL) +*************** +*** 3320,3326 **** + { + /* Never keep a dummy buffer if there is another buffer + * with the same name. */ +! wipe_dummy_buffer(buf); + buf = NULL; + } + else if (!cmdmod.hide +--- 3309,3315 ---- + { + /* Never keep a dummy buffer if there is another buffer + * with the same name. */ +! wipe_dummy_buffer(buf, dirname_start); + buf = NULL; + } + else if (!cmdmod.hide +*************** +*** 3336,3347 **** + * many swap files. */ + if (!found_match) + { +! wipe_dummy_buffer(buf); + buf = NULL; + } + else if (buf != first_match_buf || (flags & VGR_NOJUMP)) + { +! unload_dummy_buffer(buf); + buf = NULL; + } + } +--- 3325,3336 ---- + * many swap files. */ + if (!found_match) + { +! wipe_dummy_buffer(buf, dirname_start); + buf = NULL; + } + else if (buf != first_match_buf || (flags & VGR_NOJUMP)) + { +! unload_dummy_buffer(buf, dirname_start); + buf = NULL; + } + } +*************** +*** 3487,3499 **** + } + + /* +! * Load file "fname" into a dummy buffer and return the buffer pointer. + * Returns NULL if it fails. +- * Must call unload_dummy_buffer() or wipe_dummy_buffer() later! + */ + static buf_T * +! load_dummy_buffer(fname) + char_u *fname; + { + buf_T *newbuf; + buf_T *newbuf_to_wipe = NULL; +--- 3476,3523 ---- + } + + /* +! * Restore current working directory to "dirname_start" if they differ, taking +! * into account whether it is set locally or globally. +! */ +! static void +! restore_start_dir(dirname_start) +! char_u *dirname_start; +! { +! char_u *dirname_now = alloc(MAXPATHL); +! +! if (NULL != dirname_now) +! { +! mch_dirname(dirname_now, MAXPATHL); +! if (STRCMP(dirname_start, dirname_now) != 0) +! { +! /* If the directory has changed, change it back by building up an +! * appropriate ex command and executing it. */ +! exarg_T ea; +! +! ea.arg = dirname_start; +! ea.cmdidx = (curwin->w_localdir == NULL) ? CMD_cd : CMD_lcd; +! ex_cd(&ea); +! } +! } +! } +! +! /* +! * Load file "fname" into a dummy buffer and return the buffer pointer, +! * placing the directory resulting from the buffer load into the +! * "resulting_dir" pointer. "resulting_dir" must be allocated by the caller +! * prior to calling this function. Restores directory to "dirname_start" prior +! * to returning, if autocmds or the 'autochdir' option have changed it. +! * +! * If creating the dummy buffer does not fail, must call unload_dummy_buffer() +! * or wipe_dummy_buffer() later! +! * + * Returns NULL if it fails. + */ + static buf_T * +! load_dummy_buffer(fname, dirname_start, resulting_dir) + char_u *fname; ++ char_u *dirname_start; /* in: old directory */ ++ char_u *resulting_dir; /* out: new directory */ + { + buf_T *newbuf; + buf_T *newbuf_to_wipe = NULL; +*************** +*** 3548,3569 **** + wipe_buffer(newbuf_to_wipe, FALSE); + } + + if (!buf_valid(newbuf)) + return NULL; + if (failed) + { +! wipe_dummy_buffer(newbuf); + return NULL; + } + return newbuf; + } + + /* +! * Wipe out the dummy buffer that load_dummy_buffer() created. + */ + static void +! wipe_dummy_buffer(buf) + buf_T *buf; + { + if (curbuf != buf) /* safety check */ + { +--- 3572,3604 ---- + wipe_buffer(newbuf_to_wipe, FALSE); + } + ++ /* ++ * When autocommands/'autochdir' option changed directory: go back. ++ * Let the caller know what the resulting dir was first, in case it is ++ * important. ++ */ ++ mch_dirname(resulting_dir, MAXPATHL); ++ restore_start_dir(dirname_start); ++ + if (!buf_valid(newbuf)) + return NULL; + if (failed) + { +! wipe_dummy_buffer(newbuf, dirname_start); + return NULL; + } + return newbuf; + } + + /* +! * Wipe out the dummy buffer that load_dummy_buffer() created. Restores +! * directory to "dirname_start" prior to returning, if autocmds or the +! * 'autochdir' option have changed it. + */ + static void +! wipe_dummy_buffer(buf, dirname_start) + buf_T *buf; ++ char_u *dirname_start; + { + if (curbuf != buf) /* safety check */ + { +*************** +*** 3583,3600 **** + * new aborting error, interrupt, or uncaught exception. */ + leave_cleanup(&cs); + #endif + } + } + + /* +! * Unload the dummy buffer that load_dummy_buffer() created. + */ + static void +! unload_dummy_buffer(buf) + buf_T *buf; + { + if (curbuf != buf) /* safety check */ + close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE); + } + + #if defined(FEAT_EVAL) || defined(PROTO) +--- 3618,3645 ---- + * new aborting error, interrupt, or uncaught exception. */ + leave_cleanup(&cs); + #endif ++ /* When autocommands/'autochdir' option changed directory: go back. */ ++ restore_start_dir(dirname_start); + } + } + + /* +! * Unload the dummy buffer that load_dummy_buffer() created. Restores +! * directory to "dirname_start" prior to returning, if autocmds or the +! * 'autochdir' option have changed it. + */ + static void +! unload_dummy_buffer(buf, dirname_start) + buf_T *buf; ++ char_u *dirname_start; + { + if (curbuf != buf) /* safety check */ ++ { + close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE); ++ ++ /* When autocommands/'autochdir' option changed directory: go back. */ ++ restore_start_dir(dirname_start); ++ } + } + + #if defined(FEAT_EVAL) || defined(PROTO) +*** ../vim-7.3.508/src/version.c 2012-04-25 18:24:24.000000000 +0200 +--- src/version.c 2012-04-25 18:43:10.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 509, + /**/ + +-- + Arthur pulls Pin out. The MONK blesses the grenade as ... +ARTHUR: (quietly) One, two, five ... +GALAHAD: Three, sir! +ARTHUR: Three. + "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/7.3.510 b/7.3.510 new file mode 100644 index 0000000..afe1041 --- /dev/null +++ b/7.3.510 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.510 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.510 +Problem: Test 77 fails on Solaris 7. (Michael Soyka) +Solution: Replace any tabs with spaces. +Files: src/testdir/test77.in + + +*** ../vim-7.3.509/src/testdir/test77.in 2011-03-22 18:10:34.000000000 +0100 +--- src/testdir/test77.in 2012-04-30 11:30:31.000000000 +0200 +*************** +*** 21,27 **** + :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile + ggdd + :w! Xtest +! :!cksum Xtest > test.out + :qa! + ENDTEST + +--- 21,29 ---- + :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile + ggdd + :w! Xtest +! :r !cksum Xtest +! :s/\s/ /g +! :.w! test.out + :qa! + ENDTEST + +*** ../vim-7.3.509/src/version.c 2012-04-25 18:57:17.000000000 +0200 +--- src/version.c 2012-04-30 11:33:35.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 510, + /**/ + +-- +SIGFUN -- signature too funny (core dumped) + + /// 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/7.3.511 b/7.3.511 new file mode 100644 index 0000000..a2b6dce --- /dev/null +++ b/7.3.511 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.511 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.511 +Problem: Using a FileReadCmd autocommand that does ":e! {file}" may cause a + crash. (Christian Brabandt) +Solution: Properly restore curwin->w_s. +Files: src/fileio.c + + +*** ../vim-7.3.510/src/fileio.c 2012-04-25 16:50:44.000000000 +0200 +--- src/fileio.c 2012-04-30 17:04:22.000000000 +0200 +*************** +*** 8982,8987 **** +--- 8982,8991 ---- + && buf_valid(aco->new_curbuf) + && aco->new_curbuf->b_ml.ml_mfp != NULL) + { ++ # if defined(FEAT_SYN_HL) || defined(FEAT_SPELL) ++ if (curwin->w_s == &curbuf->b_s) ++ curwin->w_s = &aco->new_curbuf->b_s; ++ # endif + --curbuf->b_nwindows; + curbuf = aco->new_curbuf; + curwin->w_buffer = curbuf; +*** ../vim-7.3.510/src/version.c 2012-04-30 11:34:20.000000000 +0200 +--- src/version.c 2012-04-30 17:01:05.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 511, + /**/ + +-- +There is no right or wrong, there is only your personal opinion. + (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/7.3.512 b/7.3.512 new file mode 100644 index 0000000..838ae3e --- /dev/null +++ b/7.3.512 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.512 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.512 +Problem: undofile() returns a useless name when passed an empty string. +Solution: Return an empty string. (Christian Brabandt) +Files: src/eval.c + + +*** ../vim-7.3.511/src/eval.c 2012-04-25 18:24:24.000000000 +0200 +--- src/eval.c 2012-04-30 17:23:26.000000000 +0200 +*************** +*** 18259,18269 **** + rettv->v_type = VAR_STRING; + #ifdef FEAT_PERSISTENT_UNDO + { +! char_u *ffname = FullName_save(get_tv_string(&argvars[0]), FALSE); + +! if (ffname != NULL) +! rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE); +! vim_free(ffname); + } + #else + rettv->vval.v_string = NULL; +--- 18259,18279 ---- + rettv->v_type = VAR_STRING; + #ifdef FEAT_PERSISTENT_UNDO + { +! char_u *fname = get_tv_string(&argvars[0]); + +! if (*fname == NUL) +! { +! /* If there is no file name there will be no undo file. */ +! rettv->vval.v_string = NULL; +! } +! else +! { +! char_u *ffname = FullName_save(fname, FALSE); +! +! if (ffname != NULL) +! rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE); +! vim_free(ffname); +! } + } + #else + rettv->vval.v_string = NULL; +*** ../vim-7.3.511/src/version.c 2012-04-30 17:04:47.000000000 +0200 +--- src/version.c 2012-04-30 17:24:42.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 512, + /**/ + +-- +It is illegal for a driver to be blindfolded while operating a vehicle. + [real standing law in Alabama, 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/7.3.513 b/7.3.513 new file mode 100644 index 0000000..396969f --- /dev/null +++ b/7.3.513 @@ -0,0 +1,129 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.513 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.513 +Problem: Cannot use CTRL-E and CTRL-Y with "r". +Solution: Make CTRL-E and CTRL-Y work like in Insert mode. (Christian + Brabandt) +Files: src/edit.c, src/normal.c, src/proto/edit.pro + + +*** ../vim-7.3.512/src/edit.c 2012-04-05 16:07:01.000000000 +0200 +--- src/edit.c 2012-04-30 17:53:47.000000000 +0200 +*************** +*** 253,259 **** + #ifdef FEAT_DIGRAPHS + static int ins_digraph __ARGS((void)); + #endif +- static int ins_copychar __ARGS((linenr_T lnum)); + static int ins_ctrl_ey __ARGS((int tc)); + #ifdef FEAT_SMARTINDENT + static void ins_try_si __ARGS((int c)); +--- 253,258 ---- +*************** +*** 9899,9905 **** + * Handle CTRL-E and CTRL-Y in Insert mode: copy char from other line. + * Returns the char to be inserted, or NUL if none found. + */ +! static int + ins_copychar(lnum) + linenr_T lnum; + { +--- 9898,9904 ---- + * Handle CTRL-E and CTRL-Y in Insert mode: copy char from other line. + * Returns the char to be inserted, or NUL if none found. + */ +! int + ins_copychar(lnum) + linenr_T lnum; + { +*** ../vim-7.3.512/src/normal.c 2012-03-28 12:59:53.000000000 +0200 +--- src/normal.c 2012-04-30 18:06:13.000000000 +0200 +*************** +*** 7070,7076 **** + for (n = cap->count1; n > 0; --n) + { + State = REPLACE; +! ins_char(cap->nchar); + State = old_State; + if (cap->ncharC1 != 0) + ins_char(cap->ncharC1); +--- 7070,7087 ---- + for (n = cap->count1; n > 0; --n) + { + State = REPLACE; +! if (cap->nchar == Ctrl_E || cap->nchar == Ctrl_Y) +! { +! int c = ins_copychar(curwin->w_cursor.lnum +! + (cap->nchar == Ctrl_Y ? -1 : 1)); +! if (c != NUL) +! ins_char(c); +! else +! /* will be decremented further down */ +! ++curwin->w_cursor.col; +! } +! else +! ins_char(cap->nchar); + State = old_State; + if (cap->ncharC1 != 0) + ins_char(cap->ncharC1); +*************** +*** 7092,7098 **** + * line will be changed. + */ + ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE); +! ptr[curwin->w_cursor.col] = cap->nchar; + if (p_sm && msg_silent == 0) + showmatch(cap->nchar); + ++curwin->w_cursor.col; +--- 7103,7117 ---- + * line will be changed. + */ + ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE); +! if (cap->nchar == Ctrl_E || cap->nchar == Ctrl_Y) +! { +! int c = ins_copychar(curwin->w_cursor.lnum +! + (cap->nchar == Ctrl_Y ? -1 : 1)); +! if (c != NUL) +! ptr[curwin->w_cursor.col] = c; +! } +! else +! ptr[curwin->w_cursor.col] = cap->nchar; + if (p_sm && msg_silent == 0) + showmatch(cap->nchar); + ++curwin->w_cursor.col; +*** ../vim-7.3.512/src/proto/edit.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/edit.pro 2012-04-30 17:54:41.000000000 +0200 +*************** +*** 39,42 **** +--- 39,43 ---- + int hkmap __ARGS((int c)); + void ins_scroll __ARGS((void)); + void ins_horscroll __ARGS((void)); ++ int ins_copychar __ARGS((linenr_T lnum)); + /* vim: set ft=c : */ +*** ../vim-7.3.512/src/version.c 2012-04-30 17:35:44.000000000 +0200 +--- src/version.c 2012-04-30 18:17:52.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 513, + /**/ + +-- +It is illegal for anyone to try and stop a child from playfully jumping over +puddles of water. + [real standing law in California, 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/7.3.514 b/7.3.514 new file mode 100644 index 0000000..79620f0 --- /dev/null +++ b/7.3.514 @@ -0,0 +1,232 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.514 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.514 +Problem: No completion for :history command. +Solution: Add the completion and update the docs. Also fix ":behave" + completion. (Dominique Pelle) +Files: runtime/doc/cmdline.txt, runtime/doc/map.txt, src/ex_docmd.c, + src/ex_getln.c, src/vim.h + + +*** ../vim-7.3.513/runtime/doc/cmdline.txt 2010-08-15 21:57:17.000000000 +0200 +--- runtime/doc/cmdline.txt 2012-04-30 18:30:00.000000000 +0200 +*************** +*** 330,341 **** + + :his[tory] [{name}] [{first}][, [{last}]] + List the contents of history {name} which can be: +! c[md] or : command-line history +! s[earch] or / search string history +! e[xpr] or = expression register history +! i[nput] or @ input line history +! d[ebug] or > debug command history +! a[ll] all of the above + {not in Vi} + + If the numbers {first} and/or {last} are given, the respective +--- 330,341 ---- + + :his[tory] [{name}] [{first}][, [{last}]] + List the contents of history {name} which can be: +! c[md] or : command-line history +! s[earch] or / or ? search string history +! e[xpr] or = expression register history +! i[nput] or @ input line history +! d[ebug] or > debug command history +! a[ll] all of the above + {not in Vi} + + If the numbers {first} and/or {last} are given, the respective +*** ../vim-7.3.513/runtime/doc/map.txt 2011-07-20 16:36:35.000000000 +0200 +--- runtime/doc/map.txt 2012-04-30 18:30:00.000000000 +0200 +*************** +*** 1202,1207 **** +--- 1219,1225 ---- + + -complete=augroup autocmd groups + -complete=buffer buffer names ++ -complete=behave :behave suboptions + -complete=color color schemes + -complete=command Ex command (and arguments) + -complete=compiler compilers +*************** +*** 1216,1221 **** +--- 1234,1240 ---- + -complete=function function name + -complete=help help subjects + -complete=highlight highlight groups ++ -complete=history :history suboptions + -complete=locale locale names (as output of locale -a) + -complete=mapping mapping name + -complete=menu menus +*** ../vim-7.3.513/src/ex_docmd.c 2012-02-12 20:13:55.000000000 +0100 +--- src/ex_docmd.c 2012-04-30 18:33:27.000000000 +0200 +*************** +*** 3920,3927 **** +--- 3920,3935 ---- + #endif + case CMD_behave: + xp->xp_context = EXPAND_BEHAVE; ++ xp->xp_pattern = arg; + break; + ++ #if defined(FEAT_CMDHIST) ++ case CMD_history: ++ xp->xp_context = EXPAND_HISTORY; ++ xp->xp_pattern = arg; ++ break; ++ #endif ++ + #endif /* FEAT_CMDL_COMPL */ + + default: +*************** +*** 5329,5334 **** +--- 5337,5343 ---- + } command_complete[] = + { + {EXPAND_AUGROUP, "augroup"}, ++ {EXPAND_BEHAVE, "behave"}, + {EXPAND_BUFFERS, "buffer"}, + {EXPAND_COLORS, "color"}, + {EXPAND_COMMANDS, "command"}, +*************** +*** 5350,5357 **** + {EXPAND_FUNCTIONS, "function"}, + {EXPAND_HELP, "help"}, + {EXPAND_HIGHLIGHT, "highlight"}, + #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ +! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) + {EXPAND_LOCALES, "locale"}, + #endif + {EXPAND_MAPPINGS, "mapping"}, +--- 5359,5369 ---- + {EXPAND_FUNCTIONS, "function"}, + {EXPAND_HELP, "help"}, + {EXPAND_HIGHLIGHT, "highlight"}, ++ #if defined(FEAT_CMDHIST) ++ {EXPAND_HISTORY, "history"}, ++ #endif + #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ +! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) + {EXPAND_LOCALES, "locale"}, + #endif + {EXPAND_MAPPINGS, "mapping"}, +*** ../vim-7.3.513/src/ex_getln.c 2012-03-07 19:16:49.000000000 +0100 +--- src/ex_getln.c 2012-04-30 18:36:04.000000000 +0200 +*************** +*** 25,31 **** + int cmdlen; /* number of chars in command line */ + int cmdpos; /* current cursor position */ + int cmdspos; /* cursor column on screen */ +! int cmdfirstc; /* ':', '/', '?', '=' or NUL */ + int cmdindent; /* number of spaces before cmdline */ + char_u *cmdprompt; /* message in front of cmdline */ + int cmdattr; /* attributes for prompt */ +--- 25,31 ---- + int cmdlen; /* number of chars in command line */ + int cmdpos; /* current cursor position */ + int cmdspos; /* cursor column on screen */ +! int cmdfirstc; /* ':', '/', '?', '=', '>' or NUL */ + int cmdindent; /* number of spaces before cmdline */ + char_u *cmdprompt; /* message in front of cmdline */ + int cmdattr; /* attributes for prompt */ +*************** +*** 111,116 **** +--- 111,119 ---- + #ifdef FEAT_CMDL_COMPL + static int expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg)); + static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[])); ++ # ifdef FEAT_CMDHIST ++ static char_u *get_history_arg __ARGS((expand_T *xp, int idx)); ++ # endif + # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) + static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file)); + static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file)); +*************** +*** 4628,4633 **** +--- 4631,4639 ---- + { + {EXPAND_COMMANDS, get_command_name, FALSE, TRUE}, + {EXPAND_BEHAVE, get_behave_arg, TRUE, TRUE}, ++ #ifdef FEAT_CMDHIST ++ {EXPAND_HISTORY, get_history_arg, TRUE, TRUE}, ++ #endif + #ifdef FEAT_USR_CMDS + {EXPAND_USER_COMMANDS, get_user_commands, FALSE, TRUE}, + {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE, TRUE}, +*************** +*** 5245,5250 **** +--- 5251,5284 ---- + NULL + }; + ++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO) ++ /* ++ * Function given to ExpandGeneric() to obtain the possible first ++ * arguments of the ":history command. ++ */ ++ static char_u * ++ get_history_arg(xp, idx) ++ expand_T *xp UNUSED; ++ int idx; ++ { ++ static char_u compl[2] = { NUL, NUL }; ++ char *short_names = ":=@>?/"; ++ int short_names_count = STRLEN(short_names); ++ int history_name_count = sizeof(history_names) / sizeof(char *) - 1; ++ ++ if (idx < short_names_count) ++ { ++ compl[0] = (char_u)short_names[idx]; ++ return compl; ++ } ++ if (idx < short_names_count + history_name_count) ++ return (char_u *)history_names[idx - short_names_count]; ++ if (idx == short_names_count + history_name_count) ++ return (char_u *)"all"; ++ return NULL; ++ } ++ #endif ++ + /* + * init_history() - Initialize the command line history. + * Also used to re-allocate the history when the size changes. +*** ../vim-7.3.513/src/vim.h 2012-03-23 16:25:13.000000000 +0100 +--- src/vim.h 2012-04-30 18:30:00.000000000 +0200 +*************** +*** 781,786 **** +--- 781,787 ---- + #define EXPAND_FILES_IN_PATH 38 + #define EXPAND_OWNSYNTAX 39 + #define EXPAND_LOCALES 40 ++ #define EXPAND_HISTORY 41 + + /* Values for exmode_active (0 is no exmode) */ + #define EXMODE_NORMAL 1 +*** ../vim-7.3.513/src/version.c 2012-04-30 18:18:43.000000000 +0200 +--- src/version.c 2012-04-30 18:36:19.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 514, + /**/ + +-- +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/7.3.515 b/7.3.515 new file mode 100644 index 0000000..dad6f61 --- /dev/null +++ b/7.3.515 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.515 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.515 +Problem: 'wildignorecase' only applies to the last part of the path. +Solution: Also ignore case for letters earlier in the path. +Files: src/misc1.c + + +*** ../vim-7.3.514/src/misc1.c 2012-04-09 20:42:20.000000000 +0200 +--- src/misc1.c 2012-04-30 21:00:18.000000000 +0200 +*************** +*** 9461,9466 **** +--- 9461,9467 ---- + + /* + * Find the first part in the path name that contains a wildcard. ++ * When EW_ICASE is set every letter is considered to be a wildcard. + * Copy it into "buf", including the preceding characters. + */ + p = buf; +*************** +*** 9480,9486 **** + s = p + 1; + } + else if (path_end >= path + wildoff +! && vim_strchr((char_u *)"*?[{~$", *path_end) != NULL) + e = p; + #ifdef FEAT_MBYTE + if (has_mbyte) +--- 9481,9492 ---- + s = p + 1; + } + else if (path_end >= path + wildoff +! && (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL +! #ifndef CASE_INSENSITIVE_FILENAME +! || ((flags & EW_ICASE) +! && isalpha(PTR2CHAR(path_end))) +! #endif +! )) + e = p; + #ifdef FEAT_MBYTE + if (has_mbyte) +*** ../vim-7.3.514/src/version.c 2012-04-30 18:48:38.000000000 +0200 +--- src/version.c 2012-04-30 21:05:10.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 515, + /**/ + +-- +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/Changelog.rpm b/Changelog.rpm index b49d6dd..4843d03 100644 --- a/Changelog.rpm +++ b/Changelog.rpm @@ -1,415 +1,209 @@ -* Fri Jul 04 2008 Karsten Hopp 7.1.330-2 -- new rpm doesn't like zero filled, 3 digit patch numbers +* Tue Jul 27 2010 Mamoru Tasaka 7.2.446-2 +- Rebuild against python 2.7 -* Fri Jul 04 2008 Karsten Hopp 7.1.330-1 -- patchlevel 330 +* Tue Jul 13 2010 Karsten Hopp 7.2.446-1 +- patchlevel 446 -* Wed Jun 04 2008 Karsten Hopp 7.1.309-1 -- Patchlevel 309 +* Thu Jul 08 2010 Karsten Hopp 7.2.445-1 +- patchlevel 445 -* Wed Jun 04 2008 Karsten Hopp 7.1.306-1 -- patchlevel 306, fixes some unicode characters +* Wed Jun 23 2010 Karsten Hopp 7.2.444-2 +- rebuild with perl-5.12 -* Tue Jun 03 2008 Karsten Hopp 7.1.305-1 -- patchlevel 305 -- put /etc/vimrc autocmd's into fedora augroup (similar to #241308) +* Sun Jun 13 2010 Karsten Hopp 7.2.444-1 +- patchlevel 444 -* Thu May 15 2008 Karsten Hopp 7.1.298-1 -- patchlevel 298 +* Sun Jun 13 2010 Karsten Hopp 7.2.443-1 +- patchlevel 443 -* Fri Apr 11 2008 Karsten Hopp 7.1.293-1 -- patchlevel 293 -- update forth syntax file (Benjamin Krill) +* Sat Jun 05 2010 Karsten Hopp 7.2.442-1 +- patchlevel 442 -* Wed Apr 02 2008 Karsten Hopp 7.1.291-1 -- patchlevel 291, more fixes for leftover /tmp/cscope* files +* Wed Jun 02 2010 Marcela Maslanova - 2:7.2.441-2 +- Mass rebuild with perl-5.12.0 -* Tue Mar 18 2008 Tom "spot" Callaway 7.1.283-2 -- add Requires for versioned perl (libperl.so) +* Sun May 30 2010 Karsten Hopp 7.2.441-1 +- patchlevel 441 -* Mon Mar 17 2008 Karsten Hopp 7.1.283-1 -- patchlevel 283, fixes leftover cscope files in /tmp +* Sat May 29 2010 Karsten Hopp 7.2.440-1 +- patchlevel 440 -* Wed Mar 12 2008 Karsten Hopp 7.1.273-1 -- update to patchlevel 273, this fixes #436902 +* Wed May 26 2010 Karsten Hopp 7.2.438-1 +- patchlevel 438 -* Tue Mar 11 2008 Karsten Hopp 7.1.270-1 -- patchlevel 270 -- don't write swapfile on most common locations for USB-sticks (#436752) -- add spec file template +* Sat May 22 2010 Karsten Hopp 7.2.437-1 +- patchlevel 437 -* Mon Mar 10 2008 Tom "spot" Callaway 7.1.269-2 -- BR: ExtUtils::Embed to find perl headers +* Sun May 16 2010 Karsten Hopp 7.2.436-1 +- patchlevel 436 -* Mon Mar 10 2008 Karsten Hopp 7.1.269-1 -- patchlevel 269 -- rebuild with new perl (#436731) +* Sat May 15 2010 Karsten Hopp 7.2.433-1 +- patchlevel 433 -* Mon Mar 03 2008 Karsten Hopp 7.1.266-1 -- patchlevel 266 -- add minimal help page for /bin/vi (#173974) +* Fri May 14 2010 Karsten Hopp 7.2.427-1 +- patchlevel 427 -* Mon Feb 25 2008 Karsten Hopp 7.1.262-1 -- patchlevel 262 -- add fix for #231124, BOM was ignored -- enable ruby interpreter (#215207) -- add filetype for Erlang header files (#417371) +* Thu May 13 2010 Karsten Hopp 7.2.422-1 +- patchlevel 422 -* Mon Feb 11 2008 Karsten Hopp 7.1.245-1 -- patchlevel 245 +* Fri May 07 2010 Karsten Hopp 7.2.416-1 +- patchlevel 416 -* Sun Jan 27 2008 Karsten Hopp 7.1.242-1 -- patchlevel 242 +* Tue Apr 20 2010 Karsten Hopp 7.2.411-2 +- fix rvim manpage (#583180) -* Fri Jan 18 2008 Karsten Hopp 7.1.233-2 -- silence taglist plugin (#429200) +* Wed Mar 24 2010 Karsten Hopp 7.2.411-1 +- patchlevel 411 -* Fri Jan 18 2008 Karsten Hopp 7.1.233-1 -- patchlevel 233 -- fix ada patch +* Tue Mar 23 2010 Karsten Hopp 7.2.410-1 +- patchlevel 410 -* Wed Jan 16 2008 Karsten Hopp 7.1.230-2 -- add newer ada runtime files to fix bugzilla #246378 +* Sat Mar 20 2010 Karsten Hopp 7.2.403-1 +- patchlevel 403 -* Wed Jan 16 2008 Karsten Hopp 7.1.230-1 -- patchlevel 230, fixes memory leak +* Thu Mar 18 2010 Karsten Hopp 7.2.402-1 +- patchlevel 402 -* Mon Jan 14 2008 Karsten Hopp 7.1.228-1 -- patchlevel 228 -- allow overwriting WITH_SELING at build time (#427710) +* Wed Mar 17 2010 Karsten Hopp 7.2.399-1 +- patchlevel 399 -* Thu Jan 10 2008 Karsten Hopp 7.1.214-1 -- patchlevel 214 +* Wed Mar 10 2010 Karsten Hopp 7.2.394-1 +- patchlevel 394 -* Mon Jan 07 2008 Karsten Hopp 7.1.211-1 -- patchlevel 211 +* Wed Mar 03 2010 Karsten Hopp 7.2.385-1 +- patchlevel 385 -* Sat Dec 22 2007 Karsten Hopp 7.1.175-1 -- patchlevel 175 +* Tue Mar 02 2010 Karsten Hopp 7.2.384-1 +- patchlevel 384 -* Thu Nov 22 2007 Karsten Hopp 7.1.159-1 -- patchlevel 159 -- vim-enhanced requires which for vimtutor (#395371) +* Tue Mar 02 2010 Karsten Hopp 7.2.381-1 +- patchlevel 381 -* Thu Oct 04 2007 Karsten Hopp 7.1.135-1 -- patchlevel 135 +* Sat Feb 27 2010 Karsten Hopp 7.2.377-1 +- patchlevel 377 -* Wed Sep 26 2007 Karsten Hopp 7.1.122-1 -- patchlevel 122 +* Wed Feb 24 2010 Karsten Hopp 7.2.376-1 +- patchlevel 376 -* Tue Sep 25 2007 Karsten Hopp 7.1.119-1 -- patchlevel 119 +* Thu Feb 18 2010 Karsten Hopp 7.2.368-1 +- patchlevel 368 -* Mon Sep 24 2007 Karsten Hopp 7.1.116-1 -- patchlevel 116 +* Thu Feb 18 2010 Karsten Hopp 7.2.367-1 +- patchlevel 367 -* Fri Sep 07 2007 Karsten Hopp 7.1.100-1 -- patchlevel 100 +* Wed Feb 17 2010 Karsten Hopp 7.2.365-1 +- patchlevel 365 -* Fri Aug 24 2007 Karsten Hopp 7.1.87-1 -- add build requirement perl-devel -- fix tarball unpacking -- patchlevel 87 +* Fri Feb 12 2010 Karsten Hopp 7.2.359-1 +- patchlevel 359 -* Wed Aug 15 2007 Karsten Hopp 7.1.77-1 -- patchlevel 77 +* Thu Feb 11 2010 Karsten Hopp 7.2.357-1 +- patchlevel 357 -* Mon Aug 13 2007 Karsten Hopp 7.1.68-1 -- patchlevel 68 +* Thu Feb 04 2010 Karsten Hopp 7.2.356-1 +- patchlevel 356 -* Thu Aug 02 2007 Karsten Hopp 7.1.47-1 -- patchlevel 47 +* Wed Feb 03 2010 Karsten Hopp 7.2.354-1 +- patchlevel 354 -* Wed Jul 11 2007 Karsten Hopp 7.1.28-1 -- patchlevel 28 +* Fri Jan 29 2010 Karsten Hopp 7.2.351-1 +- patchlevel 351 -* Wed Jun 27 2007 Karsten Hopp 7.1.12-1 -- Patchlevel 12 +* Thu Jan 28 2010 Karsten Hopp 7.2.350-1 +- patchlevel 350 -* Mon Jun 04 2007 Karsten Hopp 7.1.2-1 -- vim 7.1 -- drop 240 patches +* Mon Dec 7 2009 Stepan Kasal - 2:7.2.315-2 +- rebuild against perl 5.10.1 -* Tue May 22 2007 Karsten Hopp 7.0.235-1 -- Don't wake up system with blinking gvim cursor: - http://www.linuxpowertop.org/known.php +* Wed Dec 03 2009 Karsten Hopp 7.2.315-1 +- patchlevel 315 +- fix vimrc location in man page (#456992) +- correct syntax highlighting of httpd config files in /etc/httpd (#499123) +- Buildrequire ruby, ruby-devel (#503872) +- Remove check for static gravity (#510307) +- sort tags file (#517725) +- use one gvim to open multiple file selections from nautilus (#519265) +- use elinks -source instead of elinks -dump (#518791) +- add ext4 keyword to /etc/fstab syntax highlighting (#498290) -* Mon Apr 30 2007 Karsten Hopp 7.0.235-1 -- update to patchlevel 235, fixes modeline issues +* Mon Nov 09 2009 Karsten Hopp 7.2.284-1 +- patchlevel 284 -* Tue Apr 17 2007 Karsten Hopp 7.0.224-3 -- fix typo in require line (vim-X11 - 2:7.0.224-2.fc7.i386 requires 4) +* Thu Aug 20 2009 Karsten Hopp 7.2.245-3 +- change range of system ids in /etc/profile.d/vim/* (#518555) -* Mon Apr 16 2007 Karsten Hopp 7.0.224-2 -- use more macros -- drop BR perl -- move license to main doc directory -- set vendor to 'fedora' (desktop-file) -- don't own man directories -- preserve timestamps of non-generated files -- run update-desktop-database +* Mon Aug 03 2009 Karsten Hopp 7.2.245-2 +- add fix for glibc fortify segfault (#514717, Adam Tkac) -* Thu Apr 05 2007 Karsten Hopp 7.0.224-1 -- vim-X11 provides gvim +* Sat Aug 01 2009 Karsten Hopp 7.2.245-1 +- add 97 upstream patches to get to patchlevel 245 -* Fri Mar 30 2007 Karsten Hopp 7.0.224-1 -- patchlevel 224 +* Sun Jul 26 2009 Fedora Release Engineering - 2:7.2.148-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild -* Wed Feb 21 2007 Karsten Hopp 7.0.195-2 -- rpmlint fixes (#226526) +* Fri Mar 27 2009 Karsten Hopp 7.2.148-1 +- patchlevel 148, fixes #461417 -* Tue Feb 13 2007 Karsten Hopp 7.0.195-1 -- patchlevel 195 +* Tue Mar 10 2009 Karsten Hopp 7.2.132-1 +- patchlevel 132, fixes accesses to freed memory -* Mon Feb 12 2007 Karsten Hopp 7.0.192-1 -- patchlevel 192 -- test fix for highlighting problems with curly brackets in #define (#203577) +* Wed Mar 04 2009 Karsten Hopp 7.2.131-1 +- patchlevel 131 -* Tue Feb 06 2007 Karsten Hopp 7.0.191-2 -- uses ncurses instead of ncursesw +* Tue Feb 24 2009 Karsten Hopp 7.2.127-1 +- patchlevel 127 -* Tue Feb 06 2007 Karsten Hopp 7.0.191-1 -- patchlevel 191 -- clean up spec file for rpmlint -- drop cvim stuff +* Mon Feb 23 2009 Karsten Hopp 7.2.124-1 +- patchlevel 124 -* Tue Jan 23 2007 Karsten Hopp 7.0.188-3 -- patchlevel 188 +* Mon Jan 26 2009 Karsten Hopp 7.2.088-1 +- patchlevel 88 -* Mon Jan 08 2007 Karsten Hopp 7.0.178-3 -- enable filetype plugin +* Thu Jan 08 2009 Karsten Hopp 7.2.079-2 +- patchlevel 79 -* Thu Dec 14 2006 Karsten Hopp 7.0.178-2 -- build vim-minimal with features=small instead of tiny (#219605) +* Thu Dec 04 2008 Jesse Keating - 7.2.060-2 +- Rebuild for new python. -* Tue Dec 12 2006 Karsten Hopp 7.0.178-1 -- add vimfiles/after to list of owned directories +* Mon Dec 01 2008 Karsten Hopp 7.2.060-1 +- patchlevel 60 -* Tue Dec 12 2006 Karsten Hopp 7.0.178-1 -- patchlevel 178 -- use macros -- Resolves: #219154 - add directory /usr/share/vim/vimfiles for plugins +* Mon Nov 10 2008 Karsten Hopp 7.2.032-1 +- patchlevel 32 -* Thu Dec 7 2006 Jeremy Katz -- rebuild for python 2.5 +* Mon Nov 03 2008 Karsten Hopp 7.2.026-2 +- add more /usr/share/vim/vimfiles directories (#444387) -* Wed Nov 22 2006 Karsten Hopp 7.0.168-1 -- patchlevel 168 -- link with ncurses +* Mon Nov 03 2008 Karsten Hopp 7.2.026-1 +- patchlevel 26 +- own some directories in /usr/share/vim/vimfiles (#469491) -* Tue Nov 21 2006 Karsten Hopp 7.0.164-2 -- patchlevel 164 +* Tue Oct 21 2008 Karsten Hopp 7.2.025-2 +- re-enable clean -* Mon Nov 13 2006 Karsten Hopp 7.0.162-2 -- fix lang problem in spec file mode -- use old g:packager variable when set +* Mon Oct 20 2008 Karsten Hopp 7.2.025-1 +- patchlevel 25 +- add Categories tag to desktop file (#226526) +- add requirement on hicolor-icon-theme to vim-X11 (#226526) +- drop Amiga info files (#226526) +- remove non-utf8 man pages (#226526) +- drop Application from categories (#226526) -* Fri Nov 10 2006 Karsten Hopp 7.0.162-1 -- patchlevel 162 - -* Mon Nov 06 2006 Karsten Hopp 7.0.158-1 -- patchlevel 158 - -* Tue Oct 17 2006 Karsten Hopp 7.0.139-1 -- patchlevel 139 -- provide vim, vi (#210950) - -* Thu Sep 28 2006 Jeremy Katz - 7.0.109-3 -- disable vim-spell subpackage as it pushes us over CD boundaries - -* Tue Sep 28 2006 Karsten Hopp 7.0.109-2 -- fix typo in vimspell.sh (#203178) - -* Tue Sep 19 2006 Karsten Hopp 7.0.109-1 -- update to patchlevel 109 to fix some redraw problems -- fix invisible comments in diff mode (#204042) - -* Tue Sep 12 2006 Karsten Hopp 7.0.100-1 -- Patchlevel 100 -- replace runtime files with newer ones - -* Mon Sep 11 2006 Karsten Hopp 7.0.099-1 -- Patchlevel 99 - -* Mon Sep 05 2006 Karsten Hopp 7.0.086-1 -- Patchlevel 86 - -* Mon Sep 04 2006 Karsten Hopp 7.0.083-1 -- Patchlevel 83 - -* Wed Aug 30 2006 Karsten Hopp 7.0.076-1 -- Patchlevel 76 - -* Thu Aug 25 2006 Karsten Hopp 7.0.066-2 -- fix vimdiff colors (#204042) - -* Thu Aug 24 2006 Karsten Hopp 7.0.066-1 -- fix syntax patch (#203798) -- patchlevel 66 - -* Wed Aug 17 2006 Karsten Hopp 7.0.063-1 -- Patchlevel 63 - -* Wed Aug 15 2006 Karsten Hopp 7.0.053-1 -- Patchlevel 53 -- Buildrequires libXpm-devel - -* Wed Aug 09 2006 Karsten Hopp 7.0.050-1 -- Patchlevel 50 - -* Thu Aug 03 2006 Karsten Hopp 7.0.042-2 -- clean up spec file - -* Mon Jul 24 2006 Karsten Hopp 7.0.042-1 -- patchlevel 42 - -* Wed Jul 20 2006 Karsten Hopp 7.0.039-1 -- patchlevel 39 -- allow usage of $VIM variable (#199465) - -* Wed Jul 12 2006 Jesse Keating - 2:7.0.035-1.1 -- rebuild - -* Tue Jun 27 2006 Karsten Hopp 7.0.035-1 -- patchlevel 35 - -* Wed Jun 21 2006 Karsten Hopp 7.0.022-2 -- add binfmt_misc rpc_pipefs to fstypes for better mtab highlighting - -* Tue Jun 20 2006 Karsten Hopp 7.0.022-1 +* Tue Sep 30 2008 Karsten Hopp 7.2.022-1 - patchlevel 22 -* Tue Jun 20 2006 Karsten Hopp 7.0.020-1 -- patchlevel 20 - -* Tue Jun 20 2006 Karsten Hopp 7.0.019-1 -- patchlevel 19 -- buildrequire autoconf - -* Tue May 30 2006 Karsten Hopp 7.0.017-1 -- patchlevel 17, although it affects just the Motif version -- own some directories (#192787) - -* Sat May 13 2006 Karsten Hopp 7.0.016-1 -- patchlevel 016 - -* Fri May 12 2006 Karsten Hopp 7.0.012-1 -- patchlevel 012 - -* Thu May 11 2006 Karsten Hopp 7.0.010-1 -- patchlevel 010 - -* Wed May 10 2006 Karsten Hopp 7.0.005-2 -- patchlevel 005 -- move older changelogs (<7.0) into a file, no need to keep them - in the rpm database - -* Tue May 09 2006 Karsten Hopp 7.0.000-2 -- bump epoch, the buildsystem thinks 7.0.000-2 is older than 7.0.g001-1 - although rpm is quite happy with it. - -* Mon May 08 2006 Karsten Hopp 7.0.000-1 -- vim-7.0 -- Spell checking support for about 50 languages -- Intelligent completion for C, HTML, Ruby, Python, PHP, etc. -- Tab pages, each containing multiple windows -- Undo branches: never accidentally lose text again -- Vim script supports Lists and Dictionaries (similar to Python) -- Vim script profiling -- Improved Unicode support -- Highlighting of cursor line, cursor column and matching braces -- Translated manual pages support. -- Internal grep; works on all platforms, searches compressed files -- Browsing remote directories, zip and tar archives -- Printing multi-byte text -- find details about the changes since vim-6.4 with :help version7 - -- fix SE Linux context of temporary (.swp) files (#189968) -- /bin/vi /vim-minimal is now using /etc/virc to avoid .rpmnew files - when updating - -* Tue May 02 2006 Karsten Hopp 7.0.g001-1 -- vim-7.0g BETA - -* Fri Apr 28 2006 Karsten Hopp 7.0.f001-1 -- vim-7.0f3 BETA - -* Thu Apr 20 2006 Karsten Hopp 7.0.e001-1 -- vim-7.0e BETA - -* Tue Apr 11 2006 Karsten Hopp 7.0.d001-1 -- vim-7.0d BETA - -* Fri Apr 07 2006 Karsten Hopp 7.0c.000-3 -- fix vimrc filename - -* Thu Apr 06 2006 Karsten Hopp 7.0c.000-2 -- new snapshot - -* Tue Apr 04 2006 Karsten Hopp 7.0c.000-1 -- vim-7.0c BETA - -* Wed Mar 22 2006 Karsten Hopp 7.0aa.000-3 -- Rawhide build as vim, opposed to vim7 (prerelease) -- conflict with older man-pages-{it,fr} packages -- cleanup lang stuff - -* Thu Mar 16 2006 Karsten Hopp 7.0aa.000-2 -- make it coexist with vim-6 (temporarily) -- new CVS snapshot - -* Tue Mar 14 2006 Karsten Hopp 7.0aa.000-1 -- vim7 pre Release -- older changelogs available in Changelog.rpm -* Thu Mar 09 2006 Karsten Hopp 6.4.007-4 -- fix configure check for python (#184478) - -* Thu Mar 09 2006 Karsten Hopp 6.4.007-3 -- rebuild - -* Mon Feb 20 2006 Karsten Hopp 6.4.007-2 -- gtk-update-icon-cache --ignore-theme-index - (avoids %%post failures when hicolor-icon-theme isn't installed) - -* Wed Feb 15 2006 Karsten Hopp 6.4.007-1 -- fix vim.csh script (#180429) -- patchlevel 7 - -* Fri Feb 10 2006 Jesse Keating - 1:6.4.006-1.2 -- bump again for double-long bug on ppc(64) - -* Tue Feb 07 2006 Jesse Keating - 1:6.4.006-1.1 -- rebuilt for new gcc4.1 snapshot and glibc changes - -* Mon Jan 02 2006 Karsten Hopp 6.4.006-1 -- patchlevel 6, fixes bz# 175048 - -* Tue Dec 20 2005 Karsten Hopp 6.4.004-2 -- disable templates when editing new .c / .h files (#175878) - -* Fri Dec 09 2005 Jesse Keating -- rebuilt - -* Thu Dec 08 2005 Karsten Hopp 6.4.004-1 -- fix fstab syntax file (#174735) -- patchlevel 4 - -* Wed Nov 30 2005 Karsten Hopp 6.4.003-1 -- patchlevel 3 -- remove withgui switch as we include vim-X11 in all our distributions now - (#174271) - -* Fri Nov 25 2005 Karsten Hopp 6.4.000-4 -- enable tmpfile patch +* Mon Sep 08 2008 Karsten Hopp 7.2.013-1 +- patchlevel 13 -* Thu Oct 27 2005 Karsten Hopp 6.4.000-3 -- test build +* Mon Aug 25 2008 Karsten Hopp 7.2.006-1 +- patchlevel 6 -* Tue Oct 25 2005 Karsten Hopp 6.4.000-2 -- use %%{_sysconfdir} (#171556) -- add syntax highlighting rule for %%check (Ralf Ertzinger, #165277) +* Mon Aug 18 2008 Karsten Hopp 7.2.002-1 +- patchlevel 2 +- fix specfile template (#446070) +- old specfile changelog moved to Changelog.rpm -* Mon Oct 17 2005 Karsten Hopp 6.4.000-1 -- vim-6.4 patchlevel 0 +* Fri Aug 14 2008 Karsten Hopp 7.2.000-1 +- vim 7.2 +- drop 330 patches diff --git a/README.patches b/README.patches index d42ea55..e0e5ed7 100644 --- a/README.patches +++ b/README.patches @@ -366,7 +366,7 @@ Individual patches for Vim 7.3: 7688 7.3.333 "." repeats a Visual delete by byte size instead of characters 1710 7.3.334 latest MingW complains about XSUBPP referencing itself 1532 7.3.335 changing 'imdisable' in Insert mode takes effect only later - 30504 7.3.336 encoding in tags file causes trouble + 30156 7.3.336 encoding in tags file causes trouble (NOW IN LATIN1) 1876 7.3.337 no screen update after resizing xterm until character typed 2851 7.3.338 using getchar() in an expression mapping doesn't work well 1762 7.3.339 "make shadow" doesn't link all test files @@ -502,3 +502,47 @@ Individual patches for Vim 7.3: 1557 7.3.469 compiler warning for unused argument 1892 7.3.470 test 62 fails when compiled without GUI and X11 2817 7.3.471 can't abort listing placed signs + 2792 7.3.472 crash when using ":redraw" in a BufEnter autocmd + 2119 7.3.473 'cursorbind' does not work correctly with 'virtualedit' "all" + 1682 7.3.474 gcc 4 build with Perl fails + 3670 7.3.475 in terminal with few colors omnicomplete menu is hard to see + 1874 7.3.476 backspacing in a Visual block selection causes problems. + 1725 7.3.477 scrolling back at the more prompt shows the wrong text + 1354 7.3.478 memory leak when the ':rv!' command reads a dict or list + 6622 7.3.479 'cursorline' line number highlighting can't be set separately + 6208 7.3.480 when using ":qa" priority of changed buffers could be better + 1945 7.3.481 changing 'virtualedit' in an operator function does not work + 1827 7.3.482 with 'cursorbind' set moving up/down does not keep the column + 3003 7.3.483 (after 7.3.477) more prompt shows up too ofte. + 2206 7.3.484 "vim --help" does not mention -E and --echo-wid + 1677 7.3.485 LDFLAGS isn't passed on to building xxd + 1803 7.3.486 build error with mingw64 on Windows 7 + 19665 7.3.487 column position is reset unnecessarily when setting an option + 1458 7.3.488 ":help!" in a help file does not work as documented + 2783 7.3.489 Insert mode CTRL-] does not expand abbr. from a mapping + 74085 7.3.490 Lua interface: Member confusion, missing luaeval() + 7738 7.3.491 no tests for Lua + 14093 7.3.492 can't indent conditions separately from function arguments + 1565 7.3.493 (after 7.3.492) two unused variables + 6811 7.3.494 (after 7.3.491) can't build with Lua 9.1 or dynamic Lua + 3559 7.3.495 (after 7.3.492) compiler warnings + 2262 7.3.496 MS-DOS: tests fail when "diff" trips over line separators + 1606 7.3.497 crash when doing ":python print", compiled with gcc -O2 + 2021 7.3.498 the behavior of "- register changes depending on 'clipboard' + 2561 7.3.499 may wait for the wrong child process to terminate + 1414 7.3.500 Ming makefile unconditionally sets WINVER + 1761 7.3.501 error for "flush" not being defined when using Ruby command + 2010 7.3.502 Netbeans insert halfway a line actually appends to the line + 1288 7.3.503 (after 7.3.501) warning for unused argument + 2602 7.3.504 commands in help files are not highlighted + 3376 7.3.505 test 11 fails on MS-Windows in some versions + 3040 7.3.506 GTK gives an error when selecting a non-existent file + 5241 7.3.507 overwriting existing file without question from file dialog + 2838 7.3.508 default for v:register is not set + 8621 7.3.509 'autochdir' causes :vimgrep to fail + 1462 7.3.510 test 77 fails on Solaris 7 + 1563 7.3.511 crash when using FileReadCmd autocmd that does :e {file} + 2049 7.3.512 undofile() returns a useless name when passed an empty string + 3925 7.3.513 cannot use CTRL-E and CTRL-Y with "r" + 7792 7.3.514 no completion for :history command + 2073 7.3.515 'wildignorecase' only applies to the last part of the path diff --git a/vim.spec b/vim.spec index cbb0930..ce4f46d 100644 --- a/vim.spec +++ b/vim.spec @@ -18,7 +18,7 @@ #used for pre-releases: %define beta %{nil} %define vimdir vim73%{?beta} -%define patchlevel 471 +%define patchlevel 515 Summary: The VIM editor URL: http://www.vim.org/ @@ -30,7 +30,7 @@ Group: Applications/Editors Source0: ftp://ftp.vim.org/pub/vim/unix/vim-%{baseversion}%{?beta}%{?CVSDATE}.tar.bz2 Source3: gvim.desktop Source4: vimrc -#Source5: ftp://ftp.vim.org/pub/vim/patches/README.patches +Source5: ftp://ftp.vim.org/pub/vim/patches/README.patches Source7: gvim16.png Source8: gvim32.png Source9: gvim48.png @@ -527,6 +527,50 @@ Patch468: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.468 Patch469: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.469 Patch470: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.470 Patch471: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.471 +Patch472: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.472 +Patch473: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.473 +Patch474: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.474 +Patch475: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.475 +Patch476: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.476 +Patch477: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.477 +Patch478: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.478 +Patch479: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.479 +Patch480: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.480 +Patch481: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.481 +Patch482: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.482 +Patch483: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.483 +Patch484: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.484 +Patch485: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.485 +Patch486: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.486 +Patch487: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.487 +Patch488: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.488 +Patch489: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.489 +Patch490: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.490 +Patch491: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.491 +Patch492: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.492 +Patch493: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.493 +Patch494: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.494 +Patch495: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.495 +Patch496: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.496 +Patch497: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.497 +Patch498: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.498 +Patch499: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.499 +Patch500: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.500 +Patch501: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.501 +Patch502: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.502 +Patch503: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.503 +Patch504: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.504 +Patch505: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.505 +Patch506: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.506 +Patch507: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.507 +Patch508: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.508 +Patch509: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.509 +Patch510: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.510 +Patch511: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.511 +Patch512: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.512 +Patch513: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.513 +Patch514: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.514 +Patch515: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.515 Patch3000: vim-7.3-syntax.patch Patch3002: vim-7.1-nowarnings.patch @@ -1143,6 +1187,50 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk %patch469 -p0 %patch470 -p0 %patch471 -p0 +%patch472 -p0 +%patch473 -p0 +%patch474 -p0 +%patch475 -p0 +%patch476 -p0 +%patch477 -p0 +%patch478 -p0 +%patch479 -p0 +%patch480 -p0 +%patch481 -p0 +%patch482 -p0 +%patch483 -p0 +%patch484 -p0 +%patch485 -p0 +%patch486 -p0 +%patch487 -p0 +%patch488 -p0 +%patch489 -p0 +%patch490 -p0 +%patch491 -p0 +%patch492 -p0 +%patch493 -p0 +%patch494 -p0 +%patch495 -p0 +%patch496 -p0 +%patch497 -p0 +%patch498 -p0 +%patch499 -p0 +%patch500 -p0 +%patch501 -p0 +%patch502 -p0 +%patch503 -p0 +%patch504 -p0 +%patch505 -p0 +%patch506 -p0 +%patch507 -p0 +%patch508 -p0 +%patch509 -p0 +%patch510 -p0 +%patch511 -p0 +%patch512 -p0 +%patch513 -p0 +%patch514 -p0 +%patch515 -p0 # install spell files @@ -1163,6 +1251,7 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk %patch3011 -p1 %build +cp -f %{SOURCE5} . cd src autoconf @@ -1416,7 +1505,7 @@ rm -rf $RPM_BUILD_ROOT %files common %defattr(-,root,root) %config(noreplace) %{_sysconfdir}/vimrc -%doc README* LICENSE +%doc README* LICENSE %doc runtime/docs %doc Changelog.rpm %dir %{_datadir}/%{name} @@ -1597,8 +1686,8 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/icons/hicolor/*/apps/* %changelog -* Wed Apr 11 2012 Daniel Mach - 2:7.3.471-1.1 -- Rebuild for ruby +* Tue May 08 2012 Karsten Hopp 7.3.515-1 +- patchlevel 515 * Fri Mar 16 2012 Karsten Hopp 7.3.471-1 - patchlevel 471 @@ -1775,213 +1864,4 @@ rm -rf $RPM_BUILD_ROOT * Wed Sep 22 2010 Karsten Hopp 7.3.011-1 - update to VIM 7.3 patchlevel 011 -* Tue Jul 27 2010 Mamoru Tasaka 7.2.446-2 -- Rebuild against python 2.7 - -* Tue Jul 13 2010 Karsten Hopp 7.2.446-1 -- patchlevel 446 - -* Thu Jul 08 2010 Karsten Hopp 7.2.445-1 -- patchlevel 445 - -* Wed Jun 23 2010 Karsten Hopp 7.2.444-2 -- rebuild with perl-5.12 - -* Sun Jun 13 2010 Karsten Hopp 7.2.444-1 -- patchlevel 444 - -* Sun Jun 13 2010 Karsten Hopp 7.2.443-1 -- patchlevel 443 - -* Sat Jun 05 2010 Karsten Hopp 7.2.442-1 -- patchlevel 442 - -* Wed Jun 02 2010 Marcela Maslanova - 2:7.2.441-2 -- Mass rebuild with perl-5.12.0 - -* Sun May 30 2010 Karsten Hopp 7.2.441-1 -- patchlevel 441 - -* Sat May 29 2010 Karsten Hopp 7.2.440-1 -- patchlevel 440 - -* Wed May 26 2010 Karsten Hopp 7.2.438-1 -- patchlevel 438 - -* Sat May 22 2010 Karsten Hopp 7.2.437-1 -- patchlevel 437 - -* Sun May 16 2010 Karsten Hopp 7.2.436-1 -- patchlevel 436 - -* Sat May 15 2010 Karsten Hopp 7.2.433-1 -- patchlevel 433 - -* Fri May 14 2010 Karsten Hopp 7.2.427-1 -- patchlevel 427 - -* Thu May 13 2010 Karsten Hopp 7.2.422-1 -- patchlevel 422 - -* Fri May 07 2010 Karsten Hopp 7.2.416-1 -- patchlevel 416 - -* Tue Apr 20 2010 Karsten Hopp 7.2.411-2 -- fix rvim manpage (#583180) - -* Wed Mar 24 2010 Karsten Hopp 7.2.411-1 -- patchlevel 411 - -* Tue Mar 23 2010 Karsten Hopp 7.2.410-1 -- patchlevel 410 - -* Sat Mar 20 2010 Karsten Hopp 7.2.403-1 -- patchlevel 403 - -* Thu Mar 18 2010 Karsten Hopp 7.2.402-1 -- patchlevel 402 - -* Wed Mar 17 2010 Karsten Hopp 7.2.399-1 -- patchlevel 399 - -* Wed Mar 10 2010 Karsten Hopp 7.2.394-1 -- patchlevel 394 - -* Wed Mar 03 2010 Karsten Hopp 7.2.385-1 -- patchlevel 385 - -* Tue Mar 02 2010 Karsten Hopp 7.2.384-1 -- patchlevel 384 - -* Tue Mar 02 2010 Karsten Hopp 7.2.381-1 -- patchlevel 381 - -* Sat Feb 27 2010 Karsten Hopp 7.2.377-1 -- patchlevel 377 - -* Wed Feb 24 2010 Karsten Hopp 7.2.376-1 -- patchlevel 376 - -* Thu Feb 18 2010 Karsten Hopp 7.2.368-1 -- patchlevel 368 - -* Thu Feb 18 2010 Karsten Hopp 7.2.367-1 -- patchlevel 367 - -* Wed Feb 17 2010 Karsten Hopp 7.2.365-1 -- patchlevel 365 - -* Fri Feb 12 2010 Karsten Hopp 7.2.359-1 -- patchlevel 359 - -* Thu Feb 11 2010 Karsten Hopp 7.2.357-1 -- patchlevel 357 - -* Thu Feb 04 2010 Karsten Hopp 7.2.356-1 -- patchlevel 356 - -* Wed Feb 03 2010 Karsten Hopp 7.2.354-1 -- patchlevel 354 - -* Fri Jan 29 2010 Karsten Hopp 7.2.351-1 -- patchlevel 351 - -* Thu Jan 28 2010 Karsten Hopp 7.2.350-1 -- patchlevel 350 - -* Mon Dec 7 2009 Stepan Kasal - 2:7.2.315-2 -- rebuild against perl 5.10.1 - -* Wed Dec 03 2009 Karsten Hopp 7.2.315-1 -- patchlevel 315 -- fix vimrc location in man page (#456992) -- correct syntax highlighting of httpd config files in /etc/httpd (#499123) -- Buildrequire ruby, ruby-devel (#503872) -- Remove check for static gravity (#510307) -- sort tags file (#517725) -- use one gvim to open multiple file selections from nautilus (#519265) -- use elinks -source instead of elinks -dump (#518791) -- add ext4 keyword to /etc/fstab syntax highlighting (#498290) - -* Mon Nov 09 2009 Karsten Hopp 7.2.284-1 -- patchlevel 284 - -* Thu Aug 20 2009 Karsten Hopp 7.2.245-3 -- change range of system ids in /etc/profile.d/vim/* (#518555) - -* Mon Aug 03 2009 Karsten Hopp 7.2.245-2 -- add fix for glibc fortify segfault (#514717, Adam Tkac) - -* Sat Aug 01 2009 Karsten Hopp 7.2.245-1 -- add 97 upstream patches to get to patchlevel 245 - -* Sun Jul 26 2009 Fedora Release Engineering - 2:7.2.148-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Fri Mar 27 2009 Karsten Hopp 7.2.148-1 -- patchlevel 148, fixes #461417 - -* Tue Mar 10 2009 Karsten Hopp 7.2.132-1 -- patchlevel 132, fixes accesses to freed memory - -* Wed Mar 04 2009 Karsten Hopp 7.2.131-1 -- patchlevel 131 - -* Tue Feb 24 2009 Karsten Hopp 7.2.127-1 -- patchlevel 127 - -* Mon Feb 23 2009 Karsten Hopp 7.2.124-1 -- patchlevel 124 - -* Mon Jan 26 2009 Karsten Hopp 7.2.088-1 -- patchlevel 88 - -* Thu Jan 08 2009 Karsten Hopp 7.2.079-2 -- patchlevel 79 - -* Thu Dec 04 2008 Jesse Keating - 7.2.060-2 -- Rebuild for new python. - -* Mon Dec 01 2008 Karsten Hopp 7.2.060-1 -- patchlevel 60 - -* Mon Nov 10 2008 Karsten Hopp 7.2.032-1 -- patchlevel 32 - -* Mon Nov 03 2008 Karsten Hopp 7.2.026-2 -- add more /usr/share/vim/vimfiles directories (#444387) - -* Mon Nov 03 2008 Karsten Hopp 7.2.026-1 -- patchlevel 26 -- own some directories in /usr/share/vim/vimfiles (#469491) - -* Tue Oct 21 2008 Karsten Hopp 7.2.025-2 -- re-enable clean - -* Mon Oct 20 2008 Karsten Hopp 7.2.025-1 -- patchlevel 25 -- add Categories tag to desktop file (#226526) -- add requirement on hicolor-icon-theme to vim-X11 (#226526) -- drop Amiga info files (#226526) -- remove non-utf8 man pages (#226526) -- drop Application from categories (#226526) - -* Tue Sep 30 2008 Karsten Hopp 7.2.022-1 -- patchlevel 22 - -* Mon Sep 08 2008 Karsten Hopp 7.2.013-1 -- patchlevel 13 - -* Mon Aug 25 2008 Karsten Hopp 7.2.006-1 -- patchlevel 6 - -* Mon Aug 18 2008 Karsten Hopp 7.2.002-1 -- patchlevel 2 -- fix specfile template (#446070) -- old specfile changelog moved to Changelog.rpm - -* Fri Aug 14 2008 Karsten Hopp 7.2.000-1 -- vim 7.2 -- drop 330 patches - # vim:nrformats-=octal