Patch 7.4.535 (after 7.4.530)
Problem:    Can't build with tiny features.
Solution:   Add #ifdefs and skip a test.
Files:      src/ex_docmd.c, src/testdir/test_argument_count.in


*** ../vim-7.4.534/src/ex_docmd.c       2014-11-27 16:38:07.648261279 +0100
--- src/ex_docmd.c      2014-11-27 18:12:30.874072643 +0100
***************
*** 1713,1718 ****
--- 1713,1765 ----
      return buf->b_fnum;
  }
  
+ #ifdef FEAT_WINDOWS
+ static int current_win_nr __ARGS((win_T *win));
+ static int current_tab_nr __ARGS((tabpage_T *tab));
+ 
+     static int
+ current_win_nr(win)
+     win_T     *win;
+ {
+     win_T     *wp;
+     int               nr = 0;
+ 
+     for (wp = firstwin; wp != NULL; wp = wp->w_next)
+     {
+       ++nr;
+       if (wp == win)
+           break;
+     }
+     return nr;
+ }
+ 
+     static int
+ current_tab_nr(tab)
+     tabpage_T   *tab;
+ {
+     tabpage_T *tp;
+     int               nr = 0;
+ 
+     for (tp = first_tabpage; tp != NULL; tp = tp->tp_next)
+     {
+       ++nr;
+       if (tp == tab)
+           break;
+     }
+     return nr;
+ }
+ 
+ # define CURRENT_WIN_NR current_win_nr(curwin)
+ # define LAST_WIN_NR current_win_nr(NULL)
+ # define CURRENT_TAB_NR current_tab_nr(curtab)
+ # define LAST_TAB_NR current_tab_nr(NULL)
+ #else
+ # define CURRENT_WIN_NR 1
+ # define LAST_WIN_NR 1
+ # define CURRENT_TAB_NR 1
+ # define LAST_TAB_NR 1
+ #endif
+ 
  
  /*
   * Execute one Ex command.
***************
*** 1765,1772 ****
  #endif
      cmdmod_T          save_cmdmod;
      int                       ni;                     /* set when Not 
Implemented */
-     win_T             *wp;
-     tabpage_T         *tp;
      char_u            *cmd;
  
      vim_memset(&ea, 0, sizeof(ea));
--- 1812,1817 ----
***************
*** 2085,2097 ****
                ea.line2 = curwin->w_cursor.lnum;
                break;
            case ADDR_WINDOWS:
!               lnum = 0;
!               for (wp = firstwin; wp != NULL; wp = wp->w_next)
!               {
!                   lnum++;
!                   if (wp == curwin)
!                       break;
!               }
                ea.line2 = lnum;
                break;
            case ADDR_ARGUMENTS:
--- 2130,2136 ----
                ea.line2 = curwin->w_cursor.lnum;
                break;
            case ADDR_WINDOWS:
!               lnum = CURRENT_WIN_NR;
                ea.line2 = lnum;
                break;
            case ADDR_ARGUMENTS:
***************
*** 2102,2114 ****
                ea.line2 = curbuf->b_fnum;
                break;
            case ADDR_TABS:
!               lnum = 0;
!               for(tp = first_tabpage; tp != NULL; tp = tp->tp_next)
!               {
!                   lnum++;
!                   if (tp == curtab)
!                       break;
!               }
                ea.line2 = lnum;
                break;
        }
--- 2141,2147 ----
                ea.line2 = curbuf->b_fnum;
                break;
            case ADDR_TABS:
!               lnum = CURRENT_TAB_NR;
                ea.line2 = lnum;
                break;
        }
***************
*** 4198,4205 ****
      pos_T     pos;
      pos_T     *fp;
      linenr_T  lnum;
-     win_T     *wp;
-     tabpage_T *tp;
  
      cmd = skipwhite(*ptr);
      lnum = MAXLNUM;
--- 4231,4236 ----
***************
*** 4215,4227 ****
                        lnum = curwin->w_cursor.lnum;
                        break;
                    case ADDR_WINDOWS:
!                       lnum = 0;
!                       for (wp = firstwin; wp != NULL; wp = wp->w_next)
!                       {
!                           lnum++;
!                           if (wp == curwin)
!                               break;
!                       }
                        break;
                    case ADDR_ARGUMENTS:
                        lnum = curwin->w_arg_idx + 1;
