diff --git a/7.3.1179 b/7.3.1179 new file mode 100644 index 0000000..e553011 --- /dev/null +++ b/7.3.1179 @@ -0,0 +1,122 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.1179 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.1179 +Problem: When a global mapping starts with the same characters as a + buffer-local mapping Vim waits for a character to be typed to find + out whether the global mapping is to be used. (Andy Wokula) +Solution: Use the local mapping without waiting. (Michael Henry) +Files: runtime/doc/map.txt, src/getchar.c + + +*** ../vim-7.3.1178/runtime/doc/map.txt 2013-06-08 15:24:41.000000000 +0200 +--- runtime/doc/map.txt 2013-06-12 20:50:01.000000000 +0200 +*************** +*** 107,112 **** +--- 107,114 ---- + :cmapc[lear] |mapmode-c| *:cmapc* *:cmapclear* + Remove ALL mappings for the modes where the map + command applies. {not in Vi} ++ Use the argument to remove buffer-local ++ mappings |:map-| + Warning: This also removes the default mappings. + + :map |mapmode-nvo| +*************** +*** 173,178 **** +--- 175,181 ---- + :mapclear + Local mappings are also cleared when a buffer is deleted, but not when it is + unloaded. Just like local option values. ++ Also see |map-precedence|. + + *:map-* *:map-silent* + To define a mapping which will not be echoed on the command line, add +*************** +*** 644,649 **** +--- 655,672 ---- + you type slowly, or your system is slow, reset the 'timeout' option. Then you + might want to set the 'ttimeout' option. + ++ *map-precedence* ++ Buffer-local mappings (defined using |:map-|) take precedence over ++ global mappings. When a buffer-local mapping is the same as a global mapping, ++ Vim will use the buffer-local mapping. In addition, Vim will use a complete ++ buffer-local mapping immediately, even if a longer global mapping has the ++ buffer-local mapping as a prefix. For example, given the following two ++ mappings: > ++ :map \a :echo "Local \a" ++ :map \abc :echo "Global \abc" ++ The buffer-local mapping \a will be used immediately. Vim will not wait for ++ more characters to see if the user might be typing \abc. ++ + *map-keys-fails* + There are situations where key codes might not be recognized: + - Vim can only read part of the key code. Mostly this is only the first +*** ../vim-7.3.1178/src/getchar.c 2013-05-06 05:50:22.000000000 +0200 +--- src/getchar.c 2013-06-12 20:52:49.000000000 +0200 +*************** +*** 1924,1929 **** +--- 1924,1930 ---- + mapblock_T *mp; + #ifdef FEAT_LOCALMAP + mapblock_T *mp2; ++ int expecting_global_mappings; + #endif + mapblock_T *mp_match; + int mp_match_len = 0; +*************** +*** 2105,2110 **** +--- 2106,2112 ---- + /* First try buffer-local mappings. */ + mp = curbuf->b_maphash[MAP_HASH(local_State, c1)]; + mp2 = maphash[MAP_HASH(local_State, c1)]; ++ expecting_global_mappings = (mp && mp2); + if (mp == NULL) + { + mp = mp2; +*************** +*** 2128,2133 **** +--- 2130,2145 ---- + #endif + (mp = mp->m_next)) + { ++ #ifdef FEAT_LOCALMAP ++ if (expecting_global_mappings && mp2 == NULL) ++ { ++ /* This is the first global mapping. If we've ++ * got a complete buffer-local match, use it. */ ++ if (mp_match) ++ break; ++ expecting_global_mappings = FALSE; ++ } ++ #endif + /* + * Only consider an entry if the first character + * matches and it is for the current state. +*** ../vim-7.3.1178/src/version.c 2013-06-12 20:35:46.000000000 +0200 +--- src/version.c 2013-06-12 20:56:36.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1179, + /**/ + +-- +If Apple would build a car... +... it would be powered by the sun, be reliable, five times +as fast and twice as easy to drive; but would only run on +five percent of the roads. + + /// 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 ///