Patch 7.3.693
Problem:    Can't make 'softtabstop' follow 'shiftwidth'.
Solution:   When 'softtabstop' is negative use the value of 'shiftwidth'.
            (so8res)
Files:      src/edit.c, src/option.c, src/proto/option.pro


*** ../vim-7.3.692/src/edit.c   2012-10-04 22:38:32.000000000 +0200
--- src/edit.c  2012-10-21 00:01:53.000000000 +0200
***************
*** 8885,8891 ****
         */
        if (       mode == BACKSPACE_CHAR
                && ((p_sta && in_indent)
!                   || (curbuf->b_p_sts != 0
                        && curwin->w_cursor.col > 0
                        && (*(ml_get_cursor() - 1) == TAB
                            || (*(ml_get_cursor() - 1) == ' '
--- 8885,8891 ----
         */
        if (       mode == BACKSPACE_CHAR
                && ((p_sta && in_indent)
!                   || (get_sts_value() != 0
                        && curwin->w_cursor.col > 0
                        && (*(ml_get_cursor() - 1) == TAB
                            || (*(ml_get_cursor() - 1) == ' '
***************
*** 8901,8907 ****
            if (p_sta && in_indent)
                ts = (int)get_sw_value();
            else
!               ts = (int)curbuf->b_p_sts;
            /* Compute the virtual column where we want to be.  Since
             * 'showbreak' may get in the way, need to get the last column of
             * the previous character. */
--- 8901,8907 ----
            if (p_sta && in_indent)
                ts = (int)get_sw_value();
            else
!               ts = (int)get_sts_value();
            /* Compute the virtual column where we want to be.  Since
             * 'showbreak' may get in the way, need to get the last column of
             * the previous character. */
***************
*** 9590,9596 ****
       */
      if (!curbuf->b_p_et
            && !(p_sta && ind && curbuf->b_p_ts != get_sw_value())
!           && curbuf->b_p_sts == 0)
        return TRUE;
  
      if (stop_arrow() == FAIL)
--- 9590,9596 ----
       */
      if (!curbuf->b_p_et
            && !(p_sta && ind && curbuf->b_p_ts != get_sw_value())
!           && get_sts_value() == 0)
        return TRUE;
  
      if (stop_arrow() == FAIL)
***************
*** 9606,9613 ****
  
      if (p_sta && ind)         /* insert tab in indent, use 'shiftwidth' */
        temp = (int)get_sw_value();
!     else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */
!       temp = (int)curbuf->b_p_sts;
      else                      /* otherwise use 'tabstop' */
        temp = (int)curbuf->b_p_ts;
      temp -= get_nolist_virtcol() % temp;
--- 9606,9613 ----
  
      if (p_sta && ind)         /* insert tab in indent, use 'shiftwidth' */
        temp = (int)get_sw_value();
!     else if (curbuf->b_p_sts != 0) /* use 'softtabstop' when set */
!       temp = (int)get_sts_value();
      else                      /* otherwise use 'tabstop' */
        temp = (int)curbuf->b_p_ts;
      temp -= get_nolist_virtcol() % temp;
***************
*** 9635,9641 ****
      /*
       * When 'expandtab' not set: Replace spaces by TABs where possible.
       */
!     if (!curbuf->b_p_et && (curbuf->b_p_sts || (p_sta && ind)))
      {
        char_u          *ptr;
  #ifdef FEAT_VREPLACE
--- 9635,9641 ----
      /*
       * When 'expandtab' not set: Replace spaces by TABs where possible.
       */
!     if (!curbuf->b_p_et && (get_sts_value() || (p_sta && ind)))
      {
        char_u          *ptr;
  #ifdef FEAT_VREPLACE
*** ../vim-7.3.692/src/option.c 2012-08-08 18:01:00.000000000 +0200
--- src/option.c        2012-10-21 00:05:06.000000000 +0200
***************
*** 8509,8519 ****
            p_window = Rows - 1;
      }
  
-     if (curbuf->b_p_sts < 0)
-     {
-       errmsg = e_positive;
-       curbuf->b_p_sts = 0;
-     }
      if (curbuf->b_p_ts <= 0)
      {
        errmsg = e_positive;
--- 8509,8514 ----
***************
*** 11429,11431 ****
--- 11424,11436 ----
  {
      return curbuf->b_p_sw ? curbuf->b_p_sw : curbuf->b_p_ts;
  }
+ 
+ /*
+  * Return the effective softtabstop value for the current buffer, using the
+  * 'tabstop' value when 'softtabstop' is negative.
+  */
+     long
+ get_sts_value()
+ {
+     return curbuf->b_p_sts < 0 ? get_sw_value() : curbuf->b_p_sts;
+ }
*** ../vim-7.3.692/src/proto/option.pro 2012-08-08 18:01:00.000000000 +0200
--- src/proto/option.pro        2012-10-21 00:01:59.000000000 +0200
***************
*** 57,60 ****
--- 57,61 ----
  int file_ff_differs __ARGS((buf_T *buf, int ignore_empty));
  int check_ff_value __ARGS((char_u *p));
  long get_sw_value __ARGS((void));
+ long get_sts_value __ARGS((void));
  /* vim: set ft=c : */
*** ../vim-7.3.692/src/version.c        2012-10-18 05:18:27.000000000 +0200
--- src/version.c       2012-10-21 00:07:19.000000000 +0200
***************
*** 721,722 ****
--- 721,724 ----
  {   /* Add new patch number below this line */
+ /**/
+     693,
  /**/

-- 
FIRST VILLAGER: We have found a witch.  May we burn her?
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// 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

Raspunde prin e-mail lui