--- 4246,4252 ----
                        lnum = curwin->w_cursor.lnum;
                        break;
                    case ADDR_WINDOWS:
!                       lnum = CURRENT_WIN_NR;
                        break;
                    case ADDR_ARGUMENTS:
                        lnum = curwin->w_arg_idx + 1;
***************
*** 4231,4243 ****
                        lnum = curbuf->b_fnum;
                        break;
                    case ADDR_TABS:
!                       lnum = 0;
!                       for(tp = first_tabpage; tp != NULL; tp = tp->tp_next)
!                       {
!                           lnum++;
!                           if (tp == curtab)
!                               break;
!                       }
                        break;
                }
                break;
--- 4256,4262 ----
                        lnum = curbuf->b_fnum;
                        break;
                    case ADDR_TABS:
!                       lnum = CURRENT_TAB_NR;
                        break;
                }
                break;
***************
*** 4250,4258 ****
                        lnum = curbuf->b_ml.ml_line_count;
                        break;
                    case ADDR_WINDOWS:
!                       lnum = 0;
!                       for (wp = firstwin; wp != NULL; wp = wp->w_next)
!                           lnum++;
                        break;
                    case ADDR_ARGUMENTS:
                        lnum = ARGCOUNT;
--- 4269,4275 ----
                        lnum = curbuf->b_ml.ml_line_count;
                        break;
                    case ADDR_WINDOWS:
!                       lnum = LAST_WIN_NR;
                        break;
                    case ADDR_ARGUMENTS:
                        lnum = ARGCOUNT;
***************
*** 4262,4270 ****
                        lnum = lastbuf->b_fnum;
                        break;
                    case ADDR_TABS:
!                       lnum = 0;
!                       for(tp = first_tabpage; tp != NULL; tp = tp->tp_next)
!                           lnum++;
                        break;
                }
                break;
--- 4279,4285 ----
                        lnum = lastbuf->b_fnum;
                        break;
                    case ADDR_TABS:
!                       lnum = LAST_TAB_NR;
                        break;
                }
                break;
***************
*** 4419,4434 ****
                switch (addr_type)
                {
                    case ADDR_LINES:
!                       lnum = curwin->w_cursor.lnum;   /* "+1" is same as 
".+1" */
                        break;
                    case ADDR_WINDOWS:
!                       lnum = 0;
!                       for (wp = firstwin; wp != NULL; wp = wp->w_next)
!                       {
!                           lnum++;
!                           if (wp == curwin)
!                               break;
!                       }
                        break;
                    case ADDR_ARGUMENTS:
                        lnum = curwin->w_arg_idx + 1;
--- 4434,4444 ----
                switch (addr_type)
                {
                    case ADDR_LINES:
!                       /* "+1" is same as ".+1" */
!                       lnum = curwin->w_cursor.lnum;
                        break;
                    case ADDR_WINDOWS:
!                       lnum = CURRENT_WIN_NR;
                        break;
                    case ADDR_ARGUMENTS:
                        lnum = curwin->w_arg_idx + 1;
***************
*** 4438,4450 ****
                        lnum = curbuf->b_fnum;
                        break;
                    case ADDR_TABS:
!                       lnum = 0;
!                       for(tp = first_tabpage; tp != NULL; tp = tp->tp_next)
!                       {
!                           lnum++;
!                           if (tp == curtab)
!                               break;
!                       }
                        break;
                }
            }
--- 4448,4454 ----
                        lnum = curbuf->b_fnum;
                        break;
                    case ADDR_TABS:
!                       lnum = CURRENT_TAB_NR;
                        break;
                }
            }
***************
*** 4481,4489 ****
                        lnum = 0;
                        break;
                    }
!                   c = 0;
!                   for (tp = first_tabpage; tp != NULL; tp = tp->tp_next)
!                       c++;
                    if (lnum >= c)
                        lnum = c;
                    break;
--- 4485,4491 ----
                        lnum = 0;
                        break;
                    }
!                   c = LAST_TAB_NR;
                    if (lnum >= c)
                        lnum = c;
                    break;
***************
*** 4493,4501 ****
                        lnum = 0;
                        break;
                    }
!                   c = 0;
!                   for (wp = firstwin; wp != NULL; wp = wp->w_next)
!                       c++;
                    if (lnum > c)
                        lnum = c;
                    break;
