Changeset cf8ec94


Ignore:
Timestamp:
Jul 23, 2014, 12:36:01 AM (8 years ago)
Author:
Chris Staub <chris@…>
Branches:
clfs-3.0.0-sysvinit, sysvinit
Children:
28efa58
Parents:
4d9d90c (diff), 4a2299c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'sysvinit' of git.cross-lfs.org:cross-lfs into sysvinit

Files:
1 added
1 deleted
3 edited
2 moved

Legend:

Unmodified
Added
Removed
  • BOOK/introduction/common/changelog.xml

    r4d9d90c rcf8ec94  
    3838
    3939    <listitem>
     40      <para>21 July 2014</para>
     41      <itemizedlist>
     42        <listitem>
     43          <para>[William Harrington] - Update MPFR 3.1.2 fixes patch for patch
     44          level 10 update.</para>
     45        </listitem>
     46        <listitem>
     47          <para>[William Harrington] - Update VIM 7.4 Branch Update patch to
     48          patch level 373.</para>
     49        </listitem>
     50        <listitem>
     51          <para>[William Harrington] - Update Linux to 3.14.13.</para>
     52        </listitem>
     53      </itemizedlist>
     54    </listitem>
     55
     56    <listitem>
    4057      <para>18 July 2014</para>
    4158      <itemizedlist>
  • BOOK/packages.ent

    r4d9d90c rcf8ec94  
    292292
    293293<!ENTITY linux-version "3.14">
    294 <!ENTITY linux-version2 "&linux-version;.12">
     294<!ENTITY linux-version2 "&linux-version;.13">
    295295<!ENTITY linux-size "78,399 KB">
    296296<!ENTITY linux-url "&kernel;linux/kernel/v&linux-dl-version;/linux-&linux-version;.tar.xz">
  • BOOK/patches.ent

    r4d9d90c rcf8ec94  
    4646
    4747<!ENTITY linux-sublevel-patch "patch-&linux-version2;.xz">
    48 <!ENTITY linux-sublevel-patch-md5 "89a5af1f3609d0c27e63fea298dd80ed">
    49 <!ENTITY linux-sublevel-patch-size "324 KB">
     48<!ENTITY linux-sublevel-patch-md5 "132470897fc5d57f5ac7d658100cc430">
     49<!ENTITY linux-sublevel-patch-size "338 KB">
    5050
    51 <!ENTITY mpfr-fixes-patch "mpfr-&mpfr-version;-fixes-3.patch">
    52 <!ENTITY mpfr-fixes-patch-md5 "34cec761c2e53658aad1214d77b7f184">
    53 <!ENTITY mpfr-fixes-patch-size "45 KB">
     51<!ENTITY mpfr-fixes-patch "mpfr-&mpfr-version;-fixes-4.patch">
     52<!ENTITY mpfr-fixes-patch-md5 "b6c1c0dcbf7661298037eeb346a8669c">
     53<!ENTITY mpfr-fixes-patch-size "55 KB">
    5454
    5555<!ENTITY ncurses-bashfix-patch "ncurses-&ncurses-version;-bash_fix-1.patch">
     
    7575<!-- Vim branch update patch area -->
    7676
    77 <!ENTITY vim-branch_update-patch "vim-&vim-version;-branch_update-4.patch">
    78 <!ENTITY vim-branch_update-patch-md5 "242c96838a05da13b47d25fb62bf8418">
    79 <!ENTITY vim-branch_update-patch-size "2,846 KB">
     77<!ENTITY vim-branch_update-patch "vim-&vim-version;-branch_update-5.patch">
     78<!ENTITY vim-branch_update-patch-md5 "ef591881ff7aa8baac8aecc201e20f12">
     79<!ENTITY vim-branch_update-patch-size "3,139 KB">
    8080
    8181<!-- Start of multilib patches -->
  • patches/mpfr-3.1.2-fixes-4.patch

    r4d9d90c rcf8ec94  
    11Submitted By: William Harrington (kb0iic at cross-lfs dot org)
    2 Date: 2014-05-09
     2Date: 2014-07-21
    33Initial Package Version: 3.1.2
    44Origin: Upstream
    55Upstream Status: Applied
    6 Description: Contains all upstream patches of mpfr current to patch level 8.
     6Description: Contains all upstream patches of mpfr current to patch level 10.
    77
    88diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES
     
    12791279+  return "3.1.2-p8";
    12801280 }
     1281diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES
     1282--- mpfr-3.1.2-a/PATCHES        2014-06-30 15:15:25.533266905 +0000
     1283+++ mpfr-3.1.2-b/PATCHES        2014-06-30 15:15:25.617269178 +0000
     1284@@ -0,0 +1 @@
     1285+div-overflow
     1286diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION
     1287--- mpfr-3.1.2-a/VERSION        2014-06-30 15:15:25.529266797 +0000
     1288+++ mpfr-3.1.2-b/VERSION        2014-06-30 15:15:25.617269178 +0000
     1289@@ -1 +1 @@
     1290-3.1.2-p8
     1291+3.1.2-p9
     1292diff -Naurd mpfr-3.1.2-a/src/div.c mpfr-3.1.2-b/src/div.c
     1293--- mpfr-3.1.2-a/src/div.c      2013-03-13 15:37:33.000000000 +0000
     1294+++ mpfr-3.1.2-b/src/div.c      2014-06-30 15:15:25.585268312 +0000
     1295@@ -750,7 +750,9 @@
     1296  truncate_check_qh:
     1297   if (qh)
     1298     {
     1299-      qexp ++;
     1300+      if (MPFR_LIKELY (qexp < MPFR_EXP_MAX))
     1301+        qexp ++;
     1302+      /* else qexp is now incorrect, but one will still get an overflow */
     1303       q0p[q0size - 1] = MPFR_LIMB_HIGHBIT;
     1304     }
     1305   goto truncate;
     1306@@ -765,7 +767,9 @@
     1307   inex = 1; /* always here */
     1308   if (mpn_add_1 (q0p, q0p, q0size, MPFR_LIMB_ONE << sh))
     1309     {
     1310-      qexp ++;
     1311+      if (MPFR_LIKELY (qexp < MPFR_EXP_MAX))
     1312+        qexp ++;
     1313+      /* else qexp is now incorrect, but one will still get an overflow */
     1314       q0p[q0size - 1] = MPFR_LIMB_HIGHBIT;
     1315     }
     1316 
     1317diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h
     1318--- mpfr-3.1.2-a/src/mpfr.h     2014-06-30 15:15:25.533266905 +0000
     1319+++ mpfr-3.1.2-b/src/mpfr.h     2014-06-30 15:15:25.613269070 +0000
     1320@@ -27,7 +27,7 @@
     1321 #define MPFR_VERSION_MAJOR 3
     1322 #define MPFR_VERSION_MINOR 1
     1323 #define MPFR_VERSION_PATCHLEVEL 2
     1324-#define MPFR_VERSION_STRING "3.1.2-p8"
     1325+#define MPFR_VERSION_STRING "3.1.2-p9"
     1326 
     1327 /* Macros dealing with MPFR VERSION */
     1328 #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
     1329diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c
     1330--- mpfr-3.1.2-a/src/version.c  2014-06-30 15:15:25.533266905 +0000
     1331+++ mpfr-3.1.2-b/src/version.c  2014-06-30 15:15:25.613269070 +0000
     1332@@ -25,5 +25,5 @@
     1333 const char *
     1334 mpfr_get_version (void)
     1335 {
     1336-  return "3.1.2-p8";
     1337+  return "3.1.2-p9";
     1338 }
     1339diff -Naurd mpfr-3.1.2-a/tests/tdiv.c mpfr-3.1.2-b/tests/tdiv.c
     1340--- mpfr-3.1.2-a/tests/tdiv.c   2013-03-13 15:37:44.000000000 +0000
     1341+++ mpfr-3.1.2-b/tests/tdiv.c   2014-06-30 15:15:25.585268312 +0000
     1342@@ -1104,6 +1104,96 @@
     1343 #define RAND_FUNCTION(x) mpfr_random2(x, MPFR_LIMB_SIZE (x), randlimb () % 100, RANDS)
     1344 #include "tgeneric.c"
     1345 
     1346+static void
     1347+test_extreme (void)
     1348+{
     1349+  mpfr_t x, y, z;
     1350+  mpfr_exp_t emin, emax;
     1351+  mpfr_prec_t p[4] = { 8, 32, 64, 256 };
     1352+  int xi, yi, zi, j, r;
     1353+  unsigned int flags, ex_flags;
     1354+
     1355+  emin = mpfr_get_emin ();
     1356+  emax = mpfr_get_emax ();
     1357+
     1358+  mpfr_set_emin (MPFR_EMIN_MIN);
     1359+  mpfr_set_emax (MPFR_EMAX_MAX);
     1360+
     1361+  for (xi = 0; xi < 4; xi++)
     1362+    {
     1363+      mpfr_init2 (x, p[xi]);
     1364+      mpfr_setmax (x, MPFR_EMAX_MAX);
     1365+      MPFR_ASSERTN (mpfr_check (x));
     1366+      for (yi = 0; yi < 4; yi++)
     1367+        {
     1368+          mpfr_init2 (y, p[yi]);
     1369+          mpfr_setmin (y, MPFR_EMIN_MIN);
     1370+          for (j = 0; j < 2; j++)
     1371+            {
     1372+              MPFR_ASSERTN (mpfr_check (y));
     1373+              for (zi = 0; zi < 4; zi++)
     1374+                {
     1375+                  mpfr_init2 (z, p[zi]);
     1376+                  RND_LOOP (r)
     1377+                    {
     1378+                      mpfr_clear_flags ();
     1379+                      mpfr_div (z, x, y, (mpfr_rnd_t) r);
     1380+                      flags = __gmpfr_flags;
     1381+                      MPFR_ASSERTN (mpfr_check (z));
     1382+                      ex_flags = MPFR_FLAGS_OVERFLOW | MPFR_FLAGS_INEXACT;
     1383+                      if (flags != ex_flags)
     1384+                        {
     1385+                          printf ("Bad flags in test_extreme on z = a/b"
     1386+                                  " with %s and\n",
     1387+                                  mpfr_print_rnd_mode ((mpfr_rnd_t) r));
     1388+                          printf ("a = ");
     1389+                          mpfr_dump (x);
     1390+                          printf ("b = ");
     1391+                          mpfr_dump (y);
     1392+                          printf ("Expected flags:");
     1393+                          flags_out (ex_flags);
     1394+                          printf ("Got flags:     ");
     1395+                          flags_out (flags);
     1396+                          printf ("z = ");
     1397+                          mpfr_dump (z);
     1398+                          exit (1);
     1399+                        }
     1400+                      mpfr_clear_flags ();
     1401+                      mpfr_div (z, y, x, (mpfr_rnd_t) r);
     1402+                      flags = __gmpfr_flags;
     1403+                      MPFR_ASSERTN (mpfr_check (z));
     1404+                      ex_flags = MPFR_FLAGS_UNDERFLOW | MPFR_FLAGS_INEXACT;
     1405+                      if (flags != ex_flags)
     1406+                        {
     1407+                          printf ("Bad flags in test_extreme on z = a/b"
     1408+                                  " with %s and\n",
     1409+                                  mpfr_print_rnd_mode ((mpfr_rnd_t) r));
     1410+                          printf ("a = ");
     1411+                          mpfr_dump (y);
     1412+                          printf ("b = ");
     1413+                          mpfr_dump (x);
     1414+                          printf ("Expected flags:");
     1415+                          flags_out (ex_flags);
     1416+                          printf ("Got flags:     ");
     1417+                          flags_out (flags);
     1418+                          printf ("z = ");
     1419+                          mpfr_dump (z);
     1420+                          exit (1);
     1421+                        }
     1422+                    }
     1423+                  mpfr_clear (z);
     1424+                }  /* zi */
     1425+              mpfr_nextabove (y);
     1426+            }  /* j */
     1427+          mpfr_clear (y);
     1428+        }  /* yi */
     1429+      mpfr_clear (x);
     1430+    }  /* xi */
     1431+
     1432+  set_emin (emin);
     1433+  set_emax (emax);
     1434+}
     1435+
     1436 int
     1437 main (int argc, char *argv[])
     1438 {
     1439@@ -1130,6 +1220,7 @@
     1440   test_20070603 ();
     1441   test_20070628 ();
     1442   test_generic (2, 800, 50);
     1443+  test_extreme ();
     1444 
     1445   tests_end_mpfr ();
     1446   return 0;
     1447diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES
     1448--- mpfr-3.1.2-a/PATCHES        2014-06-30 15:17:53.337268149 +0000
     1449+++ mpfr-3.1.2-b/PATCHES        2014-06-30 15:17:53.417270314 +0000
     1450@@ -0,0 +1 @@
     1451+vasprintf
     1452diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION
     1453--- mpfr-3.1.2-a/VERSION        2014-06-30 15:17:53.337268149 +0000
     1454+++ mpfr-3.1.2-b/VERSION        2014-06-30 15:17:53.413270206 +0000
     1455@@ -1 +1 @@
     1456-3.1.2-p9
     1457+3.1.2-p10
     1458diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h
     1459--- mpfr-3.1.2-a/src/mpfr.h     2014-06-30 15:17:53.337268149 +0000
     1460+++ mpfr-3.1.2-b/src/mpfr.h     2014-06-30 15:17:53.413270206 +0000
     1461@@ -27,7 +27,7 @@
     1462 #define MPFR_VERSION_MAJOR 3
     1463 #define MPFR_VERSION_MINOR 1
     1464 #define MPFR_VERSION_PATCHLEVEL 2
     1465-#define MPFR_VERSION_STRING "3.1.2-p9"
     1466+#define MPFR_VERSION_STRING "3.1.2-p10"
     1467 
     1468 /* Macros dealing with MPFR VERSION */
     1469 #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
     1470diff -Naurd mpfr-3.1.2-a/src/vasprintf.c mpfr-3.1.2-b/src/vasprintf.c
     1471--- mpfr-3.1.2-a/src/vasprintf.c        2013-11-15 00:51:49.267334408 +0000
     1472+++ mpfr-3.1.2-b/src/vasprintf.c        2014-06-30 15:17:53.377269231 +0000
     1473@@ -884,14 +884,18 @@
     1474            first digit, we want the exponent for radix two and the decimal
     1475            point AFTER the first digit. */
     1476         {
     1477-          MPFR_ASSERTN (exp > MPFR_EMIN_MIN /4); /* possible overflow */
     1478+          /* An integer overflow is normally not possible since MPFR_EXP_MIN
     1479+             is twice as large as MPFR_EMIN_MIN. */
     1480+          MPFR_ASSERTN (exp > (MPFR_EXP_MIN + 3) / 4);
     1481           exp = (exp - 1) * 4;
     1482         }
     1483       else
     1484         /* EXP is the exponent for decimal point BEFORE the first digit, we
     1485            want the exponent for decimal point AFTER the first digit. */
     1486         {
     1487-          MPFR_ASSERTN (exp > MPFR_EMIN_MIN); /* possible overflow */
     1488+          /* An integer overflow is normally not possible since MPFR_EXP_MIN
     1489+             is twice as large as MPFR_EMIN_MIN. */
     1490+          MPFR_ASSERTN (exp > MPFR_EXP_MIN);
     1491           --exp;
     1492         }
     1493     }
     1494diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c
     1495--- mpfr-3.1.2-a/src/version.c  2014-06-30 15:17:53.337268149 +0000
     1496+++ mpfr-3.1.2-b/src/version.c  2014-06-30 15:17:53.413270206 +0000
     1497@@ -25,5 +25,5 @@
     1498 const char *
     1499 mpfr_get_version (void)
     1500 {
     1501-  return "3.1.2-p9";
     1502+  return "3.1.2-p10";
     1503 }
     1504diff -Naurd mpfr-3.1.2-a/tests/tsprintf.c mpfr-3.1.2-b/tests/tsprintf.c
     1505--- mpfr-3.1.2-a/tests/tsprintf.c       2013-11-15 00:51:49.267334408 +0000
     1506+++ mpfr-3.1.2-b/tests/tsprintf.c       2014-06-30 15:17:53.377269231 +0000
     1507@@ -1184,6 +1184,69 @@
     1508   check_emax_aux (MPFR_EMAX_MAX);
     1509 }
     1510 
     1511+static void
     1512+check_emin_aux (mpfr_exp_t e)
     1513+{
     1514+  mpfr_t x;
     1515+  char *s1, s2[256];
     1516+  int i;
     1517+  mpfr_exp_t emin;
     1518+  mpz_t ee;
     1519+
     1520+  MPFR_ASSERTN (e >= LONG_MIN);
     1521+  emin = mpfr_get_emin ();
     1522+  set_emin (e);
     1523+
     1524+  mpfr_init2 (x, 16);
     1525+  mpz_init (ee);
     1526+
     1527+  mpfr_setmin (x, e);
     1528+  mpz_set_si (ee, e);
     1529+  mpz_sub_ui (ee, ee, 1);
     1530+
     1531+  i = mpfr_asprintf (&s1, "%Ra", x);
     1532+  MPFR_ASSERTN (i > 0);
     1533+
     1534+  gmp_snprintf (s2, 256, "0x1p%Zd", ee);
     1535+
     1536+  if (strcmp (s1, s2) != 0)
     1537+    {
     1538+      printf ("Error in check_emin_aux for emin = %ld\n", (long) e);
     1539+      printf ("Expected %s\n", s2);
     1540+      printf ("Got      %s\n", s1);
     1541+      exit (1);
     1542+    }
     1543+
     1544+  mpfr_free_str (s1);
     1545+
     1546+  i = mpfr_asprintf (&s1, "%Rb", x);
     1547+  MPFR_ASSERTN (i > 0);
     1548+
     1549+  gmp_snprintf (s2, 256, "1p%Zd", ee);
     1550+
     1551+  if (strcmp (s1, s2) != 0)
     1552+    {
     1553+      printf ("Error in check_emin_aux for emin = %ld\n", (long) e);
     1554+      printf ("Expected %s\n", s2);
     1555+      printf ("Got      %s\n", s1);
     1556+      exit (1);
     1557+    }
     1558+
     1559+  mpfr_free_str (s1);
     1560+
     1561+  mpfr_clear (x);
     1562+  mpz_clear (ee);
     1563+  set_emin (emin);
     1564+}
     1565+
     1566+static void
     1567+check_emin (void)
     1568+{
     1569+  check_emin_aux (-15);
     1570+  check_emin_aux (mpfr_get_emin ());
     1571+  check_emin_aux (MPFR_EMIN_MIN);
     1572+}
     1573+
     1574 int
     1575 main (int argc, char **argv)
     1576 {
     1577@@ -1203,6 +1266,7 @@
     1578   decimal ();
     1579   mixed ();
     1580   check_emax ();
     1581+  check_emin ();
     1582 
     1583 #if defined(HAVE_LOCALE_H) && defined(HAVE_SETLOCALE)
     1584   locale_da_DK ();
  • patches/vim-7.4-branch_update-5.patch

    r4d9d90c rcf8ec94  
    11Submitted By: William Harrington (kb0iic at cross-lfs dot org)
    2 Date: 2014-05-31
     2Date: 2014-07-21
    33Initial Package Version: 7.4
    44Origin: Upstream
    55Upstream Status: Applied
    6 Description: Contains all upstream patches up to 7.4.316.
     6Description: Contains all upstream patches up to 7.4.373.
    77
    88diff -Naur vim74.orig/.hg_archival.txt vim74/.hg_archival.txt
    99--- vim74.orig/.hg_archival.txt 1970-01-01 00:00:00.000000000 +0000
    10 +++ vim74/.hg_archival.txt      2014-06-01 00:42:48.067546692 +0000
     10+++ vim74/.hg_archival.txt      2014-07-21 23:33:10.410210199 +0000
    1111@@ -0,0 +1,5 @@
    1212+repo: 770908d1cb47c04be0aef5c173b17ab8be6b6476
    13 +node: bed71c37618c11240596390f277d4f5e60d35ebc
     13+node: 32a77cc160d922036ee28363f1a183f8e37f77ed
    1414+branch: default
    15 +latesttag: v7-4-316
    16 +latesttagdistance: 1
     15+latesttag: v7-4-373
     16+latesttagdistance: 2
    1717diff -Naur vim74.orig/.hgignore vim74/.hgignore
    1818--- vim74.orig/.hgignore        1970-01-01 00:00:00.000000000 +0000
    19 +++ vim74/.hgignore     2014-06-01 00:42:48.107546590 +0000
    20 @@ -0,0 +1,74 @@
     19+++ vim74/.hgignore     2014-07-21 23:33:10.436876796 +0000
     20@@ -0,0 +1,75 @@
    2121+syntax: glob
    2222+
     
    8585+
    8686+# Generated by "make test"
    87 +src/po/*.ck 
    88 +src/testdir/mbyte.vim 
    89 +src/testdir/mzscheme.vim 
    90 +src/testdir/lua.vim 
    91 +src/testdir/small.vim 
    92 +src/testdir/tiny.vim 
     87+src/po/*.ck
     88+src/testdir/mbyte.vim
     89+src/testdir/mzscheme.vim
     90+src/testdir/lua.vim
     91+src/testdir/small.vim
     92+src/testdir/tiny.vim
    9393+src/testdir/test*.out
    9494+src/testdir/test.log
     95+src/memfile_test
    9596diff -Naur vim74.orig/.hgtags vim74/.hgtags
    9697--- vim74.orig/.hgtags  1970-01-01 00:00:00.000000000 +0000
    97 +++ vim74/.hgtags       2014-06-01 00:42:48.127546539 +0000
    98 @@ -0,0 +1,3041 @@
     98+++ vim74/.hgtags       2014-07-21 23:33:10.453543419 +0000
     99@@ -0,0 +1,3098 @@
    99100+004eb98eb3c30714cb6a24ec3e810275080a8413 v7-1-117
    100101+006e9c8a6a8ad354a5cb6adcce6ebfceddeb20ee v7-0079
     
    31383139+646616b6ff4defcc7bef0b198b540f6d965a8126 v7-4-315
    31393140+0fc665889e8f0af532cb4e3be2f0ff0421bf2fbc v7-4-316
     3141+8ffcb546d782121dfc9d88c7edc6f62421efce89 v7-4-317
     3142+5c47dacf397c1c65d2dfc237b3ff395c66ec3d4d v7-4-318
     3143+a076237d1c3849535681e82946a9041ed5525d7f v7-4-319
     3144+f7bc601823e5c81e2ca412506a42eff9fd790ace v7-4-320
     3145+c052937aae8ca5082f308b8ff0712c7eccdd30c8 v7-4-321
     3146+fd96c55d683d76ece4ba01490d9796c13c988cdc v7-4-322
     3147+238f5027830cad22e17a970483af9b160869cdf3 v7-4-323
     3148+c476e0ac8b406693c3877baffa0e97ff25e59b06 v7-4-324
     3149+1f288d2475488c3f44c7248e99019e2612580716 v7-4-325
     3150+1dbcb23ae7a8b68ddbc28b4feb794c4c1db12395 v7-4-326
     3151+99d8f2d72dcd4b850de81998cc9b1120c8165762 v7-4-327
     3152+01d9ffdd6e6ffb39faf946e13ec63bd7dc31e162 v7-4-328
     3153+018df65085f8990c1407442f8c783d4cee72a479 v7-4-329
     3154+f9fa2e506b9f07549cd91074835c5c553db7b3a7 v7-4-330
     3155+6d984caa0409fd284722c44cb09a0a2b5360bd4f v7-4-331
     3156+8fed02d53b45848b0fff60de13d06858963cfb17 v7-4-332
     3157+8ae50e3ef8bf733c0869c01b5132d02feffc0955 v7-4-333
     3158+03d260a8ea0c0c67f424c387dbe2af5754e5e589 v7-4-334
     3159+8ad2ecd116021ad5c945426e8bb80d741392b780 v7-4-335
     3160+a42ba1e5099290a86cac1a9ac490c49e82e4c2cf v7-4-336
     3161+0206ac84ff5fdce6d893c470e0909d2aed547a24 v7-4-337
     3162+ef83b423ebf7de11c1063c795dd2186a9b59b90f v7-4-338
     3163+fd7110d0c3bf4fea3cfa3d16da6c2a945d327c27 v7-4-339
     3164+03f95f5e311b84653df70fb3c08a9d92cf21b8f0 v7-4-340
     3165+adc4a84f72eb44dae657af713922a6e2c1f64ae3 v7-4-341
     3166+8dcc6f142460b2d5eee119a174d441d46d95cd99 v7-4-342
     3167+539ce56d8f35fe2deb5c4f57335e1adf97ae4e74 v7-4-343
     3168+ce284c205558d103326a4c3f22f181774690b3eb v7-4-344
     3169+ea2c5dfee1b04d216ebf992c5f46ecbdfee2854a v7-4-345
     3170+3248c6e40aee01a7254d111dd846c6ec7889a804 v7-4-346
     3171+a162d41f10e1c3c8673d86d8b0c58fdaf1bddeaf v7-4-347
     3172+0b7586868f6da0372af7510650240e22dc1e6e64 v7-4-348
     3173+79950dae1d7de8fc2cb0f8ddd087d403e2b9ce8e v7-4-349
     3174+ad005d0114c1d2d83490787ef7ea2a3c6e5e7b9e v7-4-350
     3175+f9ec944e4474c649faad642797ffd798a7102549 v7-4-351
     3176+b4962cf3a1c06a1f60f1d750df8fcf7035b00b99 v7-4-352
     3177+d42a1d3b74d40f580359dbd139d2d0dfa7235252 v7-4-353
     3178+5deaa4e9812d4b4ae59d8a3e70bf19983e07e6da v7-4-354
     3179+9a4efda75b5ef0f496d6a29c0a4dfcc7c03412f9 v7-4-355
     3180+34465a179ce21c827cab4c65a75e6b490600a96f v7-4-356
     3181+4eedfc4911a1db9c4874689f6c652be0094838f2 v7-4-357
     3182+771b97ba3b4768c77f2070423a93152d6977f012 v7-4-358
     3183+182c7b987283a567121e9c43d831779d1c88645f v7-4-359
     3184+761687c6808f4c9c80d33a919a6bb506dfe9f674 v7-4-360
     3185+a97e5b9dbc26800830e46cf3c1aa6efbfe258097 v7-4-361
     3186+7fa2bed947fde3514a700c96861a537d816d6fd4 v7-4-362
     3187+ff3816167b73fde35017d364b1a820014cd42e76 v7-4-363
     3188+7b324826757595b21b0410a7b6f00227d73c655f v7-4-364
     3189+4625fa27ba6f5b06294675b7f0d1bf8ae8f249fb v7-4-365
     3190+ad775b58706587b6acfb0bb2c732e184efe4f778 v7-4-366
     3191+bdbe2037066df6a463346be1768a56d98001fb36 v7-4-367
     3192+021e16be3c026c9f883b2aba0b48469ecbae5d88 v7-4-368
     3193+72ee0db83788638c36bbcb076cabc2ba6c8cd4e7 v7-4-369
     3194+50575818a97fa4777e52272f5ffc769179d76a8d v7-4-370
     3195+d44f298c43c74555f4ea21b710d377133f948d61 v7-4-371
     3196+a122efb555c4f08405051369310451a627ed524b v7-4-372
     3197+353330c512a9488cf5c1a3f8b8a57fa8cdd83a7a v7-4-373
    31403198diff -Naur vim74.orig/Filelist vim74/Filelist
    31413199--- vim74.orig/Filelist 2013-07-13 13:23:38.000000000 +0000
    3142 +++ vim74/Filelist      2014-06-01 00:42:48.197546361 +0000
     3200+++ vim74/Filelist      2014-07-21 23:33:10.503543288 +0000
    31433201@@ -3,6 +3,7 @@
    31443202 
     
    31673225diff -Naur vim74.orig/runtime/autoload/clojurecomplete.vim vim74/runtime/autoload/clojurecomplete.vim
    31683226--- vim74.orig/runtime/autoload/clojurecomplete.vim     2013-02-06 14:35:23.000000000 +0000
    3169 +++ vim74/runtime/autoload/clojurecomplete.vim  2014-06-01 00:42:49.274210286 +0000
     3227+++ vim74/runtime/autoload/clojurecomplete.vim  2014-07-21 23:33:11.583540470 +0000
    31703228@@ -1,20 +1,22 @@
    31713229 " Vim completion script
     
    32083266diff -Naur vim74.orig/runtime/autoload/getscript.vim vim74/runtime/autoload/getscript.vim
    32093267--- vim74.orig/runtime/autoload/getscript.vim   2013-04-17 13:40:44.000000000 +0000
    3210 +++ vim74/runtime/autoload/getscript.vim        2014-06-01 00:42:49.320876834 +0000
     3268+++ vim74/runtime/autoload/getscript.vim        2014-07-21 23:33:11.626873690 +0000
    32113269@@ -1,8 +1,8 @@
    32123270 " ---------------------------------------------------------------------
     
    32403298 
    32413299   " this loop updates the GetLatestVimScripts.dat file
     3300diff -Naur vim74.orig/runtime/autoload/htmlcomplete.vim vim74/runtime/autoload/htmlcomplete.vim
     3301--- vim74.orig/runtime/autoload/htmlcomplete.vim        2011-04-28 11:13:20.000000000 +0000
     3302+++ vim74/runtime/autoload/htmlcomplete.vim     2014-07-21 23:33:11.673540235 +0000
     3303@@ -1,7 +1,49 @@
     3304 " Vim completion script
     3305 " Language:    HTML and XHTML
     3306 " Maintainer:  Mikolaj Machowski ( mikmach AT wp DOT pl )
     3307-" Last Change: 2011 Apr 28
     3308+" Last Change: 2014 Jun 20
     3309+
     3310+" Distinguish between HTML versions.
     3311+" To use with other HTML versions add another "elseif" condition to match
     3312+" proper DOCTYPE.
     3313+function! htmlcomplete#DetectOmniFlavor()
     3314+  if &filetype == 'xhtml'
     3315+    let b:html_omni_flavor = 'xhtml10s'
     3316+  else
     3317+    let b:html_omni_flavor = 'html401t'
     3318+  endif
     3319+  let i = 1
     3320+  let line = ""
     3321+  while i < 10 && i < line("$")
     3322+    let line = getline(i)
     3323+    if line =~ '<!DOCTYPE.*\<DTD '
     3324+      break
     3325+    endif
     3326+    let i += 1
     3327+  endwhile
     3328+  if line =~ '<!DOCTYPE.*\<DTD '  " doctype line found above
     3329+    if line =~ ' HTML 3\.2'
     3330+      let b:html_omni_flavor = 'html32'
     3331+    elseif line =~ ' XHTML 1\.1'
     3332+      let b:html_omni_flavor = 'xhtml11'
     3333+    else    " two-step detection with strict/frameset/transitional
     3334+      if line =~ ' XHTML 1\.0'
     3335+       let b:html_omni_flavor = 'xhtml10'
     3336+      elseif line =~ ' HTML 4\.01'
     3337+       let b:html_omni_flavor = 'html401'
     3338+      elseif line =~ ' HTML 4.0\>'
     3339+       let b:html_omni_flavor = 'html40'
     3340+      endif
     3341+      if line =~ '\<Transitional\>'
     3342+       let b:html_omni_flavor .= 't'
     3343+      elseif line =~ '\<Frameset\>'
     3344+       let b:html_omni_flavor .= 'f'
     3345+      else
     3346+       let b:html_omni_flavor .= 's'
     3347+      endif
     3348+    endif
     3349+  endif
     3350+endfunction
     3351 
     3352 function! htmlcomplete#CompleteTags(findstart, base)
     3353   if a:findstart
    32423354diff -Naur vim74.orig/runtime/autoload/netrw.vim vim74/runtime/autoload/netrw.vim
    32433355--- vim74.orig/runtime/autoload/netrw.vim       2013-05-19 03:28:33.000000000 +0000
    3244 +++ vim74/runtime/autoload/netrw.vim    2014-06-01 00:42:49.417543255 +0000
     3356+++ vim74/runtime/autoload/netrw.vim    2014-07-21 23:33:11.806873220 +0000
    32453357@@ -1,10 +1,10 @@
    32463358 " netrw.vim: Handles file transfer and remote directory listing across
     
    1075410866diff -Naur vim74.orig/runtime/autoload/netrwSettings.vim vim74/runtime/autoload/netrwSettings.vim
    1075510867--- vim74.orig/runtime/autoload/netrwSettings.vim       2013-05-03 19:53:43.000000000 +0000
    10756 +++ vim74/runtime/autoload/netrwSettings.vim    2014-06-01 00:42:49.474209777 +0000
     10868+++ vim74/runtime/autoload/netrwSettings.vim    2014-07-21 23:33:11.856873090 +0000
    1075710869@@ -1,7 +1,7 @@
    1075810870 " netrwSettings.vim: makes netrw settings simpler
     
    1078810900diff -Naur vim74.orig/runtime/autoload/netrw_gitignore.vim vim74/runtime/autoload/netrw_gitignore.vim
    1078910901--- vim74.orig/runtime/autoload/netrw_gitignore.vim     1970-01-01 00:00:00.000000000 +0000
    10790 +++ vim74/runtime/autoload/netrw_gitignore.vim  2014-06-01 00:42:49.487543077 +0000
     10902+++ vim74/runtime/autoload/netrw_gitignore.vim  2014-07-21 23:33:12.126872385 +0000
    1079110903@@ -0,0 +1,71 @@
    1079210904+" netrw_gitignore#Hide: gitignore-based hiding
     
    1086310975diff -Naur vim74.orig/runtime/autoload/phpcomplete.vim vim74/runtime/autoload/phpcomplete.vim
    1086410976--- vim74.orig/runtime/autoload/phpcomplete.vim 2011-12-08 15:38:25.000000000 +0000
    10865 +++ vim74/runtime/autoload/phpcomplete.vim      2014-06-01 00:42:49.544209599 +0000
     10977+++ vim74/runtime/autoload/phpcomplete.vim      2014-07-21 23:33:12.173538930 +0000
    1086610978@@ -1,27 +1,101 @@
    1086710979 " Vim completion script
     
    1087210984+" Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
    1087310985+" URL: https://github.com/shawncplus/phpcomplete.vim
    10874 +" Last Change:  2014 May 08
     10986+" Last Change:  2014 May 30
    1087510987 "
    1087610988-"   TODO:
     
    1098011092 
    1098111093                if phpbegin == [0,0] && phpend == [0,0]
    10982 @@ -37,5116 +111,2449 @@
     11094@@ -35,5118 +109,2464 @@
     11095                        " locate the start of the word
     11096                        let line = getline('.')
    1098311097                        let start = col('.') - 1
    10984                         let curline = line('.')
     11098-                       let curline = line('.')
    1098511099                        let compl_begin = col('.') - 2
    1098611100-                       while start >= 0 && line[start - 1] =~ '[a-zA-Z_0-9\x7f-\xff$]'
     
    1099111105-                       return start
    1099211106+                       let b:phpbegin = phpbegin
    10993 +                       let b:compl_context = phpcomplete#GetCurrentInstruction(line('.'), col('.') - 2, phpbegin)
     11107+                       let b:compl_context = phpcomplete#GetCurrentInstruction(line('.'), max([0, col('.') - 2]), phpbegin)
    1099411108 
    1099511109+                       return start
     
    1119411308+               let builtin_classnames = filter(keys(copy(g:php_builtin_classnames)), 'v:val =~? "^'.classname_match_pattern.'"')
    1119511309+               for classname in builtin_classnames
    11196 +                       call add(res, {'word': classname, 'kind': 'c'})
     11310+                       call add(res, {'word': g:php_builtin_classes[tolower(classname)].name, 'kind': 'c'})
    1119711311                endfor
    1119811312+               let builtin_interfacenames = filter(keys(copy(g:php_builtin_interfacenames)), 'v:val =~? "^'.classname_match_pattern.'"')
    1119911313+               for interfacename in builtin_interfacenames
    11200 +                       call add(res, {'word': interfacename, 'kind': 'i'})
     11314+                       call add(res, {'word': g:php_builtin_interfaces[tolower(interfacename)].name, 'kind': 'i'})
    1120111315+               endfor
    1120211316+       endif
     
    1150611620+               for [classname, info] in items(g:php_builtin_classnames)
    1150711621+                       if classname =~? '^'.base
    11508 +                               let builtin_classnames[leading_slash.classname] = info
     11622+                               let builtin_classnames[leading_slash.g:php_builtin_classes[tolower(classname)].name] = info
    1150911623                        endif
    1151011624                endfor
     
    1663816752-                       \ 'include(': 'string filename | resource',
    1663916753-                       \ 'include_once(': 'string filename | resource',
     16754-                       \ 'require(': 'string filename | resource',
    1664016755+       for line in file
    1664116756+               let c_name = matchstr(line, '\c\(class\|interface\)\s*\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*')
     
    1669816813+                                       let menu = g:php_builtin_classes[tolower(classname)]['methods']['__construct']['signature']
    1669916814+                               endif
    16700 +                               call add(res, {'word': leading_slash.classname, 'kind': 'c', 'menu': menu})
     16815+                               call add(res, {'word': leading_slash.g:php_builtin_classes[tolower(classname)].name, 'kind': 'c', 'menu': menu})
    1670116816+                       endfor
    1670216817+               endif
     
    1679216907+               let f_args = matchstr(i,
    1679316908+                                       \ 'function\s*&\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*(\zs.\{-}\ze)\_s*\({\|\_$\)')
    16794 +               if f_name != ''
     16909+               if f_name != '' && stridx(f_name, '__') != 0
    1679516910+                       let c_functions[f_name.'('] = f_args
    1679616911+                       if g:phpcomplete_parse_docblock_comments
    16797 +                               let c_doc[f_name.'('] = phpcomplete#GetDocBlock(a:sccontent, 'function\s*\<'.f_name.'\>')
     16912+                               let c_doc[f_name.'('] = phpcomplete#GetDocBlock(a:sccontent, 'function\s*&\?\<'.f_name.'\>')
    1679816913+                       endif
    1679916914+               endif
     
    1691517030+               " methods
    1691617031+               for [method_name, method_info] in items(class_info.methods)
    16917 +                       if a:base == '' || method_name =~? '^'.a:base
     17032+                       if stridx(method_name, '__') != 0 && (a:base == '' || method_name =~? '^'.a:base)
    1691817033+                               call add(res, {'word':method_name.'(', 'kind': 'f', 'menu': method_info.signature, 'info': method_info.signature })
    1691917034+                       endif
     
    1718317298+                       return unknown_result
    1718417299+
    17185 +               elseif filereadable(classlocation)
     17300+               elseif classlocation != '' && filereadable(classlocation)
    1718617301+                       " Read the next method from the stack and extract only the name
    1718717302+
     
    1719117306+                       " try to find the method's return type in docblock comment
    1719217307+                       for classstructure in classcontents
    17193 +                               let doclock_target_pattern = 'function\s\+'.method.'\|\(public\|private\|protected\|var\).\+\$'.method
     17308+                               let doclock_target_pattern = 'function\s\+&\?'.method.'\|\(public\|private\|protected\|var\).\+\$'.method
    1719417309+                               let doc_str = phpcomplete#GetDocBlock(split(classstructure.content, '\n'), doclock_target_pattern)
    1719517310+                               if doc_str != ''
     
    1722317338+                                                       let fullnamespace = class_candidate_namespace
    1722417339+                                               endif
    17225 +                                               let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(returnclass, fullnamespace, a:imports)
     17340+                                               " make @return self, static, $this the same way
     17341+                                               " (not exactly what php means by these)
     17342+                                               if returnclass == 'self' || returnclass == 'static' || returnclass == '$this'
     17343+                                                       let classname_candidate = a:classname_candidate
     17344+                                                       let class_candidate_namespace = a:class_candidate_namespace
     17345+                                               else
     17346+                                                       let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(returnclass, fullnamespace, a:imports)
     17347+                                               endif
    1722617348+                                       endif
    1722717349+
     
    1736217484+                       let classname_candidate = return_type
    1736317485+                       let class_candidate_namespace = '\'
    17364 +               else
     17486+               elseif function_file != '' && filereadable(function_file)
    1736517487+                       let file_lines = readfile(function_file)
    17366 +                       let docblock_str = phpcomplete#GetDocBlock(file_lines, 'function\s*\<'.function_name.'\>')
     17488+                       let docblock_str = phpcomplete#GetDocBlock(file_lines, 'function\s*&\?\<'.function_name.'\>')
    1736717489+                       let docblock = phpcomplete#ParseDocBlock(docblock_str)
    1736817490+                       if has_key(docblock.return, 'type')
     
    1738017502+               endif
    1738117503+       else
     17504+               " extract the variable name from the context
     17505+               let object = methodstack[0]
     17506+               let object_is_array = (object =~ '\v^[^[]+\[' ? 1 : 0)
     17507+               let object = matchstr(object, variable_name_pattern)
     17508+
    1738217509+               " check Constant lookup
    1738317510+               let constant_object = matchstr(a:context, '\zs'.class_name_pattern.'\ze::')
     
    1738617513+               endif
    1738717514+
    17388 +               " extract the variable name from the context
    17389 +               let object = methodstack[0]
    17390 +               let object_is_array = (object =~ '\v^[^[]+\[' ? 1 : 0)
    17391 +               let object = matchstr(object, variable_name_pattern)
    17392 +
    17393 +               " scan the file backwards from current line for explicit type declaration (@var $variable Classname)
    17394 +               let i = 1 " start from the current line - 1
    17395 +               while i < a:start_line
    17396 +                       let line = getline(a:start_line - i)
    17397 +                       " in file lookup for /* @var $foo Class */
    17398 +                       if line =~# '@var\s\+'.object.'\s\+'.class_name_pattern
    17399 +                               let classname_candidate = matchstr(line, '@var\s\+'.object.'\s\+\zs'.class_name_pattern.'\(\[\]\)\?')
    17400 +                               break
    17401 +                       elseif line !~ '^\s*$'
    17402 +                               " type indicator comments should be next to the variable
    17403 +                               " non empty lines break the search
    17404 +                               break
    17405 +                       endif
    17406 +                       let i += 1
    17407 +               endwhile
     17515+               if classname_candidate == ''
     17516+                       " scan the file backwards from current line for explicit type declaration (@var $variable Classname)
     17517+                       let i = 1 " start from the current line - 1
     17518+                       while i < a:start_line
     17519+                               let line = getline(a:start_line - i)
     17520+                               " in file lookup for /* @var $foo Class */
     17521+                               if line =~# '@var\s\+'.object.'\s\+'.class_name_pattern
     17522+                                       let classname_candidate = matchstr(line, '@var\s\+'.object.'\s\+\zs'.class_name_pattern.'\(\[\]\)\?')
     17523+                                       let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, a:current_namespace, a:imports)
     17524+                                       break
     17525+                               elseif line !~ '^\s*$'
     17526+                                       " type indicator comments should be next to the variable
     17527+                                       " non empty lines break the search
     17528+                                       break
     17529+                               endif
     17530+                               let i += 1
     17531+                       endwhile
     17532+               endif
    1740817533+
    1740917534+               if classname_candidate != ''
     
    1741517540+               " scan the file backwards from the current line
    1741617541+               let i = 1
    17417 +               while i < a:start_line
     17542+               while i < a:start_line " {{{
    1741817543+                       let line = getline(a:start_line - i)
    1741917544+
     
    1752717652+                                       let class_candidate_namespace = '\'
    1752817653+                                       break
    17529 +                               else
     17654+                               elseif function_file != '' && filereadable(function_file)
    1753017655+                                       let file_lines = readfile(function_file)
    17531 +                                       let docblock_str = phpcomplete#GetDocBlock(file_lines, 'function\s*\<'.function_name.'\>')
     17656+                                       let docblock_str = phpcomplete#GetDocBlock(file_lines, 'function\s*&\?\<'.function_name.'\>')
    1753217657+                                       let docblock = phpcomplete#ParseDocBlock(docblock_str)
    1753317658+                                       if has_key(docblock.return, 'type')
     
    1757917704+
    1758017705+                       let i += 1
    17581 +               endwhile
     17706+               endwhile " }}}
    1758217707+
    1758317708+               if classname_candidate != ''
     
    1765017775+       endif
    1765117776+
     17777+       return ''
    1765217778+endfunction
    1765317779+" }}}
     
    1766017786+       endif
    1766117787+
     17788+
    1766217789+       " do in-file lookup for function definition
    1766317790+       let i = 1
    1766417791+       let buffer_lines = getline(1, line('$'))
    1766517792+       for line in buffer_lines
    17666 +               if line =~? '^\s*function\s\+'.a:function_name.'\s*('
     17793+               if line =~? '^\s*function\s\+&\?'.a:function_name.'\s*('
    1766717794+                       return expand('%:p')
    1766817795+               endif
     
    1769217819+               return no_namespace_candidate
    1769317820+       endif
     17821+
     17822+       return ''
    1769417823+endfunction
    1769517824+" }}}
     
    1778217911+       silent! below 1new
    1778317912+       silent! 0put =cfile
    17784 +       call search('\(class\|interface\)\s\+'.a:class_name.'\(\>\|$\)')
     17913+       call search('\(class\|interface\)\_s\+'.a:class_name.'\(\>\|$\)')
    1778517914+       let cfline = line('.')
    1778617915+       call search('{')
     
    1781517944+               endif
    1781617945+               let classlocation = phpcomplete#GetClassLocation(extends_class, namespace)
    17817 +               if filereadable(classlocation)
     17946+               if classlocation != '' && filereadable(classlocation)
    1781817947+                       let full_file_path = fnamemodify(classlocation, ':p')
    1781917948+                       let result += phpcomplete#GetClassContentsStructure(full_file_path, readfile(full_file_path), extends_class)
     
    1813218261+                                               let import['kind'] = 'c'
    1813318262+                                               let import['builtin'] = 1
    18134 +                                       elseif has_key(g:php_builtin_interfaces, import.name)
     18263+                                       elseif has_key(g:php_builtin_interfacenames, tolower(import.name))
    1813518264+                                               let import['kind'] = 'i'
    1813618265+                                               let import['builtin'] = 1
     
    1836018489+       endfor
    1836118490+
    18362 +       let g:php_builtin_classnames[class_info.name] = ''
     18491+       let g:php_builtin_classnames[classname] = ''
    1836318492+       for [method_name, method_info] in items(class_info.methods)
    1836418493+               let g:php_builtin_object_functions[classname.'::'.method_name.'('] = method_info.signature
     
    1837918508+       let g:php_builtin_interfacenames[interfacename] = ''
    1838018509+       for [method_name, method_info] in items(class_info.methods)
    18381 +               let g:php_builtin_object_functions[classname.'::'.method_name.'('] = method_info.signature
     18510+               let g:php_builtin_object_functions[interfacename.'::'.method_name.'('] = method_info.signature
    1838218511+       endfor
    1838318512+       for [method_name, method_info] in items(class_info.static_methods)
    18384 +               let g:php_builtin_object_functions[classname.'::'.method_name.'('] = method_info.signature
     18513+               let g:php_builtin_object_functions[interfacename.'::'.method_name.'('] = method_info.signature
    1838518514+       endfor
    1838618515+endfor
     
    1839118520+                       \ 'include(': 'string filename | resource',
    1839218521+                       \ 'include_once(': 'string filename | resource',
    18393                         \ 'require(': 'string filename | resource',
     18522+                       \ 'require(': 'string filename | resource',
    1839418523                        \ 'require_once(': 'string filename | resource',
    1839518524                        \ }
     
    1842618555diff -Naur vim74.orig/runtime/colors/README.txt vim74/runtime/colors/README.txt
    1842718556--- vim74.orig/runtime/colors/README.txt        2010-05-15 11:03:31.000000000 +0000
    18428 +++ vim74/runtime/colors/README.txt     2014-06-01 00:42:49.970875179 +0000
     18557+++ vim74/runtime/colors/README.txt     2014-07-21 23:33:12.600204483 +0000
    1842918558@@ -36,6 +36,14 @@
    1843018559 removed in your color scheme.  Use something like "gui=NONE" to remove the
     
    1844418573diff -Naur vim74.orig/runtime/colors/delek.vim vim74/runtime/colors/delek.vim
    1844518574--- vim74.orig/runtime/colors/delek.vim 2010-05-15 11:03:31.000000000 +0000
    18446 +++ vim74/runtime/colors/delek.vim      2014-06-01 00:42:50.027541702 +0000
     18575+++ vim74/runtime/colors/delek.vim      2014-07-21 23:33:12.646871028 +0000
    1844718576@@ -1,10 +1,10 @@
    1844818577 " Vim color file
     
    1847418603diff -Naur vim74.orig/runtime/colors/industry.vim vim74/runtime/colors/industry.vim
    1847518604--- vim74.orig/runtime/colors/industry.vim      1970-01-01 00:00:00.000000000 +0000
    18476 +++ vim74/runtime/colors/industry.vim   2014-06-01 00:42:50.067541600 +0000
     18605+++ vim74/runtime/colors/industry.vim   2014-07-21 23:33:12.710204196 +0000
    1847718606@@ -0,0 +1,40 @@
    1847818607+" Vim color file
     
    1851818647diff -Naur vim74.orig/runtime/compiler/gcc.vim vim74/runtime/compiler/gcc.vim
    1851918648--- vim74.orig/runtime/compiler/gcc.vim 2011-12-15 20:20:22.000000000 +0000
    18520 +++ vim74/runtime/compiler/gcc.vim      2014-06-01 00:42:50.447540632 +0000
     18649+++ vim74/runtime/compiler/gcc.vim      2014-07-21 23:33:13.026870036 +0000
    1852118650@@ -25,10 +25,10 @@
    1852218651       \%f:%l:\ %tarning:\ %m,
     
    1853618665diff -Naur vim74.orig/runtime/doc/autocmd.txt vim74/runtime/doc/autocmd.txt
    1853718666--- vim74.orig/runtime/doc/autocmd.txt  2013-08-10 11:24:52.000000000 +0000
    18538 +++ vim74/runtime/doc/autocmd.txt       2014-06-01 00:42:51.010872531 +0000
     18667+++ vim74/runtime/doc/autocmd.txt       2014-07-21 23:33:13.573535276 +0000
    1853918668@@ -1,4 +1,4 @@
    1854018669-*autocmd.txt*   For Vim version 7.4.  Last change: 2013 Aug 04
     
    1859418723diff -Naur vim74.orig/runtime/doc/change.txt vim74/runtime/doc/change.txt
    1859518724--- vim74.orig/runtime/doc/change.txt   2013-08-10 11:24:52.000000000 +0000
    18596 +++ vim74/runtime/doc/change.txt        2014-06-01 00:42:51.047539105 +0000
     18725+++ vim74/runtime/doc/change.txt        2014-07-21 23:33:13.596868549 +0000
    1859718726@@ -1,4 +1,4 @@
    1859818727-*change.txt*    For Vim version 7.4.  Last change: 2013 Jul 17
    18599 +*change.txt*    For Vim version 7.4.  Last change: 2014 Feb 11
     18728+*change.txt*    For Vim version 7.4.  Last change: 2014 Jun 26
    1860018729 
    1860118730 
     
    1866118790                                                        *:sor* *:sort*
    1866218791 :[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/]
     18792@@ -1707,8 +1717,8 @@
     18793 quite useless.
     18794 
     18795 The details about sorting depend on the library function used.  There is no
     18796-guarantee that sorting is "stable" or obeys the current locale.  You will have
     18797-to try it out.
     18798+guarantee that sorting obeys the current locale.  You will have to try it out.
     18799+Vim does do a "stable" sort.
     18800 
     18801 The sorting can be interrupted, but if you interrupt it too late in the
     18802 process you may end up with duplicated lines.  This also depends on the system
    1866318803diff -Naur vim74.orig/runtime/doc/cmdline.txt vim74/runtime/doc/cmdline.txt
    1866418804--- vim74.orig/runtime/doc/cmdline.txt  2013-08-10 11:24:52.000000000 +0000
    18665 +++ vim74/runtime/doc/cmdline.txt       2014-06-01 00:42:51.080872353 +0000
     18805+++ vim74/runtime/doc/cmdline.txt       2014-07-21 23:33:13.640201769 +0000
    1866618806@@ -1,4 +1,4 @@
    1866718807-*cmdline.txt*   For Vim version 7.4.  Last change: 2013 Mar 16
     
    1871318853diff -Naur vim74.orig/runtime/doc/develop.txt vim74/runtime/doc/develop.txt
    1871418854--- vim74.orig/runtime/doc/develop.txt  2013-08-10 11:24:52.000000000 +0000
    18715 +++ vim74/runtime/doc/develop.txt       2014-06-01 00:42:51.124205576 +0000
     18855+++ vim74/runtime/doc/develop.txt       2014-07-21 23:33:13.676868340 +0000
    1871618856@@ -1,4 +1,4 @@
    1871718857-*develop.txt*   For Vim version 7.4.  Last change: 2013 Apr 27
     
    1873018870diff -Naur vim74.orig/runtime/doc/diff.txt vim74/runtime/doc/diff.txt
    1873118871--- vim74.orig/runtime/doc/diff.txt     2013-08-10 11:24:52.000000000 +0000
    18732 +++ vim74/runtime/doc/diff.txt  2014-06-01 00:42:51.130872226 +0000
     18872+++ vim74/runtime/doc/diff.txt  2014-07-21 23:33:13.686868314 +0000
    1873318873@@ -1,4 +1,4 @@
    1873418874-*diff.txt*      For Vim version 7.4.  Last change: 2013 Jul 07
     
    1876518905diff -Naur vim74.orig/runtime/doc/digraph.txt vim74/runtime/doc/digraph.txt
    1876618906--- vim74.orig/runtime/doc/digraph.txt  2013-08-10 11:24:52.000000000 +0000
    18767 +++ vim74/runtime/doc/digraph.txt       2014-06-01 00:42:51.154205500 +0000
     18907+++ vim74/runtime/doc/digraph.txt       2014-07-21 23:33:13.713534911 +0000
    1876818908@@ -1,4 +1,4 @@
    1876918909-*digraph.txt*   For Vim version 7.4.  Last change: 2011 Jan 15
    18770 +*digraph.txt*   For Vim version 7.4.  Last change: 2014 Apr 17
     18910+*digraph.txt*   For Vim version 7.4.  Last change: 2014 Jun 19
    1877118911 
    1877218912 
     
    1878118921        Percent sign            %       Greek/Cyrillic special
    1878218922        Plus                    +       smalls: Arabic, capitals: Hebrew
    18783 @@ -1077,7 +1077,7 @@
     18923@@ -170,6 +170,11 @@
     18924 used for the euro sign, while both of them are the character 164, 0xa4.  For
     18925 compatibility with zsh Eu can also be used for the euro sign.
     18926 
     18927+ROUBLE
     18928+
     18929+The rouble sign was added in 2014 as 0x20bd.  Vim supports the digraphs =R and
     18930+=P for this.  Note that R= and P= are other characters.
     18931+
     18932                                                        *digraph-table*
     18933 char  digraph  hex     dec     official name ~
     18934 ^@     NU      0x00      0     NULL (NUL)
     18935@@ -966,6 +971,8 @@
     18936 â‚§    Pt      20A7    8359    PESETA SIGN
     18937 â‚©    W=      20A9    8361    WON SIGN
     18938 â‚¬    Eu      20AC    8364    EURO SIGN
     18939+â‚œ    =R      20BD    8381    ROUBLE SIGN
     18940+â‚œ    =P      20BD    8381    ROUBLE SIGN
     18941 â„ƒ    oC      2103    8451    DEGREE CELSIUS
     18942 â„
     18943        co      2105    8453    CARE OF
     18944 â„‰    oF      2109    8457    DEGREE FAHRENHEIT
     18945@@ -1077,7 +1084,7 @@
    1878418946 âŠ¥    -T      22A5    8869    UP TACK
    1878518947 â‹
     
    1879318955diff -Naur vim74.orig/runtime/doc/editing.txt vim74/runtime/doc/editing.txt
    1879418956--- vim74.orig/runtime/doc/editing.txt  2013-08-10 11:24:53.000000000 +0000
    18795 +++ vim74/runtime/doc/editing.txt       2014-06-01 00:42:51.197538723 +0000
     18957+++ vim74/runtime/doc/editing.txt       2014-07-21 23:33:13.746868157 +0000
    1879618958@@ -1,4 +1,4 @@
    1879718959-*editing.txt*   For Vim version 7.4.  Last change: 2013 Aug 03
    18798 +*editing.txt*   For Vim version 7.4.  Last change: 2014 May 02
     18960+*editing.txt*   For Vim version 7.4.  Last change: 2014 Jul 19
    1879918961 
    1880018962 
     
    1880818970                                                        *:keepalt* *:keepa*
    1880918971 :keepalt {cmd}         Execute {cmd} while keeping the current alternate file
    18810 @@ -1468,14 +1469,15 @@
     18972@@ -1361,6 +1362,11 @@
     18973 {only available when compiled with the |+cryptv| feature}  *E833*
     18974 
     18975 The text in the swap file and the undo file is also encrypted.  *E843*
     18976+However, this is done block-by-block and may reduce the time needed to crack a
     18977+password.  You can disable the swap file, but then a crash will cause you to
     18978+lose your work.  The undo file can be disabled without much disadvantage. >
     18979+       :set noundofile
     18980+       :noswapfile edit secrets
     18981 
     18982 Note: The text in memory is not encrypted.  A system administrator may be able
     18983 to see your text while you are editing it.  When filtering text with
     18984@@ -1468,14 +1474,15 @@
    1881118985 ==============================================================================
    1881218986 10. Timestamps                                 *timestamp* *timestamps*
     
    1883419008diff -Naur vim74.orig/runtime/doc/eval.txt vim74/runtime/doc/eval.txt
    1883519009--- vim74.orig/runtime/doc/eval.txt     2013-08-10 11:24:53.000000000 +0000
    18836 +++ vim74/runtime/doc/eval.txt  2014-06-01 00:42:51.230871971 +0000
     19010+++ vim74/runtime/doc/eval.txt  2014-07-21 23:33:13.853534545 +0000
    1883719011@@ -1,4 +1,4 @@
    1883819012-*eval.txt*     For Vim version 7.4.  Last change: 2013 Aug 03
    18839 +*eval.txt*     For Vim version 7.4.  Last change: 2014 May 07
     19013+*eval.txt*     For Vim version 7.4.  Last change: 2014 Jul 19
    1884019014 
    1884119015 
     
    1900719181 has( {feature})                        Number  TRUE if feature {feature} supported
    1900819182 has_key( {dict}, {key})                Number  TRUE if {dict} has entry {key}
    19009 @@ -1968,7 +1994,8 @@
     19183@@ -1861,6 +1887,8 @@
     19184                                Number  position where {pat} matches in {expr}
     19185 matchadd( {group}, {pattern}[, {priority}[, {id}]])
     19186                                Number  highlight {pattern} with {group}
     19187+matchaddpos( {group}, {list}[, {priority}[, {id}]])
     19188+                               Number  highlight positions with {group}
     19189 matcharg( {nr})                        List    arguments of |:match|
     19190 matchdelete( {id})             Number  delete match identified by {id}
     19191 matchend( {expr}, {pat}[, {start}[, {count}]])
     19192@@ -1968,7 +1996,8 @@
    1901019193                                Number  last index of {needle} in {haystack}
    1901119194 strtrans( {expr})              String  translate string to make it printable
     
    1901719200                                String  all {pat} in {expr} replaced with {sub}
    1901819201 synID( {lnum}, {col}, {trans}) Number  syntax ID at {lnum} and {col}
    19019 @@ -1978,6 +2005,7 @@
     19202@@ -1978,6 +2007,7 @@
    1902019203 synconcealed( {lnum}, {col})   List    info about concealing
    1902119204 synstack( {lnum}, {col})       List    stack of syntax IDs at {lnum} and {col}
     
    1902519208 tabpagenr( [{arg}])            Number  number of current or last tab page
    1902619209 tabpagewinnr( {tabarg}[, {arg}])
    19027 @@ -1995,6 +2023,8 @@
     19210@@ -1995,6 +2025,8 @@
    1902819211 type( {name})                  Number  type of variable {name}
    1902919212 undofile( {name})              String  undo file name for {name}
     
    1903419217 virtcol( {expr})               Number  screen column of cursor or mark
    1903519218 visualmode( [expr])            String  last visual mode used
    19036 @@ -2076,6 +2106,18 @@
     19219@@ -2076,6 +2108,18 @@
    1903719220 argidx()       The result is the current index in the argument list.  0 is
    1903819221                the first file.  argc() - 1 is the last one.  See |arglist|.
     
    1905319236 argv([{nr}])   The result is the {nr}th file in the argument list of the
    1905419237                current window.  See |arglist|.  "argv(0)" is the first one.
    19055 @@ -2260,7 +2302,10 @@
     19238@@ -2260,7 +2304,10 @@
    1905619239                {expr}.  Use zero for the first character, it returns zero.
    1905719240                This function is only useful when there are multibyte
     
    1906519248                        echo matchstr(str, ".", byteidx(str, 3))
    1906619249 <              will display the fourth character.  Another way to do the
    19067 @@ -2269,7 +2314,20 @@
     19250@@ -2269,7 +2316,20 @@
    1906819251                        echo strpart(s, 0, byteidx(s, 1))
    1906919252 <              If there are less than {nr} characters -1 is returned.
     
    1908719270 call({func}, {arglist} [, {dict}])                     *call()* *E699*
    1908819271                Call function {func} with the items in |List| {arglist} as
    19089 @@ -2544,9 +2602,14 @@
     19272@@ -2544,9 +2604,14 @@
    1909019273 cursor({list})
    1909119274                Positions the cursor at the column (byte count) {col} in the
     
    1909819281+                       [{lnum}, {col}, {off}]
    1909919282+                       [{lnum}, {col}, {off}, {curswant}]
    19100 +               This is like the return value of |getpos()| or |getcurpos|,
     19283+               This is like the return value of |getpos()| or |getcurpos()|,
    1910119284+               but without the first item.
    1910219285+
     
    1910419287                If {lnum} is greater than the number of lines in the buffer,
    1910519288                the cursor will be positioned at the last line in the buffer.
    19106 @@ -2555,6 +2618,8 @@
     19289@@ -2555,6 +2620,8 @@
    1910719290                the cursor will be positioned at the last character in the
    1910819291                line.
     
    1911319296                screen columns from the start of the character.  E.g., a
    1911419297                position within a <Tab> or after the last character.
    19115 @@ -2671,6 +2736,15 @@
     19298@@ -2671,6 +2738,15 @@
    1911619299                        0       does not exist
    1911719300                        -1      not implemented on this system
     
    1912919312 exists({expr}) The result is a Number, which is non-zero if {expr} is
    1913019313                defined, zero otherwise.  The {expr} argument is a string,
    19131 @@ -2683,7 +2757,8 @@
     19314@@ -2683,7 +2759,8 @@
    1913219315                                        string)
    1913319316                        *funcname       built-in function (see |functions|)
     
    1913919322                                        |internal-variables|).  Also works
    1914019323                                        for |curly-braces-names|, |Dictionary|
    19141 @@ -2789,7 +2864,7 @@
     19324@@ -2789,7 +2866,7 @@
    1914219325                        <afile>         autocmd file name
    1914319326                        <abuf>          autocmd buffer number (as a String!)
     
    1914819331                        <cword>         word under the cursor
    1914919332                        <cWORD>         WORD under the cursor
    19150 @@ -3175,7 +3250,7 @@
     19333@@ -3175,7 +3252,7 @@
    1915119334                If [expr] is 1, only check if a character is available, it is
    1915219335                        not consumed.  Return zero if no character available.
     
    1915719340                result is a number.  Use nr2char() to convert it to a String.
    1915819341                Otherwise a String is returned with the encoded character.
    19159 @@ -3185,7 +3260,7 @@
     19342@@ -3185,7 +3262,11 @@
    1916019343                String when a modifier (shift, control, alt) was used that is
    1916119344                not included in the character.
    1916219345 
    1916319346-               When {expr} is 1 only the first byte is returned.  For a
     19347+               When [expr] is 0 and Esc is typed, there will be a short delay
     19348+               while Vim waits to see if this is the start of an escape
     19349+               sequence.
     19350+
    1916419351+               When [expr] is 1 only the first byte is returned.  For a
    1916519352                one-byte character it is the character itself as a number.
    1916619353                Use nr2char() to convert it to a String.
    1916719354 
    19168 @@ -3268,6 +3343,17 @@
     19355@@ -3268,6 +3349,17 @@
    1916919356                Returns an empty string otherwise.
    1917019357                Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|.
     
    1918419371 getcwd()       The result is a String, which is the name of the current
    1918519372                working directory.
    19186 @@ -3417,7 +3503,7 @@
     19373@@ -3389,6 +3481,34 @@
     19374                        'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
     19375                        :unlet m
     19376 <
     19377+                                                       *getpid()*
     19378+getpid()       Return a Number which is the process ID of the Vim process.
     19379+               On Unix and MS-Windows this is a unique number, until Vim
     19380+               exits.  On MS-DOS it's always zero.
     19381+
     19382+                                                       *getpos()*
     19383+getpos({expr}) Get the position for {expr}.  For possible values of {expr}
     19384+               see |line()|.  For getting the cursor position see
     19385+               |getcurpos()|.
     19386+               The result is a |List| with four numbers:
     19387+                   [bufnum, lnum, col, off]
     19388+               "bufnum" is zero, unless a mark like '0 or 'A is used, then it
     19389+               is the buffer number of the mark.
     19390+               "lnum" and "col" are the position in the buffer.  The first
     19391+               column is 1.
     19392+               The "off" number is zero, unless 'virtualedit' is used.  Then
     19393+               it is the offset in screen columns from the start of the
     19394+               character.  E.g., a position within a <Tab> or after the last
     19395+               character.
     19396+               Note that for '< and '> Visual mode matters: when it is "V"
     19397+               (visual line mode) the column of '< is zero and the column of
     19398+               '> is a large number.
     19399+               This can be used to save and restore the position of a mark: >
     19400+                       let save_a_mark = getpos("'a")
     19401+                       ...
     19402+                       call setpos(''a', save_a_mark
     19403+<              Also see |getcurpos()| and |setpos()|.
     19404+
     19405 
     19406 getqflist()                                            *getqflist()*
     19407                Returns a list with all the current quickfix errors.  Each
     19408@@ -3417,7 +3537,7 @@
    1918719409                        :endfor
    1918819410 
     
    1919319415                {regname}.  Example: >
    1919419416                        :let cliptext = getreg('*')
    19195 @@ -3426,6 +3512,11 @@
     19417@@ -3426,6 +3546,11 @@
    1919619418                getreg('=', 1) returns the expression itself, so that it can
    1919719419                be restored with |setreg()|.  For other registers the extra
     
    1920519427 
    1920619428 
    19207 @@ -3435,7 +3526,7 @@
     19429@@ -3435,7 +3560,7 @@
    1920819430                    "v"                 for |characterwise| text
    1920919431                    "V"                 for |linewise| text
     
    1921419436                If {regname} is not specified, |v:register| is used.
    1921519437 
    19216 @@ -3513,11 +3604,12 @@
     19438@@ -3513,11 +3638,12 @@
    1921719439                See |expand()| for expanding special Vim variables.  See
    1921819440                |system()| for getting the raw output of an external command.
     
    1922919451                |glob()|.  A path separator is inserted when needed.
    1923019452                To add a comma inside a directory name escape it with a
    19231 @@ -3525,11 +3617,19 @@
     19453@@ -3525,11 +3651,19 @@
    1923219454                trailing backslash, remove it if you put a comma after it.
    1923319455                If the expansion fails for one of the directories, there is no
     
    1925019472                For example, to find all "README.txt" files in the directories
    1925119473                in 'runtimepath' and below: >
    19252 @@ -4109,6 +4209,8 @@
     19474@@ -4109,6 +4243,8 @@
    1925319475                                     (|mapmode-ic|)
    1925419476                  "sid"      The script local ID, used for <sid> mappings
     
    1925919481                The mappings local to the current buffer are checked first,
    1926019482                then the global mappings.
    19261 @@ -4210,6 +4312,9 @@
     19483@@ -4210,6 +4346,9 @@
    1926219484                "match").  It will be highlighted with {group}.  Returns an
    1926319485                identification number (ID), which can be used to delete the
     
    1926919491                The optional {priority} argument assigns a priority to the
    1927019492                match.  A match with a high priority will have its
    19271 @@ -4408,7 +4513,8 @@
    19272  
    19273                                                         *getpos()*
    19274  getpos({expr}) Get the position for {expr}.  For possible values of {expr}
     19493@@ -4243,6 +4382,41 @@
     19494                available from |getmatches()|.  All matches can be deleted in
     19495                one operation by |clearmatches()|.
     19496 
     19497+matchaddpos({group}, {pos}[, {priority}[, {id}]])              *matchaddpos()*
     19498+               Same as |matchadd()|, but requires a list of positions {pos}
     19499+               instead of a pattern. This command is faster than |matchadd()|
     19500+               because it does not require to handle regular expressions and
     19501+               sets buffer line boundaries to redraw screen. It is supposed
     19502+               to be used when fast match additions and deletions are
     19503+               required, for example to highlight matching parentheses.
     19504+
     19505+               The list {pos} can contain one of these items:
     19506+               - A number.  This whole line will be highlighted.  The first
     19507+                 line has number 1.
     19508+               - A list with one number, e.g., [23]. The whole line with this
     19509+                 number will be highlighted.
     19510+               - A list with two numbers, e.g., [23, 11]. The first number is
     19511+                 the line number, the second one is the column number (first
     19512+                 column is 1, the value must correspond to the byte index as
     19513+                 |col()| would return).  The character at this position will
     19514+                 be highlighted.
     19515+               - A list with three numbers, e.g., [23, 11, 3]. As above, but
     19516+                 the third number gives the length of the highlight in bytes.
     19517+               
     19518+               The maximum number of positions is 8.
     19519+
     19520+               Example: >
     19521+                       :highlight MyGroup ctermbg=green guibg=green
     19522+                       :let m = matchaddpos("MyGroup", [[23, 24], 34])
     19523+<              Deletion of the pattern: >
     19524+                       :call matchdelete(m)
     19525+
     19526+<              Matches added by |matchaddpos()| are returned by
     19527+               |getmatches()| with an entry "pos1", "pos2", etc., with the
     19528+               value a list like the {pos} item.
     19529+               These matches cannot be set via |setmatches()|, however they
     19530+               can still be deleted by |clearmatches()|.
     19531+
     19532 matcharg({nr})                                                 *matcharg()*
     19533                Selects the {nr} match item, as set with a |:match|,
     19534                |:2match| or |:3match| command.
     19535@@ -4401,30 +4575,6 @@
     19536                characters.  nr2char(0) is a real NUL and terminates the
     19537                string, thus results in an empty string.
     19538 
     19539-                                                       *getpid()*
     19540-getpid()       Return a Number which is the process ID of the Vim process.
     19541-               On Unix and MS-Windows this is a unique number, until Vim
     19542-               exits.  On MS-DOS it's always zero.
     19543-
     19544-                                                       *getpos()*
     19545-getpos({expr}) Get the position for {expr}.  For possible values of {expr}
    1927519546-               see |line()|.
    19276 +               see |line()|.  For getting the cursor position see
    19277 +               |getcurpos()|.
    19278                 The result is a |List| with four numbers:
    19279                     [bufnum, lnum, col, off]
    19280                 "bufnum" is zero, unless a mark like '0 or 'A is used, then it
    19281 @@ -4419,11 +4525,14 @@
    19282                 it is the offset in screen columns from the start of the
    19283                 character.  E.g., a position within a <Tab> or after the last
    19284                 character.
     19547-               The result is a |List| with four numbers:
     19548-                   [bufnum, lnum, col, off]
     19549-               "bufnum" is zero, unless a mark like '0 or 'A is used, then it
     19550-               is the buffer number of the mark.
     19551-               "lnum" and "col" are the position in the buffer.  The first
     19552-               column is 1.
     19553-               The "off" number is zero, unless 'virtualedit' is used.  Then
     19554-               it is the offset in screen columns from the start of the
     19555-               character.  E.g., a position within a <Tab> or after the last
     19556-               character.
    1928519557-               This can be used to save and restore the cursor position: >
    1928619558-                       let save_cursor = getpos(".")
     
    1928819560-                       call setpos('.', save_cursor)
    1928919561-<              Also see |setpos()|.
    19290 +               Note that for '< and '> Visual mode matters: when it is "V"
    19291 +               (visual line mode) the column of '< is zero and the column of
    19292 +               '> is a large number.
    19293 +               This can be used to save and restore the position of a mark: >
    19294 +                       let save_a_mark = getpos("'a")
    19295 +                       ...
    19296 +                       call setpos(''a', save_a_mark
    19297 +<              Also see |getcurpos()| and |setpos()|.
    19298  
     19562-
    1929919563 or({expr}, {expr})                                     *or()*
    1930019564                Bitwise OR on the two arguments.  The arguments are converted
    19301 @@ -5223,8 +5332,9 @@
     19565                to a number.  A List, Dict or Float argument causes an error.
     19566@@ -5223,8 +5373,9 @@
    1930219567                        .       the cursor
    1930319568                        'x      mark x
     
    1931019575                "bufnum" is the buffer number.  Zero can be used for the
    1931119576                current buffer.  Setting the cursor is only possible for
    19312 @@ -5242,13 +5352,26 @@
     19577@@ -5242,13 +5393,26 @@
    1931319578                character.  E.g., a position within a <Tab> or after the last
    1931419579                character.
     
    1933919604 
    1934019605 setqflist({list} [, {action}])                         *setqflist()*
    19341 @@ -5300,6 +5423,8 @@
     19606@@ -5300,6 +5464,8 @@
    1934219607                                                        *setreg()*
    1934319608 setreg({regname}, {value} [,{options}])
     
    1934819613                then the value is appended.
    1934919614                {options} can also contain a register type specification:
    19350 @@ -5312,10 +5437,15 @@
     19615@@ -5312,10 +5478,15 @@
    1935119616                in the longest line (counting a <Tab> as 1 character).
    1935219617 
     
    1936819633                Examples: >
    1936919634                        :call setreg(v:register, @*)
    19370 @@ -5323,8 +5453,11 @@
     19635@@ -5323,8 +5494,11 @@
    1937119636                        :call setreg('a', "1\n2\n3", 'b5')
    1937219637 
     
    1938219647                            ....
    1938319648                        :call setreg('a', var_a, var_amode)
    19384 @@ -5390,6 +5523,7 @@
     19649@@ -5390,6 +5564,7 @@
    1938519650 <              This results in a directory listing for the file under the
    1938619651                cursor.  Example of use with |system()|: >
     
    1939019655 
    1939119656 shiftwidth()                                           *shiftwidth()*
    19392 @@ -5449,20 +5583,26 @@
     19657@@ -5449,20 +5624,40 @@
    1939319658 
    1939419659 
     
    1940019665+               If you want a list to remain unmodified make a copy first: >
    1940119666                        :let sortedlist = sort(copy(mylist))
    19402  <              Uses the string representation of each item to sort on.
    19403                 Numbers sort after Strings, |Lists| after Numbers.
    19404                 For sorting text in the current buffer use |:sort|.
    19405 +
    19406                 When {func} is given and it is one then case is ignored.
     19667-<              Uses the string representation of each item to sort on.
     19668-               Numbers sort after Strings, |Lists| after Numbers.
     19669-               For sorting text in the current buffer use |:sort|.
     19670-               When {func} is given and it is one then case is ignored.
    1940719671-               {dict} is for functions with the "dict" attribute.  It will be
    1940819672-               used to set the local variable "self". |Dictionary-function|
     19673+
     19674+<              When {func} is omitted, is empty or zero, then sort() uses the
     19675+               string representation of each item to sort on.  Numbers sort
     19676+               after Strings, |Lists| after Numbers.  For sorting text in the
     19677+               current buffer use |:sort|.
     19678+
     19679+               When {func} is given and it is is '1' or 'i' then case is
     19680+               ignored.
     19681+               
     19682+               When {func} is given and it is 'n' then all items will be
     19683+               sorted numerical (Implementation detail: This uses the
     19684+               strtod() function to parse numbers, Strings, Lists, Dicts and
     19685+               Funcrefs will be considered as being 0).
     19686+
    1940919687                When {func} is a |Funcref| or a function name, this function
    1941019688                is called to compare items.  The function is invoked with two
     
    1941619694+               used to set the local variable "self". |Dictionary-function|
    1941719695+
     19696+               The sort is stable, items which compare equal (as number or as
     19697+               string) will keep their relative position. E.g., when sorting
     19698+               on numbers, text strings will sort next to each other, in the
     19699+               same order as they were originally.
     19700+
    1941819701+               Also see |uniq()|.
    1941919702+
     
    1942119704                        func MyCompare(i1, i2)
    1942219705                           return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
    19423 @@ -5604,7 +5744,7 @@
     19706@@ -5604,7 +5799,7 @@
    1942419707 
    1942519708 strdisplaywidth({expr}[, {col}])                       *strdisplaywidth()*
     
    1943019713                screen column where to start.  This matters for Tab
    1943119714                characters.
    19432 @@ -5729,12 +5869,23 @@
     19715@@ -5729,12 +5924,23 @@
    1943319716                Ambiguous, this function's return value depends on 'ambiwidth'.
    1943419717                Also see |strlen()|, |strdisplaywidth()| and |strchars()|.
     
    1945519738                        :s/\d\+/\=submatch(0) + 1/
    1945619739 <              This finds the first number in the line and adds one to it.
    19457 @@ -5867,19 +6018,29 @@
     19740@@ -5867,19 +6073,29 @@
    1945819741                valid positions.
    1945919742 
     
    1949419777 <              To make the result more system-independent, the shell output
    1949519778                is filtered to replace <CR> with <NL> for Macintosh, and
    19496 @@ -5906,6 +6067,16 @@
     19779@@ -5906,6 +6122,16 @@
    1949719780                Use |:checktime| to force a check.
    1949819781 
     
    1951119794                The result is a |List|, where each item is the number of the
    1951219795                buffer associated with each window in the current tab page.
    19513 @@ -5928,7 +6099,7 @@
     19796@@ -5928,7 +6154,7 @@
    1951419797                The number can be used with the |:tab| command.
    1951519798 
     
    1952019803                {tabarg} specifies the number of tab page to be used.
    1952119804                {arg} is used like with |winnr()|:
    19522 @@ -6128,6 +6299,14 @@
     19805@@ -6128,6 +6354,14 @@
    1952319806                                blocks.  Each item may again have an "alt"
    1952419807                                item.
     
    1953519818                Return a |List| with all the values of {dict}.  The |List| is
    1953619819                in arbitrary order.
    19537 @@ -6257,6 +6436,16 @@
     19820@@ -6257,6 +6491,16 @@
    1953819821 winrestview({dict})
    1953919822                Uses the |Dictionary| returned by |winsaveview()| to restore
     
    1955219835                If the window size changed the result won't be the same.
    1955319836 
    19554 @@ -6271,7 +6460,9 @@
    19555                 not opened when moving around.
     19837@@ -6268,10 +6512,12 @@
     19838                buffer and you want to go back to the original view.
     19839                This does not save fold information.  Use the 'foldenable'
     19840                option to temporarily switch off folding, so that folds are
     19841-               not opened when moving around.
     19842+               not opened when moving around. This may have side effects.
    1955619843                The return value includes:
    1955719844                        lnum            cursor line number
     
    1956319850                        curswant        column for vertical movement
    1956419851                        topline         first line in the window
    19565 @@ -6330,13 +6521,24 @@
     19852@@ -6322,7 +6568,7 @@
     19853 
     19854 
     19855                                                        *feature-list*
     19856-There are three types of features:
     19857+There are four types of features:
     19858 1.  Features that are only supported when they have been enabled when Vim
     19859     was compiled |+feature-list|.  Example: >
     19860        :if has("cindent")
     19861@@ -6330,13 +6576,24 @@
    1956619862     Example: >
    1956719863        :if has("gui_running")
     
    1959219888 amiga                  Amiga version of Vim.
    1959319889 arabic                 Compiled with Arabic support |Arabic|.
    19594 @@ -6503,7 +6705,9 @@
     19890@@ -6407,8 +6664,8 @@
     19891 keymap                 Compiled with 'keymap' support.
     19892 langmap                        Compiled with 'langmap' support.
     19893 libcall                        Compiled with |libcall()| support.
     19894-linebreak              Compiled with 'linebreak', 'breakat' and 'showbreak'
     19895-                       support.
     19896+linebreak              Compiled with 'linebreak', 'breakat', 'showbreak' and
     19897+                       'breakindent' support.
     19898 lispindent             Compiled with support for lisp indenting.
     19899 listcmds               Compiled with commands for the buffer list |:files|
     19900                        and the argument list |arglist|.
     19901@@ -6503,7 +6760,9 @@
    1959519902 writebackup            Compiled with 'writebackup' default on.
    1959619903 xfontset               Compiled with X fontset support |xfontset|.
     
    1960319910 xsmp_interact          Compiled with interactive X session management support.
    1960419911 xterm_clipboard                Compiled with support for xterm clipboard.
    19605 @@ -6553,6 +6757,8 @@
     19912@@ -6553,6 +6812,8 @@
    1960619913 and autocommands defined in the script.  It is also possible to call the
    1960719914 function from a mapping defined in the script, but then |<SID>| must be used
     
    1961219919                                        *:fu* *:function* *E128* *E129* *E123*
    1961319920 :fu[nction]            List all functions and their arguments.
    19614 @@ -6576,11 +6782,15 @@
     19921@@ -6576,11 +6837,15 @@
    1961519922 <
    1961619923 See |:verbose-cmd| for more information.
     
    1963019937                        {name} can also be a |Dictionary| entry that is a
    1963119938                        |Funcref|: >
    19632 @@ -6599,7 +6809,7 @@
     19939@@ -6599,7 +6864,7 @@
    1963319940 
    1963419941                        For the {arguments} see |function-argument|.
     
    1963919946                        expected to take care of a range itself.  The range is
    1964019947                        passed as "a:firstline" and "a:lastline".  If [range]
    19641 @@ -6608,10 +6818,10 @@
     19948@@ -6608,10 +6873,10 @@
    1964219949                        of each line.  See |function-range-example|.
    1964319950                        The cursor is still moved to the first line of the
     
    1965219959                        be invoked through an entry in a |Dictionary|.  The
    1965319960                        local variable "self" will then be set to the
    19654 @@ -7273,6 +7483,8 @@
     19961@@ -7273,6 +7538,8 @@
    1965519962                        {pattern}, so long as it does not have a special
    1965619963                        meaning (e.g., '|' or '"') and doesn't occur inside
     
    1966119968                        an error message because it may vary in different
    1966219969                        locales.
    19663 @@ -7416,13 +7628,22 @@
     19970@@ -7416,13 +7683,22 @@
    1966419971                        for Vim commands, |shellescape()| for |:!| commands.
    1966519972                        Examples: >
     
    1969119998diff -Naur vim74.orig/runtime/doc/filetype.txt vim74/runtime/doc/filetype.txt
    1969219999--- vim74.orig/runtime/doc/filetype.txt 2013-08-10 11:24:53.000000000 +0000
    19693 +++ vim74/runtime/doc/filetype.txt      2014-06-01 00:42:51.354204990 +0000
     20000+++ vim74/runtime/doc/filetype.txt      2014-07-21 23:33:13.986867531 +0000
    1969420001@@ -1,4 +1,4 @@
    1969520002-*filetype.txt*  For Vim version 7.4.  Last change: 2013 May 25
     
    1972920036diff -Naur vim74.orig/runtime/doc/fold.txt vim74/runtime/doc/fold.txt
    1973020037--- vim74.orig/runtime/doc/fold.txt     2013-08-10 11:24:53.000000000 +0000
    19731 +++ vim74/runtime/doc/fold.txt  2014-06-01 00:42:51.370871615 +0000
     20038+++ vim74/runtime/doc/fold.txt  2014-07-21 23:33:13.996867505 +0000
    1973220039@@ -1,4 +1,4 @@
    1973320040-*fold.txt*      For Vim version 7.4.  Last change: 2010 May 13
     
    1975220059diff -Naur vim74.orig/runtime/doc/gui.txt vim74/runtime/doc/gui.txt
    1975320060--- vim74.orig/runtime/doc/gui.txt      2013-08-10 11:24:53.000000000 +0000
    19754 +++ vim74/runtime/doc/gui.txt   2014-06-01 00:42:51.410871513 +0000
     20061+++ vim74/runtime/doc/gui.txt   2014-07-21 23:33:14.040200725 +0000
    1975520062@@ -1,4 +1,4 @@
    1975620063-*gui.txt*       For Vim version 7.4.  Last change: 2013 Jun 12
     
    1978220089diff -Naur vim74.orig/runtime/doc/gui_x11.txt vim74/runtime/doc/gui_x11.txt
    1978320090--- vim74.orig/runtime/doc/gui_x11.txt  2013-08-10 11:24:54.000000000 +0000
    19784 +++ vim74/runtime/doc/gui_x11.txt       2014-06-01 00:42:51.460871386 +0000
     20091+++ vim74/runtime/doc/gui_x11.txt       2014-07-21 23:33:14.100200568 +0000
    1978520092@@ -1,4 +1,4 @@
    1978620093-*gui_x11.txt*   For Vim version 7.4.  Last change: 2011 Sep 14
     
    1980020107diff -Naur vim74.orig/runtime/doc/if_lua.txt vim74/runtime/doc/if_lua.txt
    1980120108--- vim74.orig/runtime/doc/if_lua.txt   2013-08-10 11:24:55.000000000 +0000
    19802 +++ vim74/runtime/doc/if_lua.txt        2014-06-01 00:42:51.564204456 +0000
     20109+++ vim74/runtime/doc/if_lua.txt        2014-07-21 23:33:14.180200360 +0000
    1980320110@@ -1,4 +1,4 @@
    1980420111-*if_lua.txt*    For Vim version 7.4.  Last change: 2012 Jun 29
     
    1981820125diff -Naur vim74.orig/runtime/doc/if_perl.txt vim74/runtime/doc/if_perl.txt
    1981920126--- vim74.orig/runtime/doc/if_perl.txt  2013-08-10 11:24:55.000000000 +0000
    19820 +++ vim74/runtime/doc/if_perl.txt       2014-06-01 00:42:51.620870978 +0000
     20127+++ vim74/runtime/doc/if_perl.txt       2014-07-21 23:33:14.236866878 +0000
    1982120128@@ -1,4 +1,4 @@
    1982220129-*if_perl.txt*   For Vim version 7.4.  Last change: 2012 Oct 25
     
    1982720134diff -Naur vim74.orig/runtime/doc/indent.txt vim74/runtime/doc/indent.txt
    1982820135--- vim74.orig/runtime/doc/indent.txt   2013-08-10 11:24:56.000000000 +0000
    19829 +++ vim74/runtime/doc/indent.txt        2014-06-01 00:42:51.750870647 +0000
     20136+++ vim74/runtime/doc/indent.txt        2014-07-21 23:33:14.356866565 +0000
    1983020137@@ -1,4 +1,4 @@
    1983120138-*indent.txt*    For Vim version 7.4.  Last change: 2013 Aug 03
     
    1997220279diff -Naur vim74.orig/runtime/doc/index.txt vim74/runtime/doc/index.txt
    1997320280--- vim74.orig/runtime/doc/index.txt    2013-08-10 11:24:56.000000000 +0000
    19974 +++ vim74/runtime/doc/index.txt 2014-06-01 00:42:51.770870596 +0000
     20281+++ vim74/runtime/doc/index.txt 2014-07-21 23:33:14.376866513 +0000
    1997520282@@ -1,4 +1,4 @@
    1997620283-*index.txt*     For Vim version 7.4.  Last change: 2013 Jul 17
     
    2003020337 |:nunmap|      :nun[map]       like ":unmap" but for Normal mode
    2003120338 |:nunmenu|     :nunme[nu]      remove menu for Normal mode
     20339diff -Naur vim74.orig/runtime/doc/insert.txt vim74/runtime/doc/insert.txt
     20340--- vim74.orig/runtime/doc/insert.txt   2013-08-10 11:24:56.000000000 +0000
     20341+++ vim74/runtime/doc/insert.txt        2014-07-21 23:33:14.403533110 +0000
     20342@@ -1,4 +1,4 @@
     20343-*insert.txt*    For Vim version 7.4.  Last change: 2013 Jul 12
     20344+*insert.txt*    For Vim version 7.4.  Last change: 2014 Jul 06
     20345 
     20346 
     20347                  VIM REFERENCE MANUAL    by Bram Moolenaar
     20348@@ -1302,7 +1302,7 @@
     20349 XHTML                                                  *ft-xhtml-omni*
     20350 
     20351 CTRL-X CTRL-O provides completion of various elements of (X)HTML files.  It is
     20352-designed to support writing of XHTML 1.0 Strict files but will also works for
     20353+designed to support writing of XHTML 1.0 Strict files but will also work for
     20354 other versions of HTML. Features:
     20355 
     20356 - after "<" complete tag name depending on context (no div suggestion inside
     20357diff -Naur vim74.orig/runtime/doc/intro.txt vim74/runtime/doc/intro.txt
     20358--- vim74.orig/runtime/doc/intro.txt    2013-08-10 11:24:56.000000000 +0000
     20359+++ vim74/runtime/doc/intro.txt 2014-07-21 23:33:14.423533058 +0000
     20360@@ -1,4 +1,4 @@
     20361-*intro.txt*     For Vim version 7.4.  Last change: 2013 Jun 17
     20362+*intro.txt*     For Vim version 7.4.  Last change: 2014 May 24
     20363 
     20364 
     20365                  VIM REFERENCE MANUAL    by Bram Moolenaar
     20366@@ -136,9 +136,10 @@
     20367 Bug reports:                           *bugs* *bug-reports* *bugreport.vim*
     20368 
     20369 Send bug reports to: Vim Developers <vim_dev@vim.org>
     20370-This is a maillist, many people will see the message.  If you don't want that,
     20371-e.g. because it is a security issue, send it to <bugs@vim.org>, this only goes
     20372-to the Vim maintainer (that's Bram).
     20373+This is a maillist, you need to become a member first and many people will see
     20374+the message.  If you don't want that, e.g. because it is a security issue,
     20375+send it to <bugs@vim.org>, this only goes to the Vim maintainer (that's Bram).
     20376+
     20377 Please be brief; all the time that is spent on answering mail is subtracted
     20378 from the time that is spent on improving Vim!  Always give a reproducible
     20379 example and try to find out which settings or other things influence the
    2003220380diff -Naur vim74.orig/runtime/doc/map.txt vim74/runtime/doc/map.txt
    2003320381--- vim74.orig/runtime/doc/map.txt      2013-08-10 11:24:56.000000000 +0000
    20034 +++ vim74/runtime/doc/map.txt   2014-06-01 00:42:51.837537093 +0000
     20382+++ vim74/runtime/doc/map.txt   2014-07-21 23:33:14.446866330 +0000
    2003520383@@ -1,4 +1,4 @@
    2003620384-*map.txt*       For Vim version 7.4.  Last change: 2013 Aug 03
    20037 +*map.txt*       For Vim version 7.4.  Last change: 2014 May 10
     20385+*map.txt*       For Vim version 7.4.  Last change: 2014 Jun 02
    2003820386 
    2003920387 
    2004020388                  VIM REFERENCE MANUAL    by Bram Moolenaar
     20389@@ -60,17 +60,17 @@
     20390                        {rhs}, is then further scanned for mappings.  This
     20391                        allows for nested and recursive use of mappings.
     20392 
     20393-
     20394-:no[remap]  {lhs} {rhs}                |mapmode-nvo|           *:no*  *:noremap*
     20395-:nn[oremap] {lhs} {rhs}                |mapmode-n|             *:nn*  *:nnoremap*
     20396-:vn[oremap] {lhs} {rhs}                |mapmode-v|             *:vn*  *:vnoremap*
     20397-:xn[oremap] {lhs} {rhs}                |mapmode-x|             *:xn*  *:xnoremap*
     20398-:snor[emap] {lhs} {rhs}                |mapmode-s|             *:snor* *:snoremap*
     20399-:ono[remap] {lhs} {rhs}                |mapmode-o|             *:ono* *:onoremap*
     20400-:no[remap]! {lhs} {rhs}                |mapmode-ic|            *:no!* *:noremap!*
     20401-:ino[remap] {lhs} {rhs}                |mapmode-i|             *:ino* *:inoremap*
     20402-:ln[oremap] {lhs} {rhs}                |mapmode-l|             *:ln*  *:lnoremap*
     20403-:cno[remap] {lhs} {rhs}                |mapmode-c|             *:cno* *:cnoremap*
     20404+                                               *:nore* *:norem*
     20405+:no[remap]  {lhs} {rhs}                |mapmode-nvo|   *:no*  *:noremap* *:nor*
     20406+:nn[oremap] {lhs} {rhs}                |mapmode-n|     *:nn*  *:nnoremap*
     20407+:vn[oremap] {lhs} {rhs}                |mapmode-v|     *:vn*  *:vnoremap*
     20408+:xn[oremap] {lhs} {rhs}                |mapmode-x|     *:xn*  *:xnoremap*
     20409+:snor[emap] {lhs} {rhs}                |mapmode-s|     *:snor* *:snoremap*
     20410+:ono[remap] {lhs} {rhs}                |mapmode-o|     *:ono* *:onoremap*
     20411+:no[remap]! {lhs} {rhs}                |mapmode-ic|    *:no!* *:noremap!*
     20412+:ino[remap] {lhs} {rhs}                |mapmode-i|     *:ino* *:inoremap*
     20413+:ln[oremap] {lhs} {rhs}                |mapmode-l|     *:ln*  *:lnoremap*
     20414+:cno[remap] {lhs} {rhs}                |mapmode-c|     *:cno* *:cnoremap*
     20415                        Map the key sequence {lhs} to {rhs} for the modes
     20416                        where the map command applies.  Disallow mapping of
     20417                        {rhs}, to avoid nested and recursive mappings.  Often
    2004120418@@ -306,9 +306,21 @@
    2004220419 to type a count with a zero.
     
    2005620433+:lmap  :lnoremap :lunmap    Insert, Command-line, Lang-Arg
    2005720434+:cmap  :cnoremap :cunmap    Command-line
     20435+
    2005820436 
    2005920437-    commands:                                modes: ~
    20060 +
    2006120438+    COMMANDS                                 MODES ~
    2006220439                                       Normal  Visual+Select  Operator-pending ~
     
    2009920476 To avoid mapping of the characters you type in insert or Command-line mode,
    2010020477 type a CTRL-V first.  The mapping in Insert mode is disabled if the 'paste'
    20101 @@ -1359,6 +1371,8 @@
     20478@@ -816,12 +828,10 @@
     20479          let &selection = "inclusive"
     20480          let reg_save = @@
     20481 
     20482-         if a:0  " Invoked from Visual mode, use '< and '> marks.
     20483-           silent exe "normal! `<" . a:type . "`>y"
     20484+         if a:0  " Invoked from Visual mode, use gv command.
     20485+           silent exe "normal! gvy"
     20486          elseif a:type == 'line'
     20487            silent exe "normal! '[V']y"
     20488-         elseif a:type == 'block'
     20489-           silent exe "normal! `[\<C-V>`]y"
     20490          else
     20491            silent exe "normal! `[v`]y"
     20492          endif
     20493@@ -1359,6 +1369,8 @@
    2010220494 In the cases of the -count and -register attributes, if the optional argument
    2010320495 is supplied, it is removed from the argument list and is available to the
     
    2011020502diff -Naur vim74.orig/runtime/doc/motion.txt vim74/runtime/doc/motion.txt
    2011120503--- vim74.orig/runtime/doc/motion.txt   2013-08-10 11:24:57.000000000 +0000
    20112 +++ vim74/runtime/doc/motion.txt        2014-06-01 00:42:51.920870214 +0000
     20504+++ vim74/runtime/doc/motion.txt        2014-07-21 23:33:14.526866121 +0000
    2011320505@@ -1,4 +1,4 @@
    2011420506-*motion.txt*    For Vim version 7.4.  Last change: 2013 Jul 17
     
    2012820520diff -Naur vim74.orig/runtime/doc/options.txt vim74/runtime/doc/options.txt
    2012920521--- vim74.orig/runtime/doc/options.txt  2013-08-10 11:24:57.000000000 +0000
    20130 +++ vim74/runtime/doc/options.txt       2014-06-01 00:42:51.970870087 +0000
     20522+++ vim74/runtime/doc/options.txt       2014-07-21 23:33:14.600199263 +0000
    2013120523@@ -1,4 +1,4 @@
    2013220524-*options.txt*  For Vim version 7.4.  Last change: 2013 Jul 09
    20133 +*options.txt*  For Vim version 7.4.  Last change: 2014 May 13
     20525+*options.txt*  For Vim version 7.4.  Last change: 2014 Jun 26
    2013420526 
    2013520527 
     
    2014420536                        global
    2014520537                        {not in Vi}
    20146 @@ -1884,8 +1884,8 @@
     20538@@ -1200,6 +1200,38 @@
     20539        break if 'linebreak' is on.  Only works for ASCII and also for 8-bit
     20540        characters when 'encoding' is an 8-bit encoding.
     20541 
     20542+                                               *'breakindent'* *'bri'*
     20543+'breakindent' 'bri'    boolean (default off)
     20544+                       local to window
     20545+                       {not in Vi}
     20546+                       {not available when compiled without the |+linebreak|
     20547+                       feature}
     20548+       Every wrapped line will continue visually indented (same amount of
     20549+       space as the beginning of that line), thus preserving horizontal blocks
     20550+       of text.
     20551+
     20552+                                               *'breakindentopt'* *'briopt'*
     20553+'breakindentopt' 'briopt' string (default empty)
     20554+                       local to window
     20555+                       {not in Vi}
     20556+                       {not available when compiled without the |+linebreak|
     20557+                       feature}
     20558+       Settings for 'breakindent'. It can consist of the following optional
     20559+       items and must be separated by a comma:
     20560+               min:{n}     Minimum text width that will be kept after
     20561+                           applying 'breakindent', even if the resulting
     20562+                           text should normally be narrower. This prevents
     20563+                           text indented almost to the right window border
     20564+                           occupying lot of vertical space when broken.
     20565+               shift:{n}   After applying 'breakindent', the wrapped line's
     20566+                           beginning will be shifted by the given number of
     20567+                           characters.  It permits dynamic French paragraph
     20568+                           indentation (negative) or emphasizing the line
     20569+                           continuation (positive).
     20570+               sbr         Display the 'showbreak' value before applying the
     20571+                           additional indent.
     20572+       The default value for min is 20 and shift is 0.
     20573+
     20574                                                *'browsedir'* *'bsdir'*
     20575 'browsedir' 'bsdir'    string  (default: "last")
     20576                        global
     20577@@ -1884,8 +1916,8 @@
    2014720578                        global
    2014820579                        {not in Vi}
     
    2015520586        Commas can be added for readability.
    2015620587        To avoid problems with flags that are added in the future, use the
    20157 @@ -2477,7 +2477,7 @@
     20588@@ -2477,7 +2509,7 @@
    2015820589 
    2015920590                                                *'directory'* *'dir'*
     
    2016420595                        global
    2016520596        List of directory names for the swap file, separated with commas.
    20166 @@ -4492,6 +4492,8 @@
     20597@@ -3920,12 +3952,13 @@
     20598        NOTE: This option is reset when 'compatible' is set.
     20599 
     20600                                                *'history'* *'hi'*
     20601-'history' 'hi'         number  (Vim default: 20, Vi default: 0)
     20602+'history' 'hi'         number  (Vim default: 50, Vi default: 0)
     20603                        global
     20604                        {not in Vi}
     20605        A history of ":" commands, and a history of previous search patterns
     20606-       are remembered.  This option decides how many entries may be stored in
     20607+       is remembered.  This option decides how many entries may be stored in
     20608        each of these histories (see |cmdline-editing|).
     20609+       The maximum value is 10000.
     20610        NOTE: This option is set to the Vi default value when 'compatible' is
     20611        set and to the Vim default value when 'compatible' is reset.
     20612 
     20613@@ -4492,6 +4525,8 @@
    2016720614        be able to execute Normal mode commands.
    2016820615        This is the opposite of the 'keymap' option, where characters are
     
    2017420621            :set langmap=ΑA,ΒB,ΚC,ΔD,ΕE,ΊF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,΀T,ΘU,ΩV,WW,ΧX,Î¥Y,ΖZ,αa,βb,ψc,ÎŽd,εe,φf,γg,ηh,ιi,Οj,κk,λl,ÎŒm,Îœn,οo,πp,qq,ρr,σs,τt,Ξu,ωv,ςw,χx,Ï
    2017520622y,ζz
    20176 @@ -4629,7 +4631,7 @@
     20623@@ -4572,12 +4607,13 @@
     20624                        {not in Vi}
     20625                        {not available when compiled without the |+linebreak|
     20626                        feature}
     20627-       If on Vim will wrap long lines at a character in 'breakat' rather
     20628+       If on, Vim will wrap long lines at a character in 'breakat' rather
     20629        than at the last character that fits on the screen.  Unlike
     20630        'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file,
     20631-       it only affects the way the file is displayed, not its contents.  The
     20632-       value of 'showbreak' is used to put in front of wrapped lines.
     20633-       This option is not used when the 'wrap' option is off or 'list' is on.
     20634+       it only affects the way the file is displayed, not its contents.
     20635+       If 'breakindent' is set, line is visually indented. Then, the value
     20636+       of 'showbreak' is used to put in front of wrapped lines. This option
     20637+       is not used when the 'wrap' option is off.
     20638        Note that <Tab> characters after an <EOL> are mostly not displayed
     20639        with the right amount of white space.
     20640 
     20641@@ -4629,7 +4665,7 @@
    2017720642 
    2017820643                                                *'lispwords'* *'lw'*
     
    2018320648                        {not available when compiled without the |+lispindent|
    2018420649                        feature}
    20185 @@ -4757,8 +4759,9 @@
     20650@@ -4757,8 +4793,9 @@
    2018620651                        global or local to buffer |global-local|
    2018720652                        {not in Vi}
     
    2019520660        about including spaces and backslashes.
    2019620661        Note that a '|' must be escaped twice: once for ":set" and once for
    20197 @@ -6251,6 +6254,9 @@
     20662@@ -6251,6 +6288,9 @@
    2019820663          A     don't give the "ATTENTION" message when an existing swap file
    2019920664                is found.
     
    2020520670        This gives you the opportunity to avoid that a change between buffers
    2020620671        requires you to hit <Enter>, but still gives as useful a message as
    20207 @@ -6555,6 +6561,9 @@
     20672@@ -6555,6 +6595,9 @@
    2020820673        region by listing them: "en_us,en_ca" supports both US and Canadian
    2020920674        English, but not words specific for Australia, New Zealand or Great
     
    2021520680        As a special case the name of a .spl file can be given as-is.  The
    2021620681        first "_xx" in the name is removed and used as the region name
    20217 @@ -6615,6 +6624,10 @@
     20682@@ -6615,6 +6658,10 @@
    2021820683                        top of the suggestion list with the internal methods.
    2021920684                        Lines without a slash are ignored, use this for
     
    2022620691 
    2022720692        expr:{expr}     Evaluate expression {expr}.  Use a function to avoid
    20228 @@ -6878,6 +6891,8 @@
     20693@@ -6878,6 +6925,8 @@
    2022920694        immediately deleted.  When 'swapfile' is set, and 'updatecount' is
    2023020695        non-zero, a swap file is immediately created.
     
    2023520700        This option is used together with 'bufhidden' and 'buftype' to
    2023620701        specify special kinds of buffers.   See |special-buffers|.
    20237 @@ -7498,8 +7513,8 @@
     20702@@ -7498,8 +7547,8 @@
    2023820703                                "s"  = button state
    2023920704                                "c"  = column plus 33
     
    2024620711                        mouse position while the mouse is dragged.  This works
    2024720712                        much faster and more precise.  Your xterm must at
    20248 @@ -7521,29 +7536,35 @@
     20713@@ -7521,29 +7570,35 @@
    2024920714           pterm        QNX pterm mouse handling.
    2025020715                                                        *urxvt-mouse*
     
    2029620761 <
    2029720762                                                *'ttyscroll'* *'tsl'*
    20298 @@ -7594,7 +7615,7 @@
     20763@@ -7594,7 +7649,7 @@
    2029920764                                                *'undolevels'* *'ul'*
    2030020765 'undolevels' 'ul'      number  (default 100, 1000 for Unix, VMS,
     
    2030520770        Maximum number of changes that can be undone.  Since undo information
    2030620771        is kept in memory, higher numbers will cause more memory to be used
    20307 @@ -7605,8 +7626,9 @@
     20772@@ -7605,8 +7660,9 @@
    2030820773 <      But you can also get Vi compatibility by including the 'u' flag in
    2030920774        'cpoptions', and still be able to use CTRL-R to repeat undo.
     
    2031920784diff -Naur vim74.orig/runtime/doc/os_vms.txt vim74/runtime/doc/os_vms.txt
    2032020785--- vim74.orig/runtime/doc/os_vms.txt   2013-08-10 11:24:59.000000000 +0000
    20321 +++ vim74/runtime/doc/os_vms.txt        2014-06-01 00:42:52.130869680 +0000
     20786+++ vim74/runtime/doc/os_vms.txt        2014-07-21 23:33:14.766865495 +0000
    2032220787@@ -1,4 +1,4 @@
    2032320788-*os_vms.txt*    For Vim version 7.4.  Last change: 2011 Aug 14
     
    2036020825diff -Naur vim74.orig/runtime/doc/os_win32.txt vim74/runtime/doc/os_win32.txt
    2036120826--- vim74.orig/runtime/doc/os_win32.txt 2013-08-10 11:24:59.000000000 +0000
    20362 +++ vim74/runtime/doc/os_win32.txt      2014-06-01 00:42:52.144202979 +0000
     20827+++ vim74/runtime/doc/os_win32.txt      2014-07-21 23:33:14.783532118 +0000
    2036320828@@ -93,7 +93,7 @@
    2036420829 $PATH                                                  *win32-PATH*
     
    2037220837diff -Naur vim74.orig/runtime/doc/pattern.txt vim74/runtime/doc/pattern.txt
    2037320838--- vim74.orig/runtime/doc/pattern.txt  2013-08-10 11:24:59.000000000 +0000
    20374 +++ vim74/runtime/doc/pattern.txt       2014-06-01 00:42:52.164202928 +0000
     20839+++ vim74/runtime/doc/pattern.txt       2014-07-21 23:33:14.803532066 +0000
    2037520840@@ -1,4 +1,4 @@
    2037620841-*pattern.txt*   For Vim version 7.4.  Last change: 2013 Jul 06
    20377 +*pattern.txt*   For Vim version 7.4.  Last change: 2014 May 13
     20842+*pattern.txt*   For Vim version 7.4.  Last change: 2014 May 28
    2037820843 
    2037920844 
     
    2042320888 When a composing character appears at the start of the pattern of after an
    2042420889 item that doesn't include the composing character, a match is found at any
     20890@@ -1325,7 +1332,7 @@
     20891                patterns defined by both |matchadd()| and |:match|.
     20892 
     20893                Highlighting matches using |:match| are limited to three
     20894-               matches (aside from |:match|, |:2match| and |:3match|are
     20895+               matches (aside from |:match|, |:2match| and |:3match| are
     20896                available). |matchadd()| does not have this limitation and in
     20897                addition makes it possible to prioritize matches.
     20898 
    2042520899diff -Naur vim74.orig/runtime/doc/pi_getscript.txt vim74/runtime/doc/pi_getscript.txt
    2042620900--- vim74.orig/runtime/doc/pi_getscript.txt     2013-08-10 11:24:59.000000000 +0000
    20427 +++ vim74/runtime/doc/pi_getscript.txt  2014-06-01 00:42:52.197536177 +0000
     20901+++ vim74/runtime/doc/pi_getscript.txt  2014-07-21 23:33:14.836865312 +0000
    2042820902@@ -1,4 +1,4 @@
    2042920903-*pi_getscript.txt*  For Vim version 7.4.  Last change: 2012 Apr 07
     
    2044520919diff -Naur vim74.orig/runtime/doc/pi_netrw.txt vim74/runtime/doc/pi_netrw.txt
    2044620920--- vim74.orig/runtime/doc/pi_netrw.txt 2013-08-10 11:24:59.000000000 +0000
    20447 +++ vim74/runtime/doc/pi_netrw.txt      2014-06-01 00:42:52.234202750 +0000
     20921+++ vim74/runtime/doc/pi_netrw.txt      2014-07-21 23:33:14.936865051 +0000
    2044820922@@ -1,4 +1,4 @@
    2044920923-*pi_netrw.txt*  For Vim version 7.4.  Last change: 2013 May 18
     
    2159822072diff -Naur vim74.orig/runtime/doc/pi_vimball.txt vim74/runtime/doc/pi_vimball.txt
    2159922073--- vim74.orig/runtime/doc/pi_vimball.txt       2013-08-10 11:25:00.000000000 +0000
    21600 +++ vim74/runtime/doc/pi_vimball.txt    2014-06-01 00:42:52.307535896 +0000
     22074+++ vim74/runtime/doc/pi_vimball.txt    2014-07-21 23:33:14.990198246 +0000
    2160122075@@ -188,7 +188,7 @@
    2160222076                          * Changed silent! to sil! (shorter)
     
    2161022084diff -Naur vim74.orig/runtime/doc/quickfix.txt vim74/runtime/doc/quickfix.txt
    2161122085--- vim74.orig/runtime/doc/quickfix.txt 2013-08-10 11:25:00.000000000 +0000
    21612 +++ vim74/runtime/doc/quickfix.txt      2014-06-01 00:42:52.350869119 +0000
     22086+++ vim74/runtime/doc/quickfix.txt      2014-07-21 23:33:15.036864790 +0000
    2161322087@@ -1,4 +1,4 @@
    2161422088-*quickfix.txt*  For Vim version 7.4.  Last change: 2013 Aug 03
     
    2169022164 You need to put the following in "vim-javac-filter" somewhere in your path
    2169122165 (e.g., in ~/bin) and make it executable: >
     22166diff -Naur vim74.orig/runtime/doc/quickref.txt vim74/runtime/doc/quickref.txt
     22167--- vim74.orig/runtime/doc/quickref.txt 2013-08-10 11:25:00.000000000 +0000
     22168+++ vim74/runtime/doc/quickref.txt      2014-07-21 23:33:15.056864738 +0000
     22169@@ -1,4 +1,4 @@
     22170-*quickref.txt*  For Vim version 7.4.  Last change: 2013 Jun 29
     22171+*quickref.txt*  For Vim version 7.4.  Last change: 2014 Jun 25
     22172 
     22173 
     22174                  VIM REFERENCE MANUAL    by Bram Moolenaar
     22175@@ -624,6 +624,8 @@
     22176 'bioskey'        'biosk'   MS-DOS: use bios calls for input characters
     22177 'bomb'                     prepend a Byte Order Mark to the file
     22178 'breakat'        'brk'     characters that may cause a line break
     22179+'breakindent'    'bri'     wrapped line repeats indent
     22180+'breakindentopt'  'briopt'  settings for 'breakindent'
     22181 'browsedir'      'bsdir'   which directory to start browsing in
     22182 'bufhidden'      'bh'      what to do when buffer is no longer in window
     22183 'buflisted'      'bl'      whether the buffer shows up in the buffer list
    2169222184diff -Naur vim74.orig/runtime/doc/recover.txt vim74/runtime/doc/recover.txt
    2169322185--- vim74.orig/runtime/doc/recover.txt  2013-08-10 11:25:00.000000000 +0000
    21694 +++ vim74/runtime/doc/recover.txt       2014-06-01 00:42:52.410868967 +0000
     22186+++ vim74/runtime/doc/recover.txt       2014-07-21 23:33:15.096864634 +0000
    2169522187@@ -1,4 +1,4 @@
    2169622188-*recover.txt*   For Vim version 7.4.  Last change: 2010 Jul 20
     
    2171722209diff -Naur vim74.orig/runtime/doc/repeat.txt vim74/runtime/doc/repeat.txt
    2171822210--- vim74.orig/runtime/doc/repeat.txt   2013-08-10 11:25:00.000000000 +0000
    21719 +++ vim74/runtime/doc/repeat.txt        2014-06-01 00:42:52.434202241 +0000
     22211+++ vim74/runtime/doc/repeat.txt        2014-07-21 23:33:15.120197906 +0000
    2172022212@@ -1,4 +1,4 @@
    2172122213-*repeat.txt*    For Vim version 7.4.  Last change: 2013 Jul 25
     
    2177122263diff -Naur vim74.orig/runtime/doc/sign.txt vim74/runtime/doc/sign.txt
    2177222264--- vim74.orig/runtime/doc/sign.txt     2013-08-10 11:25:01.000000000 +0000
    21773 +++ vim74/runtime/doc/sign.txt  2014-06-01 00:42:52.494202088 +0000
     22265+++ vim74/runtime/doc/sign.txt  2014-07-21 23:33:15.176864425 +0000
    2177422266@@ -1,4 +1,4 @@
    2177522267-*sign.txt*      For Vim version 7.4.  Last change: 2012 Jul 10
     
    2179722289diff -Naur vim74.orig/runtime/doc/spell.txt vim74/runtime/doc/spell.txt
    2179822290--- vim74.orig/runtime/doc/spell.txt    2013-08-10 11:25:01.000000000 +0000
    21799 +++ vim74/runtime/doc/spell.txt 2014-06-01 00:42:52.504202062 +0000
     22291+++ vim74/runtime/doc/spell.txt 2014-07-21 23:33:15.190197724 +0000
    2180022292@@ -1,4 +1,4 @@
    2180122293-*spell.txt*    For Vim version 7.4.  Last change: 2013 Jul 17
    21802 +*spell.txt*    For Vim version 7.4.  Last change: 2013 Nov 12
     22294+*spell.txt*    For Vim version 7.4.  Last change: 2014 Jul 02
    2180322295 
    2180422296 
     
    2181822310 SPELL FILES                                            *spell-load*
    2181922311 
     22312@@ -932,9 +939,10 @@
     22313 
     22314 If you get an E763 warning that the word tables differ you need to update your
     22315 ".spl" spell files.  If you downloaded the files, get the latest version of
     22316-all spell files you use.  Otherwise generate the .spl file again with
     22317-|:mkspell|.  If you still get errors check the FOL, LOW and UPP lines in the
     22318-used .aff files.
     22319+all spell files you use.  If you are only using one, e.g., German, then also
     22320+download the recent English spell files.  Otherwise generate the .spl file
     22321+again with |:mkspell|.  If you still get errors check the FOL, LOW and UPP
     22322+lines in the used .aff files.
     22323 
     22324 The XX.ascii.spl spell file generated with the "-ascii" argument will not
     22325 contain the table with characters, so that it can be combine with spell files
    2182022326diff -Naur vim74.orig/runtime/doc/starting.txt vim74/runtime/doc/starting.txt
    2182122327--- vim74.orig/runtime/doc/starting.txt 2013-08-10 11:25:01.000000000 +0000
    21822 +++ vim74/runtime/doc/starting.txt      2014-06-01 00:42:52.540868636 +0000
     22328+++ vim74/runtime/doc/starting.txt      2014-07-21 23:33:15.223530970 +0000
    2182322329@@ -1,4 +1,4 @@
    2182422330-*starting.txt*  For Vim version 7.4.  Last change: 2013 Jul 20
    21825 +*starting.txt*  For Vim version 7.4.  Last change: 2014 Mar 29
     22331+*starting.txt*  For Vim version 7.4.  Last change: 2014 Jul 09
    2182622332 
    2182722333 
    2182822334                  VIM REFERENCE MANUAL    by Bram Moolenaar
    21829 @@ -1276,8 +1276,10 @@
     22335@@ -167,7 +167,10 @@
     22336                                                        *-+/*
     22337 +/{pat}                The cursor will be positioned on the first line containing
     22338                "pat" in the first file being edited (see |pattern| for the
     22339-               available search patterns).
     22340+               available search patterns).  The search starts at the cursor
     22341+               position, which can be the first line or the cursor position
     22342+               last used from |viminfo|. To force a search from the first
     22343+               line use "+1 +/pat".
     22344 
     22345 +{command}                                             *-+c* *-c*
     22346 -c {command}   {command} will be executed after the first file has been
     22347@@ -1276,8 +1279,10 @@
    2183022348                        When [!] is included an existing file is overwritten.
    2183122349                        When [file] is omitted or is a number from 1 to 9, a
     
    2184022358                        |:loadview| to load this view again.
    2184122359                        When [file] is the name of a file ('viewdir' is not
     22360@@ -1501,7 +1506,7 @@
     22361                        already set (registers, marks, |v:oldfiles|, etc.)
     22362                        will be overwritten   {not in Vi}
     22363 
     22364-                                       *:wv* *:wviminfo* *E137* *E138* *E574*
     22365+                               *:wv* *:wviminfo* *E137* *E138* *E574* *E886*
     22366 :wv[iminfo][!] [file]  Write to viminfo file [file] (default: see above).
     22367                        The information in the file is first read in to make
     22368                        a merge between old and new info.  When [!] is used,
    2184222369diff -Naur vim74.orig/runtime/doc/syntax.txt vim74/runtime/doc/syntax.txt
    2184322370--- vim74.orig/runtime/doc/syntax.txt   2013-08-10 11:25:01.000000000 +0000
    21844 +++ vim74/runtime/doc/syntax.txt        2014-06-01 00:42:52.604201808 +0000
     22371+++ vim74/runtime/doc/syntax.txt        2014-07-21 23:33:15.276864164 +0000
    2184522372@@ -1,4 +1,4 @@
    2184622373-*syntax.txt*   For Vim version 7.4.  Last change: 2013 Jul 05
    21847 +*syntax.txt*   For Vim version 7.4.  Last change: 2014 Apr 05
     22374+*syntax.txt*   For Vim version 7.4.  Last change: 2014 Jun 27
    2184822375 
    2184922376 
     
    2190422431 
    2190522432 Erlang is a functional programming language developed by Ericsson.  Files with
     22433@@ -1647,7 +1688,7 @@
     22434 HTML comments are rather special (see an HTML reference document for the
     22435 details), and the syntax coloring scheme will highlight all errors.
     22436 However, if you prefer to use the wrong style (starts with <!-- and
     22437-ends with --!>) you can define >
     22438+ends with -->) you can define >
     22439        :let html_wrong_comments=1
     22440 
     22441 JavaScript and Visual Basic embedded inside HTML documents are highlighted as
    2190622442@@ -1918,7 +1959,7 @@
    2190722443 There are several implementations for LPC, we intend to support most widely
     
    2191322449 
    2191422450        :let lpc_pre_v22 = 1
     22451@@ -2238,7 +2279,7 @@
     22452 
     22453        :let perl_include_pod = 0
     22454 
     22455-The reduce the complexity of parsing (and increase performance) you can switch
     22456+To reduce the complexity of parsing (and increase performance) you can switch
     22457 off two elements in the parsing of variable names and contents. >
     22458 
     22459 To handle package references in variable and function names not differently
    2191522460@@ -3156,18 +3197,16 @@
    2191622461 embedded script highlighting they wish to have. >
     
    2194422489diff -Naur vim74.orig/runtime/doc/tags vim74/runtime/doc/tags
    2194522490--- vim74.orig/runtime/doc/tags 2013-08-10 12:23:34.000000000 +0000
    21946 +++ vim74/runtime/doc/tags      2014-06-01 00:42:52.630868407 +0000
     22491+++ vim74/runtime/doc/tags      2014-07-21 23:33:15.336864008 +0000
    2194722492@@ -12,6 +12,7 @@
    2194822493 %      motion.txt      /*%*
     
    2195322498 %:gs   cmdline.txt     /*%:gs*
    2195422499 %:h    cmdline.txt     /*%:h*
    21955 @@ -1140,6 +1141,7 @@
     22500@@ -90,6 +91,10 @@
     22501 'bl'   options.txt     /*'bl'*
     22502 'bomb' options.txt     /*'bomb'*
     22503 'breakat'      options.txt     /*'breakat'*
     22504+'breakindent'  options.txt     /*'breakindent'*
     22505+'breakindentopt'       options.txt     /*'breakindentopt'*
     22506+'bri'  options.txt     /*'bri'*
     22507+'briopt'       options.txt     /*'briopt'*
     22508 'brk'  options.txt     /*'brk'*
     22509 'browsedir'    options.txt     /*'browsedir'*
     22510 'bs'   options.txt     /*'bs'*
     22511@@ -1140,6 +1145,7 @@
    2195622512 +GUI_Photon    various.txt     /*+GUI_Photon*
    2195722513 +GUI_neXtaw    various.txt     /*+GUI_neXtaw*
     
    2196122517 +autocmd       various.txt     /*+autocmd*
    2196222518 +balloon_eval  various.txt     /*+balloon_eval*
    21963 @@ -1199,6 +1201,7 @@
     22519@@ -1199,6 +1205,7 @@
    2196422520 +mouse various.txt     /*+mouse*
    2196522521 +mouse_dec     various.txt     /*+mouse_dec*
     
    2196922525 +mouse_pterm   various.txt     /*+mouse_pterm*
    2197022526 +mouse_sgr     various.txt     /*+mouse_sgr*
    21971 @@ -1262,6 +1265,7 @@
     22527@@ -1262,6 +1269,7 @@
    2197222528 +writebackup   various.txt     /*+writebackup*
    2197322529 +xfontset      various.txt     /*+xfontset*
     
    2197722533 +xsmp  various.txt     /*+xsmp*
    2197822534 +xsmp_interact various.txt     /*+xsmp_interact*
    21979 @@ -1412,6 +1416,7 @@
     22535@@ -1412,6 +1420,7 @@
    2198022536 /\%>c  pattern.txt     /*\/\\%>c*
    2198122537 /\%>l  pattern.txt     /*\/\\%>l*
     
    2198522541 /\%V   pattern.txt     /*\/\\%V*
    2198622542 /\%[]  pattern.txt     /*\/\\%[]*
    21987 @@ -1786,6 +1791,7 @@
     22543@@ -1786,6 +1795,7 @@
    2198822544 :3match        pattern.txt     /*:3match*
    2198922545 ::.    cmdline.txt     /*::.*
     
    2199322549 ::gs   cmdline.txt     /*::gs*
    2199422550 ::h    cmdline.txt     /*::h*
    21995 @@ -1825,6 +1831,7 @@
     22551@@ -1825,6 +1835,7 @@
    2199622552 :GnatPretty    ft_ada.txt      /*:GnatPretty*
    2199722553 :GnatTags      ft_ada.txt      /*:GnatTags*
     
    2200122557 :MkVimball     pi_vimball.txt  /*:MkVimball*
    2200222558 :N     editing.txt     /*:N*
    22003 @@ -1836,6 +1843,7 @@
     22559@@ -1836,6 +1847,7 @@
    2200422560 :Nread pi_netrw.txt    /*:Nread*
    2200522561 :Ns    pi_netrw.txt    /*:Ns*
     
    2200922565 :Nwrite        pi_netrw.txt    /*:Nwrite*
    2201022566 :P     various.txt     /*:P*
    22011 @@ -1967,8 +1975,8 @@
     22567@@ -1967,8 +1979,8 @@
    2201222568 :cabc  map.txt /*:cabc*
    2201322569 :cabclear      map.txt /*:cabclear*
     
    2201922575 :caddf quickfix.txt    /*:caddf*
    2202022576 :caddfile      quickfix.txt    /*:caddfile*
    22021 @@ -2212,6 +2220,9 @@
     22577@@ -2212,6 +2224,9 @@
    2202222578 :foldopen      fold.txt        /*:foldopen*
    2202322579 :for   eval.txt        /*:for*
     
    2202922585 :function-verbose      eval.txt        /*:function-verbose*
    2203022586 :g     repeat.txt      /*:g*
    22031 @@ -2298,6 +2309,8 @@
     22587@@ -2298,6 +2313,8 @@
    2203222588 :keepj motion.txt      /*:keepj*
    2203322589 :keepjumps     motion.txt      /*:keepjumps*
     
    2203822594 :lN    quickfix.txt    /*:lN*
    2203922595 :lNext quickfix.txt    /*:lNext*
    22040 @@ -2489,6 +2502,7 @@
     22596@@ -2489,6 +2506,7 @@
    2204122597 :nbkey netbeans.txt    /*:nbkey*
    2204222598 :nbstart       netbeans.txt    /*:nbstart*
     
    2204622602 :next  editing.txt     /*:next*
    2204722603 :next_f        editing.txt     /*:next_f*
    22048 @@ -2518,6 +2532,8 @@
     22604@@ -2509,8 +2527,11 @@
     22605 :noautocmd     autocmd.txt     /*:noautocmd*
     22606 :noh   pattern.txt     /*:noh*
     22607 :nohlsearch    pattern.txt     /*:nohlsearch*
     22608+:nor   map.txt /*:nor*
     22609+:nore  map.txt /*:nore*
     22610 :norea map.txt /*:norea*
     22611 :noreabbrev    map.txt /*:noreabbrev*
     22612+:norem map.txt /*:norem*
     22613 :noremap       map.txt /*:noremap*
     22614 :noremap!      map.txt /*:noremap!*
     22615 :noreme        gui.txt /*:noreme*
     22616@@ -2518,6 +2539,8 @@
    2204922617 :norm  various.txt     /*:norm*
    2205022618 :normal        various.txt     /*:normal*
     
    2205522623 :number        various.txt     /*:number*
    2205622624 :nun   map.txt /*:nun*
    22057 @@ -2738,6 +2754,7 @@
     22625@@ -2738,6 +2761,7 @@
    2205822626 :sign-jump     sign.txt        /*:sign-jump*
    2205922627 :sign-list     sign.txt        /*:sign-list*
     
    2206322631 :sign-unplace  sign.txt        /*:sign-unplace*
    2206422632 :sil   various.txt     /*:sil*
    22065 @@ -4294,6 +4311,11 @@
     22633@@ -4294,6 +4318,12 @@
    2206622634 E879   syntax.txt      /*E879*
    2206722635 E88    windows.txt     /*E88*
     
    2207222640+E884   eval.txt        /*E884*
    2207322641+E885   sign.txt        /*E885*
     22642+E886   starting.txt    /*E886*
    2207422643 E89    message.txt     /*E89*
    2207522644 E90    message.txt     /*E90*
    2207622645 E91    options.txt     /*E91*
    22077 @@ -4423,6 +4445,13 @@
     22646@@ -4423,6 +4453,13 @@
    2207822647 OverTheSpot    mbyte.txt       /*OverTheSpot*
    2207922648 P      change.txt      /*P*
     
    2208922658 Perl   if_perl.txt     /*Perl*
    2209022659 Posix  intro.txt       /*Posix*
    22091 @@ -4900,6 +4929,7 @@
     22660@@ -4766,6 +4803,7 @@
     22661 arglist        editing.txt     /*arglist*
     22662 arglist-position       editing.txt     /*arglist-position*
     22663 arglist-quit   usr_07.txt      /*arglist-quit*
     22664+arglistid()    eval.txt        /*arglistid()*
     22665 argument-list  editing.txt     /*argument-list*
     22666 argv() eval.txt        /*argv()*
     22667 as     motion.txt      /*as*
     22668@@ -4900,6 +4938,7 @@
    2209222669 byte-count     editing.txt     /*byte-count*
    2209322670 byte2line()    eval.txt        /*byte2line()*
     
    2209722674 c      change.txt      /*c*
    2209822675 c.vim  syntax.txt      /*c.vim*
    22099 @@ -5350,6 +5380,7 @@
     22676@@ -5350,6 +5389,7 @@
    2210022677 dialog gui_w32.txt     /*dialog*
    2210122678 dialogs-added  version5.txt    /*dialogs-added*
     
    2210522682 dict-identity  eval.txt        /*dict-identity*
    2210622683 dict-modification      eval.txt        /*dict-modification*
    22107 @@ -5458,6 +5489,8 @@
     22684@@ -5458,6 +5498,8 @@
    2210822685 escape intro.txt       /*escape*
    2210922686 escape()       eval.txt        /*escape()*
     
    2211422691 eval() eval.txt        /*eval()*
    2211522692 eval-examples  eval.txt        /*eval-examples*
    22116 @@ -5492,6 +5525,7 @@
     22693@@ -5492,6 +5534,7 @@
    2211722694 exclusive-linewise     motion.txt      /*exclusive-linewise*
    2211822695 executable()   eval.txt        /*executable()*
     
    2212222699 exists()       eval.txt        /*exists()*
    2212322700 exp()  eval.txt        /*exp()*
    22124 @@ -5708,6 +5742,7 @@
     22701@@ -5708,6 +5751,7 @@
    2212522702 ft-changelog-syntax    syntax.txt      /*ft-changelog-syntax*
    2212622703 ft-chill-syntax        syntax.txt      /*ft-chill-syntax*
     
    2213022707 ft-coldfusion-syntax   syntax.txt      /*ft-coldfusion-syntax*
    2213122708 ft-cpp-syntax  syntax.txt      /*ft-cpp-syntax*
    22132 @@ -5724,6 +5759,7 @@
     22709@@ -5724,6 +5768,7 @@
    2213322710 ft-dtd-syntax  syntax.txt      /*ft-dtd-syntax*
    2213422711 ft-eiffel-syntax       syntax.txt      /*ft-eiffel-syntax*
     
    2213822715 ft-form-syntax syntax.txt      /*ft-form-syntax*
    2213922716 ft-fortran-indent      indent.txt      /*ft-fortran-indent*
    22140 @@ -5876,6 +5912,8 @@
     22717@@ -5876,6 +5921,8 @@
    2214122718 g:ada_with_gnat_project_files  ft_ada.txt      /*g:ada_with_gnat_project_files*
    2214222719 g:ada_withuse_ordinary ft_ada.txt      /*g:ada_withuse_ordinary*
     
    2214722724 g:clojure_fuzzy_indent_blacklist       indent.txt      /*g:clojure_fuzzy_indent_blacklist*
    2214822725 g:clojure_fuzzy_indent_patterns        indent.txt      /*g:clojure_fuzzy_indent_patterns*
    22149 @@ -5924,6 +5962,7 @@
     22726@@ -5924,6 +5971,7 @@
    2215022727 g:html_use_encoding    syntax.txt      /*g:html_use_encoding*
    2215122728 g:html_use_xhtml       syntax.txt      /*g:html_use_xhtml*
     
    2215522732 g:netrw_altv   pi_netrw.txt    /*g:netrw_altv*
    2215622733 g:netrw_banner pi_netrw.txt    /*g:netrw_banner*
    22157 @@ -5944,6 +5983,7 @@
     22734@@ -5944,6 +5992,7 @@
    2215822735 g:netrw_errorlvl       pi_netrw.txt    /*g:netrw_errorlvl*
    2215922736 g:netrw_fastbrowse     pi_netrw.txt    /*g:netrw_fastbrowse*
     
    2216322740 g:netrw_ftp    pi_netrw.txt    /*g:netrw_ftp*
    2216422741 g:netrw_ftp_browse_reject      pi_netrw.txt    /*g:netrw_ftp_browse_reject*
    22165 @@ -5958,6 +5998,7 @@
     22742@@ -5958,6 +6007,7 @@
    2216622743 g:netrw_hide   pi_netrw.txt    /*g:netrw_hide*
    2216722744 g:netrw_home   pi_netrw.txt    /*g:netrw_home*
     
    2217122748 g:netrw_ignorenetrc    pi_netrw.txt    /*g:netrw_ignorenetrc*
    2217222749 g:netrw_keepdir        pi_netrw.txt    /*g:netrw_keepdir*
    22173 @@ -6358,6 +6399,7 @@
     22750@@ -6087,6 +6137,7 @@
     22751 getcmdline()   eval.txt        /*getcmdline()*
     22752 getcmdpos()    eval.txt        /*getcmdpos()*
     22753 getcmdtype()   eval.txt        /*getcmdtype()*
     22754+getcurpos()    eval.txt        /*getcurpos()*
     22755 getcwd()       eval.txt        /*getcwd()*
     22756 getfontname()  eval.txt        /*getfontname()*
     22757 getfperm()     eval.txt        /*getfperm()*
     22758@@ -6358,6 +6409,7 @@
    2217422759 hl-WildMenu    syntax.txt      /*hl-WildMenu*
    2217522760 hlID() eval.txt        /*hlID()*
     
    2217922764 home   intro.txt       /*home*
    2218022765 home-replace   editing.txt     /*home-replace*
    22181 @@ -6669,6 +6711,7 @@
     22766@@ -6669,6 +6721,7 @@
    2218222767 linewise-visual        visual.txt      /*linewise-visual*
    2218322768 lisp.vim       syntax.txt      /*lisp.vim*
     
    2218722772 list-identity  eval.txt        /*list-identity*
    2218822773 list-index     eval.txt        /*list-index*
    22189 @@ -6921,6 +6964,15 @@
     22774@@ -6780,6 +6833,7 @@
     22775 match-highlight        pattern.txt     /*match-highlight*
     22776 match-parens   tips.txt        /*match-parens*
     22777 matchadd()     eval.txt        /*matchadd()*
     22778+matchaddpos()  eval.txt        /*matchaddpos()*
     22779 matcharg()     eval.txt        /*matcharg()*
     22780 matchdelete()  eval.txt        /*matchdelete()*
     22781 matchend()     eval.txt        /*matchend()*
     22782@@ -6921,6 +6975,15 @@
    2219022783 netrw  pi_netrw.txt    /*netrw*
    2219122784 netrw-%        pi_netrw.txt    /*netrw-%*
     
    2220322796 netrw-D        pi_netrw.txt    /*netrw-D*
    2220422797 netrw-O        pi_netrw.txt    /*netrw-O*
    22205 @@ -6978,6 +7030,7 @@
     22798@@ -6978,6 +7041,7 @@
    2220622799 netrw-getftype pi_netrw.txt    /*netrw-getftype*
    2220722800 netrw-gf       pi_netrw.txt    /*netrw-gf*
     
    2221122804 netrw-gx       pi_netrw.txt    /*netrw-gx*
    2221222805 netrw-handler  pi_netrw.txt    /*netrw-handler*
    22213 @@ -6992,6 +7045,7 @@
     22806@@ -6992,6 +7056,7 @@
    2221422807 netrw-internal-variables       pi_netrw.txt    /*netrw-internal-variables*
    2221522808 netrw-intro-browse     pi_netrw.txt    /*netrw-intro-browse*
     
    2221922812 netrw-listbookmark     pi_netrw.txt    /*netrw-listbookmark*
    2222022813 netrw-listhack pi_netrw.txt    /*netrw-listhack*
    22221 @@ -7022,6 +7076,7 @@
     22814@@ -7022,6 +7087,7 @@
    2222222815 netrw-nexplore pi_netrw.txt    /*netrw-nexplore*
    2222322816 netrw-noload   pi_netrw.txt    /*netrw-noload*
     
    2222722820 netrw-o        pi_netrw.txt    /*netrw-o*
    2222822821 netrw-options  pi_netrw.txt    /*netrw-options*
    22229 @@ -7033,6 +7088,7 @@
     22822@@ -7033,6 +7099,7 @@
    2223022823 netrw-p13      pi_netrw.txt    /*netrw-p13*
    2223122824 netrw-p14      pi_netrw.txt    /*netrw-p14*
     
    2223522828 netrw-p3       pi_netrw.txt    /*netrw-p3*
    2223622829 netrw-p4       pi_netrw.txt    /*netrw-p4*
    22237 @@ -7374,6 +7430,7 @@
     22830@@ -7374,6 +7441,7 @@
    2223822831 profiling      repeat.txt      /*profiling*
    2223922832 profiling-variable     eval.txt        /*profiling-variable*
     
    2224322836 pronounce      intro.txt       /*pronounce*
    2224422837 psql   ft_sql.txt      /*psql*
    22245 @@ -7577,6 +7634,7 @@
     22838@@ -7577,6 +7645,7 @@
    2224622839 s/\3   change.txt      /*s\/\\3*
    2224722840 s/\9   change.txt      /*s\/\\9*
     
    2225122844 s/\L   change.txt      /*s\/\\L*
    2225222845 s/\U   change.txt      /*s\/\\U*
    22253 @@ -7787,6 +7845,7 @@
     22846@@ -7787,6 +7856,7 @@
    2225422847 spell-affix-mbyte      spell.txt       /*spell-affix-mbyte*
    2225522848 spell-affix-not-supported      spell.txt       /*spell-affix-not-supported*
     
    2225922852 spell-dic-format       spell.txt       /*spell-dic-format*
    2226022853 spell-double-scoring   spell.txt       /*spell-double-scoring*
    22261 @@ -7872,6 +7931,7 @@
     22854@@ -7872,6 +7942,7 @@
    2226222855 strdisplaywidth()      eval.txt        /*strdisplaywidth()*
    2226322856 strftime()     eval.txt        /*strftime()*
     
    2226722860 string-functions       usr_41.txt      /*string-functions*
    2226822861 string-match   eval.txt        /*string-match*
    22269 @@ -7936,6 +7996,7 @@
     22862@@ -7936,6 +8007,7 @@
    2227022863 system()       eval.txt        /*system()*
    2227122864 system-functions       usr_41.txt      /*system-functions*
     
    2227522868 t      motion.txt      /*t*
    2227622869 t:     eval.txt        /*t:*
    22277 @@ -8280,6 +8341,7 @@
     22870@@ -8280,6 +8352,7 @@
    2227822871 undofile()     eval.txt        /*undofile()*
    2227922872 undotree()     eval.txt        /*undotree()*
     
    2228322876 unlisted-buffer        windows.txt     /*unlisted-buffer*
    2228422877 up-down-motions        motion.txt      /*up-down-motions*
    22285 @@ -8364,6 +8426,7 @@
     22878@@ -8364,6 +8437,7 @@
    2228622879 v:foldend      eval.txt        /*v:foldend*
    2228722880 v:foldlevel    eval.txt        /*v:foldlevel*
     
    2229122884 v:key  eval.txt        /*v:key*
    2229222885 v:lang eval.txt        /*v:lang*
    22293 @@ -8377,6 +8440,7 @@
     22886@@ -8377,6 +8451,7 @@
    2229422887 v:prevcount    eval.txt        /*v:prevcount*
    2229522888 v:profiling    eval.txt        /*v:profiling*
     
    2230122894diff -Naur vim74.orig/runtime/doc/tagsrch.txt vim74/runtime/doc/tagsrch.txt
    2230222895--- vim74.orig/runtime/doc/tagsrch.txt  2013-08-10 11:25:02.000000000 +0000
    22303 +++ vim74/runtime/doc/tagsrch.txt       2014-06-01 00:42:52.637535056 +0000
     22896+++ vim74/runtime/doc/tagsrch.txt       2014-07-21 23:33:15.386863877 +0000
    2230422897@@ -1,4 +1,4 @@
    2230522898-*tagsrch.txt*   For Vim version 7.4.  Last change: 2013 Jul 28
     
    2232522918diff -Naur vim74.orig/runtime/doc/term.txt vim74/runtime/doc/term.txt
    2232622919--- vim74.orig/runtime/doc/term.txt     2013-08-10 11:25:02.000000000 +0000
    22327 +++ vim74/runtime/doc/term.txt  2014-06-01 00:42:52.644201706 +0000
     22920+++ vim74/runtime/doc/term.txt  2014-07-21 23:33:15.423530448 +0000
    2232822921@@ -1,4 +1,4 @@
    2232922922-*term.txt*      For Vim version 7.4.  Last change: 2013 Mar 13
     
    2234522938diff -Naur vim74.orig/runtime/doc/todo.txt vim74/runtime/doc/todo.txt
    2234622939--- vim74.orig/runtime/doc/todo.txt     2013-08-10 11:25:02.000000000 +0000
    22347 +++ vim74/runtime/doc/todo.txt  2014-06-01 00:42:52.700868228 +0000
     22940+++ vim74/runtime/doc/todo.txt  2014-07-21 23:33:15.583530030 +0000
    2234822941@@ -1,4 +1,4 @@
    2234922942-*todo.txt*      For Vim version 7.4.  Last change: 2013 Aug 10
    22350 +*todo.txt*      For Vim version 7.4.  Last change: 2014 May 22
     22943+*todo.txt*      For Vim version 7.4.  Last change: 2014 Jul 19
    2235122944 
    2235222945 
    2235322946                  VIM REFERENCE MANUAL    by Bram Moolenaar
    22354 @@ -34,38 +34,242 @@
     22947@@ -34,38 +34,289 @@
    2235522948                                                        *known-bugs*
    2235622949 -------------------- Known bugs and current work -----------------------
    2235722950 
     22951+Completion menu: remove redraw (Hirohito Higashi)
     22952+
    2235822953+Regexp problems:
    2235922954+- Bug with pattern: '\vblock (\d+)\.\n.*\d+%(\1)@<!\.$'
     
    2236922964+  \%u, \%x, \%o, \%d followed by a composing character
    2237022965+
     22966+Crash when splitting the window when the size is tiny.
     22967+(Yukihiro Nakadaira, 2014 Jul 15-16)
     22968+
     22969+Another problem with splitting window. (Yukihiro Nakadaira, 2014 Jul 17)
     22970+Patch Jul 17.
     22971+
     22972+Using freed memory when jumping from a quickfix list. (lcd47, 2014 Jul 17)
     22973+
     22974+Patch to fix valgrind error. (Dominique Pelle, 2014 Jul 9)
     22975+
     22976+Vroom filetype support. (David Barnett, 2014 Jul 10)
     22977+
     22978+u_undo error.  Reproduce with description from Ayberk Ozgur, 2014 Jul 17.
     22979+
     22980+Updated Django files. (Dave Hodder, 2014 Jul 13)
     22981+
     22982+Title of quickfist list is not kept for setqflist(list 'r').
     22983+(Lcd, 2014 Jul 17)  With test Jul 18.
     22984+
     22985+Patch to fix noremap flags not cleared after typing Esc. (Jacob Niehus, 2014
     22986+Jul 9)
     22987+
    2237122988+Problem that a previous silent ":throw" causes a following try/catch not to
    2237222989+work. (ZyX, 2013 Sep 28)
    2237322990+
     22991+DiffChange highlighting doesn't combine with 'cursurline'. (Benjamin Fritz)
     22992+Patch by Christian (2014 Jul 12)
     22993+
     22994+BufWinLeave autocommand executed in the wrong buffer? (Davit Samvelyan, 2014
     22995+Jul 14)
     22996+
     22997+When 'clipboard' is "unnamed", :g/pat/d is very slow.  Only set the clipboard
     22998+after the last delete? (Praful, 2014 May 28)
     22999+Patch by Christian Brabandt, 2014 Jun 18.  Update Jun 25.
     23000+
     23001+Completion for :buf does not use 'wildignorecase'. (Akshay H, 2014 May 31)
     23002+
    2237423003+":cd C:\Windows\System32\drivers\etc*" does not work, even though the
    2237523004+directory exists. (Sergio Gallelli, 2013 Dec 29)
    2237623005+
     23006+The entries added by matchaddpos() are returned by getmatches() but can't be
     23007+set with setmatches(). (lcd47, 2014 Jun 29)
     23008+
    2237723009+Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15)
    2237823010+
    22379 +Setting 'ttymouse' empty causes Dec mouse to be detected. (Elijah Griffin,
    22380 +2014 May 13)
    22381 +
    2238223011 Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
    2238323012 
    2238423013-Patch to add "acl" and "xpm" as a feature. (Ken Takata, 2013 Jul 8)
     23014+When using an undo file, also restore the changelist, so that "g;" works.
     23015+
     23016+Value returned by virtcol() changes depending on how lines wrap.  This is
     23017+inconsistant with the documentation.
     23018+
    2238523019+MS-Windows: Crash opening very long file name starting with "\\".
    2238623020+(Christian Brock, 2012 Jun 29)
     
    2239023024+Adding "~" to 'cdpath' doesn't work for completion?  (Davido, 2013 Aug 19)
    2239123025+
     23026+"hi link" does not respect groups with GUI settings only. (Mark Lodato, 2014
     23027+Jun 8)
     23028+
    2239223029+Syntax file for gnuplot.  Existing one is very old. (Andrew Rasmussen, 2014
    2239323030+Feb 24)
    2239423031+
    22395 +Add digraph for Rouble: =P.  What's the Unicode?
    22396 +
    2239723032+Issue 174: Detect Mason files.
    2239823033+
     
    2240223037+
    2240323038+PHP syntax is extremely slow. (Anhad Jai Singh, 2014 Jan 19)
     23039+
     23040+Patch for matchparen. (James McCoy, 2014 Jul 11)
    2240423041+
    2240523042+Spell files use a latin single quote. Unicode also has another single quote:
     
    2241323050+
    2241423051+Win32: use 64 bit stat() if possible. (Ken Takata, 2014 May 12)
    22415 +More tests May 14.
     23052+More tests May 14. Update May 29.
     23053 
     23054-Patch to make has() check for Vim version and patch at the same time.
     23055-(Marc Weber, 2013 Jun 7)
     23056+The garbage collector may use too much stack.  Make set_ref_in_item()
     23057+iterative instead of recursive.   Test program by Marc Weber (2013 Dec 10)
     23058+Patch by Ben Fritz, 2014 Jun 22.
    2241623059+
    2241723060+Idea: For a window in the middle (has window above and below it), use
     
    2242123064+Can we make ":unlet $VAR" use unsetenv() to delete the env var?
    2242223065+What for systems that don't have unsetenv()?
    22423 +
    22424 +Patch to make getchar() work for typing Esc. (Yasuhiro Matsumoto, 2014 May 13)
    22425 +
    22426 +Patch for problem that v:register is set to '_' after deleting into the black
    22427 +hole register.
    2242823066+
    2242923067+This does not give an error: (Andre Sihera, 2014 Mar 21)
     
    2243623074+from?
    2243723075+
    22438 +Patch to add arglistid(), get the ID of the currently used argument list.
    22439 +(Marcin Szamotulski, 2014 Apr 27)
     23076+Problem with upwards search on Windows (works OK on Linux). (Brett Stahlman,
     23077+2014 Jun 8)
    2244023078+
    2244123079+Include a plugin manager with Vim? Neobundle seems to be the best currently.
     
    2247623114+normal spell file. (Enno Nagel, 2014 Mar 29)
    2247723115+
    22478 +-   Patch for 'breakindent' option: repeat indent for wrapped line. (Vaclav
    22479 +    Smilauer, 2004 Sep 13, fix Oct 31, update 2007 May 30)
    22480 +    Version for latest MacVim: Tobia Conforto, 2009 Nov 23
    22481 +    More recent version: https://retracile.net/wiki/VimBreakIndent
    22482 +    Posted to vim-dev by Taylor Hedberg, 2011 Nov 25
    22483 +    Update by Taylor Hedberg, 2013 May 30.
    22484 +    Updated for Vim 7.4 by Ken Takata, 2013 Oct 5.
    22485 +    Update by Christian Brabandt, 2014 May 9.  Remarks by Ken Takata.
    22486 +    Update by Christian 2014 May 12, github link on May 15
     23116+CTRL-] in Visual mode uses the selected text as a tag.  This does not work
     23117+when preceded with CTRL-W. (Patrick Hemmer, 2014 Jun 28)
    2248723118+
    2248823119+When typing the first character of a command, e.g. "f", then using a menu, the
     
    2249523126+various other commands.  (ZyX, 2014 Mar 30)
    2249623127+
     23128+patch to skip sort if no line matches the expression.
     23129+(Christian Brabandt, 2014 Jun 25)
     23130+
     23131+Patch to add sortuniq(). (Cade Forester, 2014 Mar 19)
     23132+Or add uniq() instead?  Patch by lcd47, but it has problems.
     23133+
     23134+Patch to support sorting on floating point number.  (Alex Jakushev, 2010 Oct
     23135+30)
     23136+
     23137+Patch to support expression argument to sort() instead of a function name.
     23138+Yasuhiro Matsumoto, 2013 May 31.
     23139+Or should we add a more general mechanism, like lambda functions?
     23140+
    2249723141+VMS: Select() doesn't work properly, typing ESC may hang Vim.  Use sys$qiow
    2249823142+instead. (Samuel Ferencik, 2013 Sep 28)
    22499  
    22500 -Patch to make has() check for Vim version and patch at the same time.
    22501 -(Marc Weber, 2013 Jun 7)
     23143+
    2250223144+Patch for XDG base directory support. (Jean François Bignolles, 2014 Mar 4)
    22503 +
    22504 +Patch to add flag to shortmess to avoid giving completion messages.
    22505 +(Shougo Matsu, 2014 Jan 6, update Jan 11)
     23145+Remark on the docs.  Should not be a compile time feature.  But then what?
     23146+
     23147+Completion of ":e" is ":earlier", whould be ":edit".  Complete to the matching
     23148+command instead of doing this alphabetically. (Mikel Jorgensen)
    2250623149+
    2250723150+Patch to add v:completed_item. (Shougo Matsu, 2013 Nov 29).
     
    2251023153+
    2251123154+Patch to define macros for hardcoded values. (Elias Diem, 2013 Dec 14)
    22512 +
    22513 +Patch to add sortuniq(). (Cade Forester, 2014 Mar 19)
    22514 +Or add uniq() instead?  Patch by lcd47, but it has problems.
    2251523155+
    2251623156+Perl: support for Activestate perl 5.18: Issue 170.
     
    2252723167+Patch to add ":undorecover", get as much text out of the undo file as
    2252823168+possible. (Christian Brabandt, 2014 Mar 12)
    22529 +
    22530 +Include Haiku port? (Adrien Destugues, Siarzhuk Zharski, 2013 Oct 24)
    2253123169 
    2253223170-Several Win32 functions are not using Unicode.
    2253323171-Patches to fix this. (Ken Takata, 2013 Aug 9)
     23172+Include Haiku port? (Adrien Destugues, Siarzhuk Zharski, 2013 Oct 24)
     23173+
    2253423174+Updated spec ftplugin. (Matěj Cepl, 2013 Oct 16)
    2253523175+
     
    2260423244 
    2260523245 The BufUnload event is triggered when re-using the empty buffer.
    22606 @@ -76,6 +280,10 @@
     23246@@ -76,6 +327,10 @@
    2260723247 - The word that was selected (empty if abandoned complete)
    2260823248 - Type of completion: tag, omnifunc, user func.
     
    2261523255 That is, calling a dictionary function on an autoloaded dict.
    2261623256 Works OK for echo, just not for  ":call" and ":call call()". (Ted, 2011 Mar
    22617 @@ -83,10 +291,6 @@
     23257@@ -83,17 +338,19 @@
    2261823258 Patch by Christian Brabandt, 2013 Mar 23.
    2261923259 Not 100% sure this is the right solution.
     
    2262323263-Stocker, 2012 Jan 5)
    2262423264-
    22625  Patch to support expression argument to sort() instead of a function name.
    22626  Yasuhiro Matsumoto, 2013 May 31.
    22627  Or should we add a more general mechanism, like lambda functions?
    22628 @@ -94,6 +298,19 @@
     23265-Patch to support expression argument to sort() instead of a function name.
     23266-Yasuhiro Matsumoto, 2013 May 31.
     23267-Or should we add a more general mechanism, like lambda functions?
     23268-
    2262923269 Problem caused by patch 7.3.638: window->open does not update window
    2263023270 correctly. Issue 91.
     
    2263223272+Patch to add {lhs} to :mapclear: clear all maps starting with {lhs}.
    2263323273+(Christian Brabandt, 2013 Dec 9)
    22634 +
    22635 +The garbage collector may use too much stack.  Make set_ref_in_item()
    22636 +iterative instead of recursive.   Test program by Marc Weber (2013 Dec 10)
    2263723274+
    2263823275+Exception caused by argument of return is not caught by try/catch.
     
    2264623283 2013 Mar 19, later message)
    2264723284 
    22648 @@ -108,6 +325,8 @@
     23285@@ -108,6 +365,8 @@
    2264923286 Bug with 'cursorline' in diff mode.  Line being scrolled into view gets
    2265023287 highlighted as the cursor line.  (Alessandro Ivaldi, 2013 Jun 4)
     
    2265523292 May 17: with winlist() and tabpagelist().
    2265623293 May 19: with local variables.
    22657 @@ -119,6 +338,8 @@
     23294@@ -119,10 +378,13 @@
    2265823295 Patch from Christian Brabandt to make the "buffer" argument for ":sign place"
    2265923296 optional. (2013 Jul 12)
     
    2266423301 functions. (Christian Brabandt, 2013 May 8, update May 21)
    2266523302 Patch to add getlocstack() / setlocstack(). (Christian Brabandt, 2013 May 14)
    22666 @@ -149,11 +370,19 @@
     23303 Second one. Update May 22.
     23304+Update by Daniel Hahler, 2014 Jul 4.
     23305 
     23306 Patch to make fold updates much faster. (Christian Brabandt, 2012 Dec)
     23307 
     23308@@ -137,9 +399,6 @@
     23309 
     23310 Bug: findfile("any", "file:///tmp;") does not work.
     23311 
     23312-v:register is not directly reset to " after a delete command that specifies a
     23313-register.  It is reset after the next command. (Steve Vermeulen, 2013 Mar 16)
     23314-
     23315 'ff' is wrong for one-line file without EOL. (Issue 77)
     23316 
     23317 Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14)
     23318@@ -149,11 +408,19 @@
    2266723319 process that is running.  It might actually be some other program, e.g. after
    2266823320 a reboot.
     
    2268623338 not correctly updated. (Paul Harris, 2012 Feb 27)
    2268723339 
    22688 @@ -167,8 +396,17 @@
     23340@@ -167,8 +434,17 @@
    2268923341 
    2269023342 Patch to add functions for signs. (Christian Brabandt, 2013 Jan 27)
     
    2270423356 Patch to add 'completeselect' option.  Specifies how to select a candidate in
    2270523357 insert completion. (Shougo, 2013 May 29)
    22706 @@ -182,9 +420,6 @@
     23358@@ -182,9 +458,6 @@
    2270723359 Win32: The Python interface only works with one version of Python, selected at
    2270823360 compile time.  Can this be made to work with version 2.1 and 2.2 dynamically?
     
    2271423366 Vim script.  Requires converting the arguments and return value, like with
    2271523367 vim.bindeval().
    22716 @@ -205,9 +440,6 @@
     23368@@ -205,9 +478,6 @@
    2271723369 Add a check for b:no_match_paren in Highlight_matching_Pair() (Marcin
    2271823370 Szamotulski, 2012 Nov 8)
     
    2272423376 
    2272523377 Session file creation: 'autochdir' causes trouble.  Keep it off until after
    22726 @@ -240,10 +472,6 @@
     23378@@ -240,10 +510,6 @@
    2272723379 Help for 'b:undo_indent'. (Thilo Six, 2012 May 28)
    2272823380 Also question if examples are correct.
     
    2273523387 Suggestion for another map. (Philip Mat, 2012 Jun 18)
    2273623388 But use "gi" instead of "a".  Or use CTRL-\ CTRL-O.
    22737 @@ -251,10 +479,6 @@
     23389@@ -251,13 +517,12 @@
    2273823390 Patch to support user name completion on MS-Windows. (Yasuhiro Matsumoto, 2012
    2273923391 Aug 16)
     
    2274623398 is confusing.  Should say "the argument list is empty".
    2274723399 
    22748 @@ -272,27 +496,23 @@
     23400+xterm supports escape sequences to mark a paste operation.  Need to be
     23401+enabled. (Bruno Sutic, 2014 Jul 11)  How to know the terminal supports this?
     23402+
     23403 URXVT:
     23404 - will get stuck if byte sequence does not contain the expected semicolon.
     23405 - Use urxvt mouse support also in xterm.  Explanations:
     23406@@ -272,27 +537,23 @@
    2274923407 
    2275023408 Patch to list user digraphs. (Christian Brabandt, 2012 Apr 14)
     
    2277923437 
    2278023438 Update for vim2html.pl. (Tyru, 2013 Feb 22)
    22781 @@ -374,8 +594,6 @@
     23439@@ -374,8 +635,6 @@
    2278223440 Setting $HOME on MS-Windows is not very well documented.  Suggestion by Ben
    2278323441 Fritz (2011 Oct 27).
     
    2278823446 doing ":g/test/d".  Putting every delete on the clipboard? (Robert Chan, 2011
    2278923447 Jun 17)
    22790 @@ -396,10 +614,10 @@
     23448@@ -396,10 +655,10 @@
    2279123449 Changes to manpage plugin. (Elias Toivanen, 2011 Jul 25)
    2279223450 
     
    2280123459 On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a
    2280223460 64 bits value.  Change all number options to use nropt_T and define it to the
    22803 @@ -419,6 +637,8 @@
     23461@@ -419,6 +678,8 @@
    2280423462 When setqflist() uses a filename that triggers a BufReadCmd autocommand Vim
    2280523463 doesn't jump to the correct line with :cfirst. (ZyX,  2011 Sep 18)
     
    2281023468 Patch from Christian Brabandt, 2011 Aug 19.
    2281123469 
    22812 @@ -456,6 +676,9 @@
     23470@@ -439,9 +700,6 @@
     23471 
     23472 "0g@$" puts '] on last byte of multi-byte. (ZyX, 2011 Jan 22)
     23473 
     23474-Patch to support sorting on floating point number.  (Alex Jakushev, 2010 Oct
     23475-30)
     23476-
     23477 Patch to addd TextDeletePost and TextYankPost events. (Philippe Vaucher, 2011
     23478 May 24)  Update May 26.
     23479 
     23480@@ -456,6 +714,9 @@
    2281323481 number, but it is in the sign column.  Doesn't look right. (ZyX 2011 Jun 5)
    2281423482 Patch by Christian Brabandt, 2011 Jun 5.  Introduces new problems.
     
    2282023488 Patch by Christian Brabandt, uses ]e [e ]t and [t. 2011 Aug 9.
    2282123489 
    22822 @@ -524,9 +747,6 @@
     23490@@ -524,9 +785,6 @@
    2282323491 Patch to add FoldedLineNr highlighting: different highlighting for the line
    2282423492 number of a closed fold. (eXerigumo Clanjor, 2013 Jul 15)
     
    2283023498 - Profiling:
    2283123499        ./vim -u NONE -s ~/vim/test/ruby.vim
    22832 @@ -556,7 +776,7 @@
     23500@@ -556,7 +814,7 @@
    2283323501 the system encoding (usually utf-8).
    2283423502 
     
    2283923507 Problem producing tags file when hebrew.frx is present.  It has a BOM.
    2284023508 Results in E670. (Tony Mechelynck, 2010 May 2)
    22841 @@ -573,8 +793,7 @@
    22842  
    22843  getpos()/setpos() don't include curswant.  getpos() could return a fifth
    22844  element.  setpos() could accept an optional fifth element.
     23509@@ -571,11 +829,6 @@
     23510     file names unique, also support this for 'backupdir'. (Mikolaj Machowski)
     23511     Patch by Christian Brabandt, 2010 Oct 21.
     23512 
     23513-getpos()/setpos() don't include curswant.  getpos() could return a fifth
     23514-element.  setpos() could accept an optional fifth element.
    2284523515-Patch by Christian Brabandt, 2010 Sep 6.  Check that new argument is optional
    2284623516-and that it's documented.
    22847 +Patch by Christian Brabandt, 2010 Sep 6.  Again 2013 Aug 22.
    22848  
     23517-
    2284923518 With "tw=55 fo+=a" typing space before ) doesn't work well. (Scott Mcdermott,
    2285023519 2010 Oct 24)
    22851 @@ -595,9 +814,6 @@
     23520 
     23521@@ -595,9 +848,6 @@
    2285223522 checked to be in a comment.  Implement FM_SKIPCOMM flag of findmatchlimit().
    2285323523 Issue 46.
     
    2285923529 
    2286023530 Using CompilerSet doesn't record where an option was set from.  E.g., in the
    22861 @@ -620,8 +836,6 @@
     23531@@ -620,8 +870,6 @@
    2286223532 When 'lines' is 25 and 'scrolloff' is 12, "j" scrolls zero or two lines
    2286323533 instead of one. (Constantin Pan, 2010 Sep 10)
     
    2286823538 Winckler, 2011 May 11)
    2286923539 Requires a map mode for Insert mode started from blockwise Visual mode.
    22870 @@ -629,10 +843,6 @@
     23540@@ -629,10 +877,6 @@
    2287123541 Writing nested List and Dict in viminfo gives error message and can't be read
    2287223542 back. (Yukihiro Nakadaira, 2010 Nov 13)
     
    2287923549 Additional info by Dominique Pelle. (also on 2010 Apr 10)
    2288023550 
    22881 @@ -759,6 +969,7 @@
     23551@@ -759,6 +1003,7 @@
    2288223552 
    2288323553 Patch to add farsi handling to arabic.c (Ali Gholami Rudi, 2009 May 2)
     
    2288723557 Patch to add "focusonly" to 'scrollopt', so that scrollbind also applies in
    2288823558 window that doesn't have focus. (Jonathon Mah, 2009 Jan 12)
    22889 @@ -838,8 +1049,6 @@
     23559@@ -838,8 +1083,6 @@
    2289023560 Win32 GUI: last message from startup doesn't show up when there is an echoerr
    2289123561 command. (Cyril Slobin, 2009 Mar 13)
     
    2289623566 does not work. (Nieko Maatjes, 2009 Jan 8, Ingo Karkat, 2009 Jan 22)
    2289723567 
    22898 @@ -856,7 +1065,12 @@
     23568@@ -856,7 +1099,12 @@
    2289923569 Using ~ works OK on 'a' with composing char, but not on 0x0418  with composing
    2290023570 char 0x0301. (Tony Mechelynck, 2009 Mar 4)
     
    2291023580 Inconsistent: starting with $LANG set to es_ES.utf-8 gives Spanish
    2291123581 messages, even though locale is not supported.  But ":lang messages
    22912 @@ -885,7 +1099,7 @@
     23582@@ -885,7 +1133,7 @@
    2291323583 Completion for ":buf" doesn't work properly on Win32 when 'shellslash' is off.
    2291423584 (Henrik Ohman, 2009, Jan 29)
     
    2291923589 Use a different option or let it depend on whether 'shell' looks like a
    2292023590 unix-like shell?
    22921 @@ -918,8 +1132,6 @@
     23591@@ -918,8 +1166,6 @@
    2292223592 Add v:motion_force. (Kana Natsuno, 2008 Dec 6)
    2292323593 Maybe call it v:motiontype.
     
    2292823598 doesn't set 'ff' to "unix".  (Ben Fritz, 2008 Dec 5) Reusing the old buffer
    2292923599 probably causes this.
    22930 @@ -928,7 +1140,7 @@
     23600@@ -928,7 +1174,7 @@
    2293123601 2009 Jan 16)
    2293223602 
     
    2293723607 Document that default font in Athena can be set with resources:
    2293823608    XtDefaultFont: "9x15"
    22939 @@ -942,6 +1154,7 @@
     23609@@ -942,6 +1188,7 @@
    2294023610 
    2294123611 ":pedit %" with a BufReadPre autocommand causes the cursor to move to the
     
    2294523615 Wildmenu not deleted: "gvim -u NONE", ":set nocp wildmenu cmdheight=3
    2294623616 laststatus=2", CTRL-D CTRL-H CTRL-H CTRL-H. (A.Politz, 2008 April 1)
    22947 @@ -1085,9 +1298,6 @@
     23617@@ -1085,9 +1332,6 @@
    2294823618 result in no matches.  Convert chars to lower case? (Erik Wognsen, 2009 Apr
    2294923619 16)
     
    2295523625 (Lech Lorens, 2010 Aug 30)
    2295623626 
    22957 @@ -1289,6 +1499,7 @@
     23627@@ -1289,6 +1533,7 @@
    2295823628 
    2295923629 Win64: Seek error in swap file for a very big file (3 Gbyte).  Check storing
     
    2296323633 Win32: patch for fullscreen mode. (Liushaolin, 2008 April 17)
    2296423634 
    22965 @@ -1296,14 +1507,17 @@
     23635@@ -1296,14 +1541,17 @@
    2296623636 Depends on 'shellslash', 'shellquote' and 'shellxquote', but shellescape()
    2296723637 only takes 'shellslash' into account.
     
    2298523655 2007 Jun 21)
    2298623656 
    22987 @@ -1459,6 +1673,9 @@
     23657@@ -1459,6 +1707,9 @@
    2298823658 tree stops unexpectedly when using ":cd " and entering a directory that
    2298923659 doesn't contain other directories.
     
    2299523665    highlight Normal ctermbg=DarkGray
    2299623666    set background=dark
    22997 @@ -1685,7 +1902,7 @@
     23667@@ -1685,7 +1936,7 @@
    2299823668 -   testdir/Make_dos_sh.mak for running tests with MingW. (Bill Mccarthy, 2008
    2299923669     Sep 13)
     
    2300423674     Vissale Neang.  (Martin Stubenschrott) Asked Vissale to make the scripts
    2300523675     more friendly for the Vim distribution.
    23006 @@ -1715,7 +1932,7 @@
     23676@@ -1715,7 +1966,7 @@
    2300723677     How does this work?  Missing comments.
    2300823678 8   Add a few more command names to the menus.  Patch from Jiri Brezina
     
    2301323683 -   Include flipcase patch: ~/vim/patches/wall.flipcase2 ?  Make it work
    2301423684     for multi-byte characters.
    23015 @@ -1864,8 +2081,6 @@
     23685@@ -1864,8 +2115,6 @@
    2301623686 Win32 GUI known bugs:
    2301723687 -   Win32: tearoff menu window should have a scrollbar when it's taller than
     
    2302223692     file names.  Can we load unicows.dll dynamically?
    2302323693 8   The -P argument doesn't work very well with many MDI applications.
    23024 @@ -1873,9 +2088,6 @@
     23694@@ -1873,9 +2122,6 @@
    2302523695     Tutorial: http://win32assembly.online.fr/tut32.html
    2302623696 8   In eval.c, io.h is included when MSWIN32 is defined.  Shouldn't this be
     
    2303223702     of ":only" is highlighted like the cursor.  (Lipelis)
    2303323703 8   When 'encoding' is "utf-8", should use 'guifont' for both normal and wide
    23034 @@ -1887,9 +2099,6 @@
     23704@@ -1887,9 +2133,6 @@
    2303523705 8   Use another default for 'termencoding': the active codepage.  Means that
    2303623706     when 'encoding' is changed typing characters still works properly.
     
    2304223712     2004 May 9)
    2304323713 8   Win32: When clicking on the gvim title bar, which gives it focus, produces
    23044 @@ -2272,8 +2481,6 @@
     23714@@ -2272,8 +2515,6 @@
    2304523715     character. (Yasuhiro Matsumoto)  It should return 1 when used on a tail
    2304623716     byte, like for utf-8.  Store second byte of double-byte in ScreenLines2[]
     
    2305123721     ":insert" command, causing the following "endfunction" not to be found.
    2305223722     Add skipping this perl construction inside function definitions.
    23053 @@ -2566,8 +2773,6 @@
     23723@@ -2566,8 +2807,6 @@
    2305423724     input method called from GDK code.  Without Perl it doesn't crash.
    2305523725 -   VMS: Vimdiff doesn't work with the VMS diff, because the output looks
     
    2306023730     in Vim as if the rightmost scrollbar was used.
    2306123731 -   GTK with Gnome: Produces an error message when starting up:
    23062 @@ -2736,10 +2941,6 @@
     23732@@ -2736,10 +2975,6 @@
    2306323733 
    2306423734 
     
    2307123741     https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=219777   
    2307223742 -   Unicode defines another quote character: 0x2019.  Use it as an equivalent
    23073 @@ -2925,12 +3126,8 @@
     23743@@ -2925,12 +3160,8 @@
    2307423744 8   toupper() function doesn't handle byte count changes.
    2307523745 7   Searching and composing characters:
     
    2308423754 8   Detect overlong UTF-8 sequences and handle them like illegal bytes.
    2308523755 8   ":s/x/\u\1/" doesn't work, making uppercase isn't done for multi-byte
    23086 @@ -3153,6 +3350,7 @@
     23756@@ -3153,6 +3384,7 @@
    2308723757 Built-in script language:
    2308823758 8   Make the filename and line number available to script functions, so that
     
    2309223762     restore option values.  Especially useful for new options.  Problem: how
    2309323763     to avoid a performance penalty (esp. for string options)?
    23094 @@ -4035,8 +4233,7 @@
     23764@@ -4035,8 +4267,7 @@
    2309523765 7   Use Tabs for the indent of starting lines, pad with spaces for
    2309623766     continuation lines.  Allows changing 'tabstop' without messing up the
     
    2310223772 
    2310323773 Java:
    23104 @@ -4655,7 +4852,7 @@
     23774@@ -4655,7 +4886,7 @@
    2310523775 
    2310623776 Digraphs:
     
    2311123781     characters?
    2311223782 8   Add command to remove one or more (all) digraphs. (Brown)
    23113 @@ -4852,6 +5049,7 @@
     23783@@ -4852,6 +5083,7 @@
    2311423784 6   Add ":timer" command, to set a command to be executed at a certain
    2311523785     interval, or once after some time has elapsed. (Aaron)
     
    2312123791diff -Naur vim74.orig/runtime/doc/undo.txt vim74/runtime/doc/undo.txt
    2312223792--- vim74.orig/runtime/doc/undo.txt     2013-08-10 11:25:02.000000000 +0000
    23123 +++ vim74/runtime/doc/undo.txt  2014-06-01 00:42:52.734201477 +0000
     23793+++ vim74/runtime/doc/undo.txt  2014-07-21 23:33:15.630196575 +0000
    2312423794@@ -1,4 +1,4 @@
    2312523795-*undo.txt*      For Vim version 7.4.  Last change: 2012 Mar 04
    23126 +*undo.txt*      For Vim version 7.4.  Last change: 2013 Sep 08
     23796+*undo.txt*      For Vim version 7.4.  Last change: 2014 May 24
    2312723797 
    2312823798 
     
    2313723807 nothing (undoes an undo).
    2313823808 
     23809@@ -97,9 +97,9 @@
     23810                        or redo.
     23811                        {not in Vi}
     23812 
     23813-This is most useful when you need to prompt the user halfway a change.  For
     23814-example in a function that calls |getchar()|.  Do make sure that there was a
     23815-related change before this that you must join with.
     23816+This is most useful when you need to prompt the user halfway through a change.
     23817+For example in a function that calls |getchar()|.  Do make sure that there was
     23818+a related change before this that you must join with.
     23819 
     23820 This doesn't work by itself, because the next key press will start a new
     23821 change again.  But you can do something like this: >
    2313923822@@ -249,8 +249,9 @@
    2314023823 detect if an undo file is no longer synchronized with the file it was written
     
    2314923832 Undo files are normally saved in the same directory as the file.  This can be
    2315023833 changed with the 'undodir' option.
     23834diff -Naur vim74.orig/runtime/doc/usr_08.txt vim74/runtime/doc/usr_08.txt
     23835--- vim74.orig/runtime/doc/usr_08.txt   2013-08-10 11:25:03.000000000 +0000
     23836+++ vim74/runtime/doc/usr_08.txt        2014-07-21 23:33:15.696863068 +0000
     23837@@ -1,4 +1,4 @@
     23838-*usr_08.txt*   For Vim version 7.4.  Last change: 2006 Jul 18
     23839+*usr_08.txt*   For Vim version 7.4.  Last change: 2014 Jul 06
     23840 
     23841                     VIM USER MANUAL - by Bram Moolenaar
     23842 
     23843@@ -532,7 +532,7 @@
     23844 
     23845 You now have two tab pages.  The first one has a window for "thisfile" and the
     23846 second one a window for "thatfile".  It's like two pages that are on top of
     23847-eachother, with a tab sticking out of each page showing the file name.
     23848+each other, with a tab sticking out of each page showing the file name.
     23849 
     23850 Now use the mouse to click on "thisfile" in the top line.  The result is
     23851 
    2315123852diff -Naur vim74.orig/runtime/doc/usr_25.txt vim74/runtime/doc/usr_25.txt
    2315223853--- vim74.orig/runtime/doc/usr_25.txt   2013-08-10 11:25:05.000000000 +0000
    23153 +++ vim74/runtime/doc/usr_25.txt        2014-06-01 00:42:52.944200942 +0000
     23854+++ vim74/runtime/doc/usr_25.txt        2014-07-21 23:33:15.816862755 +0000
    2315423855@@ -86,7 +86,7 @@
    2315523856 
     
    2316323864diff -Naur vim74.orig/runtime/doc/usr_30.txt vim74/runtime/doc/usr_30.txt
    2316423865--- vim74.orig/runtime/doc/usr_30.txt   2013-08-10 11:25:05.000000000 +0000
    23165 +++ vim74/runtime/doc/usr_30.txt        2014-06-01 00:42:53.064200637 +0000
     23866+++ vim74/runtime/doc/usr_30.txt        2014-07-21 23:33:15.870195949 +0000
    2316623867@@ -128,7 +128,7 @@
    2316723868 You can include special Vim keywords in the command specification.  The %
     
    2318423885diff -Naur vim74.orig/runtime/doc/usr_40.txt vim74/runtime/doc/usr_40.txt
    2318523886--- vim74.orig/runtime/doc/usr_40.txt   2013-08-10 11:25:05.000000000 +0000
    23186 +++ vim74/runtime/doc/usr_40.txt        2014-06-01 00:42:53.100867210 +0000
     23887+++ vim74/runtime/doc/usr_40.txt        2014-07-21 23:33:15.920195819 +0000
    2318723888@@ -209,7 +209,7 @@
    2318823889 separates the two commands.  This also means that a | character can't be used
     
    2319623897diff -Naur vim74.orig/runtime/doc/usr_41.txt vim74/runtime/doc/usr_41.txt
    2319723898--- vim74.orig/runtime/doc/usr_41.txt   2013-08-10 11:25:05.000000000 +0000
    23198 +++ vim74/runtime/doc/usr_41.txt        2014-06-01 00:42:53.110867184 +0000
     23899+++ vim74/runtime/doc/usr_41.txt        2014-07-21 23:33:15.946862416 +0000
    2319923900@@ -1,4 +1,4 @@
    2320023901-*usr_41.txt*   For Vim version 7.4.  Last change: 2013 Feb 20
    23201 +*usr_41.txt*   For Vim version 7.4.  Last change: 2014 Apr 05
     23902+*usr_41.txt*   For Vim version 7.4.  Last change: 2014 May 28
    2320223903 
    2320323904                     VIM USER MANUAL - by Bram Moolenaar
     
    2324823949 Variables:                                             *var-functions*
    2324923950        type()                  type of a variable
    23250 @@ -697,11 +706,15 @@
     23951@@ -697,11 +706,16 @@
    2325123952        wincol()                window column number of the cursor
    2325223953        winline()               window line number of the cursor
     
    2325423955+       screencol()             get screen column of the cursor
    2325523956+       screenrow()             get screen row of the cursor
     23957+       getcurpos()             get position of the cursor
    2325623958        getpos()                get position of cursor, mark, etc.
    2325723959        setpos()                set position of cursor, mark, etc.
     
    2326423966 Working with text in the current buffer:               *text-functions*
    2326523967        getline()               get a line or list of lines from the buffer
    23266 @@ -729,6 +742,7 @@
     23968@@ -729,6 +743,7 @@
    2326723969        pathshorten()           shorten directory names in a path
    2326823970        simplify()              simplify a path without changing its meaning
     
    2327223974        filewritable()          check if a file can be written to
    2327323975        getfperm()              get the permissions of a file
    23274 @@ -741,7 +755,8 @@
     23976@@ -741,7 +756,8 @@
    2327523977        mkdir()                 create a new directory
    2327623978        delete()                delete a file
     
    2328223984        readfile()              read a file into a List of lines
    2328323985        writefile()             write a List of lines into a file
    23284 @@ -757,6 +772,7 @@
     23986@@ -757,6 +773,7 @@
    2328523987 Buffers, windows and the argument list:
    2328623988        argc()                  number of entries in the argument list
     
    2329023992        bufexists()             check if a buffer exists
    2329123993        buflisted()             check if a buffer exists and is listed
    23292 @@ -883,14 +899,22 @@
     23994@@ -810,6 +827,7 @@
     23995        synconcealed()          get info about concealing
     23996        diff_hlID()             get highlight ID for diff mode at a position
     23997        matchadd()              define a pattern to highlight (a "match")
     23998+       matchaddpos()           define a list of positions to highlight
     23999        matcharg()              get info about |:match| arguments
     24000        matchdelete()           delete a match defined by |matchadd()| or a
     24001                                |:match| command
     24002@@ -883,14 +901,22 @@
    2329324003        libcall()               call a function in an external library
    2329424004        libcallnr()             idem, returning a number
     
    2331524025diff -Naur vim74.orig/runtime/doc/usr_42.txt vim74/runtime/doc/usr_42.txt
    2331624026--- vim74.orig/runtime/doc/usr_42.txt   2013-08-10 11:25:05.000000000 +0000
    23317 +++ vim74/runtime/doc/usr_42.txt        2014-06-01 00:42:53.120867159 +0000
     24027+++ vim74/runtime/doc/usr_42.txt        2014-07-21 23:33:15.973529013 +0000
    2331824028@@ -311,7 +311,7 @@
    2331924029 item with a bitmap.  For example, define a new toolbar item with: >
     
    2332724037diff -Naur vim74.orig/runtime/doc/usr_45.txt vim74/runtime/doc/usr_45.txt
    2332824038--- vim74.orig/runtime/doc/usr_45.txt   2013-08-10 11:25:06.000000000 +0000
    23329 +++ vim74/runtime/doc/usr_45.txt        2014-06-01 00:42:53.167533707 +0000
     24039+++ vim74/runtime/doc/usr_45.txt        2014-07-21 23:33:16.006862259 +0000
    2333024040@@ -328,8 +328,8 @@
    2333124041 *45.5* Entering language text
     
    2334124051diff -Naur vim74.orig/runtime/doc/various.txt vim74/runtime/doc/various.txt
    2334224052--- vim74.orig/runtime/doc/various.txt  2013-08-10 11:25:06.000000000 +0000
    23343 +++ vim74/runtime/doc/various.txt       2014-06-01 00:42:53.190866981 +0000
     24053+++ vim74/runtime/doc/various.txt       2014-07-21 23:33:16.030195531 +0000
    2334424054@@ -1,4 +1,4 @@
    2334524055-*various.txt*   For Vim version 7.4.  Last change: 2013 May 18
     
    2342724137diff -Naur vim74.orig/runtime/doc/version5.txt vim74/runtime/doc/version5.txt
    2342824138--- vim74.orig/runtime/doc/version5.txt 2013-08-10 11:25:07.000000000 +0000
    23429 +++ vim74/runtime/doc/version5.txt      2014-06-01 00:42:53.237533529 +0000
     24139+++ vim74/runtime/doc/version5.txt      2014-07-21 23:33:16.090195375 +0000
    2343024140@@ -2020,7 +2020,7 @@
    2343124141 
     
    2343924149diff -Naur vim74.orig/runtime/doc/version7.txt vim74/runtime/doc/version7.txt
    2344024150--- vim74.orig/runtime/doc/version7.txt 2013-08-10 12:23:06.000000000 +0000
    23441 +++ vim74/runtime/doc/version7.txt      2014-06-01 00:42:53.430866370 +0000
     24151+++ vim74/runtime/doc/version7.txt      2014-07-21 23:33:16.276861554 +0000
    2344224152@@ -1,4 +1,4 @@
    2344324153-*version7.txt*  For Vim version 7.4.  Last change: 2013 Aug 10
     
    2348324193diff -Naur vim74.orig/runtime/doc/vi_diff.txt vim74/runtime/doc/vi_diff.txt
    2348424194--- vim74.orig/runtime/doc/vi_diff.txt  2013-08-10 11:25:07.000000000 +0000
    23485 +++ vim74/runtime/doc/vi_diff.txt       2014-06-01 00:42:53.477532917 +0000
     24195+++ vim74/runtime/doc/vi_diff.txt       2014-07-21 23:33:16.303528151 +0000
    2348624196@@ -1,4 +1,4 @@
    2348724197-*vi_diff.txt*   For Vim version 7.4.  Last change: 2012 Aug 08
     
    2351024220diff -Naur vim74.orig/runtime/doc/visual.txt vim74/runtime/doc/visual.txt
    2351124221--- vim74.orig/runtime/doc/visual.txt   2013-08-10 11:25:08.000000000 +0000
    23512 +++ vim74/runtime/doc/visual.txt        2014-06-01 00:42:53.920865122 +0000
     24222+++ vim74/runtime/doc/visual.txt        2014-07-21 23:33:16.740193679 +0000
    2351324223@@ -1,4 +1,4 @@
    2351424224-*visual.txt*    For Vim version 7.4.  Last change: 2012 Aug 15
     
    2354124251diff -Naur vim74.orig/runtime/doc/windows.txt vim74/runtime/doc/windows.txt
    2354224252--- vim74.orig/runtime/doc/windows.txt  2013-08-10 11:25:08.000000000 +0000
    23543 +++ vim74/runtime/doc/windows.txt       2014-06-01 00:42:53.937531746 +0000
     24253+++ vim74/runtime/doc/windows.txt       2014-07-21 23:33:16.756860302 +0000
    2354424254@@ -1,4 +1,4 @@
    2354524255-*windows.txt*   For Vim version 7.4.  Last change: 2012 Nov 15
     
    2357724287diff -Naur vim74.orig/runtime/filetype.vim vim74/runtime/filetype.vim
    2357824288--- vim74.orig/runtime/filetype.vim     2013-08-03 15:50:05.000000000 +0000
    23579 +++ vim74/runtime/filetype.vim  2014-06-01 00:42:54.130864587 +0000
     24289+++ vim74/runtime/filetype.vim  2014-07-21 23:33:16.946859806 +0000
    2358024290@@ -1,7 +1,7 @@
    2358124291 " Vim support file to detect file types
     
    2358324293 " Maintainer:  Bram Moolenaar <Bram@vim.org>
    2358424294-" Last Change: 2013 Aug 03
    23585 +" Last Change: 2014 Feb 26
     24295+" Last Change: 2014 Jul 16
    2358624296 
    2358724297 " Listen very carefully, I will say this only once
     
    2366424374 
    2366524375 " ERicsson LANGuage; Yaws is erlang too
     24376@@ -843,7 +864,7 @@
     24377       setf xhtml
     24378       return
     24379     endif
     24380-    if getline(n) =~ '{%\s*\(extends\|block\)\>'
     24381+    if getline(n) =~ '{%\s*\(extends\|block\|load\)\>'
     24382       setf htmldjango
     24383       return
     24384     endif
    2366624385@@ -952,6 +973,9 @@
    2366724386 " Inno Setup
     
    2367424393 au BufNewFile,BufRead *.jal,*.JAL              setf jal
    2367524394 
    23676 @@ -1014,7 +1038,7 @@
     24395@@ -965,7 +989,7 @@
     24396 au BufNewFile,BufRead *.jj,*.jjt               setf javacc
     24397 
     24398 " JavaScript, ECMAScript
     24399-au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx,*.json   setf javascript
     24400+au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx   setf javascript
     24401 
     24402 " Java Server Pages
     24403 au BufNewFile,BufRead *.jsp                    setf jsp
     24404@@ -983,12 +1007,18 @@
     24405 " Jovial
     24406 au BufNewFile,BufRead *.jov,*.j73,*.jovial     setf jovial
     24407 
     24408+" JSON
     24409+au BufNewFile,BufRead *.json                   setf json
     24410+
     24411 " Kixtart
     24412 au BufNewFile,BufRead *.kix                    setf kix
     24413 
     24414 " Kimwitu[++]
     24415 au BufNewFile,BufRead *.k                      setf kwt
     24416 
     24417+" Kivy
     24418+au BufNewFile,BufRead *.kv                     setf kivy
     24419+
     24420 " KDE script
     24421 au BufNewFile,BufRead *.ks                     setf kscript
     24422 
     24423@@ -1014,7 +1044,7 @@
    2367724424 au BufNewFile,BufRead *.ld                     setf ld
    2367824425 
     
    2368324430 " Libao
    2368424431 au BufNewFile,BufRead */etc/libao.conf,*/.libao        setf libao
    23685 @@ -1169,6 +1193,9 @@
     24432@@ -1169,6 +1199,9 @@
    2368624433 " MGL
    2368724434 au BufNewFile,BufRead *.mgl                    setf mgl
     
    2369324440 au BufNewFile,BufRead *.mms                    call s:FTmms()
    2369424441 
    23695 @@ -2058,14 +2085,15 @@
     24442@@ -1619,6 +1652,20 @@
     24443   au BufNewFile,BufRead *.rnw,*.snw                    setf rnoweb
     24444 endif
     24445 
     24446+" R Markdown file
     24447+if has("fname_case")
     24448+  au BufNewFile,BufRead *.Rmd,*.rmd,*.Smd,*.smd                setf rmd
     24449+else
     24450+  au BufNewFile,BufRead *.rmd,*.smd                    setf rmd
     24451+endif
     24452+
     24453+" R reStructuredText file
     24454+if has("fname_case")
     24455+  au BufNewFile,BufRead *.Rrst,*.rrst,*.Srst,*.srst    setf rrst
     24456+else
     24457+  au BufNewFile,BufRead *.rrst,*.srst                  setf rrst
     24458+endif
     24459+
     24460 " Rexx, Rebol or R
     24461 au BufNewFile,BufRead *.r,*.R                  call s:FTr()
     24462 
     24463@@ -2058,14 +2105,15 @@
    2369624464 " SVG (Scalable Vector Graphics)
    2369724465 au BufNewFile,BufRead *.svg                    setf svg
     
    2371224480     return 1
    2371324481   endif
    23714 @@ -2092,7 +2120,7 @@
     24482@@ -2092,7 +2140,7 @@
    2371524483 
    2371624484 " Task
     
    2372124489 " Tcl (JACL too)
    2372224490 au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl   setf tcl
    23723 @@ -2217,12 +2245,12 @@
     24491@@ -2217,12 +2265,12 @@
    2372424492 au BufNewFile,BufRead */etc/updatedb.conf      setf updatedb
    2372524493 
     
    2373824506 " Vera
    2373924507 au BufNewFile,BufRead *.vr,*.vri,*.vrh         setf vera
    23740 @@ -2233,6 +2261,9 @@
     24508@@ -2233,6 +2281,9 @@
    2374124509 " Verilog-AMS HDL
    2374224510 au BufNewFile,BufRead *.va,*.vams              setf verilogams
     
    2374824516 au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst  setf vhdl
    2374924517 au BufNewFile,BufRead *.vhdl_[0-9]*            call s:StarSetf('vhdl')
    23750 @@ -2405,7 +2436,7 @@
     24518@@ -2405,7 +2456,7 @@
    2375124519 au BufNewFile,BufRead *.xsl,*.xslt             setf xslt
    2375224520 
     
    2375724525 " Yacc or racc
    2375824526 au BufNewFile,BufRead *.y                      call s:FTy()
     24527@@ -2630,7 +2681,7 @@
     24528 
     24529 " Plain text files, needs to be far down to not override others.  This avoids
     24530 " the "conf" type being used if there is a line starting with '#'.
     24531-au BufNewFile,BufRead *.txt,*.text             setf text
     24532+au BufNewFile,BufRead *.txt,*.text,README      setf text
     24533 
     24534 
     24535 " Use the filetype detect plugins.  They may overrule any of the previously
    2375924536diff -Naur vim74.orig/runtime/ftplugin/changelog.vim vim74/runtime/ftplugin/changelog.vim
    2376024537--- vim74.orig/runtime/ftplugin/changelog.vim   2012-08-23 20:47:22.000000000 +0000
    23761 +++ vim74/runtime/ftplugin/changelog.vim        2014-06-01 00:42:54.380863951 +0000
     24538+++ vim74/runtime/ftplugin/changelog.vim        2014-07-21 23:33:17.186859180 +0000
    2376224539@@ -1,7 +1,7 @@
    2376324540 " Vim filetype plugin file
     
    2387424651diff -Naur vim74.orig/runtime/ftplugin/clojure.vim vim74/runtime/ftplugin/clojure.vim
    2387524652--- vim74.orig/runtime/ftplugin/clojure.vim     2013-02-06 14:35:23.000000000 +0000
    23876 +++ vim74/runtime/ftplugin/clojure.vim  2014-06-01 00:42:54.384197276 +0000
     24653+++ vim74/runtime/ftplugin/clojure.vim  2014-07-21 23:33:17.193525829 +0000
    2387724654@@ -1,44 +1,60 @@
    2387824655 " Vim filetype plugin file
     
    2400624783diff -Naur vim74.orig/runtime/ftplugin/cobol.vim vim74/runtime/ftplugin/cobol.vim
    2400724784--- vim74.orig/runtime/ftplugin/cobol.vim       2010-05-15 11:04:03.000000000 +0000
    24008 +++ vim74/runtime/ftplugin/cobol.vim    2014-06-01 00:42:54.400863900 +0000
     24785+++ vim74/runtime/ftplugin/cobol.vim    2014-07-21 23:33:17.206859127 +0000
    2400924786@@ -1,7 +1,7 @@
    2401024787 " Vim filetype plugin file
     
    2405524832diff -Naur vim74.orig/runtime/ftplugin/debchangelog.vim vim74/runtime/ftplugin/debchangelog.vim
    2405624833--- vim74.orig/runtime/ftplugin/debchangelog.vim        2012-02-04 19:59:23.000000000 +0000
    24057 +++ vim74/runtime/ftplugin/debchangelog.vim     2014-06-01 00:42:54.534196894 +0000
     24834+++ vim74/runtime/ftplugin/debchangelog.vim     2014-07-21 23:33:17.316858840 +0000
    2405824835@@ -3,7 +3,7 @@
    2405924836 " Maintainer:   Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
     
    2407624853diff -Naur vim74.orig/runtime/ftplugin/fortran.vim vim74/runtime/ftplugin/fortran.vim
    2407724854--- vim74.orig/runtime/ftplugin/fortran.vim     2012-04-18 07:32:40.000000000 +0000
    24078 +++ vim74/runtime/ftplugin/fortran.vim  2014-06-01 00:42:54.750863009 +0000
     24855+++ vim74/runtime/ftplugin/fortran.vim  2014-07-21 23:33:17.536858266 +0000
    2407924856@@ -1,12 +1,12 @@
    2408024857 " Vim settings file
     
    2412624903 
    2412724904 let &cpoptions=s:cposet
     24905diff -Naur vim74.orig/runtime/ftplugin/html.vim vim74/runtime/ftplugin/html.vim
     24906--- vim74.orig/runtime/ftplugin/html.vim        2012-03-11 13:50:46.000000000 +0000
     24907+++ vim74/runtime/ftplugin/html.vim     2014-07-21 23:33:17.760191017 +0000
     24908@@ -20,49 +20,9 @@
     24909     setlocal formatoptions-=t formatoptions+=croql
     24910 endif
     24911 
     24912-
     24913 if exists('&omnifunc')
     24914-    " Distinguish between HTML versions
     24915-    " To use with other HTML versions add another
     24916-    " elseif condition to match proper DOCTYPE
     24917-    setlocal omnifunc=htmlcomplete#CompleteTags
     24918-
     24919-    if &filetype == 'xhtml'
     24920-            let b:html_omni_flavor = 'xhtml10s'
     24921-    else
     24922-            let b:html_omni_flavor = 'html401t'
     24923-    endif
     24924-    let i = 1
     24925-    let line = ""
     24926-    while i < 10 && i < line("$")
     24927-        let line = getline(i)
     24928-        if line =~ '<!DOCTYPE.*\<DTD '
     24929-            break
     24930-        endif
     24931-        let i += 1
     24932-    endwhile
     24933-    if line =~ '<!DOCTYPE.*\<DTD '  " doctype line found above
     24934-        if line =~ ' HTML 3\.2'
     24935-            let b:html_omni_flavor = 'html32'
     24936-        elseif line =~ ' XHTML 1\.1'
     24937-            let b:html_omni_flavor = 'xhtml11'
     24938-        else    " two-step detection with strict/frameset/transitional
     24939-            if line =~ ' XHTML 1\.0'
     24940-                let b:html_omni_flavor = 'xhtml10'
     24941-            elseif line =~ ' HTML 4\.01'
     24942-                let b:html_omni_flavor = 'html401'
     24943-            elseif line =~ ' HTML 4.0\>'
     24944-                let b:html_omni_flavor = 'html40'
     24945-            endif
     24946-            if line =~ '\<Transitional\>'
     24947-                let b:html_omni_flavor .= 't'
     24948-            elseif line =~ '\<Frameset\>'
     24949-                let b:html_omni_flavor .= 'f'
     24950-            else
     24951-                let b:html_omni_flavor .= 's'
     24952-            endif
     24953-        endif
     24954-    endif
     24955+  setlocal omnifunc=htmlcomplete#CompleteTags
     24956+  call htmlcomplete#DetectOmniFlavor()
     24957 endif
     24958 
     24959 " HTML:  thanks to Johannes Zellner and Benji Fisher.
    2412824960diff -Naur vim74.orig/runtime/ftplugin/j.vim vim74/runtime/ftplugin/j.vim
    2412924961--- vim74.orig/runtime/ftplugin/j.vim   1970-01-01 00:00:00.000000000 +0000
    24130 +++ vim74/runtime/ftplugin/j.vim        2014-06-01 00:42:55.014195672 +0000
     24962+++ vim74/runtime/ftplugin/j.vim        2014-07-21 23:33:17.823524185 +0000
    2413124963@@ -0,0 +1,75 @@
    2413224964+" Vim filetype plugin
     
    2420725039diff -Naur vim74.orig/runtime/ftplugin/jproperties.vim vim74/runtime/ftplugin/jproperties.vim
    2420825040--- vim74.orig/runtime/ftplugin/jproperties.vim 1970-01-01 00:00:00.000000000 +0000
    24209 +++ vim74/runtime/ftplugin/jproperties.vim      2014-06-01 00:42:55.057528895 +0000
     25041+++ vim74/runtime/ftplugin/jproperties.vim      2014-07-21 23:33:17.863524080 +0000
    2421025042@@ -0,0 +1,15 @@
    2421125043+" Vim filetype plugin
     
    2422425056+
    2422525057+let b:undo_ftplugin = "setl cms< com< fo<"
     25058diff -Naur vim74.orig/runtime/ftplugin/json.vim vim74/runtime/ftplugin/json.vim
     25059--- vim74.orig/runtime/ftplugin/json.vim        1970-01-01 00:00:00.000000000 +0000
     25060+++ vim74/runtime/ftplugin/json.vim     2014-07-21 23:33:17.896857327 +0000
     25061@@ -0,0 +1,17 @@
     25062+" Vim filetype plugin
     25063+" Language:            JSON
     25064+" Maintainer:          David Barnett <daviebdawg+vim@gmail.com>
     25065+" Last Change:         2014 Jul 16
     25066+
     25067+if exists('b:did_ftplugin')
     25068+  finish
     25069+endif
     25070+let b:did_ftplugin = 1
     25071+
     25072+let b:undo_ftplugin = 'setlocal formatoptions< comments< commentstring<'
     25073+
     25074+setlocal formatoptions-=t
     25075+
     25076+" JSON has no comments.
     25077+setlocal comments=
     25078+setlocal commentstring=
    2422625079diff -Naur vim74.orig/runtime/ftplugin/lisp.vim vim74/runtime/ftplugin/lisp.vim
    2422725080--- vim74.orig/runtime/ftplugin/lisp.vim        2013-02-13 11:35:55.000000000 +0000
    24228 +++ vim74/runtime/ftplugin/lisp.vim     2014-06-01 00:42:55.154195315 +0000
     25081+++ vim74/runtime/ftplugin/lisp.vim     2014-07-21 23:33:18.006857040 +0000
    2422925082@@ -4,7 +4,7 @@
    2423025083 " URL:          http://sites.google.com/site/khorser/opensource/vim
     
    2424825101diff -Naur vim74.orig/runtime/ftplugin/python.vim vim74/runtime/ftplugin/python.vim
    2424925102--- vim74.orig/runtime/ftplugin/python.vim      2012-04-30 11:49:26.000000000 +0000
    24250 +++ vim74/runtime/ftplugin/python.vim   2014-06-01 00:42:55.670860666 +0000
     25103+++ vim74/runtime/ftplugin/python.vim   2014-07-21 23:33:18.453522541 +0000
    2425125104@@ -1,7 +1,8 @@
    2425225105 " Vim filetype plugin file
     
    2432925182 let &cpo = s:keepcpo
    2433025183 unlet s:keepcpo
     25184diff -Naur vim74.orig/runtime/ftplugin/r.vim vim74/runtime/ftplugin/r.vim
     25185--- vim74.orig/runtime/ftplugin/r.vim   1970-01-01 00:00:00.000000000 +0000
     25186+++ vim74/runtime/ftplugin/r.vim        2014-07-21 23:33:18.483522462 +0000
     25187@@ -0,0 +1,31 @@
     25188+" Vim filetype plugin file
     25189+" Language: R
     25190+" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
     25191+" Last Change: Sun Feb 23, 2014  04:07PM
     25192+
     25193+" Only do this when not yet done for this buffer
     25194+if exists("b:did_ftplugin")
     25195+  finish
     25196+endif
     25197+
     25198+" Don't load another plugin for this buffer
     25199+let b:did_ftplugin = 1
     25200+
     25201+let s:cpo_save = &cpo
     25202+set cpo&vim
     25203+
     25204+setlocal iskeyword=@,48-57,_,.
     25205+setlocal formatoptions-=t
     25206+setlocal commentstring=#\ %s
     25207+setlocal comments=:#',:###,:##,:#
     25208+
     25209+if has("gui_win32") && !exists("b:browsefilter")
     25210+  let b:browsefilter = "R Source Files (*.R)\t*.R\n" .
     25211+        \ "Files that include R (*.Rnw *.Rd *.Rmd *.Rrst)\t*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
     25212+        \ "All Files (*.*)\t*.*\n"
     25213+endif
     25214+
     25215+let b:undo_ftplugin = "setl cms< com< fo< isk< | unlet! b:browsefilter"
     25216+
     25217+let &cpo = s:cpo_save
     25218+unlet s:cpo_save
    2433125219diff -Naur vim74.orig/runtime/ftplugin/registry.vim vim74/runtime/ftplugin/registry.vim
    2433225220--- vim74.orig/runtime/ftplugin/registry.vim    1970-01-01 00:00:00.000000000 +0000
    24333 +++ vim74/runtime/ftplugin/registry.vim 2014-06-01 00:42:55.717527214 +0000
     25221+++ vim74/runtime/ftplugin/registry.vim 2014-07-21 23:33:18.523522358 +0000
    2433425222@@ -0,0 +1,36 @@
    2433525223+" Vim filetype plugin file
     
    2436925257+let &cpo = s:cpo_save
    2437025258+unlet s:cpo_save
     25259diff -Naur vim74.orig/runtime/ftplugin/rhelp.vim vim74/runtime/ftplugin/rhelp.vim
     25260--- vim74.orig/runtime/ftplugin/rhelp.vim       1970-01-01 00:00:00.000000000 +0000
     25261+++ vim74/runtime/ftplugin/rhelp.vim    2014-07-21 23:33:18.536855656 +0000
     25262@@ -0,0 +1,29 @@
     25263+" Vim filetype plugin file
     25264+" Language: R help file
     25265+" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
     25266+" Last Change: Wed Jul 09, 2014  06:23PM
     25267+
     25268+" Only do this when not yet done for this buffer
     25269+if exists("b:did_ftplugin")
     25270+  finish
     25271+endif
     25272+
     25273+" Don't load another plugin for this buffer
     25274+let b:did_ftplugin = 1
     25275+
     25276+let s:cpo_save = &cpo
     25277+set cpo&vim
     25278+
     25279+setlocal iskeyword=@,48-57,_,.
     25280+
     25281+if has("gui_win32") && !exists("b:browsefilter")
     25282+  let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
     25283+        \ "All Files (*.*)\t*.*\n"
     25284+endif
     25285+
     25286+let b:undo_ftplugin = "setl isk< | unlet! b:browsefilter"
     25287+
     25288+let &cpo = s:cpo_save
     25289+unlet s:cpo_save
     25290+
     25291+" vim: sw=2
     25292diff -Naur vim74.orig/runtime/ftplugin/rmd.vim vim74/runtime/ftplugin/rmd.vim
     25293--- vim74.orig/runtime/ftplugin/rmd.vim 1970-01-01 00:00:00.000000000 +0000
     25294+++ vim74/runtime/ftplugin/rmd.vim      2014-07-21 23:33:18.563522253 +0000
     25295@@ -0,0 +1,43 @@
     25296+" Vim filetype plugin file
     25297+" Language: R help file
     25298+" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
     25299+" Last Change: Wed Jul 09, 2014  06:23PM
     25300+" Original work by Alex Zvoleff (adjusted for rmd by Michel Kuhlmann)
     25301+
     25302+" Only do this when not yet done for this buffer
     25303+if exists("b:did_ftplugin")
     25304+  finish
     25305+endif
     25306+
     25307+runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
     25308+
     25309+setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s
     25310+setlocal formatoptions+=tcqln
     25311+setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+
     25312+setlocal iskeyword=@,48-57,_,.
     25313+
     25314+let s:cpo_save = &cpo
     25315+set cpo&vim
     25316+
     25317+" Enables pandoc if it is installed
     25318+unlet! b:did_ftplugin
     25319+runtime ftplugin/pandoc.vim
     25320+
     25321+" Don't load another plugin for this buffer
     25322+let b:did_ftplugin = 1
     25323+
     25324+if has("gui_win32") && !exists("b:browsefilter")
     25325+  let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
     25326+        \ "All Files (*.*)\t*.*\n"
     25327+endif
     25328+
     25329+if exists('b:undo_ftplugin')
     25330+  let b:undo_ftplugin .= " | setl cms< com< fo< flp< isk< | unlet! b:browsefilter"
     25331+else
     25332+  let b:undo_ftplugin = "setl cms< com< fo< flp< isk< | unlet! b:browsefilter"
     25333+endif
     25334+
     25335+let &cpo = s:cpo_save
     25336+unlet s:cpo_save
     25337+
     25338+" vim: sw=2
     25339diff -Naur vim74.orig/runtime/ftplugin/rnoweb.vim vim74/runtime/ftplugin/rnoweb.vim
     25340--- vim74.orig/runtime/ftplugin/rnoweb.vim      1970-01-01 00:00:00.000000000 +0000
     25341+++ vim74/runtime/ftplugin/rnoweb.vim   2014-07-21 23:33:18.580188877 +0000
     25342@@ -0,0 +1,40 @@
     25343+" Vim filetype plugin file
     25344+" Language: Rnoweb
     25345+" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
     25346+" Last Change: Wed Jul 09, 2014  06:23PM
     25347+
     25348+" Only do this when not yet done for this buffer
     25349+if exists("b:did_ftplugin")
     25350+  finish
     25351+endif
     25352+
     25353+let s:cpo_save = &cpo
     25354+set cpo&vim
     25355+
     25356+runtime! ftplugin/tex.vim
     25357+
     25358+" Don't load another plugin for this buffer
     25359+let b:did_ftplugin = 1
     25360+
     25361+" Enables Vim-Latex-Suite, LaTeX-Box if installed
     25362+runtime ftplugin/tex_*.vim
     25363+
     25364+setlocal iskeyword=@,48-57,_,.
     25365+setlocal suffixesadd=.bib,.tex
     25366+setlocal comments=b:%,b:#,b:##,b:###,b:#'
     25367+
     25368+if has("gui_win32") && !exists("b:browsefilter")
     25369+  let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
     25370+        \ "All Files (*.*)\t*.*\n"
     25371+endif
     25372+
     25373+if exists('b:undo_ftplugin')
     25374+  let b:undo_ftplugin .= " | setl isk< sua< com< | unlet! b:browsefilter"
     25375+else
     25376+  let b:undo_ftplugin = "setl isk< sua< com< | unlet! b:browsefilter"
     25377+endif
     25378+
     25379+let &cpo = s:cpo_save
     25380+unlet s:cpo_save
     25381+
     25382+" vim: sw=2
     25383diff -Naur vim74.orig/runtime/ftplugin/rrst.vim vim74/runtime/ftplugin/rrst.vim
     25384--- vim74.orig/runtime/ftplugin/rrst.vim        1970-01-01 00:00:00.000000000 +0000
     25385+++ vim74/runtime/ftplugin/rrst.vim     2014-07-21 23:33:18.586855526 +0000
     25386@@ -0,0 +1,37 @@
     25387+" Vim filetype plugin file
     25388+" Language: reStructuredText documentation format with R code
     25389+" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
     25390+" Last Change: Wed Jul 09, 2014  06:23PM
     25391+" Original work by Alex Zvoleff
     25392+
     25393+" Only do this when not yet done for this buffer
     25394+if exists("b:did_ftplugin")
     25395+  finish
     25396+endif
     25397+
     25398+" Don't load another plugin for this buffer
     25399+let b:did_ftplugin = 1
     25400+
     25401+let s:cpo_save = &cpo
     25402+set cpo&vim
     25403+
     25404+setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s
     25405+setlocal formatoptions+=tcqln
     25406+setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+
     25407+setlocal iskeyword=@,48-57,_,.
     25408+
     25409+if has("gui_win32") && !exists("b:browsefilter")
     25410+  let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" .
     25411+        \ "All Files (*.*)\t*.*\n"
     25412+endif
     25413+
     25414+if exists('b:undo_ftplugin')
     25415+  let b:undo_ftplugin .= " | setl cms< com< fo< flp< isk< | unlet! b:browsefilter"
     25416+else
     25417+  let b:undo_ftplugin = "setl cms< com< fo< flp< isk< | unlet! b:browsefilter"
     25418+endif
     25419+
     25420+let &cpo = s:cpo_save
     25421+unlet s:cpo_save
     25422+
     25423+" vim: sw=2
    2437125424diff -Naur vim74.orig/runtime/ftplugin/scheme.vim vim74/runtime/ftplugin/scheme.vim
    2437225425--- vim74.orig/runtime/ftplugin/scheme.vim      2013-02-13 11:35:55.000000000 +0000
    24373 +++ vim74/runtime/ftplugin/scheme.vim   2014-06-01 00:42:55.780860386 +0000
     25426+++ vim74/runtime/ftplugin/scheme.vim   2014-07-21 23:33:18.620188772 +0000
    2437425427@@ -4,7 +4,7 @@
    2437525428 " URL:          http://sites.google.com/site/khorser/opensource/vim
     
    2439425447diff -Naur vim74.orig/runtime/ftplugin/spec.vim vim74/runtime/ftplugin/spec.vim
    2439525448--- vim74.orig/runtime/ftplugin/spec.vim        2012-03-07 12:16:03.000000000 +0000
    24396 +++ vim74/runtime/ftplugin/spec.vim     2014-06-01 00:42:55.910860055 +0000
     25449+++ vim74/runtime/ftplugin/spec.vim     2014-07-21 23:33:18.763521732 +0000
    2439725450@@ -1,7 +1,8 @@
    2439825451 " Plugin to update the %changelog section of RPM spec files
     
    2441925472diff -Naur vim74.orig/runtime/ftplugin/systemverilog.vim vim74/runtime/ftplugin/systemverilog.vim
    2442025473--- vim74.orig/runtime/ftplugin/systemverilog.vim       1970-01-01 00:00:00.000000000 +0000
    24421 +++ vim74/runtime/ftplugin/systemverilog.vim    2014-06-01 00:42:55.994193176 +0000
     25474+++ vim74/runtime/ftplugin/systemverilog.vim    2014-07-21 23:33:18.843521523 +0000
    2442225475@@ -0,0 +1,11 @@
    2442325476+" Vim filetype plugin file
     
    2443225485+" Behaves just like Verilog
    2443325486+runtime! ftplugin/verilog.vim
     25487diff -Naur vim74.orig/runtime/ftplugin/text.vim vim74/runtime/ftplugin/text.vim
     25488--- vim74.orig/runtime/ftplugin/text.vim        1970-01-01 00:00:00.000000000 +0000
     25489+++ vim74/runtime/ftplugin/text.vim     2014-07-21 23:33:18.910188015 +0000
     25490@@ -0,0 +1,17 @@
     25491+" Vim filetype plugin
     25492+" Language:            Text
     25493+" Maintainer:          David Barnett <daviebdawg+vim@gmail.com>
     25494+" Last Change:         2014 Jul 09
     25495+
     25496+if exists('b:did_ftplugin')
     25497+  finish
     25498+endif
     25499+let b:did_ftplugin = 1
     25500+
     25501+let b:undo_ftplugin = 'setlocal comments< commentstring<'
     25502+
     25503+" We intentionally don't set formatoptions-=t since text should wrap as text.
     25504+
     25505+" Pseudo comment leaders to indent bulleted lists.
     25506+setlocal comments=fb:-,fb:*
     25507+setlocal commentstring=
    2443425508diff -Naur vim74.orig/runtime/indent/clojure.vim vim74/runtime/indent/clojure.vim
    2443525509--- vim74.orig/runtime/indent/clojure.vim       2013-02-06 14:35:23.000000000 +0000
    24436 +++ vim74/runtime/indent/clojure.vim    2014-06-01 00:42:56.610858273 +0000
     25510+++ vim74/runtime/indent/clojure.vim    2014-07-21 23:33:19.486853177 +0000
    2443725511@@ -1,23 +1,27 @@
    2443825512 " Vim indent file
     
    2512526199-" vim:sts=4 sw=4 et:
    2512626200+" vim:sts=8:sw=8:ts=8:noet
     26201diff -Naur vim74.orig/runtime/indent/html.vim vim74/runtime/indent/html.vim
     26202--- vim74.orig/runtime/indent/html.vim  2013-06-13 17:50:24.000000000 +0000
     26203+++ vim74/runtime/indent/html.vim       2014-07-21 23:33:19.803519017 +0000
     26204@@ -1,505 +1,1003 @@
     26205 " Vim indent script for HTML
     26206-" General: "{{{
     26207-" File:                html.vim (Vimscript #2075)
     26208-" Author:      Andy Wokula <anwoku@yahoo.de>
     26209-" Last Change: 2013 Jun 12
     26210-" Rev Days:     13
     26211-" Version:     0.9
     26212-" Vim Version: Vim7
     26213-" Description:
     26214-"   Improved version of the distributed html indent script, faster on a
     26215-"   range of lines.
     26216+" Header: "{{{
     26217+" Maintainer:  Bram Moolenaar
     26218+" Original Author: Andy Wokula <anwoku@yahoo.de>
     26219+" Last Change: 2014 Jul 04
     26220+" Version:     1.0
     26221+" Description: HTML indent script with cached state for faster indenting on a
     26222+"              range of lines.
     26223+"              Supports template systems through hooks.
     26224+"              Supports Closure stylesheets.
     26225 "
     26226 " Credits:
     26227 "      indent/html.vim (2006 Jun 05) from J. Zellner
     26228 "      indent/css.vim (2006 Dec 20) from N. Weibull
     26229 "
     26230 " History:
     26231+" 2014 June    (v1.0) overhaul (Bram)
     26232 " 2012 Oct 21  (v0.9) added support for shiftwidth()
     26233 " 2011 Sep 09  (v0.8) added HTML5 tags (thx to J. Zuckerman)
     26234 " 2008 Apr 28  (v0.6) revised customization
     26235 " 2008 Mar 09  (v0.5) fixed 'indk' issue (thx to C.J. Robinson)
     26236-" }}}
     26237+"}}}
     26238 
     26239-" Init Folklore, check user settings (2nd time ++) "{{{
     26240-if exists("b:did_indent")
     26241-    finish
     26242+" Init Folklore, check user settings (2nd time ++)
     26243+if exists("b:did_indent") "{{{
     26244+  finish
     26245 endif
     26246 let b:did_indent = 1
     26247 
     26248 setlocal indentexpr=HtmlIndent()
     26249 setlocal indentkeys=o,O,<Return>,<>>,{,},!^F
     26250 
     26251-let b:indent = {"lnum": -1}
     26252-let b:undo_indent = "set inde< indk<| unlet b:indent"
     26253+" "j1" is included to make cindent() work better with Javascript.
     26254+setlocal cino=j1
     26255+" "J1" should be included, but it doen't work properly before 7.4.355.
     26256+if has("patch-7.4.355")
     26257+  setlocal cino+=J1
     26258+endif
     26259+" Before patch 7.4.355 indenting after "(function() {" does not work well, add
     26260+" )2 to limit paren search.
     26261+if !has("patch-7.4.355")
     26262+  setlocal cino+=)2
     26263+endif
     26264+
     26265+" Needed for % to work when finding start/end of a tag.
     26266+setlocal matchpairs+=<:>
     26267 
     26268-" Load Once:
     26269-if exists("*HtmlIndent")
     26270-    call HtmlIndent_CheckUserSettings()
     26271-    finish
     26272+let b:undo_indent = "setlocal inde< indk< cino<"
     26273+
     26274+" b:hi_indent keeps state to speed up indenting consecutive lines.
     26275+let b:hi_indent = {"lnum": -1}
     26276+
     26277+"""""" Code below this is loaded only once. """""
     26278+if exists("*HtmlIndent") && !exists('g:force_reload_html')
     26279+  call HtmlIndent_CheckUserSettings()
     26280+  finish
     26281 endif
     26282 
     26283-" Patch 7.3.694
     26284+" shiftwidth() exists since patch 7.3.694
     26285 if exists('*shiftwidth')
     26286-    let s:ShiftWidth = function('shiftwidth')
     26287+  let s:ShiftWidth = function('shiftwidth')
     26288 else
     26289-    func! s:ShiftWidth()
     26290-       return &shiftwidth
     26291-    endfunc
     26292+  func! s:ShiftWidth()
     26293+    return &shiftwidth
     26294+  endfunc
     26295 endif
     26296 
     26297+" Allow for line continuation below.
     26298 let s:cpo_save = &cpo
     26299 set cpo-=C
     26300 "}}}
     26301 
     26302-func! HtmlIndent_CheckUserSettings() "{{{
     26303-    if exists("g:html_indent_inctags")
     26304-       call s:AddITags(split(g:html_indent_inctags, ","))
     26305-    endif
     26306-    if exists("g:html_indent_autotags")
     26307-       call s:RemoveITags(split(g:html_indent_autotags, ","))
     26308-    endif
     26309+" Check and process settings from b:html_indent and g:html_indent... variables.
     26310+" Prefer using buffer-local settings over global settings, so that there can
     26311+" be defaults for all HTML files and exceptions for specific types of HTML
     26312+" files.
     26313+func! HtmlIndent_CheckUserSettings()
     26314+  "{{{
     26315+  let inctags = ''
     26316+  if exists("b:html_indent_inctags")
     26317+    let inctags = b:html_indent_inctags
     26318+  elseif exists("g:html_indent_inctags")
     26319+    let inctags = g:html_indent_inctags
     26320+  endif
     26321+  let b:hi_tags = {}
     26322+  if len(inctags) > 0
     26323+    call s:AddITags(b:hi_tags, split(inctags, ","))
     26324+  endif
     26325+
     26326+  let autotags = ''
     26327+  if exists("b:html_indent_autotags")
     26328+    let autotags = b:html_indent_autotags
     26329+  elseif exists("g:html_indent_autotags")
     26330+    let autotags = g:html_indent_autotags
     26331+  endif
     26332+  let b:hi_removed_tags = {}
     26333+  if autotags
     26334+    call s:RemoveITags(b:hi_removed_tags, split(autotags, ","))
     26335+  endif
     26336+
     26337+  " Syntax names indicating being inside a string of an attribute value.
     26338+  let string_names = []
     26339+  if exists("b:html_indent_string_names")
     26340+    let string_names = b:html_indent_string_names
     26341+  elseif exists("g:html_indent_string_names")
     26342+    let string_names = g:html_indent_string_names
     26343+  endif
     26344+  let b:hi_insideStringNames = ['htmlString']
     26345+  if len(string_names) > 0
     26346+    for s in string_names
     26347+      call add(b:hi_insideStringNames, s)
     26348+    endfor
     26349+  endif
     26350 
     26351-    let indone = {"zero": 0
     26352-               \,"auto": "indent(prevnonblank(v:lnum-1))"
     26353-               \,"inc": "b:indent.blocktagind + s:ShiftWidth()"}
     26354-    if exists("g:html_indent_script1")
     26355-       let s:js1indent = get(indone, g:html_indent_script1, indone.zero)
     26356-    endif
     26357-    if exists("g:html_indent_style1")
     26358-       let s:css1indent = get(indone, g:html_indent_style1, indone.zero)
     26359+  " Syntax names indicating being inside a tag.
     26360+  let tag_names = []
     26361+  if exists("b:html_indent_tag_names")
     26362+    let tag_names = b:html_indent_tag_names
     26363+  elseif exists("g:html_indent_tag_names")
     26364+    let tag_names = g:html_indent_tag_names
     26365+  endif
     26366+  let b:hi_insideTagNames = ['htmlTag', 'htmlScriptTag']
     26367+  if len(tag_names) > 0
     26368+    for s in tag_names
     26369+      call add(b:hi_insideTagNames, s)
     26370+    endfor
     26371+  endif
     26372+
     26373+  let indone = {"zero": 0
     26374+              \,"auto": "indent(prevnonblank(v:lnum-1))"
     26375+              \,"inc": "b:hi_indent.blocktagind + s:ShiftWidth()"}
     26376+
     26377+  let script1 = ''
     26378+  if exists("b:html_indent_script1")
     26379+    let script1 = b:html_indent_script1
     26380+  elseif exists("g:html_indent_script1")
     26381+    let script1 = g:html_indent_script1
     26382+  endif
     26383+  if len(script1) > 0
     26384+    let b:hi_js1indent = get(indone, script1, indone.zero)
     26385+  else
     26386+    let b:hi_js1indent = 0
     26387+  endif
     26388+
     26389+  let style1 = ''
     26390+  if exists("b:html_indent_style1")
     26391+    let style1 = b:html_indent_style1
     26392+  elseif exists("g:html_indent_style1")
     26393+    let style1 = g:html_indent_style1
     26394+  endif
     26395+  if len(style1) > 0
     26396+    let b:hi_css1indent = get(indone, style1, indone.zero)
     26397+  else
     26398+    let b:hi_css1indent = 0
     26399+  endif
     26400+
     26401+  if !exists('b:html_indent_line_limit')
     26402+    if exists('g:html_indent_line_limit')
     26403+      let b:html_indent_line_limit = g:html_indent_line_limit
     26404+    else
     26405+      let b:html_indent_line_limit = 200
     26406     endif
     26407+  endif
     26408 endfunc "}}}
     26409 
     26410-" Init Script Vars  "{{{
     26411-let s:usestate = 1
     26412-let s:css1indent = 0
     26413-let s:js1indent = 0
     26414-" not to be changed:
     26415-let s:endtags = [0,0,0,0,0,0,0,0]   " some places unused
     26416-let s:newstate = {}
     26417+" Init Script Vars
     26418+"{{{
     26419+let b:hi_lasttick = 0
     26420+let b:hi_newstate = {}
     26421 let s:countonly = 0
     26422  "}}}
     26423-func! s:AddITags(taglist) "{{{
     26424-    for itag in a:taglist
     26425-       let s:indent_tags[itag] = 1
     26426-       let s:indent_tags['/'.itag] = -1
     26427-    endfor
     26428-endfunc "}}}
     26429-func! s:AddBlockTag(tag, id, ...) "{{{
     26430-    if !(a:id >= 2 && a:id < 2+len(s:endtags))
     26431-       return
     26432-    endif
     26433-    let s:indent_tags[a:tag] = a:id
     26434-    if a:0 == 0
     26435-       let s:indent_tags['/'.a:tag] = -a:id
     26436-       let s:endtags[a:id-2] = "</".a:tag.">"
     26437-    else
     26438-       let s:indent_tags[a:1] = -a:id
     26439-       let s:endtags[a:id-2] = a:1
     26440-    endif
     26441-endfunc "}}}
     26442-func! s:RemoveITags(taglist) "{{{
     26443-    " remove itags (protect blocktags from being removed)
     26444-    for itag in a:taglist
     26445-       if !has_key(s:indent_tags, itag) || s:indent_tags[itag] != 1
     26446-           continue
     26447-       endif
     26448-       unlet s:indent_tags[itag]
     26449-       if itag =~ '^\w\+$'
     26450-           unlet s:indent_tags["/".itag]
     26451-       endif
     26452-    endfor
     26453-endfunc "}}}
     26454-" Add Indent Tags: {{{
     26455-if !exists("s:indent_tags")
     26456-    let s:indent_tags = {}
     26457-endif
     26458 
     26459-" old tags:
     26460-call s:AddITags(['a', 'abbr', 'acronym', 'address', 'b', 'bdo', 'big',
     26461-    \ 'blockquote', 'button', 'caption', 'center', 'cite', 'code', 'colgroup',
     26462-    \ 'del', 'dfn', 'dir', 'div', 'dl', 'em', 'fieldset', 'font', 'form',
     26463-    \ 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'i', 'iframe', 'ins', 'kbd',
     26464-    \ 'label', 'legend', 'map', 'menu', 'noframes', 'noscript', 'object', 'ol',
     26465+" Fill the s:indent_tags dict with known tags.
     26466+" The key is "tagname" or "/tagname".  {{{
     26467+" The value is:
     26468+" 1   opening tag
     26469+" 2   "pre"
     26470+" 3   "script"
     26471+" 4   "style"
     26472+" 5   comment start
     26473+" -1  closing tag
     26474+" -2  "/pre"
     26475+" -3  "/script"
     26476+" -4  "/style"
     26477+" -5  comment end
     26478+let s:indent_tags = {}
     26479+let s:endtags = [0,0,0,0,0,0]   " long enough for the highest index
     26480+"}}}
     26481+
     26482+" Add a list of tag names for a pair of <tag> </tag> to "tags".
     26483+func! s:AddITags(tags, taglist)
     26484+  "{{{
     26485+  for itag in a:taglist
     26486+    let a:tags[itag] = 1
     26487+    let a:tags['/' . itag] = -1
     26488+  endfor
     26489+endfunc "}}}
     26490+
     26491+" Take a list of tag name pairs that are not to be used as tag pairs.
     26492+func! s:RemoveITags(tags, taglist)
     26493+  "{{{
     26494+  for itag in a:taglist
     26495+    let a:tags[itag] = 1
     26496+    let a:tags['/' . itag] = 1
     26497+  endfor
     26498+endfunc "}}}
     26499+
     26500+" Add a block tag, that is a tag with a different kind of indenting.
     26501+func! s:AddBlockTag(tag, id, ...)
     26502+  "{{{
     26503+  if !(a:id >= 2 && a:id < len(s:endtags))
     26504+    echoerr 'AddBlockTag ' . a:id
     26505+    return
     26506+  endif
     26507+  let s:indent_tags[a:tag] = a:id
     26508+  if a:0 == 0
     26509+    let s:indent_tags['/' . a:tag] = -a:id
     26510+    let s:endtags[a:id] = "</" . a:tag . ">"
     26511+  else
     26512+    let s:indent_tags[a:1] = -a:id
     26513+    let s:endtags[a:id] = a:1
     26514+  endif
     26515+endfunc "}}}
     26516+
     26517+" Add known tag pairs.
     26518+" Self-closing tags and tags that are sometimes {{{
     26519+" self-closing (e.g., <p>) are not here (when encountering </p> we can find
     26520+" the matching <p>, but not the other way around).
     26521+" Old HTML tags:
     26522+call s:AddITags(s:indent_tags, [
     26523+    \ 'a', 'abbr', 'acronym', 'address', 'b', 'bdo', 'big',
     26524+    \ 'blockquote', 'body', 'button', 'caption', 'center', 'cite', 'code',
     26525+    \ 'colgroup', 'del', 'dfn', 'dir', 'div', 'dl', 'em', 'fieldset', 'font',
     26526+    \ 'form', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'html',
     26527+    \ 'i', 'iframe', 'ins', 'kbd', 'label', 'legend', 'li',
     26528+    \ 'map', 'menu', 'noframes', 'noscript', 'object', 'ol',
     26529     \ 'optgroup', 'q', 's', 'samp', 'select', 'small', 'span', 'strong', 'sub',
     26530     \ 'sup', 'table', 'textarea', 'title', 'tt', 'u', 'ul', 'var', 'th', 'td',
     26531-    \ 'tr', 'tfoot', 'thead'])
     26532+    \ 'tr', 'tbody', 'tfoot', 'thead'])
     26533 
     26534-" tags added 2011 Sep 09 (especially HTML5 tags):
     26535-call s:AddITags(['area', 'article', 'aside', 'audio', 'bdi', 'canvas',
     26536+" Tags added 2011 Sep 09 (especially HTML5 tags):
     26537+call s:AddITags(s:indent_tags, [
     26538+    \ 'area', 'article', 'aside', 'audio', 'bdi', 'canvas',
     26539     \ 'command', 'datalist', 'details', 'embed', 'figure', 'footer',
     26540     \ 'header', 'group', 'keygen', 'mark', 'math', 'meter', 'nav', 'output',
     26541     \ 'progress', 'ruby', 'section', 'svg', 'texture', 'time', 'video',
     26542     \ 'wbr', 'text'])
     26543-
     26544 "}}}
     26545-" Add Block Tags: contain alien content "{{{
     26546+
     26547+" Add Block Tags: these contain alien content
     26548+"{{{
     26549 call s:AddBlockTag('pre', 2)
     26550 call s:AddBlockTag('script', 3)
     26551 call s:AddBlockTag('style', 4)
     26552 call s:AddBlockTag('<!--', 5, '-->')
     26553 "}}}
     26554 
     26555-func! s:CountITags(...) "{{{
     26556-
     26557-    " relative indent steps for current line [unit &sw]:
     26558-    let s:curind = 0
     26559-    " relative indent steps for next line [unit &sw]:
     26560-    let s:nextrel = 0
     26561-
     26562-    if a:0==0
     26563-       let s:block = s:newstate.block
     26564-       let tmpline = substitute(s:curline, '<\zs\/\=\w\+\>\|<!--\|-->', '\=s:CheckTag(submatch(0))', 'g')
     26565-       if s:block == 3
     26566-           let s:newstate.scripttype = s:GetScriptType(matchstr(tmpline, '\C.*<SCRIPT\>\zs[^>]*'))
     26567-       endif
     26568-       let s:newstate.block = s:block
     26569-    else
     26570-       let s:block = 0         " assume starting outside of a block
     26571-       let s:countonly = 1     " don't change state
     26572-       let tmpline = substitute(s:altline, '<\zs\/\=\w\+\>\|<!--\|-->', '\=s:CheckTag(submatch(0))', 'g')
     26573-       let s:countonly = 0
     26574-    endif
     26575-endfunc "}}}
     26576-func! s:CheckTag(itag) "{{{
     26577-    " "tag" or "/tag" or "<!--" or "-->"
     26578-    let ind = get(s:indent_tags, a:itag)
     26579-    if ind == -1
     26580-       " closing tag
     26581-       if s:block != 0
     26582-           " ignore itag within a block
     26583-           return "foo"
     26584-       endif
     26585-       if s:nextrel == 0
     26586-           let s:curind -= 1
     26587-       else
     26588-           let s:nextrel -= 1
     26589-       endif
     26590-       " if s:curind >= 1
     26591-       "     let s:curind -= 1
     26592-       " else
     26593-       "     let s:nextrel -= 1
     26594-       " endif
     26595-    elseif ind == 1
     26596-       " opening tag
     26597-       if s:block != 0
     26598-           return "foo"
     26599-       endif
     26600-       let s:nextrel += 1
     26601-    elseif ind != 0
     26602-       " block-tag (opening or closing)
     26603-       return s:Blocktag(a:itag, ind)
     26604-    endif
     26605-    " else ind==0 (other tag found): keep indent
     26606-    return "foo"   " no matter
     26607-endfunc "}}}
     26608-func! s:Blocktag(blocktag, ind) "{{{
     26609-    if a:ind > 0
     26610-       " a block starts here
     26611-       if s:block != 0
     26612-           " already in a block (nesting) - ignore
     26613-           " especially ignore comments after other blocktags
     26614-           return "foo"
     26615-       endif
     26616-       let s:block = a:ind             " block type
     26617-       if s:countonly
     26618-           return "foo"
     26619-       endif
     26620-       let s:newstate.blocklnr = v:lnum
     26621-       " save allover indent for the endtag
     26622-       let s:newstate.blocktagind = b:indent.baseindent + (s:nextrel + s:curind) * s:ShiftWidth()
     26623-       if a:ind == 3
     26624-           return "SCRIPT"    " all except this must be lowercase
     26625-           " line is to be checked again for the type attribute
     26626-       endif
     26627-    else
     26628-       let s:block = 0
     26629-       " we get here if starting and closing block-tag on same line
     26630+" Return non-zero when "tagname" is an opening tag, not being a block tag, for
     26631+" which there should be a closing tag.  Can be used by scripts that include
     26632+" HTML indenting.
     26633+func! HtmlIndent_IsOpenTag(tagname)
     26634+  "{{{
     26635+  if get(s:indent_tags, a:tagname) == 1
     26636+    return 1
     26637+  endif
     26638+  return get(b:hi_tags, a:tagname) == 1
     26639+endfunc "}}}
     26640+
     26641+" Get the value for "tagname", taking care of buffer-local tags.
     26642+func! s:get_tag(tagname)
     26643+  "{{{
     26644+  let i = get(s:indent_tags, a:tagname)
     26645+  if (i == 1 || i == -1) && get(b:hi_removed_tags, a:tagname) != 0
     26646+    return 0
     26647+  endif
     26648+  if i == 0
     26649+    let i = get(b:hi_tags, a:tagname)
     26650+  endif
     26651+  return i
     26652+endfunc "}}}
     26653+
     26654+" Count the number of start and end tags in "text".
     26655+func! s:CountITags(text)
     26656+  "{{{
     26657+  " Store the result in s:curind and s:nextrel.
     26658+  let s:curind = 0  " relative indent steps for current line [unit &sw]:
     26659+  let s:nextrel = 0  " relative indent steps for next line [unit &sw]:
     26660+  let s:block = 0              " assume starting outside of a block
     26661+  let s:countonly = 1  " don't change state
     26662+  call substitute(a:text, '<\zs/\=\w\+\>\|<!--\|-->', '\=s:CheckTag(submatch(0))', 'g')
     26663+  let s:countonly = 0
     26664+endfunc "}}}
     26665+
     26666+" Count the number of start and end tags in text.
     26667+func! s:CountTagsAndState(text)
     26668+  "{{{
     26669+  " Store the result in s:curind and s:nextrel.  Update b:hi_newstate.block.
     26670+  let s:curind = 0  " relative indent steps for current line [unit &sw]:
     26671+  let s:nextrel = 0  " relative indent steps for next line [unit &sw]:
     26672+
     26673+  let s:block = b:hi_newstate.block
     26674+  let tmp = substitute(a:text, '<\zs/\=\w\+\>\|<!--\|-->', '\=s:CheckTag(submatch(0))', 'g')
     26675+  if s:block == 3
     26676+    let b:hi_newstate.scripttype = s:GetScriptType(matchstr(tmp, '\C.*<SCRIPT\>\zs[^>]*'))
     26677+  endif
     26678+  let b:hi_newstate.block = s:block
     26679+endfunc "}}}
     26680+
     26681+" Used by s:CountITags() and s:CountTagsAndState().
     26682+func! s:CheckTag(itag)
     26683+  "{{{
     26684+  " Returns an empty string or "SCRIPT".
     26685+  " a:itag can be "tag" or "/tag" or "<!--" or "-->"
     26686+  let ind = s:get_tag(a:itag)
     26687+  if ind == -1
     26688+    " closing tag
     26689+    if s:block != 0
     26690+      " ignore itag within a block
     26691+      return ""
     26692     endif
     26693-    return "foo"
     26694-endfunc "}}}
     26695-func! s:GetScriptType(str) "{{{
     26696-    if a:str == "" || a:str =~ "java"
     26697-       return "javascript"
     26698+    if s:nextrel == 0
     26699+      let s:curind -= 1
     26700     else
     26701-       return ""
     26702+      let s:nextrel -= 1
     26703     endif
     26704-endfunc "}}}
     26705+  elseif ind == 1
     26706+    " opening tag
     26707+    if s:block != 0
     26708+      return ""
     26709+    endif
     26710+    let s:nextrel += 1
     26711+  elseif ind != 0
     26712+    " block-tag (opening or closing)
     26713+    return s:CheckBlockTag(a:itag, ind)
     26714+  " else ind==0 (other tag found): keep indent
     26715+  endif
     26716+  return ""
     26717+endfunc "}}}
     26718+
     26719+" Used by s:CheckTag(). Returns an empty string or "SCRIPT".
     26720+func! s:CheckBlockTag(blocktag, ind)
     26721+  "{{{
     26722+  if a:ind > 0
     26723+    " a block starts here
     26724+    if s:block != 0
     26725+      " already in a block (nesting) - ignore
     26726+      " especially ignore comments after other blocktags
     26727+      return ""
     26728+    endif
     26729+    let s:block = a:ind                " block type
     26730+    if s:countonly
     26731+      return ""
     26732+    endif
     26733+    let b:hi_newstate.blocklnr = v:lnum
     26734+    " save allover indent for the endtag
     26735+    let b:hi_newstate.blocktagind = b:hi_indent.baseindent + (s:nextrel + s:curind) * s:ShiftWidth()
     26736+    if a:ind == 3
     26737+      return "SCRIPT"    " all except this must be lowercase
     26738+      " line is to be checked again for the type attribute
     26739+    endif
     26740+  else
     26741+    let s:block = 0
     26742+    " we get here if starting and closing a block-tag on the same line
     26743+  endif
     26744+  return ""
     26745+endfunc "}}}
     26746+
     26747+" Return the <script> type: either "javascript" or ""
     26748+func! s:GetScriptType(str)
     26749+  "{{{
     26750+  if a:str == "" || a:str =~ "java"
     26751+    return "javascript"
     26752+  else
     26753+    return ""
     26754+  endif
     26755+endfunc "}}}
     26756+
     26757+" Look back in the file, starting at a:lnum - 1, to compute a state for the
     26758+" start of line a:lnum.  Return the new state.
     26759+func! s:FreshState(lnum)
     26760+  "{{{
     26761+  " A state is to know ALL relevant details about the
     26762+  " lines 1..a:lnum-1, initial calculating (here!) can be slow, but updating is
     26763+  " fast (incremental).
     26764+  " TODO: this should be split up in detecting the block type and computing the
     26765+  " indent for the block type, so that when we do not know the indent we do
     26766+  " not need to clear the whole state and re-detect the block type again.
     26767+  " State:
     26768+  "    lnum            last indented line == prevnonblank(a:lnum - 1)
     26769+  "    block = 0       a:lnum located within special tag: 0:none, 2:<pre>,
     26770+  "                    3:<script>, 4:<style>, 5:<!--
     26771+  "    baseindent      use this indent for line a:lnum as a start - kind of
     26772+  "                    autoindent (if block==0)
     26773+  "    scripttype = '' type attribute of a script tag (if block==3)
     26774+  "    blocktagind     indent for current opening (get) and closing (set)
     26775+  "                    blocktag (if block!=0)
     26776+  "    blocklnr        lnum of starting blocktag (if block!=0)
     26777+  "    inattr          line {lnum} starts with attributes of a tag
     26778+  let state = {}
     26779+  let state.lnum = prevnonblank(a:lnum - 1)
     26780+  let state.scripttype = ""
     26781+  let state.blocktagind = -1
     26782+  let state.block = 0
     26783+  let state.baseindent = 0
     26784+  let state.blocklnr = 0
     26785+  let state.inattr = 0
     26786+
     26787+  if state.lnum == 0
     26788+    return state
     26789+  endif
     26790 
     26791-func! s:FreshState(lnum) "{{{
     26792-    " Look back in the file (lines 1 to a:lnum-1) to calc a state for line
     26793-    " a:lnum.  A state is to know ALL relevant details about the lines
     26794-    " 1..a:lnum-1, initial calculating (here!) can be slow, but updating is
     26795-    " fast (incremental).
     26796-    " State:
     26797-    "  lnum            last indented line == prevnonblank(a:lnum - 1)
     26798-    "  block = 0       a:lnum located within special tag: 0:none, 2:<pre>,
     26799-    "                  3:<script>, 4:<style>, 5:<!--
     26800-    "  baseindent      use this indent for line a:lnum as a start - kind of
     26801-    "                  autoindent (if block==0)
     26802-    "  scripttype = '' type attribute of a script tag (if block==3)
     26803-    "  blocktagind     indent for current opening (get) and closing (set)
     26804-    "                  blocktag (if block!=0)
     26805-    "  blocklnr        lnum of starting blocktag (if block!=0)
     26806-    "  inattr          line {lnum} starts with attributes of a tag
     26807-    let state = {}
     26808-    let state.lnum = prevnonblank(a:lnum - 1)
     26809-    let state.scripttype = ""
     26810-    let state.blocktagind = -1
     26811-    let state.block = 0
     26812-    let state.baseindent = 0
     26813-    let state.blocklnr = 0
     26814-    let state.inattr = 0
     26815-
     26816-    if state.lnum == 0
     26817-       return state
     26818-    endif
     26819-
     26820-    " Heuristic:
     26821-    " remember startline state.lnum
     26822-    " look back for <pre, </pre, <script, </script, <style, </style tags
     26823-    " remember stopline
     26824-    " if opening tag found,
     26825-    "  assume a:lnum within block
     26826-    " else
     26827-    "  look back in result range (stopline, startline) for comment
     26828-    "      \ delimiters (<!--, -->)
     26829-    "  if comment opener found,
     26830-    "      assume a:lnum within comment
     26831-    "  else
     26832-    "      assume usual html for a:lnum
     26833-    "      if a:lnum-1 has a closing comment
     26834-    "          look back to get indent of comment opener
     26835-    " FI
     26836-
     26837-    " look back for blocktag
     26838-    call cursor(a:lnum, 1)
     26839-    let [stopline, stopcol] = searchpos('\c<\zs\/\=\%(pre\>\|script\>\|style\>\)', "bW")
     26840+  " Heuristic:
     26841+  " remember startline state.lnum
     26842+  " look back for <pre, </pre, <script, </script, <style, </style tags
     26843+  " remember stopline
     26844+  " if opening tag found,
     26845+  "    assume a:lnum within block
     26846+  " else
     26847+  "    look back in result range (stopline, startline) for comment
     26848+  "        \ delimiters (<!--, -->)
     26849+  "    if comment opener found,
     26850+  "        assume a:lnum within comment
     26851+  "    else
     26852+  "        assume usual html for a:lnum
     26853+  "        if a:lnum-1 has a closing comment
     26854+  "            look back to get indent of comment opener
     26855+  " FI
     26856+
     26857+  " look back for a blocktag
     26858+  call cursor(a:lnum, 1)
     26859+  let [stopline, stopcol] = searchpos('\c<\zs\/\=\%(pre\>\|script\>\|style\>\)', "bW")
     26860+  if stopline > 0
     26861     " fugly ... why isn't there searchstr()
     26862     let tagline = tolower(getline(stopline))
     26863-    let blocktag = matchstr(tagline, '\/\=\%(pre\>\|script\>\|style\>\)', stopcol-1)
     26864-    if stopline > 0 && blocktag[0] != "/"
     26865-       " opening tag found, assume a:lnum within block
     26866-       let state.block = s:indent_tags[blocktag]
     26867-       if state.block == 3
     26868-           let state.scripttype = s:GetScriptType(matchstr(tagline, '\>[^>]*', stopcol))
     26869-       endif
     26870-       let state.blocklnr = stopline
     26871-       " check preceding tags in the line:
     26872-       let s:altline = tagline[: stopcol-2]
     26873-       call s:CountITags(1)
     26874-       let state.blocktagind = indent(stopline) + (s:curind + s:nextrel) * s:ShiftWidth()
     26875-       return state
     26876+    let blocktag = matchstr(tagline, '\/\=\%(pre\>\|script\>\|style\>\)', stopcol - 1)
     26877+    if blocktag[0] != "/"
     26878+      " opening tag found, assume a:lnum within block
     26879+      let state.block = s:indent_tags[blocktag]
     26880+      if state.block == 3
     26881+        let state.scripttype = s:GetScriptType(matchstr(tagline, '\>[^>]*', stopcol))
     26882+      endif
     26883+      let state.blocklnr = stopline
     26884+      " check preceding tags in the line:
     26885+      call s:CountITags(tagline[: stopcol-2])
     26886+      let state.blocktagind = indent(stopline) + (s:curind + s:nextrel) * s:ShiftWidth()
     26887+      return state
     26888     elseif stopline == state.lnum
     26889-       " handle special case: previous line (= state.lnum) contains a
     26890-       " closing blocktag which is preceded by line-noise;
     26891-       " blocktag == "/..."
     26892-       let swendtag = match(tagline, '^\s*</') >= 0
     26893-       if !swendtag
     26894-           let [bline, bcol] = searchpos('<'.blocktag[1:].'\>', "bW")
     26895-           let s:altline = tolower(getline(bline)[: bcol-2])
     26896-           call s:CountITags(1)
     26897-           let state.baseindent = indent(bline) + (s:nextrel+s:curline) * s:ShiftWidth()
     26898-           return state
     26899-       endif
     26900-    endif
     26901-
     26902-    " else look back for comment
     26903-    call cursor(a:lnum, 1)
     26904-    let [comline, comcol, found] = searchpos('\(<!--\)\|-->', 'bpW', stopline)
     26905-    if found == 2
     26906-       " comment opener found, assume a:lnum within comment
     26907-       let state.block = 5
     26908-       let state.blocklnr = comline
     26909-       " check preceding tags in the line:
     26910-       let s:altline = tolower(getline(comline)[: comcol-2])
     26911-       call s:CountITags(1)
     26912-       let state.blocktagind = indent(comline) + (s:curind + s:nextrel) * s:ShiftWidth()
     26913-       return state
     26914-    endif
     26915-
     26916-    " else within usual html
     26917-    let s:altline = tolower(getline(state.lnum))
     26918-    " check a:lnum-1 for closing comment (we need indent from the opening line)
     26919-    let comcol = stridx(s:altline, '-->')
     26920-    if comcol >= 0
     26921-       call cursor(state.lnum, comcol+1)
     26922-       let [comline, comcol] = searchpos('<!--', 'bW')
     26923-       if comline == state.lnum
     26924-           let s:altline = s:altline[: comcol-2]
     26925-       else
     26926-           let s:altline = tolower(getline(comline)[: comcol-2])
     26927-       endif
     26928-       call s:CountITags(1)
     26929-       let state.baseindent = indent(comline) + (s:nextrel+s:curline) * s:ShiftWidth()
     26930-       return state
     26931-       " TODO check tags that follow "-->"
     26932-    endif
     26933-
     26934-    " else no comments
     26935-    call s:CountITags(1)
     26936-    let state.baseindent = indent(state.lnum) + s:nextrel * s:ShiftWidth()
     26937-    " line starts with end tag
     26938-    let swendtag = match(s:altline, '^\s*</') >= 0
     26939-    if !swendtag
     26940-       let state.baseindent += s:curind * s:ShiftWidth()
     26941+      " handle special case: previous line (= state.lnum) contains a
     26942+      " closing blocktag which is preceded by line-noise;
     26943+      " blocktag == "/..."
     26944+      let swendtag = match(tagline, '^\s*</') >= 0
     26945+      if !swendtag
     26946+        let [bline, bcol] = searchpos('<'.blocktag[1:].'\>', "bW")
     26947+        call s:CountITags(tolower(getline(bline)[: bcol-2]))
     26948+        let state.baseindent = indent(bline) + (s:curind + s:nextrel) * s:ShiftWidth()
     26949+        return state
     26950+      endif
     26951+    endif
     26952+  endif
     26953+
     26954+  " else look back for comment
     26955+  call cursor(a:lnum, 1)
     26956+  let [comlnum, comcol, found] = searchpos('\(<!--\)\|-->', 'bpW', stopline)
     26957+  if found == 2
     26958+    " comment opener found, assume a:lnum within comment
     26959+    let state.block = 5
     26960+    let state.blocklnr = comlnum
     26961+    " check preceding tags in the line:
     26962+    call s:CountITags(tolower(getline(comlnum)[: comcol-2]))
     26963+    let state.blocktagind = indent(comlnum) + (s:curind + s:nextrel) * s:ShiftWidth()
     26964+    return state
     26965+  endif
     26966+
     26967+  " else within usual HTML
     26968+  let text = tolower(getline(state.lnum))
     26969+
     26970+  " Check a:lnum-1 for closing comment (we need indent from the opening line).
     26971+  " Not when other tags follow (might be --> inside a string).
     26972+  let comcol = stridx(text, '-->')
     26973+  if comcol >= 0 && match(text, '[<>]', comcol) <= 0
     26974+    call cursor(state.lnum, comcol + 1)
     26975+    let [comlnum, comcol] = searchpos('<!--', 'bW')
     26976+    if comlnum == state.lnum
     26977+      let text = text[: comcol-2]
     26978+    else
     26979+      let text = tolower(getline(comlnum)[: comcol-2])
     26980     endif
     26981+    call s:CountITags(text)
     26982+    let state.baseindent = indent(comlnum) + (s:curind + s:nextrel) * s:ShiftWidth()
     26983+    " TODO check tags that follow "-->"
     26984     return state
     26985-endfunc "}}}
     26986+  endif
     26987+
     26988+  " Check if the previous line starts with end tag.
     26989+  let swendtag = match(text, '^\s*</') >= 0
     26990 
     26991-func! s:Alien2() "{{{
     26992-    " <pre> block
     26993+  " If previous line ended in a closing tag, line up with the opening tag.
     26994+  if !swendtag && text =~ '</\w\+\s*>\s*$'
     26995+    call cursor(state.lnum, 99999)
     26996+    normal F<
     26997+    let start_lnum = HtmlIndent_FindStartTag()
     26998+    if start_lnum > 0
     26999+      let state.baseindent = indent(start_lnum)
     27000+      if col('.') > 2
     27001+        " check for tags before the matching opening tag.
     27002+        let text = getline(start_lnum)
     27003+        let swendtag = match(text, '^\s*</') >= 0
     27004+        call s:CountITags(text[: col('.') - 2])
     27005+        let state.baseindent += s:nextrel * s:ShiftWidth()
     27006+        if !swendtag
     27007+          let state.baseindent += s:curind * s:ShiftWidth()
     27008+        endif
     27009+      endif
     27010+      return state
     27011+    endif
     27012+  endif
     27013+
     27014+  " Else: no comments. Skip backwards to find the tag we're inside.
     27015+  let [state.lnum, found] = HtmlIndent_FindTagStart(state.lnum)
     27016+  " Check if that line starts with end tag.
     27017+  let text = getline(state.lnum)
     27018+  let swendtag = match(text, '^\s*</') >= 0
     27019+  call s:CountITags(tolower(text))
     27020+  let state.baseindent = indent(state.lnum) + s:nextrel * s:ShiftWidth()
     27021+  if !swendtag
     27022+    let state.baseindent += s:curind * s:ShiftWidth()
     27023+  endif
     27024+  return state
     27025+endfunc "}}}
     27026+
     27027+" Indent inside a <pre> block: Keep indent as-is.
     27028+func! s:Alien2()
     27029+  "{{{
     27030+  return -1
     27031+endfunc "}}}
     27032+
     27033+" Return the indent inside a <script> block for javascript.
     27034+func! s:Alien3()
     27035+  "{{{
     27036+  let lnum = prevnonblank(v:lnum - 1)
     27037+  while lnum > 1 && getline(lnum) =~ '^\s*/[/*]'
     27038+    " Skip over comments to avoid that cindent() aligns with the <script> tag
     27039+    let lnum = prevnonblank(lnum - 1)
     27040+  endwhile
     27041+  if lnum == b:hi_indent.blocklnr
     27042+    " indent for the first line after <script>
     27043+    return eval(b:hi_js1indent)
     27044+  endif
     27045+  if b:hi_indent.scripttype == "javascript"
     27046+    return cindent(v:lnum)
     27047+  else
     27048     return -1
     27049+  endif
     27050 endfunc "}}}
     27051-func! s:Alien3() "{{{
     27052-    " <script> javascript
     27053-    if prevnonblank(v:lnum-1) == b:indent.blocklnr
     27054-       " indent for the first line after <script>
     27055-       return eval(s:js1indent)
     27056-    endif
     27057-    if b:indent.scripttype == "javascript"
     27058-       return cindent(v:lnum)
     27059+
     27060+" Return the indent inside a <style> block.
     27061+func! s:Alien4()
     27062+  "{{{
     27063+  if prevnonblank(v:lnum-1) == b:hi_indent.blocklnr
     27064+    " indent for first content line
     27065+    return eval(b:hi_css1indent)
     27066+  endif
     27067+  return s:CSSIndent()
     27068+endfunc "}}}
     27069+
     27070+" Indending inside a <style> block.  Returns the indent.
     27071+func! s:CSSIndent()
     27072+  "{{{
     27073+  " This handles standard CSS and also Closure stylesheets where special lines
     27074+  " start with @.
     27075+  " When the line starts with '*' or the previous line starts with "/*"
     27076+  " and does not end in "*/", use C indenting to format the comment.
     27077+  " Adopted $VIMRUNTIME/indent/css.vim
     27078+  let curtext = getline(v:lnum)
     27079+  if curtext =~ '^\s*[*]'
     27080+        \ || (v:lnum > 1 && getline(v:lnum - 1) =~ '\s*/\*'
     27081+        \     && getline(v:lnum - 1) !~ '\*/\s*$')
     27082+    return cindent(v:lnum)
     27083+  endif
     27084+
     27085+  let min_lnum = b:hi_indent.blocklnr
     27086+  let prev_lnum = s:CssPrevNonComment(v:lnum - 1, min_lnum)
     27087+  let [prev_lnum, found] = HtmlIndent_FindTagStart(prev_lnum)
     27088+  if prev_lnum <= min_lnum
     27089+    " Just below the <style> tag, indent for first content line after comments.
     27090+    return eval(b:hi_css1indent)
     27091+  endif
     27092+
     27093+  " If the current line starts with "}" align with it's match.
     27094+  if curtext =~ '^\s*}'
     27095+    call cursor(v:lnum, 1)
     27096+    try
     27097+      normal! %
     27098+      " Found the matching "{", align with it after skipping unfinished lines.
     27099+      let align_lnum = s:CssFirstUnfinished(line('.'), min_lnum)
     27100+      return indent(align_lnum)
     27101+    catch
     27102+      " can't find it, try something else, but it's most likely going to be
     27103+      " wrong
     27104+    endtry
     27105+  endif
     27106+
     27107+  " add indent after {
     27108+  let brace_counts = HtmlIndent_CountBraces(prev_lnum)
     27109+  let extra = brace_counts.c_open * s:ShiftWidth()
     27110+
     27111+  let prev_text = getline(prev_lnum)
     27112+  let below_end_brace = prev_text =~ '}\s*$'
     27113+
     27114+  " Search back to align with the first line that's unfinished.
     27115+  let align_lnum = s:CssFirstUnfinished(prev_lnum, min_lnum)
     27116+
     27117+  " Handle continuation lines if aligning with previous line and not after a
     27118+  " "}".
     27119+  if extra == 0 && align_lnum == prev_lnum && !below_end_brace
     27120+    let prev_hasfield = prev_text =~ '^\s*[a-zA-Z0-9-]\+:'
     27121+    let prev_special = prev_text =~ '^\s*\(/\*\|@\)'
     27122+    if curtext =~ '^\s*\(/\*\|@\)'
     27123+      " if the current line is not a comment or starts with @ (used by template
     27124+      " systems) reduce indent if previous line is a continuation line
     27125+      if !prev_hasfield && !prev_special
     27126+        let extra = -s:ShiftWidth()
     27127+      endif
     27128     else
     27129-       return -1
     27130+      let cur_hasfield = curtext =~ '^\s*[a-zA-Z0-9-]\+:'
     27131+      let prev_unfinished = s:CssUnfinished(prev_text)
     27132+      if !cur_hasfield && (prev_hasfield || prev_unfinished)
     27133+        " Continuation line has extra indent if the previous line was not a
     27134+        " continuation line.
     27135+        let extra = s:ShiftWidth()
     27136+        " Align with @if
     27137+        if prev_text =~ '^\s*@if '
     27138+          let extra = 4
     27139+        endif
     27140+      elseif cur_hasfield && !prev_hasfield && !prev_special
     27141+        " less indent below a continuation line
     27142+        let extra = -s:ShiftWidth()
     27143+      endif
     27144+    endif
     27145+  endif
     27146+
     27147+  if below_end_brace
     27148+    " find matching {, if that line starts with @ it's not the start of a rule
     27149+    " but something else from a template system
     27150+    call cursor(prev_lnum, 1)
     27151+    call search('}\s*$')
     27152+    try
     27153+      normal! %
     27154+      " Found the matching "{", align with it.
     27155+      let align_lnum = s:CssFirstUnfinished(line('.'), min_lnum)
     27156+      let special = getline(align_lnum) =~ '^\s*@'
     27157+    catch
     27158+      let special = 0
     27159+    endtry
     27160+    if special
     27161+      " do not reduce indent below @{ ... }
     27162+      if extra < 0
     27163+        let extra += s:ShiftWidth()
     27164+      endif
     27165+    else
     27166+      let extra -= (brace_counts.c_close - (prev_text =~ '^\s*}')) * s:ShiftWidth()
     27167     endif
     27168-endfunc "}}}
     27169-func! s:Alien4() "{{{
     27170-    " <style>
     27171-    if prevnonblank(v:lnum-1) == b:indent.blocklnr
     27172-       " indent for first content line
     27173-       return eval(s:css1indent)
     27174-    endif
     27175-    return s:CSSIndent()
     27176-endfunc
     27177-
     27178-func! s:CSSIndent() "{{{
     27179-    " adopted $VIMRUNTIME/indent/css.vim
     27180-    if getline(v:lnum) =~ '^\s*[*}]'
     27181-       return cindent(v:lnum)
     27182-    endif
     27183-    let minline = b:indent.blocklnr
     27184-    let pnum = s:css_prevnoncomment(v:lnum - 1, minline)
     27185-    if pnum <= minline
     27186-       " < is to catch errors
     27187-       " indent for first content line after comments
     27188-       return eval(s:css1indent)
     27189-    endif
     27190-    let ind = indent(pnum) + s:css_countbraces(pnum, 1) * s:ShiftWidth()
     27191-    let pline = getline(pnum)
     27192-    if pline =~ '}\s*$'
     27193-       let ind -= (s:css_countbraces(pnum, 0) - (pline =~ '^\s*}')) * s:ShiftWidth()
     27194-    endif
     27195-    return ind
     27196-endfunc "}}}
     27197-func! s:css_prevnoncomment(lnum, stopline) "{{{
     27198-    " caller starts from a line a:lnum-1 that is not a comment
     27199-    let lnum = prevnonblank(a:lnum)
     27200+  endif
     27201+
     27202+  " if no extra indent yet...
     27203+  if extra == 0
     27204+    if brace_counts.p_open > brace_counts.p_close
     27205+      " previous line has more ( than ): add a shiftwidth
     27206+      let extra = s:ShiftWidth()
     27207+    elseif brace_counts.p_open < brace_counts.p_close
     27208+      " previous line has more ) than (: subtract a shiftwidth
     27209+      let extra = -s:ShiftWidth()
     27210+    endif
     27211+  endif
     27212+
     27213+  return indent(align_lnum) + extra
     27214+endfunc "}}}
     27215+
     27216+" Inside <style>: Whether a line is unfinished.
     27217+func! s:CssUnfinished(text)
     27218+  "{{{
     27219+  return a:text =~ '\s\(||\|&&\|:\)\s*$'
     27220+endfunc "}}}
     27221+
     27222+" Search back for the first unfinished line above "lnum".
     27223+func! s:CssFirstUnfinished(lnum, min_lnum)
     27224+  "{{{
     27225+  let align_lnum = a:lnum
     27226+  while align_lnum > a:min_lnum && s:CssUnfinished(getline(align_lnum - 1))
     27227+    let align_lnum -= 1
     27228+  endwhile
     27229+  return align_lnum
     27230+endfunc "}}}
     27231+
     27232+" Find the non-empty line at or before "lnum" that is not a comment.
     27233+func! s:CssPrevNonComment(lnum, stopline)
     27234+  "{{{
     27235+  " caller starts from a line a:lnum + 1 that is not a comment
     27236+  let lnum = prevnonblank(a:lnum)
     27237+  while 1
     27238     let ccol = match(getline(lnum), '\*/')
     27239     if ccol < 0
     27240-       return lnum
     27241+      " No comment end thus its something else.
     27242+      return lnum
     27243     endif
     27244-    call cursor(lnum, ccol+1)
     27245+    call cursor(lnum, ccol + 1)
     27246+    " Search back for the /* that starts the comment
     27247     let lnum = search('/\*', 'bW', a:stopline)
     27248-    if indent(".") == virtcol(".")-1
     27249-       return prevnonblank(lnum-1)
     27250+    if indent(".") == virtcol(".") - 1
     27251+      " The  found /* is at the start of the line. Now go back to the line
     27252+      " above it and again check if it is a comment.
     27253+      let lnum = prevnonblank(lnum - 1)
     27254     else
     27255-       return lnum
     27256+      " /* is after something else, thus it's not a comment line.
     27257+      return lnum
     27258     endif
     27259+  endwhile
     27260 endfunc "}}}
     27261-func! s:css_countbraces(lnum, count_open) "{{{
     27262-    let brs = substitute(getline(a:lnum),'[''"].\{-}[''"]\|/\*.\{-}\*/\|/\*.*$\|[^{}]','','g')
     27263-    let n_open = 0
     27264-    let n_close = 0
     27265-    for brace in split(brs, '\zs')
     27266-       if brace == "{"
     27267-           let n_open += 1
     27268-       elseif brace == "}"
     27269-           if n_open > 0
     27270-               let n_open -= 1
     27271-           else
     27272-               let n_close += 1
     27273-           endif
     27274-       endif
     27275-    endfor
     27276-    return a:count_open ? n_open : n_close
     27277-endfunc "}}}
     27278-
     27279-"}}}
     27280-func! s:Alien5() "{{{
     27281-    " <!-- -->
     27282-    return -1
     27283-endfunc "}}}
     27284-
     27285-func! HtmlIndent() "{{{
     27286-    let s:curline = tolower(getline(v:lnum))
     27287-    let indentunit = s:ShiftWidth()
     27288 
     27289-    let s:newstate = {}
     27290-    let s:newstate.lnum = v:lnum
     27291+" Check the number of {} and () in line "lnum". Return a dict with the counts.
     27292+func! HtmlIndent_CountBraces(lnum)
     27293+  "{{{
     27294+  let brs = substitute(getline(a:lnum), '[''"].\{-}[''"]\|/\*.\{-}\*/\|/\*.*$\|[^{}()]', '', 'g')
     27295+  let c_open = 0
     27296+  let c_close = 0
     27297+  let p_open = 0
     27298+  let p_close = 0
     27299+  for brace in split(brs, '\zs')
     27300+    if brace == "{"
     27301+      let c_open += 1
     27302+    elseif brace == "}"
     27303+      if c_open > 0
     27304+        let c_open -= 1
     27305+      else
     27306+        let c_close += 1
     27307+      endif
     27308+    elseif brace == '('
     27309+      let p_open += 1
     27310+    elseif brace == ')'
     27311+      if p_open > 0
     27312+        let p_open -= 1
     27313+      else
     27314+        let p_close += 1
     27315+      endif
     27316+    endif
     27317+  endfor
     27318+  return {'c_open': c_open,
     27319+        \ 'c_close': c_close,
     27320+        \ 'p_open': p_open,
     27321+        \ 'p_close': p_close}
     27322+endfunc "}}}
     27323+
     27324+" Return the indent for a comment: <!-- -->
     27325+func! s:Alien5()
     27326+  "{{{
     27327+  let curtext = getline(v:lnum)
     27328+  if curtext =~ '^\s*\zs-->'
     27329+    " current line starts with end of comment, line up with comment start.
     27330+    call cursor(v:lnum, 0)
     27331+    let lnum = search('<!--', 'b')
     27332+    if lnum > 0
     27333+      " TODO: what if <!-- is not at the start of the line?
     27334+      return indent(lnum)
     27335+    endif
     27336 
     27337-    " does the line start with a closing tag?
     27338-    let swendtag = match(s:curline, '^\s*</') >= 0
     27339+    " Strange, can't find it.
     27340+    return -1
     27341+  endif
     27342 
     27343-    if prevnonblank(v:lnum-1) == b:indent.lnum && s:usestate
     27344-       " use state (continue from previous line)
     27345+  let prevlnum = prevnonblank(v:lnum - 1)
     27346+  let prevtext = getline(prevlnum)
     27347+  let idx = match(prevtext, '^\s*\zs<!--')
     27348+  if idx >= 0
     27349+    " just below comment start, add a shiftwidth
     27350+    return idx + s:ShiftWidth()
     27351+  endif
     27352+
     27353+  " Some files add 4 spaces just below a TODO line.  It's difficult to detect
     27354+  " the end of the TODO, so let's not do that.
     27355+
     27356+  " Align with the previous non-blank line.
     27357+  return indent(prevlnum)
     27358+endfunc "}}}
     27359+
     27360+" When the "lnum" line ends in ">" find the line containing the matching "<".
     27361+func! HtmlIndent_FindTagStart(lnum)
     27362+  "{{{
     27363+  " Avoids using the indent of a continuation line.
     27364+  " Moves the cursor.
     27365+  " Return two values:
     27366+  " - the matching line number or "lnum".
     27367+  " - a flag indicating whether we found the end of a tag.
     27368+  " This method is global so that HTML-like indenters can use it.
     27369+  " To avoid matching " > " or " < " inside a string require that the opening
     27370+  " "<" is followed by a word character and the closing ">" comes after a
     27371+  " non-white character.
     27372+  let idx = match(getline(a:lnum), '\S>\s*$')
     27373+  if idx > 0
     27374+    call cursor(a:lnum, idx)
     27375+    let lnum = searchpair('<\w', '' , '\S>', 'bW', '', max([a:lnum - b:html_indent_line_limit, 0]))
     27376+    if lnum > 0
     27377+      return [lnum, 1]
     27378+    endif
     27379+  endif
     27380+  return [a:lnum, 0]
     27381+endfunc "}}}
     27382+
     27383+" Find the unclosed start tag from the current cursor position.
     27384+func! HtmlIndent_FindStartTag()
     27385+  "{{{
     27386+  " The cursor must be on or before a closing tag.
     27387+  " If found, positions the cursor at the match and returns the line number.
     27388+  " Otherwise returns 0.
     27389+  let tagname = matchstr(getline('.')[col('.') - 1:], '</\zs\w\+\ze')
     27390+  let start_lnum = searchpair('<' . tagname . '\>', '', '</' . tagname . '\>', 'bW')
     27391+  if start_lnum > 0
     27392+    return start_lnum
     27393+  endif
     27394+  return 0
     27395+endfunc "}}}
     27396+
     27397+" Moves the cursor from a "<" to the matching ">".
     27398+func! HtmlIndent_FindTagEnd()
     27399+  "{{{
     27400+  " Call this with the cursor on the "<" of a start tag.
     27401+  " This will move the cursor to the ">" of the matching end tag or, when it's
     27402+  " a self-closing tag, to the matching ">".
     27403+  " Limited to look up to b:html_indent_line_limit lines away.
     27404+  let text = getline('.')
     27405+  let tagname = matchstr(text, '\w\+\|!--', col('.'))
     27406+  if tagname == '!--'
     27407+    call search('--\zs>')
     27408+  elseif s:get_tag('/' . tagname) != 0
     27409+    " tag with a closing tag, find matching "</tag>"
     27410+    call searchpair('<' . tagname, '', '</' . tagname . '\zs>', 'W', '', line('.') + b:html_indent_line_limit)
     27411+  else
     27412+    " self-closing tag, find the ">"
     27413+    call search('\S\zs>')
     27414+  endif
     27415+endfunc "}}}
     27416+
     27417+" Indenting inside a start tag. Return the correct indent or -1 if unknown.
     27418+func! s:InsideTag(foundHtmlString)
     27419+  "{{{
     27420+  if a:foundHtmlString
     27421+    " Inside an attribute string.
     27422+    " Align with the previous line or use an external function.
     27423+    let lnum = v:lnum - 1
     27424+    if lnum > 1
     27425+      if exists('b:html_indent_tag_string_func')
     27426+        return b:html_indent_tag_string_func(lnum)
     27427+      endif
     27428+      return indent(lnum)
     27429+    endif
     27430+  endif
     27431+
     27432+  " Should be another attribute: " attr="val".  Align with the previous
     27433+  " attribute start.
     27434+  let lnum = v:lnum
     27435+  while lnum > 1
     27436+    let lnum -= 1
     27437+    let text = getline(lnum)
     27438+    " Find a match with one of these, align with "attr":
     27439+    "       attr=
     27440+    "  <tag attr=
     27441+    "  text<tag attr=
     27442+    "  <tag>text</tag>text<tag attr=
     27443+    " For long lines search for the first match, finding the last match
     27444+    " gets very slow.
     27445+    if len(text) < 300
     27446+      let idx = match(text, '.*\s\zs[_a-zA-Z0-9-]\+="')
     27447     else
     27448-       " start over (know nothing)
     27449-       let b:indent = s:FreshState(v:lnum)
     27450+      let idx = match(text, '\s\zs[_a-zA-Z0-9-]\+="')
     27451     endif
     27452+    if idx > 0
     27453+      " Found the attribute.  TODO: assumes spaces, no Tabs.
     27454+      return idx
     27455+    endif
     27456+  endwhile
     27457+  return -1
     27458+endfunc "}}}
     27459+
     27460+" THE MAIN INDENT FUNCTION. Return the amount of indent for v:lnum.
     27461+func! HtmlIndent()
     27462+  "{{{
     27463+  if prevnonblank(v:lnum - 1) <= 1
     27464+    " First non-blank line has no indent.
     27465+    return 0
     27466+  endif
     27467+
     27468+  let curtext = tolower(getline(v:lnum))
     27469+  let indentunit = s:ShiftWidth()
     27470+
     27471+  let b:hi_newstate = {}
     27472+  let b:hi_newstate.lnum = v:lnum
     27473+
     27474+  " When syntax HL is enabled, detect we are inside a tag.  Indenting inside
     27475+  " a tag works very differently. Do not do this when the line starts with
     27476+  " "<", it gets the "htmlTag" ID but we are not inside a tag then.
     27477+  if curtext !~ '^\s*<'
     27478+    normal ^
     27479+    let stack = synstack(v:lnum, col('.'))  " assumes there are no tabs
     27480+    let foundHtmlString = 0
     27481+    for synid in reverse(stack)
     27482+      let name = synIDattr(synid, "name")
     27483+      if index(b:hi_insideStringNames, name) >= 0
     27484+        let foundHtmlString = 1
     27485+      elseif index(b:hi_insideTagNames, name) >= 0
     27486+        " Yes, we are inside a tag.
     27487+        let indent = s:InsideTag(foundHtmlString)
     27488+        if indent >= 0
     27489+          " Do not keep the state. TODO: could keep the block type.
     27490+          let b:hi_indent.lnum = 0
     27491+          return indent
     27492+        endif
     27493+      endif
     27494+    endfor
     27495+  endif
     27496+
     27497+  " does the line start with a closing tag?
     27498+  let swendtag = match(curtext, '^\s*</') >= 0
     27499 
     27500-    if b:indent.block >= 2
     27501-       " within block
     27502-       let endtag = s:endtags[b:indent.block-2]
     27503-       let blockend = stridx(s:curline, endtag)
     27504-       if blockend >= 0
     27505-           " block ends here
     27506-           let s:newstate.block = 0
     27507-           " calc indent for REST OF LINE (may start more blocks):
     27508-           let s:curline = strpart(s:curline, blockend+strlen(endtag))
     27509-           call s:CountITags()
     27510-           if swendtag && b:indent.block != 5
     27511-               let indent = b:indent.blocktagind + s:curind * indentunit
     27512-               let s:newstate.baseindent = indent + s:nextrel * indentunit
     27513-           else
     27514-               let indent = s:Alien{b:indent.block}()
     27515-               let s:newstate.baseindent = b:indent.blocktagind + s:nextrel * indentunit
     27516-           endif
     27517-           call extend(b:indent, s:newstate, "force")
     27518-           return indent
     27519-       else
     27520-           " block continues
     27521-           " indent this line with alien method
     27522-           let indent = s:Alien{b:indent.block}()
     27523-           call extend(b:indent, s:newstate, "force")
     27524-           return indent
     27525-       endif
     27526+  if prevnonblank(v:lnum - 1) == b:hi_indent.lnum && b:hi_lasttick == b:changedtick - 1
     27527+    " use state (continue from previous line)
     27528+  else
     27529+    " start over (know nothing)
     27530+    let b:hi_indent = s:FreshState(v:lnum)
     27531+  endif
     27532+
     27533+  if b:hi_indent.block >= 2
     27534+    " within block
     27535+    let endtag = s:endtags[b:hi_indent.block]
     27536+    let blockend = stridx(curtext, endtag)
     27537+    if blockend >= 0
     27538+      " block ends here
     27539+      let b:hi_newstate.block = 0
     27540+      " calc indent for REST OF LINE (may start more blocks):
     27541+      call s:CountTagsAndState(strpart(curtext, blockend + strlen(endtag)))
     27542+      if swendtag && b:hi_indent.block != 5
     27543+        let indent = b:hi_indent.blocktagind + s:curind * indentunit
     27544+        let b:hi_newstate.baseindent = indent + s:nextrel * indentunit
     27545+      else
     27546+        let indent = s:Alien{b:hi_indent.block}()
     27547+        let b:hi_newstate.baseindent = b:hi_indent.blocktagind + s:nextrel * indentunit
     27548+      endif
     27549     else
     27550-       " not within a block - within usual html
     27551-       " if < 2 then always 0
     27552-       let s:newstate.block = b:indent.block
     27553-       call s:CountITags()
     27554-       if swendtag
     27555-           let indent = b:indent.baseindent + s:curind * indentunit
     27556-           let s:newstate.baseindent = indent + s:nextrel * indentunit
     27557-       else