Loading ...
Sorry, an error occurred while loading the content.

Patch 6.3.023

Expand Messages
  • Bram Moolenaar
    Patch 6.3.023 Problem: When the to part of a mapping starts with its from part, abbreviations for the same characters is not possible. For example,
    Message 1 of 1 , Sep 4, 2004
    • 0 Attachment
      Patch 6.3.023
      Problem: When the "to" part of a mapping starts with its "from" part,
      abbreviations for the same characters is not possible. For
      example, when <Space> is mapped to something that starts with a
      space, typing <Space> does not expand abbreviations.
      Solution: Only disable expanding abbreviations when a mapping is not
      remapped, don't disable it when the RHS of a mapping starts with
      the LHS.
      Files: src/getchar.c, src/vim.h


      *** ../vim-6.3.022/src/getchar.c Wed Jun 9 14:56:25 2004
      --- src/getchar.c Sat Sep 4 18:16:26 2004
      ***************
      *** 100,105 ****
      --- 100,106 ----
      #define RM_YES 0 /* tb_noremap: remap */
      #define RM_NONE 1 /* tb_noremap: don't remap */
      #define RM_SCRIPT 2 /* tb_noremap: remap local script mappings */
      + #define RM_ABBR 4 /* tb_noremap: don't remap, do abbrev. */

      /* typebuf.tb_buf has three parts: room in front (for result of mappings), the
      * middle for typeahead and room for new characters (which needs to be 3 *
      ***************
      *** 896,901 ****
      --- 897,904 ----
      *
      * If noremap is REMAP_YES, new string can be mapped again.
      * If noremap is REMAP_NONE, new string cannot be mapped again.
      + * If noremap is REMAP_SKIP, fist char of new string cannot be mapped again,
      + * but abbreviations are allowed.
      * If noremap is REMAP_SCRIPT, new string cannot be mapped again, except for
      * script-local mappings.
      * If noremap is > 0, that many characters of the new string cannot be mapped.
      ***************
      *** 993,998 ****
      --- 996,1003 ----
      /* If noremap == REMAP_SCRIPT: do remap script-local mappings. */
      if (noremap == REMAP_SCRIPT)
      val = RM_SCRIPT;
      + else if (noremap == REMAP_SKIP)
      + val = RM_ABBR;
      else
      val = RM_NONE;

      ***************
      *** 1004,1010 ****
      * If noremap > 0: "noremap" characters are not remappable, the rest
      * mappable
      */
      ! if (noremap < 0)
      nrm = addlen;
      else
      nrm = noremap;
      --- 1009,1017 ----
      * If noremap > 0: "noremap" characters are not remappable, the rest
      * mappable
      */
      ! if (noremap == REMAP_SKIP)
      ! nrm = 1;
      ! else if (noremap < 0)
      nrm = addlen;
      else
      nrm = noremap;
      ***************
      *** 1856,1863 ****
      && (no_zero_mapping == 0 || c1 != '0')
      && (typebuf.tb_maplen == 0
      || (p_remap
      ! && typebuf.tb_noremap[typebuf.tb_off]
      ! != RM_NONE))
      && !(p_paste && (State & (INSERT + CMDLINE)))
      && !(State == HITRETURN && (c1 == CAR || c1 == ' '))
      && State != ASKMORE
      --- 1863,1870 ----
      && (no_zero_mapping == 0 || c1 != '0')
      && (typebuf.tb_maplen == 0
      || (p_remap
      ! && (typebuf.tb_noremap[typebuf.tb_off]
      ! & (RM_NONE|RM_ABBR)) == 0))
      && !(p_paste && (State & (INSERT + CMDLINE)))
      && !(State == HITRETURN && (c1 == CAR || c1 == ' '))
      && State != ASKMORE
      ***************
      *** 1973,1979 ****
      * remapped, skip the entry.
      */
      for (n = mlen; --n >= 0; )
      ! if (*s++ == RM_NONE)
      break;
      if (n >= 0)
      continue;
      --- 1980,1986 ----
      * remapped, skip the entry.
      */
      for (n = mlen; --n >= 0; )
      ! if (*s++ & (RM_NONE|RM_ABBR))
      break;
      if (n >= 0)
      continue;
      ***************
      *** 2132,2138 ****
      + typebuf.tb_off, 1);
      }
      KeyNoremap = (typebuf.tb_noremap[
      ! typebuf.tb_off] != REMAP_YES);
      del_typebuf(1, 0);
      }
      break; /* got character, break for loop */
      --- 2139,2146 ----
      + typebuf.tb_off, 1);
      }
      KeyNoremap = (typebuf.tb_noremap[
      ! typebuf.tb_off]
      ! & (RM_NONE|RM_SCRIPT));
      del_typebuf(1, 0);
      }
      break; /* got character, break for loop */
      ***************
      *** 2233,2239 ****
      /*
      * Insert the 'to' part in the typebuf.tb_buf.
      * If 'from' field is the same as the start of the
      ! * 'to' field, don't remap the first character.
      * If m_noremap is set, don't remap the whole 'to'
      * part.
      */
      --- 2241,2248 ----
      /*
      * Insert the 'to' part in the typebuf.tb_buf.
      * If 'from' field is the same as the start of the
      ! * 'to' field, don't remap the first character (but do
      ! * allow abbreviations).
      * If m_noremap is set, don't remap the whole 'to'
      * part.
      */
      ***************
      *** 2241,2248 ****
      mp->m_noremap != REMAP_YES
      ? mp->m_noremap
      : STRNCMP(mp->m_str, mp->m_keys,
      ! (size_t)keylen)
      ! ? REMAP_YES : 1,
      0, TRUE, cmd_silent || mp->m_silent) == FAIL)
      {
      c = -1;
      --- 2250,2257 ----
      mp->m_noremap != REMAP_YES
      ? mp->m_noremap
      : STRNCMP(mp->m_str, mp->m_keys,
      ! (size_t)keylen) != 0
      ! ? REMAP_YES : REMAP_SKIP,
      0, TRUE, cmd_silent || mp->m_silent) == FAIL)
      {
      c = -1;
      *** ../vim-6.3.022/src/vim.h Wed Jun 9 14:56:26 2004
      --- src/vim.h Sat Sep 4 18:17:00 2004
      ***************
      *** 726,731 ****
      --- 726,732 ----
      #define REMAP_YES 0 /* allow remapping */
      #define REMAP_NONE -1 /* no remapping */
      #define REMAP_SCRIPT -2 /* remap script-local mappings only */
      + #define REMAP_SKIP -3 /* no remapping for first char */

      /* Values for mch_call_shell() second argument */
      #define SHELL_FILTER 1 /* filtering text */
      *** ../vim-6.3.022/src/version.c Sat Sep 4 16:28:02 2004
      --- src/version.c Sat Sep 4 18:20:40 2004
      ***************
      *** 643,644 ****
      --- 643,646 ----
      { /* Add new patch number below this line */
      + /**/
      + 23,
      /**/

      --
      TALL KNIGHT: We shall say Ni! again to you if you do not appease us.
      ARTHUR: All right! What do you want?
      TALL KNIGHT: We want ... a shrubbery!
      "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

      /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
      /// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
      \\\ Project leader for A-A-P -- http://www.A-A-P.org ///
      \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
    Your message has been successfully submitted and would be delivered to recipients shortly.