--- 4495,4501 ----
                        lnum = 0;
                        break;
                    }
!                   c = LAST_WIN_NR;
                    if (lnum > c)
                        lnum = c;
                    break;
***************
*** 6805,6819 ****
  }
  
  /*
!  * ":quit": quit current window, quit Vim if closed the last window.
   */
      static void
  ex_quit(eap)
      exarg_T   *eap;
  {
      win_T     *wp;
!     buf_T     *buf;
!     int               wnr;
  
  #ifdef FEAT_CMDWIN
      if (cmdwin_type != 0)
--- 6805,6819 ----
  }
  
  /*
!  * ":quit": quit current window, quit Vim if the last window is closed.
   */
      static void
  ex_quit(eap)
      exarg_T   *eap;
  {
+ #if defined(FEAT_WINDOWS) || defined(FEAT_AUTOCMD)
      win_T     *wp;
! #endif
  
  #ifdef FEAT_CMDWIN
      if (cmdwin_type != 0)
***************
*** 6828,6855 ****
        text_locked_msg();
        return;
      }
      if (eap->addr_count > 0)
      {
!       wnr = eap->line2;
!       for (wp = firstwin; --wnr > 0; )
!       {
!           if (wp->w_next == NULL)
                break;
-           else
-               wp = wp->w_next;
-       }
-       buf = wp->w_buffer;
      }
      else
!     {
        wp = curwin;
!       buf = curbuf;
!     }
  #ifdef FEAT_AUTOCMD
      apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
      /* Refuse to quit when locked or when the buffer in the last window is
       * being closed (can only happen in autocommands). */
!     if (curbuf_locked() || (buf->b_nwindows == 1 && buf->b_closing))
        return;
  #endif
  
--- 6828,6854 ----
        text_locked_msg();
        return;
      }
+ #ifdef FEAT_WINDOWS
      if (eap->addr_count > 0)
      {
!       int     wnr = eap->line2;
! 
!       for (wp = firstwin; wp->w_next != NULL; wp = wp->w_next)
!           if (--wnr <= 0)
                break;
      }
      else
! #endif
! #if defined(FEAT_WINDOWS) || defined(FEAT_AUTOCMD)
        wp = curwin;
! #endif
! 
  #ifdef FEAT_AUTOCMD
      apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
      /* Refuse to quit when locked or when the buffer in the last window is
       * being closed (can only happen in autocommands). */
!     if (curbuf_locked() || (wp->w_buffer->b_nwindows == 1
!                                                 && wp->w_buffer->b_closing))
        return;
  #endif
  
***************
*** 7214,7222 ****
  ex_hide(eap)
      exarg_T   *eap;
  {
-     win_T     *win;
-     int               winnr = 0;
- 
      if (*eap->arg != NUL && check_nextcmd(eap->arg) == NULL)
        eap->errmsg = e_invarg;
      else
--- 7213,7218 ----
***************
*** 7231,7237 ****
  # endif
            if (eap->addr_count == 0)
                win_close(curwin, FALSE);       /* don't free buffer */
!           else {
                for (win = firstwin; win != NULL; win = win->w_next)
                {
                    winnr++;
--- 7227,7237 ----
  # endif
            if (eap->addr_count == 0)
                win_close(curwin, FALSE);       /* don't free buffer */
!           else
!           {
!               int     winnr = 0;
!               win_T   *win;
! 
                for (win = firstwin; win != NULL; win = win->w_next)
                {
                    winnr++;
*** ../vim-7.4.534/src/testdir/test_argument_count.in   2014-11-27 
16:22:42.746412995 +0100
--- src/testdir/test_argument_count.in  2014-11-27 18:21:05.568408375 +0100
***************
*** 1,6 ****
--- 1,7 ----
  Tests for :[count]argument! and :[count]argdelete     vim: set ft=vim :
  
  STARTTEST
+ :so small.vim
  :%argd
  :argadd a b c d
  :set hidden
*** ../vim-7.4.534/src/version.c        2014-11-27 17:44:05.380820867 +0100
--- src/version.c       2014-11-27 18:30:32.826167330 +0100
***************
*** 743,744 ****
--- 743,746 ----
  {   /* Add new patch number below this line */
+ /**/
+     535,
  /**/

-- 
Mushrooms always grow in damp places and so they look like umbrellas.

 /// Bram Moolenaar -- [email protected] -- 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    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui