summaryrefslogtreecommitdiffstats
path: root/vim/vim-7.2
diff options
context:
space:
mode:
Diffstat (limited to 'vim/vim-7.2')
-rw-r--r--vim/vim-7.2/7.2.26880
-rw-r--r--vim/vim-7.2/7.2.269261
-rw-r--r--vim/vim-7.2/7.2.27072
-rw-r--r--vim/vim-7.2/7.2.27192
-rw-r--r--vim/vim-7.2/7.2.27282
-rw-r--r--vim/vim-7.2/7.2.273130
-rw-r--r--vim/vim-7.2/7.2.274130
-rw-r--r--vim/vim-7.2/7.2.27595
-rw-r--r--vim/vim-7.2/7.2.27663
-rw-r--r--vim/vim-7.2/7.2.27766
-rw-r--r--vim/vim-7.2/7.2.27874
-rw-r--r--vim/vim-7.2/7.2.279120
-rw-r--r--vim/vim-7.2/7.2.280251
-rw-r--r--vim/vim-7.2/7.2.28181
-rw-r--r--vim/vim-7.2/7.2.28247
-rw-r--r--vim/vim-7.2/7.2.28373
-rw-r--r--vim/vim-7.2/7.2.28452
-rw-r--r--vim/vim-7.2/7.2.28556
-rw-r--r--vim/vim-7.2/7.2.286227
-rw-r--r--vim/vim-7.2/7.2.28754
-rw-r--r--vim/vim-7.2/7.2.28852
-rw-r--r--vim/vim-7.2/7.2.289120
-rw-r--r--vim/vim-7.2/7.2.290157
-rw-r--r--vim/vim-7.2/7.2.29153
-rw-r--r--vim/vim-7.2/7.2.29255
-rw-r--r--vim/vim-7.2/7.2.29366
-rw-r--r--vim/vim-7.2/7.2.294285
-rw-r--r--vim/vim-7.2/7.2.295142
-rw-r--r--vim/vim-7.2/7.2.29653
-rw-r--r--vim/vim-7.2/7.2.29770
-rw-r--r--vim/vim-7.2/7.2.29848
-rw-r--r--vim/vim-7.2/7.2.29954
-rw-r--r--vim/vim-7.2/7.2.300201
-rw-r--r--vim/vim-7.2/7.2.301777
-rw-r--r--vim/vim-7.2/7.2.302140
-rw-r--r--vim/vim-7.2/7.2.30370
-rw-r--r--vim/vim-7.2/7.2.30458
-rw-r--r--vim/vim-7.2/7.2.305105
-rw-r--r--vim/vim-7.2/7.2.30648
-rw-r--r--vim/vim-7.2/7.2.307181
-rw-r--r--vim/vim-7.2/7.2.308182
-rw-r--r--vim/vim-7.2/7.2.30948
-rw-r--r--vim/vim-7.2/7.2.31063
-rw-r--r--vim/vim-7.2/7.2.31152
-rw-r--r--vim/vim-7.2/7.2.312312
-rw-r--r--vim/vim-7.2/7.2.313117
-rw-r--r--vim/vim-7.2/7.2.31456
-rw-r--r--vim/vim-7.2/7.2.315134
-rw-r--r--vim/vim-7.2/7.2.31683
-rw-r--r--vim/vim-7.2/7.2.317148
-rw-r--r--vim/vim-7.2/7.2.31891
-rw-r--r--vim/vim-7.2/7.2.31963
-rw-r--r--vim/vim-7.2/7.2.320199
-rw-r--r--vim/vim-7.2/7.2.32159
-rw-r--r--vim/vim-7.2/7.2.32249
-rw-r--r--vim/vim-7.2/7.2.32395
-rw-r--r--vim/vim-7.2/7.2.32466
-rw-r--r--vim/vim-7.2/7.2.32552
-rw-r--r--vim/vim-7.2/7.2.32654
-rw-r--r--vim/vim-7.2/7.2.327323
-rw-r--r--vim/vim-7.2/7.2.32852
-rw-r--r--vim/vim-7.2/7.2.32948
-rw-r--r--vim/vim-7.2/7.2.3301531
-rw-r--r--vim/vim-7.2/7.2.33147
-rw-r--r--vim/vim-7.2/7.2.332101
-rw-r--r--vim/vim-7.2/7.2.333371
-rw-r--r--vim/vim-7.2/7.2.334347
-rw-r--r--vim/vim-7.2/7.2.335103
-rw-r--r--vim/vim-7.2/7.2.336841
-rw-r--r--vim/vim-7.2/7.2.337112
-rw-r--r--vim/vim-7.2/7.2.338129
-rw-r--r--vim/vim-7.2/7.2.33978
-rw-r--r--vim/vim-7.2/7.2.34054
-rw-r--r--vim/vim-7.2/7.2.34169
-rw-r--r--vim/vim-7.2/7.2.34295
-rw-r--r--vim/vim-7.2/7.2.34351
-rw-r--r--vim/vim-7.2/7.2.34460
-rw-r--r--vim/vim-7.2/7.2.34547
-rw-r--r--vim/vim-7.2/7.2.346110
-rw-r--r--vim/vim-7.2/7.2.347138
-rw-r--r--vim/vim-7.2/7.2.348254
-rw-r--r--vim/vim-7.2/7.2.34953
-rw-r--r--vim/vim-7.2/7.2.35086
-rw-r--r--vim/vim-7.2/7.2.35178
-rw-r--r--vim/vim-7.2/7.2.35262
-rw-r--r--vim/vim-7.2/7.2.353173
-rw-r--r--vim/vim-7.2/7.2.35478
-rw-r--r--vim/vim-7.2/7.2.35588
-rw-r--r--vim/vim-7.2/7.2.35669
-rw-r--r--vim/vim-7.2/7.2.35749
-rw-r--r--vim/vim-7.2/7.2.35878
-rw-r--r--vim/vim-7.2/7.2.35968
-rw-r--r--vim/vim-7.2/spell/check/check_aa.aff50
-rw-r--r--vim/vim-7.2/spell/check/check_aa.dic12
-rw-r--r--vim/vim-7.2/spell/check/check_bb.aff50
-rw-r--r--vim/vim-7.2/spell/check/check_bb.dic12
-rw-r--r--vim/vim-7.2/spell/check/main.aap15
-rw-r--r--vim/vim-7.2/spell/tet/main.aap79
-rw-r--r--vim/vim-7.2/spell/tet/tet_ID.diff26
-rw-r--r--vim/vim-7.2/tutor/tutor.bj987
-rw-r--r--vim/vim-7.2/tutor/tutor.bj.utf-8987
-rw-r--r--vim/vim-7.2/tutor/tutor.eo989
-rw-r--r--vim/vim-7.2/tutor/tutor.nb973
-rw-r--r--vim/vim-7.2/tutor/tutor.nb.utf-8973
104 files changed, 17760 insertions, 0 deletions
diff --git a/vim/vim-7.2/7.2.268 b/vim/vim-7.2/7.2.268
new file mode 100644
index 0000000..89c50b0
--- /dev/null
+++ b/vim/vim-7.2/7.2.268
@@ -0,0 +1,80 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.268
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.268
+Problem: Crash when using Python to set cursor beyond end of line.
+ (winterTTr)
+Solution: Check the column to be valid.
+Files: src/if_python.c
+
+
+*** ../vim-7.2.267/src/if_python.c 2009-07-09 20:06:30.000000000 +0200
+--- src/if_python.c 2009-10-10 14:49:10.000000000 +0200
+***************
+*** 2058,2063 ****
+--- 2058,2064 ----
+ {
+ long lnum;
+ long col;
++ long len;
+
+ if (!PyArg_Parse(val, "(ll)", &lnum, &col))
+ return -1;
+***************
+*** 2072,2081 ****
+ if (VimErrorCheck())
+ return -1;
+
+! /* NO CHECK ON COLUMN - SEEMS NOT TO MATTER */
+
+ this->win->w_cursor.lnum = lnum;
+ this->win->w_cursor.col = col;
+ update_screen(VALID);
+
+ return 0;
+--- 2073,2088 ----
+ if (VimErrorCheck())
+ return -1;
+
+! /* When column is out of range silently correct it. */
+! len = STRLEN(ml_get_buf(this->win->w_buffer, lnum, FALSE));
+! if (col > len)
+! col = len;
+
+ this->win->w_cursor.lnum = lnum;
+ this->win->w_cursor.col = col;
++ #ifdef FEAT_VIRTUALEDIT
++ this->win->w_cursor.coladd = 0;
++ #endif
+ update_screen(VALID);
+
+ return 0;
+*** ../vim-7.2.267/src/version.c 2009-10-07 16:19:52.000000000 +0200
+--- src/version.c 2009-11-03 11:42:08.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 268,
+ /**/
+
+--
+VOICE OVER: As the horrendous Black Beast lunged forward, escape for Arthur
+ and his knights seemed hopeless, when, suddenly ... the animator
+ suffered a fatal heart attack.
+ANIMATOR: Aaaaagh!
+VOICE OVER: The cartoon peril was no more ... The Quest for Holy Grail could
+ continue.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.269 b/vim/vim-7.2/7.2.269
new file mode 100644
index 0000000..ec15f45
--- /dev/null
+++ b/vim/vim-7.2/7.2.269
@@ -0,0 +1,261 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.269
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.269
+Problem: Many people struggle to find out why Vim startup is slow.
+Solution: Add the --startuptime command line flag.
+Files: runtime/doc/starting.txt, src/globals.h, src/feature.h,
+ src/main.c, src/macros.h
+
+
+*** ../vim-7.2.268/runtime/doc/starting.txt 2008-11-09 13:43:25.000000000 +0100
+--- runtime/doc/starting.txt 2009-10-25 11:57:51.000000000 +0100
+***************
+*** 144,149 ****
+--- 144,156 ----
+ -u NORC no yes
+ --noplugin yes no
+
++ --startuptime={fname} *--startuptime*
++ During startup write timing messages to the file {fname}.
++ This can be used to find out where time is spent while loading
++ your .vimrc and plugins.
++ When {fname} already exists new messages are appended.
++ {only when compiled with this feature}
++
+ *--literal*
+ --literal Take file names literally, don't expand wildcards. Not needed
+ for Unix, because Vim always takes file names literally (the
+***************
+*** 471,476 ****
+--- 487,493 ----
+ window title and copy/paste using the X clipboard. This
+ avoids a long startup time when running Vim in a terminal
+ emulator and the connection to the X server is slow.
++ See |--startuptime| to find out if affects you.
+ Only makes a difference on Unix or VMS, when compiled with the
+ |+X11| feature. Otherwise it's ignored.
+ To disable the connection only for specific terminals, see the
+*** ../vim-7.2.268/src/globals.h 2009-07-29 12:09:49.000000000 +0200
+--- src/globals.h 2009-10-10 15:14:31.000000000 +0200
+***************
+*** 1567,1572 ****
+--- 1567,1576 ----
+ /* For undo we need to know the lowest time possible. */
+ EXTERN time_t starttime;
+
++ #ifdef STARTUPTIME
++ EXTERN FILE *time_fd INIT(= NULL); /* where to write startup timing */
++ #endif
++
+ /*
+ * Some compilers warn for not using a return value, but in some situations we
+ * can't do anything useful with the value. Assign to this variable to avoid
+*** ../vim-7.2.268/src/feature.h 2008-11-09 13:43:25.000000000 +0100
+--- src/feature.h 2009-10-10 16:16:19.000000000 +0200
+***************
+*** 844,853 ****
+ /* #define DEBUG */
+
+ /*
+! * STARTUPTIME Time the startup process. Writes a "vimstartup" file
+! * with timestamps.
+ */
+! /* #define STARTUPTIME "vimstartup" */
+
+ /*
+ * MEM_PROFILE Debugging of memory allocation and freeing.
+--- 844,857 ----
+ /* #define DEBUG */
+
+ /*
+! * STARTUPTIME Time the startup process. Writes a file with
+! * timestamps.
+ */
+! #if defined(FEAT_NORMAL) \
+! && ((defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)) \
+! || defined(WIN3264))
+! # define STARTUPTIME 1
+! #endif
+
+ /*
+ * MEM_PROFILE Debugging of memory allocation and freeing.
+*** ../vim-7.2.268/src/main.c 2009-05-26 22:58:43.000000000 +0200
+--- src/main.c 2009-10-10 16:18:32.000000000 +0200
+***************
+*** 130,139 ****
+ #endif
+
+
+- #ifdef STARTUPTIME
+- static FILE *time_fd = NULL;
+- #endif
+-
+ /*
+ * Different types of error messages.
+ */
+--- 130,135 ----
+***************
+*** 173,178 ****
+--- 169,177 ----
+ char_u *fname = NULL; /* file name from command line */
+ mparm_T params; /* various parameters passed between
+ * main() and other functions. */
++ #ifdef STARTUPTIME
++ int i;
++ #endif
+
+ /*
+ * Do any system-specific initialisations. These can NOT use IObuff or
+***************
+*** 203,210 ****
+ #endif
+
+ #ifdef STARTUPTIME
+! time_fd = mch_fopen(STARTUPTIME, "a");
+! TIME_MSG("--- VIM STARTING ---");
+ #endif
+ starttime = time(NULL);
+
+--- 202,216 ----
+ #endif
+
+ #ifdef STARTUPTIME
+! for (i = 1; i < argc; ++i)
+! {
+! if (STRNICMP(argv[i], "--startuptime=", 14) == 0)
+! {
+! time_fd = mch_fopen(argv[i] + 14, "a");
+! TIME_MSG("--- VIM STARTING ---");
+! break;
+! }
+! }
+ #endif
+ starttime = time(NULL);
+
+***************
+*** 1150,1155 ****
+--- 1156,1173 ----
+ cursor_on();
+
+ do_redraw = FALSE;
++
++ #ifdef STARTUPTIME
++ /* Now that we have drawn the first screen all the startup stuff
++ * has been done, close any file for startup messages. */
++ if (time_fd != NULL)
++ {
++ TIME_MSG("first screen update");
++ TIME_MSG("--- VIM STARTED ---");
++ fclose(time_fd);
++ time_fd = NULL;
++ }
++ #endif
+ }
+ #ifdef FEAT_GUI
+ if (need_mouse_correct)
+***************
+*** 1743,1748 ****
+--- 1761,1770 ----
+ /* already processed, skip */
+ }
+ #endif
++ else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
++ {
++ /* already processed, skip */
++ }
+ else
+ {
+ if (argv[0][argv_idx])
+***************
+*** 3211,3216 ****
+--- 3233,3252 ----
+
+ static struct timeval prev_timeval;
+
++ # ifdef WIN3264
++ /*
++ * Windows doesn't have gettimeofday(), although it does have struct timeval.
++ */
++ static int
++ gettimeofday(struct timeval *tv, char *dummy)
++ {
++ long t = clock();
++ tv->tv_sec = t / CLOCKS_PER_SEC;
++ tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC;
++ return 0;
++ }
++ # endif
++
+ /*
+ * Save the previous time before doing something that could nest.
+ * set "*tv_rel" to the time elapsed so far.
+***************
+*** 3299,3318 ****
+ }
+ }
+
+- # ifdef WIN3264
+- /*
+- * Windows doesn't have gettimeofday(), although it does have struct timeval.
+- */
+- int
+- gettimeofday(struct timeval *tv, char *dummy)
+- {
+- long t = clock();
+- tv->tv_sec = t / CLOCKS_PER_SEC;
+- tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC;
+- return 0;
+- }
+- # endif
+-
+ #endif
+
+ #if defined(FEAT_CLIENTSERVER) || defined(PROTO)
+--- 3335,3340 ----
+*** ../vim-7.2.268/src/macros.h 2009-05-17 13:30:58.000000000 +0200
+--- src/macros.h 2009-10-10 15:19:07.000000000 +0200
+***************
+*** 243,249 ****
+ #endif
+
+ #ifdef STARTUPTIME
+! # define TIME_MSG(s) time_msg(s, NULL)
+ #else
+ # define TIME_MSG(s)
+ #endif
+--- 243,249 ----
+ #endif
+
+ #ifdef STARTUPTIME
+! # define TIME_MSG(s) { if (time_fd != NULL) time_msg(s, NULL); }
+ #else
+ # define TIME_MSG(s)
+ #endif
+*** ../vim-7.2.268/src/version.c 2009-11-03 11:43:05.000000000 +0100
+--- src/version.c 2009-11-03 12:06:31.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 269,
+ /**/
+
+--
+BEDEVERE: Look! It's the old man from scene 24 - what's he Doing here?
+ARTHUR: He is the keeper of the Bridge. He asks each traveler five
+ questions ...
+GALAHAD: Three questions.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.270 b/vim/vim-7.2/7.2.270
new file mode 100644
index 0000000..7ad6458
--- /dev/null
+++ b/vim/vim-7.2/7.2.270
@@ -0,0 +1,72 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.270
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.270
+Problem: Using ":@c" when the c register contains a CR causes the rest to
+ be executed later. (Dexter Douglas)
+Solution: Don't check for typeahead to start with ':', keep executing
+ commands until all added typeahead has been used.
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.269/src/ex_docmd.c 2009-09-30 13:23:57.000000000 +0200
+--- src/ex_docmd.c 2009-10-28 12:06:54.000000000 +0100
+***************
+*** 8358,8363 ****
+--- 8358,8364 ----
+ exarg_T *eap;
+ {
+ int c;
++ int prev_len = typebuf.tb_len;
+
+ curwin->w_cursor.lnum = eap->line2;
+
+***************
+*** 8383,8393 ****
+
+ /*
+ * Execute from the typeahead buffer.
+! * Originally this didn't check for the typeahead buffer to be empty,
+! * thus could read more Ex commands from stdin. It's not clear why,
+! * it is certainly unexpected.
+ */
+! while ((!stuff_empty() || typebuf.tb_len > 0) && vpeekc() == ':')
+ (void)do_cmdline(NULL, getexline, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE);
+
+ exec_from_reg = save_efr;
+--- 8384,8393 ----
+
+ /*
+ * Execute from the typeahead buffer.
+! * Continue until the stuff buffer is empty and all added characters
+! * have been consumed.
+ */
+! while (!stuff_empty() || typebuf.tb_len > prev_len)
+ (void)do_cmdline(NULL, getexline, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE);
+
+ exec_from_reg = save_efr;
+*** ../vim-7.2.269/src/version.c 2009-11-03 12:10:39.000000000 +0100
+--- src/version.c 2009-11-03 12:32:47.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 270,
+ /**/
+
+--
+To the optimist, the glass is half full.
+To the pessimist, the glass is half empty.
+To the engineer, the glass is twice as big as it needs to be.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.271 b/vim/vim-7.2/7.2.271
new file mode 100644
index 0000000..0742798
--- /dev/null
+++ b/vim/vim-7.2/7.2.271
@@ -0,0 +1,92 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.271
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.271
+Problem: Using freed memory in Motif GUI version when making a choice.
+Solution: Free memory only after using it. (Dominique Pelle)
+Files: src/gui_xmdlg.c
+
+
+*** ../vim-7.2.270/src/gui_xmdlg.c 2009-05-21 23:25:38.000000000 +0200
+--- src/gui_xmdlg.c 2009-10-28 21:56:15.000000000 +0100
+***************
+*** 10,16 ****
+ /*
+ * (C) 2001,2005 by Marcin Dalecki <martin@dalecki.de>
+ *
+! * Implementation of dialogue functions for the Motif GUI variant.
+ *
+ * Note about Lesstif: Apparently lesstif doesn't get the widget layout right,
+ * when using a dynamic scrollbar policy.
+--- 10,16 ----
+ /*
+ * (C) 2001,2005 by Marcin Dalecki <martin@dalecki.de>
+ *
+! * Implementation of dialog functions for the Motif GUI variant.
+ *
+ * Note about Lesstif: Apparently lesstif doesn't get the widget layout right,
+ * when using a dynamic scrollbar policy.
+***************
+*** 633,648 ****
+ data->sel[which] = XtNewString(sel);
+ else
+ {
+- XtFree(data->sel[which]);
+ if (!strcmp(data->sel[which], sel))
+ {
+ /* unselecting current selection */
+ data->sel[which] = NULL;
+ if (w)
+ XmListDeselectItem(w, call_data->item);
+ }
+ else
+ data->sel[which] = XtNewString(sel);
+ }
+ XtFree(sel);
+
+--- 633,651 ----
+ data->sel[which] = XtNewString(sel);
+ else
+ {
+ if (!strcmp(data->sel[which], sel))
+ {
+ /* unselecting current selection */
++ XtFree(data->sel[which]);
+ data->sel[which] = NULL;
+ if (w)
+ XmListDeselectItem(w, call_data->item);
+ }
+ else
++ {
++ XtFree(data->sel[which]);
+ data->sel[which] = XtNewString(sel);
++ }
+ }
+ XtFree(sel);
+
+*** ../vim-7.2.270/src/version.c 2009-11-03 12:38:50.000000000 +0100
+--- src/version.c 2009-11-03 12:48:26.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 271,
+ /**/
+
+--
+ROBIN: (warily) And if you get a question wrong?
+ARTHUR: You are cast into the Gorge of Eternal Peril.
+ROBIN: Oh ... wacho!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.272 b/vim/vim-7.2/7.2.272
new file mode 100644
index 0000000..22bebbc
--- /dev/null
+++ b/vim/vim-7.2/7.2.272
@@ -0,0 +1,82 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.272
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.272
+Problem: "_.svz" is not recognized as a swap file. (David M. Besonen)
+Solution: Accept .s[uvw][a-z] as a swap file name extension.
+Files: src/memline.c
+
+
+*** ../vim-7.2.271/src/memline.c 2009-04-22 15:56:27.000000000 +0200
+--- src/memline.c 2009-10-29 20:55:08.000000000 +0100
+***************
+*** 864,884 ****
+ recoverymode = TRUE;
+ called_from_main = (curbuf->b_ml.ml_mfp == NULL);
+ attr = hl_attr(HLF_E);
+! /*
+! * If the file name ends in ".sw?" we use it directly.
+! * Otherwise a search is done to find the swap file(s).
+! */
+ fname = curbuf->b_fname;
+ if (fname == NULL) /* When there is no file name */
+ fname = (char_u *)"";
+ len = (int)STRLEN(fname);
+ if (len >= 4 &&
+ #if defined(VMS) || defined(RISCOS)
+! STRNICMP(fname + len - 4, "_sw" , 3)
+ #else
+! STRNICMP(fname + len - 4, ".sw" , 3)
+ #endif
+! == 0)
+ {
+ directly = TRUE;
+ fname = vim_strsave(fname); /* make a copy for mf_open() */
+--- 864,887 ----
+ recoverymode = TRUE;
+ called_from_main = (curbuf->b_ml.ml_mfp == NULL);
+ attr = hl_attr(HLF_E);
+!
+! /*
+! * If the file name ends in ".s[uvw][a-z]" we assume this is the swap file.
+! * Otherwise a search is done to find the swap file(s).
+! */
+ fname = curbuf->b_fname;
+ if (fname == NULL) /* When there is no file name */
+ fname = (char_u *)"";
+ len = (int)STRLEN(fname);
+ if (len >= 4 &&
+ #if defined(VMS) || defined(RISCOS)
+! STRNICMP(fname + len - 4, "_s" , 2)
+ #else
+! STRNICMP(fname + len - 4, ".s" , 2)
+ #endif
+! == 0
+! && vim_strchr((char_u *)"UVWuvw", fname[len - 2]) != NULL
+! && ASCII_ISALPHA(fname[len - 1]))
+ {
+ directly = TRUE;
+ fname = vim_strsave(fname); /* make a copy for mf_open() */
+*** ../vim-7.2.271/src/version.c 2009-11-03 12:53:44.000000000 +0100
+--- src/version.c 2009-11-03 13:02:51.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 272,
+ /**/
+
+--
+Sorry, no fortune today.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.273 b/vim/vim-7.2/7.2.273
new file mode 100644
index 0000000..ac00afa
--- /dev/null
+++ b/vim/vim-7.2/7.2.273
@@ -0,0 +1,130 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.273
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.273
+Problem: Crash with redir to unknown array. (Christian Brabandt)
+Solution: Don't assign the redir result when there was an error.
+Files: src/eval.c
+
+
+*** ../vim-7.2.272/src/eval.c 2009-09-30 15:15:33.000000000 +0200
+--- src/eval.c 2009-11-03 12:05:07.000000000 +0100
+***************
+*** 988,1000 ****
+ int err;
+ typval_T tv;
+
+! /* Make sure a valid variable name is specified */
+ if (!eval_isnamec1(*name))
+ {
+ EMSG(_(e_invarg));
+ return FAIL;
+ }
+
+ redir_varname = vim_strsave(name);
+ if (redir_varname == NULL)
+ return FAIL;
+--- 988,1001 ----
+ int err;
+ typval_T tv;
+
+! /* Catch a bad name early. */
+ if (!eval_isnamec1(*name))
+ {
+ EMSG(_(e_invarg));
+ return FAIL;
+ }
+
++ /* Make a copy of the name, it is used in redir_lval until redir ends. */
+ redir_varname = vim_strsave(name);
+ if (redir_varname == NULL)
+ return FAIL;
+***************
+*** 1019,1024 ****
+--- 1020,1026 ----
+ EMSG(_(e_trailing));
+ else
+ EMSG(_(e_invarg));
++ redir_endp = NULL; /* don't store a value, only cleanup */
+ var_redir_stop();
+ return FAIL;
+ }
+***************
+*** 1037,1042 ****
+--- 1039,1045 ----
+ did_emsg |= save_emsg;
+ if (err)
+ {
++ redir_endp = NULL; /* don't store a value, only cleanup */
+ var_redir_stop();
+ return FAIL;
+ }
+***************
+*** 1085,1090 ****
+--- 1088,1094 ----
+
+ /*
+ * Stop redirecting command output to a variable.
++ * Frees the allocated memory.
+ */
+ void
+ var_redir_stop()
+***************
+*** 1093,1106 ****
+
+ if (redir_lval != NULL)
+ {
+! /* Append the trailing NUL. */
+! ga_append(&redir_ga, NUL);
+
+! /* Assign the text to the variable. */
+! tv.v_type = VAR_STRING;
+! tv.vval.v_string = redir_ga.ga_data;
+! set_var_lval(redir_lval, redir_endp, &tv, FALSE, (char_u *)".");
+! vim_free(tv.vval.v_string);
+
+ clear_lval(redir_lval);
+ vim_free(redir_lval);
+--- 1097,1114 ----
+
+ if (redir_lval != NULL)
+ {
+! /* If there was no error: assign the text to the variable. */
+! if (redir_endp != NULL)
+! {
+! ga_append(&redir_ga, NUL); /* Append the trailing NUL. */
+! tv.v_type = VAR_STRING;
+! tv.vval.v_string = redir_ga.ga_data;
+! set_var_lval(redir_lval, redir_endp, &tv, FALSE, (char_u *)".");
+! }
+
+! /* free the collected output */
+! vim_free(redir_ga.ga_data);
+! redir_ga.ga_data = NULL;
+
+ clear_lval(redir_lval);
+ vim_free(redir_lval);
+*** ../vim-7.2.272/src/version.c 2009-11-03 13:06:03.000000000 +0100
+--- src/version.c 2009-11-03 14:24:06.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 273,
+ /**/
+
+--
+Permission is granted to read this message out aloud on Kings Cross Road,
+London, under the condition that the orator is properly dressed.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.274 b/vim/vim-7.2/7.2.274
new file mode 100644
index 0000000..809cedc
--- /dev/null
+++ b/vim/vim-7.2/7.2.274
@@ -0,0 +1,130 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.274
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.274
+Problem: Syntax folding doesn't work properly when adding a comment.
+Solution: Fix it and add a test. (Lech Lorens)
+Files: src/fold.c, src/testdir/test45.in, src/testdir/test45.ok
+
+
+*** ../vim-7.2.273/src/fold.c 2009-09-18 15:16:37.000000000 +0200
+--- src/fold.c 2009-11-03 12:36:37.000000000 +0100
+***************
+*** 2256,2261 ****
+--- 2256,2295 ----
+ }
+ }
+
++ /*
++ * If folding is defined by the syntax, it is possible that a change in
++ * one line will cause all sub-folds of the current fold to change (e.g.,
++ * closing a C-style comment can cause folds in the subsequent lines to
++ * appear). To take that into account we should adjust the value of "bot"
++ * to point to the end of the current fold:
++ */
++ if (foldlevelSyntax == getlevel)
++ {
++ garray_T *gap = &wp->w_folds;
++ fold_T *fp = NULL;
++ int current_fdl = 0;
++ linenr_T fold_start_lnum = 0;
++ linenr_T lnum_rel = fline.lnum;
++
++ while (current_fdl < fline.lvl)
++ {
++ if (!foldFind(gap, lnum_rel, &fp))
++ break;
++ ++current_fdl;
++
++ fold_start_lnum += fp->fd_top;
++ gap = &fp->fd_nested;
++ lnum_rel -= fp->fd_top;
++ }
++ if (fp != NULL && current_fdl == fline.lvl)
++ {
++ linenr_T fold_end_lnum = fold_start_lnum + fp->fd_len;
++
++ if (fold_end_lnum > bot)
++ bot = fold_end_lnum;
++ }
++ }
++
+ start = fline.lnum;
+ end = bot;
+ /* Do at least one line. */
+*** ../vim-7.2.273/src/testdir/test45.in 2007-09-25 17:58:43.000000000 +0200
+--- src/testdir/test45.in 2009-11-03 12:22:38.000000000 +0100
+***************
+*** 28,36 ****
+ k:call append("$", foldlevel("."))
+ :" test syntax folding
+ :set fdm=syntax fdl=0
+! :syn region Hup start="dd" end="hh" fold
+ Gzk:call append("$", "folding " . getline("."))
+ k:call append("$", getline("."))
+ :" test expression folding
+ :fun Flvl()
+ let l = getline(v:lnum)
+--- 28,41 ----
+ k:call append("$", foldlevel("."))
+ :" test syntax folding
+ :set fdm=syntax fdl=0
+! :syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
+! :syn region Fd1 start="ee" end="ff" fold contained
+! :syn region Fd2 start="gg" end="hh" fold contained
+! :syn region Fd3 start="commentstart" end="commentend" fold contained
+ Gzk:call append("$", "folding " . getline("."))
+ k:call append("$", getline("."))
++ jAcommentstart Acommentend:set fdl=1
++ 3j:call append("$", getline("."))
+ :" test expression folding
+ :fun Flvl()
+ let l = getline(v:lnum)
+*** ../vim-7.2.273/src/testdir/test45.ok 2004-06-13 17:47:37.000000000 +0200
+--- src/testdir/test45.ok 2009-11-03 12:22:50.000000000 +0100
+***************
+*** 8,15 ****
+ 0
+ indent 2
+ 1
+! folding 8 hh
+ 3 cc
+ expr 2
+ 1
+ 2
+--- 8,16 ----
+ 0
+ indent 2
+ 1
+! folding 9 ii
+ 3 cc
++ 7 gg
+ expr 2
+ 1
+ 2
+*** ../vim-7.2.273/src/version.c 2009-11-03 14:26:29.000000000 +0100
+--- src/version.c 2009-11-03 14:44:21.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 274,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite colour?
+LAUNCELOT: Blue.
+BRIDGEKEEPER: Right. Off you go.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.275 b/vim/vim-7.2/7.2.275
new file mode 100644
index 0000000..c6c6326
--- /dev/null
+++ b/vim/vim-7.2/7.2.275
@@ -0,0 +1,95 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.275
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.275
+Problem: Warning for unused argument and comparing signed and unsigned.
+Solution: Add type cast.
+Files: src/memline.c
+
+
+*** ../vim-7.2.274/src/memline.c 2009-11-03 13:06:03.000000000 +0100
+--- src/memline.c 2009-10-29 20:55:08.000000000 +0100
+***************
+*** 1285,1291 ****
+ for (i = 0; i < dp->db_line_count; ++i)
+ {
+ txt_start = (dp->db_index[i] & DB_INDEX_MASK);
+! if (txt_start <= HEADER_SIZE
+ || txt_start >= (int)dp->db_txt_end)
+ {
+ p = (char_u *)"???";
+--- 1285,1291 ----
+ for (i = 0; i < dp->db_line_count; ++i)
+ {
+ txt_start = (dp->db_index[i] & DB_INDEX_MASK);
+! if (txt_start <= (int)HEADER_SIZE
+ || txt_start >= (int)dp->db_txt_end)
+ {
+ p = (char_u *)"???";
+***************
+*** 1296,1302 ****
+ ml_append(lnum++, p, (colnr_T)0, TRUE);
+ }
+ if (has_error)
+! ml_append(lnum++, (char_u *)_("???END"), (colnr_T)0, TRUE);
+ }
+ }
+ }
+--- 1296,1303 ----
+ ml_append(lnum++, p, (colnr_T)0, TRUE);
+ }
+ if (has_error)
+! ml_append(lnum++, (char_u *)_("???END"),
+! (colnr_T)0, TRUE);
+ }
+ }
+ }
+***************
+*** 3576,3586 ****
+ * Make swap file name out of the file name and a directory name.
+ * Returns pointer to allocated memory or NULL.
+ */
+- /*ARGSUSED*/
+ char_u *
+ makeswapname(fname, ffname, buf, dir_name)
+ char_u *fname;
+! char_u *ffname;
+ buf_T *buf;
+ char_u *dir_name;
+ {
+--- 3577,3586 ----
+ * Make swap file name out of the file name and a directory name.
+ * Returns pointer to allocated memory or NULL.
+ */
+ char_u *
+ makeswapname(fname, ffname, buf, dir_name)
+ char_u *fname;
+! char_u *ffname UNUSED;
+ buf_T *buf;
+ char_u *dir_name;
+ {
+*** ../vim-7.2.274/src/version.c 2009-11-03 14:46:35.000000000 +0100
+--- src/version.c 2009-11-03 15:28:33.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 275,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite colour?
+GAWAIN: Blue ... No yelloooooww!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.276 b/vim/vim-7.2/7.2.276
new file mode 100644
index 0000000..15dc68b
--- /dev/null
+++ b/vim/vim-7.2/7.2.276
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.276
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.276
+Problem: Crash when setting 'isprint' to a small bullet. (Raul Coronado)
+Solution: Check for the character to be < 256. Also make it possible to
+ specify a range of multi-byte characters. (Lech Lorens)
+Files: src/charset.c
+
+
+*** ../vim-7.2.275/src/charset.c 2009-10-07 16:19:52.000000000 +0200
+--- src/charset.c 2009-11-03 12:46:12.000000000 +0100
+***************
+*** 187,195 ****
+ if (VIM_ISDIGIT(*p))
+ c2 = getdigits(&p);
+ else
+ c2 = *p++;
+ }
+! if (c <= 0 || (c2 < c && c2 != -1) || c2 >= 256
+ || !(*p == NUL || *p == ','))
+ return FAIL;
+
+--- 187,200 ----
+ if (VIM_ISDIGIT(*p))
+ c2 = getdigits(&p);
+ else
++ #ifdef FEAT_MBYTE
++ if (has_mbyte)
++ c2 = mb_ptr2char_adv(&p);
++ else
++ #endif
+ c2 = *p++;
+ }
+! if (c <= 0 || c >= 256 || (c2 < c && c2 != -1) || c2 >= 256
+ || !(*p == NUL || *p == ','))
+ return FAIL;
+
+*** ../vim-7.2.275/src/version.c 2009-11-03 15:32:58.000000000 +0100
+--- src/version.c 2009-11-03 16:03:18.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 276,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite editor?
+GAWAIN: Emacs ... No, Viiiiiiiiiiimmmmmmm!
+ "Monty Python and the Holy editor wars" PYTHON (MONTY) SOFTWARE LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.277 b/vim/vim-7.2/7.2.277
new file mode 100644
index 0000000..ed3caf4
--- /dev/null
+++ b/vim/vim-7.2/7.2.277
@@ -0,0 +1,66 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.277
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.277
+Problem: CTRL-Y in a diff'ed window may move the cursor outside of the
+ window. (Lech Lorens)
+Solution: Limit the number of filler lines to the height of the window.
+ Don't reset filler lines to zero for an empty buffer.
+Files: src/move.c
+
+
+*** ../vim-7.2.276/src/move.c 2009-05-15 21:31:11.000000000 +0200
+--- src/move.c 2009-11-03 14:39:55.000000000 +0100
+***************
+*** 183,191 ****
+ if (curwin->w_topline != 1)
+ redraw_later(NOT_VALID);
+ curwin->w_topline = 1;
+- #ifdef FEAT_DIFF
+- curwin->w_topfill = 0;
+- #endif
+ curwin->w_botline = 2;
+ curwin->w_valid |= VALID_BOTLINE|VALID_BOTLINE_AP;
+ #ifdef FEAT_SCROLLBIND
+--- 183,188 ----
+***************
+*** 1257,1263 ****
+ while (line_count-- > 0)
+ {
+ #ifdef FEAT_DIFF
+! if (curwin->w_topfill < diff_check(curwin, curwin->w_topline))
+ {
+ ++curwin->w_topfill;
+ ++done;
+--- 1254,1261 ----
+ while (line_count-- > 0)
+ {
+ #ifdef FEAT_DIFF
+! if (curwin->w_topfill < diff_check(curwin, curwin->w_topline)
+! && curwin->w_topfill < curwin->w_height - 1)
+ {
+ ++curwin->w_topfill;
+ ++done;
+*** ../vim-7.2.276/src/version.c 2009-11-03 16:03:59.000000000 +0100
+--- src/version.c 2009-11-03 16:22:04.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 277,
+ /**/
+
+--
+SIGFUN -- signature too funny (core dumped)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.278 b/vim/vim-7.2/7.2.278
new file mode 100644
index 0000000..edf4e58
--- /dev/null
+++ b/vim/vim-7.2/7.2.278
@@ -0,0 +1,74 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.278
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.278
+Problem: Using magic number in the folding code.
+Solution: Use the defined MAX_LEVEL.
+Files: src/fold.c
+
+
+*** ../vim-7.2.277/src/fold.c 2009-11-03 14:46:35.000000000 +0100
+--- src/fold.c 2009-11-03 12:36:37.000000000 +0100
+***************
+*** 1932,1938 ****
+ #ifdef FEAT_EVAL
+ if (*wp->w_p_fdt != NUL)
+ {
+! char_u dashes[51];
+ win_T *save_curwin;
+ int level;
+ char_u *p;
+--- 1932,1938 ----
+ #ifdef FEAT_EVAL
+ if (*wp->w_p_fdt != NUL)
+ {
+! char_u dashes[MAX_LEVEL + 2];
+ win_T *save_curwin;
+ int level;
+ char_u *p;
+***************
+*** 1944,1951 ****
+ /* Set "v:folddashes" to a string of "level" dashes. */
+ /* Set "v:foldlevel" to "level". */
+ level = foldinfo->fi_level;
+! if (level > 50)
+! level = 50;
+ vim_memset(dashes, '-', (size_t)level);
+ dashes[level] = NUL;
+ set_vim_var_string(VV_FOLDDASHES, dashes, -1);
+--- 1944,1951 ----
+ /* Set "v:folddashes" to a string of "level" dashes. */
+ /* Set "v:foldlevel" to "level". */
+ level = foldinfo->fi_level;
+! if (level > (int)sizeof(dashes) - 1)
+! level = (int)sizeof(dashes) - 1;
+ vim_memset(dashes, '-', (size_t)level);
+ dashes[level] = NUL;
+ set_vim_var_string(VV_FOLDDASHES, dashes, -1);
+*** ../vim-7.2.277/src/version.c 2009-11-03 16:22:59.000000000 +0100
+--- src/version.c 2009-11-03 16:29:08.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 278,
+ /**/
+
+--
+BRIDGEKEEPER: What is the air-speed velocity of an unladen swallow?
+ARTHUR: What do you mean? An African or European swallow?
+BRIDGEKEEPER: Er ... I don't know that ... Aaaaarrrrrrggghhh!
+ BRIDGEKEEPER is cast into the gorge.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.279 b/vim/vim-7.2/7.2.279
new file mode 100644
index 0000000..bdf58fc
--- /dev/null
+++ b/vim/vim-7.2/7.2.279
@@ -0,0 +1,120 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.279
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.279
+Problem: Invalid memory read with visual mode "r". (Dominique Pelle)
+Solution: Make sure the cursor position is valid. Don't check the cursor
+ position but the position being used. And make sure we get the
+ right line.
+Files: src/misc2.c, src/ops.c
+
+
+*** ../vim-7.2.278/src/misc2.c 2009-05-16 21:06:36.000000000 +0200
+--- src/misc2.c 2009-11-03 16:43:10.000000000 +0100
+***************
+*** 156,162 ****
+ || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL)
+ #endif
+ ;
+! line = ml_get_curline();
+
+ if (wcol >= MAXCOL)
+ {
+--- 156,162 ----
+ || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL)
+ #endif
+ ;
+! line = ml_get_buf(curbuf, pos->lnum, FALSE);
+
+ if (wcol >= MAXCOL)
+ {
+***************
+*** 332,340 ****
+ #endif
+
+ #ifdef FEAT_MBYTE
+! /* prevent cursor from moving on the trail byte */
+ if (has_mbyte)
+! mb_adjust_cursor();
+ #endif
+
+ if (col < wcol)
+--- 332,340 ----
+ #endif
+
+ #ifdef FEAT_MBYTE
+! /* prevent from moving onto a trail byte */
+ if (has_mbyte)
+! mb_adjustpos(pos);
+ #endif
+
+ if (col < wcol)
+*** ../vim-7.2.278/src/ops.c 2009-09-30 15:15:33.000000000 +0200
+--- src/ops.c 2009-11-03 15:18:50.000000000 +0100
+***************
+*** 2020,2025 ****
+--- 2020,2026 ----
+ bd.is_MAX = (curwin->w_curswant == MAXCOL);
+ for ( ; curwin->w_cursor.lnum <= oap->end.lnum; ++curwin->w_cursor.lnum)
+ {
++ curwin->w_cursor.col = 0; /* make sure cursor position is valid */
+ block_prep(oap, &bd, curwin->w_cursor.lnum, TRUE);
+ if (bd.textlen == 0 && (!virtual_op || bd.is_MAX))
+ continue; /* nothing to replace */
+***************
+*** 2035,2040 ****
+--- 2036,2042 ----
+ {
+ pos_T vpos;
+
++ vpos.lnum = curwin->w_cursor.lnum;
+ getvpos(&vpos, oap->start_vcol);
+ bd.startspaces += vpos.coladd;
+ n = bd.startspaces;
+***************
+*** 2693,2703 ****
+ * initial coladd offset as part of "startspaces" */
+ if (bd.is_short)
+ {
+! linenr_T lnum = curwin->w_cursor.lnum;
+!
+! curwin->w_cursor.lnum = linenr;
+ (void)getvpos(&vpos, oap->start_vcol);
+- curwin->w_cursor.lnum = lnum;
+ }
+ else
+ vpos.coladd = 0;
+--- 2695,2702 ----
+ * initial coladd offset as part of "startspaces" */
+ if (bd.is_short)
+ {
+! vpos.lnum = linenr;
+ (void)getvpos(&vpos, oap->start_vcol);
+ }
+ else
+ vpos.coladd = 0;
+*** ../vim-7.2.278/src/version.c 2009-11-03 16:29:48.000000000 +0100
+--- src/version.c 2009-11-03 16:41:53.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 279,
+ /**/
+
+--
+BEDEVERE: How do you know so much about swallows?
+ARTHUR: Well you have to know these things when you're a king, you know.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.280 b/vim/vim-7.2/7.2.280
new file mode 100644
index 0000000..6223ac4
--- /dev/null
+++ b/vim/vim-7.2/7.2.280
@@ -0,0 +1,251 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.280
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.280
+Problem: A redraw in a custom statusline with %! may cause a crash.
+ (Yukihiro Nakadaira)
+Solution: Make a copy of 'statusline'. Also fix typo in function name
+ redraw_custum_statusline. (party by Dominique Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.279/src/screen.c 2009-07-29 16:13:35.000000000 +0200
+--- src/screen.c 2009-11-03 17:13:16.000000000 +0100
+***************
+*** 132,138 ****
+ static void draw_vsep_win __ARGS((win_T *wp, int row));
+ #endif
+ #ifdef FEAT_STL_OPT
+! static void redraw_custum_statusline __ARGS((win_T *wp));
+ #endif
+ #ifdef FEAT_SEARCH_EXTRA
+ #define SEARCH_HL_PRIORITY 0
+--- 132,138 ----
+ static void draw_vsep_win __ARGS((win_T *wp, int row));
+ #endif
+ #ifdef FEAT_STL_OPT
+! static void redraw_custom_statusline __ARGS((win_T *wp));
+ #endif
+ #ifdef FEAT_SEARCH_EXTRA
+ #define SEARCH_HL_PRIORITY 0
+***************
+*** 5772,5778 ****
+ else if (*p_stl != NUL || *wp->w_p_stl != NUL)
+ {
+ /* redraw custom status line */
+! redraw_custum_statusline(wp);
+ }
+ #endif
+ else
+--- 5794,5800 ----
+ else if (*p_stl != NUL || *wp->w_p_stl != NUL)
+ {
+ /* redraw custom status line */
+! redraw_custom_statusline(wp);
+ }
+ #endif
+ else
+***************
+*** 5897,5914 ****
+ * errors encountered.
+ */
+ static void
+! redraw_custum_statusline(wp)
+ win_T *wp;
+ {
+! int save_called_emsg = called_emsg;
+
+ called_emsg = FALSE;
+ win_redr_custom(wp, FALSE);
+ if (called_emsg)
+ set_string_option_direct((char_u *)"statusline", -1,
+ (char_u *)"", OPT_FREE | (*wp->w_p_stl != NUL
+ ? OPT_LOCAL : OPT_GLOBAL), SID_ERROR);
+ called_emsg |= save_called_emsg;
+ }
+ #endif
+
+--- 5919,5949 ----
+ * errors encountered.
+ */
+ static void
+! redraw_custom_statusline(wp)
+ win_T *wp;
+ {
+! static int entered = FALSE;
+! int save_called_emsg = called_emsg;
+!
+! /* When called recursively return. This can happen when the statusline
+! * contains an expression that triggers a redraw. */
+! if (entered)
+! return;
+! entered = TRUE;
+
+ called_emsg = FALSE;
+ win_redr_custom(wp, FALSE);
+ if (called_emsg)
++ {
++ /* When there is an error disable the statusline, otherwise the
++ * display is messed up with errors and a redraw triggers the problem
++ * again and again. */
+ set_string_option_direct((char_u *)"statusline", -1,
+ (char_u *)"", OPT_FREE | (*wp->w_p_stl != NUL
+ ? OPT_LOCAL : OPT_GLOBAL), SID_ERROR);
++ }
+ called_emsg |= save_called_emsg;
++ entered = FALSE;
+ }
+ #endif
+
+***************
+*** 6016,6021 ****
+--- 6051,6057 ----
+ int len;
+ int fillchar;
+ char_u buf[MAXPATHL];
++ char_u *stl;
+ char_u *p;
+ struct stl_hlrec hltab[STL_MAX_ITEM];
+ struct stl_hlrec tabtab[STL_MAX_ITEM];
+***************
+*** 6025,6031 ****
+ if (wp == NULL)
+ {
+ /* Use 'tabline'. Always at the first line of the screen. */
+! p = p_tal;
+ row = 0;
+ fillchar = ' ';
+ attr = hl_attr(HLF_TPF);
+--- 6061,6067 ----
+ if (wp == NULL)
+ {
+ /* Use 'tabline'. Always at the first line of the screen. */
+! stl = p_tal;
+ row = 0;
+ fillchar = ' ';
+ attr = hl_attr(HLF_TPF);
+***************
+*** 6042,6058 ****
+
+ if (draw_ruler)
+ {
+! p = p_ruf;
+ /* advance past any leading group spec - implicit in ru_col */
+! if (*p == '%')
+ {
+! if (*++p == '-')
+! p++;
+! if (atoi((char *) p))
+! while (VIM_ISDIGIT(*p))
+! p++;
+! if (*p++ != '(')
+! p = p_ruf;
+ }
+ #ifdef FEAT_VERTSPLIT
+ col = ru_col - (Columns - W_WIDTH(wp));
+--- 6078,6094 ----
+
+ if (draw_ruler)
+ {
+! stl = p_ruf;
+ /* advance past any leading group spec - implicit in ru_col */
+! if (*stl == '%')
+ {
+! if (*++stl == '-')
+! stl++;
+! if (atoi((char *)stl))
+! while (VIM_ISDIGIT(*stl))
+! stl++;
+! if (*stl++ != '(')
+! stl = p_ruf;
+ }
+ #ifdef FEAT_VERTSPLIT
+ col = ru_col - (Columns - W_WIDTH(wp));
+***************
+*** 6081,6089 ****
+ else
+ {
+ if (*wp->w_p_stl != NUL)
+! p = wp->w_p_stl;
+ else
+! p = p_stl;
+ # ifdef FEAT_EVAL
+ use_sandbox = was_set_insecurely((char_u *)"statusline",
+ *wp->w_p_stl == NUL ? 0 : OPT_LOCAL);
+--- 6117,6125 ----
+ else
+ {
+ if (*wp->w_p_stl != NUL)
+! stl = wp->w_p_stl;
+ else
+! stl = p_stl;
+ # ifdef FEAT_EVAL
+ use_sandbox = was_set_insecurely((char_u *)"statusline",
+ *wp->w_p_stl == NUL ? 0 : OPT_LOCAL);
+***************
+*** 6098,6107 ****
+ if (maxwidth <= 0)
+ return;
+
+ width = build_stl_str_hl(wp == NULL ? curwin : wp,
+ buf, sizeof(buf),
+! p, use_sandbox,
+ fillchar, maxwidth, hltab, tabtab);
+ len = (int)STRLEN(buf);
+
+ while (width < maxwidth && len < (int)sizeof(buf) - 1)
+--- 6134,6147 ----
+ if (maxwidth <= 0)
+ return;
+
++ /* Make a copy, because the statusline may include a function call that
++ * might change the option value and free the memory. */
++ stl = vim_strsave(stl);
+ width = build_stl_str_hl(wp == NULL ? curwin : wp,
+ buf, sizeof(buf),
+! stl, use_sandbox,
+ fillchar, maxwidth, hltab, tabtab);
++ vim_free(stl);
+ len = (int)STRLEN(buf);
+
+ while (width < maxwidth && len < (int)sizeof(buf) - 1)
+***************
+*** 9465,9471 ****
+ #if defined(FEAT_STL_OPT) && defined(FEAT_WINDOWS)
+ if ((*p_stl != NUL || *curwin->w_p_stl != NUL) && curwin->w_status_height)
+ {
+! redraw_custum_statusline(curwin);
+ }
+ else
+ #endif
+--- 9505,9511 ----
+ #if defined(FEAT_STL_OPT) && defined(FEAT_WINDOWS)
+ if ((*p_stl != NUL || *curwin->w_p_stl != NUL) && curwin->w_status_height)
+ {
+! redraw_custom_statusline(curwin);
+ }
+ else
+ #endif
+*** ../vim-7.2.279/src/version.c 2009-11-03 16:44:04.000000000 +0100
+--- src/version.c 2009-11-03 17:15:35.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 280,
+ /**/
+
+--
+Every exit is an entrance into something else.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.281 b/vim/vim-7.2/7.2.281
new file mode 100644
index 0000000..f73d7a5
--- /dev/null
+++ b/vim/vim-7.2/7.2.281
@@ -0,0 +1,81 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.281
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.281
+Problem: 'cursorcolumn' highlighting is wrong in diff mode.
+Solution: Adjust the column computation. (Lech Lorens)
+Files: src/screen.c
+
+
+*** ../vim-7.2.280/src/screen.c 2009-11-03 17:20:18.000000000 +0100
+--- src/screen.c 2009-11-03 17:13:16.000000000 +0100
+***************
+*** 3008,3018 ****
+ mb_ptr_adv(ptr);
+ }
+
+! #ifdef FEAT_VIRTUALEDIT
+! /* When 'virtualedit' is set the end of the line may be before the
+! * start of the displayed part. */
+! if (vcol < v && *ptr == NUL && virtual_active())
+ vcol = v;
+ #endif
+
+ /* Handle a character that's not completely on the screen: Put ptr at
+--- 3008,3040 ----
+ mb_ptr_adv(ptr);
+ }
+
+! #if defined(FEAT_SYN_HL) || defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL)
+! /* When:
+! * - 'cuc' is set, or
+! * - 'virtualedit' is set, or
+! * - the visual mode is active,
+! * the end of the line may be before the start of the displayed part.
+! */
+! if (vcol < v && (
+! # ifdef FEAT_SYN_HL
+! wp->w_p_cuc
+! # if defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL)
+! ||
+! # endif
+! # endif
+! # ifdef FEAT_VIRTUALEDIT
+! virtual_active()
+! # ifdef FEAT_VISUAL
+! ||
+! # endif
+! # endif
+! # ifdef FEAT_VISUAL
+! (VIsual_active && wp->w_buffer == curwin->w_buffer)
+! # endif
+! ))
+! {
+ vcol = v;
++ }
+ #endif
+
+ /* Handle a character that's not completely on the screen: Put ptr at
+*** ../vim-7.2.280/src/version.c 2009-11-03 17:20:18.000000000 +0100
+--- src/version.c 2009-11-03 17:34:54.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 281,
+ /**/
+
+--
+Every person is responsible for the choices he makes.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.282 b/vim/vim-7.2/7.2.282
new file mode 100644
index 0000000..dd4dc64
--- /dev/null
+++ b/vim/vim-7.2/7.2.282
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.282
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.282
+Problem: A fold can't be closed.
+Solution: Initialize fd_small to MAYBE. (Lech Lorens)
+Files: src/fold.c
+
+
+*** ../vim-7.2.281/src/fold.c 2009-11-03 16:29:48.000000000 +0100
+--- src/fold.c 2009-11-03 17:41:50.000000000 +0100
+***************
+*** 2851,2856 ****
+--- 2851,2858 ----
+ fp[1].fd_top = bot + 1;
+ fp[1].fd_len = fp->fd_len - (fp[1].fd_top - fp->fd_top);
+ fp[1].fd_flags = fp->fd_flags;
++ fp[1].fd_small = MAYBE;
++ fp->fd_small = MAYBE;
+
+ /* Move nested folds below bot to new fold. There can't be
+ * any between top and bot, they have been removed by the caller. */
+*** ../vim-7.2.281/src/version.c 2009-11-03 17:36:09.000000000 +0100
+--- src/version.c 2009-11-03 17:59:12.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 282,
+ /**/
+
+--
+You can be stopped by the police for biking over 65 miles per hour.
+You are not allowed to walk across a street on your hands.
+ [real standing laws in Connecticut, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.283 b/vim/vim-7.2/7.2.283
new file mode 100644
index 0000000..0d6f605
--- /dev/null
+++ b/vim/vim-7.2/7.2.283
@@ -0,0 +1,73 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.283
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.283
+Problem: Changing font while the window is maximized doesn't keep the
+ window maximized.
+Solution: Recompute number of lines and columns after changing font. (James
+ Vega)
+Files: src/gui_gtk_x11.c
+
+
+*** ../vim-7.2.282/src/gui_gtk_x11.c 2009-09-23 18:14:13.000000000 +0200
+--- src/gui_gtk_x11.c 2009-11-03 17:56:27.000000000 +0100
+***************
+*** 5267,5274 ****
+ # endif
+ #endif /* !HAVE_GTK2 */
+
+! /* Preserve the logical dimensions of the screen. */
+! update_window_manager_hints(0, 0);
+
+ return OK;
+ }
+--- 5267,5290 ----
+ # endif
+ #endif /* !HAVE_GTK2 */
+
+! #ifdef HAVE_GTK2
+! if (gui_mch_maximized())
+! {
+! int w, h;
+!
+! /* Update lines and columns in accordance with the new font, keep the
+! * window maximized. */
+! gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h);
+! w -= get_menu_tool_width();
+! h -= get_menu_tool_height();
+! gui_resize_shell(w, h);
+! }
+! else
+! #endif
+! {
+! /* Preserve the logical dimensions of the screen. */
+! update_window_manager_hints(0, 0);
+! }
+
+ return OK;
+ }
+*** ../vim-7.2.282/src/version.c 2009-11-03 18:04:26.000000000 +0100
+--- src/version.c 2009-11-03 18:11:53.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 283,
+ /**/
+
+--
+If an elephant is left tied to a parking meter, the parking fee has to be paid
+just as it would for a vehicle.
+ [real standing law in Florida, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.284 b/vim/vim-7.2/7.2.284
new file mode 100644
index 0000000..5b4336b
--- /dev/null
+++ b/vim/vim-7.2/7.2.284
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.284
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.284
+Problem: When editing the same buffer in two windows, one with folding,
+ display may be wrong after changes.
+Solution: Call set_topline() to take care of side effects. (Lech Lorens)
+Files: src/misc1.c
+
+
+*** ../vim-7.2.283/src/misc1.c 2009-07-22 11:03:38.000000000 +0200
+--- src/misc1.c 2009-11-03 18:38:15.000000000 +0100
+***************
+*** 2886,2891 ****
+--- 2886,2898 ----
+ }
+ #endif
+ }
++
++ #ifdef FEAT_FOLDING
++ /* Take care of side effects for setting w_topline when folds have
++ * changed. Esp. when the buffer was changed in another window. */
++ if (hasAnyFolding(wp))
++ set_topline(wp, wp->w_topline);
++ #endif
+ }
+ }
+
+*** ../vim-7.2.283/src/version.c 2009-11-03 18:13:36.000000000 +0100
+--- src/version.c 2009-11-03 18:44:12.000000000 +0100
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 284,
+ /**/
+
+--
+Men may not be seen publicly in any kind of strapless gown.
+ [real standing law in Florida, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.285 b/vim/vim-7.2/7.2.285
new file mode 100644
index 0000000..2a34e17
--- /dev/null
+++ b/vim/vim-7.2/7.2.285
@@ -0,0 +1,56 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.285
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.285 (after 7.2.169)
+Problem: CTRL-U in Insert mode also deletes indent. (Andrey Voropaev)
+Solution: Fix mistake made in patch 7.2.169.
+Files: src/edit.c
+
+
+*** ../vim-7.2.284/src/edit.c 2009-07-09 18:15:19.000000000 +0200
+--- src/edit.c 2009-11-05 20:25:15.000000000 +0100
+***************
+*** 8519,8525 ****
+ {
+ save_col = curwin->w_cursor.col;
+ beginline(BL_WHITE);
+! if (curwin->w_cursor.col < (colnr_T)temp)
+ mincol = curwin->w_cursor.col;
+ curwin->w_cursor.col = save_col;
+ }
+--- 8519,8525 ----
+ {
+ save_col = curwin->w_cursor.col;
+ beginline(BL_WHITE);
+! if (curwin->w_cursor.col < save_col)
+ mincol = curwin->w_cursor.col;
+ curwin->w_cursor.col = save_col;
+ }
+*** ../vim-7.2.284/src/version.c 2009-11-03 18:46:53.000000000 +0100
+--- src/version.c 2009-11-11 13:21:25.000000000 +0100
+***************
+*** 678,679 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 285,
+ /**/
+
+--
+(letter from Mark to Mike, about the film's probable certificate)
+ I would like to get back to the Censor and agree to lose the shits, take
+ the odd Jesus Christ out and lose Oh fuck off, but to retain 'fart in
+ your general direction', 'castanets of your testicles' and 'oral sex'
+ and ask him for an 'A' rating on that basis.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.286 b/vim/vim-7.2/7.2.286
new file mode 100644
index 0000000..7577502
--- /dev/null
+++ b/vim/vim-7.2/7.2.286
@@ -0,0 +1,227 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.286
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.286 (after 7.2.269)
+Problem: The "--startuptime=<file>" argument is not consistent with other
+ arguments.
+Solution: Use "--startuptime <file>". Added the +startuptime feature.
+Files: runtime/doc/eval.txt, runtime/doc/starting.txt,
+ runtime/doc/various.txt, src/eval.c, src/main.c, src/version.c
+
+
+*** ../vim-7.2.285/runtime/doc/eval.txt 2009-04-22 12:53:31.000000000 +0200
+--- runtime/doc/eval.txt 2009-11-11 13:01:58.000000000 +0100
+***************
+*** 5869,5874 ****
+--- 5881,5887 ----
+ signs Compiled with |:sign| support.
+ smartindent Compiled with 'smartindent' support.
+ sniff Compiled with SNiFF interface support.
++ startuptime Compiled with |--startuptime| support.
+ statusline Compiled with support for 'statusline', 'rulerformat'
+ and special formats of 'titlestring' and 'iconstring'.
+ sun_workshop Compiled with support for Sun |workshop|.
+*** ../vim-7.2.285/runtime/doc/starting.txt 2009-11-03 12:10:39.000000000 +0100
+--- runtime/doc/starting.txt 2009-11-11 13:20:56.000000000 +0100
+***************
+*** 144,155 ****
+ -u NORC no yes
+ --noplugin yes no
+
+! --startuptime={fname} *--startuptime*
+ During startup write timing messages to the file {fname}.
+ This can be used to find out where time is spent while loading
+! your .vimrc and plugins.
+ When {fname} already exists new messages are appended.
+! {only when compiled with this feature}
+
+ *--literal*
+ --literal Take file names literally, don't expand wildcards. Not needed
+--- 144,156 ----
+ -u NORC no yes
+ --noplugin yes no
+
+! --startuptime {fname} *--startuptime*
+ During startup write timing messages to the file {fname}.
+ This can be used to find out where time is spent while loading
+! your .vimrc, plugins and opening the first file.
+ When {fname} already exists new messages are appended.
+! (Only available when compiled with the |+startuptime|
+! feature).
+
+ *--literal*
+ --literal Take file names literally, don't expand wildcards. Not needed
+*** ../vim-7.2.285/runtime/doc/various.txt 2009-07-09 15:55:34.000000000 +0200
+--- runtime/doc/various.txt 2009-11-11 13:03:52.000000000 +0100
+***************
+*** 374,379 ****
+--- 374,380 ----
+ B *+signs* |:sign|
+ N *+smartindent* |'smartindent'|
+ m *+sniff* SniFF interface |sniff|
++ N *+startuptime* |--startuptime| argument
+ N *+statusline* Options 'statusline', 'rulerformat' and special
+ formats of 'titlestring' and 'iconstring'
+ m *+sun_workshop* |workshop|
+*** ../vim-7.2.285/src/eval.c 2009-11-03 14:26:29.000000000 +0100
+--- src/eval.c 2009-11-11 12:59:53.000000000 +0100
+***************
+*** 11736,11741 ****
+--- 11736,11744 ----
+ #ifdef FEAT_SNIFF
+ "sniff",
+ #endif
++ #ifdef STARTUPTIME
++ "startuptime",
++ #endif
+ #ifdef FEAT_STL_OPT
+ "statusline",
+ #endif
+*** ../vim-7.2.285/src/main.c 2009-11-03 12:10:39.000000000 +0100
+--- src/main.c 2009-11-08 12:57:46.000000000 +0100
+***************
+*** 204,212 ****
+ #ifdef STARTUPTIME
+ for (i = 1; i < argc; ++i)
+ {
+! if (STRNICMP(argv[i], "--startuptime=", 14) == 0)
+ {
+! time_fd = mch_fopen(argv[i] + 14, "a");
+ TIME_MSG("--- VIM STARTING ---");
+ break;
+ }
+--- 204,212 ----
+ #ifdef STARTUPTIME
+ for (i = 1; i < argc; ++i)
+ {
+! if (STRICMP(argv[i], "--startuptime") == 0 && i + 1 < argc)
+ {
+! time_fd = mch_fopen(argv[i + 1], "a");
+ TIME_MSG("--- VIM STARTING ---");
+ break;
+ }
+***************
+*** 1726,1731 ****
+--- 1726,1736 ----
+ want_argument = TRUE;
+ argv_idx += 3;
+ }
++ else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
++ {
++ want_argument = TRUE;
++ argv_idx += 11;
++ }
+ #ifdef FEAT_CLIENTSERVER
+ else if (STRNICMP(argv[0] + argv_idx, "serverlist", 10) == 0)
+ ; /* already processed -- no arg */
+***************
+*** 1761,1770 ****
+ /* already processed, skip */
+ }
+ #endif
+- else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
+- {
+- /* already processed, skip */
+- }
+ else
+ {
+ if (argv[0][argv_idx])
+--- 1766,1771 ----
+***************
+*** 2061,2067 ****
+ mainerr(ME_GARBAGE, (char_u *)argv[0]);
+
+ --argc;
+! if (argc < 1 && c != 'S')
+ mainerr_arg_missing((char_u *)argv[0]);
+ ++argv;
+ argv_idx = -1;
+--- 2062,2068 ----
+ mainerr(ME_GARBAGE, (char_u *)argv[0]);
+
+ --argc;
+! if (argc < 1 && c != 'S') /* -S has an optional argument */
+ mainerr_arg_missing((char_u *)argv[0]);
+ ++argv;
+ argv_idx = -1;
+***************
+*** 2102,2112 ****
+ (char_u *)argv[0];
+ break;
+
+! case '-': /* "--cmd {command}" execute command */
+! if (parmp->n_pre_commands >= MAX_ARG_CMDS)
+! mainerr(ME_EXTRA_CMD, NULL);
+! parmp->pre_commands[parmp->n_pre_commands++] =
+ (char_u *)argv[0];
+ break;
+
+ /* case 'd': -d {device} is handled in mch_check_win() for the
+--- 2103,2118 ----
+ (char_u *)argv[0];
+ break;
+
+! case '-':
+! if (argv[-1][2] == 'c')
+! {
+! /* "--cmd {command}" execute command */
+! if (parmp->n_pre_commands >= MAX_ARG_CMDS)
+! mainerr(ME_EXTRA_CMD, NULL);
+! parmp->pre_commands[parmp->n_pre_commands++] =
+ (char_u *)argv[0];
++ }
++ /* "--startuptime <file>" already handled */
+ break;
+
+ /* case 'd': -d {device} is handled in mch_check_win() for the
+***************
+*** 3144,3149 ****
+--- 3150,3158 ----
+ main_msg(_("--serverlist\t\tList available Vim server names and exit"));
+ main_msg(_("--servername <name>\tSend to/become the Vim server <name>"));
+ #endif
++ #ifdef STARTUPTIME
++ main_msg(_("--startuptime=<file>\tWrite startup timing messages to <file>"));
++ #endif
+ #ifdef FEAT_VIMINFO
+ main_msg(_("-i <viminfo>\t\tUse <viminfo> instead of .viminfo"));
+ #endif
+*** ../vim-7.2.285/src/version.c 2009-11-11 13:22:09.000000000 +0100
+--- src/version.c 2009-11-11 14:17:28.000000000 +0100
+***************
+*** 494,499 ****
+--- 494,504 ----
+ #else
+ "-sniff",
+ #endif
++ #ifdef STARTUPTIME
++ "+startuptime",
++ #else
++ "-startuptime",
++ #endif
+ #ifdef FEAT_STL_OPT
+ "+statusline",
+ #else
+*** ../vim-7.2.285/src/version.c 2009-11-11 13:22:09.000000000 +0100
+--- src/version.c 2009-11-11 14:17:28.000000000 +0100
+***************
+*** 678,679 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 286,
+ /**/
+
+--
+A fool must search for a greater fool to find admiration.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.287 b/vim/vim-7.2/7.2.287
new file mode 100644
index 0000000..0f8e170
--- /dev/null
+++ b/vim/vim-7.2/7.2.287
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.287
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.287
+Problem: Warning from gcc 3.4 about uninitialized variable.
+Solution: Move assignment outside of #ifdef.
+Files: src/if_perl.xs
+
+
+*** ../vim-7.2.286/src/if_perl.xs 2009-07-14 16:05:14.000000000 +0200
+--- src/if_perl.xs 2009-11-11 12:29:32.000000000 +0100
+***************
+*** 720,727 ****
+ #ifdef HAVE_SANDBOX
+ if (sandbox)
+ {
+ # ifndef MAKE_TEST /* avoid a warning for unreachable code */
+! if ((safe = perl_get_sv( "VIM::safe", FALSE )) == NULL || !SvTRUE(safe))
+ EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
+ else
+ # endif
+--- 720,728 ----
+ #ifdef HAVE_SANDBOX
+ if (sandbox)
+ {
++ safe = perl_get_sv( "VIM::safe", FALSE );
+ # ifndef MAKE_TEST /* avoid a warning for unreachable code */
+! if (safe == NULL || !SvTRUE(safe))
+ EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
+ else
+ # endif
+*** ../vim-7.2.286/src/version.c 2009-11-11 14:21:48.000000000 +0100
+--- src/version.c 2009-11-11 14:44:49.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 287,
+ /**/
+
+--
+The most powerful force in the universe is gossip.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.288 b/vim/vim-7.2/7.2.288
new file mode 100644
index 0000000..ab9ecda
--- /dev/null
+++ b/vim/vim-7.2/7.2.288
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.288
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.288
+Problem: Python 2.6 pyconfig.h redefines macros.
+Solution: Undefine the macros before including pyconfig.h.
+Files: src/if_python.c
+
+
+*** ../vim-7.2.287/src/if_python.c 2009-11-03 11:43:05.000000000 +0100
+--- src/if_python.c 2009-11-11 12:33:37.000000000 +0100
+***************
+*** 37,42 ****
+--- 37,48 ----
+ #ifdef HAVE_STDARG_H
+ # undef HAVE_STDARG_H /* Python's config.h defines it as well. */
+ #endif
++ #ifdef _POSIX_C_SOURCE
++ # undef _POSIX_C_SOURCE /* pyconfig.h defines it as well. */
++ #endif
++ #ifdef _XOPEN_SOURCE
++ # undef _XOPEN_SOURCE /* pyconfig.h defines it as well. */
++ #endif
+
+ #define PY_SSIZE_T_CLEAN
+
+*** ../vim-7.2.287/src/version.c 2009-11-11 14:45:36.000000000 +0100
+--- src/version.c 2009-11-11 15:05:51.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 288,
+ /**/
+
+--
+I am always surprised in the Linux world how quickly solutions can be
+obtained. (Imagine sending an email to Bill Gates, asking why Windows
+crashed, and how to fix it... and then getting an answer that fixed the
+problem... <0>_<0> !) -- Mark Langdon
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.289 b/vim/vim-7.2/7.2.289
new file mode 100644
index 0000000..4009bb9
--- /dev/null
+++ b/vim/vim-7.2/7.2.289
@@ -0,0 +1,120 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.289
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.289
+Problem: Checking wrong struct member.
+Solution: Change tb_buf to tb_noremap. (Dominique Pelle)
+Files: src/getchar.c
+
+
+*** ../vim-7.2.288/src/getchar.c 2009-09-30 15:15:33.000000000 +0200
+--- src/getchar.c 2009-11-11 12:50:58.000000000 +0100
+***************
+*** 22,28 ****
+ * These buffers are used for storing:
+ * - stuffed characters: A command that is translated into another command.
+ * - redo characters: will redo the last change.
+! * - recorded chracters: for the "q" command.
+ *
+ * The bytes are stored like in the typeahead buffer:
+ * - K_SPECIAL introduces a special key (two more bytes follow). A literal
+--- 22,28 ----
+ * These buffers are used for storing:
+ * - stuffed characters: A command that is translated into another command.
+ * - redo characters: will redo the last change.
+! * - recorded characters: for the "q" command.
+ *
+ * The bytes are stored like in the typeahead buffer:
+ * - K_SPECIAL introduces a special key (two more bytes follow). A literal
+***************
+*** 1283,1289 ****
+ EMSG2(_(e_intern2), "Free typebuf 1");
+ else
+ vim_free(typebuf.tb_buf);
+! if (typebuf.tb_buf == noremapbuf_init)
+ EMSG2(_(e_intern2), "Free typebuf 2");
+ else
+ vim_free(typebuf.tb_noremap);
+--- 1283,1289 ----
+ EMSG2(_(e_intern2), "Free typebuf 1");
+ else
+ vim_free(typebuf.tb_buf);
+! if (typebuf.tb_noremap == noremapbuf_init)
+ EMSG2(_(e_intern2), "Free typebuf 2");
+ else
+ vim_free(typebuf.tb_noremap);
+***************
+*** 1516,1522 ****
+ * wanted.
+ * This translates escaped K_SPECIAL and CSI bytes to a K_SPECIAL or CSI byte.
+ * Collects the bytes of a multibyte character into the whole character.
+! * Returns the modifers in the global "mod_mask".
+ */
+ int
+ vgetc()
+--- 1516,1522 ----
+ * wanted.
+ * This translates escaped K_SPECIAL and CSI bytes to a K_SPECIAL or CSI byte.
+ * Collects the bytes of a multibyte character into the whole character.
+! * Returns the modifiers in the global "mod_mask".
+ */
+ int
+ vgetc()
+***************
+*** 3320,3326 ****
+ retval = 1;
+ goto theend;
+ }
+! /* An abbrevation cannot contain white space. */
+ for (n = 0; n < len; ++n)
+ if (vim_iswhite(keys[n]))
+ {
+--- 3320,3326 ----
+ retval = 1;
+ goto theend;
+ }
+! /* An abbreviation cannot contain white space. */
+ for (n = 0; n < len; ++n)
+ if (vim_iswhite(keys[n]))
+ {
+***************
+*** 4272,4278 ****
+
+ /*
+ * Check for word before the cursor: If it ends in a keyword char all
+! * chars before it must be al keyword chars or non-keyword chars, but not
+ * white space. If it ends in a non-keyword char we accept any characters
+ * before it except white space.
+ */
+--- 4272,4278 ----
+
+ /*
+ * Check for word before the cursor: If it ends in a keyword char all
+! * chars before it must be keyword chars or non-keyword chars, but not
+ * white space. If it ends in a non-keyword char we accept any characters
+ * before it except white space.
+ */
+*** ../vim-7.2.288/src/version.c 2009-11-11 15:06:59.000000000 +0100
+--- src/version.c 2009-11-11 16:19:12.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 289,
+ /**/
+
+--
+A M00se once bit my sister ...
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.290 b/vim/vim-7.2/7.2.290
new file mode 100644
index 0000000..ba4fd62
--- /dev/null
+++ b/vim/vim-7.2/7.2.290
@@ -0,0 +1,157 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.290
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.290
+Problem: Not freeing memory from ":lmap", ":xmap" and ":menutranslate".
+Solution: Free the memory when exiting. (Dominique Pelle)
+Files: src/misc2.c
+
+
+*** ../vim-7.2.289/src/misc2.c 2009-11-03 16:44:04.000000000 +0100
+--- src/misc2.c 2009-11-11 16:49:13.000000000 +0100
+***************
+*** 1005,1013 ****
+--- 1005,1018 ----
+ # ifdef FEAT_MENU
+ /* Clear menus. */
+ do_cmdline_cmd((char_u *)"aunmenu *");
++ # ifdef FEAT_MULTI_LANG
++ do_cmdline_cmd((char_u *)"menutranslate clear");
++ # endif
+ # endif
+
+ /* Clear mappings, abbreviations, breakpoints. */
++ do_cmdline_cmd((char_u *)"lmapclear");
++ do_cmdline_cmd((char_u *)"xmapclear");
+ do_cmdline_cmd((char_u *)"mapclear");
+ do_cmdline_cmd((char_u *)"mapclear!");
+ do_cmdline_cmd((char_u *)"abclear");
+***************
+*** 1282,1288 ****
+
+ /*
+ * Escape "string" for use as a shell argument with system().
+! * This uses single quotes, except when we know we need to use double qoutes
+ * (MS-DOS and MS-Windows without 'shellslash' set).
+ * Escape a newline, depending on the 'shell' option.
+ * When "do_special" is TRUE also replace "!", "%", "#" and things starting
+--- 1287,1293 ----
+
+ /*
+ * Escape "string" for use as a shell argument with system().
+! * This uses single quotes, except when we know we need to use double quotes
+ * (MS-DOS and MS-Windows without 'shellslash' set).
+ * Escape a newline, depending on the 'shell' option.
+ * When "do_special" is TRUE also replace "!", "%", "#" and things starting
+***************
+*** 1537,1543 ****
+ #if defined(FEAT_VISUALEXTRA) || defined(PROTO)
+ /*
+ * Copy a character a number of times.
+! * Does not work for multi-byte charactes!
+ */
+ void
+ copy_chars(ptr, count, c)
+--- 1542,1548 ----
+ #if defined(FEAT_VISUALEXTRA) || defined(PROTO)
+ /*
+ * Copy a character a number of times.
+! * Does not work for multi-byte characters!
+ */
+ void
+ copy_chars(ptr, count, c)
+***************
+*** 4260,4266 ****
+ * or '**76' is transposed to '**N'( 'N' is ASCII value 76).
+ * For EBCDIC you get different character values.
+ * If no restrict is given after '**' the default is used.
+! * Due to this technic the path looks awful if you print it as a
+ * string.
+ */
+ len = 0;
+--- 4265,4271 ----
+ * or '**76' is transposed to '**N'( 'N' is ASCII value 76).
+ * For EBCDIC you get different character values.
+ * If no restrict is given after '**' the default is used.
+! * Due to this technique the path looks awful if you print it as a
+ * string.
+ */
+ len = 0;
+***************
+*** 4649,4655 ****
+ && !mch_isdir(stackp->ffs_filearray[i]))
+ continue; /* not a directory */
+
+! /* prepare the filename to be checked for existance
+ * below */
+ STRCPY(file_path, stackp->ffs_filearray[i]);
+ add_pathsep(file_path);
+--- 4654,4660 ----
+ && !mch_isdir(stackp->ffs_filearray[i]))
+ continue; /* not a directory */
+
+! /* prepare the filename to be checked for existence
+ * below */
+ STRCPY(file_path, stackp->ffs_filearray[i]);
+ add_pathsep(file_path);
+***************
+*** 5438,5444 ****
+ #if defined(MSWIN) || defined(MSDOS) || defined(OS2)
+ /* handle "\tmp" as absolute path */
+ || vim_ispathsep(ff_file_to_find[0])
+! /* handle "c:name" as absulute path */
+ || (ff_file_to_find[0] != NUL && ff_file_to_find[1] == ':')
+ #endif
+ #ifdef AMIGA
+--- 5443,5449 ----
+ #if defined(MSWIN) || defined(MSDOS) || defined(OS2)
+ /* handle "\tmp" as absolute path */
+ || vim_ispathsep(ff_file_to_find[0])
+! /* handle "c:name" as absolute path */
+ || (ff_file_to_find[0] != NUL && ff_file_to_find[1] == ':')
+ #endif
+ #ifdef AMIGA
+***************
+*** 5681,5687 ****
+ p2 = (char_u *)base + (j + gap) * elm_size;
+ if ((*cmp)((void *)p1, (void *)p2) <= 0)
+ break;
+! /* Exchange the elemets. */
+ mch_memmove(buf, p1, elm_size);
+ mch_memmove(p1, p2, elm_size);
+ mch_memmove(p2, buf, elm_size);
+--- 5686,5692 ----
+ p2 = (char_u *)base + (j + gap) * elm_size;
+ if ((*cmp)((void *)p1, (void *)p2) <= 0)
+ break;
+! /* Exchange the elements. */
+ mch_memmove(buf, p1, elm_size);
+ mch_memmove(p1, p2, elm_size);
+ mch_memmove(p2, buf, elm_size);
+*** ../vim-7.2.289/src/version.c 2009-11-11 16:23:37.000000000 +0100
+--- src/version.c 2009-11-11 16:54:53.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 290,
+ /**/
+
+--
+ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of Camelot.
+ King of all Britons, defeator of the Saxons, sovereign of all England!
+ [Pause]
+SOLDIER: Get away!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.291 b/vim/vim-7.2/7.2.291
new file mode 100644
index 0000000..bab6e3b
--- /dev/null
+++ b/vim/vim-7.2/7.2.291
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.291
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.291
+Problem: Reading uninitialised memory in arabic mode.
+Solution: Use utfc_ptr2char_len() rather than utfc_ptr2char(). (Dominique
+ Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.290/src/screen.c 2009-11-03 17:36:09.000000000 +0100
+--- src/screen.c 2009-11-11 17:04:53.000000000 +0100
+***************
+*** 6413,6419 ****
+ }
+ else
+ {
+! nc = utfc_ptr2char(ptr + mbyte_blen, pcc);
+ nc1 = pcc[0];
+ }
+ pc = prev_c;
+--- 6413,6420 ----
+ }
+ else
+ {
+! nc = utfc_ptr2char_len(ptr + mbyte_blen, pcc,
+! (int)((text + len) - ptr - mbyte_blen));
+ nc1 = pcc[0];
+ }
+ pc = prev_c;
+*** ../vim-7.2.290/src/version.c 2009-11-11 16:56:13.000000000 +0100
+--- src/version.c 2009-11-11 17:06:48.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 291,
+ /**/
+
+--
+The problem with political jokes is that they get elected.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.292 b/vim/vim-7.2/7.2.292
new file mode 100644
index 0000000..c576190
--- /dev/null
+++ b/vim/vim-7.2/7.2.292
@@ -0,0 +1,55 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.292
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.292
+Problem: Block right-shift doesn't work properly with multi-byte encoding
+ and 'list' set.
+Solution: Add the missing "else". (Lech Lorens)
+Files: src/ops.c
+
+
+*** ../vim-7.2.291/src/ops.c 2009-11-03 16:44:04.000000000 +0100
+--- src/ops.c 2009-11-11 17:15:04.000000000 +0100
+***************
+*** 422,429 ****
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+ bd.textstart += (*mb_ptr2len)(bd.textstart);
+ #endif
+! ++bd.textstart;
+ }
+ for ( ; vim_iswhite(*bd.textstart); )
+ {
+--- 422,430 ----
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+ bd.textstart += (*mb_ptr2len)(bd.textstart);
++ else
+ #endif
+! ++bd.textstart;
+ }
+ for ( ; vim_iswhite(*bd.textstart); )
+ {
+*** ../vim-7.2.291/src/version.c 2009-11-11 17:07:25.000000000 +0100
+--- src/version.c 2009-11-11 17:21:31.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 292,
+ /**/
+
+--
+Computers make very fast, very accurate, mistakes.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.293 b/vim/vim-7.2/7.2.293
new file mode 100644
index 0000000..0f41435
--- /dev/null
+++ b/vim/vim-7.2/7.2.293
@@ -0,0 +1,66 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.293
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.293
+Problem: When setting 'comments' option it may be used in a wrong way.
+Solution: Don't increment after skipping over digets. (Yukihiro Nakadaira)
+Files: src/misc1.c
+
+
+*** ../vim-7.2.292/src/misc1.c 2009-11-03 18:46:53.000000000 +0100
+--- src/misc1.c 2009-11-11 17:27:38.000000000 +0100
+***************
+*** 1026,1037 ****
+ int c = 0;
+ int off = 0;
+
+! for (p = lead_flags; *p && *p != ':'; ++p)
+ {
+ if (*p == COM_RIGHT || *p == COM_LEFT)
+! c = *p;
+ else if (VIM_ISDIGIT(*p) || *p == '-')
+ off = getdigits(&p);
+ }
+ if (c == COM_RIGHT) /* right adjusted leader */
+ {
+--- 1026,1039 ----
+ int c = 0;
+ int off = 0;
+
+! for (p = lead_flags; *p != NUL && *p != ':'; )
+ {
+ if (*p == COM_RIGHT || *p == COM_LEFT)
+! c = *p++;
+ else if (VIM_ISDIGIT(*p) || *p == '-')
+ off = getdigits(&p);
++ else
++ ++p;
+ }
+ if (c == COM_RIGHT) /* right adjusted leader */
+ {
+*** ../vim-7.2.292/src/version.c 2009-11-11 17:22:30.000000000 +0100
+--- src/version.c 2009-11-11 17:29:24.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 293,
+ /**/
+
+--
+SOLDIER: What? Ridden on a horse?
+ARTHUR: Yes!
+SOLDIER: You're using coconuts!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.294 b/vim/vim-7.2/7.2.294
new file mode 100644
index 0000000..fef1e6b
--- /dev/null
+++ b/vim/vim-7.2/7.2.294
@@ -0,0 +1,285 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.294
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.294
+Problem: When using TEMPDIRS dir name could get too long.
+Solution: Overwrite tail instead of appending each time. Use mkdtemp() when
+ available. (James Vega)
+Files: src/auto/configure, src/config.h.in, src/configure.in, src/fileio.c
+
+
+*** ../vim-7.2.293/src/auto/configure 2009-09-11 13:44:33.000000000 +0200
+--- src/auto/configure 2009-11-17 12:03:15.000000000 +0100
+***************
+*** 14019,14027 ****
+
+
+
+ for ac_func in bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
+ getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+! memset nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+ strnicmp strpbrk strtol tgetent towlower towupper iswupper \
+--- 14019,14028 ----
+
+
+
++
+ for ac_func in bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
+ getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+! memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+ strnicmp strpbrk strtol tgetent towlower towupper iswupper \
+*** ../vim-7.2.293/src/config.h.in 2009-05-21 23:25:38.000000000 +0200
+--- src/config.h.in 2009-11-11 17:40:21.000000000 +0100
+***************
+*** 157,162 ****
+--- 157,163 ----
+ #undef HAVE_LSTAT
+ #undef HAVE_MEMCMP
+ #undef HAVE_MEMSET
++ #undef HAVE_MKDTEMP
+ #undef HAVE_NANOSLEEP
+ #undef HAVE_OPENDIR
+ #undef HAVE_FLOAT_FUNCS
+*** ../vim-7.2.293/src/configure.in 2009-09-11 13:44:33.000000000 +0200
+--- src/configure.in 2009-11-11 17:40:21.000000000 +0100
+***************
+*** 2635,2641 ****
+ dnl Check for functions in one big call, to reduce the size of configure
+ AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
+ getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+! memset nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+ strnicmp strpbrk strtol tgetent towlower towupper iswupper \
+--- 2635,2641 ----
+ dnl Check for functions in one big call, to reduce the size of configure
+ AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
+ getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
+! memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
+ setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
+ sigvec strcasecmp strerror strftime stricmp strncasecmp \
+ strnicmp strpbrk strtol tgetent towlower towupper iswupper \
+*** ../vim-7.2.293/src/fileio.c 2009-09-11 17:24:01.000000000 +0200
+--- src/fileio.c 2009-11-11 18:01:22.000000000 +0100
+***************
+*** 146,151 ****
+--- 146,152 ----
+ # endif
+ #endif
+ static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
++ static void vim_settempdir __ARGS((char_u *tempdir));
+ #ifdef FEAT_AUTOCMD
+ static char *e_auchangedbuf = N_("E812: Autocommands changed buffer or buffer name");
+ #endif
+***************
+*** 6987,6992 ****
+--- 6988,7020 ----
+ #endif
+
+ /*
++ * Directory "tempdir" was created. Expand this name to a full path and put
++ * it in "vim_tempdir". This avoids that using ":cd" would confuse us.
++ * "tempdir" must be no longer than MAXPATHL.
++ */
++ static void
++ vim_settempdir(tempdir)
++ char_u *tempdir;
++ {
++ char_u *buf;
++
++ buf = alloc((unsigned)MAXPATHL + 2);
++ if (buf != NULL)
++ {
++ if (vim_FullName(tempdir, buf, MAXPATHL, FALSE) == FAIL)
++ STRCPY(buf, tempdir);
++ # ifdef __EMX__
++ if (vim_strchr(buf, '/') != NULL)
++ STRCAT(buf, "/");
++ else
++ # endif
++ add_pathsep(buf);
++ vim_tempdir = vim_strsave(buf);
++ vim_free(buf);
++ }
++ }
++
++ /*
+ * vim_tempname(): Return a unique name that can be used for a temp file.
+ *
+ * The temp file is NOT created.
+***************
+*** 7007,7014 ****
+ #ifdef TEMPDIRNAMES
+ static char *(tempdirs[]) = {TEMPDIRNAMES};
+ int i;
+- long nr;
+- long off;
+ # ifndef EEXIST
+ struct stat st;
+ # endif
+--- 7035,7040 ----
+***************
+*** 7027,7032 ****
+--- 7053,7064 ----
+ */
+ for (i = 0; i < (int)(sizeof(tempdirs) / sizeof(char *)); ++i)
+ {
++ size_t itmplen;
++ # ifndef HAVE_MKDTEMP
++ long nr;
++ long off;
++ # endif
++
+ /* expand $TMP, leave room for "/v1100000/999999999" */
+ expand_env((char_u *)tempdirs[i], itmp, TEMPNAMELEN - 20);
+ if (mch_isdir(itmp)) /* directory exists */
+***************
+*** 7040,7046 ****
+--- 7072,7085 ----
+ else
+ # endif
+ add_pathsep(itmp);
++ itmplen = STRLEN(itmp);
+
++ # ifdef HAVE_MKDTEMP
++ /* Leave room for filename */
++ STRCAT(itmp, "vXXXXXX");
++ if (mkdtemp((char *)itmp) != NULL)
++ vim_settempdir(itmp);
++ # else
+ /* Get an arbitrary number of up to 6 digits. When it's
+ * unlikely that it already exists it will be faster,
+ * otherwise it doesn't matter. The use of mkdir() avoids any
+***************
+*** 7052,7110 ****
+ for (off = 0; off < 10000L; ++off)
+ {
+ int r;
+! #if defined(UNIX) || defined(VMS)
+ mode_t umask_save;
+! #endif
+
+! sprintf((char *)itmp + STRLEN(itmp), "v%ld", nr + off);
+! # ifndef EEXIST
+ /* If mkdir() does not set errno to EEXIST, check for
+ * existing file here. There is a race condition then,
+ * although it's fail-safe. */
+ if (mch_stat((char *)itmp, &st) >= 0)
+ continue;
+! # endif
+! #if defined(UNIX) || defined(VMS)
+ /* Make sure the umask doesn't remove the executable bit.
+ * "repl" has been reported to use "177". */
+ umask_save = umask(077);
+! #endif
+ r = vim_mkdir(itmp, 0700);
+! #if defined(UNIX) || defined(VMS)
+ (void)umask(umask_save);
+! #endif
+ if (r == 0)
+ {
+! char_u *buf;
+!
+! /* Directory was created, use this name.
+! * Expand to full path; When using the current
+! * directory a ":cd" would confuse us. */
+! buf = alloc((unsigned)MAXPATHL + 1);
+! if (buf != NULL)
+! {
+! if (vim_FullName(itmp, buf, MAXPATHL, FALSE)
+! == FAIL)
+! STRCPY(buf, itmp);
+! # ifdef __EMX__
+! if (vim_strchr(buf, '/') != NULL)
+! STRCAT(buf, "/");
+! else
+! # endif
+! add_pathsep(buf);
+! vim_tempdir = vim_strsave(buf);
+! vim_free(buf);
+! }
+ break;
+ }
+! # ifdef EEXIST
+ /* If the mkdir() didn't fail because the file/dir exists,
+ * we probably can't create any dir here, try another
+ * place. */
+ if (errno != EEXIST)
+! # endif
+ break;
+ }
+ if (vim_tempdir != NULL)
+ break;
+ }
+--- 7091,7131 ----
+ for (off = 0; off < 10000L; ++off)
+ {
+ int r;
+! # if defined(UNIX) || defined(VMS)
+ mode_t umask_save;
+! # endif
+
+! sprintf((char *)itmp + itmplen, "v%ld", nr + off);
+! # ifndef EEXIST
+ /* If mkdir() does not set errno to EEXIST, check for
+ * existing file here. There is a race condition then,
+ * although it's fail-safe. */
+ if (mch_stat((char *)itmp, &st) >= 0)
+ continue;
+! # endif
+! # if defined(UNIX) || defined(VMS)
+ /* Make sure the umask doesn't remove the executable bit.
+ * "repl" has been reported to use "177". */
+ umask_save = umask(077);
+! # endif
+ r = vim_mkdir(itmp, 0700);
+! # if defined(UNIX) || defined(VMS)
+ (void)umask(umask_save);
+! # endif
+ if (r == 0)
+ {
+! vim_settempdir(itmp);
+ break;
+ }
+! # ifdef EEXIST
+ /* If the mkdir() didn't fail because the file/dir exists,
+ * we probably can't create any dir here, try another
+ * place. */
+ if (errno != EEXIST)
+! # endif
+ break;
+ }
++ # endif /* HAVE_MKDTEMP */
+ if (vim_tempdir != NULL)
+ break;
+ }
+*** ../vim-7.2.293/src/version.c 2009-11-11 17:30:05.000000000 +0100
+--- src/version.c 2009-11-17 11:54:49.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 294,
+ /**/
+
+--
+ARTHUR: Now stand aside worthy adversary.
+BLACK KNIGHT: (Glancing at his shoulder) 'Tis but a scratch.
+ARTHUR: A scratch? Your arm's off.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.295 b/vim/vim-7.2/7.2.295
new file mode 100644
index 0000000..331498f
--- /dev/null
+++ b/vim/vim-7.2/7.2.295
@@ -0,0 +1,142 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.295
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.295
+Problem: When using map() on a List the index is not known.
+Solution: Set v:key to the index. (Hari Krishna Dara)
+Files: runtime/doc/eval.txt, src/eval.c
+
+
+*** ../vim-7.2.294/runtime/doc/eval.txt 2009-11-11 14:21:48.000000000 +0100
+--- runtime/doc/eval.txt 2009-11-11 18:22:54.000000000 +0100
+***************
+*** 3802,3808 ****
+ Replace each item in {expr} with the result of evaluating
+ {string}.
+ Inside {string} |v:val| has the value of the current item.
+! For a |Dictionary| |v:key| has the key of the current item.
+ Example: >
+ :call map(mylist, '"> " . v:val . " <"')
+ < This puts "> " before and " <" after each item in "mylist".
+--- 3812,3819 ----
+ Replace each item in {expr} with the result of evaluating
+ {string}.
+ Inside {string} |v:val| has the value of the current item.
+! For a |Dictionary| |v:key| has the key of the current item
+! and for a |List| |v:key| has the index of the current item.
+ Example: >
+ :call map(mylist, '"> " . v:val . " <"')
+ < This puts "> " before and " <" after each item in "mylist".
+*** ../vim-7.2.294/src/eval.c 2009-11-11 14:21:48.000000000 +0100
+--- src/eval.c 2009-11-11 18:22:49.000000000 +0100
+***************
+*** 9928,9933 ****
+--- 9928,9934 ----
+ int todo;
+ char_u *ermsg = map ? (char_u *)"map()" : (char_u *)"filter()";
+ int save_did_emsg;
++ int index = 0;
+
+ if (argvars[0].v_type == VAR_LIST)
+ {
+***************
+*** 9961,9969 ****
+ save_did_emsg = did_emsg;
+ did_emsg = FALSE;
+
+ if (argvars[0].v_type == VAR_DICT)
+ {
+- prepare_vimvar(VV_KEY, &save_key);
+ vimvars[VV_KEY].vv_type = VAR_STRING;
+
+ ht = &d->dv_hashtab;
+--- 9962,9970 ----
+ save_did_emsg = did_emsg;
+ did_emsg = FALSE;
+
++ prepare_vimvar(VV_KEY, &save_key);
+ if (argvars[0].v_type == VAR_DICT)
+ {
+ vimvars[VV_KEY].vv_type = VAR_STRING;
+
+ ht = &d->dv_hashtab;
+***************
+*** 9987,10010 ****
+ }
+ }
+ hash_unlock(ht);
+-
+- restore_vimvar(VV_KEY, &save_key);
+ }
+ else
+ {
+ for (li = l->lv_first; li != NULL; li = nli)
+ {
+ if (tv_check_lock(li->li_tv.v_lock, ermsg))
+ break;
+ nli = li->li_next;
+ if (filter_map_one(&li->li_tv, expr, map, &rem) == FAIL
+ || did_emsg)
+ break;
+ if (!map && rem)
+ listitem_remove(l, li);
+ }
+ }
+
+ restore_vimvar(VV_VAL, &save_val);
+
+ did_emsg |= save_did_emsg;
+--- 9988,10014 ----
+ }
+ }
+ hash_unlock(ht);
+ }
+ else
+ {
++ vimvars[VV_KEY].vv_type = VAR_NUMBER;
++
+ for (li = l->lv_first; li != NULL; li = nli)
+ {
+ if (tv_check_lock(li->li_tv.v_lock, ermsg))
+ break;
+ nli = li->li_next;
++ vimvars[VV_KEY].vv_nr = index;
+ if (filter_map_one(&li->li_tv, expr, map, &rem) == FAIL
+ || did_emsg)
+ break;
+ if (!map && rem)
+ listitem_remove(l, li);
++ ++index;
+ }
+ }
+
++ restore_vimvar(VV_KEY, &save_key);
+ restore_vimvar(VV_VAL, &save_val);
+
+ did_emsg |= save_did_emsg;
+*** ../vim-7.2.294/src/version.c 2009-11-17 12:08:48.000000000 +0100
+--- src/version.c 2009-11-17 12:18:08.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 295,
+ /**/
+
+--
+ARTHUR: You are indeed brave Sir knight, but the fight is mine.
+BLACK KNIGHT: Had enough?
+ARTHUR: You stupid bastard. You havn't got any arms left.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.296 b/vim/vim-7.2/7.2.296
new file mode 100644
index 0000000..5fc3cb3
--- /dev/null
+++ b/vim/vim-7.2/7.2.296
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.296
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.296
+Problem: Help message about startuptime is wrong. (Dominique Pelle)
+Solution: Remove the equal sign.
+Files: src/main.c
+
+
+*** ../vim-7.2.295/src/main.c 2009-11-11 14:21:48.000000000 +0100
+--- src/main.c 2009-11-11 22:51:04.000000000 +0100
+***************
+*** 3151,3157 ****
+ main_msg(_("--servername <name>\tSend to/become the Vim server <name>"));
+ #endif
+ #ifdef STARTUPTIME
+! main_msg(_("--startuptime=<file>\tWrite startup timing messages to <file>"));
+ #endif
+ #ifdef FEAT_VIMINFO
+ main_msg(_("-i <viminfo>\t\tUse <viminfo> instead of .viminfo"));
+--- 3151,3157 ----
+ main_msg(_("--servername <name>\tSend to/become the Vim server <name>"));
+ #endif
+ #ifdef STARTUPTIME
+! main_msg(_("--startuptime <file>\tWrite startup timing messages to <file>"));
+ #endif
+ #ifdef FEAT_VIMINFO
+ main_msg(_("-i <viminfo>\t\tUse <viminfo> instead of .viminfo"));
+*** ../vim-7.2.295/src/version.c 2009-11-17 12:20:30.000000000 +0100
+--- src/version.c 2009-11-17 12:30:29.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 296,
+ /**/
+
+--
+BLACK KNIGHT: I'm invincible!
+ARTHUR: You're a looney.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.297 b/vim/vim-7.2/7.2.297
new file mode 100644
index 0000000..cc8d789
--- /dev/null
+++ b/vim/vim-7.2/7.2.297
@@ -0,0 +1,70 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.297
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.297
+Problem: Reading freed memory when writing ":reg" output to a register.
+ (Dominique Pelle)
+Solution: Skip the register being written to.
+Files: src/ops.c
+
+
+*** ../vim-7.2.296/src/ops.c 2009-11-11 17:22:30.000000000 +0100
+--- src/ops.c 2009-11-11 19:30:47.000000000 +0100
+***************
+*** 3991,3996 ****
+--- 3991,4004 ----
+ }
+ else
+ yb = &(y_regs[i]);
++
++ #ifdef FEAT_EVAL
++ if (name == MB_TOLOWER(redir_reg)
++ || (redir_reg == '"' && yb == y_previous))
++ continue; /* do not list register being written to, the
++ * pointer can be freed */
++ #endif
++
+ if (yb->y_array != NULL)
+ {
+ msg_putchar('\n');
+***************
+*** 6090,6096 ****
+ long maxlen;
+ #endif
+
+! if (y_ptr->y_array == NULL) /* NULL means emtpy register */
+ y_ptr->y_size = 0;
+
+ /*
+--- 6098,6104 ----
+ long maxlen;
+ #endif
+
+! if (y_ptr->y_array == NULL) /* NULL means empty register */
+ y_ptr->y_size = 0;
+
+ /*
+*** ../vim-7.2.296/src/version.c 2009-11-17 12:31:30.000000000 +0100
+--- src/version.c 2009-11-17 12:42:28.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 297,
+ /**/
+
+--
+"Beware of bugs in the above code; I have only proved
+it correct, not tried it." -- Donald Knuth
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.298 b/vim/vim-7.2/7.2.298
new file mode 100644
index 0000000..0aabd7a
--- /dev/null
+++ b/vim/vim-7.2/7.2.298
@@ -0,0 +1,48 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.298
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.298
+Problem: ":vimgrep" crashes when there is an autocommand that sets a
+ window-local variable.
+Solution: Initialize the w: hashtab for re-use. (Yukihiro Nakadaira)
+Files: src/fileio.c
+
+
+*** ../vim-7.2.297/src/fileio.c 2009-11-17 12:08:48.000000000 +0100
+--- src/fileio.c 2009-11-17 13:22:06.000000000 +0100
+***************
+*** 8597,8602 ****
+--- 8605,8611 ----
+ curwin = firstwin;
+ # ifdef FEAT_EVAL
+ vars_clear(&aucmd_win->w_vars.dv_hashtab); /* free all w: variables */
++ hash_init(&aucmd_win->w_vars.dv_hashtab); /* re-use the hashtab */
+ # endif
+ #else
+ curwin = aco->save_curwin;
+*** ../vim-7.2.297/src/version.c 2009-11-17 12:43:19.000000000 +0100
+--- src/version.c 2009-11-17 14:56:19.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 298,
+ /**/
+
+--
+Eye have a spelling checker, it came with my PC;
+It plainly marks four my revue mistakes I cannot sea.
+I've run this poem threw it, I'm sure your please to no,
+It's letter perfect in it's weigh, my checker tolled me sew!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.299 b/vim/vim-7.2/7.2.299
new file mode 100644
index 0000000..88f9e70
--- /dev/null
+++ b/vim/vim-7.2/7.2.299
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.299
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.299
+Problem: Crash when comment middle is longer than start.
+Solution: Fix size computation. (Lech Lorens)
+Files: src/misc1.c
+
+
+*** ../vim-7.2.298/src/misc1.c 2009-11-11 17:30:05.000000000 +0100
+--- src/misc1.c 2009-11-17 15:59:28.000000000 +0100
+***************
+*** 1121,1127 ****
+ if (i != lead_repl_len)
+ {
+ mch_memmove(p + lead_repl_len, p + i,
+! (size_t)(lead_len - i - (leader - p)));
+ lead_len += lead_repl_len - i;
+ }
+ }
+--- 1121,1127 ----
+ if (i != lead_repl_len)
+ {
+ mch_memmove(p + lead_repl_len, p + i,
+! (size_t)(lead_len - i - (p - leader)));
+ lead_len += lead_repl_len - i;
+ }
+ }
+*** ../vim-7.2.298/src/version.c 2009-11-17 14:57:19.000000000 +0100
+--- src/version.c 2009-11-17 16:01:07.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 299,
+ /**/
+
+--
+BLACK KNIGHT: The Black Knight always triumphs. Have at you!
+ ARTHUR takes his last leg off. The BLACK KNIGHT's body lands upright.
+BLACK KNIGHT: All right, we'll call it a draw.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.300 b/vim/vim-7.2/7.2.300
new file mode 100644
index 0000000..f88035e
--- /dev/null
+++ b/vim/vim-7.2/7.2.300
@@ -0,0 +1,201 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.300
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.300
+Problem: Vim doesn't close file descriptors when forking and executing
+ another command, e.g., ":shell".
+Solution: Use FD_CLOEXEC when available. (James Vega)
+Files: src/auto/configure, src/config.h.in, src/configure.in,
+ src/ex_cmdds2.c, src/fileio.c, src/memfile.c, src/memline.c
+
+
+*** ../vim-7.2.299/src/auto/configure 2009-11-17 12:08:48.000000000 +0100
+--- src/auto/configure 2009-11-17 13:09:03.000000000 +0100
+***************
+*** 15174,15179 ****
+--- 15174,15231 ----
+ $as_echo "yes" >&6; }
+ fi
+
++ { $as_echo "$as_me:$LINENO: checking for FD_CLOEXEC" >&5
++ $as_echo_n "checking for FD_CLOEXEC... " >&6; }
++ cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h. */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h. */
++ #if HAVE_FCNTL_H
++ # include <fcntl.h>
++ #endif
++ int
++ main ()
++ {
++ int flag = FD_CLOEXEC;
++ ;
++ return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ { $as_echo "$as_me:$LINENO: result: yes" >&5
++ $as_echo "yes" >&6; }; cat >>confdefs.h <<\_ACEOF
++ #define HAVE_FD_CLOEXEC 1
++ _ACEOF
++
++ else
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++ { $as_echo "$as_me:$LINENO: result: not usable" >&5
++ $as_echo "not usable" >&6; }
++ fi
++
++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
+ { $as_echo "$as_me:$LINENO: checking for rename" >&5
+ $as_echo_n "checking for rename... " >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+*** ../vim-7.2.299/src/config.h.in 2009-11-17 12:08:48.000000000 +0100
+--- src/config.h.in 2009-11-17 13:01:36.000000000 +0100
+***************
+*** 388,390 ****
+--- 388,393 ----
+
+ /* Define if you want XSMP interaction as well as vanilla swapfile safety */
+ #undef USE_XSMP_INTERACT
++
++ /* Define if fcntl()'s F_SETFD command knows about FD_CLOEXEC */
++ #undef HAVE_FD_CLOEXEC
+*** ../vim-7.2.299/src/configure.in 2009-11-17 12:08:48.000000000 +0100
+--- src/configure.in 2009-11-17 13:01:36.000000000 +0100
+***************
+*** 2855,2860 ****
+--- 2855,2870 ----
+ AC_MSG_RESULT(yes)
+ fi
+
++ dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
++ AC_MSG_CHECKING(for FD_CLOEXEC)
++ AC_TRY_COMPILE(
++ [#if HAVE_FCNTL_H
++ # include <fcntl.h>
++ #endif],
++ [ int flag = FD_CLOEXEC;],
++ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
++ AC_MSG_RESULT(not usable))
++
+ dnl rename needs to be checked separately to work on Nextstep with cc
+ AC_MSG_CHECKING(for rename)
+ AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
+*** ../vim-7.2.299/src/fileio.c 2009-11-17 14:57:19.000000000 +0100
+--- src/fileio.c 2009-11-17 13:22:06.000000000 +0100
+***************
+*** 2254,2259 ****
+--- 2254,2267 ----
+
+ if (!read_buffer && !read_stdin)
+ close(fd); /* errors are ignored */
++ #ifdef HAVE_FD_CLOEXEC
++ else
++ {
++ int fdflags = fcntl(fd, F_GETFD);
++ if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
++ fcntl(fd, F_SETFD, fdflags | FD_CLOEXEC);
++ }
++ #endif
+ vim_free(buffer);
+
+ #ifdef HAVE_DUP
+*** ../vim-7.2.299/src/memfile.c 2008-07-13 19:39:39.000000000 +0200
+--- src/memfile.c 2009-11-17 13:22:15.000000000 +0100
+***************
+*** 1343,1348 ****
+--- 1343,1353 ----
+ }
+ else
+ {
++ #ifdef HAVE_FD_CLOEXEC
++ int fdflags = fcntl(mfp->mf_fd, F_GETFD);
++ if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
++ fcntl(mfp->mf_fd, F_SETFD, fdflags | FD_CLOEXEC);
++ #endif
+ #ifdef HAVE_SELINUX
+ mch_copy_sec(fname, mfp->mf_fname);
+ #endif
+*** ../vim-7.2.299/src/memline.c 2009-11-03 15:32:58.000000000 +0100
+--- src/memline.c 2009-11-17 13:21:40.000000000 +0100
+***************
+*** 382,388 ****
+ dp->db_index[0] = --dp->db_txt_start; /* at end of block */
+ dp->db_free -= 1 + INDEX_SIZE;
+ dp->db_line_count = 1;
+! *((char_u *)dp + dp->db_txt_start) = NUL; /* emtpy line */
+
+ return OK;
+
+--- 382,388 ----
+ dp->db_index[0] = --dp->db_txt_start; /* at end of block */
+ dp->db_free -= 1 + INDEX_SIZE;
+ dp->db_line_count = 1;
+! *((char_u *)dp + dp->db_txt_start) = NUL; /* empty line */
+
+ return OK;
+
+***************
+*** 490,495 ****
+--- 490,502 ----
+ EMSG(_("E301: Oops, lost the swap file!!!"));
+ return;
+ }
++ #ifdef HAVE_FD_CLOEXEC
++ {
++ int fdflags = fcntl(mfp->mf_fd, F_GETFD);
++ if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
++ fcntl(mfp->mf_fd, F_SETFD, fdflags | FD_CLOEXEC);
++ }
++ #endif
+ }
+ if (!success)
+ EMSG(_("E302: Could not rename swap file"));
+*** ../vim-7.2.299/src/version.c 2009-11-17 16:08:12.000000000 +0100
+--- src/version.c 2009-11-17 17:09:43.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 300,
+ /**/
+
+--
+ |
+
+Ceci n'est pas une pipe.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.301 b/vim/vim-7.2/7.2.301
new file mode 100644
index 0000000..e63cc08
--- /dev/null
+++ b/vim/vim-7.2/7.2.301
@@ -0,0 +1,777 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.301
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+NOTE: some mail and patch programs may have a problem with the non-ASCII
+characters in this patch. You can fetch the patch from
+ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.301 and/or fetch the updated
+files from CVS. http://www.vim.org/cvs.php
+
+
+Patch 7.2.301
+Problem: Formatting is wrong when 'tw' is set to a small value.
+Solution: Fix it and add tests. Also fix behavior of "1" in 'fo'. (Yukihiro
+ Nakadaira)
+Files: src/edit.c, src/testdir/Makefile, src/testdir/test68.in,
+ src/testdir/test68.ok, src/testdir/test69.in,
+ src/testdir/test69.ok
+
+
+*** ../vim-7.2.300/src/edit.c 2009-11-11 13:22:32.000000000 +0100
+--- src/edit.c 2009-11-17 15:34:47.000000000 +0100
+***************
+*** 181,187 ****
+ static void ins_ctrl_v __ARGS((void));
+ static void undisplay_dollar __ARGS((void));
+ static void insert_special __ARGS((int, int, int));
+! static void internal_format __ARGS((int textwidth, int second_indent, int flags, int format_only));
+ static void check_auto_format __ARGS((int));
+ static void redo_literal __ARGS((int c));
+ static void start_arrow __ARGS((pos_T *end_insert_pos));
+--- 181,187 ----
+ static void ins_ctrl_v __ARGS((void));
+ static void undisplay_dollar __ARGS((void));
+ static void insert_special __ARGS((int, int, int));
+! static void internal_format __ARGS((int textwidth, int second_indent, int flags, int format_only, int c));
+ static void check_auto_format __ARGS((int));
+ static void redo_literal __ARGS((int c));
+ static void start_arrow __ARGS((pos_T *end_insert_pos));
+***************
+*** 2164,2170 ****
+ int i, c;
+ int actual_len; /* Take multi-byte characters */
+ int actual_compl_length; /* into account. */
+! int *wca; /* Wide character array. */
+ int has_lower = FALSE;
+ int was_letter = FALSE;
+
+--- 2164,2170 ----
+ int i, c;
+ int actual_len; /* Take multi-byte characters */
+ int actual_compl_length; /* into account. */
+! int *wca; /* Wide character array. */
+ int has_lower = FALSE;
+ int was_letter = FALSE;
+
+***************
+*** 5558,5564 ****
+ }
+ if (do_internal)
+ #endif
+! internal_format(textwidth, second_indent, flags, c == NUL);
+ }
+
+ if (c == NUL) /* only formatting was wanted */
+--- 5558,5564 ----
+ }
+ if (do_internal)
+ #endif
+! internal_format(textwidth, second_indent, flags, c == NUL, c);
+ }
+
+ if (c == NUL) /* only formatting was wanted */
+***************
+*** 5738,5748 ****
+ * Format text at the current insert position.
+ */
+ static void
+! internal_format(textwidth, second_indent, flags, format_only)
+ int textwidth;
+ int second_indent;
+ int flags;
+ int format_only;
+ {
+ int cc;
+ int save_char = NUL;
+--- 5738,5749 ----
+ * Format text at the current insert position.
+ */
+ static void
+! internal_format(textwidth, second_indent, flags, format_only, c)
+ int textwidth;
+ int second_indent;
+ int flags;
+ int format_only;
++ int c; /* character to be inserted (can be NUL) */
+ {
+ int cc;
+ int save_char = NUL;
+***************
+*** 5763,5769 ****
+ * When 'ai' is off we don't want a space under the cursor to be
+ * deleted. Replace it with an 'x' temporarily.
+ */
+! if (!curbuf->b_p_ai)
+ {
+ cc = gchar_cursor();
+ if (vim_iswhite(cc))
+--- 5764,5774 ----
+ * When 'ai' is off we don't want a space under the cursor to be
+ * deleted. Replace it with an 'x' temporarily.
+ */
+! if (!curbuf->b_p_ai
+! #ifdef FEAT_VREPLACE
+! && !(State & VREPLACE_FLAG)
+! #endif
+! )
+ {
+ cc = gchar_cursor();
+ if (vim_iswhite(cc))
+***************
+*** 5789,5797 ****
+ char_u *saved_text = NULL;
+ #endif
+ colnr_T col;
+
+! virtcol = get_nolist_virtcol();
+! if (virtcol < (colnr_T)textwidth)
+ break;
+
+ #ifdef FEAT_COMMENTS
+--- 5794,5804 ----
+ char_u *saved_text = NULL;
+ #endif
+ colnr_T col;
++ colnr_T end_col;
+
+! virtcol = get_nolist_virtcol()
+! + char2cells(c != NUL ? c : gchar_cursor());
+! if (virtcol <= (colnr_T)textwidth)
+ break;
+
+ #ifdef FEAT_COMMENTS
+***************
+*** 5831,5842 ****
+ coladvance((colnr_T)textwidth);
+ wantcol = curwin->w_cursor.col;
+
+! curwin->w_cursor.col = startcol - 1;
+! #ifdef FEAT_MBYTE
+! /* Correct cursor for multi-byte character. */
+! if (has_mbyte)
+! mb_adjust_cursor();
+! #endif
+ foundcol = 0;
+
+ /*
+--- 5838,5844 ----
+ coladvance((colnr_T)textwidth);
+ wantcol = curwin->w_cursor.col;
+
+! curwin->w_cursor.col = startcol;
+ foundcol = 0;
+
+ /*
+***************
+*** 5847,5857 ****
+ || curwin->w_cursor.lnum != Insstart.lnum
+ || curwin->w_cursor.col >= Insstart.col)
+ {
+! cc = gchar_cursor();
+ if (WHITECHAR(cc))
+ {
+ /* remember position of blank just before text */
+! end_foundcol = curwin->w_cursor.col;
+
+ /* find start of sequence of blanks */
+ while (curwin->w_cursor.col > 0 && WHITECHAR(cc))
+--- 5849,5862 ----
+ || curwin->w_cursor.lnum != Insstart.lnum
+ || curwin->w_cursor.col >= Insstart.col)
+ {
+! if (curwin->w_cursor.col == startcol && c != NUL)
+! cc = c;
+! else
+! cc = gchar_cursor();
+ if (WHITECHAR(cc))
+ {
+ /* remember position of blank just before text */
+! end_col = curwin->w_cursor.col;
+
+ /* find start of sequence of blanks */
+ while (curwin->w_cursor.col > 0 && WHITECHAR(cc))
+***************
+*** 5871,5877 ****
+ /* do not break after one-letter words */
+ if (curwin->w_cursor.col == 0)
+ break; /* one-letter word at begin */
+!
+ col = curwin->w_cursor.col;
+ dec_cursor();
+ cc = gchar_cursor();
+--- 5876,5886 ----
+ /* do not break after one-letter words */
+ if (curwin->w_cursor.col == 0)
+ break; /* one-letter word at begin */
+! #ifdef FEAT_COMMENTS
+! /* do not break "#a b" when 'tw' is 2 */
+! if (curwin->w_cursor.col <= leader_len)
+! break;
+! #endif
+ col = curwin->w_cursor.col;
+ dec_cursor();
+ cc = gchar_cursor();
+***************
+*** 5880,5905 ****
+ continue; /* one-letter, continue */
+ curwin->w_cursor.col = col;
+ }
+! #ifdef FEAT_MBYTE
+! if (has_mbyte)
+! foundcol = curwin->w_cursor.col
+! + (*mb_ptr2len)(ml_get_cursor());
+! else
+! #endif
+! foundcol = curwin->w_cursor.col + 1;
+! if (curwin->w_cursor.col < (colnr_T)wantcol)
+ break;
+ }
+ #ifdef FEAT_MBYTE
+! else if (cc >= 0x100 && fo_multibyte
+! && curwin->w_cursor.col <= (colnr_T)wantcol)
+ {
+ /* Break after or before a multi-byte character. */
+ foundcol = curwin->w_cursor.col;
+- if (curwin->w_cursor.col < (colnr_T)wantcol)
+- foundcol += (*mb_char2len)(cc);
+ end_foundcol = foundcol;
+! break;
+ }
+ #endif
+ if (curwin->w_cursor.col == 0)
+--- 5889,5948 ----
+ continue; /* one-letter, continue */
+ curwin->w_cursor.col = col;
+ }
+!
+! inc_cursor();
+!
+! end_foundcol = end_col + 1;
+! foundcol = curwin->w_cursor.col;
+! if (curwin->w_cursor.col <= (colnr_T)wantcol)
+ break;
+ }
+ #ifdef FEAT_MBYTE
+! else if (cc >= 0x100 && fo_multibyte)
+ {
+ /* Break after or before a multi-byte character. */
++ if (curwin->w_cursor.col != startcol)
++ {
++ #ifdef FEAT_COMMENTS
++ /* Don't break until after the comment leader */
++ if (curwin->w_cursor.col < leader_len)
++ break;
++ #endif
++ col = curwin->w_cursor.col;
++ inc_cursor();
++ /* Don't change end_foundcol if already set. */
++ if (foundcol != curwin->w_cursor.col)
++ {
++ foundcol = curwin->w_cursor.col;
++ end_foundcol = foundcol;
++ if (curwin->w_cursor.col <= (colnr_T)wantcol)
++ break;
++ }
++ curwin->w_cursor.col = col;
++ }
++
++ if (curwin->w_cursor.col == 0)
++ break;
++
++ col = curwin->w_cursor.col;
++
++ dec_cursor();
++ cc = gchar_cursor();
++
++ if (WHITECHAR(cc))
++ continue; /* break with space */
++ #ifdef FEAT_COMMENTS
++ /* Don't break until after the comment leader */
++ if (curwin->w_cursor.col < leader_len)
++ break;
++ #endif
++
++ curwin->w_cursor.col = col;
++
+ foundcol = curwin->w_cursor.col;
+ end_foundcol = foundcol;
+! if (curwin->w_cursor.col <= (colnr_T)wantcol)
+! break;
+ }
+ #endif
+ if (curwin->w_cursor.col == 0)
+***************
+*** 5926,5939 ****
+ orig_col = startcol; /* Will start backspacing from here */
+ else
+ #endif
+! replace_offset = startcol - end_foundcol - 1;
+
+ /*
+ * adjust startcol for spaces that will be deleted and
+ * characters that will remain on top line
+ */
+ curwin->w_cursor.col = foundcol;
+! while (cc = gchar_cursor(), WHITECHAR(cc))
+ inc_cursor();
+ startcol -= curwin->w_cursor.col;
+ if (startcol < 0)
+--- 5969,5983 ----
+ orig_col = startcol; /* Will start backspacing from here */
+ else
+ #endif
+! replace_offset = startcol - end_foundcol;
+
+ /*
+ * adjust startcol for spaces that will be deleted and
+ * characters that will remain on top line
+ */
+ curwin->w_cursor.col = foundcol;
+! while ((cc = gchar_cursor(), WHITECHAR(cc))
+! && (!fo_white_par || curwin->w_cursor.col < startcol))
+ inc_cursor();
+ startcol -= curwin->w_cursor.col;
+ if (startcol < 0)
+***************
+*** 8509,8515 ****
+ if (mode == BACKSPACE_LINE
+ && (curbuf->b_p_ai
+ #ifdef FEAT_CINDENT
+! || cindent_on()
+ #endif
+ )
+ #ifdef FEAT_RIGHTLEFT
+--- 8553,8559 ----
+ if (mode == BACKSPACE_LINE
+ && (curbuf->b_p_ai
+ #ifdef FEAT_CINDENT
+! || cindent_on()
+ #endif
+ )
+ #ifdef FEAT_RIGHTLEFT
+*** ../vim-7.2.300/src/testdir/Makefile 2009-11-17 17:36:13.000000000 +0100
+--- src/testdir/Makefile 2009-11-17 15:11:26.000000000 +0100
+***************
+*** 22,28 ****
+ test48.out test49.out test51.out test52.out test53.out \
+ test54.out test55.out test56.out test57.out test58.out \
+ test59.out test60.out test61.out test62.out test63.out \
+! test64.out test65.out test66.out test67.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 22,29 ----
+ test48.out test49.out test51.out test52.out test53.out \
+ test54.out test55.out test56.out test57.out test58.out \
+ test59.out test60.out test61.out test62.out test63.out \
+! test64.out test65.out test66.out test67.out test68.out \
+! test69.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.2.300/src/testdir/test68.in 2009-11-17 17:39:36.000000000 +0100
+--- src/testdir/test68.in 2009-11-17 15:39:09.000000000 +0100
+***************
+*** 0 ****
+--- 1,56 ----
++ Test for text formatting.
++
++ Results of test68:
++
++ STARTTEST
++ :so small.vim
++ /^{/+1
++ :set noai tw=2 fo=t
++ gRa b
++ ENDTEST
++
++ {
++
++
++ }
++
++ STARTTEST
++ /^{/+1
++ :set ai tw=2 fo=tw
++ gqgqjjllab
++ ENDTEST
++
++ {
++ a b
++
++ a
++ }
++
++ STARTTEST
++ /^{/+1
++ :set tw=3 fo=t
++ gqgqo
++ a 
++ ENDTEST
++
++ {
++ a 
++ }
++
++ STARTTEST
++ /^{/+1
++ :set tw=2 fo=tcq1 comments=:#
++ gqgqjgqgqo
++ a b
++ #a b
++ ENDTEST
++
++ {
++ a b
++ #a b
++ }
++
++ STARTTEST
++ :g/^STARTTEST/.,/^ENDTEST/d
++ :1;/^Results/,$wq! test.out
++ ENDTEST
+*** ../vim-7.2.300/src/testdir/test68.ok 2009-11-17 17:39:36.000000000 +0100
+--- src/testdir/test68.ok 2009-11-17 15:11:26.000000000 +0100
+***************
+*** 0 ****
+--- 1,35 ----
++ Results of test68:
++
++
++ {
++ a
++ b
++ }
++
++
++ {
++ a
++ b
++
++ a
++ b
++ }
++
++
++ {
++ a
++ 
++
++ a
++ 
++ }
++
++
++ {
++ a b
++ #a b
++
++ a b
++ #a b
++ }
++
+*** ../vim-7.2.300/src/testdir/test69.in 2009-11-17 17:39:36.000000000 +0100
+--- src/testdir/test69.in 2009-11-17 15:11:26.000000000 +0100
+***************
+*** 0 ****
+--- 1,139 ----
++ Test for multi-byte text formatting.
++
++ STARTTEST
++ :so mbyte.vim
++ :set encoding=utf-8
++ ENDTEST
++
++ Results of test69:
++
++ STARTTEST
++ /^{/+1
++ :set tw=2 fo=t
++ gqgqjgqgqo
++ XYZ
++ abc XYZ
++ ENDTEST
++
++ {
++ XYZ
++ abc XYZ
++ }
++
++ STARTTEST
++ /^{/+1
++ :set tw=1 fo=tm
++ gqgqjgqgqjgqgqjgqgqjgqgqo
++ X
++ Xa
++ X a
++ XY
++ X Y
++ ENDTEST
++
++ {
++ X
++ Xa
++ X a
++ XY
++ X Y
++ }
++
++ STARTTEST
++ /^{/+1
++ :set tw=2 fo=tm
++ gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
++ X
++ Xa
++ X a
++ XY
++ X Y
++ aX
++ abX
++ abcX
++ abX c
++ abXY
++ ENDTEST
++
++ {
++ X
++ Xa
++ X a
++ XY
++ X Y
++ aX
++ abX
++ abcX
++ abX c
++ abXY
++ }
++
++ STARTTEST
++ /^{/+1
++ :set ai tw=2 fo=tm
++ gqgqjgqgqo
++ X
++ Xa
++ ENDTEST
++
++ {
++ X
++ Xa
++ }
++
++ STARTTEST
++ /^{/+1
++ :set noai tw=2 fo=tm
++ gqgqjgqgqo
++ X
++ Xa
++ ENDTEST
++
++ {
++ X
++ Xa
++ }
++
++ STARTTEST
++ /^{/+1
++ :set tw=2 fo=cqm comments=n:X
++ gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
++ X
++ Xa
++ XaY
++ XY
++ XYZ
++ X Y
++ X YZ
++ XX
++ XXa
++ XXY
++ ENDTEST
++
++ {
++ X
++ Xa
++ XaY
++ XY
++ XYZ
++ X Y
++ X YZ
++ XX
++ XXa
++ XXY
++ }
++
++ STARTTEST
++ /^{/+1
++ :set tw=2 fo=tm
++ RXa
++ ENDTEST
++
++ {
++
++ }
++
++ STARTTEST
++ :g/^STARTTEST/.,/^ENDTEST/d
++ :1;/^Results/,$wq! test.out
++ ENDTEST
+*** ../vim-7.2.300/src/testdir/test69.ok 2009-11-17 17:39:36.000000000 +0100
+--- src/testdir/test69.ok 2009-11-17 15:11:26.000000000 +0100
+***************
+*** 0 ****
+--- 1,142 ----
++ Results of test69:
++
++
++ {
++ XYZ
++ abc
++ XYZ
++
++ XYZ
++ abc
++ XYZ
++ }
++
++
++ {
++ X
++ X
++ a
++ X
++ a
++ X
++ ï¼¹
++ X
++ ï¼¹
++
++ X
++ X
++ a
++ X
++ a
++ X
++ ï¼¹
++ X
++ ï¼¹
++ }
++
++
++ {
++ X
++ X
++ a
++ X
++ a
++ X
++ ï¼¹
++ X
++ ï¼¹
++ a
++ X
++ ab
++ X
++ abc
++ X
++ ab
++ X
++ c
++ ab
++ X
++ ï¼¹
++
++ X
++ X
++ a
++ X
++ a
++ X
++ ï¼¹
++ X
++ ï¼¹
++ a
++ X
++ ab
++ X
++ abc
++ X
++ ab
++ X
++ c
++ ab
++ X
++ ï¼¹
++ }
++
++
++ {
++ X
++ X
++ a
++
++ X
++ X
++ a
++ }
++
++
++ {
++ X
++ X
++ a
++
++ X
++ X
++ a
++ }
++
++
++ {
++ X
++ Xa
++ Xa
++ XY
++ XY
++ XY
++ XZ
++ X Y
++ X Y
++ X Z
++ XX
++ XXa
++ XXY
++
++ X
++ Xa
++ Xa
++ XY
++ XY
++ XY
++ XZ
++ X Y
++ X Y
++ X Z
++ XX
++ XXa
++ XXY
++ }
++
++
++ {
++ X
++ a
++ }
++
+*** ../vim-7.2.300/src/version.c 2009-11-17 17:37:34.000000000 +0100
+--- src/version.c 2009-11-17 17:26:35.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 301,
+ /**/
diff --git a/vim/vim-7.2/7.2.302 b/vim/vim-7.2/7.2.302
new file mode 100644
index 0000000..c4d5a99
--- /dev/null
+++ b/vim/vim-7.2/7.2.302
@@ -0,0 +1,140 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.302 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.302 (extra part of 7.2.301)
+Problem: Formatting wrong with small 'tw' value.
+Solution: Add build rules for tests.
+Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
+ src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
+ src/testdir/Make_vms.mms
+
+
+*** ../vim-7.2.301/src/testdir/Make_amiga.mak 2009-09-18 14:58:26.000000000 +0200
+--- src/testdir/Make_amiga.mak 2009-11-17 15:29:05.000000000 +0100
+***************
+*** 26,32 ****
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test58.out test59.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out
+
+ .SUFFIXES: .in .out
+
+--- 26,32 ----
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test58.out test59.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out test68.out test69.out
+
+ .SUFFIXES: .in .out
+
+***************
+*** 113,115 ****
+--- 113,117 ----
+ test65.out: test65.in
+ test66.out: test66.in
+ test67.out: test67.in
++ test68.out: test68.in
++ test69.out: test69.in
+*** ../vim-7.2.301/src/testdir/Make_dos.mak 2009-09-18 14:58:26.000000000 +0200
+--- src/testdir/Make_dos.mak 2009-11-17 15:29:54.000000000 +0100
+***************
+*** 26,32 ****
+ test15.out test17.out test18.out test21.out test26.out \
+ test30.out test31.out test32.out test33.out test34.out \
+ test37.out test38.out test39.out test40.out test41.out \
+! test42.out test52.out test65.out test66.out test67.out
+
+ SCRIPTS32 = test50.out
+
+--- 26,33 ----
+ test15.out test17.out test18.out test21.out test26.out \
+ test30.out test31.out test32.out test33.out test34.out \
+ test37.out test38.out test39.out test40.out test41.out \
+! test42.out test52.out test65.out test66.out test67.out \
+! test68.out test69.out
+
+ SCRIPTS32 = test50.out
+
+*** ../vim-7.2.301/src/testdir/Make_ming.mak 2009-09-18 14:58:26.000000000 +0200
+--- src/testdir/Make_ming.mak 2009-11-17 15:30:07.000000000 +0100
+***************
+*** 45,51 ****
+ test15.out test17.out test18.out test21.out test26.out \
+ test30.out test31.out test32.out test33.out test34.out \
+ test37.out test38.out test39.out test40.out test41.out \
+! test42.out test52.out test65.out test66.out test67.out
+
+ SCRIPTS32 = test50.out
+
+--- 45,52 ----
+ test15.out test17.out test18.out test21.out test26.out \
+ test30.out test31.out test32.out test33.out test34.out \
+ test37.out test38.out test39.out test40.out test41.out \
+! test42.out test52.out test65.out test66.out test67.out \
+! test68.out test69.out
+
+ SCRIPTS32 = test50.out
+
+*** ../vim-7.2.301/src/testdir/Make_os2.mak 2009-09-18 14:58:26.000000000 +0200
+--- src/testdir/Make_os2.mak 2009-11-17 15:11:26.000000000 +0100
+***************
+*** 26,32 ****
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test58.out test59.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out
+
+ .SUFFIXES: .in .out
+
+--- 26,32 ----
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test58.out test59.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out test68.out test69.out
+
+ .SUFFIXES: .in .out
+
+*** ../vim-7.2.301/src/testdir/Make_vms.mms 2009-09-18 14:58:26.000000000 +0200
+--- src/testdir/Make_vms.mms 2009-11-17 15:11:26.000000000 +0100
+***************
+*** 69,75 ****
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out
+
+ .IFDEF WANT_GUI
+ SCRIPT_GUI = test16.out
+--- 69,75 ----
+ test48.out test51.out test53.out test54.out test55.out \
+ test56.out test57.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+! test66.out test67.out test68.out test69.out
+
+ .IFDEF WANT_GUI
+ SCRIPT_GUI = test16.out
+*** ../vim-7.2.301/src/version.c 2009-11-17 17:40:34.000000000 +0100
+--- src/version.c 2009-11-17 17:43:26.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 302,
+ /**/
+
+--
+Hacker: Someone skilled in computer programming (good guy).
+Cracker: A hacker that uses his skills to crack software (bad guy).
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.303 b/vim/vim-7.2/7.2.303
new file mode 100644
index 0000000..b53d198
--- /dev/null
+++ b/vim/vim-7.2/7.2.303
@@ -0,0 +1,70 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.303
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.303 (after 7.2.294)
+Problem: Can't build on MS-Windows.
+Solution: Add #ifdef around vim_settempdir(). (James Vega)
+Files: src/fileio.c
+
+
+*** ../vim-7.2.302/src/fileio.c 2009-11-17 17:13:03.000000000 +0100
+--- src/fileio.c 2009-11-18 20:06:55.000000000 +0100
+***************
+*** 146,152 ****
+--- 146,154 ----
+ # endif
+ #endif
+ static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
++ #ifdef TEMPDIRNAMES
+ static void vim_settempdir __ARGS((char_u *tempdir));
++ #endif
+ #ifdef FEAT_AUTOCMD
+ static char *e_auchangedbuf = N_("E812: Autocommands changed buffer or buffer name");
+ #endif
+***************
+*** 6995,7000 ****
+--- 6997,7003 ----
+ }
+ #endif
+
++ #ifdef TEMPDIRNAMES
+ /*
+ * Directory "tempdir" was created. Expand this name to a full path and put
+ * it in "vim_tempdir". This avoids that using ":cd" would confuse us.
+***************
+*** 7021,7026 ****
+--- 7024,7030 ----
+ vim_free(buf);
+ }
+ }
++ #endif
+
+ /*
+ * vim_tempname(): Return a unique name that can be used for a temp file.
+*** ../vim-7.2.302/src/version.c 2009-11-17 17:57:10.000000000 +0100
+--- src/version.c 2009-11-18 20:07:58.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 303,
+ /**/
+
+--
+BEDEVERE: Why do you think she is a witch?
+SECOND VILLAGER: She turned me into a newt.
+BEDEVERE: A newt?
+SECOND VILLAGER: (After looking at himself for some time) I got better.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.304 b/vim/vim-7.2/7.2.304
new file mode 100644
index 0000000..8a138c0
--- /dev/null
+++ b/vim/vim-7.2/7.2.304
@@ -0,0 +1,58 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.304
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.304
+Problem: Compiler warning for bad pointer cast.
+Solution: Use another variable for int pointer.
+Files: src/ops.c
+
+
+*** ../vim-7.2.303/src/ops.c 2009-11-17 12:43:19.000000000 +0100
+--- src/ops.c 2009-11-18 15:40:26.000000000 +0100
+***************
+*** 5597,5603 ****
+ vc.vc_type = CONV_NONE;
+ if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK)
+ {
+! conv_str = string_convert(&vc, str, (int*)&len);
+ if (conv_str != NULL)
+ {
+ vim_free(str);
+--- 5597,5606 ----
+ vc.vc_type = CONV_NONE;
+ if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK)
+ {
+! int intlen = len;
+!
+! conv_str = string_convert(&vc, str, &intlen);
+! len = intlen;
+ if (conv_str != NULL)
+ {
+ vim_free(str);
+*** ../vim-7.2.303/src/version.c 2009-11-18 20:12:15.000000000 +0100
+--- src/version.c 2009-11-25 12:37:36.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 304,
+ /**/
+
+--
+I recommend ordering large cargo containers of paper towels to make up
+whatever budget underruns you have. Paper products are always useful and they
+have the advantage of being completely flushable if you need to make room in
+the storage area later.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.305 b/vim/vim-7.2/7.2.305
new file mode 100644
index 0000000..c8ad708
--- /dev/null
+++ b/vim/vim-7.2/7.2.305
@@ -0,0 +1,105 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.305
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.305
+Problem: Recursively redrawing causes a memory leak. (Dominique Pelle)
+Solution: Disallow recursive screen updating.
+Files: src/screen.c
+
+
+*** ../vim-7.2.304/src/screen.c 2009-11-11 17:07:25.000000000 +0100
+--- src/screen.c 2009-11-17 16:30:53.000000000 +0100
+***************
+*** 323,328 ****
+--- 323,329 ----
+ int did_one;
+ #endif
+
++ /* Don't do anything if the screen structures are (not yet) valid. */
+ if (!screen_valid(TRUE))
+ return;
+
+***************
+*** 342,348 ****
+ if (curwin->w_lines_valid == 0 && type < NOT_VALID)
+ type = NOT_VALID;
+
+! if (!redrawing())
+ {
+ redraw_later(type); /* remember type for next time */
+ must_redraw = type;
+--- 343,351 ----
+ if (curwin->w_lines_valid == 0 && type < NOT_VALID)
+ type = NOT_VALID;
+
+! /* Postpone the redrawing when it's not needed and when being called
+! * recursively. */
+! if (!redrawing() || updating_screen)
+ {
+ redraw_later(type); /* remember type for next time */
+ must_redraw = type;
+***************
+*** 582,587 ****
+--- 585,591 ----
+
+ /*
+ * Prepare for updating one or more windows.
++ * Caller must check for "updating_screen" already set to avoid recursiveness.
+ */
+ static void
+ update_prepare()
+***************
+*** 663,669 ****
+ doit = TRUE;
+ }
+
+! if (!doit)
+ return;
+
+ /* update all windows that need updating */
+--- 667,675 ----
+ doit = TRUE;
+ }
+
+! /* Return when there is nothing to do or screen updating already
+! * happening. */
+! if (!doit || updating_screen)
+ return;
+
+ /* update all windows that need updating */
+***************
+*** 696,701 ****
+--- 702,711 ----
+ updateWindow(wp)
+ win_T *wp;
+ {
++ /* return if already busy updating */
++ if (updating_screen)
++ return;
++
+ update_prepare();
+
+ #ifdef FEAT_CLIPBOARD
+*** ../vim-7.2.304/src/version.c 2009-11-25 12:38:49.000000000 +0100
+--- src/version.c 2009-11-25 13:01:48.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 305,
+ /**/
+
+--
+If the Universe is constantly expanding, why can't I ever find a parking space?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.306 b/vim/vim-7.2/7.2.306
new file mode 100644
index 0000000..d54e90d
--- /dev/null
+++ b/vim/vim-7.2/7.2.306
@@ -0,0 +1,48 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.306
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.306
+Problem: shellescape("10%%", 1) only escapes first %. (Christian Brabandt)
+Solution: Don't copy the character after the escaped one.
+Files: src/misc2.c
+
+
+*** ../vim-7.2.305/src/misc2.c 2009-11-11 16:56:13.000000000 +0100
+--- src/misc2.c 2009-11-25 17:11:49.000000000 +0100
+***************
+*** 1390,1395 ****
+--- 1390,1396 ----
+ *d++ = '\\'; /* insert backslash */
+ while (--l >= 0) /* copy the var */
+ *d++ = *p++;
++ continue;
+ }
+
+ MB_COPY_CHAR(p, d);
+*** ../vim-7.2.305/src/version.c 2009-11-25 13:03:29.000000000 +0100
+--- src/version.c 2009-11-25 17:13:54.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 306,
+ /**/
+
+--
+Article in the first Free Software Magazine: "Bram Moolenaar studied electrical
+engineering at the Technical University of Delft and graduated in 1985 on a
+multi-processor Unix architecture."
+Response by "dimator": Could the school not afford a proper stage for the
+ceremony?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.307 b/vim/vim-7.2/7.2.307
new file mode 100644
index 0000000..23504e2
--- /dev/null
+++ b/vim/vim-7.2/7.2.307
@@ -0,0 +1,181 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.307
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.307
+Problem: Crash with a very long syntax match statement. (Guy Gur Ari)
+Solution: When the offset does not fit in the two bytes available give an
+ error instead of continuing with invalid pointers.
+Files: src/regexp.c
+
+
+*** ../vim-7.2.306/src/regexp.c 2009-05-15 21:31:11.000000000 +0200
+--- src/regexp.c 2009-11-25 18:13:03.000000000 +0100
+***************
+*** 583,588 ****
+--- 583,589 ----
+ #endif
+ static char_u *regcode; /* Code-emit pointer, or JUST_CALC_SIZE */
+ static long regsize; /* Code size. */
++ static int reg_toolong; /* TRUE when offset out of range */
+ static char_u had_endbrace[NSUBEXP]; /* flags, TRUE if end of () found */
+ static unsigned regflags; /* RF_ flags for prog */
+ static long brace_min[10]; /* Minimums for complex brace repeats */
+***************
+*** 1028,1036 ****
+ regcomp_start(expr, re_flags);
+ regcode = r->program;
+ regc(REGMAGIC);
+! if (reg(REG_NOPAREN, &flags) == NULL)
+ {
+ vim_free(r);
+ return NULL;
+ }
+
+--- 1029,1039 ----
+ regcomp_start(expr, re_flags);
+ regcode = r->program;
+ regc(REGMAGIC);
+! if (reg(REG_NOPAREN, &flags) == NULL || reg_toolong)
+ {
+ vim_free(r);
++ if (reg_toolong)
++ EMSG_RET_NULL(_("E339: Pattern too long"));
+ return NULL;
+ }
+
+***************
+*** 1141,1146 ****
+--- 1144,1150 ----
+ re_has_z = 0;
+ #endif
+ regsize = 0L;
++ reg_toolong = FALSE;
+ regflags = 0;
+ #if defined(FEAT_SYN_HL) || defined(PROTO)
+ had_eol = FALSE;
+***************
+*** 1228,1234 ****
+ {
+ skipchr();
+ br = regbranch(&flags);
+! if (br == NULL)
+ return NULL;
+ regtail(ret, br); /* BRANCH -> BRANCH. */
+ if (!(flags & HASWIDTH))
+--- 1232,1238 ----
+ {
+ skipchr();
+ br = regbranch(&flags);
+! if (br == NULL || reg_toolong)
+ return NULL;
+ regtail(ret, br); /* BRANCH -> BRANCH. */
+ if (!(flags & HASWIDTH))
+***************
+*** 1313,1318 ****
+--- 1317,1324 ----
+ break;
+ skipchr();
+ regtail(latest, regnode(END)); /* operand ends */
++ if (reg_toolong)
++ break;
+ reginsert(MATCH, latest);
+ chain = latest;
+ }
+***************
+*** 1382,1388 ****
+ break;
+ default:
+ latest = regpiece(&flags);
+! if (latest == NULL)
+ return NULL;
+ *flagp |= flags & (HASWIDTH | HASNL | HASLOOKBH);
+ if (chain == NULL) /* First piece. */
+--- 1388,1394 ----
+ break;
+ default:
+ latest = regpiece(&flags);
+! if (latest == NULL || reg_toolong)
+ return NULL;
+ *flagp |= flags & (HASWIDTH | HASNL | HASLOOKBH);
+ if (chain == NULL) /* First piece. */
+***************
+*** 2540,2547 ****
+ offset = (int)(scan - val);
+ else
+ offset = (int)(val - scan);
+! *(scan + 1) = (char_u) (((unsigned)offset >> 8) & 0377);
+! *(scan + 2) = (char_u) (offset & 0377);
+ }
+
+ /*
+--- 2546,2561 ----
+ offset = (int)(scan - val);
+ else
+ offset = (int)(val - scan);
+! /* When the offset uses more than 16 bits it can no longer fit in the two
+! * bytes avaliable. Use a global flag to avoid having to check return
+! * values in too many places. */
+! if (offset > 0xffff)
+! reg_toolong = TRUE;
+! else
+! {
+! *(scan + 1) = (char_u) (((unsigned)offset >> 8) & 0377);
+! *(scan + 2) = (char_u) (offset & 0377);
+! }
+ }
+
+ /*
+***************
+*** 5764,5769 ****
+--- 5778,5785 ----
+
+ /*
+ * regnext - dig the "next" pointer out of a node
++ * Returns NULL when calculating size, when there is no next item and when
++ * there is an error.
+ */
+ static char_u *
+ regnext(p)
+***************
+*** 5771,5777 ****
+ {
+ int offset;
+
+! if (p == JUST_CALC_SIZE)
+ return NULL;
+
+ offset = NEXT(p);
+--- 5787,5793 ----
+ {
+ int offset;
+
+! if (p == JUST_CALC_SIZE || reg_toolong)
+ return NULL;
+
+ offset = NEXT(p);
+*** ../vim-7.2.306/src/version.c 2009-11-25 17:15:16.000000000 +0100
+--- src/version.c 2009-11-25 18:14:32.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 307,
+ /**/
+
+--
+The fastest way to get an engineer to solve a problem is to declare that the
+problem is unsolvable. No engineer can walk away from an unsolvable problem
+until it's solved.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.308 b/vim/vim-7.2/7.2.308
new file mode 100644
index 0000000..1e19b21
--- /dev/null
+++ b/vim/vim-7.2/7.2.308
@@ -0,0 +1,182 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.308
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.308
+Problem: When using a regexp in the "\=" expression of a substitute
+ command, submatch() returns empty strings for further lines.
+ (Clockwork Jam)
+Solution: Save and restore the line number and line count when calling
+ reg_getline().
+Files: src/regexp.c
+
+
+*** ../vim-7.2.307/src/regexp.c 2009-11-25 18:21:48.000000000 +0100
+--- src/regexp.c 2009-11-25 19:45:07.000000000 +0100
+***************
+*** 6828,6833 ****
+--- 6828,6835 ----
+ * that contains a call to substitute() and submatch(). */
+ static regmatch_T *submatch_match;
+ static regmmatch_T *submatch_mmatch;
++ static linenr_T submatch_firstlnum;
++ static linenr_T submatch_maxline;
+ #endif
+
+ #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) || defined(PROTO)
+***************
+*** 6941,6947 ****
+ }
+ else
+ {
+- linenr_T save_reg_maxline;
+ win_T *save_reg_win;
+ int save_ireg_ic;
+
+--- 6943,6948 ----
+***************
+*** 6953,6959 ****
+ * vim_regexec_multi() can't be called recursively. */
+ submatch_match = reg_match;
+ submatch_mmatch = reg_mmatch;
+! save_reg_maxline = reg_maxline;
+ save_reg_win = reg_win;
+ save_ireg_ic = ireg_ic;
+ can_f_submatch = TRUE;
+--- 6954,6961 ----
+ * vim_regexec_multi() can't be called recursively. */
+ submatch_match = reg_match;
+ submatch_mmatch = reg_mmatch;
+! submatch_firstlnum = reg_firstlnum;
+! submatch_maxline = reg_maxline;
+ save_reg_win = reg_win;
+ save_ireg_ic = ireg_ic;
+ can_f_submatch = TRUE;
+***************
+*** 6976,6982 ****
+
+ reg_match = submatch_match;
+ reg_mmatch = submatch_mmatch;
+! reg_maxline = save_reg_maxline;
+ reg_win = save_reg_win;
+ ireg_ic = save_ireg_ic;
+ can_f_submatch = FALSE;
+--- 6978,6985 ----
+
+ reg_match = submatch_match;
+ reg_mmatch = submatch_mmatch;
+! reg_firstlnum = submatch_firstlnum;
+! reg_maxline = submatch_maxline;
+ reg_win = save_reg_win;
+ ireg_ic = save_ireg_ic;
+ can_f_submatch = FALSE;
+***************
+*** 7212,7217 ****
+--- 7215,7243 ----
+
+ #ifdef FEAT_EVAL
+ /*
++ * Call reg_getline() with the line numbers from the submatch. If a
++ * substitute() was used the reg_maxline and other values have been
++ * overwritten.
++ */
++ static char_u *
++ reg_getline_submatch(lnum)
++ linenr_T lnum;
++ {
++ char_u *s;
++ linenr_T save_first = reg_firstlnum;
++ linenr_T save_max = reg_maxline;
++
++ reg_firstlnum = submatch_firstlnum;
++ reg_maxline = submatch_maxline;
++
++ s = reg_getline(lnum);
++
++ reg_firstlnum = save_first;
++ reg_maxline = save_max;
++ return s;
++ }
++
++ /*
+ * Used for the submatch() function: get the string from the n'th submatch in
+ * allocated memory.
+ * Returns NULL when not in a ":s" command and for a non-existing submatch.
+***************
+*** 7241,7247 ****
+ if (lnum < 0 || submatch_mmatch->endpos[no].lnum < 0)
+ return NULL;
+
+! s = reg_getline(lnum) + submatch_mmatch->startpos[no].col;
+ if (s == NULL) /* anti-crash check, cannot happen? */
+ break;
+ if (submatch_mmatch->endpos[no].lnum == lnum)
+--- 7267,7273 ----
+ if (lnum < 0 || submatch_mmatch->endpos[no].lnum < 0)
+ return NULL;
+
+! s = reg_getline_submatch(lnum) + submatch_mmatch->startpos[no].col;
+ if (s == NULL) /* anti-crash check, cannot happen? */
+ break;
+ if (submatch_mmatch->endpos[no].lnum == lnum)
+***************
+*** 7267,7273 ****
+ ++lnum;
+ while (lnum < submatch_mmatch->endpos[no].lnum)
+ {
+! s = reg_getline(lnum++);
+ if (round == 2)
+ STRCPY(retval + len, s);
+ len += (int)STRLEN(s);
+--- 7293,7299 ----
+ ++lnum;
+ while (lnum < submatch_mmatch->endpos[no].lnum)
+ {
+! s = reg_getline_submatch(lnum++);
+ if (round == 2)
+ STRCPY(retval + len, s);
+ len += (int)STRLEN(s);
+***************
+*** 7276,7282 ****
+ ++len;
+ }
+ if (round == 2)
+! STRNCPY(retval + len, reg_getline(lnum),
+ submatch_mmatch->endpos[no].col);
+ len += submatch_mmatch->endpos[no].col;
+ if (round == 2)
+--- 7302,7308 ----
+ ++len;
+ }
+ if (round == 2)
+! STRNCPY(retval + len, reg_getline_submatch(lnum),
+ submatch_mmatch->endpos[no].col);
+ len += submatch_mmatch->endpos[no].col;
+ if (round == 2)
+*** ../vim-7.2.307/src/version.c 2009-11-25 18:21:48.000000000 +0100
+--- src/version.c 2009-11-25 19:50:16.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 308,
+ /**/
+
+--
+Engineers are always delighted to share wisdom, even in areas in which they
+have no experience whatsoever. Their logic provides them with inherent
+insight into any field of expertise. This can be a problem when dealing with
+the illogical people who believe that knowledge can only be derived through
+experience.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.309 b/vim/vim-7.2/7.2.309
new file mode 100644
index 0000000..a1713b7
--- /dev/null
+++ b/vim/vim-7.2/7.2.309
@@ -0,0 +1,48 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.309
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.309 (after 7.2.308)
+Problem: Warning for missing function prototype. (Patrick Texier)
+Solution: Add the prototype.
+Files: src/regexp.c
+
+
+*** ../vim-7.2.308/src/regexp.c 2009-11-25 19:51:56.000000000 +0100
+--- src/regexp.c 2009-11-26 20:39:18.000000000 +0100
+***************
+*** 7214,7219 ****
+--- 7214,7221 ----
+ }
+
+ #ifdef FEAT_EVAL
++ static char_u *reg_getline_submatch __ARGS((linenr_T lnum));
++
+ /*
+ * Call reg_getline() with the line numbers from the submatch. If a
+ * substitute() was used the reg_maxline and other values have been
+*** ../vim-7.2.308/src/version.c 2009-11-25 19:51:56.000000000 +0100
+--- src/version.c 2009-11-26 20:40:11.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 309,
+ /**/
+
+--
+Female engineers become irresistible at the age of consent and remain that
+way until about thirty minutes after their clinical death. Longer if it's a
+warm day.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.310 b/vim/vim-7.2/7.2.310
new file mode 100644
index 0000000..52734dd
--- /dev/null
+++ b/vim/vim-7.2/7.2.310
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.310
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.310
+Problem: When a filetype plugin in ~/.vim/ftdetect uses ":setfiletype" and
+ the file starts with a "# comment" it gets "conf" filetype.
+Solution: Check for "conf" filetype after using ftdetect plugins.
+Files: runtime/filetype.vim
+
+
+*** ../vim-7.2.309/runtime/filetype.vim 2008-08-06 18:56:36.000000000 +0200
+--- runtime/filetype.vim 2009-12-02 12:08:42.000000000 +0100
+***************
+*** 2400,2405 ****
+--- 2435,2446 ----
+ au BufNewFile,BufRead zsh*,zlog* call s:StarSetf('zsh')
+
+
++
++ " Use the filetype detect plugins. They may overrule any of the previously
++ " detected filetypes.
++ runtime! ftdetect/*.vim
++
++
+ " Generic configuration file (check this last, it's just guessing!)
+ au BufNewFile,BufRead,StdinReadPost *
+ \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
+***************
+*** 2408,2417 ****
+ \ setf conf |
+ \ endif
+
+- " Use the plugin-filetype checks last, they may overrule any of the previously
+- " detected filetypes.
+- runtime! ftdetect/*.vim
+-
+ augroup END
+
+
+--- 2449,2454 ----
+*** ../vim-7.2.309/src/version.c 2009-11-26 20:41:19.000000000 +0100
+--- src/version.c 2009-12-02 12:05:27.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 310,
+ /**/
+
+--
+A)bort, R)etry, P)lease don't bother me again
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.311 b/vim/vim-7.2/7.2.311
new file mode 100644
index 0000000..9e27a73
--- /dev/null
+++ b/vim/vim-7.2/7.2.311
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.311
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.311
+Problem: Can't compile with FreeMiNT.
+Solution: Change #ifdef for limits.h. (Alan Hourihane)
+Files: src/fileio.c
+
+
+*** ../vim-7.2.310/src/fileio.c 2009-11-18 20:12:15.000000000 +0100
+--- src/fileio.c 2009-12-02 13:30:07.000000000 +0100
+***************
+*** 21,27 ****
+
+ #include "vim.h"
+
+! #ifdef __TANDEM
+ # include <limits.h> /* for SSIZE_MAX */
+ #endif
+
+--- 21,27 ----
+
+ #include "vim.h"
+
+! #if defined(__TANDEM) || defined(__MINT__)
+ # include <limits.h> /* for SSIZE_MAX */
+ #endif
+
+*** ../vim-7.2.310/src/version.c 2009-12-02 12:08:57.000000000 +0100
+--- src/version.c 2009-12-02 13:31:46.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 311,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+3. Your bookmark takes 15 minutes to scroll from top to bottom.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.312 b/vim/vim-7.2/7.2.312
new file mode 100644
index 0000000..8b95868
--- /dev/null
+++ b/vim/vim-7.2/7.2.312
@@ -0,0 +1,312 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.312
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.312
+Problem: iconv() returns an invalid character sequence when conversion
+ fails. It should return an empty string. (Yongwei Wu)
+Solution: Be more strict about invalid characters in the input.
+Files: src/mbyte.c
+
+
+*** ../vim-7.2.311/src/mbyte.c 2009-06-16 15:23:07.000000000 +0200
+--- src/mbyte.c 2009-11-25 16:10:44.000000000 +0100
+***************
+*** 133,154 ****
+ static int dbcs_ptr2cells_len __ARGS((char_u *p, int size));
+ static int dbcs_ptr2char __ARGS((char_u *p));
+
+! /* Lookup table to quickly get the length in bytes of a UTF-8 character from
+! * the first byte of a UTF-8 string. Bytes which are illegal when used as the
+! * first byte have a one, because these will be used separately. */
+ static char utf8len_tab[256] =
+ {
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+! 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /*bogus*/
+! 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /*bogus*/
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1,
+ };
+
+ /*
+ * XIM often causes trouble. Define XIM_DEBUG to get a log of XIM callbacks
+ * in the "xim.log" file.
+ */
+--- 133,172 ----
+ static int dbcs_ptr2cells_len __ARGS((char_u *p, int size));
+ static int dbcs_ptr2char __ARGS((char_u *p));
+
+! /*
+! * Lookup table to quickly get the length in bytes of a UTF-8 character from
+! * the first byte of a UTF-8 string.
+! * Bytes which are illegal when used as the first byte have a 1.
+! * The NUL byte has length 1.
+! */
+ static char utf8len_tab[256] =
+ {
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+! 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+! 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1,
+ };
+
+ /*
++ * Like utf8len_tab above, but using a zero for illegal lead bytes.
++ */
++ static char utf8len_tab_zero[256] =
++ {
++ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
++ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
++ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
++ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
++ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
++ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
++ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
++ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,0,0,
++ };
++
++ /*
+ * XIM often causes trouble. Define XIM_DEBUG to get a log of XIM callbacks
+ * in the "xim.log" file.
+ */
+***************
+*** 1352,1358 ****
+ if (size > 0 && *p >= 0x80)
+ {
+ if (utf_ptr2len_len(p, size) < utf8len_tab[*p])
+! return 1;
+ c = utf_ptr2char(p);
+ /* An illegal byte is displayed as <xx>. */
+ if (utf_ptr2len(p) == 1 || c == NUL)
+--- 1370,1376 ----
+ if (size > 0 && *p >= 0x80)
+ {
+ if (utf_ptr2len_len(p, size) < utf8len_tab[*p])
+! return 1; /* truncated */
+ c = utf_ptr2char(p);
+ /* An illegal byte is displayed as <xx>. */
+ if (utf_ptr2len(p) == 1 || c == NUL)
+***************
+*** 1473,1479 ****
+ if (p[0] < 0x80) /* be quick for ASCII */
+ return p[0];
+
+! len = utf8len_tab[p[0]];
+ if (len > 1 && (p[1] & 0xc0) == 0x80)
+ {
+ if (len == 2)
+--- 1491,1497 ----
+ if (p[0] < 0x80) /* be quick for ASCII */
+ return p[0];
+
+! len = utf8len_tab_zero[p[0]];
+ if (len > 1 && (p[1] & 0xc0) == 0x80)
+ {
+ if (len == 2)
+***************
+*** 1723,1728 ****
+--- 1741,1747 ----
+ /*
+ * Return length of UTF-8 character, obtained from the first byte.
+ * "b" must be between 0 and 255!
++ * Returns 1 for an invalid first byte value.
+ */
+ int
+ utf_byte2len(b)
+***************
+*** 1737,1742 ****
+--- 1756,1762 ----
+ * Returns 1 for "".
+ * Returns 1 for an illegal byte sequence (also in incomplete byte seq.).
+ * Returns number > "size" for an incomplete byte sequence.
++ * Never returns zero.
+ */
+ int
+ utf_ptr2len_len(p, size)
+***************
+*** 1747,1757 ****
+ int i;
+ int m;
+
+! if (*p == NUL)
+! return 1;
+! m = len = utf8len_tab[*p];
+ if (len > size)
+ m = size; /* incomplete byte sequence. */
+ for (i = 1; i < m; ++i)
+ if ((p[i] & 0xc0) != 0x80)
+ return 1;
+--- 1767,1779 ----
+ int i;
+ int m;
+
+! len = utf8len_tab[*p];
+! if (len == 1)
+! return 1; /* NUL, ascii or illegal lead byte */
+ if (len > size)
+ m = size; /* incomplete byte sequence. */
++ else
++ m = len;
+ for (i = 1; i < m; ++i)
+ if ((p[i] & 0xc0) != 0x80)
+ return 1;
+***************
+*** 2505,2510 ****
+--- 2527,2533 ----
+ /*
+ * mb_head_off() function pointer.
+ * Return offset from "p" to the first byte of the character it points into.
++ * If "p" points to the NUL at the end of the string return 0.
+ * Returns 0 when already at the first byte of a character.
+ */
+ int
+***************
+*** 2524,2530 ****
+
+ /* It can't be a trailing byte when not using DBCS, at the start of the
+ * string or the previous byte can't start a double-byte. */
+! if (p <= base || MB_BYTE2LEN(p[-1]) == 1)
+ return 0;
+
+ /* This is slow: need to start at the base and go forward until the
+--- 2547,2553 ----
+
+ /* It can't be a trailing byte when not using DBCS, at the start of the
+ * string or the previous byte can't start a double-byte. */
+! if (p <= base || MB_BYTE2LEN(p[-1]) == 1 || *p == NUL)
+ return 0;
+
+ /* This is slow: need to start at the base and go forward until the
+***************
+*** 2552,2558 ****
+ * lead byte in the current cell. */
+ if (p <= base
+ || (enc_dbcs == DBCS_JPNU && p[-1] == 0x8e)
+! || MB_BYTE2LEN(p[-1]) == 1)
+ return 0;
+
+ /* This is slow: need to start at the base and go forward until the
+--- 2575,2582 ----
+ * lead byte in the current cell. */
+ if (p <= base
+ || (enc_dbcs == DBCS_JPNU && p[-1] == 0x8e)
+! || MB_BYTE2LEN(p[-1]) == 1
+! || *p == NUL)
+ return 0;
+
+ /* This is slow: need to start at the base and go forward until the
+***************
+*** 2578,2583 ****
+--- 2602,2608 ----
+ char_u *q;
+ char_u *s;
+ int c;
++ int len;
+ #ifdef FEAT_ARABIC
+ char_u *j;
+ #endif
+***************
+*** 2597,2604 ****
+ --q;
+ /* Check for illegal sequence. Do allow an illegal byte after where we
+ * started. */
+! if (utf8len_tab[*q] != (int)(s - q + 1)
+! && utf8len_tab[*q] != (int)(p - q + 1))
+ return 0;
+
+ if (q <= base)
+--- 2622,2629 ----
+ --q;
+ /* Check for illegal sequence. Do allow an illegal byte after where we
+ * started. */
+! len = utf8len_tab[*q];
+! if (len != (int)(s - q + 1) && len != (int)(p - q + 1))
+ return 0;
+
+ if (q <= base)
+***************
+*** 2810,2818 ****
+
+ while (end == NULL ? *p != NUL : p < end)
+ {
+! if ((*p & 0xc0) == 0x80)
+ return FALSE; /* invalid lead byte */
+- l = utf8len_tab[*p];
+ if (end != NULL && p + l > end)
+ return FALSE; /* incomplete byte sequence */
+ ++p;
+--- 2835,2843 ----
+
+ while (end == NULL ? *p != NUL : p < end)
+ {
+! l = utf8len_tab_zero[*p];
+! if (l == 0)
+ return FALSE; /* invalid lead byte */
+ if (end != NULL && p + l > end)
+ return FALSE; /* incomplete byte sequence */
+ ++p;
+***************
+*** 6117,6128 ****
+ d = retval;
+ for (i = 0; i < len; ++i)
+ {
+! l = utf_ptr2len(ptr + i);
+ if (l == 0)
+ *d++ = NUL;
+ else if (l == 1)
+ {
+! if (unconvlenp != NULL && utf8len_tab[ptr[i]] > len - i)
+ {
+ /* Incomplete sequence at the end. */
+ *unconvlenp = len - i;
+--- 6142,6161 ----
+ d = retval;
+ for (i = 0; i < len; ++i)
+ {
+! l = utf_ptr2len_len(ptr + i, len - i);
+ if (l == 0)
+ *d++ = NUL;
+ else if (l == 1)
+ {
+! int l_w = utf8len_tab_zero[ptr[i]];
+!
+! if (l_w == 0)
+! {
+! /* Illegal utf-8 byte cannot be converted */
+! vim_free(retval);
+! return NULL;
+! }
+! if (unconvlenp != NULL && l_w > len - i)
+ {
+ /* Incomplete sequence at the end. */
+ *unconvlenp = len - i;
+*** ../vim-7.2.311/src/version.c 2009-12-02 13:32:10.000000000 +0100
+--- src/version.c 2009-12-02 15:00:23.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 312,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+6. You refuse to go to a vacation spot with no electricity and no phone lines.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.313 b/vim/vim-7.2/7.2.313
new file mode 100644
index 0000000..77b9103
--- /dev/null
+++ b/vim/vim-7.2/7.2.313
@@ -0,0 +1,117 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.313
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.313
+Problem: Command line completion doesn't work after "%:h" and similar.
+Solution: Expand these items before doing the completion.
+Files: src/ex_getln.c, src/misc1.c, src/proto/misc1.pro
+
+
+*** ../vim-7.2.312/src/ex_getln.c 2009-09-18 17:24:54.000000000 +0200
+--- src/ex_getln.c 2009-12-02 16:40:06.000000000 +0100
+***************
+*** 4422,4428 ****
+ flags |= EW_FILE;
+ else
+ flags = (flags | EW_DIR) & ~EW_FILE;
+! ret = expand_wildcards(1, &pat, num_file, file, flags);
+ if (free_pat)
+ vim_free(pat);
+ return ret;
+--- 4422,4429 ----
+ flags |= EW_FILE;
+ else
+ flags = (flags | EW_DIR) & ~EW_FILE;
+! /* Expand wildcards, supporting %:h and the like. */
+! ret = expand_wildcards_eval(&pat, num_file, file, flags);
+ if (free_pat)
+ vim_free(pat);
+ return ret;
+*** ../vim-7.2.312/src/misc1.c 2009-11-17 16:08:12.000000000 +0100
+--- src/misc1.c 2009-12-02 17:06:49.000000000 +0100
+***************
+*** 8447,8452 ****
+--- 8447,8492 ----
+ }
+
+ /*
++ * Invoke expand_wildcards() for one pattern.
++ * Expand items like "%:h" before the expansion.
++ * Returns OK or FAIL.
++ */
++ int
++ expand_wildcards_eval(pat, num_file, file, flags)
++ char_u **pat; /* pointer to input pattern */
++ int *num_file; /* resulting number of files */
++ char_u ***file; /* array of resulting files */
++ int flags; /* EW_DIR, etc. */
++ {
++ int ret = FAIL;
++ char_u *eval_pat = NULL;
++ char_u *exp_pat = *pat;
++ char_u *ignored_msg;
++ int usedlen;
++
++ if (*exp_pat == '%' || *exp_pat == '#' || *exp_pat == '<')
++ {
++ ++emsg_off;
++ eval_pat = eval_vars(exp_pat, exp_pat, &usedlen,
++ NULL, &ignored_msg, NULL);
++ --emsg_off;
++ if (eval_pat != NULL)
++ exp_pat = concat_str(eval_pat, exp_pat + usedlen);
++ }
++
++ if (exp_pat != NULL)
++ ret = expand_wildcards(1, &exp_pat, num_file, file, flags);
++
++ if (eval_pat != NULL)
++ {
++ vim_free(exp_pat);
++ vim_free(eval_pat);
++ }
++
++ return ret;
++ }
++
++ /*
+ * Expand wildcards. Calls gen_expand_wildcards() and removes files matching
+ * 'wildignore'.
+ * Returns OK or FAIL.
+*** ../vim-7.2.312/src/proto/misc1.pro 2007-09-26 22:36:32.000000000 +0200
+--- src/proto/misc1.pro 2009-12-02 16:41:52.000000000 +0100
+***************
+*** 85,90 ****
+--- 85,91 ----
+ int vim_fexists __ARGS((char_u *fname));
+ void line_breakcheck __ARGS((void));
+ void fast_breakcheck __ARGS((void));
++ int expand_wildcards_eval __ARGS((char_u **pat, int *num_file, char_u ***file, int flags));
+ int expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+ int match_suffix __ARGS((char_u *fname));
+ int unix_expandpath __ARGS((garray_T *gap, char_u *path, int wildoff, int flags, int didstar));
+*** ../vim-7.2.312/src/version.c 2009-12-02 15:03:24.000000000 +0100
+--- src/version.c 2009-12-02 17:14:02.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 313,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+8. You spend half of the plane trip with your laptop on your lap...and your
+ child in the overhead compartment.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.314 b/vim/vim-7.2/7.2.314
new file mode 100644
index 0000000..490605d
--- /dev/null
+++ b/vim/vim-7.2/7.2.314
@@ -0,0 +1,56 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.314
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.314
+Problem: Missing function in small build.
+Solution: Always include concat_str.
+Files: src/misc1.c
+
+
+*** ../vim-7.2.313/src/misc1.c 2009-12-02 17:15:04.000000000 +0100
+--- src/misc1.c 2009-12-02 17:44:55.000000000 +0100
+***************
+*** 4666,4672 ****
+ return dest;
+ }
+
+- #if defined(FEAT_EVAL) || defined(FEAT_GETTEXT) || defined(PROTO)
+ /*
+ * Concatenate two strings and return the result in allocated memory.
+ * Returns NULL when out of memory.
+--- 4666,4671 ----
+***************
+*** 4687,4693 ****
+ }
+ return dest;
+ }
+- #endif
+
+ /*
+ * Add a path separator to a file name, unless it already ends in a path
+--- 4686,4691 ----
+*** ../vim-7.2.313/src/version.c 2009-12-02 17:15:04.000000000 +0100
+--- src/version.c 2009-12-02 17:47:18.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 314,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+9. All your daydreaming is preoccupied with getting a faster connection to the
+ net: 28.8...ISDN...cable modem...T1...T3.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.315 b/vim/vim-7.2/7.2.315
new file mode 100644
index 0000000..6a5e7c7
--- /dev/null
+++ b/vim/vim-7.2/7.2.315
@@ -0,0 +1,134 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.315
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.315
+Problem: Python libs can't be found on 64 bit system.
+Solution: Add lib64 to the list of directories. (Michael Henry)
+Files: src/auto/configure, src/configure.in
+
+
+*** ../vim-7.2.314/src/auto/configure 2009-11-17 17:13:03.000000000 +0100
+--- src/auto/configure 2009-12-02 17:21:20.000000000 +0100
+***************
+*** 5126,5132 ****
+
+ vi_cv_path_python_conf=
+ for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
+! for subdir in lib share; do
+ d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
+ if test -d "$d" && test -f "$d/config.c"; then
+ vi_cv_path_python_conf="$d"
+--- 5126,5132 ----
+
+ vi_cv_path_python_conf=
+ for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
+! for subdir in lib64 lib share; do
+ d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
+ if test -d "$d" && test -f "$d/config.c"; then
+ vi_cv_path_python_conf="$d"
+***************
+*** 13718,13725 ****
+ $as_echo "pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group" >&6; }
+ else
+ vim_cv_tty_group=world
+! { $as_echo "$as_me:$LINENO: result: ptys are world accessable" >&5
+! $as_echo "ptys are world accessable" >&6; }
+ fi
+
+ else
+--- 13718,13725 ----
+ $as_echo "pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group" >&6; }
+ else
+ vim_cv_tty_group=world
+! { $as_echo "$as_me:$LINENO: result: ptys are world accessible" >&5
+! $as_echo "ptys are world accessible" >&6; }
+ fi
+
+ else
+***************
+*** 13730,13737 ****
+ ( exit $ac_status )
+
+ vim_cv_tty_group=world
+! { $as_echo "$as_me:$LINENO: result: can't determine - assume ptys are world accessable" >&5
+! $as_echo "can't determine - assume ptys are world accessable" >&6; }
+
+ fi
+ rm -rf conftest.dSYM
+--- 13730,13737 ----
+ ( exit $ac_status )
+
+ vim_cv_tty_group=world
+! { $as_echo "$as_me:$LINENO: result: can't determine - assume ptys are world accessible" >&5
+! $as_echo "can't determine - assume ptys are world accessible" >&6; }
+
+ fi
+ rm -rf conftest.dSYM
+*** ../vim-7.2.314/src/configure.in 2009-11-17 17:13:03.000000000 +0100
+--- src/configure.in 2009-12-02 17:21:10.000000000 +0100
+***************
+*** 686,692 ****
+ [
+ vi_cv_path_python_conf=
+ for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
+! for subdir in lib share; do
+ d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
+ if test -d "$d" && test -f "$d/config.c"; then
+ vi_cv_path_python_conf="$d"
+--- 686,692 ----
+ [
+ vi_cv_path_python_conf=
+ for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
+! for subdir in lib64 lib share; do
+ d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
+ if test -d "$d" && test -f "$d/config.c"; then
+ vi_cv_path_python_conf="$d"
+***************
+*** 2557,2567 ****
+ AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
+ else
+ vim_cv_tty_group=world
+! AC_MSG_RESULT([ptys are world accessable])
+ fi
+ ],[
+ vim_cv_tty_group=world
+! AC_MSG_RESULT([can't determine - assume ptys are world accessable])
+ ],[
+ AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
+ ])
+--- 2557,2567 ----
+ AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
+ else
+ vim_cv_tty_group=world
+! AC_MSG_RESULT([ptys are world accessible])
+ fi
+ ],[
+ vim_cv_tty_group=world
+! AC_MSG_RESULT([can't determine - assume ptys are world accessible])
+ ],[
+ AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
+ ])
+*** ../vim-7.2.314/src/version.c 2009-12-02 17:47:46.000000000 +0100
+--- src/version.c 2009-12-02 17:57:39.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 315,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+10. And even your night dreams are in HTML.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.316 b/vim/vim-7.2/7.2.316
new file mode 100644
index 0000000..34e629f
--- /dev/null
+++ b/vim/vim-7.2/7.2.316
@@ -0,0 +1,83 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.316
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.316
+Problem: May get multiple _FORTIFY_SOURCE arguments. (Tony Mechelynck)
+Solution: First remove all these arguments and then add the one we want.
+ (Dominique Pelle)
+Files: src/auto/configure, src/configure.in
+
+
+*** ../vim-7.2.315/src/auto/configure 2009-12-02 17:59:08.000000000 +0100
+--- src/auto/configure 2009-12-16 17:05:59.000000000 +0100
+***************
+*** 17185,17194 ****
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+! { $as_echo "$as_me:$LINENO: checking whether we need -D_FORTIFY_SOURCE=1" >&5
+ $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS -D_FORTIFY_SOURCE=1" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g' -e 's/-D_FORTIFY_SOURCE=2//g'`
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+ $as_echo "yes" >&6; }
+ else
+--- 17185,17194 ----
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+! { $as_echo "$as_me:$LINENO: checking whether we need -D_FORTIFY_SOURCE=1" >&5
+ $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+ $as_echo "yes" >&6; }
+ else
+*** ../vim-7.2.315/src/configure.in 2009-12-02 17:59:08.000000000 +0100
+--- src/configure.in 2009-12-16 17:05:55.000000000 +0100
+***************
+*** 3241,3249 ****
+ fi
+ dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
+ dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
+ AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS -D_FORTIFY_SOURCE=1" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g' -e 's/-D_FORTIFY_SOURCE=2//g'`
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+--- 3241,3250 ----
+ fi
+ dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
+ dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
++ dnl Also remove duplicate _FORTIFY_SOURCE arguments.
+ AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
+ if test "$gccmajor" -gt "3"; then
+! CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+*** ../vim-7.2.315/src/version.c 2009-12-02 17:59:08.000000000 +0100
+--- src/version.c 2009-12-16 17:12:25.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 316,
+ /**/
+
+--
+Have you heard about the new Beowulf cluster? It's so fast, it executes
+an infinite loop in 6 seconds.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.317 b/vim/vim-7.2/7.2.317
new file mode 100644
index 0000000..bc0ceee
--- /dev/null
+++ b/vim/vim-7.2/7.2.317
@@ -0,0 +1,148 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.317
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.317
+Problem: Memory leak when adding a highlight group with unprintable
+ characters, resulting in E669.
+Solution: Free the memory. And fix a few typos. (Dominique Pelle)
+Files: src/syntax.c
+
+
+*** ../vim-7.2.316/src/syntax.c 2009-05-17 13:30:58.000000000 +0200
+--- src/syntax.c 2009-12-16 18:09:05.000000000 +0100
+***************
+*** 206,212 ****
+ static int current_attr = 0; /* attr of current syntax word */
+ #ifdef FEAT_EVAL
+ static int current_id = 0; /* ID of current char for syn_get_id() */
+! static int current_trans_id = 0; /* idem, transparancy removed */
+ #endif
+
+ typedef struct syn_cluster_S
+--- 206,212 ----
+ static int current_attr = 0; /* attr of current syntax word */
+ #ifdef FEAT_EVAL
+ static int current_id = 0; /* ID of current char for syn_get_id() */
+! static int current_trans_id = 0; /* idem, transparency removed */
+ #endif
+
+ typedef struct syn_cluster_S
+***************
+*** 282,288 ****
+ int si_idx; /* index of syntax pattern or
+ KEYWORD_IDX */
+ int si_id; /* highlight group ID for keywords */
+! int si_trans_id; /* idem, transparancy removed */
+ int si_m_lnum; /* lnum of the match */
+ int si_m_startcol; /* starting column of the match */
+ lpos_T si_m_endpos; /* just after end posn of the match */
+--- 282,288 ----
+ int si_idx; /* index of syntax pattern or
+ KEYWORD_IDX */
+ int si_id; /* highlight group ID for keywords */
+! int si_trans_id; /* idem, transparency removed */
+ int si_m_lnum; /* lnum of the match */
+ int si_m_startcol; /* starting column of the match */
+ lpos_T si_m_endpos; /* just after end posn of the match */
+***************
+*** 1274,1280 ****
+ dist = syn_buf->b_ml.ml_line_count / (syn_buf->b_sst_len - Rows) + 1;
+
+ /*
+! * Go throught the list to find the "tick" for the oldest entry that can
+ * be removed. Set "above" when the "tick" for the oldest entry is above
+ * "b_sst_lasttick" (the display tick wraps around).
+ */
+--- 1274,1280 ----
+ dist = syn_buf->b_ml.ml_line_count / (syn_buf->b_sst_len - Rows) + 1;
+
+ /*
+! * Go through the list to find the "tick" for the oldest entry that can
+ * be removed. Set "above" when the "tick" for the oldest entry is above
+ * "b_sst_lasttick" (the display tick wraps around).
+ */
+***************
+*** 2319,2325 ****
+ ? (syn_buf->b_spell_cluster_id == 0)
+ : (syn_buf->b_syn_spell == SYNSPL_TOP);
+
+! /* nextgroup ends at end of line, unless "skipnl" or "skipemtpy" present */
+ if (current_next_list != NULL
+ && syn_getcurline()[current_col + 1] == NUL
+ && !(current_next_flags & (HL_SKIPNL | HL_SKIPEMPTY)))
+--- 2319,2325 ----
+ ? (syn_buf->b_spell_cluster_id == 0)
+ : (syn_buf->b_syn_spell == SYNSPL_TOP);
+
+! /* nextgroup ends at end of line, unless "skipnl" or "skipempty" present */
+ if (current_next_list != NULL
+ && syn_getcurline()[current_col + 1] == NUL
+ && !(current_next_flags & (HL_SKIPNL | HL_SKIPEMPTY)))
+***************
+*** 6108,6114 ****
+ win_T *wp;
+ long lnum;
+ colnr_T col;
+! int trans; /* remove transparancy */
+ int *spellp; /* return: can do spell checking */
+ int keep_state; /* keep state of char at "col" */
+ {
+--- 6108,6114 ----
+ win_T *wp;
+ long lnum;
+ colnr_T col;
+! int trans; /* remove transparency */
+ int *spellp; /* return: can do spell checking */
+ int keep_state; /* keep state of char at "col" */
+ {
+***************
+*** 7523,7529 ****
+ #if defined(FEAT_GUI) || defined(PROTO)
+ /*
+ * Set the normal foreground and background colors according to the "Normal"
+! * highlighighting group. For X11 also set "Menu", "Scrollbar", and
+ * "Tooltip" colors.
+ */
+ void
+--- 7523,7529 ----
+ #if defined(FEAT_GUI) || defined(PROTO)
+ /*
+ * Set the normal foreground and background colors according to the "Normal"
+! * highlighting group. For X11 also set "Menu", "Scrollbar", and
+ * "Tooltip" colors.
+ */
+ void
+***************
+*** 8647,8652 ****
+--- 8647,8653 ----
+ if (!vim_isprintc(*p))
+ {
+ EMSG(_("E669: Unprintable character in group name"));
++ vim_free(name);
+ return 0;
+ }
+ else if (!ASCII_ISALNUM(*p) && *p != '_')
+*** ../vim-7.2.316/src/version.c 2009-12-16 17:14:08.000000000 +0100
+--- src/version.c 2009-12-16 18:09:14.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 317,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+35. Your husband tells you he's had the beard for 2 months.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.318 b/vim/vim-7.2/7.2.318
new file mode 100644
index 0000000..4301836
--- /dev/null
+++ b/vim/vim-7.2/7.2.318
@@ -0,0 +1,91 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.318
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.318
+Problem: Wrong locale value breaks floating point numbers for gvim.
+Solution: Set the locale again after doing GUI inits. (Dominique Pelle)
+Files: src/main.c
+
+
+*** ../vim-7.2.317/src/main.c 2009-11-17 12:31:30.000000000 +0100
+--- src/main.c 2009-12-16 18:23:46.000000000 +0100
+***************
+*** 366,379 ****
+ * Check if the GUI can be started. Reset gui.starting if not.
+ * Don't know about other systems, stay on the safe side and don't check.
+ */
+! if (gui.starting && gui_init_check() == FAIL)
+ {
+! gui.starting = FALSE;
+
+! /* When running "evim" or "gvim -y" we need the menus, exit if we
+! * don't have them. */
+! if (params.evim_mode)
+! mch_exit(1);
+ }
+ # endif
+ #endif
+--- 366,386 ----
+ * Check if the GUI can be started. Reset gui.starting if not.
+ * Don't know about other systems, stay on the safe side and don't check.
+ */
+! if (gui.starting)
+ {
+! if (gui_init_check() == FAIL)
+! {
+! gui.starting = FALSE;
+
+! /* When running "evim" or "gvim -y" we need the menus, exit if we
+! * don't have them. */
+! if (params.evim_mode)
+! mch_exit(1);
+! }
+! # if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+! /* Re-initialize locale, it may have been altered by gui_init_check() */
+! init_locale();
+! # endif
+ }
+ # endif
+ #endif
+***************
+*** 3685,3691 ****
+ }
+ else if (STRICMP(argv[i], "--servername") == 0)
+ {
+! /* Alredy processed. Take it out of the command line */
+ i++;
+ continue;
+ }
+--- 3692,3698 ----
+ }
+ else if (STRICMP(argv[i], "--servername") == 0)
+ {
+! /* Already processed. Take it out of the command line */
+ i++;
+ continue;
+ }
+*** ../vim-7.2.317/src/version.c 2009-12-16 18:13:04.000000000 +0100
+--- src/version.c 2009-12-16 18:26:24.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 318,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+36. You miss more than five meals a week downloading the latest games from
+ Apogee.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.319 b/vim/vim-7.2/7.2.319
new file mode 100644
index 0000000..3cbfd42
--- /dev/null
+++ b/vim/vim-7.2/7.2.319
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.319
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.319
+Problem: Motif: accessing freed memory when cancelling font dialog.
+Solution: Destroy the widget only after accessing it. (Dominique Pelle)
+Files: src/gui_xmdlg.c
+
+
+*** ../vim-7.2.318/src/gui_xmdlg.c 2009-11-03 12:53:44.000000000 +0100
+--- src/gui_xmdlg.c 2009-12-16 18:39:21.000000000 +0100
+***************
+*** 1274,1286 ****
+ XtAppProcessEvent(XtWidgetToApplicationContext(data->dialog),
+ (XtInputMask)XtIMAll);
+
+- XtDestroyWidget(data->dialog);
+-
+ if (data->old)
+ {
+ XFreeFont(XtDisplay(data->dialog), data->old);
+ XmFontListFree(data->old_list);
+ }
+
+ gui_motif_synch_fonts();
+
+--- 1274,1285 ----
+ XtAppProcessEvent(XtWidgetToApplicationContext(data->dialog),
+ (XtInputMask)XtIMAll);
+
+ if (data->old)
+ {
+ XFreeFont(XtDisplay(data->dialog), data->old);
+ XmFontListFree(data->old_list);
+ }
++ XtDestroyWidget(data->dialog);
+
+ gui_motif_synch_fonts();
+
+*** ../vim-7.2.318/src/version.c 2009-12-16 18:27:29.000000000 +0100
+--- src/version.c 2009-12-16 18:40:06.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 319,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+37. You start looking for hot HTML addresses in public restrooms.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.320 b/vim/vim-7.2/7.2.320
new file mode 100644
index 0000000..73f6224
--- /dev/null
+++ b/vim/vim-7.2/7.2.320
@@ -0,0 +1,199 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.320
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.320
+Problem: Unused function in Mzscheme interface.
+Solution: Remove the function and what depends on it. (Dominique Pelle)
+Files: src/if_mzsch.c, src/proto/if_mzsch.pro
+
+
+*** ../vim-7.2.319/src/if_mzsch.c 2009-09-11 12:20:47.000000000 +0200
+--- src/if_mzsch.c 2009-12-16 19:01:04.000000000 +0100
+***************
+*** 70,83 ****
+ Scheme_Object *port;
+ } Port_Info;
+
+- /* info for do_apply */
+- typedef struct
+- {
+- Scheme_Object *proc;
+- int argc;
+- Scheme_Object **argv;
+- } Apply_Info;
+-
+ /*
+ *========================================================================
+ * Vim-Control Commands
+--- 70,75 ----
+***************
+*** 160,166 ****
+ static Scheme_Object *extract_exn_message(Scheme_Object *v);
+ static Scheme_Object *do_eval(void *, int noargc, Scheme_Object **noargv);
+ static Scheme_Object *do_load(void *, int noargc, Scheme_Object **noargv);
+- static Scheme_Object *do_apply(void *, int noargc, Scheme_Object **noargv);
+ static void register_vim_exn(void);
+ static vim_mz_buffer *get_buffer_arg(const char *fname, int argnum,
+ int argc, Scheme_Object **argv);
+--- 152,157 ----
+***************
+*** 1056,1062 ****
+ MZ_GC_REG();
+ config = scheme_config;
+ MZ_GC_CHECK();
+! /* recreate ports each call effectivelly clearing these ones */
+ curout = scheme_make_string_output_port();
+ MZ_GC_CHECK();
+ curerr = scheme_make_string_output_port();
+--- 1047,1053 ----
+ MZ_GC_REG();
+ config = scheme_config;
+ MZ_GC_CHECK();
+! /* recreate ports each call effectively clearing these ones */
+ curout = scheme_make_string_output_port();
+ MZ_GC_CHECK();
+ curerr = scheme_make_string_output_port();
+***************
+*** 1196,1231 ****
+ }
+ }
+
+- /*
+- * apply MzScheme procedure with arguments,
+- * handling errors
+- */
+- Scheme_Object *
+- mzvim_apply(Scheme_Object *proc, int argc, Scheme_Object **argv)
+- {
+- if (mzscheme_init())
+- return FAIL;
+- else
+- {
+- Apply_Info data = {NULL, 0, NULL};
+- Scheme_Object *ret = NULL;
+-
+- MZ_GC_DECL_REG(5);
+- MZ_GC_VAR_IN_REG(0, ret);
+- MZ_GC_VAR_IN_REG(1, data.proc);
+- MZ_GC_ARRAY_VAR_IN_REG(2, data.argv, argc);
+- MZ_GC_REG();
+-
+- data.proc = proc;
+- data.argc = argc;
+- data.argv = argv;
+-
+- eval_with_exn_handling(&data, do_apply, &ret);
+- MZ_GC_UNREG();
+- return ret;
+- }
+- }
+-
+ static Scheme_Object *
+ do_load(void *data, int noargc, Scheme_Object **noargv)
+ {
+--- 1187,1192 ----
+***************
+*** 1257,1263 ****
+ MZ_GC_CHECK();
+ }
+
+! /* errors will be caught in do_mzscheme_comamnd and ex_mzfile */
+ scheme_close_input_port(pinfo->port);
+ MZ_GC_CHECK();
+ pinfo->port = NULL;
+--- 1218,1224 ----
+ MZ_GC_CHECK();
+ }
+
+! /* errors will be caught in do_mzscheme_command and ex_mzfile */
+ scheme_close_input_port(pinfo->port);
+ MZ_GC_CHECK();
+ pinfo->port = NULL;
+***************
+*** 1348,1360 ****
+ return scheme_eval_string_all((char *)s, environment, TRUE);
+ }
+
+- static Scheme_Object *
+- do_apply(void *a, int noargc, Scheme_Object **noargv)
+- {
+- Apply_Info *info = (Apply_Info *)a;
+- return scheme_apply(info->proc, info->argc, info->argv);
+- }
+-
+ /*
+ *========================================================================
+ * 3. MzScheme I/O Handlers
+--- 1309,1314 ----
+***************
+*** 2128,2134 ****
+ static Scheme_Object *
+ set_buffer_line(void *data, int argc, Scheme_Object **argv)
+ {
+! /* First of all, we check the the of the supplied MzScheme object.
+ * There are three cases:
+ * 1. #f - this is a deletion.
+ * 2. A string - this is a replacement.
+--- 2082,2088 ----
+ static Scheme_Object *
+ set_buffer_line(void *data, int argc, Scheme_Object **argv)
+ {
+! /* First of all, we check the value of the supplied MzScheme object.
+ * There are three cases:
+ * 1. #f - this is a deletion.
+ * 2. A string - this is a replacement.
+***************
+*** 2428,2434 ****
+ /*
+ * (insert-buff-line-list {linenr} {string/string-list} [buffer])
+ *
+! * Insert a number of lines into the specified buffer after the specifed line.
+ * The line number is in Vim format (1-based). The lines to be inserted are
+ * given as an MzScheme list of string objects or as a single string. The lines
+ * to be added are checked for validity and correct format. Errors are
+--- 2382,2388 ----
+ /*
+ * (insert-buff-line-list {linenr} {string/string-list} [buffer])
+ *
+! * Insert a number of lines into the specified buffer after the specified line.
+ * The line number is in Vim format (1-based). The lines to be inserted are
+ * given as an MzScheme list of string objects or as a single string. The lines
+ * to be added are checked for validity and correct format. Errors are
+*** ../vim-7.2.319/src/proto/if_mzsch.pro 2009-05-26 22:58:43.000000000 +0200
+--- src/proto/if_mzsch.pro 2009-12-16 19:01:01.000000000 +0100
+***************
+*** 13,20 ****
+ void mzvim_check_threads __ARGS((void));
+ void mzvim_reset_timer __ARGS((void));
+ void *mzvim_eval_string __ARGS((char_u *str));
+- struct Scheme_Object *mzvim_apply __ARGS((struct Scheme_Object *, int argc,
+- struct Scheme_Object **));
+ int mzthreads_allowed __ARGS((void));
+ void mzscheme_main __ARGS((void));
+ /* vim: set ft=c : */
+--- 13,18 ----
+*** ../vim-7.2.319/src/version.c 2009-12-16 18:49:09.000000000 +0100
+--- src/version.c 2009-12-16 18:53:48.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 320,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+38. You wake up at 3 a.m. to go to the bathroom and stop and check your e-mail
+ on the way back to bed.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.321 b/vim/vim-7.2/7.2.321
new file mode 100644
index 0000000..69c08f4
--- /dev/null
+++ b/vim/vim-7.2/7.2.321
@@ -0,0 +1,59 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.321
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.321
+Problem: histadd() and searching with "*" fails to add entry to history
+ when it is empty.
+Solution: Initialize the history. (Lech Lorens)
+Files: src/eval.c, src/normal.c
+
+
+*** ../vim-7.2.320/src/eval.c 2009-11-17 12:20:30.000000000 +0100
+--- src/eval.c 2009-12-24 14:37:50.000000000 +0100
+***************
+*** 12014,12019 ****
+--- 12014,12020 ----
+ str = get_tv_string_buf(&argvars[1], buf);
+ if (*str != NUL)
+ {
++ init_history();
+ add_to_history(histype, str, FALSE, NUL);
+ rettv->vval.v_number = TRUE;
+ return;
+*** ../vim-7.2.320/src/normal.c 2009-05-17 13:30:58.000000000 +0200
+--- src/normal.c 2009-12-24 14:38:28.000000000 +0100
+***************
+*** 5602,5607 ****
+--- 5602,5608 ----
+ STRCAT(buf, "\\>");
+ #ifdef FEAT_CMDHIST
+ /* put pattern in search history */
++ init_history();
+ add_to_history(HIST_SEARCH, buf, TRUE, NUL);
+ #endif
+ normal_search(cap, cmdchar == '*' ? '/' : '?', buf, 0);
+*** ../vim-7.2.320/src/version.c 2009-12-16 19:02:05.000000000 +0100
+--- src/version.c 2009-12-24 14:39:46.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 321,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+43. You tell the kids they can't use the computer because "Daddy's got work to
+ do" and you don't even have a job.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.322 b/vim/vim-7.2/7.2.322
new file mode 100644
index 0000000..57f27fc
--- /dev/null
+++ b/vim/vim-7.2/7.2.322
@@ -0,0 +1,49 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.322
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.322
+Problem: Wrong indenting in virtual replace mode with CTRL-Y below a short
+ line.
+Solution: Check for character to be NUL. (suggested by Lech Lorens)
+Files: src/edit.c
+
+
+*** ../vim-7.2.321/src/edit.c 2009-11-17 17:40:34.000000000 +0100
+--- src/edit.c 2009-12-24 15:18:23.000000000 +0100
+***************
+*** 7397,7402 ****
+--- 7397,7406 ----
+ int icase;
+ int i;
+
++ if (keytyped == NUL)
++ /* Can happen with CTRL-Y and CTRL-E on a short line. */
++ return FALSE;
++
+ #ifdef FEAT_EVAL
+ if (*curbuf->b_p_inde != NUL)
+ look = curbuf->b_p_indk; /* 'indentexpr' set: use 'indentkeys' */
+*** ../vim-7.2.321/src/version.c 2009-12-24 15:00:31.000000000 +0100
+--- src/version.c 2009-12-24 15:44:46.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 322,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+45. You buy a Captain Kirk chair with a built-in keyboard and mouse.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.323 b/vim/vim-7.2/7.2.323
new file mode 100644
index 0000000..fc43246
--- /dev/null
+++ b/vim/vim-7.2/7.2.323
@@ -0,0 +1,95 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.323 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.323 (extra)
+Problem: Balloon evaluation crashes on Win64.
+Solution: Change pointer types. (Sergey Khorev)
+Files: src/gui_w32.c
+
+
+*** ../vim-7.2.322/src/gui_w32.c 2009-01-28 21:22:20.000000000 +0100
+--- src/gui_w32.c 2009-12-24 16:06:41.000000000 +0100
+***************
+*** 212,223 ****
+ DWORD dwPlatformID;
+ } DLLVERSIONINFO;
+
+ typedef struct tagTOOLINFOA_NEW
+ {
+ UINT cbSize;
+ UINT uFlags;
+ HWND hwnd;
+! UINT uId;
+ RECT rect;
+ HINSTANCE hinst;
+ LPSTR lpszText;
+--- 212,225 ----
+ DWORD dwPlatformID;
+ } DLLVERSIONINFO;
+
++ #include <poppack.h>
++
+ typedef struct tagTOOLINFOA_NEW
+ {
+ UINT cbSize;
+ UINT uFlags;
+ HWND hwnd;
+! UINT_PTR uId;
+ RECT rect;
+ HINSTANCE hinst;
+ LPSTR lpszText;
+***************
+*** 227,241 ****
+ typedef struct tagNMTTDISPINFO_NEW
+ {
+ NMHDR hdr;
+! LPTSTR lpszText;
+ char szText[80];
+ HINSTANCE hinst;
+ UINT uFlags;
+ LPARAM lParam;
+ } NMTTDISPINFO_NEW;
+
+- #include <poppack.h>
+-
+ typedef HRESULT (WINAPI* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
+ #ifndef TTM_SETMAXTIPWIDTH
+ # define TTM_SETMAXTIPWIDTH (WM_USER+24)
+--- 229,241 ----
+ typedef struct tagNMTTDISPINFO_NEW
+ {
+ NMHDR hdr;
+! LPSTR lpszText;
+ char szText[80];
+ HINSTANCE hinst;
+ UINT uFlags;
+ LPARAM lParam;
+ } NMTTDISPINFO_NEW;
+
+ typedef HRESULT (WINAPI* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
+ #ifndef TTM_SETMAXTIPWIDTH
+ # define TTM_SETMAXTIPWIDTH (WM_USER+24)
+*** ../vim-7.2.322/src/version.c 2009-12-24 15:45:53.000000000 +0100
+--- src/version.c 2009-12-24 16:08:33.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 323,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+46. Your wife makes a new rule: "The computer cannot come to bed."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.324 b/vim/vim-7.2/7.2.324
new file mode 100644
index 0000000..8f61b8a
--- /dev/null
+++ b/vim/vim-7.2/7.2.324
@@ -0,0 +1,66 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.324
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.324
+Problem: A negative column argument in setpos() may cause a crash.
+Solution: Check for invalid column number. (James Vega)
+Files: src/eval.c, src/misc2.c
+
+
+*** ../vim-7.2.323/src/eval.c 2009-12-24 15:00:31.000000000 +0100
+--- src/eval.c 2009-12-31 13:09:19.000000000 +0100
+***************
+*** 15542,15548 ****
+ {
+ if (list2fpos(&argvars[1], &pos, &fnum) == OK)
+ {
+! --pos.col;
+ if (name[0] == '.' && name[1] == NUL)
+ {
+ /* set cursor */
+--- 15542,15549 ----
+ {
+ if (list2fpos(&argvars[1], &pos, &fnum) == OK)
+ {
+! if (--pos.col < 0)
+! pos.col = 0;
+ if (name[0] == '.' && name[1] == NUL)
+ {
+ /* set cursor */
+*** ../vim-7.2.323/src/misc2.c 2009-11-25 17:15:16.000000000 +0100
+--- src/misc2.c 2009-12-31 13:12:36.000000000 +0100
+***************
+*** 528,533 ****
+--- 528,535 ----
+ #endif
+ }
+ }
++ else if (curwin->w_cursor.col < 0)
++ curwin->w_cursor.col = 0;
+
+ #ifdef FEAT_VIRTUALEDIT
+ /* If virtual editing is on, we can leave the cursor on the old position,
+*** ../vim-7.2.323/src/version.c 2009-12-24 16:11:24.000000000 +0100
+--- src/version.c 2009-12-31 13:17:25.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 324,
+ /**/
+
+--
+"Thou shalt not follow the Null Pointer, for at its end Chaos and
+Madness lie."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.325 b/vim/vim-7.2/7.2.325
new file mode 100644
index 0000000..77a6e08
--- /dev/null
+++ b/vim/vim-7.2/7.2.325
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.325
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.325
+Problem: A stray "w" in the startup vimrc file causes the edited file to be
+ replaced with an empty file. (Stone Kang).
+Solution: Do not write a buffer when it has never been loaded.
+Files: src/fileio.c
+
+
+*** ../vim-7.2.324/src/fileio.c 2009-12-02 13:32:10.000000000 +0100
+--- src/fileio.c 2009-12-31 14:08:31.000000000 +0100
+***************
+*** 2981,2986 ****
+--- 2981,2993 ----
+
+ if (fname == NULL || *fname == NUL) /* safety check */
+ return FAIL;
++ if (buf->b_ml.ml_mfp == NULL)
++ {
++ /* This can happen during startup when there is a stray "w" in the
++ * vimrc file. */
++ EMSG(_(e_emptybuf));
++ return FAIL;
++ }
+
+ /*
+ * Disallow writing from .exrc and .vimrc in current directory for
+*** ../vim-7.2.324/src/version.c 2009-12-31 13:18:05.000000000 +0100
+--- src/version.c 2009-12-31 14:52:29.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 325,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+74. Your most erotic dreams are about cybersex
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.326 b/vim/vim-7.2/7.2.326
new file mode 100644
index 0000000..8e988a8
--- /dev/null
+++ b/vim/vim-7.2/7.2.326
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.326
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.326
+Problem: Win32: $HOME doesn't work when %HOMEPATH% is not defined.
+Solution: Use "\" for %HOMEPATH% when it is not defined.
+Files: src/misc1.c
+
+
+*** ../vim-7.2.325/src/misc1.c 2009-12-02 17:47:46.000000000 +0100
+--- src/misc1.c 2010-01-05 19:53:23.000000000 +0100
+***************
+*** 3470,3476 ****
+
+ homedrive = mch_getenv((char_u *)"HOMEDRIVE");
+ homepath = mch_getenv((char_u *)"HOMEPATH");
+! if (homedrive != NULL && homepath != NULL
+ && STRLEN(homedrive) + STRLEN(homepath) < MAXPATHL)
+ {
+ sprintf((char *)NameBuff, "%s%s", homedrive, homepath);
+--- 3470,3478 ----
+
+ homedrive = mch_getenv((char_u *)"HOMEDRIVE");
+ homepath = mch_getenv((char_u *)"HOMEPATH");
+! if (homepath == NULL || *homepath == NUL)
+! homepath = "\\";
+! if (homedrive != NULL
+ && STRLEN(homedrive) + STRLEN(homepath) < MAXPATHL)
+ {
+ sprintf((char *)NameBuff, "%s%s", homedrive, homepath);
+*** ../vim-7.2.325/src/version.c 2009-12-31 14:52:48.000000000 +0100
+--- src/version.c 2010-01-06 17:39:23.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 326,
+ /**/
+
+--
+From "know your smileys":
+ :q vi user saying, "How do I get out of this damn emacs editor?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.327 b/vim/vim-7.2/7.2.327
new file mode 100644
index 0000000..4bfb077
--- /dev/null
+++ b/vim/vim-7.2/7.2.327
@@ -0,0 +1,323 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.327
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.327
+Problem: Unused functions in Workshop.
+Solution: Add "#if 0" and minor cleanup. (Dominique Pelle)
+Files: src/workshop.c, src/integration.c, src/ingegration.h
+
+
+*** ../vim-7.2.326/src/workshop.c 2009-05-21 23:25:38.000000000 +0200
+--- src/workshop.c 2010-01-06 18:10:10.000000000 +0100
+***************
+*** 56,67 ****
+ static void load_window(char *, int lnum);
+ static void warp_to_pc(int);
+ #ifdef FEAT_BEVAL
+! void workshop_beval_cb(BalloonEval *, int);
+ #endif
+ static char *fixAccelText(char *);
+ static void addMenu(char *, char *, char *);
+ static char *lookupVerb(char *, int);
+- static int computeIndex(int, char_u *, int);
+ static void coloncmd(char *, Boolean);
+
+ extern Widget vimShell;
+--- 56,67 ----
+ static void load_window(char *, int lnum);
+ static void warp_to_pc(int);
+ #ifdef FEAT_BEVAL
+! void workshop_beval_cb(BalloonEval *, int);
+! static int computeIndex(int, char_u *, int);
+ #endif
+ static char *fixAccelText(char *);
+ static void addMenu(char *, char *, char *);
+ static char *lookupVerb(char *, int);
+ static void coloncmd(char *, Boolean);
+
+ extern Widget vimShell;
+***************
+*** 1624,1631 ****
+ }
+ }
+ }
+- #endif
+-
+
+ static int
+ computeIndex(
+--- 1624,1629 ----
+***************
+*** 1649,1654 ****
+--- 1647,1653 ----
+
+ return -1;
+ }
++ #endif
+
+ static void
+ addMenu(
+*** ../vim-7.2.326/src/integration.c 2008-06-24 22:27:10.000000000 +0200
+--- src/integration.c 2010-01-06 18:18:11.000000000 +0100
+***************
+*** 78,84 ****
+
+ /* Functions private to this file */
+ static void workshop_connection_closed(void);
+! static void messageFromEserve(XtPointer clientData, int *NOTUSED1, XtInputId *NOTUSED2);
+ static void workshop_disconnect(void);
+ static void workshop_sensitivity(int num, char *table);
+ static void adjust_sign_name(char *filename);
+--- 78,84 ----
+
+ /* Functions private to this file */
+ static void workshop_connection_closed(void);
+! static void messageFromEserve(XtPointer clientData, int *dum1, XtInputId *dum2);
+ static void workshop_disconnect(void);
+ static void workshop_sensitivity(int num, char *table);
+ static void adjust_sign_name(char *filename);
+***************
+*** 157,165 ****
+
+ }
+
+- /*ARGSUSED*/
+ void
+! messageFromEserve(XtPointer clientData, int *NOTUSED1, XtInputId *NOTUSED2)
+ {
+ char *cmd; /* the 1st word of the command */
+
+--- 157,166 ----
+
+ }
+
+ void
+! messageFromEserve(XtPointer clientData UNUSED,
+! int *dum1 UNUSED,
+! XtInputId *dum2 UNUSED)
+ {
+ char *cmd; /* the 1st word of the command */
+
+***************
+*** 199,205 ****
+ if (sign) {
+ sign++;
+ }
+! /* Change sign name to accomodate a different size? */
+ adjust_sign_name(sign);
+ workshop_add_mark_type(idx, color, sign);
+ }
+--- 200,206 ----
+ if (sign) {
+ sign++;
+ }
+! /* Change sign name to accommodate a different size? */
+ adjust_sign_name(sign);
+ workshop_add_mark_type(idx, color, sign);
+ }
+***************
+*** 580,586 ****
+ #endif
+
+
+! /* Change sign name to accomodate a different size:
+ * Create the filename based on the height. The filename format
+ * of multisize icons are:
+ * x.xpm : largest icon
+--- 581,587 ----
+ #endif
+
+
+! /* Change sign name to accommodate a different size:
+ * Create the filename based on the height. The filename format
+ * of multisize icons are:
+ * x.xpm : largest icon
+***************
+*** 614,619 ****
+--- 615,621 ----
+ strcpy(s, ".xpm");
+ }
+
++ #if 0
+ /* Were we invoked by WorkShop? This function can be used early during startup
+ if you want to do things differently if the editor is started standalone
+ or in WorkShop mode. For example, in standalone mode you may not want to
+***************
+*** 627,632 ****
+--- 629,635 ----
+ }
+ return result;
+ }
++ #endif
+
+ /* Connect back to eserve */
+ void workshop_connect(XtAppContext context)
+***************
+*** 750,755 ****
+--- 753,759 ----
+ * Utility functions
+ */
+
++ #if 0
+ /* Set icon for the window */
+ void
+ workshop_set_icon(Display *display, Widget shell, char **xpmdata,
+***************
+*** 793,798 ****
+--- 797,803 ----
+ }
+ XtFree((char *)xpmAttributes.colorsymbols);
+ }
++ #endif
+
+ /* Minimize and maximize shells. From libutil's shell.cc. */
+
+***************
+*** 927,933 ****
+ return success;
+ }
+
+!
+ Boolean workshop_get_rows_cols(int *rows, int *cols)
+ {
+ static int r = 0;
+--- 932,938 ----
+ return success;
+ }
+
+! #if 0
+ Boolean workshop_get_rows_cols(int *rows, int *cols)
+ {
+ static int r = 0;
+***************
+*** 958,963 ****
+--- 963,969 ----
+ }
+ return success;
+ }
++ #endif
+
+ /*
+ * Toolbar code
+***************
+*** 1043,1054 ****
+ }
+
+
+!
+ /*
+ * Send information to eserve on certain editor events
+ * You must make sure these are called when necessary
+ */
+-
+ void workshop_file_closed(char *filename)
+ {
+ char buffer[2*MAXPATHLEN];
+--- 1049,1059 ----
+ }
+
+
+! #if 0
+ /*
+ * Send information to eserve on certain editor events
+ * You must make sure these are called when necessary
+ */
+ void workshop_file_closed(char *filename)
+ {
+ char buffer[2*MAXPATHLEN];
+***************
+*** 1056,1061 ****
+--- 1061,1067 ----
+ NOCATGETS("deletedFile %s\n"), filename);
+ write(sd, buffer, strlen(buffer));
+ }
++ #endif
+
+ void workshop_file_closed_lineno(char *filename, int lineno)
+ {
+***************
+*** 1086,1106 ****
+ workshop_moved_marks(filename);
+ }
+
+! void workshop_move_mark(char *filename, int markId, int newLineno)
+ {
+ char buffer[2*MAXPATHLEN];
+ vim_snprintf(buffer, sizeof(buffer),
+! NOCATGETS("moveMark %s %d %d\n"), filename, markId, newLineno);
+ write(sd, buffer, strlen(buffer));
+ }
+
+! void workshop_file_modified(char *filename)
+ {
+ char buffer[2*MAXPATHLEN];
+ vim_snprintf(buffer, sizeof(buffer),
+! NOCATGETS("modifiedFile %s\n"), filename);
+ write(sd, buffer, strlen(buffer));
+ }
+
+ void workshop_frame_moved(int new_x, int new_y, int new_w, int new_h)
+ {
+--- 1092,1114 ----
+ workshop_moved_marks(filename);
+ }
+
+! #if 0
+! void workshop_file_modified(char *filename)
+ {
+ char buffer[2*MAXPATHLEN];
+ vim_snprintf(buffer, sizeof(buffer),
+! NOCATGETS("modifiedFile %s\n"), filename);
+ write(sd, buffer, strlen(buffer));
+ }
+
+! void workshop_move_mark(char *filename, int markId, int newLineno)
+ {
+ char buffer[2*MAXPATHLEN];
+ vim_snprintf(buffer, sizeof(buffer),
+! NOCATGETS("moveMark %s %d %d\n"), filename, markId, newLineno);
+ write(sd, buffer, strlen(buffer));
+ }
++ #endif
+
+ void workshop_frame_moved(int new_x, int new_y, int new_w, int new_h)
+ {
+***************
+*** 1179,1188 ****
+--- 1187,1198 ----
+ }
+
+ /* Send a message to eserve */
++ #if defined(NOHANDS_SUPPORT_FUNCTIONS) || defined(FEAT_BEVAL)
+ void workshop_send_message(char *buf)
+ {
+ write(sd, buf, strlen(buf));
+ }
++ #endif
+
+ /* Some methods, like currentFile, cursorPos, etc. are missing here.
+ * But it looks like these are used for NoHands testing only so we
+*** ../vim-7.2.326/src/version.c 2010-01-06 17:46:03.000000000 +0100
+--- src/version.c 2010-01-06 18:20:41.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 327,
+ /**/
+
+--
+From "know your smileys":
+ (:-# Said something he shouldn't have
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.328 b/vim/vim-7.2/7.2.328
new file mode 100644
index 0000000..f547fb9
--- /dev/null
+++ b/vim/vim-7.2/7.2.328
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.328
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.328
+Problem: has("win64") does not return 1 on 64 bit MS-Windows version.
+Solution: Also check for _WIN64 besides WIN64.
+Files: src/eval.c
+
+
+*** ../vim-7.2.327/src/eval.c 2009-12-31 13:18:05.000000000 +0100
+--- src/eval.c 2010-01-06 16:28:23.000000000 +0100
+***************
+*** 11453,11459 ****
+ #if defined(UNIX) && (defined(__CYGWIN32__) || defined(__CYGWIN__))
+ "win32unix",
+ #endif
+! #ifdef WIN64
+ "win64",
+ #endif
+ #ifdef EBCDIC
+--- 11453,11459 ----
+ #if defined(UNIX) && (defined(__CYGWIN32__) || defined(__CYGWIN__))
+ "win32unix",
+ #endif
+! #if defined(WIN64) || defined(_WIN64)
+ "win64",
+ #endif
+ #ifdef EBCDIC
+*** ../vim-7.2.327/src/version.c 2010-01-06 18:24:53.000000000 +0100
+--- src/version.c 2010-01-12 12:10:06.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 328,
+ /**/
+
+--
+From "know your smileys":
+ :.-( Crying
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.329 b/vim/vim-7.2/7.2.329
new file mode 100644
index 0000000..f92bc65
--- /dev/null
+++ b/vim/vim-7.2/7.2.329
@@ -0,0 +1,48 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.329
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.329
+Problem: "g_" doesn't position cursor correctly when in Visual mode and
+ 'selection' is "exclusive". (Ben Fritz)
+Solution: Call adjust_for_sel().
+Files: src/normal.c
+
+
+*** ../vim-7.2.328/src/normal.c 2009-12-24 15:00:31.000000000 +0100
+--- src/normal.c 2010-01-09 15:19:47.000000000 +0100
+***************
+*** 7873,7878 ****
+--- 7873,7881 ----
+ && vim_iswhite(ptr[curwin->w_cursor.col]))
+ --curwin->w_cursor.col;
+ curwin->w_set_curswant = TRUE;
++ #ifdef FEAT_VISUAL
++ adjust_for_sel(cap);
++ #endif
+ }
+ break;
+
+*** ../vim-7.2.328/src/version.c 2010-01-12 12:48:40.000000000 +0100
+--- src/version.c 2010-01-12 15:41:13.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 329,
+ /**/
+
+--
+From "know your smileys":
+ |-( Contact lenses, but has lost them
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.330 b/vim/vim-7.2/7.2.330
new file mode 100644
index 0000000..0d9c3f1
--- /dev/null
+++ b/vim/vim-7.2/7.2.330
@@ -0,0 +1,1531 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.330
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.330
+Problem: Tables for Unicode case operators are outdated.
+Solution: Add a Vim script for generating the tables. Include tables for
+ Unicode 5.2.
+Files: runtime/tools/README.txt, runtime/tools/unicode.vim, src/mbyte.c
+
+
+*** ../vim-7.2.329/runtime/tools/README.txt 2005-12-02 01:47:43.000000000 +0100
+--- runtime/tools/README.txt 2010-01-12 19:43:13.000000000 +0100
+***************
+*** 32,35 ****
+--- 32,37 ----
+ xcmdsrv_client.c: Example for a client program that communicates with a Vim
+ server through the X-Windows interface.
+
++ unicode.vim Vim script to generate tables for src/mbyte.c.
++
+ [xxd (and tee for OS/2) can be found in the src directory]
+*** ../vim-7.2.329/runtime/tools/unicode.vim 2010-01-12 19:47:33.000000000 +0100
+--- runtime/tools/unicode.vim 2010-01-12 19:42:14.000000000 +0100
+***************
+*** 0 ****
+--- 1,280 ----
++ " Script to extract tables from Unicode .txt files, to be used in src/mbyte.c.
++ " The format of the UnicodeData.txt file is explained here:
++ " http://www.unicode.org/Public/5.1.0/ucd/UCD.html
++ " For the other files see the header.
++ "
++ " Usage: Vim -S <this-file>
++ "
++ " Author: Bram Moolenaar
++ " Last Update: 2010 Jan 12
++
++ " Parse lines of UnicodeData.txt. Creates a list of lists in s:dataprops.
++ func! ParseDataToProps()
++ let s:dataprops = []
++ let lnum = 1
++ while lnum <= line('$')
++ let l = split(getline(lnum), '\s*;\s*', 1)
++ if len(l) != 15
++ echoerr 'Found ' . len(l) . ' items in line ' . lnum . ', expected 15'
++ return
++ endif
++ call add(s:dataprops, l)
++ let lnum += 1
++ endwhile
++ endfunc
++
++ " Parse lines of CaseFolding.txt. Creates a list of lists in s:foldprops.
++ func! ParseFoldProps()
++ let s:foldprops = []
++ let lnum = 1
++ while lnum <= line('$')
++ let line = getline(lnum)
++ if line !~ '^#' && line !~ '^\s*$'
++ let l = split(line, '\s*;\s*', 1)
++ if len(l) != 4
++ echoerr 'Found ' . len(l) . ' items in line ' . lnum . ', expected 4'
++ return
++ endif
++ call add(s:foldprops, l)
++ endif
++ let lnum += 1
++ endwhile
++ endfunc
++
++ " Parse lines of EastAsianWidth.txt. Creates a list of lists in s:widthprops.
++ func! ParseWidthProps()
++ let s:widthprops = []
++ let lnum = 1
++ while lnum <= line('$')
++ let line = getline(lnum)
++ if line !~ '^#' && line !~ '^\s*$'
++ let l = split(line, '\s*;\s*', 1)
++ if len(l) != 2
++ echoerr 'Found ' . len(l) . ' items in line ' . lnum . ', expected 2'
++ return
++ endif
++ call add(s:widthprops, l)
++ endif
++ let lnum += 1
++ endwhile
++ endfunc
++
++ " Build the toLower or toUpper table in a new buffer.
++ " Uses s:dataprops.
++ func! BuildCaseTable(name, index)
++ let start = -1
++ let end = -1
++ let step = 0
++ let add = -1
++ let ranges = []
++ for p in s:dataprops
++ if p[a:index] != ''
++ let n = ('0x' . p[0]) + 0
++ let nl = ('0x' . p[a:index]) + 0
++ if start >= 0 && add == nl - n && (step == 0 || n - end == step)
++ " continue with same range.
++ let step = n - end
++ let end = n
++ else
++ if start >= 0
++ " produce previous range
++ call Range(ranges, start, end, step, add)
++ endif
++ let start = n
++ let end = n
++ let step = 0
++ let add = nl - n
++ endif
++ endif
++ endfor
++ if start >= 0
++ call Range(ranges, start, end, step, add)
++ endif
++
++ " New buffer to put the result in.
++ new
++ exe "file to" . a:name
++ call setline(1, "static convertStruct to" . a:name . "[] =")
++ call setline(2, "{")
++ call append('$', ranges)
++ call setline('$', getline('$')[:-2]) " remove last comma
++ call setline(line('$') + 1, "};")
++ wincmd p
++ endfunc
++
++ " Build the foldCase table in a new buffer.
++ " Uses s:foldprops.
++ func! BuildFoldTable()
++ let start = -1
++ let end = -1
++ let step = 0
++ let add = -1
++ let ranges = []
++ for p in s:foldprops
++ if p[1] == 'C' || p[1] == 'S'
++ let n = ('0x' . p[0]) + 0
++ let nl = ('0x' . p[2]) + 0
++ if start >= 0 && add == nl - n && (step == 0 || n - end == step)
++ " continue with same range.
++ let step = n - end
++ let end = n
++ else
++ if start >= 0
++ " produce previous range
++ call Range(ranges, start, end, step, add)
++ endif
++ let start = n
++ let end = n
++ let step = 0
++ let add = nl - n
++ endif
++ endif
++ endfor
++ if start >= 0
++ call Range(ranges, start, end, step, add)
++ endif
++
++ " New buffer to put the result in.
++ new
++ file foldCase
++ call setline(1, "static convertStruct foldCase[] =")
++ call setline(2, "{")
++ call append('$', ranges)
++ call setline('$', getline('$')[:-2]) " remove last comma
++ call setline(line('$') + 1, "};")
++ wincmd p
++ endfunc
++
++ func! Range(ranges, start, end, step, add)
++ let s = printf("\t{0x%x,0x%x,%d,%d},", a:start, a:end, a:step == 0 ? -1 : a:step, a:add)
++ call add(a:ranges, s)
++ endfunc
++
++ " Build the combining table.
++ " Uses s:dataprops.
++ func! BuildCombiningTable()
++ let start = -1
++ let end = -1
++ let ranges = []
++ for p in s:dataprops
++ if p[2] == 'Mn' || p[2] == 'Mc' || p[2] == 'Me'
++ let n = ('0x' . p[0]) + 0
++ if start >= 0 && end + 1 == n
++ " continue with same range.
++ let end = n
++ else
++ if start >= 0
++ " produce previous range
++ call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end))
++ endif
++ let start = n
++ let end = n
++ endif
++ endif
++ endfor
++ if start >= 0
++ call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end))
++ endif
++
++ " New buffer to put the result in.
++ new
++ file combining
++ call setline(1, " static struct interval combining[] =")
++ call setline(2, " {")
++ call append('$', ranges)
++ call setline('$', getline('$')[:-2]) " remove last comma
++ call setline(line('$') + 1, " };")
++ wincmd p
++ endfunc
++
++ " Build the ambiguous table in a new buffer.
++ " Uses s:widthprops and s:dataprops.
++ func! BuildAmbiguousTable()
++ let start = -1
++ let end = -1
++ let ranges = []
++ let dataidx = 0
++ for p in s:widthprops
++ if p[1][0] == 'A'
++ let n = ('0x' . p[0]) + 0
++ " Find this char in the data table.
++ while 1
++ let dn = ('0x' . s:dataprops[dataidx][0]) + 0
++ if dn >= n
++ break
++ endif
++ let dataidx += 1
++ endwhile
++ if dn != n
++ echoerr "Cannot find character " . n . " in data table"
++ endif
++ " Only use the char when it's not a composing char.
++ let dp = s:dataprops[dataidx]
++ if dp[2] != 'Mn' && dp[2] != 'Mc' && dp[2] != 'Me'
++ if start >= 0 && end + 1 == n
++ " continue with same range.
++ let end = n
++ else
++ if start >= 0
++ " produce previous range
++ call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end))
++ endif
++ let start = n
++ if p[0] =~ '\.\.'
++ let end = ('0x' . substitute(p[0], '.*\.\.', '', '')) + 0
++ else
++ let end = n
++ endif
++ endif
++ endif
++ endif
++ endfor
++ if start >= 0
++ call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end))
++ endif
++
++ " New buffer to put the result in.
++ new
++ file ambiguous
++ call setline(1, " static struct interval ambiguous[] =")
++ call setline(2, " {")
++ call append('$', ranges)
++ call setline('$', getline('$')[:-2]) " remove last comma
++ call setline(line('$') + 1, " };")
++ wincmd p
++ endfunc
++
++
++
++ " Edit the Unicode text file. Requires the netrw plugin.
++ edit http://unicode.org/Public/UNIDATA/UnicodeData.txt
++
++ " Parse each line, create a list of lists.
++ call ParseDataToProps()
++
++ " Build the toLower table.
++ call BuildCaseTable("Lower", 13)
++
++ " Build the toUpper table.
++ call BuildCaseTable("Upper", 12)
++
++ " Build the ranges of composing chars.
++ call BuildCombiningTable()
++
++ " Edit the case folding text file. Requires the netrw plugin.
++ edit http://www.unicode.org/Public/UNIDATA/CaseFolding.txt
++
++ " Parse each line, create a list of lists.
++ call ParseFoldProps()
++
++ " Build the foldCase table.
++ call BuildFoldTable()
++
++ " Edit the width text file. Requires the netrw plugin.
++ edit http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt
++
++ " Parse each line, create a list of lists.
++ call ParseWidthProps()
++
++ " Build the ambiguous table.
++ call BuildAmbiguousTable()
+*** ../vim-7.2.329/src/mbyte.c 2009-12-02 15:03:24.000000000 +0100
+--- src/mbyte.c 2010-01-12 19:35:49.000000000 +0100
+***************
+*** 26,32 ****
+ * Recognizing bytes is easy: 0xxx.xxxx is a single-byte
+ * char, 10xx.xxxx is a trailing byte, 11xx.xxxx is a leading
+ * byte of a multi-byte character.
+! * To make things complicated, up to two composing characters
+ * are allowed. These are drawn on top of the first char.
+ * For most editing the sequence of bytes with composing
+ * characters included is considered to be one character.
+--- 26,32 ----
+ * Recognizing bytes is easy: 0xxx.xxxx is a single-byte
+ * char, 10xx.xxxx is a trailing byte, 11xx.xxxx is a leading
+ * byte of a multi-byte character.
+! * To make things complicated, up to six composing characters
+ * are allowed. These are drawn on top of the first char.
+ * For most editing the sequence of bytes with composing
+ * characters included is considered to be one character.
+***************
+*** 1153,1160 ****
+
+ struct interval
+ {
+! unsigned short first;
+! unsigned short last;
+ };
+ static int intable __ARGS((struct interval *table, size_t size, int c));
+
+--- 1153,1160 ----
+
+ struct interval
+ {
+! long first;
+! long last;
+ };
+ static int intable __ARGS((struct interval *table, size_t size, int c));
+
+***************
+*** 1200,1261 ****
+ utf_char2cells(c)
+ int c;
+ {
+! /* sorted list of non-overlapping intervals of East Asian Ambiguous
+! * characters, generated with:
+! * "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */
+! static struct interval ambiguous[] = {
+! {0x00A1, 0x00A1}, {0x00A4, 0x00A4}, {0x00A7, 0x00A8},
+! {0x00AA, 0x00AA}, {0x00AE, 0x00AE}, {0x00B0, 0x00B4},
+! {0x00B6, 0x00BA}, {0x00BC, 0x00BF}, {0x00C6, 0x00C6},
+! {0x00D0, 0x00D0}, {0x00D7, 0x00D8}, {0x00DE, 0x00E1},
+! {0x00E6, 0x00E6}, {0x00E8, 0x00EA}, {0x00EC, 0x00ED},
+! {0x00F0, 0x00F0}, {0x00F2, 0x00F3}, {0x00F7, 0x00FA},
+! {0x00FC, 0x00FC}, {0x00FE, 0x00FE}, {0x0101, 0x0101},
+! {0x0111, 0x0111}, {0x0113, 0x0113}, {0x011B, 0x011B},
+! {0x0126, 0x0127}, {0x012B, 0x012B}, {0x0131, 0x0133},
+! {0x0138, 0x0138}, {0x013F, 0x0142}, {0x0144, 0x0144},
+! {0x0148, 0x014B}, {0x014D, 0x014D}, {0x0152, 0x0153},
+! {0x0166, 0x0167}, {0x016B, 0x016B}, {0x01CE, 0x01CE},
+! {0x01D0, 0x01D0}, {0x01D2, 0x01D2}, {0x01D4, 0x01D4},
+! {0x01D6, 0x01D6}, {0x01D8, 0x01D8}, {0x01DA, 0x01DA},
+! {0x01DC, 0x01DC}, {0x0251, 0x0251}, {0x0261, 0x0261},
+! {0x02C4, 0x02C4}, {0x02C7, 0x02C7}, {0x02C9, 0x02CB},
+! {0x02CD, 0x02CD}, {0x02D0, 0x02D0}, {0x02D8, 0x02DB},
+! {0x02DD, 0x02DD}, {0x02DF, 0x02DF}, {0x0391, 0x03A1},
+! {0x03A3, 0x03A9}, {0x03B1, 0x03C1}, {0x03C3, 0x03C9},
+! {0x0401, 0x0401}, {0x0410, 0x044F}, {0x0451, 0x0451},
+! {0x2010, 0x2010}, {0x2013, 0x2016}, {0x2018, 0x2019},
+! {0x201C, 0x201D}, {0x2020, 0x2022}, {0x2024, 0x2027},
+! {0x2030, 0x2030}, {0x2032, 0x2033}, {0x2035, 0x2035},
+! {0x203B, 0x203B}, {0x203E, 0x203E}, {0x2074, 0x2074},
+! {0x207F, 0x207F}, {0x2081, 0x2084}, {0x20AC, 0x20AC},
+! {0x2103, 0x2103}, {0x2105, 0x2105}, {0x2109, 0x2109},
+! {0x2113, 0x2113}, {0x2116, 0x2116}, {0x2121, 0x2122},
+! {0x2126, 0x2126}, {0x212B, 0x212B}, {0x2153, 0x2154},
+! {0x215B, 0x215E}, {0x2160, 0x216B}, {0x2170, 0x2179},
+! {0x2190, 0x2199}, {0x21B8, 0x21B9}, {0x21D2, 0x21D2},
+! {0x21D4, 0x21D4}, {0x21E7, 0x21E7}, {0x2200, 0x2200},
+! {0x2202, 0x2203}, {0x2207, 0x2208}, {0x220B, 0x220B},
+! {0x220F, 0x220F}, {0x2211, 0x2211}, {0x2215, 0x2215},
+! {0x221A, 0x221A}, {0x221D, 0x2220}, {0x2223, 0x2223},
+! {0x2225, 0x2225}, {0x2227, 0x222C}, {0x222E, 0x222E},
+! {0x2234, 0x2237}, {0x223C, 0x223D}, {0x2248, 0x2248},
+! {0x224C, 0x224C}, {0x2252, 0x2252}, {0x2260, 0x2261},
+! {0x2264, 0x2267}, {0x226A, 0x226B}, {0x226E, 0x226F},
+! {0x2282, 0x2283}, {0x2286, 0x2287}, {0x2295, 0x2295},
+! {0x2299, 0x2299}, {0x22A5, 0x22A5}, {0x22BF, 0x22BF},
+! {0x2312, 0x2312}, {0x2460, 0x24E9}, {0x24EB, 0x254B},
+! {0x2550, 0x2573}, {0x2580, 0x258F}, {0x2592, 0x2595},
+! {0x25A0, 0x25A1}, {0x25A3, 0x25A9}, {0x25B2, 0x25B3},
+! {0x25B6, 0x25B7}, {0x25BC, 0x25BD}, {0x25C0, 0x25C1},
+! {0x25C6, 0x25C8}, {0x25CB, 0x25CB}, {0x25CE, 0x25D1},
+! {0x25E2, 0x25E5}, {0x25EF, 0x25EF}, {0x2605, 0x2606},
+! {0x2609, 0x2609}, {0x260E, 0x260F}, {0x2614, 0x2615},
+! {0x261C, 0x261C}, {0x261E, 0x261E}, {0x2640, 0x2640},
+! {0x2642, 0x2642}, {0x2660, 0x2661}, {0x2663, 0x2665},
+! {0x2667, 0x266A}, {0x266C, 0x266D}, {0x266F, 0x266F},
+! {0x273D, 0x273D}, {0x2776, 0x277F}, {0xE000, 0xF8FF},
+! {0xFFFD, 0xFFFD}, /* {0xF0000, 0xFFFFD}, {0x100000, 0x10FFFD} */
+ };
+
+ if (c >= 0x100)
+--- 1200,1390 ----
+ utf_char2cells(c)
+ int c;
+ {
+! /* Sorted list of non-overlapping intervals of East Asian Ambiguous
+! * characters, generated with ../runtime/tools/unicode.vim. */
+! static struct interval ambiguous[] =
+! {
+! {0x00a1, 0x00a1},
+! {0x00a4, 0x00a4},
+! {0x00a7, 0x00a8},
+! {0x00aa, 0x00aa},
+! {0x00ad, 0x00ae},
+! {0x00b0, 0x00b4},
+! {0x00b6, 0x00ba},
+! {0x00bc, 0x00bf},
+! {0x00c6, 0x00c6},
+! {0x00d0, 0x00d0},
+! {0x00d7, 0x00d8},
+! {0x00de, 0x00e1},
+! {0x00e6, 0x00e6},
+! {0x00e8, 0x00ea},
+! {0x00ec, 0x00ed},
+! {0x00f0, 0x00f0},
+! {0x00f2, 0x00f3},
+! {0x00f7, 0x00fa},
+! {0x00fc, 0x00fc},
+! {0x00fe, 0x00fe},
+! {0x0101, 0x0101},
+! {0x0111, 0x0111},
+! {0x0113, 0x0113},
+! {0x011b, 0x011b},
+! {0x0126, 0x0127},
+! {0x012b, 0x012b},
+! {0x0131, 0x0133},
+! {0x0138, 0x0138},
+! {0x013f, 0x0142},
+! {0x0144, 0x0144},
+! {0x0148, 0x014b},
+! {0x014d, 0x014d},
+! {0x0152, 0x0153},
+! {0x0166, 0x0167},
+! {0x016b, 0x016b},
+! {0x01ce, 0x01ce},
+! {0x01d0, 0x01d0},
+! {0x01d2, 0x01d2},
+! {0x01d4, 0x01d4},
+! {0x01d6, 0x01d6},
+! {0x01d8, 0x01d8},
+! {0x01da, 0x01da},
+! {0x01dc, 0x01dc},
+! {0x0251, 0x0251},
+! {0x0261, 0x0261},
+! {0x02c4, 0x02c4},
+! {0x02c7, 0x02c7},
+! {0x02c9, 0x02cb},
+! {0x02cd, 0x02cd},
+! {0x02d0, 0x02d0},
+! {0x02d8, 0x02db},
+! {0x02dd, 0x02dd},
+! {0x02df, 0x02df},
+! {0x0391, 0x03a1},
+! {0x03a3, 0x03a9},
+! {0x03b1, 0x03c1},
+! {0x03c3, 0x03c9},
+! {0x0401, 0x0401},
+! {0x0410, 0x044f},
+! {0x0451, 0x0451},
+! {0x2010, 0x2010},
+! {0x2013, 0x2016},
+! {0x2018, 0x2019},
+! {0x201c, 0x201d},
+! {0x2020, 0x2022},
+! {0x2024, 0x2027},
+! {0x2030, 0x2030},
+! {0x2032, 0x2033},
+! {0x2035, 0x2035},
+! {0x203b, 0x203b},
+! {0x203e, 0x203e},
+! {0x2074, 0x2074},
+! {0x207f, 0x207f},
+! {0x2081, 0x2084},
+! {0x20ac, 0x20ac},
+! {0x2103, 0x2103},
+! {0x2105, 0x2105},
+! {0x2109, 0x2109},
+! {0x2113, 0x2113},
+! {0x2116, 0x2116},
+! {0x2121, 0x2122},
+! {0x2126, 0x2126},
+! {0x212b, 0x212b},
+! {0x2153, 0x2154},
+! {0x215b, 0x215e},
+! {0x2160, 0x216b},
+! {0x2170, 0x2179},
+! {0x2189, 0x2189},
+! {0x2190, 0x2199},
+! {0x21b8, 0x21b9},
+! {0x21d2, 0x21d2},
+! {0x21d4, 0x21d4},
+! {0x21e7, 0x21e7},
+! {0x2200, 0x2200},
+! {0x2202, 0x2203},
+! {0x2207, 0x2208},
+! {0x220b, 0x220b},
+! {0x220f, 0x220f},
+! {0x2211, 0x2211},
+! {0x2215, 0x2215},
+! {0x221a, 0x221a},
+! {0x221d, 0x2220},
+! {0x2223, 0x2223},
+! {0x2225, 0x2225},
+! {0x2227, 0x222c},
+! {0x222e, 0x222e},
+! {0x2234, 0x2237},
+! {0x223c, 0x223d},
+! {0x2248, 0x2248},
+! {0x224c, 0x224c},
+! {0x2252, 0x2252},
+! {0x2260, 0x2261},
+! {0x2264, 0x2267},
+! {0x226a, 0x226b},
+! {0x226e, 0x226f},
+! {0x2282, 0x2283},
+! {0x2286, 0x2287},
+! {0x2295, 0x2295},
+! {0x2299, 0x2299},
+! {0x22a5, 0x22a5},
+! {0x22bf, 0x22bf},
+! {0x2312, 0x2312},
+! {0x2460, 0x24e9},
+! {0x24eb, 0x254b},
+! {0x2550, 0x2573},
+! {0x2580, 0x258f},
+! {0x2592, 0x2595},
+! {0x25a0, 0x25a1},
+! {0x25a3, 0x25a9},
+! {0x25b2, 0x25b3},
+! {0x25b6, 0x25b7},
+! {0x25bc, 0x25bd},
+! {0x25c0, 0x25c1},
+! {0x25c6, 0x25c8},
+! {0x25cb, 0x25cb},
+! {0x25ce, 0x25d1},
+! {0x25e2, 0x25e5},
+! {0x25ef, 0x25ef},
+! {0x2605, 0x2606},
+! {0x2609, 0x2609},
+! {0x260e, 0x260f},
+! {0x2614, 0x2615},
+! {0x261c, 0x261c},
+! {0x261e, 0x261e},
+! {0x2640, 0x2640},
+! {0x2642, 0x2642},
+! {0x2660, 0x2661},
+! {0x2663, 0x2665},
+! {0x2667, 0x266a},
+! {0x266c, 0x266d},
+! {0x266f, 0x266f},
+! {0x269e, 0x269f},
+! {0x26be, 0x26bf},
+! {0x26c4, 0x26cd},
+! {0x26cf, 0x26e1},
+! {0x26e3, 0x26e3},
+! {0x26e8, 0x26ff},
+! {0x273d, 0x273d},
+! {0x2757, 0x2757},
+! {0x2776, 0x277f},
+! {0x2b55, 0x2b59},
+! {0x3248, 0x324f},
+! {0xe000, 0xf8ff},
+! {0xfffd, 0xfffd},
+! {0x1f100, 0x1f10a},
+! {0x1f110, 0x1f12d},
+! {0x1f131, 0x1f131},
+! {0x1f13d, 0x1f13d},
+! {0x1f13f, 0x1f13f},
+! {0x1f142, 0x1f142},
+! {0x1f146, 0x1f146},
+! {0x1f14a, 0x1f14e},
+! {0x1f157, 0x1f157},
+! {0x1f15f, 0x1f15f},
+! {0x1f179, 0x1f179},
+! {0x1f17b, 0x1f17c},
+! {0x1f17f, 0x1f17f},
+! {0x1f18a, 0x1f18d},
+! {0x1f190, 0x1f190},
+! {0xf0000, 0xffffd},
+! {0x100000, 0x10fffd}
+ };
+
+ if (c >= 0x100)
+***************
+*** 1807,1813 ****
+ return 1;
+
+ /*
+! * Check for composing characters. We can handle only the first two, but
+ * skip all of them (otherwise the cursor would get stuck).
+ */
+ #ifdef FEAT_ARABIC
+--- 1936,1942 ----
+ return 1;
+
+ /*
+! * Check for composing characters. We can handle only the first six, but
+ * skip all of them (otherwise the cursor would get stuck).
+ */
+ #ifdef FEAT_ARABIC
+***************
+*** 1855,1861 ****
+ return 1;
+
+ /*
+! * Check for composing characters. We can handle only the first two, but
+ * skip all of them (otherwise the cursor would get stuck).
+ */
+ #ifdef FEAT_ARABIC
+--- 1984,1990 ----
+ return 1;
+
+ /*
+! * Check for composing characters. We can handle only the first six, but
+ * skip all of them (otherwise the cursor would get stuck).
+ */
+ #ifdef FEAT_ARABIC
+***************
+*** 1973,2010 ****
+ utf_iscomposing(c)
+ int c;
+ {
+! /* sorted list of non-overlapping intervals */
+ static struct interval combining[] =
+ {
+! {0x0300, 0x034f}, {0x0360, 0x036f}, {0x0483, 0x0486}, {0x0488, 0x0489},
+! {0x0591, 0x05a1}, {0x05a3, 0x05b9}, {0x05bb, 0x05bd}, {0x05bf, 0x05bf},
+! {0x05c1, 0x05c2}, {0x05c4, 0x05c4}, {0x0610, 0x0615}, {0x064b, 0x0658},
+! {0x0670, 0x0670}, {0x06d6, 0x06dc}, {0x06de, 0x06e4}, {0x06e7, 0x06e8},
+! {0x06ea, 0x06ed}, {0x0711, 0x0711}, {0x0730, 0x074a}, {0x07a6, 0x07b0},
+! {0x0901, 0x0903}, {0x093c, 0x093c}, {0x093e, 0x094d}, {0x0951, 0x0954},
+! {0x0962, 0x0963}, {0x0981, 0x0983}, {0x09bc, 0x09bc}, {0x09be, 0x09c4},
+! {0x09c7, 0x09c8}, {0x09cb, 0x09cd}, {0x09d7, 0x09d7}, {0x09e2, 0x09e3},
+! {0x0a01, 0x0a03}, {0x0a3c, 0x0a3c}, {0x0a3e, 0x0a42}, {0x0a47, 0x0a48},
+! {0x0a4b, 0x0a4d}, {0x0a70, 0x0a71}, {0x0a81, 0x0a83}, {0x0abc, 0x0abc},
+! {0x0abe, 0x0ac5}, {0x0ac7, 0x0ac9}, {0x0acb, 0x0acd}, {0x0ae2, 0x0ae3},
+! {0x0b01, 0x0b03}, {0x0b3c, 0x0b3c}, {0x0b3e, 0x0b43}, {0x0b47, 0x0b48},
+! {0x0b4b, 0x0b4d}, {0x0b56, 0x0b57}, {0x0b82, 0x0b82}, {0x0bbe, 0x0bc2},
+! {0x0bc6, 0x0bc8}, {0x0bca, 0x0bcd}, {0x0bd7, 0x0bd7}, {0x0c01, 0x0c03},
+! {0x0c3e, 0x0c44}, {0x0c46, 0x0c48}, {0x0c4a, 0x0c4d}, {0x0c55, 0x0c56},
+! {0x0c82, 0x0c83}, {0x0cbc, 0x0cbc}, {0x0cbe, 0x0cc4}, {0x0cc6, 0x0cc8},
+! {0x0cca, 0x0ccd}, {0x0cd5, 0x0cd6}, {0x0d02, 0x0d03}, {0x0d3e, 0x0d43},
+! {0x0d46, 0x0d48}, {0x0d4a, 0x0d4d}, {0x0d57, 0x0d57}, {0x0d82, 0x0d83},
+! {0x0dca, 0x0dca}, {0x0dcf, 0x0dd4}, {0x0dd6, 0x0dd6}, {0x0dd8, 0x0ddf},
+! {0x0df2, 0x0df3}, {0x0e31, 0x0e31}, {0x0e34, 0x0e3a}, {0x0e47, 0x0e4e},
+! {0x0eb1, 0x0eb1}, {0x0eb4, 0x0eb9}, {0x0ebb, 0x0ebc}, {0x0ec8, 0x0ecd},
+! {0x0f18, 0x0f19}, {0x0f35, 0x0f35}, {0x0f37, 0x0f37}, {0x0f39, 0x0f39},
+! {0x0f3e, 0x0f3f}, {0x0f71, 0x0f84}, {0x0f86, 0x0f87}, {0x0f90, 0x0f97},
+! {0x0f99, 0x0fbc}, {0x0fc6, 0x0fc6}, {0x102c, 0x1032}, {0x1036, 0x1039},
+! {0x1056, 0x1059}, {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753},
+! {0x1772, 0x1773}, {0x17b6, 0x17d3}, {0x17dd, 0x17dd}, {0x180b, 0x180d},
+! {0x18a9, 0x18a9}, {0x1920, 0x192b}, {0x1930, 0x193b}, {0x20d0, 0x20ea},
+! {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e}, {0xfe00, 0xfe0f},
+! {0xfe20, 0xfe23},
+ };
+
+ return intable(combining, sizeof(combining), c);
+--- 2102,2299 ----
+ utf_iscomposing(c)
+ int c;
+ {
+! /* Sorted list of non-overlapping intervals.
+! * Generated by ../runtime/tools/unicode.vim. */
+ static struct interval combining[] =
+ {
+! {0x0300, 0x036f},
+! {0x0483, 0x0489},
+! {0x0591, 0x05bd},
+! {0x05bf, 0x05bf},
+! {0x05c1, 0x05c2},
+! {0x05c4, 0x05c5},
+! {0x05c7, 0x05c7},
+! {0x0610, 0x061a},
+! {0x064b, 0x065e},
+! {0x0670, 0x0670},
+! {0x06d6, 0x06dc},
+! {0x06de, 0x06e4},
+! {0x06e7, 0x06e8},
+! {0x06ea, 0x06ed},
+! {0x0711, 0x0711},
+! {0x0730, 0x074a},
+! {0x07a6, 0x07b0},
+! {0x07eb, 0x07f3},
+! {0x0816, 0x0819},
+! {0x081b, 0x0823},
+! {0x0825, 0x0827},
+! {0x0829, 0x082d},
+! {0x0900, 0x0903},
+! {0x093c, 0x093c},
+! {0x093e, 0x094e},
+! {0x0951, 0x0955},
+! {0x0962, 0x0963},
+! {0x0981, 0x0983},
+! {0x09bc, 0x09bc},
+! {0x09be, 0x09c4},
+! {0x09c7, 0x09c8},
+! {0x09cb, 0x09cd},
+! {0x09d7, 0x09d7},
+! {0x09e2, 0x09e3},
+! {0x0a01, 0x0a03},
+! {0x0a3c, 0x0a3c},
+! {0x0a3e, 0x0a42},
+! {0x0a47, 0x0a48},
+! {0x0a4b, 0x0a4d},
+! {0x0a51, 0x0a51},
+! {0x0a70, 0x0a71},
+! {0x0a75, 0x0a75},
+! {0x0a81, 0x0a83},
+! {0x0abc, 0x0abc},
+! {0x0abe, 0x0ac5},
+! {0x0ac7, 0x0ac9},
+! {0x0acb, 0x0acd},
+! {0x0ae2, 0x0ae3},
+! {0x0b01, 0x0b03},
+! {0x0b3c, 0x0b3c},
+! {0x0b3e, 0x0b44},
+! {0x0b47, 0x0b48},
+! {0x0b4b, 0x0b4d},
+! {0x0b56, 0x0b57},
+! {0x0b62, 0x0b63},
+! {0x0b82, 0x0b82},
+! {0x0bbe, 0x0bc2},
+! {0x0bc6, 0x0bc8},
+! {0x0bca, 0x0bcd},
+! {0x0bd7, 0x0bd7},
+! {0x0c01, 0x0c03},
+! {0x0c3e, 0x0c44},
+! {0x0c46, 0x0c48},
+! {0x0c4a, 0x0c4d},
+! {0x0c55, 0x0c56},
+! {0x0c62, 0x0c63},
+! {0x0c82, 0x0c83},
+! {0x0cbc, 0x0cbc},
+! {0x0cbe, 0x0cc4},
+! {0x0cc6, 0x0cc8},
+! {0x0cca, 0x0ccd},
+! {0x0cd5, 0x0cd6},
+! {0x0ce2, 0x0ce3},
+! {0x0d02, 0x0d03},
+! {0x0d3e, 0x0d44},
+! {0x0d46, 0x0d48},
+! {0x0d4a, 0x0d4d},
+! {0x0d57, 0x0d57},
+! {0x0d62, 0x0d63},
+! {0x0d82, 0x0d83},
+! {0x0dca, 0x0dca},
+! {0x0dcf, 0x0dd4},
+! {0x0dd6, 0x0dd6},
+! {0x0dd8, 0x0ddf},
+! {0x0df2, 0x0df3},
+! {0x0e31, 0x0e31},
+! {0x0e34, 0x0e3a},
+! {0x0e47, 0x0e4e},
+! {0x0eb1, 0x0eb1},
+! {0x0eb4, 0x0eb9},
+! {0x0ebb, 0x0ebc},
+! {0x0ec8, 0x0ecd},
+! {0x0f18, 0x0f19},
+! {0x0f35, 0x0f35},
+! {0x0f37, 0x0f37},
+! {0x0f39, 0x0f39},
+! {0x0f3e, 0x0f3f},
+! {0x0f71, 0x0f84},
+! {0x0f86, 0x0f87},
+! {0x0f90, 0x0f97},
+! {0x0f99, 0x0fbc},
+! {0x0fc6, 0x0fc6},
+! {0x102b, 0x103e},
+! {0x1056, 0x1059},
+! {0x105e, 0x1060},
+! {0x1062, 0x1064},
+! {0x1067, 0x106d},
+! {0x1071, 0x1074},
+! {0x1082, 0x108d},
+! {0x108f, 0x108f},
+! {0x109a, 0x109d},
+! {0x135f, 0x135f},
+! {0x1712, 0x1714},
+! {0x1732, 0x1734},
+! {0x1752, 0x1753},
+! {0x1772, 0x1773},
+! {0x17b6, 0x17d3},
+! {0x17dd, 0x17dd},
+! {0x180b, 0x180d},
+! {0x18a9, 0x18a9},
+! {0x1920, 0x192b},
+! {0x1930, 0x193b},
+! {0x19b0, 0x19c0},
+! {0x19c8, 0x19c9},
+! {0x1a17, 0x1a1b},
+! {0x1a55, 0x1a5e},
+! {0x1a60, 0x1a7c},
+! {0x1a7f, 0x1a7f},
+! {0x1b00, 0x1b04},
+! {0x1b34, 0x1b44},
+! {0x1b6b, 0x1b73},
+! {0x1b80, 0x1b82},
+! {0x1ba1, 0x1baa},
+! {0x1c24, 0x1c37},
+! {0x1cd0, 0x1cd2},
+! {0x1cd4, 0x1ce8},
+! {0x1ced, 0x1ced},
+! {0x1cf2, 0x1cf2},
+! {0x1dc0, 0x1de6},
+! {0x1dfd, 0x1dff},
+! {0x20d0, 0x20f0},
+! {0x2cef, 0x2cf1},
+! {0x2de0, 0x2dff},
+! {0x302a, 0x302f},
+! {0x3099, 0x309a},
+! {0xa66f, 0xa672},
+! {0xa67c, 0xa67d},
+! {0xa6f0, 0xa6f1},
+! {0xa802, 0xa802},
+! {0xa806, 0xa806},
+! {0xa80b, 0xa80b},
+! {0xa823, 0xa827},
+! {0xa880, 0xa881},
+! {0xa8b4, 0xa8c4},
+! {0xa8e0, 0xa8f1},
+! {0xa926, 0xa92d},
+! {0xa947, 0xa953},
+! {0xa980, 0xa983},
+! {0xa9b3, 0xa9c0},
+! {0xaa29, 0xaa36},
+! {0xaa43, 0xaa43},
+! {0xaa4c, 0xaa4d},
+! {0xaa7b, 0xaa7b},
+! {0xaab0, 0xaab0},
+! {0xaab2, 0xaab4},
+! {0xaab7, 0xaab8},
+! {0xaabe, 0xaabf},
+! {0xaac1, 0xaac1},
+! {0xabe3, 0xabea},
+! {0xabec, 0xabed},
+! {0xfb1e, 0xfb1e},
+! {0xfe00, 0xfe0f},
+! {0xfe20, 0xfe26},
+! {0x101fd, 0x101fd},
+! {0x10a01, 0x10a03},
+! {0x10a05, 0x10a06},
+! {0x10a0c, 0x10a0f},
+! {0x10a38, 0x10a3a},
+! {0x10a3f, 0x10a3f},
+! {0x11080, 0x11082},
+! {0x110b0, 0x110ba},
+! {0x1d165, 0x1d169},
+! {0x1d16d, 0x1d172},
+! {0x1d17b, 0x1d182},
+! {0x1d185, 0x1d18b},
+! {0x1d1aa, 0x1d1ad},
+! {0x1d242, 0x1d244},
+! {0xe0100, 0xe01ef}
+ };
+
+ return intable(combining, sizeof(combining), c);
+***************
+*** 2152,2166 ****
+ * Code for Unicode case-dependent operations. Based on notes in
+ * http://www.unicode.org/Public/UNIDATA/CaseFolding.txt
+ * This code uses simple case folding, not full case folding.
+ */
+
+ /*
+! * The following table is built by foldExtract.pl < CaseFolding.txt .
+! * It must be in numeric order, because we use binary search on it.
+! * An entry such as {0x41,0x5a,1,32} means that UCS-4 characters in the range
+! * from 0x41 to 0x5a inclusive, stepping by 1, are folded by adding 32.
+ */
+-
+ typedef struct
+ {
+ int rangeStart;
+--- 2441,2456 ----
+ * Code for Unicode case-dependent operations. Based on notes in
+ * http://www.unicode.org/Public/UNIDATA/CaseFolding.txt
+ * This code uses simple case folding, not full case folding.
++ * Last updated for Unicode 5.2.
+ */
+
+ /*
+! * The following tables are built by ../runtime/tools/unicode.vim.
+! * They must be in numeric order, because we use binary search.
+! * An entry such as {0x41,0x5a,1,32} means that Unicode characters in the
+! * range from 0x41 to 0x5a inclusive, stepping by 1, are changed to
+! * folded/upper/lower by adding 32.
+ */
+ typedef struct
+ {
+ int rangeStart;
+***************
+*** 2171,2211 ****
+
+ static convertStruct foldCase[] =
+ {
+! {0x41,0x5a,1,32}, {0xc0,0xd6,1,32}, {0xd8,0xde,1,32},
+! {0x100,0x12e,2,1}, {0x130,0x130,-1,-199}, {0x132,0x136,2,1},
+! {0x139,0x147,2,1}, {0x14a,0x176,2,1}, {0x178,0x178,-1,-121},
+! {0x179,0x17d,2,1}, {0x181,0x181,-1,210}, {0x182,0x184,2,1},
+! {0x186,0x186,-1,206}, {0x187,0x187,-1,1}, {0x189,0x18a,1,205},
+! {0x18b,0x18b,-1,1}, {0x18e,0x18e,-1,79}, {0x18f,0x18f,-1,202},
+! {0x190,0x190,-1,203}, {0x191,0x191,-1,1}, {0x193,0x193,-1,205},
+! {0x194,0x194,-1,207}, {0x196,0x196,-1,211}, {0x197,0x197,-1,209},
+! {0x198,0x198,-1,1}, {0x19c,0x19c,-1,211}, {0x19d,0x19d,-1,213},
+! {0x19f,0x19f,-1,214}, {0x1a0,0x1a4,2,1}, {0x1a6,0x1a6,-1,218},
+! {0x1a7,0x1a7,-1,1}, {0x1a9,0x1a9,-1,218}, {0x1ac,0x1ac,-1,1},
+! {0x1ae,0x1ae,-1,218}, {0x1af,0x1af,-1,1}, {0x1b1,0x1b2,1,217},
+! {0x1b3,0x1b5,2,1}, {0x1b7,0x1b7,-1,219}, {0x1b8,0x1bc,4,1},
+! {0x1c4,0x1c4,-1,2}, {0x1c5,0x1c5,-1,1}, {0x1c7,0x1c7,-1,2},
+! {0x1c8,0x1c8,-1,1}, {0x1ca,0x1ca,-1,2}, {0x1cb,0x1db,2,1},
+! {0x1de,0x1ee,2,1}, {0x1f1,0x1f1,-1,2}, {0x1f2,0x1f4,2,1},
+! {0x1f6,0x1f6,-1,-97}, {0x1f7,0x1f7,-1,-56}, {0x1f8,0x21e,2,1},
+! {0x220,0x220,-1,-130}, {0x222,0x232,2,1}, {0x386,0x386,-1,38},
+! {0x388,0x38a,1,37}, {0x38c,0x38c,-1,64}, {0x38e,0x38f,1,63},
+! {0x391,0x3a1,1,32}, {0x3a3,0x3ab,1,32}, {0x3d8,0x3ee,2,1},
+! {0x3f4,0x3f4,-1,-60}, {0x3f7,0x3f7,-1,1}, {0x3f9,0x3f9,-1,-7},
+! {0x3fa,0x3fa,-1,1}, {0x400,0x40f,1,80}, {0x410,0x42f,1,32},
+! {0x460,0x480,2,1}, {0x48a,0x4be,2,1}, {0x4c1,0x4cd,2,1},
+! {0x4d0,0x4f4,2,1}, {0x4f8,0x500,8,1}, {0x502,0x50e,2,1},
+! {0x531,0x556,1,48}, {0x1e00,0x1e94,2,1}, {0x1ea0,0x1ef8,2,1},
+! {0x1f08,0x1f0f,1,-8}, {0x1f18,0x1f1d,1,-8}, {0x1f28,0x1f2f,1,-8},
+! {0x1f38,0x1f3f,1,-8}, {0x1f48,0x1f4d,1,-8}, {0x1f59,0x1f5f,2,-8},
+! {0x1f68,0x1f6f,1,-8}, {0x1f88,0x1f8f,1,-8}, {0x1f98,0x1f9f,1,-8},
+! {0x1fa8,0x1faf,1,-8}, {0x1fb8,0x1fb9,1,-8}, {0x1fba,0x1fbb,1,-74},
+! {0x1fbc,0x1fbc,-1,-9}, {0x1fc8,0x1fcb,1,-86}, {0x1fcc,0x1fcc,-1,-9},
+! {0x1fd8,0x1fd9,1,-8}, {0x1fda,0x1fdb,1,-100}, {0x1fe8,0x1fe9,1,-8},
+! {0x1fea,0x1feb,1,-112}, {0x1fec,0x1fec,-1,-7}, {0x1ff8,0x1ff9,1,-128},
+! {0x1ffa,0x1ffb,1,-126}, {0x1ffc,0x1ffc,-1,-9}, {0x2126,0x2126,-1,-7517},
+! {0x212a,0x212a,-1,-8383}, {0x212b,0x212b,-1,-8262},
+! {0x2160,0x216f,1,16}, {0x24b6,0x24cf,1,26}, {0xff21,0xff3a,1,32},
+ {0x10400,0x10427,1,40}
+ };
+
+--- 2461,2621 ----
+
+ static convertStruct foldCase[] =
+ {
+! {0x41,0x5a,1,32},
+! {0xb5,0xb5,-1,775},
+! {0xc0,0xd6,1,32},
+! {0xd8,0xde,1,32},
+! {0x100,0x12e,2,1},
+! {0x132,0x136,2,1},
+! {0x139,0x147,2,1},
+! {0x14a,0x176,2,1},
+! {0x178,0x178,-1,-121},
+! {0x179,0x17d,2,1},
+! {0x17f,0x17f,-1,-268},
+! {0x181,0x181,-1,210},
+! {0x182,0x184,2,1},
+! {0x186,0x186,-1,206},
+! {0x187,0x187,-1,1},
+! {0x189,0x18a,1,205},
+! {0x18b,0x18b,-1,1},
+! {0x18e,0x18e,-1,79},
+! {0x18f,0x18f,-1,202},
+! {0x190,0x190,-1,203},
+! {0x191,0x191,-1,1},
+! {0x193,0x193,-1,205},
+! {0x194,0x194,-1,207},
+! {0x196,0x196,-1,211},
+! {0x197,0x197,-1,209},
+! {0x198,0x198,-1,1},
+! {0x19c,0x19c,-1,211},
+! {0x19d,0x19d,-1,213},
+! {0x19f,0x19f,-1,214},
+! {0x1a0,0x1a4,2,1},
+! {0x1a6,0x1a6,-1,218},
+! {0x1a7,0x1a7,-1,1},
+! {0x1a9,0x1a9,-1,218},
+! {0x1ac,0x1ac,-1,1},
+! {0x1ae,0x1ae,-1,218},
+! {0x1af,0x1af,-1,1},
+! {0x1b1,0x1b2,1,217},
+! {0x1b3,0x1b5,2,1},
+! {0x1b7,0x1b7,-1,219},
+! {0x1b8,0x1bc,4,1},
+! {0x1c4,0x1c4,-1,2},
+! {0x1c5,0x1c5,-1,1},
+! {0x1c7,0x1c7,-1,2},
+! {0x1c8,0x1c8,-1,1},
+! {0x1ca,0x1ca,-1,2},
+! {0x1cb,0x1db,2,1},
+! {0x1de,0x1ee,2,1},
+! {0x1f1,0x1f1,-1,2},
+! {0x1f2,0x1f4,2,1},
+! {0x1f6,0x1f6,-1,-97},
+! {0x1f7,0x1f7,-1,-56},
+! {0x1f8,0x21e,2,1},
+! {0x220,0x220,-1,-130},
+! {0x222,0x232,2,1},
+! {0x23a,0x23a,-1,10795},
+! {0x23b,0x23b,-1,1},
+! {0x23d,0x23d,-1,-163},
+! {0x23e,0x23e,-1,10792},
+! {0x241,0x241,-1,1},
+! {0x243,0x243,-1,-195},
+! {0x244,0x244,-1,69},
+! {0x245,0x245,-1,71},
+! {0x246,0x24e,2,1},
+! {0x345,0x345,-1,116},
+! {0x370,0x372,2,1},
+! {0x376,0x376,-1,1},
+! {0x386,0x386,-1,38},
+! {0x388,0x38a,1,37},
+! {0x38c,0x38c,-1,64},
+! {0x38e,0x38f,1,63},
+! {0x391,0x3a1,1,32},
+! {0x3a3,0x3ab,1,32},
+! {0x3c2,0x3c2,-1,1},
+! {0x3cf,0x3cf,-1,8},
+! {0x3d0,0x3d0,-1,-30},
+! {0x3d1,0x3d1,-1,-25},
+! {0x3d5,0x3d5,-1,-15},
+! {0x3d6,0x3d6,-1,-22},
+! {0x3d8,0x3ee,2,1},
+! {0x3f0,0x3f0,-1,-54},
+! {0x3f1,0x3f1,-1,-48},
+! {0x3f4,0x3f4,-1,-60},
+! {0x3f5,0x3f5,-1,-64},
+! {0x3f7,0x3f7,-1,1},
+! {0x3f9,0x3f9,-1,-7},
+! {0x3fa,0x3fa,-1,1},
+! {0x3fd,0x3ff,1,-130},
+! {0x400,0x40f,1,80},
+! {0x410,0x42f,1,32},
+! {0x460,0x480,2,1},
+! {0x48a,0x4be,2,1},
+! {0x4c0,0x4c0,-1,15},
+! {0x4c1,0x4cd,2,1},
+! {0x4d0,0x524,2,1},
+! {0x531,0x556,1,48},
+! {0x10a0,0x10c5,1,7264},
+! {0x1e00,0x1e94,2,1},
+! {0x1e9b,0x1e9b,-1,-58},
+! {0x1e9e,0x1e9e,-1,-7615},
+! {0x1ea0,0x1efe,2,1},
+! {0x1f08,0x1f0f,1,-8},
+! {0x1f18,0x1f1d,1,-8},
+! {0x1f28,0x1f2f,1,-8},
+! {0x1f38,0x1f3f,1,-8},
+! {0x1f48,0x1f4d,1,-8},
+! {0x1f59,0x1f5f,2,-8},
+! {0x1f68,0x1f6f,1,-8},
+! {0x1f88,0x1f8f,1,-8},
+! {0x1f98,0x1f9f,1,-8},
+! {0x1fa8,0x1faf,1,-8},
+! {0x1fb8,0x1fb9,1,-8},
+! {0x1fba,0x1fbb,1,-74},
+! {0x1fbc,0x1fbc,-1,-9},
+! {0x1fbe,0x1fbe,-1,-7173},
+! {0x1fc8,0x1fcb,1,-86},
+! {0x1fcc,0x1fcc,-1,-9},
+! {0x1fd8,0x1fd9,1,-8},
+! {0x1fda,0x1fdb,1,-100},
+! {0x1fe8,0x1fe9,1,-8},
+! {0x1fea,0x1feb,1,-112},
+! {0x1fec,0x1fec,-1,-7},
+! {0x1ff8,0x1ff9,1,-128},
+! {0x1ffa,0x1ffb,1,-126},
+! {0x1ffc,0x1ffc,-1,-9},
+! {0x2126,0x2126,-1,-7517},
+! {0x212a,0x212a,-1,-8383},
+! {0x212b,0x212b,-1,-8262},
+! {0x2132,0x2132,-1,28},
+! {0x2160,0x216f,1,16},
+! {0x2183,0x2183,-1,1},
+! {0x24b6,0x24cf,1,26},
+! {0x2c00,0x2c2e,1,48},
+! {0x2c60,0x2c60,-1,1},
+! {0x2c62,0x2c62,-1,-10743},
+! {0x2c63,0x2c63,-1,-3814},
+! {0x2c64,0x2c64,-1,-10727},
+! {0x2c67,0x2c6b,2,1},
+! {0x2c6d,0x2c6d,-1,-10780},
+! {0x2c6e,0x2c6e,-1,-10749},
+! {0x2c6f,0x2c6f,-1,-10783},
+! {0x2c70,0x2c70,-1,-10782},
+! {0x2c72,0x2c75,3,1},
+! {0x2c7e,0x2c7f,1,-10815},
+! {0x2c80,0x2ce2,2,1},
+! {0x2ceb,0x2ced,2,1},
+! {0xa640,0xa65e,2,1},
+! {0xa662,0xa66c,2,1},
+! {0xa680,0xa696,2,1},
+! {0xa722,0xa72e,2,1},
+! {0xa732,0xa76e,2,1},
+! {0xa779,0xa77b,2,1},
+! {0xa77d,0xa77d,-1,-35332},
+! {0xa77e,0xa786,2,1},
+! {0xa78b,0xa78b,-1,1},
+! {0xff21,0xff3a,1,32},
+ {0x10400,0x10427,1,40}
+ };
+
+***************
+*** 2253,2337 ****
+ return utf_convert(a, foldCase, sizeof(foldCase));
+ }
+
+- /*
+- * The following tables are built by upperLowerExtract.pl < UnicodeData.txt .
+- * They must be in numeric order, because we use binary search on them.
+- * An entry such as {0x41,0x5a,1,32} means that UCS-4 characters in the range
+- * from 0x41 to 0x5a inclusive, stepping by 1, are switched to lower (for
+- * example) by adding 32.
+- */
+ static convertStruct toLower[] =
+ {
+! {0x41,0x5a,1,32}, {0xc0,0xd6,1,32}, {0xd8,0xde,1,32},
+! {0x100,0x12e,2,1}, {0x130,0x130,-1,-199}, {0x132,0x136,2,1},
+! {0x139,0x147,2,1}, {0x14a,0x176,2,1}, {0x178,0x178,-1,-121},
+! {0x179,0x17d,2,1}, {0x181,0x181,-1,210}, {0x182,0x184,2,1},
+! {0x186,0x186,-1,206}, {0x187,0x187,-1,1}, {0x189,0x18a,1,205},
+! {0x18b,0x18b,-1,1}, {0x18e,0x18e,-1,79}, {0x18f,0x18f,-1,202},
+! {0x190,0x190,-1,203}, {0x191,0x191,-1,1}, {0x193,0x193,-1,205},
+! {0x194,0x194,-1,207}, {0x196,0x196,-1,211}, {0x197,0x197,-1,209},
+! {0x198,0x198,-1,1}, {0x19c,0x19c,-1,211}, {0x19d,0x19d,-1,213},
+! {0x19f,0x19f,-1,214}, {0x1a0,0x1a4,2,1}, {0x1a6,0x1a6,-1,218},
+! {0x1a7,0x1a7,-1,1}, {0x1a9,0x1a9,-1,218}, {0x1ac,0x1ac,-1,1},
+! {0x1ae,0x1ae,-1,218}, {0x1af,0x1af,-1,1}, {0x1b1,0x1b2,1,217},
+! {0x1b3,0x1b5,2,1}, {0x1b7,0x1b7,-1,219}, {0x1b8,0x1bc,4,1},
+! {0x1c4,0x1ca,3,2}, {0x1cd,0x1db,2,1}, {0x1de,0x1ee,2,1},
+! {0x1f1,0x1f1,-1,2}, {0x1f4,0x1f4,-1,1}, {0x1f6,0x1f6,-1,-97},
+! {0x1f7,0x1f7,-1,-56}, {0x1f8,0x21e,2,1}, {0x220,0x220,-1,-130},
+! {0x222,0x232,2,1}, {0x386,0x386,-1,38}, {0x388,0x38a,1,37},
+! {0x38c,0x38c,-1,64}, {0x38e,0x38f,1,63}, {0x391,0x3a1,1,32},
+! {0x3a3,0x3ab,1,32}, {0x3d8,0x3ee,2,1}, {0x3f4,0x3f4,-1,-60},
+! {0x3f7,0x3f7,-1,1}, {0x3f9,0x3f9,-1,-7}, {0x3fa,0x3fa,-1,1},
+! {0x400,0x40f,1,80}, {0x410,0x42f,1,32}, {0x460,0x480,2,1},
+! {0x48a,0x4be,2,1}, {0x4c1,0x4cd,2,1}, {0x4d0,0x4f4,2,1},
+! {0x4f8,0x500,8,1}, {0x502,0x50e,2,1}, {0x531,0x556,1,48},
+! {0x1e00,0x1e94,2,1}, {0x1ea0,0x1ef8,2,1}, {0x1f08,0x1f0f,1,-8},
+! {0x1f18,0x1f1d,1,-8}, {0x1f28,0x1f2f,1,-8}, {0x1f38,0x1f3f,1,-8},
+! {0x1f48,0x1f4d,1,-8}, {0x1f59,0x1f5f,2,-8}, {0x1f68,0x1f6f,1,-8},
+! {0x1fb8,0x1fb9,1,-8}, {0x1fba,0x1fbb,1,-74}, {0x1fc8,0x1fcb,1,-86},
+! {0x1fd8,0x1fd9,1,-8}, {0x1fda,0x1fdb,1,-100}, {0x1fe8,0x1fe9,1,-8},
+! {0x1fea,0x1feb,1,-112}, {0x1fec,0x1fec,-1,-7}, {0x1ff8,0x1ff9,1,-128},
+! {0x1ffa,0x1ffb,1,-126}, {0x2126,0x2126,-1,-7517}, {0x212a,0x212a,-1,-8383},
+! {0x212b,0x212b,-1,-8262}, {0xff21,0xff3a,1,32}, {0x10400,0x10427,1,40}
+ };
+
+ static convertStruct toUpper[] =
+ {
+! {0x61,0x7a,1,-32}, {0xb5,0xb5,-1,743}, {0xe0,0xf6,1,-32},
+! {0xf8,0xfe,1,-32}, {0xff,0xff,-1,121}, {0x101,0x12f,2,-1},
+! {0x131,0x131,-1,-232}, {0x133,0x137,2,-1}, {0x13a,0x148,2,-1},
+! {0x14b,0x177,2,-1}, {0x17a,0x17e,2,-1}, {0x17f,0x17f,-1,-300},
+! {0x183,0x185,2,-1}, {0x188,0x18c,4,-1}, {0x192,0x192,-1,-1},
+! {0x195,0x195,-1,97}, {0x199,0x199,-1,-1}, {0x19e,0x19e,-1,130},
+! {0x1a1,0x1a5,2,-1}, {0x1a8,0x1ad,5,-1}, {0x1b0,0x1b4,4,-1},
+! {0x1b6,0x1b9,3,-1}, {0x1bd,0x1bd,-1,-1}, {0x1bf,0x1bf,-1,56},
+! {0x1c5,0x1c6,1,-1}, {0x1c8,0x1c9,1,-1}, {0x1cb,0x1cc,1,-1},
+! {0x1ce,0x1dc,2,-1}, {0x1dd,0x1dd,-1,-79}, {0x1df,0x1ef,2,-1},
+! {0x1f2,0x1f3,1,-1}, {0x1f5,0x1f9,4,-1}, {0x1fb,0x21f,2,-1},
+! {0x223,0x233,2,-1}, {0x253,0x253,-1,-210}, {0x254,0x254,-1,-206},
+! {0x256,0x257,1,-205}, {0x259,0x259,-1,-202}, {0x25b,0x25b,-1,-203},
+! {0x260,0x260,-1,-205}, {0x263,0x263,-1,-207}, {0x268,0x268,-1,-209},
+! {0x269,0x26f,6,-211}, {0x272,0x272,-1,-213}, {0x275,0x275,-1,-214},
+! {0x280,0x283,3,-218}, {0x288,0x288,-1,-218}, {0x28a,0x28b,1,-217},
+! {0x292,0x292,-1,-219}, {0x3ac,0x3ac,-1,-38}, {0x3ad,0x3af,1,-37},
+! {0x3b1,0x3c1,1,-32}, {0x3c2,0x3c2,-1,-31}, {0x3c3,0x3cb,1,-32},
+! {0x3cc,0x3cc,-1,-64}, {0x3cd,0x3ce,1,-63}, {0x3d0,0x3d0,-1,-62},
+! {0x3d1,0x3d1,-1,-57}, {0x3d5,0x3d5,-1,-47}, {0x3d6,0x3d6,-1,-54},
+! {0x3d9,0x3ef,2,-1}, {0x3f0,0x3f0,-1,-86}, {0x3f1,0x3f1,-1,-80},
+! {0x3f2,0x3f2,-1,7}, {0x3f5,0x3f5,-1,-96}, {0x3f8,0x3fb,3,-1},
+! {0x430,0x44f,1,-32}, {0x450,0x45f,1,-80}, {0x461,0x481,2,-1},
+! {0x48b,0x4bf,2,-1}, {0x4c2,0x4ce,2,-1}, {0x4d1,0x4f5,2,-1},
+! {0x4f9,0x501,8,-1}, {0x503,0x50f,2,-1}, {0x561,0x586,1,-48},
+! {0x1e01,0x1e95,2,-1}, {0x1e9b,0x1e9b,-1,-59}, {0x1ea1,0x1ef9,2,-1},
+! {0x1f00,0x1f07,1,8}, {0x1f10,0x1f15,1,8}, {0x1f20,0x1f27,1,8},
+! {0x1f30,0x1f37,1,8}, {0x1f40,0x1f45,1,8}, {0x1f51,0x1f57,2,8},
+! {0x1f60,0x1f67,1,8}, {0x1f70,0x1f71,1,74}, {0x1f72,0x1f75,1,86},
+! {0x1f76,0x1f77,1,100}, {0x1f78,0x1f79,1,128}, {0x1f7a,0x1f7b,1,112},
+! {0x1f7c,0x1f7d,1,126}, {0x1f80,0x1f87,1,8}, {0x1f90,0x1f97,1,8},
+! {0x1fa0,0x1fa7,1,8}, {0x1fb0,0x1fb1,1,8}, {0x1fb3,0x1fb3,-1,9},
+! {0x1fbe,0x1fbe,-1,-7205}, {0x1fc3,0x1fc3,-1,9}, {0x1fd0,0x1fd1,1,8},
+! {0x1fe0,0x1fe1,1,8}, {0x1fe5,0x1fe5,-1,7}, {0x1ff3,0x1ff3,-1,9},
+! {0xff41,0xff5a,1,-32}, {0x10428,0x1044f,1,-40}
+ };
+
+ /*
+--- 2663,2968 ----
+ return utf_convert(a, foldCase, sizeof(foldCase));
+ }
+
+ static convertStruct toLower[] =
+ {
+! {0x41,0x5a,1,32},
+! {0xc0,0xd6,1,32},
+! {0xd8,0xde,1,32},
+! {0x100,0x12e,2,1},
+! {0x130,0x130,-1,-199},
+! {0x132,0x136,2,1},
+! {0x139,0x147,2,1},
+! {0x14a,0x176,2,1},
+! {0x178,0x178,-1,-121},
+! {0x179,0x17d,2,1},
+! {0x181,0x181,-1,210},
+! {0x182,0x184,2,1},
+! {0x186,0x186,-1,206},
+! {0x187,0x187,-1,1},
+! {0x189,0x18a,1,205},
+! {0x18b,0x18b,-1,1},
+! {0x18e,0x18e,-1,79},
+! {0x18f,0x18f,-1,202},
+! {0x190,0x190,-1,203},
+! {0x191,0x191,-1,1},
+! {0x193,0x193,-1,205},
+! {0x194,0x194,-1,207},
+! {0x196,0x196,-1,211},
+! {0x197,0x197,-1,209},
+! {0x198,0x198,-1,1},
+! {0x19c,0x19c,-1,211},
+! {0x19d,0x19d,-1,213},
+! {0x19f,0x19f,-1,214},
+! {0x1a0,0x1a4,2,1},
+! {0x1a6,0x1a6,-1,218},
+! {0x1a7,0x1a7,-1,1},
+! {0x1a9,0x1a9,-1,218},
+! {0x1ac,0x1ac,-1,1},
+! {0x1ae,0x1ae,-1,218},
+! {0x1af,0x1af,-1,1},
+! {0x1b1,0x1b2,1,217},
+! {0x1b3,0x1b5,2,1},
+! {0x1b7,0x1b7,-1,219},
+! {0x1b8,0x1bc,4,1},
+! {0x1c4,0x1c4,-1,2},
+! {0x1c5,0x1c5,-1,1},
+! {0x1c7,0x1c7,-1,2},
+! {0x1c8,0x1c8,-1,1},
+! {0x1ca,0x1ca,-1,2},
+! {0x1cb,0x1db,2,1},
+! {0x1de,0x1ee,2,1},
+! {0x1f1,0x1f1,-1,2},
+! {0x1f2,0x1f4,2,1},
+! {0x1f6,0x1f6,-1,-97},
+! {0x1f7,0x1f7,-1,-56},
+! {0x1f8,0x21e,2,1},
+! {0x220,0x220,-1,-130},
+! {0x222,0x232,2,1},
+! {0x23a,0x23a,-1,10795},
+! {0x23b,0x23b,-1,1},
+! {0x23d,0x23d,-1,-163},
+! {0x23e,0x23e,-1,10792},
+! {0x241,0x241,-1,1},
+! {0x243,0x243,-1,-195},
+! {0x244,0x244,-1,69},
+! {0x245,0x245,-1,71},
+! {0x246,0x24e,2,1},
+! {0x370,0x372,2,1},
+! {0x376,0x376,-1,1},
+! {0x386,0x386,-1,38},
+! {0x388,0x38a,1,37},
+! {0x38c,0x38c,-1,64},
+! {0x38e,0x38f,1,63},
+! {0x391,0x3a1,1,32},
+! {0x3a3,0x3ab,1,32},
+! {0x3cf,0x3cf,-1,8},
+! {0x3d8,0x3ee,2,1},
+! {0x3f4,0x3f4,-1,-60},
+! {0x3f7,0x3f7,-1,1},
+! {0x3f9,0x3f9,-1,-7},
+! {0x3fa,0x3fa,-1,1},
+! {0x3fd,0x3ff,1,-130},
+! {0x400,0x40f,1,80},
+! {0x410,0x42f,1,32},
+! {0x460,0x480,2,1},
+! {0x48a,0x4be,2,1},
+! {0x4c0,0x4c0,-1,15},
+! {0x4c1,0x4cd,2,1},
+! {0x4d0,0x524,2,1},
+! {0x531,0x556,1,48},
+! {0x10a0,0x10c5,1,7264},
+! {0x1e00,0x1e94,2,1},
+! {0x1e9e,0x1e9e,-1,-7615},
+! {0x1ea0,0x1efe,2,1},
+! {0x1f08,0x1f0f,1,-8},
+! {0x1f18,0x1f1d,1,-8},
+! {0x1f28,0x1f2f,1,-8},
+! {0x1f38,0x1f3f,1,-8},
+! {0x1f48,0x1f4d,1,-8},
+! {0x1f59,0x1f5f,2,-8},
+! {0x1f68,0x1f6f,1,-8},
+! {0x1f88,0x1f8f,1,-8},
+! {0x1f98,0x1f9f,1,-8},
+! {0x1fa8,0x1faf,1,-8},
+! {0x1fb8,0x1fb9,1,-8},
+! {0x1fba,0x1fbb,1,-74},
+! {0x1fbc,0x1fbc,-1,-9},
+! {0x1fc8,0x1fcb,1,-86},
+! {0x1fcc,0x1fcc,-1,-9},
+! {0x1fd8,0x1fd9,1,-8},
+! {0x1fda,0x1fdb,1,-100},
+! {0x1fe8,0x1fe9,1,-8},
+! {0x1fea,0x1feb,1,-112},
+! {0x1fec,0x1fec,-1,-7},
+! {0x1ff8,0x1ff9,1,-128},
+! {0x1ffa,0x1ffb,1,-126},
+! {0x1ffc,0x1ffc,-1,-9},
+! {0x2126,0x2126,-1,-7517},
+! {0x212a,0x212a,-1,-8383},
+! {0x212b,0x212b,-1,-8262},
+! {0x2132,0x2132,-1,28},
+! {0x2160,0x216f,1,16},
+! {0x2183,0x2183,-1,1},
+! {0x24b6,0x24cf,1,26},
+! {0x2c00,0x2c2e,1,48},
+! {0x2c60,0x2c60,-1,1},
+! {0x2c62,0x2c62,-1,-10743},
+! {0x2c63,0x2c63,-1,-3814},
+! {0x2c64,0x2c64,-1,-10727},
+! {0x2c67,0x2c6b,2,1},
+! {0x2c6d,0x2c6d,-1,-10780},
+! {0x2c6e,0x2c6e,-1,-10749},
+! {0x2c6f,0x2c6f,-1,-10783},
+! {0x2c70,0x2c70,-1,-10782},
+! {0x2c72,0x2c75,3,1},
+! {0x2c7e,0x2c7f,1,-10815},
+! {0x2c80,0x2ce2,2,1},
+! {0x2ceb,0x2ced,2,1},
+! {0xa640,0xa65e,2,1},
+! {0xa662,0xa66c,2,1},
+! {0xa680,0xa696,2,1},
+! {0xa722,0xa72e,2,1},
+! {0xa732,0xa76e,2,1},
+! {0xa779,0xa77b,2,1},
+! {0xa77d,0xa77d,-1,-35332},
+! {0xa77e,0xa786,2,1},
+! {0xa78b,0xa78b,-1,1},
+! {0xff21,0xff3a,1,32},
+! {0x10400,0x10427,1,40}
+ };
+
+ static convertStruct toUpper[] =
+ {
+! {0x61,0x7a,1,-32},
+! {0xb5,0xb5,-1,743},
+! {0xe0,0xf6,1,-32},
+! {0xf8,0xfe,1,-32},
+! {0xff,0xff,-1,121},
+! {0x101,0x12f,2,-1},
+! {0x131,0x131,-1,-232},
+! {0x133,0x137,2,-1},
+! {0x13a,0x148,2,-1},
+! {0x14b,0x177,2,-1},
+! {0x17a,0x17e,2,-1},
+! {0x17f,0x17f,-1,-300},
+! {0x180,0x180,-1,195},
+! {0x183,0x185,2,-1},
+! {0x188,0x18c,4,-1},
+! {0x192,0x192,-1,-1},
+! {0x195,0x195,-1,97},
+! {0x199,0x199,-1,-1},
+! {0x19a,0x19a,-1,163},
+! {0x19e,0x19e,-1,130},
+! {0x1a1,0x1a5,2,-1},
+! {0x1a8,0x1ad,5,-1},
+! {0x1b0,0x1b4,4,-1},
+! {0x1b6,0x1b9,3,-1},
+! {0x1bd,0x1bd,-1,-1},
+! {0x1bf,0x1bf,-1,56},
+! {0x1c5,0x1c5,-1,-1},
+! {0x1c6,0x1c6,-1,-2},
+! {0x1c8,0x1c8,-1,-1},
+! {0x1c9,0x1c9,-1,-2},
+! {0x1cb,0x1cb,-1,-1},
+! {0x1cc,0x1cc,-1,-2},
+! {0x1ce,0x1dc,2,-1},
+! {0x1dd,0x1dd,-1,-79},
+! {0x1df,0x1ef,2,-1},
+! {0x1f2,0x1f2,-1,-1},
+! {0x1f3,0x1f3,-1,-2},
+! {0x1f5,0x1f9,4,-1},
+! {0x1fb,0x21f,2,-1},
+! {0x223,0x233,2,-1},
+! {0x23c,0x23c,-1,-1},
+! {0x23f,0x240,1,10815},
+! {0x242,0x247,5,-1},
+! {0x249,0x24f,2,-1},
+! {0x250,0x250,-1,10783},
+! {0x251,0x251,-1,10780},
+! {0x252,0x252,-1,10782},
+! {0x253,0x253,-1,-210},
+! {0x254,0x254,-1,-206},
+! {0x256,0x257,1,-205},
+! {0x259,0x259,-1,-202},
+! {0x25b,0x25b,-1,-203},
+! {0x260,0x260,-1,-205},
+! {0x263,0x263,-1,-207},
+! {0x268,0x268,-1,-209},
+! {0x269,0x269,-1,-211},
+! {0x26b,0x26b,-1,10743},
+! {0x26f,0x26f,-1,-211},
+! {0x271,0x271,-1,10749},
+! {0x272,0x272,-1,-213},
+! {0x275,0x275,-1,-214},
+! {0x27d,0x27d,-1,10727},
+! {0x280,0x283,3,-218},
+! {0x288,0x288,-1,-218},
+! {0x289,0x289,-1,-69},
+! {0x28a,0x28b,1,-217},
+! {0x28c,0x28c,-1,-71},
+! {0x292,0x292,-1,-219},
+! {0x345,0x345,-1,84},
+! {0x371,0x373,2,-1},
+! {0x377,0x377,-1,-1},
+! {0x37b,0x37d,1,130},
+! {0x3ac,0x3ac,-1,-38},
+! {0x3ad,0x3af,1,-37},
+! {0x3b1,0x3c1,1,-32},
+! {0x3c2,0x3c2,-1,-31},
+! {0x3c3,0x3cb,1,-32},
+! {0x3cc,0x3cc,-1,-64},
+! {0x3cd,0x3ce,1,-63},
+! {0x3d0,0x3d0,-1,-62},
+! {0x3d1,0x3d1,-1,-57},
+! {0x3d5,0x3d5,-1,-47},
+! {0x3d6,0x3d6,-1,-54},
+! {0x3d7,0x3d7,-1,-8},
+! {0x3d9,0x3ef,2,-1},
+! {0x3f0,0x3f0,-1,-86},
+! {0x3f1,0x3f1,-1,-80},
+! {0x3f2,0x3f2,-1,7},
+! {0x3f5,0x3f5,-1,-96},
+! {0x3f8,0x3fb,3,-1},
+! {0x430,0x44f,1,-32},
+! {0x450,0x45f,1,-80},
+! {0x461,0x481,2,-1},
+! {0x48b,0x4bf,2,-1},
+! {0x4c2,0x4ce,2,-1},
+! {0x4cf,0x4cf,-1,-15},
+! {0x4d1,0x525,2,-1},
+! {0x561,0x586,1,-48},
+! {0x1d79,0x1d79,-1,35332},
+! {0x1d7d,0x1d7d,-1,3814},
+! {0x1e01,0x1e95,2,-1},
+! {0x1e9b,0x1e9b,-1,-59},
+! {0x1ea1,0x1eff,2,-1},
+! {0x1f00,0x1f07,1,8},
+! {0x1f10,0x1f15,1,8},
+! {0x1f20,0x1f27,1,8},
+! {0x1f30,0x1f37,1,8},
+! {0x1f40,0x1f45,1,8},
+! {0x1f51,0x1f57,2,8},
+! {0x1f60,0x1f67,1,8},
+! {0x1f70,0x1f71,1,74},
+! {0x1f72,0x1f75,1,86},
+! {0x1f76,0x1f77,1,100},
+! {0x1f78,0x1f79,1,128},
+! {0x1f7a,0x1f7b,1,112},
+! {0x1f7c,0x1f7d,1,126},
+! {0x1f80,0x1f87,1,8},
+! {0x1f90,0x1f97,1,8},
+! {0x1fa0,0x1fa7,1,8},
+! {0x1fb0,0x1fb1,1,8},
+! {0x1fb3,0x1fb3,-1,9},
+! {0x1fbe,0x1fbe,-1,-7205},
+! {0x1fc3,0x1fc3,-1,9},
+! {0x1fd0,0x1fd1,1,8},
+! {0x1fe0,0x1fe1,1,8},
+! {0x1fe5,0x1fe5,-1,7},
+! {0x1ff3,0x1ff3,-1,9},
+! {0x214e,0x214e,-1,-28},
+! {0x2170,0x217f,1,-16},
+! {0x2184,0x2184,-1,-1},
+! {0x24d0,0x24e9,1,-26},
+! {0x2c30,0x2c5e,1,-48},
+! {0x2c61,0x2c61,-1,-1},
+! {0x2c65,0x2c65,-1,-10795},
+! {0x2c66,0x2c66,-1,-10792},
+! {0x2c68,0x2c6c,2,-1},
+! {0x2c73,0x2c76,3,-1},
+! {0x2c81,0x2ce3,2,-1},
+! {0x2cec,0x2cee,2,-1},
+! {0x2d00,0x2d25,1,-7264},
+! {0xa641,0xa65f,2,-1},
+! {0xa663,0xa66d,2,-1},
+! {0xa681,0xa697,2,-1},
+! {0xa723,0xa72f,2,-1},
+! {0xa733,0xa76f,2,-1},
+! {0xa77a,0xa77c,2,-1},
+! {0xa77f,0xa787,2,-1},
+! {0xa78c,0xa78c,-1,-1},
+! {0xff41,0xff5a,1,-32},
+! {0x10428,0x1044f,1,-40}
+ };
+
+ /*
+*** ../vim-7.2.329/src/version.c 2010-01-12 15:42:03.000000000 +0100
+--- src/version.c 2010-01-12 18:16:55.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 330,
+ /**/
+
+--
+From "know your smileys":
+ <|-) Chinese
+ <|-( Chinese and doesn't like these kind of jokes
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.331 b/vim/vim-7.2/7.2.331
new file mode 100644
index 0000000..82f40a2
--- /dev/null
+++ b/vim/vim-7.2/7.2.331
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.331
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.331
+Problem: Can't interrupt "echo list" for a very long list.
+Solution: Call line_breakcheck() in list_join().
+Files: src/eval.c
+
+
+*** ../vim-7.2.330/src/eval.c 2010-01-12 12:48:40.000000000 +0100
+--- src/eval.c 2010-01-12 15:59:28.000000000 +0100
+***************
+*** 6475,6480 ****
+--- 6475,6481 ----
+ vim_free(tofree);
+ if (s == NULL)
+ return FAIL;
++ line_breakcheck();
+ }
+ return OK;
+ }
+*** ../vim-7.2.330/src/version.c 2010-01-12 19:48:57.000000000 +0100
+--- src/version.c 2010-01-19 12:44:02.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 331,
+ /**/
+
+
+--
+hundred-and-one symptoms of being an internet addict:
+116. You are living with your boyfriend who networks your respective
+ computers so you can sit in separate rooms and email each other
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.332 b/vim/vim-7.2/7.2.332
new file mode 100644
index 0000000..7956d1e
--- /dev/null
+++ b/vim/vim-7.2/7.2.332
@@ -0,0 +1,101 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.332
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.332
+Problem: Crash when spell correcting triggers an autocommand that reloads
+ the buffer.
+Solution: Make a copy of the line to be modified. (Dominique Pelle)
+Files: src/spell.c
+
+
+*** ../vim-7.2.331/src/spell.c 2009-07-22 11:03:38.000000000 +0200
+--- src/spell.c 2010-01-19 12:44:42.000000000 +0100
+***************
+*** 10306,10312 ****
+ /* Figure out if the word should be capitalised. */
+ need_cap = check_need_cap(curwin->w_cursor.lnum, curwin->w_cursor.col);
+
+! line = ml_get_curline();
+
+ /* Get the list of suggestions. Limit to 'lines' - 2 or the number in
+ * 'spellsuggest', whatever is smaller. */
+--- 10306,10315 ----
+ /* Figure out if the word should be capitalised. */
+ need_cap = check_need_cap(curwin->w_cursor.lnum, curwin->w_cursor.col);
+
+! /* Make a copy of current line since autocommands may free the line. */
+! line = vim_strsave(ml_get_curline());
+! if (line == NULL)
+! goto skip;
+
+ /* Get the list of suggestions. Limit to 'lines' - 2 or the number in
+ * 'spellsuggest', whatever is smaller. */
+***************
+*** 10470,10475 ****
+--- 10473,10480 ----
+ curwin->w_cursor = prev_cursor;
+
+ spell_find_cleanup(&sug);
++ skip:
++ vim_free(line);
+ }
+
+ /*
+***************
+*** 10931,10937 ****
+ rescore_suggestions(su);
+
+ /*
+! * While going throught the soundfold tree "su_maxscore" is the score
+ * for the soundfold word, limits the changes that are being tried,
+ * and "su_sfmaxscore" the rescored score, which is set by
+ * cleanup_suggestions().
+--- 10936,10942 ----
+ rescore_suggestions(su);
+
+ /*
+! * While going through the soundfold tree "su_maxscore" is the score
+ * for the soundfold word, limits the changes that are being tried,
+ * and "su_sfmaxscore" the rescored score, which is set by
+ * cleanup_suggestions().
+***************
+*** 11415,11421 ****
+ char_u tword[MAXWLEN]; /* good word collected so far */
+ trystate_T stack[MAXWLEN];
+ char_u preword[MAXWLEN * 3]; /* word found with proper case;
+! * concatanation of prefix compound
+ * words and split word. NUL terminated
+ * when going deeper but not when coming
+ * back. */
+--- 11420,11426 ----
+ char_u tword[MAXWLEN]; /* good word collected so far */
+ trystate_T stack[MAXWLEN];
+ char_u preword[MAXWLEN * 3]; /* word found with proper case;
+! * concatenation of prefix compound
+ * words and split word. NUL terminated
+ * when going deeper but not when coming
+ * back. */
+*** ../vim-7.2.331/src/version.c 2010-01-19 12:46:51.000000000 +0100
+--- src/version.c 2010-01-19 13:05:32.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 332,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+117. You are more comfortable typing in html.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.333 b/vim/vim-7.2/7.2.333
new file mode 100644
index 0000000..02273b6
--- /dev/null
+++ b/vim/vim-7.2/7.2.333
@@ -0,0 +1,371 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.333
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.333
+Problem: Warnings from static code analysis.
+Solution: Small changes to various lines. (Dominique Pelle)
+Files: src/buffer.c, src/edit.c, src/ex_getln.c, src/fileio.c,
+ src/if_cscope.c, src/netbeans.c, src/ops.c, src/quickfix.c,
+ src/syntax.c, src/ui.c
+
+
+*** ../vim-7.2.332/src/buffer.c 2009-05-17 13:30:58.000000000 +0200
+--- src/buffer.c 2010-01-19 12:50:24.000000000 +0100
+***************
+*** 315,321 ****
+ {
+ #ifdef FEAT_AUTOCMD
+ int is_curbuf;
+! int nwindows = buf->b_nwindows;
+ #endif
+ int unload_buf = (action != 0);
+ int del_buf = (action == DOBUF_DEL || action == DOBUF_WIPE);
+--- 315,321 ----
+ {
+ #ifdef FEAT_AUTOCMD
+ int is_curbuf;
+! int nwindows;
+ #endif
+ int unload_buf = (action != 0);
+ int del_buf = (action == DOBUF_DEL || action == DOBUF_WIPE);
+*** ../vim-7.2.332/src/edit.c 2009-12-24 15:45:53.000000000 +0100
+--- src/edit.c 2010-01-19 12:53:18.000000000 +0100
+***************
+*** 4048,4054 ****
+ save_p_ic = p_ic;
+ p_ic = ignorecase(compl_pattern);
+
+! /* Find up to TAG_MANY matches. Avoids that an enourmous number
+ * of matches is found when compl_pattern is empty */
+ if (find_tags(compl_pattern, &num_matches, &matches,
+ TAG_REGEXP | TAG_NAMES | TAG_NOIC |
+--- 4048,4054 ----
+ save_p_ic = p_ic;
+ p_ic = ignorecase(compl_pattern);
+
+! /* Find up to TAG_MANY matches. Avoids that an enormous number
+ * of matches is found when compl_pattern is empty */
+ if (find_tags(compl_pattern, &num_matches, &matches,
+ TAG_REGEXP | TAG_NAMES | TAG_NOIC |
+***************
+*** 4219,4225 ****
+ || IObuff[len - 2] == '!'))))
+ IObuff[len++] = ' ';
+ }
+! /* copy as much as posible of the new word */
+ if (tmp_ptr - ptr >= IOSIZE - len)
+ tmp_ptr = ptr + IOSIZE - len - 1;
+ STRNCPY(IObuff + len, ptr, tmp_ptr - ptr);
+--- 4219,4225 ----
+ || IObuff[len - 2] == '!'))))
+ IObuff[len++] = ' ';
+ }
+! /* copy as much as possible of the new word */
+ if (tmp_ptr - ptr >= IOSIZE - len)
+ tmp_ptr = ptr + IOSIZE - len - 1;
+ STRNCPY(IObuff + len, ptr, tmp_ptr - ptr);
+***************
+*** 5827,5836 ****
+ #endif
+ && !has_format_option(FO_WRAP))
+
+- {
+- textwidth = 0;
+ break;
+- }
+ if ((startcol = curwin->w_cursor.col) == 0)
+ break;
+
+--- 5827,5833 ----
+*** ../vim-7.2.332/src/ex_getln.c 2009-12-02 17:15:04.000000000 +0100
+--- src/ex_getln.c 2010-01-19 12:54:47.000000000 +0100
+***************
+*** 2193,2199 ****
+ {
+ if (ga_grow(&line_ga, 40) == FAIL)
+ break;
+- pend = (char_u *)line_ga.ga_data + line_ga.ga_len;
+
+ /* Get one character at a time. Don't use inchar(), it can't handle
+ * special characters. */
+--- 2193,2198 ----
+***************
+*** 3314,3320 ****
+ WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
+ |options, type);
+ vim_free(p1);
+! /* longest match: make sure it is not shorter (happens with :help */
+ if (p2 != NULL && type == WILD_LONGEST)
+ {
+ for (j = 0; j < xp->xp_pattern_len; ++j)
+--- 3313,3319 ----
+ WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
+ |options, type);
+ vim_free(p1);
+! /* longest match: make sure it is not shorter, happens with :help */
+ if (p2 != NULL && type == WILD_LONGEST)
+ {
+ for (j = 0; j < xp->xp_pattern_len; ++j)
+*** ../vim-7.2.332/src/fileio.c 2009-12-31 14:52:48.000000000 +0100
+--- src/fileio.c 2010-01-19 12:56:59.000000000 +0100
+***************
+*** 7072,7079 ****
+ */
+ for (i = 0; i < (int)(sizeof(tempdirs) / sizeof(char *)); ++i)
+ {
+- size_t itmplen;
+ # ifndef HAVE_MKDTEMP
+ long nr;
+ long off;
+ # endif
+--- 7072,7079 ----
+ */
+ for (i = 0; i < (int)(sizeof(tempdirs) / sizeof(char *)); ++i)
+ {
+ # ifndef HAVE_MKDTEMP
++ size_t itmplen;
+ long nr;
+ long off;
+ # endif
+***************
+*** 7091,7097 ****
+ else
+ # endif
+ add_pathsep(itmp);
+- itmplen = STRLEN(itmp);
+
+ # ifdef HAVE_MKDTEMP
+ /* Leave room for filename */
+--- 7091,7096 ----
+***************
+*** 7104,7109 ****
+--- 7103,7109 ----
+ * otherwise it doesn't matter. The use of mkdir() avoids any
+ * security problems because of the predictable number. */
+ nr = (mch_get_pid() + (long)time(NULL)) % 1000000L;
++ itmplen = STRLEN(itmp);
+
+ /* Try up to 10000 different values until we find a name that
+ * doesn't exist. */
+*** ../vim-7.2.332/src/if_cscope.c 2009-07-09 21:22:36.000000000 +0200
+--- src/if_cscope.c 2010-01-19 12:57:58.000000000 +0100
+***************
+*** 2069,2075 ****
+ continue;
+ (void)strcpy(tbuf, matches[idx]);
+
+! if ((fname = strtok(tbuf, (const char *)"\t")) == NULL)
+ continue;
+ if ((fname = strtok(NULL, (const char *)"\t")) == NULL)
+ continue;
+--- 2069,2075 ----
+ continue;
+ (void)strcpy(tbuf, matches[idx]);
+
+! if (strtok(tbuf, (const char *)"\t") == NULL)
+ continue;
+ if ((fname = strtok(NULL, (const char *)"\t")) == NULL)
+ continue;
+*** ../vim-7.2.332/src/netbeans.c 2009-09-11 14:19:41.000000000 +0200
+--- src/netbeans.c 2010-01-19 13:57:11.000000000 +0100
+***************
+*** 873,879 ****
+ {
+ #ifdef NBDEBUG
+ /*
+! * This happens because the ExtEd can send a cammand or 2 after
+ * doing a stopDocumentListen command. It doesn't harm anything
+ * so I'm disabling it except for debugging.
+ */
+--- 883,889 ----
+ {
+ #ifdef NBDEBUG
+ /*
+! * This happens because the ExtEd can send a command or 2 after
+ * doing a stopDocumentListen command. It doesn't harm anything
+ * so I'm disabling it except for debugging.
+ */
+***************
+*** 1174,1180 ****
+ break;
+ }
+ }
+! *q++ = '\0';
+
+ return buf;
+ }
+--- 1184,1190 ----
+ break;
+ }
+ }
+! *q = '\0';
+
+ return buf;
+ }
+***************
+*** 3070,3076 ****
+ }
+
+ /*
+! * Send netbeans an unmodufied command.
+ */
+ void
+ netbeans_unmodified(buf_T *bufp UNUSED)
+--- 3080,3086 ----
+ }
+
+ /*
+! * Send netbeans an unmodified command.
+ */
+ void
+ netbeans_unmodified(buf_T *bufp UNUSED)
+***************
+*** 3366,3372 ****
+
+
+ /*
+! * Add a sign of the reqested type at the requested location.
+ *
+ * Reverse engineering:
+ * Apparently an annotation is defined the first time it is used in a buffer.
+--- 3380,3386 ----
+
+
+ /*
+! * Add a sign of the requested type at the requested location.
+ *
+ * Reverse engineering:
+ * Apparently an annotation is defined the first time it is used in a buffer.
+*** ../vim-7.2.332/src/ops.c 2009-11-25 12:38:49.000000000 +0100
+--- src/ops.c 2010-01-19 13:04:46.000000000 +0100
+***************
+*** 5591,5603 ****
+ */
+ if (has_mbyte)
+ {
+- char_u *conv_str = str;
+ vimconv_T vc;
+
+ vc.vc_type = CONV_NONE;
+ if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK)
+ {
+! int intlen = len;
+
+ conv_str = string_convert(&vc, str, &intlen);
+ len = intlen;
+--- 5598,5610 ----
+ */
+ if (has_mbyte)
+ {
+ vimconv_T vc;
+
+ vc.vc_type = CONV_NONE;
+ if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK)
+ {
+! int intlen = len;
+! char_u *conv_str;
+
+ conv_str = string_convert(&vc, str, &intlen);
+ len = intlen;
+*** ../vim-7.2.332/src/quickfix.c 2009-06-24 17:31:27.000000000 +0200
+--- src/quickfix.c 2010-01-19 13:12:29.000000000 +0100
+***************
+*** 1899,1905 ****
+ int i;
+ int idx1 = 1;
+ int idx2 = -1;
+- int need_return = TRUE;
+ char_u *arg = eap->arg;
+ int all = eap->forceit; /* if not :cl!, only show
+ recognised errors */
+--- 1899,1904 ----
+***************
+*** 1939,1951 ****
+ {
+ if ((qfp->qf_valid || all) && idx1 <= i && i <= idx2)
+ {
+! if (need_return)
+! {
+! msg_putchar('\n');
+! if (got_int)
+! break;
+! need_return = FALSE;
+! }
+
+ fname = NULL;
+ if (qfp->qf_fnum != 0
+--- 1938,1946 ----
+ {
+ if ((qfp->qf_valid || all) && idx1 <= i && i <= idx2)
+ {
+! msg_putchar('\n');
+! if (got_int)
+! break;
+
+ fname = NULL;
+ if (qfp->qf_fnum != 0
+***************
+*** 1988,1994 ****
+ IObuff, IOSIZE);
+ msg_prt_line(IObuff, FALSE);
+ out_flush(); /* show one line at a time */
+- need_return = TRUE;
+ }
+
+ qfp = qfp->qf_next;
+--- 1983,1988 ----
+*** ../vim-7.2.332/src/syntax.c 2009-12-16 18:13:04.000000000 +0100
+--- src/syntax.c 2010-01-19 13:12:56.000000000 +0100
+***************
+*** 4167,4173 ****
+ if (!HASHITEM_EMPTY(hi))
+ {
+ --todo;
+- kp = HI2KE(hi);
+ for (kp = HI2KE(hi); kp != NULL; kp = kp_next)
+ {
+ kp_next = kp->ke_next;
+--- 4167,4172 ----
+*** ../vim-7.2.332/src/ui.c 2009-09-11 16:48:06.000000000 +0200
+--- src/ui.c 2010-01-19 13:14:04.000000000 +0100
+***************
+*** 2383,2389 ****
+ * 'enc' anyway. */
+ if (has_mbyte)
+ {
+! char_u *conv_buf = buffer;
+ vimconv_T vc;
+
+ vc.vc_type = CONV_NONE;
+--- 2383,2389 ----
+ * 'enc' anyway. */
+ if (has_mbyte)
+ {
+! char_u *conv_buf;
+ vimconv_T vc;
+
+ vc.vc_type = CONV_NONE;
+*** ../vim-7.2.332/src/version.c 2010-01-19 13:06:42.000000000 +0100
+--- src/version.c 2010-01-19 14:55:50.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 333,
+ /**/
+
+--
+An actual excerpt from a classified section of a city newspaper:
+"Illiterate? Write today for free help!"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.334 b/vim/vim-7.2/7.2.334
new file mode 100644
index 0000000..1b88bbd
--- /dev/null
+++ b/vim/vim-7.2/7.2.334
@@ -0,0 +1,347 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.334
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.334
+Problem: Postponing keys in Netbeans interface does not work properly.
+Solution: Store the key string instead of the number. Avoid an infinite
+ loop. (Mostly by Xavier de Gaye)
+Files: src/netbeans.c, src/proto/netbeans.pro
+
+
+*** ../vim-7.2.333/src/netbeans.c 2010-01-19 14:59:14.000000000 +0100
+--- src/netbeans.c 2010-01-19 15:12:17.000000000 +0100
+***************
+*** 70,76 ****
+ static pos_T *off2pos __ARGS((buf_T *, long));
+ static pos_T *get_off_or_lnum __ARGS((buf_T *buf, char_u **argp));
+ static long get_buf_size __ARGS((buf_T *));
+! static void netbeans_keystring __ARGS((int key, char *keystr));
+ static void special_keys __ARGS((char_u *args));
+
+ static void netbeans_connect __ARGS((void));
+--- 70,77 ----
+ static pos_T *off2pos __ARGS((buf_T *, long));
+ static pos_T *get_off_or_lnum __ARGS((buf_T *buf, char_u **argp));
+ static long get_buf_size __ARGS((buf_T *));
+! static int netbeans_keystring __ARGS((char_u *keystr));
+! static void postpone_keycommand __ARGS((char_u *keystr));
+ static void special_keys __ARGS((char_u *args));
+
+ static void netbeans_connect __ARGS((void));
+***************
+*** 502,508 ****
+
+ struct keyqueue
+ {
+! int key;
+ struct keyqueue *next;
+ struct keyqueue *prev;
+ };
+--- 503,509 ----
+
+ struct keyqueue
+ {
+! char_u *keystr;
+ struct keyqueue *next;
+ struct keyqueue *prev;
+ };
+***************
+*** 514,526 ****
+
+ /*
+ * Queue up key commands sent from netbeans.
+ */
+ static void
+! postpone_keycommand(int key)
+ {
+ keyQ_T *node;
+
+ node = (keyQ_T *)alloc(sizeof(keyQ_T));
+
+ if (keyHead.next == NULL) /* initialize circular queue */
+ {
+--- 515,531 ----
+
+ /*
+ * Queue up key commands sent from netbeans.
++ * We store the string, because it may depend on the global mod_mask and
++ * :nbkey doesn't have a key number.
+ */
+ static void
+! postpone_keycommand(char_u *keystr)
+ {
+ keyQ_T *node;
+
+ node = (keyQ_T *)alloc(sizeof(keyQ_T));
++ if (node == NULL)
++ return; /* out of memory, drop the key */
+
+ if (keyHead.next == NULL) /* initialize circular queue */
+ {
+***************
+*** 534,540 ****
+ keyHead.prev->next = node;
+ keyHead.prev = node;
+
+! node->key = key;
+ }
+
+ /*
+--- 539,545 ----
+ keyHead.prev->next = node;
+ keyHead.prev = node;
+
+! node->keystr = vim_strsave(keystr);
+ }
+
+ /*
+***************
+*** 543,557 ****
+ static void
+ handle_key_queue(void)
+ {
+! while (keyHead.next && keyHead.next != &keyHead)
+ {
+ /* first, unlink the node */
+ keyQ_T *node = keyHead.next;
+ keyHead.next = node->next;
+ node->next->prev = node->prev;
+
+! /* now, send the keycommand */
+! netbeans_keycommand(node->key);
+
+ /* Finally, dispose of the node */
+ vim_free(node);
+--- 548,567 ----
+ static void
+ handle_key_queue(void)
+ {
+! int postponed = FALSE;
+!
+! while (!postponed && keyHead.next && keyHead.next != &keyHead)
+ {
+ /* first, unlink the node */
+ keyQ_T *node = keyHead.next;
+ keyHead.next = node->next;
+ node->next->prev = node->prev;
+
+! /* Now, send the keycommand. This may cause it to be postponed again
+! * and change keyHead. */
+! if (node->keystr != NULL)
+! postponed = !netbeans_keystring(node->keystr);
+! vim_free(node->keystr);
+
+ /* Finally, dispose of the node */
+ vim_free(node);
+***************
+*** 2495,2501 ****
+ }
+ else
+ {
+! nbdebug((" Buffer has no changes!\n"));
+ }
+ /* =====================================================================*/
+ }
+--- 2505,2511 ----
+ }
+ else
+ {
+! nbdebug((" Buffer has no changes!\n"));
+ }
+ /* =====================================================================*/
+ }
+***************
+*** 2658,2664 ****
+ ex_nbkey(eap)
+ exarg_T *eap;
+ {
+! netbeans_keystring(0, (char *)eap->arg);
+ }
+
+
+--- 2668,2674 ----
+ ex_nbkey(eap)
+ exarg_T *eap;
+ {
+! (void)netbeans_keystring(eap->arg);
+ }
+
+
+***************
+*** 2680,2686 ****
+ }
+
+ /*
+! * Convert key to netbeans name.
+ */
+ static void
+ netbeans_keyname(int key, char *buf)
+--- 2690,2696 ----
+ }
+
+ /*
+! * Convert key to netbeans name. This uses the global "mod_mask".
+ */
+ static void
+ netbeans_keyname(int key, char *buf)
+***************
+*** 3127,3149 ****
+ /*
+ * Send a keypress event back to netbeans. This usually simulates some
+ * kind of function key press. This function operates on a key code.
+ */
+! void
+ netbeans_keycommand(int key)
+ {
+ char keyName[60];
+
+ netbeans_keyname(key, keyName);
+! netbeans_keystring(key, keyName);
+ }
+
+
+ /*
+ * Send a keypress event back to netbeans. This usually simulates some
+ * kind of function key press. This function operates on a key string.
+ */
+! static void
+! netbeans_keystring(int key, char *keyName)
+ {
+ char buf[2*MAXPATHL];
+ int bufno = nb_getbufno(curbuf);
+--- 3137,3163 ----
+ /*
+ * Send a keypress event back to netbeans. This usually simulates some
+ * kind of function key press. This function operates on a key code.
++ * Return TRUE when the key was sent, FALSE when the command has been
++ * postponed.
+ */
+! int
+ netbeans_keycommand(int key)
+ {
+ char keyName[60];
+
+ netbeans_keyname(key, keyName);
+! return netbeans_keystring((char_u *)keyName);
+ }
+
+
+ /*
+ * Send a keypress event back to netbeans. This usually simulates some
+ * kind of function key press. This function operates on a key string.
++ * Return TRUE when the key was sent, FALSE when the command has been
++ * postponed.
+ */
+! static int
+! netbeans_keystring(char_u *keyName)
+ {
+ char buf[2*MAXPATHL];
+ int bufno = nb_getbufno(curbuf);
+***************
+*** 3151,3157 ****
+ char_u *q;
+
+ if (!haveConnection)
+! return;
+
+
+ if (bufno == -1)
+--- 3165,3171 ----
+ char_u *q;
+
+ if (!haveConnection)
+! return TRUE;
+
+
+ if (bufno == -1)
+***************
+*** 3160,3166 ****
+ q = curbuf->b_ffname == NULL ? (char_u *)""
+ : nb_quote(curbuf->b_ffname);
+ if (q == NULL)
+! return;
+ vim_snprintf(buf, sizeof(buf), "0:fileOpened=%d \"%s\" %s %s\n", 0,
+ q,
+ "T", /* open in NetBeans */
+--- 3174,3180 ----
+ q = curbuf->b_ffname == NULL ? (char_u *)""
+ : nb_quote(curbuf->b_ffname);
+ if (q == NULL)
+! return TRUE;
+ vim_snprintf(buf, sizeof(buf), "0:fileOpened=%d \"%s\" %s %s\n", 0,
+ q,
+ "T", /* open in NetBeans */
+***************
+*** 3170,3178 ****
+ nbdebug(("EVT: %s", buf));
+ nb_send(buf, "netbeans_keycommand");
+
+! if (key > 0)
+! postpone_keycommand(key);
+! return;
+ }
+
+ /* sync the cursor position */
+--- 3184,3191 ----
+ nbdebug(("EVT: %s", buf));
+ nb_send(buf, "netbeans_keycommand");
+
+! postpone_keycommand(keyName);
+! return FALSE;
+ }
+
+ /* sync the cursor position */
+***************
+*** 3198,3203 ****
+--- 3211,3217 ----
+ off, (long)curwin->w_cursor.lnum, (long)curwin->w_cursor.col);
+ nbdebug(("EVT: %s", buf));
+ nb_send(buf, "netbeans_keycommand");
++ return TRUE;
+ }
+
+
+*** ../vim-7.2.333/src/proto/netbeans.pro 2009-01-06 16:13:42.000000000 +0100
+--- src/proto/netbeans.pro 2010-01-19 13:31:01.000000000 +0100
+***************
+*** 16,22 ****
+ void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
+ void netbeans_unmodified __ARGS((buf_T *bufp));
+ void netbeans_button_release __ARGS((int button));
+! void netbeans_keycommand __ARGS((int key));
+ void netbeans_save_buffer __ARGS((buf_T *bufp));
+ void netbeans_deleted_all_lines __ARGS((buf_T *bufp));
+ int netbeans_is_guarded __ARGS((linenr_T top, linenr_T bot));
+--- 16,22 ----
+ void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
+ void netbeans_unmodified __ARGS((buf_T *bufp));
+ void netbeans_button_release __ARGS((int button));
+! int netbeans_keycommand __ARGS((int key));
+ void netbeans_save_buffer __ARGS((buf_T *bufp));
+ void netbeans_deleted_all_lines __ARGS((buf_T *bufp));
+ int netbeans_is_guarded __ARGS((linenr_T top, linenr_T bot));
+*** ../vim-7.2.333/src/version.c 2010-01-19 14:59:14.000000000 +0100
+--- src/version.c 2010-01-19 15:08:44.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 334,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+119. You are reading a book and look for the scroll bar to get to
+ the next page.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.335 b/vim/vim-7.2/7.2.335
new file mode 100644
index 0000000..df7f641
--- /dev/null
+++ b/vim/vim-7.2/7.2.335
@@ -0,0 +1,103 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.335
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.335
+Problem: The CTRL-] command escapes too many characters.
+Solution: Use a different list of characters to be escaped. (Sergey Khorev)
+Files: src/normal.c
+
+
+*** ../vim-7.2.334/src/normal.c 2010-01-12 15:42:03.000000000 +0100
+--- src/normal.c 2010-01-19 15:20:11.000000000 +0100
+***************
+*** 5406,5411 ****
+--- 5406,5412 ----
+ int n = 0; /* init for GCC */
+ int cmdchar;
+ int g_cmd; /* "g" command */
++ int tag_cmd = FALSE;
+ char_u *aux_ptr;
+ int isman;
+ int isman_s;
+***************
+*** 5515,5520 ****
+--- 5516,5522 ----
+ break;
+
+ case ']':
++ tag_cmd = TRUE;
+ #ifdef FEAT_CSCOPE
+ if (p_cst)
+ STRCPY(buf, "cstag ");
+***************
+*** 5526,5535 ****
+ default:
+ if (curbuf->b_help)
+ STRCPY(buf, "he! ");
+- else if (g_cmd)
+- STRCPY(buf, "tj ");
+ else
+! sprintf((char *)buf, "%ldta ", cap->count0);
+ }
+
+ /*
+--- 5528,5541 ----
+ default:
+ if (curbuf->b_help)
+ STRCPY(buf, "he! ");
+ else
+! {
+! tag_cmd = TRUE;
+! if (g_cmd)
+! STRCPY(buf, "tj ");
+! else
+! sprintf((char *)buf, "%ldta ", cap->count0);
+! }
+ }
+
+ /*
+***************
+*** 5562,5569 ****
+ aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
+ else if (cmdchar == '#')
+ aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
+! else
+ /* Don't escape spaces and Tabs in a tag with a backslash */
+ aux_ptr = (char_u *)"\\|\"\n*?[";
+
+ p = buf + STRLEN(buf);
+--- 5568,5577 ----
+ aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
+ else if (cmdchar == '#')
+ aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
+! else if (tag_cmd)
+ /* Don't escape spaces and Tabs in a tag with a backslash */
++ aux_ptr = (char_u *)"\\|\"\n[";
++ else
+ aux_ptr = (char_u *)"\\|\"\n*?[";
+
+ p = buf + STRLEN(buf);
+*** ../vim-7.2.334/src/version.c 2010-01-19 15:12:33.000000000 +0100
+--- src/version.c 2010-01-19 15:22:44.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 335,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+120. You ask a friend, "What's that big shiny thing?" He says, "It's the sun."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.336 b/vim/vim-7.2/7.2.336
new file mode 100644
index 0000000..a676592
--- /dev/null
+++ b/vim/vim-7.2/7.2.336
@@ -0,0 +1,841 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.336
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.336
+Problem: MzScheme interface can't evaluate an expression.
+Solution: Add mzeval(). (Sergey Khorev)
+Files: runtime/doc/eval.txt, runtime/doc/if_mzsch.txt,
+ runtime/doc/usr_41.txt, src/eval.c, src/if_mzsch.c,
+ src/proto/eval.pro, src/proto/if_mzsch.pro,
+ src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
+ src/testdir/Makefile, src/testdir/main.aap, src/testdir/test1.in,
+ src/testdir/test70.in, src/testdir/test70.ok
+
+
+*** ../vim-7.2.335/runtime/doc/eval.txt 2009-11-17 12:20:30.000000000 +0100
+--- runtime/doc/eval.txt 2010-01-19 15:30:50.000000000 +0100
+***************
+*** 1815,1825 ****
+ List match and submatches of {pat} in {expr}
+ matchstr( {expr}, {pat}[, {start}[, {count}]])
+ String {count}'th match of {pat} in {expr}
+! max({list}) Number maximum value of items in {list}
+! min({list}) Number minimum value of items in {list}
+! mkdir({name} [, {path} [, {prot}]])
+ Number create directory {name}
+ mode( [expr]) String current editing mode
+ nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum}
+ nr2char( {expr}) String single char with ASCII value {expr}
+ pathshorten( {expr}) String shorten directory names in a path
+--- 1821,1832 ----
+ List match and submatches of {pat} in {expr}
+ matchstr( {expr}, {pat}[, {start}[, {count}]])
+ String {count}'th match of {pat} in {expr}
+! max( {list}) Number maximum value of items in {list}
+! min( {list}) Number minimum value of items in {list}
+! mkdir( {name} [, {path} [, {prot}]])
+ Number create directory {name}
+ mode( [expr]) String current editing mode
++ mzeval( {expr}) any evaluate |MzScheme| expression
+ nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum}
+ nr2char( {expr}) String single char with ASCII value {expr}
+ pathshorten( {expr}) String shorten directory names in a path
+***************
+*** 4090,4095 ****
+--- 4103,4125 ----
+ "c" or "n".
+ Also see |visualmode()|.
+
++ mzeval({expr}) *mzeval()*
++ Evaluate MzScheme expression {expr} and return its result
++ convert to Vim data structures.
++ Numbers and strings are returned as they are.
++ Pairs (including lists and improper lists) and vectors are
++ returned as Vim |Lists|.
++ Hash tables are represented as Vim |Dictionary| type with keys
++ converted to strings.
++ All other types are converted to string with display function.
++ Examples: >
++ :mz (define l (list 1 2 3))
++ :mz (define h (make-hash)) (hash-set! h "list" l)
++ :echo mzeval("l")
++ :echo mzeval("h")
++ <
++ {only available when compiled with the |+mzscheme| feature}
++
+ nextnonblank({lnum}) *nextnonblank()*
+ Return the line number of the first line at or below {lnum}
+ that is not blank. Example: >
+*** ../vim-7.2.335/runtime/doc/if_mzsch.txt 2009-06-24 17:51:01.000000000 +0200
+--- runtime/doc/if_mzsch.txt 2010-01-19 15:33:00.000000000 +0100
+***************
+*** 1,4 ****
+! *if_mzsch.txt* For Vim version 7.2. Last change: 2009 Jun 24
+
+
+ VIM REFERENCE MANUAL by Sergey Khorev
+--- 1,4 ----
+! *if_mzsch.txt* For Vim version 7.2. Last change: 2010 Jan 19
+
+
+ VIM REFERENCE MANUAL by Sergey Khorev
+***************
+*** 9,16 ****
+ 1. Commands |mzscheme-commands|
+ 2. Examples |mzscheme-examples|
+ 3. Threads |mzscheme-threads|
+! 4. The Vim access procedures |mzscheme-vim|
+! 5. Dynamic loading |mzscheme-dynamic|
+
+ {Vi does not have any of these commands}
+
+--- 9,17 ----
+ 1. Commands |mzscheme-commands|
+ 2. Examples |mzscheme-examples|
+ 3. Threads |mzscheme-threads|
+! 4. Vim access from MzScheme |mzscheme-vim|
+! 5. mzeval() Vim function |mzscheme-mzeval|
+! 6. Dynamic loading |mzscheme-dynamic|
+
+ {Vi does not have any of these commands}
+
+***************
+*** 142,148 ****
+ GUI version.
+
+ ==============================================================================
+! 5. VIM Functions *mzscheme-vim*
+
+ *mzscheme-vimext*
+ The 'vimext' module provides access to procedures defined in the MzScheme
+--- 143,149 ----
+ GUI version.
+
+ ==============================================================================
+! 4. Vim access from MzScheme *mzscheme-vim*
+
+ *mzscheme-vimext*
+ The 'vimext' module provides access to procedures defined in the MzScheme
+***************
+*** 231,237 ****
+ (set-cursor (line . col) [window]) Set cursor position.
+
+ ==============================================================================
+! 5. Dynamic loading *mzscheme-dynamic* *E815*
+
+ On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
+ output then includes |+mzscheme/dyn|.
+--- 232,244 ----
+ (set-cursor (line . col) [window]) Set cursor position.
+
+ ==============================================================================
+! 5. mzeval() Vim function *mzscheme-mzeval*
+!
+! To facilitate bi-directional interface, you can use |mzeval| function to
+! evaluate MzScheme expressions and pass their values to VimL.
+!
+! ==============================================================================
+! 6. Dynamic loading *mzscheme-dynamic* *E815*
+
+ On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
+ output then includes |+mzscheme/dyn|.
+*** ../vim-7.2.335/runtime/doc/usr_41.txt 2008-08-09 19:36:54.000000000 +0200
+--- runtime/doc/usr_41.txt 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 868,873 ****
+--- 868,875 ----
+ taglist() get list of matching tags
+ tagfiles() get a list of tags files
+
++ mzeval() evaluate |MzScheme| expression
++
+ ==============================================================================
+ *41.7* Defining a function
+
+*** ../vim-7.2.335/src/eval.c 2010-01-19 12:46:51.000000000 +0100
+--- src/eval.c 2010-01-19 15:48:12.000000000 +0100
+***************
+*** 433,439 ****
+ static long list_find_nr __ARGS((list_T *l, long idx, int *errorp));
+ static long list_idx_of_item __ARGS((list_T *l, listitem_T *item));
+ static void list_append __ARGS((list_T *l, listitem_T *item));
+- static int list_append_tv __ARGS((list_T *l, typval_T *tv));
+ static int list_append_number __ARGS((list_T *l, varnumber_T n));
+ static int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item));
+ static int list_extend __ARGS((list_T *l1, list_T *l2, listitem_T *bef));
+--- 433,438 ----
+***************
+*** 448,459 ****
+ static void set_ref_in_item __ARGS((typval_T *tv, int copyID));
+ static void dict_unref __ARGS((dict_T *d));
+ static void dict_free __ARGS((dict_T *d, int recurse));
+- static dictitem_T *dictitem_alloc __ARGS((char_u *key));
+ static dictitem_T *dictitem_copy __ARGS((dictitem_T *org));
+ static void dictitem_remove __ARGS((dict_T *dict, dictitem_T *item));
+- static void dictitem_free __ARGS((dictitem_T *item));
+ static dict_T *dict_copy __ARGS((dict_T *orig, int deep, int copyID));
+- static int dict_add __ARGS((dict_T *d, dictitem_T *item));
+ static long dict_len __ARGS((dict_T *d));
+ static dictitem_T *dict_find __ARGS((dict_T *d, char_u *key, int len));
+ static char_u *dict2string __ARGS((typval_T *tv, int copyID));
+--- 447,455 ----
+***************
+*** 628,633 ****
+--- 624,632 ----
+ static void f_mkdir __ARGS((typval_T *argvars, typval_T *rettv));
+ #endif
+ static void f_mode __ARGS((typval_T *argvars, typval_T *rettv));
++ #ifdef FEAT_MZSCHEME
++ static void f_mzeval __ARGS((typval_T *argvars, typval_T *rettv));
++ #endif
+ static void f_nextnonblank __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_nr2char __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_pathshorten __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 764,770 ****
+ static int var_check_ro __ARGS((int flags, char_u *name));
+ static int var_check_fixed __ARGS((int flags, char_u *name));
+ static int tv_check_lock __ARGS((int lock, char_u *name));
+- static void copy_tv __ARGS((typval_T *from, typval_T *to));
+ static int item_copy __ARGS((typval_T *from, typval_T *to, int deep, int copyID));
+ static char_u *find_option_end __ARGS((char_u **arg, int *opt_flags));
+ static char_u *trans_function_name __ARGS((char_u **pp, int skip, int flags, funcdict_T *fd));
+--- 763,768 ----
+***************
+*** 6155,6161 ****
+ * Append typval_T "tv" to the end of list "l".
+ * Return FAIL when out of memory.
+ */
+! static int
+ list_append_tv(l, tv)
+ list_T *l;
+ typval_T *tv;
+--- 6153,6159 ----
+ * Append typval_T "tv" to the end of list "l".
+ * Return FAIL when out of memory.
+ */
+! int
+ list_append_tv(l, tv)
+ list_T *l;
+ typval_T *tv;
+***************
+*** 6812,6818 ****
+ * Note that the value of the item "di_tv" still needs to be initialized!
+ * Returns NULL when out of memory.
+ */
+! static dictitem_T *
+ dictitem_alloc(key)
+ char_u *key;
+ {
+--- 6810,6816 ----
+ * Note that the value of the item "di_tv" still needs to be initialized!
+ * Returns NULL when out of memory.
+ */
+! dictitem_T *
+ dictitem_alloc(key)
+ char_u *key;
+ {
+***************
+*** 6868,6874 ****
+ /*
+ * Free a dict item. Also clears the value.
+ */
+! static void
+ dictitem_free(item)
+ dictitem_T *item;
+ {
+--- 6866,6872 ----
+ /*
+ * Free a dict item. Also clears the value.
+ */
+! void
+ dictitem_free(item)
+ dictitem_T *item;
+ {
+***************
+*** 6948,6954 ****
+ * Add item "item" to Dictionary "d".
+ * Returns FAIL when out of memory and when key already existed.
+ */
+! static int
+ dict_add(d, item)
+ dict_T *d;
+ dictitem_T *item;
+--- 6946,6952 ----
+ * Add item "item" to Dictionary "d".
+ * Returns FAIL when out of memory and when key already existed.
+ */
+! int
+ dict_add(d, item)
+ dict_T *d;
+ dictitem_T *item;
+***************
+*** 7699,7704 ****
+--- 7697,7705 ----
+ {"mkdir", 1, 3, f_mkdir},
+ #endif
+ {"mode", 0, 1, f_mode},
++ #ifdef FEAT_MZSCHEME
++ {"mzeval", 1, 1, f_mzeval},
++ #endif
+ {"nextnonblank", 1, 1, f_nextnonblank},
+ {"nr2char", 1, 1, f_nr2char},
+ {"pathshorten", 1, 1, f_pathshorten},
+***************
+*** 13591,13596 ****
+--- 13592,13614 ----
+ rettv->v_type = VAR_STRING;
+ }
+
++ #ifdef FEAT_MZSCHEME
++ /*
++ * "mzeval()" function
++ */
++ static void
++ f_mzeval(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ char_u *str;
++ char_u buf[NUMBUFLEN];
++
++ str = get_tv_string_buf(&argvars[0], buf);
++ do_mzeval(str, rettv);
++ }
++ #endif
++
+ /*
+ * "nextnonblank()" function
+ */
+***************
+*** 19274,19280 ****
+ * It is OK for "from" and "to" to point to the same item. This is used to
+ * make a copy later.
+ */
+! static void
+ copy_tv(from, to)
+ typval_T *from;
+ typval_T *to;
+--- 19292,19298 ----
+ * It is OK for "from" and "to" to point to the same item. This is used to
+ * make a copy later.
+ */
+! void
+ copy_tv(from, to)
+ typval_T *from;
+ typval_T *to;
+*** ../vim-7.2.335/src/if_mzsch.c 2009-12-16 19:02:05.000000000 +0100
+--- src/if_mzsch.c 2010-01-19 15:43:05.000000000 +0100
+***************
+*** 170,175 ****
+--- 170,177 ----
+ #ifdef FEAT_EVAL
+ static Scheme_Object *vim_to_mzscheme(typval_T *vim_value, int depth,
+ Scheme_Hash_Table *visited);
++ static int mzscheme_to_vim(Scheme_Object *obj, typval_T *tv, int depth,
++ Scheme_Hash_Table *visited);
+ #endif
+
+ #ifdef MZ_PRECISE_GC
+***************
+*** 2733,2738 ****
+--- 2735,2959 ----
+ MZ_GC_UNREG();
+ return result;
+ }
++
++ static int
++ mzscheme_to_vim(Scheme_Object *obj, typval_T *tv, int depth,
++ Scheme_Hash_Table *visited)
++ {
++ int status = OK;
++ typval_T *found;
++ MZ_GC_CHECK();
++ if (depth > 100) /* limit the deepest recursion level */
++ {
++ tv->v_type = VAR_NUMBER;
++ tv->vval.v_number = 0;
++ return FAIL;
++ }
++
++ found = (typval_T *)scheme_hash_get(visited, obj);
++ if (found != NULL)
++ copy_tv(found, tv);
++ else if (SCHEME_VOIDP(obj))
++ {
++ tv->v_type = VAR_NUMBER;
++ tv->vval.v_number = 0;
++ }
++ else if (SCHEME_INTP(obj))
++ {
++ tv->v_type = VAR_NUMBER;
++ tv->vval.v_number = SCHEME_INT_VAL(obj);
++ }
++ else if (SCHEME_BOOLP(obj))
++ {
++ tv->v_type = VAR_NUMBER;
++ tv->vval.v_number = SCHEME_TRUEP(obj);
++ }
++ # ifdef FEAT_FLOAT
++ else if (SCHEME_DBLP(obj))
++ {
++ tv->v_type = VAR_FLOAT;
++ tv->vval.v_float = SCHEME_DBL_VAL(obj);
++ }
++ # endif
++ else if (SCHEME_STRINGP(obj))
++ {
++ tv->v_type = VAR_STRING;
++ tv->vval.v_string = vim_strsave((char_u *)SCHEME_STR_VAL(obj));
++ }
++ else if (SCHEME_VECTORP(obj) || SCHEME_NULLP(obj)
++ || SCHEME_PAIRP(obj) || SCHEME_MUTABLE_PAIRP(obj))
++ {
++ list_T *list = list_alloc();
++ if (list == NULL)
++ status = FAIL;
++ else
++ {
++ int i;
++ Scheme_Object *curr = NULL;
++ Scheme_Object *cval = NULL;
++ /* temporary var to hold current element of vectors and pairs */
++ typval_T *v;
++
++ MZ_GC_DECL_REG(2);
++ MZ_GC_VAR_IN_REG(0, curr);
++ MZ_GC_VAR_IN_REG(1, cval);
++ MZ_GC_REG();
++
++ tv->v_type = VAR_LIST;
++ tv->vval.v_list = list;
++ ++list->lv_refcount;
++
++ v = (typval_T *)alloc(sizeof(typval_T));
++ if (v == NULL)
++ status = FAIL;
++ else
++ {
++ /* add the value in advance to allow handling of self-referencial
++ * data structures */
++ typval_T *visited_tv = (typval_T *)alloc(sizeof(typval_T));
++ copy_tv(tv, visited_tv);
++ scheme_hash_set(visited, obj, (Scheme_Object *)visited_tv);
++
++ if (SCHEME_VECTORP(obj))
++ {
++ for (i = 0; i < SCHEME_VEC_SIZE(obj); ++i)
++ {
++ cval = SCHEME_VEC_ELS(obj)[i];
++ status = mzscheme_to_vim(cval, v, depth + 1, visited);
++ if (status == FAIL)
++ break;
++ status = list_append_tv(list, v);
++ clear_tv(v);
++ if (status == FAIL)
++ break;
++ }
++ }
++ else if (SCHEME_PAIRP(obj) || SCHEME_MUTABLE_PAIRP(obj))
++ {
++ for (curr = obj;
++ SCHEME_PAIRP(curr) || SCHEME_MUTABLE_PAIRP(curr);
++ curr = SCHEME_CDR(curr))
++ {
++ cval = SCHEME_CAR(curr);
++ status = mzscheme_to_vim(cval, v, depth + 1, visited);
++ if (status == FAIL)
++ break;
++ status = list_append_tv(list, v);
++ clear_tv(v);
++ if (status == FAIL)
++ break;
++ }
++ /* impoper list not terminated with null
++ * need to handle the last element */
++ if (status == OK && !SCHEME_NULLP(curr))
++ {
++ status = mzscheme_to_vim(cval, v, depth + 1, visited);
++ if (status == OK)
++ {
++ status = list_append_tv(list, v);
++ clear_tv(v);
++ }
++ }
++ }
++ /* nothing to do for scheme_null */
++ vim_free(v);
++ }
++ MZ_GC_UNREG();
++ }
++ }
++ else if (SCHEME_HASHTP(obj))
++ {
++ int i;
++ dict_T *dict;
++ Scheme_Object *key = NULL;
++ Scheme_Object *val = NULL;
++
++ MZ_GC_DECL_REG(2);
++ MZ_GC_VAR_IN_REG(0, key);
++ MZ_GC_VAR_IN_REG(1, val);
++ MZ_GC_REG();
++
++ dict = dict_alloc();
++ if (dict == NULL)
++ status = FAIL;
++ else
++ {
++ typval_T *visited_tv = (typval_T *)alloc(sizeof(typval_T));
++
++ tv->v_type = VAR_DICT;
++ tv->vval.v_dict = dict;
++ ++dict->dv_refcount;
++
++ copy_tv(tv, visited_tv);
++ scheme_hash_set(visited, obj, (Scheme_Object *)visited_tv);
++
++ for (i = 0; i < ((Scheme_Hash_Table *)obj)->size; ++i)
++ {
++ if (((Scheme_Hash_Table *) obj)->vals[i] != NULL)
++ {
++ /* generate item for `diplay'ed Scheme key */
++ dictitem_T *item = dictitem_alloc((char_u *)string_to_line(
++ ((Scheme_Hash_Table *) obj)->keys[i]));
++ /* convert Scheme val to Vim and add it to the dict */
++ if (mzscheme_to_vim(((Scheme_Hash_Table *) obj)->vals[i],
++ &item->di_tv, depth + 1, visited) == FAIL
++ || dict_add(dict, item) == FAIL)
++ {
++ dictitem_free(item);
++ status = FAIL;
++ break;
++ }
++ }
++
++ }
++ }
++ MZ_GC_UNREG();
++ }
++ else
++ {
++ /* `display' any other value to string */
++ tv->v_type = VAR_STRING;
++ tv->vval.v_string = (char_u *)string_to_line(obj);
++ }
++ return status;
++ }
++
++ void
++ do_mzeval(char_u *str, typval_T *rettv)
++ {
++ int i;
++ Scheme_Object *ret = NULL;
++ Scheme_Hash_Table *visited = NULL;
++
++ MZ_GC_DECL_REG(2);
++ MZ_GC_VAR_IN_REG(0, ret);
++ MZ_GC_VAR_IN_REG(0, visited);
++ MZ_GC_REG();
++
++ if (mzscheme_init())
++ {
++ MZ_GC_UNREG();
++ return;
++ }
++
++ MZ_GC_CHECK();
++ visited = scheme_make_hash_table(SCHEME_hash_ptr);
++ MZ_GC_CHECK();
++
++ if (eval_with_exn_handling(str, do_eval, &ret) == OK)
++ mzscheme_to_vim(ret, rettv, 1, visited);
++
++ for (i = 0; i < visited->size; ++i)
++ {
++ /* free up remembered objects */
++ if (visited->vals[i] != NULL)
++ {
++ free_tv((typval_T *)visited->vals[i]);
++ }
++ }
++
++ MZ_GC_UNREG();
++ }
+ #endif
+
+ /*
+*** ../vim-7.2.335/src/proto/eval.pro 2009-09-30 15:15:33.000000000 +0200
+--- src/proto/eval.pro 2010-01-19 15:45:39.000000000 +0100
+***************
+*** 47,56 ****
+--- 47,60 ----
+ void list_free __ARGS((list_T *l, int recurse));
+ dictitem_T *dict_lookup __ARGS((hashitem_T *hi));
+ char_u *list_find_str __ARGS((list_T *l, long idx));
++ int list_append_tv __ARGS((list_T *l, typval_T *tv));
+ int list_append_dict __ARGS((list_T *list, dict_T *dict));
+ int list_append_string __ARGS((list_T *l, char_u *str, int len));
+ int garbage_collect __ARGS((void));
+ dict_T *dict_alloc __ARGS((void));
++ dictitem_T *dictitem_alloc __ARGS((char_u *key));
++ void dictitem_free __ARGS((dictitem_T *item));
++ int dict_add __ARGS((dict_T *d, dictitem_T *item));
+ int dict_add_nr_str __ARGS((dict_T *d, char *key, long nr, char_u *str));
+ char_u *get_dict_string __ARGS((dict_T *d, char_u *key, int save));
+ long get_dict_number __ARGS((dict_T *d, char_u *key));
+***************
+*** 77,82 ****
+--- 81,87 ----
+ void new_script_vars __ARGS((scid_T id));
+ void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var));
+ void vars_clear __ARGS((hashtab_T *ht));
++ void copy_tv __ARGS((typval_T *from, typval_T *to));
+ void ex_echo __ARGS((exarg_T *eap));
+ void ex_echohl __ARGS((exarg_T *eap));
+ void ex_execute __ARGS((exarg_T *eap));
+*** ../vim-7.2.335/src/proto/if_mzsch.pro 2009-12-16 19:02:05.000000000 +0100
+--- src/proto/if_mzsch.pro 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 15,18 ****
+--- 15,19 ----
+ void *mzvim_eval_string __ARGS((char_u *str));
+ int mzthreads_allowed __ARGS((void));
+ void mzscheme_main __ARGS((void));
++ void do_mzeval __ARGS((char_u *str, typval_T *rettv));
+ /* vim: set ft=c : */
+*** ../vim-7.2.335/src/testdir/Make_dos.mak 2009-11-17 17:57:10.000000000 +0100
+--- src/testdir/Make_dos.mak 2010-01-19 15:43:48.000000000 +0100
+***************
+*** 29,35 ****
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out
+
+! SCRIPTS32 = test50.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 29,35 ----
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out
+
+! SCRIPTS32 = test50.out test70.out
+
+ SCRIPTS_GUI = test16.out
+
+*** ../vim-7.2.335/src/testdir/Make_ming.mak 2009-11-17 17:57:10.000000000 +0100
+--- src/testdir/Make_ming.mak 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 48,54 ****
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out
+
+! SCRIPTS32 = test50.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 48,54 ----
+ test42.out test52.out test65.out test66.out test67.out \
+ test68.out test69.out
+
+! SCRIPTS32 = test50.out test70.out
+
+ SCRIPTS_GUI = test16.out
+
+***************
+*** 78,83 ****
+--- 78,84 ----
+ -$(DEL) small.vim
+ -$(DEL) tiny.vim
+ -$(DEL) mbyte.vim
++ -$(DEL) mzscheme.vim
+ -$(DEL) X*
+ -$(DEL) viminfo
+
+*** ../vim-7.2.335/src/testdir/Makefile 2009-11-17 17:40:34.000000000 +0100
+--- src/testdir/Makefile 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 23,29 ****
+ test54.out test55.out test56.out test57.out test58.out \
+ test59.out test60.out test61.out test62.out test63.out \
+ test64.out test65.out test66.out test67.out test68.out \
+! test69.out
+
+ SCRIPTS_GUI = test16.out
+
+--- 23,29 ----
+ test54.out test55.out test56.out test57.out test58.out \
+ test59.out test60.out test61.out test62.out test63.out \
+ test64.out test65.out test66.out test67.out test68.out \
+! test69.out test70.out
+
+ SCRIPTS_GUI = test16.out
+
+***************
+*** 44,53 ****
+ $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
+
+ clean:
+! -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim test.ok X* valgrind.pid* viminfo
+
+ test1.out: test1.in
+! -rm -f $*.failed tiny.vim small.vim mbyte.vim test.ok X* viminfo
+ $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in
+ @/bin/sh -c "if diff test.out $*.ok; \
+ then mv -f test.out $*.out; \
+--- 44,53 ----
+ $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
+
+ clean:
+! -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* valgrind.pid* viminfo
+
+ test1.out: test1.in
+! -rm -f $*.failed tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* viminfo
+ $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in
+ @/bin/sh -c "if diff test.out $*.ok; \
+ then mv -f test.out $*.out; \
+*** ../vim-7.2.335/src/testdir/main.aap 2004-06-13 21:05:31.000000000 +0200
+--- src/testdir/main.aap 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 32,42 ****
+ $Scripts $ScriptsGUI: $VimProg
+
+ clean:
+! :del {r}{force} *.out test.log tiny.vim small.vim mbyte.vim test.ok X*
+
+ # test1 is special, it checks for features
+ test1.out: test1.in
+! :del {force} test1.failed tiny.vim small.vim mbyte.vim
+ :sys {i} $VimProg -u unix.vim -U NONE --noplugin -s dotest.in test1.in
+ @if os.system("diff test.out test1.ok") != 0:
+ :error test1 FAILED - Something basic is wrong
+--- 32,42 ----
+ $Scripts $ScriptsGUI: $VimProg
+
+ clean:
+! :del {r}{force} *.out test.log tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X*
+
+ # test1 is special, it checks for features
+ test1.out: test1.in
+! :del {force} test1.failed tiny.vim small.vim mbyte.vim mzscheme.vim
+ :sys {i} $VimProg -u unix.vim -U NONE --noplugin -s dotest.in test1.in
+ @if os.system("diff test.out test1.ok") != 0:
+ :error test1 FAILED - Something basic is wrong
+*** ../vim-7.2.335/src/testdir/test1.in 2004-06-13 20:19:23.000000000 +0200
+--- src/testdir/test1.in 2010-01-19 15:38:44.000000000 +0100
+***************
+*** 13,18 ****
+--- 13,19 ----
+
+ If Vim was not compiled with the +multi_byte feature, the mbyte.vim script will be set like small.vim above. mbyte.vim is sourced by tests that require the
+ +multi_byte feature.
++ Similar logic is applied to the +mzscheme feature, using mzscheme.vim.
+
+ STARTTEST
+ :" Write a single line to test.out to check if testing works at all.
+***************
+*** 25,32 ****
+--- 26,36 ----
+ w! test.out
+ qa!
+ :w! mbyte.vim
++ :w! mzscheme.vim
+ :" If +multi_byte feature supported, make mbyte.vim empty.
+ :if has("multi_byte") | sp another | w! mbyte.vim | q | endif
++ :" If +mzscheme feature supported, make mzscheme.vim empty.
++ :if has("mzscheme") | sp another | w! mzscheme.vim | q | endif
+ :" If +eval feature supported quit here, leaving tiny.vim and small.vim empty.
+ :" Otherwise write small.vim to skip the test.
+ :if 1 | q! | endif
+*** ../vim-7.2.335/src/testdir/test70.in 2010-01-19 15:47:24.000000000 +0100
+--- src/testdir/test70.in 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 0 ****
+--- 1,53 ----
++ Smoke test for MzScheme interface and mzeval() function
++
++ STARTTEST
++ :so mzscheme.vim
++ :set nocompatible viminfo+=nviminfo
++ :function! MzRequire()
++ :redir => l:mzversion
++ :mz (version)
++ :redir END
++ :if strpart(l:mzversion, 1, 1) < "4"
++ :" MzScheme versions < 4.x:
++ :mz (require (prefix vim- vimext))
++ :else
++ :" newer versions:
++ :mz (require (prefix-in vim- 'vimext))
++ :mz (require r5rs)
++ :endif
++ :endfunction
++ :silent call MzRequire()
++ :mz (define l '("item0" "dictionary with list OK" "item2"))
++ :mz (define h (make-hash))
++ :mz (hash-set! h "list" l)
++ /^1
++ :" change buffer contents
++ :mz (vim-set-buff-line (vim-eval "line('.')") "1 changed line 1")
++ :" scalar test
++ :let tmp_string = mzeval('"string"')
++ :let tmp_1000 = mzeval('1000')
++ :if tmp_string . tmp_1000 == "string1000"
++ :let scalar_res = "OK"
++ :else
++ :let scalar_res = "FAILED"
++ :endif
++ :call append(search("^1"), "scalar test " . scalar_res)
++ :" dictionary containing a list
++ :let tmp = mzeval("h")["list"][1]
++ :/^2/put =tmp
++ :" circular list (at the same time test lists containing lists)
++ :mz (set-car! (cddr l) l)
++ :let l2 = mzeval("h")["list"]
++ :if l2[2] == l2
++ :let res = "OK"
++ :else
++ :let res = "FAILED"
++ :endif
++ :call setline(search("^3"), "circular test " . res)
++ :?^1?,$w! test.out
++ :qa!
++ ENDTEST
++
++ 1 line 1
++ 2 line 2
++ 3 line 3
+*** ../vim-7.2.335/src/testdir/test70.ok 2010-01-19 15:47:24.000000000 +0100
+--- src/testdir/test70.ok 2010-01-19 15:29:01.000000000 +0100
+***************
+*** 0 ****
+--- 1,5 ----
++ 1 changed line 1
++ scalar test OK
++ 2 line 2
++ dictionary with list OK
++ circular test OK
+*** ../vim-7.2.335/src/version.c 2010-01-19 15:23:38.000000000 +0100
+--- src/version.c 2010-01-19 15:46:44.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 336,
+ /**/
+
+--
+"Computers in the future may weigh no more than 1.5 tons."
+ Popular Mechanics, 1949
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.337 b/vim/vim-7.2/7.2.337
new file mode 100644
index 0000000..e745285
--- /dev/null
+++ b/vim/vim-7.2/7.2.337
@@ -0,0 +1,112 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.337
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.337
+Problem: The :compiler command doesn't function properly when invoked in a
+ function.
+Solution: Add "g:" before "current_compiler". (Yukihiro Nakadaira)
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.336/src/ex_cmds2.c 2009-05-16 21:16:12.000000000 +0200
+--- src/ex_cmds2.c 2010-01-19 16:02:53.000000000 +0100
+***************
+*** 2496,2509 ****
+ * To remain backwards compatible "current_compiler" is always
+ * used. A user's compiler plugin may set it, the distributed
+ * plugin will then skip the settings. Afterwards set
+! * "b:current_compiler" and restore "current_compiler". */
+! old_cur_comp = get_var_value((char_u *)"current_compiler");
+ if (old_cur_comp != NULL)
+ old_cur_comp = vim_strsave(old_cur_comp);
+ do_cmdline_cmd((char_u *)
+ "command -nargs=* CompilerSet setlocal <args>");
+ }
+! do_unlet((char_u *)"current_compiler", TRUE);
+ do_unlet((char_u *)"b:current_compiler", TRUE);
+
+ sprintf((char *)buf, "compiler/%s.vim", eap->arg);
+--- 2496,2510 ----
+ * To remain backwards compatible "current_compiler" is always
+ * used. A user's compiler plugin may set it, the distributed
+ * plugin will then skip the settings. Afterwards set
+! * "b:current_compiler" and restore "current_compiler".
+! * Explicitly prepend "g:" to make it work in a function. */
+! old_cur_comp = get_var_value((char_u *)"g:current_compiler");
+ if (old_cur_comp != NULL)
+ old_cur_comp = vim_strsave(old_cur_comp);
+ do_cmdline_cmd((char_u *)
+ "command -nargs=* CompilerSet setlocal <args>");
+ }
+! do_unlet((char_u *)"g:current_compiler", TRUE);
+ do_unlet((char_u *)"b:current_compiler", TRUE);
+
+ sprintf((char *)buf, "compiler/%s.vim", eap->arg);
+***************
+*** 2514,2520 ****
+ do_cmdline_cmd((char_u *)":delcommand CompilerSet");
+
+ /* Set "b:current_compiler" from "current_compiler". */
+! p = get_var_value((char_u *)"current_compiler");
+ if (p != NULL)
+ set_internal_string_var((char_u *)"b:current_compiler", p);
+
+--- 2515,2521 ----
+ do_cmdline_cmd((char_u *)":delcommand CompilerSet");
+
+ /* Set "b:current_compiler" from "current_compiler". */
+! p = get_var_value((char_u *)"g:current_compiler");
+ if (p != NULL)
+ set_internal_string_var((char_u *)"b:current_compiler", p);
+
+***************
+*** 2523,2534 ****
+ {
+ if (old_cur_comp != NULL)
+ {
+! set_internal_string_var((char_u *)"current_compiler",
+ old_cur_comp);
+ vim_free(old_cur_comp);
+ }
+ else
+! do_unlet((char_u *)"current_compiler", TRUE);
+ }
+ }
+ }
+--- 2524,2535 ----
+ {
+ if (old_cur_comp != NULL)
+ {
+! set_internal_string_var((char_u *)"g:current_compiler",
+ old_cur_comp);
+ vim_free(old_cur_comp);
+ }
+ else
+! do_unlet((char_u *)"g:current_compiler", TRUE);
+ }
+ }
+ }
+*** ../vim-7.2.336/src/version.c 2010-01-19 15:51:29.000000000 +0100
+--- src/version.c 2010-01-19 16:11:20.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 337,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+121. You ask for e-mail adresses instead of telephone numbers.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.338 b/vim/vim-7.2/7.2.338
new file mode 100644
index 0000000..ac0223f
--- /dev/null
+++ b/vim/vim-7.2/7.2.338
@@ -0,0 +1,129 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.338
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.338 (after 7.2.300)
+Problem: Part of FD_CLOEXEC change is missing.
+Solution: Include source file skipped because of typo.
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.337/src/ex_cmds2.c 2010-01-19 16:12:53.000000000 +0100
+--- src/ex_cmds2.c 2010-01-19 16:02:53.000000000 +0100
+***************
+*** 2802,2821 ****
+
+ static char_u *get_one_sourceline __ARGS((struct source_cookie *sp));
+
+! #if defined(WIN32) && defined(FEAT_CSCOPE)
+ static FILE *fopen_noinh_readbin __ARGS((char *filename));
+
+ /*
+ * Special function to open a file without handle inheritance.
+ */
+ static FILE *
+ fopen_noinh_readbin(filename)
+ char *filename;
+ {
+! int fd_tmp = mch_open(filename, O_RDONLY | O_BINARY | O_NOINHERIT, 0);
+
+ if (fd_tmp == -1)
+ return NULL;
+ return fdopen(fd_tmp, READBIN);
+ }
+ #endif
+--- 2802,2836 ----
+
+ static char_u *get_one_sourceline __ARGS((struct source_cookie *sp));
+
+! #if (defined(WIN32) && defined(FEAT_CSCOPE)) || defined(HAVE_FD_CLOEXEC)
+! # define USE_FOPEN_NOINH
+ static FILE *fopen_noinh_readbin __ARGS((char *filename));
+
+ /*
+ * Special function to open a file without handle inheritance.
++ * When possible the handle is closed on exec().
+ */
+ static FILE *
+ fopen_noinh_readbin(filename)
+ char *filename;
+ {
+! int fd_tmp = mch_open(filename, O_RDONLY
+! # ifdef WIN32
+! O_BINARY | O_NOINHERIT
+! # endif
+! , 0);
+
+ if (fd_tmp == -1)
+ return NULL;
++
++ # ifdef HAVE_FD_CLOEXEC
++ {
++ int fdflags = fcntl(fd_tmp, F_GETFD);
++ if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
++ fcntl(fd_tmp, F_SETFD, fdflags | FD_CLOEXEC);
++ }
++ # endif
++
+ return fdopen(fd_tmp, READBIN);
+ }
+ #endif
+***************
+*** 2895,2901 ****
+ apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf);
+ #endif
+
+! #if defined(WIN32) && defined(FEAT_CSCOPE)
+ cookie.fp = fopen_noinh_readbin((char *)fname_exp);
+ #else
+ cookie.fp = mch_fopen((char *)fname_exp, READBIN);
+--- 2910,2916 ----
+ apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf);
+ #endif
+
+! #ifdef USE_FOPEN_NOINH
+ cookie.fp = fopen_noinh_readbin((char *)fname_exp);
+ #else
+ cookie.fp = mch_fopen((char *)fname_exp, READBIN);
+***************
+*** 2916,2922 ****
+ *p = '.';
+ else
+ *p = '_';
+! #if defined(WIN32) && defined(FEAT_CSCOPE)
+ cookie.fp = fopen_noinh_readbin((char *)fname_exp);
+ #else
+ cookie.fp = mch_fopen((char *)fname_exp, READBIN);
+--- 2931,2937 ----
+ *p = '.';
+ else
+ *p = '_';
+! #ifdef USE_FOPEN_NOINH
+ cookie.fp = fopen_noinh_readbin((char *)fname_exp);
+ #else
+ cookie.fp = mch_fopen((char *)fname_exp, READBIN);
+*** ../vim-7.2.337/src/version.c 2010-01-19 16:12:53.000000000 +0100
+--- src/version.c 2010-01-19 16:20:08.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 338,
+ /**/
+
+--
+~
+~
+~
+".signature" 4 lines, 50 characters written
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.339 b/vim/vim-7.2/7.2.339
new file mode 100644
index 0000000..77aa94d
--- /dev/null
+++ b/vim/vim-7.2/7.2.339
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.339
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.339 (after 7.2.269)
+Problem: Part of --startuptime patch is missing.
+Solution: Add check for time_fd.
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.338/src/ex_cmds2.c 2010-01-19 16:21:55.000000000 +0100
+--- src/ex_cmds2.c 2010-01-19 16:02:53.000000000 +0100
+***************
+*** 3036,3042 ****
+ #endif
+
+ #ifdef STARTUPTIME
+! time_push(&tv_rel, &tv_start);
+ #endif
+
+ #ifdef FEAT_EVAL
+--- 3036,3043 ----
+ #endif
+
+ #ifdef STARTUPTIME
+! if (time_fd != NULL)
+! time_push(&tv_rel, &tv_start);
+ #endif
+
+ #ifdef FEAT_EVAL
+***************
+*** 3162,3170 ****
+ verbose_leave();
+ }
+ #ifdef STARTUPTIME
+! vim_snprintf((char *)IObuff, IOSIZE, "sourcing %s", fname);
+! time_msg((char *)IObuff, &tv_start);
+! time_pop(&tv_rel);
+ #endif
+
+ #ifdef FEAT_EVAL
+--- 3163,3174 ----
+ verbose_leave();
+ }
+ #ifdef STARTUPTIME
+! if (time_fd != NULL)
+! {
+! vim_snprintf((char *)IObuff, IOSIZE, "sourcing %s", fname);
+! time_msg((char *)IObuff, &tv_start);
+! time_pop(&tv_rel);
+! }
+ #endif
+
+ #ifdef FEAT_EVAL
+*** ../vim-7.2.338/src/version.c 2010-01-19 16:21:55.000000000 +0100
+--- src/version.c 2010-01-19 16:25:39.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 339,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+122. You ask if the Netaholics Anonymous t-shirt you ordered can be
+ sent to you via e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.340 b/vim/vim-7.2/7.2.340
new file mode 100644
index 0000000..b0f4bab
--- /dev/null
+++ b/vim/vim-7.2/7.2.340
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.340
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.340
+Problem: Gcc warning for condition that can never be true. (James Vega)
+Solution: Use start_lvl instead flp->lvl.
+Files: src/fold.c
+
+
+*** ../vim-7.2.339/src/fold.c 2009-11-03 18:04:26.000000000 +0100
+--- src/fold.c 2010-01-19 16:45:13.000000000 +0100
+***************
+*** 3239,3246 ****
+ flp->lvl = n;
+ flp->lvl_next = n - 1;
+ /* never start a fold with an end marker */
+! if (flp->lvl_next > flp->lvl)
+! flp->lvl_next = flp->lvl;
+ }
+ }
+ else
+--- 3239,3246 ----
+ flp->lvl = n;
+ flp->lvl_next = n - 1;
+ /* never start a fold with an end marker */
+! if (flp->lvl_next > start_lvl)
+! flp->lvl_next = start_lvl;
+ }
+ }
+ else
+*** ../vim-7.2.339/src/version.c 2010-01-19 16:31:10.000000000 +0100
+--- src/version.c 2010-01-19 17:23:40.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 340,
+ /**/
+
+--
+Would you care for a drink? I mean, if it were, like,
+disabled and you had to look after it?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.341 b/vim/vim-7.2/7.2.341
new file mode 100644
index 0000000..67d5e81
--- /dev/null
+++ b/vim/vim-7.2/7.2.341
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.341
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.341
+Problem: Popup menu wraps to next line when double-wide character doesn't
+ fit. (Jiang Ma)
+Solution: Display a ">" instead. (Dominique Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.340/src/screen.c 2009-11-25 13:03:29.000000000 +0100
+--- src/screen.c 2010-01-19 17:34:21.000000000 +0100
+***************
+*** 6434,6439 ****
+--- 6434,6446 ----
+ else
+ prev_c = u8c;
+ # endif
++ if (col + mbyte_cells > screen_Columns)
++ {
++ /* Only 1 cell left, but character requires 2 cells:
++ * display a '>' in the last column to avoid wrapping. */
++ c = '>';
++ mbyte_cells = 1;
++ }
+ }
+ }
+ #endif
+***************
+*** 9210,9216 ****
+ int force;
+ {
+ /*
+! * Don't delete it right now, when not redrawing or insided a mapping.
+ */
+ if (!redrawing() || (!force && char_avail() && !KeyTyped))
+ redraw_cmdline = TRUE; /* delete mode later */
+--- 9217,9223 ----
+ int force;
+ {
+ /*
+! * Don't delete it right now, when not redrawing or inside a mapping.
+ */
+ if (!redrawing() || (!force && char_avail() && !KeyTyped))
+ redraw_cmdline = TRUE; /* delete mode later */
+*** ../vim-7.2.340/src/version.c 2010-01-19 17:24:20.000000000 +0100
+--- src/version.c 2010-01-19 17:39:56.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 341,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+124. You begin conversations with, "Who is your internet service provider?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.342 b/vim/vim-7.2/7.2.342
new file mode 100644
index 0000000..72bf253
--- /dev/null
+++ b/vim/vim-7.2/7.2.342
@@ -0,0 +1,95 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.342
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.342
+Problem: Popup menu displayed wrong in 'rightleft' mode when there are
+ multi-byte characters.
+Solution: Adjust the column computations. (Dominique Pelle)
+Files: src/popupmnu.c
+
+
+*** ../vim-7.2.341/src/popupmnu.c 2008-11-15 14:10:23.000000000 +0100
+--- src/popupmnu.c 2010-01-19 17:57:05.000000000 +0100
+***************
+*** 345,365 ****
+ if (st != NULL)
+ {
+ char_u *rt = reverse_text(st);
+- char_u *rt_saved = rt;
+- int len, j;
+
+ if (rt != NULL)
+ {
+! len = (int)STRLEN(rt);
+! if (len > pum_width)
+ {
+! for (j = pum_width; j < len; ++j)
+ mb_ptr_adv(rt);
+! len = pum_width;
+ }
+! screen_puts_len(rt, len, row,
+! col - len + 1, attr);
+! vim_free(rt_saved);
+ }
+ vim_free(st);
+ }
+--- 345,380 ----
+ if (st != NULL)
+ {
+ char_u *rt = reverse_text(st);
+
+ if (rt != NULL)
+ {
+! char_u *rt_start = rt;
+! int size;
+!
+! size = vim_strsize(rt);
+! if (size > pum_width)
+ {
+! do
+! {
+! size -= has_mbyte
+! ? (*mb_ptr2cells)(rt) : 1;
+ mb_ptr_adv(rt);
+! } while (size > pum_width);
+!
+! if (size < pum_width)
+! {
+! /* Most left character requires
+! * 2-cells but only 1 cell is
+! * available on screen. Put a
+! * '<' on the left of the pum
+! * item */
+! *(--rt) = '<';
+! size++;
+! }
+ }
+! screen_puts_len(rt, (int)STRLEN(rt),
+! row, col - size + 1, attr);
+! vim_free(rt_start);
+ }
+ vim_free(st);
+ }
+*** ../vim-7.2.341/src/version.c 2010-01-19 17:40:39.000000000 +0100
+--- src/version.c 2010-01-19 18:03:22.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 342,
+ /**/
+
+--
+I have a watch cat! Just break in and she'll watch.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.343 b/vim/vim-7.2/7.2.343
new file mode 100644
index 0000000..2203151
--- /dev/null
+++ b/vim/vim-7.2/7.2.343
@@ -0,0 +1,51 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.343
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.343 (after 7.2.338)
+Problem: Can't compile on Win32.
+Solution: Insert the missing '|'.
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.342/src/ex_cmds2.c 2010-01-19 16:31:10.000000000 +0100
+--- src/ex_cmds2.c 2010-01-19 23:22:40.000000000 +0100
+***************
+*** 2816,2822 ****
+ {
+ int fd_tmp = mch_open(filename, O_RDONLY
+ # ifdef WIN32
+! O_BINARY | O_NOINHERIT
+ # endif
+ , 0);
+
+--- 2816,2822 ----
+ {
+ int fd_tmp = mch_open(filename, O_RDONLY
+ # ifdef WIN32
+! | O_BINARY | O_NOINHERIT
+ # endif
+ , 0);
+
+*** ../vim-7.2.342/src/version.c 2010-01-19 18:05:05.000000000 +0100
+--- src/version.c 2010-01-19 23:24:05.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 343,
+ /**/
+
+--
+I'm writing a book. I've got the page numbers done.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.344 b/vim/vim-7.2/7.2.344
new file mode 100644
index 0000000..788bbc4
--- /dev/null
+++ b/vim/vim-7.2/7.2.344
@@ -0,0 +1,60 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.344
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.344 (after 7.2.343)
+Problem: Can't compile on some systems
+Solution: Move the #ifdef outside of the mch_open macro. (Patrick Texier)
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.343/src/ex_cmds2.c 2010-01-19 23:25:18.000000000 +0100
+--- src/ex_cmds2.c 2010-01-20 21:38:19.000000000 +0100
+***************
+*** 2814,2824 ****
+ fopen_noinh_readbin(filename)
+ char *filename;
+ {
+- int fd_tmp = mch_open(filename, O_RDONLY
+ # ifdef WIN32
+! | O_BINARY | O_NOINHERIT
+ # endif
+- , 0);
+
+ if (fd_tmp == -1)
+ return NULL;
+--- 2814,2824 ----
+ fopen_noinh_readbin(filename)
+ char *filename;
+ {
+ # ifdef WIN32
+! int fd_tmp = mch_open(filename, O_RDONLY | O_BINARY | O_NOINHERIT, 0);
+! # else
+! int fd_tmp = mch_open(filename, O_RDONLY, 0);
+ # endif
+
+ if (fd_tmp == -1)
+ return NULL;
+*** ../vim-7.2.343/src/version.c 2010-01-19 23:25:18.000000000 +0100
+--- src/version.c 2010-01-20 21:38:23.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 344,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+128. You can access the Net -- via your portable and cellular phone.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.345 b/vim/vim-7.2/7.2.345
new file mode 100644
index 0000000..a3b7acf
--- /dev/null
+++ b/vim/vim-7.2/7.2.345
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.345
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.345
+Problem: Tab line is not updated when the value of 'bt' is changed.
+Solution: Call redraw_titles(). (Lech Lorens)
+Files: src/option.c
+
+
+*** ../vim-7.2.344/src/option.c 2009-09-11 15:20:22.000000000 +0200
+--- src/option.c 2010-01-27 15:52:45.000000000 +0100
+***************
+*** 6410,6415 ****
+--- 6410,6418 ----
+ }
+ # endif
+ curbuf->b_help = (curbuf->b_p_bt[0] == 'h');
++ # ifdef FEAT_TITLE
++ redraw_titles();
++ # endif
+ }
+ }
+ #endif
+*** ../vim-7.2.344/src/version.c 2010-01-20 21:41:40.000000000 +0100
+--- src/version.c 2010-01-27 15:57:06.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 345,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+154. You fondle your mouse.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.346 b/vim/vim-7.2/7.2.346
new file mode 100644
index 0000000..479aac6
--- /dev/null
+++ b/vim/vim-7.2/7.2.346
@@ -0,0 +1,110 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.346
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.346
+Problem: Repeating a command with @: causes a mapping to be applied twice.
+Solution: Do not remap characters inserted in the typeahead buffer. (Kana
+ Natsuno)
+Files: src/ops.c
+
+
+*** ../vim-7.2.345/src/ops.c 2010-01-19 14:59:14.000000000 +0100
+--- src/ops.c 2010-01-19 13:04:46.000000000 +0100
+***************
+*** 1301,1310 ****
+ }
+ }
+
+ static int
+ put_in_typebuf(s, esc, colon, silent)
+ char_u *s;
+! int esc; /* Escape CSI characters */
+ int colon; /* add ':' before the line */
+ int silent;
+ {
+--- 1301,1316 ----
+ }
+ }
+
++ /*
++ * Insert register contents "s" into the typeahead buffer, so that it will be
++ * executed again.
++ * When "esc" is TRUE it is to be taken literally: Escape CSI characters and
++ * no remapping.
++ */
+ static int
+ put_in_typebuf(s, esc, colon, silent)
+ char_u *s;
+! int esc;
+ int colon; /* add ':' before the line */
+ int silent;
+ {
+***************
+*** 1312,1318 ****
+
+ put_reedit_in_typebuf(silent);
+ if (colon)
+! retval = ins_typebuf((char_u *)"\n", REMAP_YES, 0, TRUE, silent);
+ if (retval == OK)
+ {
+ char_u *p;
+--- 1318,1324 ----
+
+ put_reedit_in_typebuf(silent);
+ if (colon)
+! retval = ins_typebuf((char_u *)"\n", REMAP_NONE, 0, TRUE, silent);
+ if (retval == OK)
+ {
+ char_u *p;
+***************
+*** 1324,1335 ****
+ if (p == NULL)
+ retval = FAIL;
+ else
+! retval = ins_typebuf(p, REMAP_YES, 0, TRUE, silent);
+ if (esc)
+ vim_free(p);
+ }
+ if (colon && retval == OK)
+! retval = ins_typebuf((char_u *)":", REMAP_YES, 0, TRUE, silent);
+ return retval;
+ }
+
+--- 1330,1342 ----
+ if (p == NULL)
+ retval = FAIL;
+ else
+! retval = ins_typebuf(p, esc ? REMAP_NONE : REMAP_YES,
+! 0, TRUE, silent);
+ if (esc)
+ vim_free(p);
+ }
+ if (colon && retval == OK)
+! retval = ins_typebuf((char_u *)":", REMAP_NONE, 0, TRUE, silent);
+ return retval;
+ }
+
+*** ../vim-7.2.345/src/version.c 2010-01-27 15:57:17.000000000 +0100
+--- src/version.c 2010-01-27 16:25:55.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 346,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+155. You forget to eat because you're too busy surfing the net.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.347 b/vim/vim-7.2/7.2.347
new file mode 100644
index 0000000..e5fa17d
--- /dev/null
+++ b/vim/vim-7.2/7.2.347
@@ -0,0 +1,138 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.347
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.347
+Problem: Crash when executing <expr> mapping redefines that same mapping.
+Solution: Save the values used before evaluating the expression.
+Files: src/getchar.c
+
+
+*** ../vim-7.2.346/src/getchar.c 2009-11-11 16:23:37.000000000 +0100
+--- src/getchar.c 2010-01-27 17:30:42.000000000 +0100
+***************
+*** 2389,2394 ****
+--- 2389,2405 ----
+ /* complete match */
+ if (keylen >= 0 && keylen <= typebuf.tb_len)
+ {
++ #ifdef FEAT_EVAL
++ int save_m_expr;
++ int save_m_noremap;
++ int save_m_silent;
++ char_u *save_m_keys;
++ char_u *save_m_str;
++ #else
++ # define save_m_noremap mp->m_noremap
++ # define save_m_silent mp->m_silent
++ #endif
++
+ /* write chars to script file(s) */
+ if (keylen > typebuf.tb_maplen)
+ gotchars(typebuf.tb_buf + typebuf.tb_off
+***************
+*** 2431,2436 ****
+--- 2442,2457 ----
+ #endif
+
+ #ifdef FEAT_EVAL
++ /* Copy the values from *mp that are used, because
++ * evaluating the expression may invoke a function
++ * that redefines the mapping, thereby making *mp
++ * invalid. */
++ save_m_expr = mp->m_expr;
++ save_m_noremap = mp->m_noremap;
++ save_m_silent = mp->m_silent;
++ save_m_keys = NULL; /* only saved when needed */
++ save_m_str = NULL; /* only saved when needed */
++
+ /*
+ * Handle ":map <expr>": evaluate the {rhs} as an
+ * expression. Save and restore the typeahead so that
+***************
+*** 2446,2452 ****
+ if (tabuf.typebuf_valid)
+ {
+ vgetc_busy = 0;
+! s = eval_map_expr(mp->m_str, NUL);
+ vgetc_busy = save_vgetc_busy;
+ }
+ else
+--- 2467,2475 ----
+ if (tabuf.typebuf_valid)
+ {
+ vgetc_busy = 0;
+! save_m_keys = vim_strsave(mp->m_keys);
+! save_m_str = vim_strsave(mp->m_str);
+! s = eval_map_expr(save_m_str, NUL);
+ vgetc_busy = save_vgetc_busy;
+ }
+ else
+***************
+*** 2470,2486 ****
+ else
+ {
+ i = ins_typebuf(s,
+! mp->m_noremap != REMAP_YES
+! ? mp->m_noremap
+! : STRNCMP(s, mp->m_keys,
+ (size_t)keylen) != 0
+ ? REMAP_YES : REMAP_SKIP,
+! 0, TRUE, cmd_silent || mp->m_silent);
+ #ifdef FEAT_EVAL
+! if (mp->m_expr)
+ vim_free(s);
+ #endif
+ }
+ if (i == FAIL)
+ {
+ c = -1;
+--- 2493,2517 ----
+ else
+ {
+ i = ins_typebuf(s,
+! save_m_noremap != REMAP_YES
+! ? save_m_noremap
+! : STRNCMP(s,
+! #ifdef FEAT_EVAL
+! save_m_keys != NULL ? save_m_keys :
+! #endif
+! mp->m_keys,
+ (size_t)keylen) != 0
+ ? REMAP_YES : REMAP_SKIP,
+! 0, TRUE, cmd_silent || save_m_silent);
+ #ifdef FEAT_EVAL
+! if (save_m_expr)
+ vim_free(s);
+ #endif
+ }
++ #ifdef FEAT_EVAL
++ vim_free(save_m_keys);
++ vim_free(save_m_str);
++ #endif
+ if (i == FAIL)
+ {
+ c = -1;
+*** ../vim-7.2.346/src/version.c 2010-01-27 16:31:00.000000000 +0100
+--- src/version.c 2010-01-27 17:27:32.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 347,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+156. You forget your friend's name but not her e-mail address.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.348 b/vim/vim-7.2/7.2.348
new file mode 100644
index 0000000..5f4ffbd
--- /dev/null
+++ b/vim/vim-7.2/7.2.348
@@ -0,0 +1,254 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.348 (after 7.2.330)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.348 (after 7.2.330)
+Problem: Unicode double-width characters are not up-to date.
+Solution: Produce the double-width table like the others.
+Files: runtime/tools/unicode.vim, src/mbyte.c
+
+
+*** ../vim-7.2.347/runtime/tools/unicode.vim 2010-01-12 19:48:57.000000000 +0100
+--- runtime/tools/unicode.vim 2010-01-27 17:57:17.000000000 +0100
+***************
+*** 187,202 ****
+ wincmd p
+ endfunc
+
+! " Build the ambiguous table in a new buffer.
+ " Uses s:widthprops and s:dataprops.
+! func! BuildAmbiguousTable()
+ let start = -1
+ let end = -1
+ let ranges = []
+ let dataidx = 0
+ for p in s:widthprops
+! if p[1][0] == 'A'
+! let n = ('0x' . p[0]) + 0
+ " Find this char in the data table.
+ while 1
+ let dn = ('0x' . s:dataprops[dataidx][0]) + 0
+--- 187,213 ----
+ wincmd p
+ endfunc
+
+! " Build the double width or ambiguous width table in a new buffer.
+ " Uses s:widthprops and s:dataprops.
+! func! BuildWidthTable(pattern, tableName)
+ let start = -1
+ let end = -1
+ let ranges = []
+ let dataidx = 0
+ for p in s:widthprops
+! if p[1][0] =~ a:pattern
+! if p[0] =~ '\.\.'
+! " It is a range. we don't check for composing char then.
+! let rng = split(p[0], '\.\.')
+! if len(rng) != 2
+! echoerr "Cannot parse range: '" . p[0] . "' in width table"
+! endif
+! let n = ('0x' . rng[0]) + 0
+! let n_last = ('0x' . rng[1]) + 0
+! else
+! let n = ('0x' . p[0]) + 0
+! let n_last = n
+! endif
+ " Find this char in the data table.
+ while 1
+ let dn = ('0x' . s:dataprops[dataidx][0]) + 0
+***************
+*** 205,231 ****
+ endif
+ let dataidx += 1
+ endwhile
+! if dn != n
+ echoerr "Cannot find character " . n . " in data table"
+ endif
+ " Only use the char when it's not a composing char.
+ let dp = s:dataprops[dataidx]
+! if dp[2] != 'Mn' && dp[2] != 'Mc' && dp[2] != 'Me'
+ if start >= 0 && end + 1 == n
+ " continue with same range.
+- let end = n
+ else
+ if start >= 0
+ " produce previous range
+ call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end))
+ endif
+ let start = n
+- if p[0] =~ '\.\.'
+- let end = ('0x' . substitute(p[0], '.*\.\.', '', '')) + 0
+- else
+- let end = n
+- endif
+ endif
+ endif
+ endif
+ endfor
+--- 216,238 ----
+ endif
+ let dataidx += 1
+ endwhile
+! if dn != n && n_last == n
+ echoerr "Cannot find character " . n . " in data table"
+ endif
+ " Only use the char when it's not a composing char.
++ " But use all chars from a range.
+ let dp = s:dataprops[dataidx]
+! if n_last > n || (dp[2] != 'Mn' && dp[2] != 'Mc' && dp[2] != 'Me')
+ if start >= 0 && end + 1 == n
+ " continue with same range.
+ else
+ if start >= 0
+ " produce previous range
+ call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end))
+ endif
+ let start = n
+ endif
++ let end = n_last
+ endif
+ endif
+ endfor
+***************
+*** 235,242 ****
+
+ " New buffer to put the result in.
+ new
+! file ambiguous
+! call setline(1, " static struct interval ambiguous[] =")
+ call setline(2, " {")
+ call append('$', ranges)
+ call setline('$', getline('$')[:-2]) " remove last comma
+--- 242,249 ----
+
+ " New buffer to put the result in.
+ new
+! exe "file " . a:tableName
+! call setline(1, " static struct interval " . a:tableName . "[] =")
+ call setline(2, " {")
+ call append('$', ranges)
+ call setline('$', getline('$')[:-2]) " remove last comma
+***************
+*** 276,280 ****
+ " Parse each line, create a list of lists.
+ call ParseWidthProps()
+
+! " Build the ambiguous table.
+! call BuildAmbiguousTable()
+--- 283,290 ----
+ " Parse each line, create a list of lists.
+ call ParseWidthProps()
+
+! " Build the double width table.
+! call BuildWidthTable('[WF]', 'doublewidth')
+!
+! " Build the ambiguous width table.
+! call BuildWidthTable('A', 'ambiguous')
+*** ../vim-7.2.347/src/mbyte.c 2010-01-12 19:48:57.000000000 +0100
+--- src/mbyte.c 2010-01-27 18:06:35.000000000 +0100
+***************
+*** 1200,1205 ****
+--- 1200,1248 ----
+ utf_char2cells(c)
+ int c;
+ {
++ /* Sorted list of non-overlapping intervals of East Asian double width
++ * characters, generated with ../runtime/tools/unicode.vim. */
++ static struct interval doublewidth[] =
++ {
++ {0x1100, 0x115f},
++ {0x11a3, 0x11a7},
++ {0x11fa, 0x11ff},
++ {0x2329, 0x232a},
++ {0x2e80, 0x2e99},
++ {0x2e9b, 0x2ef3},
++ {0x2f00, 0x2fd5},
++ {0x2ff0, 0x2ffb},
++ {0x3000, 0x3029},
++ {0x3030, 0x303e},
++ {0x3041, 0x3096},
++ {0x309b, 0x30ff},
++ {0x3105, 0x312d},
++ {0x3131, 0x318e},
++ {0x3190, 0x31b7},
++ {0x31c0, 0x31e3},
++ {0x31f0, 0x321e},
++ {0x3220, 0x3247},
++ {0x3250, 0x32fe},
++ {0x3300, 0x4dbf},
++ {0x4e00, 0xa48c},
++ {0xa490, 0xa4c6},
++ {0xa960, 0xa97c},
++ {0xac00, 0xd7a3},
++ {0xd7b0, 0xd7c6},
++ {0xd7cb, 0xd7fb},
++ {0xf900, 0xfaff},
++ {0xfe10, 0xfe19},
++ {0xfe30, 0xfe52},
++ {0xfe54, 0xfe66},
++ {0xfe68, 0xfe6b},
++ {0xff01, 0xff60},
++ {0xffe0, 0xffe6},
++ {0x1f200, 0x1f200},
++ {0x1f210, 0x1f231},
++ {0x1f240, 0x1f248},
++ {0x20000, 0x2fffd},
++ {0x30000, 0x3fffd}
++ };
+ /* Sorted list of non-overlapping intervals of East Asian Ambiguous
+ * characters, generated with ../runtime/tools/unicode.vim. */
+ static struct interval ambiguous[] =
+***************
+*** 1403,1422 ****
+ #else
+ if (!utf_printable(c))
+ return 6; /* unprintable, displays <xxxx> */
+! if (c >= 0x1100
+! && (c <= 0x115f /* Hangul Jamo */
+! || c == 0x2329
+! || c == 0x232a
+! || (c >= 0x2e80 && c <= 0xa4cf
+! && c != 0x303f) /* CJK ... Yi */
+! || (c >= 0xac00 && c <= 0xd7a3) /* Hangul Syllables */
+! || (c >= 0xf900 && c <= 0xfaff) /* CJK Compatibility
+! Ideographs */
+! || (c >= 0xfe30 && c <= 0xfe6f) /* CJK Compatibility Forms */
+! || (c >= 0xff00 && c <= 0xff60) /* Fullwidth Forms */
+! || (c >= 0xffe0 && c <= 0xffe6)
+! || (c >= 0x20000 && c <= 0x2fffd)
+! || (c >= 0x30000 && c <= 0x3fffd)))
+ return 2;
+ #endif
+ }
+--- 1446,1452 ----
+ #else
+ if (!utf_printable(c))
+ return 6; /* unprintable, displays <xxxx> */
+! if (intable(doublewidth, sizeof(doublewidth), c))
+ return 2;
+ #endif
+ }
+*** ../vim-7.2.347/src/version.c 2010-01-27 17:31:38.000000000 +0100
+--- src/version.c 2010-01-27 18:25:50.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 348,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+157. You fum through a magazine, you first check to see if it has a web
+ address.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.349 b/vim/vim-7.2/7.2.349
new file mode 100644
index 0000000..7d0be02
--- /dev/null
+++ b/vim/vim-7.2/7.2.349
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.349
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.349
+Problem: CTRL-W gf doesn't put the new tab in the same place as "tab split"
+ and "gf". (Tony Mechelynck)
+Solution: Store the tab number in cmdmod.tab.
+Files: src/window.c
+
+
+*** ../vim-7.2.348/src/window.c 2009-06-24 17:31:27.000000000 +0200
+--- src/window.c 2010-01-27 20:23:22.000000000 +0100
+***************
+*** 626,632 ****
+ #ifdef FEAT_SEARCHPATH
+ case 'f': /* CTRL-W gf: "gf" in a new tab page */
+ case 'F': /* CTRL-W gF: "gF" in a new tab page */
+! cmdmod.tab = TRUE;
+ nchar = xchar;
+ goto wingotofile;
+ #endif
+--- 626,632 ----
+ #ifdef FEAT_SEARCHPATH
+ case 'f': /* CTRL-W gf: "gf" in a new tab page */
+ case 'F': /* CTRL-W gF: "gF" in a new tab page */
+! cmdmod.tab = tabpage_index(curtab) + 1;
+ nchar = xchar;
+ goto wingotofile;
+ #endif
+*** ../vim-7.2.348/src/version.c 2010-01-27 18:29:21.000000000 +0100
+--- src/version.c 2010-01-27 20:25:43.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 349,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+159. You get excited whenever discussing your hard drive.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.350 b/vim/vim-7.2/7.2.350
new file mode 100644
index 0000000..7715eb3
--- /dev/null
+++ b/vim/vim-7.2/7.2.350
@@ -0,0 +1,86 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.350
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.350
+Problem: Win32: When changing font the window may jump from the secondary
+ to the primary screen. (Michael Wookey)
+Solution: When the screen position was negative don't correct it to zero.
+Files: src/gui.c
+
+
+*** ../vim-7.2.349/src/gui.c 2009-09-23 18:14:13.000000000 +0200
+--- src/gui.c 2010-01-27 21:02:32.000000000 +0100
+***************
+*** 1390,1395 ****
+--- 1390,1396 ----
+ int un_maximize = mustset;
+ int did_adjust = 0;
+ #endif
++ int x = -1, y = -1;
+
+ if (!gui.shell_created)
+ return;
+***************
+*** 1406,1411 ****
+--- 1407,1416 ----
+
+ base_width = gui_get_base_width();
+ base_height = gui_get_base_height();
++ if (fit_to_display)
++ /* Remember the original window position. */
++ gui_mch_get_winpos(&x, &y);
++
+ #ifdef USE_SUN_WORKSHOP
+ if (!mustset && usingSunWorkShop
+ && workshop_get_width_height(&width, &height))
+***************
+*** 1473,1483 ****
+
+ gui_mch_set_shellsize(width, height, min_width, min_height,
+ base_width, base_height, direction);
+- if (fit_to_display)
+- {
+- int x, y;
+
+! /* Some window managers put the Vim window left of/above the screen. */
+ gui_mch_update();
+ if (gui_mch_get_winpos(&x, &y) == OK && (x < 0 || y < 0))
+ gui_mch_set_winpos(x < 0 ? 0 : x, y < 0 ? 0 : y);
+--- 1478,1489 ----
+
+ gui_mch_set_shellsize(width, height, min_width, min_height,
+ base_width, base_height, direction);
+
+! if (fit_to_display && x >= 0 && y >= 0)
+! {
+! /* Some window managers put the Vim window left of/above the screen.
+! * Only change the position if it wasn't already negative before
+! * (happens on MS-Windows with a secondary monitor). */
+ gui_mch_update();
+ if (gui_mch_get_winpos(&x, &y) == OK && (x < 0 || y < 0))
+ gui_mch_set_winpos(x < 0 ? 0 : x, y < 0 ? 0 : y);
+*** ../vim-7.2.349/src/version.c 2010-01-27 20:26:41.000000000 +0100
+--- src/version.c 2010-01-27 21:03:41.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 350,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+160. You get in the elevator and double-click the button for the floor
+ you want.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.351 b/vim/vim-7.2/7.2.351
new file mode 100644
index 0000000..55b28f6
--- /dev/null
+++ b/vim/vim-7.2/7.2.351
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.351 (after 7.2.347)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.351 (after 7.2.347)
+Problem: Can't build with some compilers.
+Solution: Move the #ifdef outside of a macro. Cleanup the code.
+Files: src/getchar.c
+
+
+*** ../vim-7.2.350/src/getchar.c 2010-01-27 17:31:38.000000000 +0100
+--- src/getchar.c 2010-01-28 22:42:22.000000000 +0100
+***************
+*** 2492,2508 ****
+ i = FAIL;
+ else
+ {
+! i = ins_typebuf(s,
+! save_m_noremap != REMAP_YES
+! ? save_m_noremap
+! : STRNCMP(s,
+ #ifdef FEAT_EVAL
+! save_m_keys != NULL ? save_m_keys :
+ #endif
+! mp->m_keys,
+! (size_t)keylen) != 0
+! ? REMAP_YES : REMAP_SKIP,
+! 0, TRUE, cmd_silent || save_m_silent);
+ #ifdef FEAT_EVAL
+ if (save_m_expr)
+ vim_free(s);
+--- 2492,2515 ----
+ i = FAIL;
+ else
+ {
+! int noremap;
+!
+! if (save_m_noremap != REMAP_YES)
+! noremap = save_m_noremap;
+! else if (
+ #ifdef FEAT_EVAL
+! STRNCMP(s, save_m_keys != NULL
+! ? save_m_keys : mp->m_keys,
+! (size_t)keylen)
+! #else
+! STRNCMP(s, mp->m_keys, (size_t)keylen)
+ #endif
+! != 0)
+! noremap = REMAP_YES;
+! else
+! noremap = REMAP_SKIP;
+! i = ins_typebuf(s, noremap,
+! 0, TRUE, cmd_silent || save_m_silent);
+ #ifdef FEAT_EVAL
+ if (save_m_expr)
+ vim_free(s);
+*** ../vim-7.2.350/src/version.c 2010-01-27 21:04:58.000000000 +0100
+--- src/version.c 2010-01-28 22:50:53.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 351,
+ /**/
+
+--
+"Hit any key to continue" it said, but nothing happened after F sharp.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.352 b/vim/vim-7.2/7.2.352
new file mode 100644
index 0000000..d2e22f2
--- /dev/null
+++ b/vim/vim-7.2/7.2.352
@@ -0,0 +1,62 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.352
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.352
+Problem: Win64: Vim doesn't work when cross-compiled with MingW libraries.
+Solution: Always return TRUE for the WM_NCCREATE message. (Andy Kittner)
+Files: src/gui_w48.c
+
+
+*** ../vim-7.2.351/src/gui_w48.c 2009-01-28 21:22:20.000000000 +0100
+--- src/gui_w48.c 2010-02-03 12:07:11.000000000 +0100
+***************
+*** 1084,1092 ****
+ case WM_NOTIFY: Handle_WM_Notify(hwnd, (LPNMHDR)lParam);
+ return TRUE;
+ #endif
+
+! default:
+! return MyWindowProc(hwnd, uMsg, wParam, lParam);
+ }
+ }
+
+--- 1084,1098 ----
+ case WM_NOTIFY: Handle_WM_Notify(hwnd, (LPNMHDR)lParam);
+ return TRUE;
+ #endif
++ /* Workaround for the problem that MyWindowProc() returns FALSE on 64
++ * bit windows when cross-compiled using Mingw libraries. (Andy
++ * Kittner) */
++ case WM_NCCREATE:
++ MyWindowProc(hwnd, uMsg, wParam, lParam);
++ return TRUE;
+
+! default:
+! return MyWindowProc(hwnd, uMsg, wParam, lParam);
+ }
+ }
+
+*** ../vim-7.2.351/src/version.c 2010-01-28 22:58:10.000000000 +0100
+--- src/version.c 2010-02-03 12:16:30.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 352,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+185. You order fast food over the Internet
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.353 b/vim/vim-7.2/7.2.353
new file mode 100644
index 0000000..06f9f17
--- /dev/null
+++ b/vim/vim-7.2/7.2.353
@@ -0,0 +1,173 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.353
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.353
+Problem: No command line completion for ":profile".
+Solution: Complete the subcommand and file name.
+Files: src/ex_docmd.c, src/ex_cmds2.c, src/ex_getln.c,
+ src/proto/ex_cmds2.pro, src/vim.h
+
+
+*** ../vim-7.2.352/src/ex_docmd.c 2009-11-03 12:38:50.000000000 +0100
+--- src/ex_docmd.c 2010-02-03 14:40:14.000000000 +0100
+***************
+*** 3804,3809 ****
+--- 3804,3814 ----
+ xp->xp_context = EXPAND_NOTHING;
+ break;
+ #endif
++ #if defined(FEAT_PROFILE)
++ case CMD_profile:
++ set_context_in_profile_cmd(xp, arg);
++ break;
++ #endif
+
+ #endif /* FEAT_CMDL_COMPL */
+
+*** ../vim-7.2.352/src/ex_cmds2.c 2010-01-20 21:41:40.000000000 +0100
+--- src/ex_cmds2.c 2010-02-03 14:50:08.000000000 +0100
+***************
+*** 1115,1120 ****
+--- 1115,1193 ----
+ }
+ }
+
++ /* Command line expansion for :profile. */
++ static enum
++ {
++ PEXP_SUBCMD, /* expand :profile sub-commands */
++ PEXP_FUNC, /* expand :profile func {funcname} */
++ } pexpand_what;
++
++ static char *pexpand_cmds[] = {
++ "start",
++ #define PROFCMD_START 0
++ "pause",
++ #define PROFCMD_PAUSE 1
++ "continue",
++ #define PROFCMD_CONTINUE 2
++ "func",
++ #define PROFCMD_FUNC 3
++ "file",
++ #define PROFCMD_FILE 4
++ NULL
++ #define PROFCMD_LAST 5
++ };
++
++ /*
++ * Function given to ExpandGeneric() to obtain the profile command
++ * specific expansion.
++ */
++ char_u *
++ get_profile_name(xp, idx)
++ expand_T *xp UNUSED;
++ int idx;
++ {
++ switch (pexpand_what)
++ {
++ case PEXP_SUBCMD:
++ return (char_u *)pexpand_cmds[idx];
++ /* case PEXP_FUNC: TODO */
++ default:
++ return NULL;
++ }
++ }
++
++ /*
++ * Handle command line completion for :profile command.
++ */
++ void
++ set_context_in_profile_cmd(xp, arg)
++ expand_T *xp;
++ char_u *arg;
++ {
++ char_u *end_subcmd;
++ int len;
++
++ /* Default: expand subcommands. */
++ xp->xp_context = EXPAND_PROFILE;
++ pexpand_what = PEXP_SUBCMD;
++ xp->xp_pattern = arg;
++
++ end_subcmd = skiptowhite(arg);
++ if (*end_subcmd == NUL)
++ return;
++
++ len = end_subcmd - arg;
++ if (len == 5 && STRNCMP(arg, "start", 5) == 0)
++ {
++ xp->xp_context = EXPAND_FILES;
++ xp->xp_pattern = skipwhite(end_subcmd);
++ return;
++ }
++
++ /* TODO: expand function names after "func" */
++ xp->xp_context = EXPAND_NOTHING;
++ }
++
+ /*
+ * Dump the profiling info.
+ */
+*** ../vim-7.2.352/src/ex_getln.c 2010-01-19 14:59:14.000000000 +0100
+--- src/ex_getln.c 2010-02-03 14:38:43.000000000 +0100
+***************
+*** 4522,4527 ****
+--- 4522,4530 ----
+ #ifdef FEAT_SIGNS
+ {EXPAND_SIGN, get_sign_name, TRUE},
+ #endif
++ #ifdef FEAT_PROFILE
++ {EXPAND_PROFILE, get_profile_name, TRUE},
++ #endif
+ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+ && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+ {EXPAND_LANGUAGE, get_lang_arg, TRUE},
+*** ../vim-7.2.352/src/proto/ex_cmds2.pro 2008-01-06 20:07:25.000000000 +0100
+--- src/proto/ex_cmds2.pro 2010-02-03 14:43:12.000000000 +0100
+***************
+*** 24,29 ****
+--- 24,31 ----
+ int profile_equal __ARGS((proftime_T *tm1, proftime_T *tm2));
+ int profile_cmp __ARGS((proftime_T *tm1, proftime_T *tm2));
+ void ex_profile __ARGS((exarg_T *eap));
++ char_u *get_profile_name __ARGS((expand_T *xp, int idx));
++ void set_context_in_profile_cmd __ARGS((expand_T *xp, char_u *arg));
+ void profile_dump __ARGS((void));
+ void script_prof_save __ARGS((proftime_T *tm));
+ void script_prof_restore __ARGS((proftime_T *tm));
+*** ../vim-7.2.352/src/vim.h 2009-06-16 11:08:13.000000000 +0200
+--- src/vim.h 2010-02-03 14:40:42.000000000 +0100
+***************
+*** 718,723 ****
+--- 718,724 ----
+ #define EXPAND_SHELLCMD 32
+ #define EXPAND_CSCOPE 33
+ #define EXPAND_SIGN 34
++ #define EXPAND_PROFILE 35
+
+ /* Values for exmode_active (0 is no exmode) */
+ #define EXMODE_NORMAL 1
+*** ../vim-7.2.352/src/version.c 2010-02-03 12:23:16.000000000 +0100
+--- src/version.c 2010-02-03 15:07:26.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 353,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+188. You purchase a laptop so you can surf while sitting on the can.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.354 b/vim/vim-7.2/7.2.354
new file mode 100644
index 0000000..b4f5066
--- /dev/null
+++ b/vim/vim-7.2/7.2.354
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.354
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.354
+Problem: Japanese single-width double-byte characters not handled correctly.
+Solution: Put 0x8e in ScreenLines[] and the second byte in ScreenLines2[].
+ (partly by Kikuchan)
+Files: src/screen.c
+
+
+*** ../vim-7.2.353/src/screen.c 2010-01-19 17:40:39.000000000 +0100
+--- src/screen.c 2010-02-03 15:47:19.000000000 +0100
+***************
+*** 2335,2347 ****
+ if (cells > 1)
+ ScreenLines[idx + 1] = 0;
+ }
+! else if (cells > 1) /* double-byte character */
+! {
+! if (enc_dbcs == DBCS_JPNU && *p == 0x8e)
+! ScreenLines2[idx] = p[1];
+! else
+! ScreenLines[idx + 1] = p[1];
+! }
+ col += cells;
+ idx += cells;
+ p += c_len;
+--- 2335,2346 ----
+ if (cells > 1)
+ ScreenLines[idx + 1] = 0;
+ }
+! else if (enc_dbcs == DBCS_JPNU && *p == 0x8e)
+! /* double-byte single width character */
+! ScreenLines2[idx] = p[1];
+! else if (cells > 1)
+! /* double-width character */
+! ScreenLines[idx + 1] = p[1];
+ col += cells;
+ idx += cells;
+ p += c_len;
+***************
+*** 4631,4637 ****
+--- 4630,4640 ----
+ ScreenLines[off] = c;
+ #ifdef FEAT_MBYTE
+ if (enc_dbcs == DBCS_JPNU)
++ {
++ if ((mb_c & 0xff00) == 0x8e00)
++ ScreenLines[off] = 0x8e;
+ ScreenLines2[off] = mb_c & 0xff;
++ }
+ else if (enc_utf8)
+ {
+ if (mb_utf8)
+*** ../vim-7.2.353/src/version.c 2010-02-03 15:14:15.000000000 +0100
+--- src/version.c 2010-02-03 15:43:43.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 354,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+189. You put your e-mail address in the upper left-hand corner of envelopes.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.355 b/vim/vim-7.2/7.2.355
new file mode 100644
index 0000000..b23d44a
--- /dev/null
+++ b/vim/vim-7.2/7.2.355
@@ -0,0 +1,88 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.355
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.355
+Problem: Computing the cursor column in validate_cursor_col() is wrong when
+ line numbers are used and 'n' is not in 'cpoptions', causing the
+ popup menu to be positioned wrong.
+Solution: Correctly use the offset. (partly by Dominique Pelle)
+Files: src/move.c
+
+
+*** ../vim-7.2.354/src/move.c 2009-11-03 16:22:59.000000000 +0100
+--- src/move.c 2010-02-03 17:15:16.000000000 +0100
+***************
+*** 889,894 ****
+--- 889,895 ----
+ {
+ colnr_T off;
+ colnr_T col;
++ int width;
+
+ validate_virtcol();
+ if (!(curwin->w_valid & VALID_WCOL))
+***************
+*** 896,910 ****
+ col = curwin->w_virtcol;
+ off = curwin_col_off();
+ col += off;
+
+ /* long line wrapping, adjust curwin->w_wrow */
+ if (curwin->w_p_wrap
+ && col >= (colnr_T)W_WIDTH(curwin)
+! && W_WIDTH(curwin) - off + curwin_col_off2() > 0)
+! {
+! col -= W_WIDTH(curwin);
+! col = col % (W_WIDTH(curwin) - off + curwin_col_off2());
+! }
+ if (col > (int)curwin->w_leftcol)
+ col -= curwin->w_leftcol;
+ else
+--- 897,910 ----
+ col = curwin->w_virtcol;
+ off = curwin_col_off();
+ col += off;
++ width = W_WIDTH(curwin) - off + curwin_col_off2();
+
+ /* long line wrapping, adjust curwin->w_wrow */
+ if (curwin->w_p_wrap
+ && col >= (colnr_T)W_WIDTH(curwin)
+! && width > 0)
+! /* use same formula as what is used in curs_columns() */
+! col -= ((col - W_WIDTH(curwin)) / width + 1) * width;
+ if (col > (int)curwin->w_leftcol)
+ col -= curwin->w_leftcol;
+ else
+***************
+*** 1041,1046 ****
+--- 1041,1047 ----
+ /* long line wrapping, adjust curwin->w_wrow */
+ if (curwin->w_wcol >= W_WIDTH(curwin))
+ {
++ /* this same formula is used in validate_cursor_col() */
+ n = (curwin->w_wcol - W_WIDTH(curwin)) / width + 1;
+ curwin->w_wcol -= n * width;
+ curwin->w_wrow += n;
+*** ../vim-7.2.354/src/version.c 2010-02-03 15:47:59.000000000 +0100
+--- src/version.c 2010-02-03 17:40:39.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 355,
+ /**/
+
+--
+I'm in shape. Round IS a shape.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.356 b/vim/vim-7.2/7.2.356
new file mode 100644
index 0000000..51b646c
--- /dev/null
+++ b/vim/vim-7.2/7.2.356
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.356
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.356
+Problem: When 'foldmethod' is changed not all folds are closed as expected.
+Solution: In foldUpdate() correct the start position and reset fd_flags when
+ w_foldinvalid is set. (Lech Lorens)
+Files: src/fold.c
+
+
+*** ../vim-7.2.355/src/fold.c 2010-01-19 17:24:20.000000000 +0100
+--- src/fold.c 2010-02-03 18:08:11.000000000 +0100
+***************
+*** 849,859 ****
+ fold_T *fp;
+
+ /* Mark all folds from top to bot as maybe-small. */
+! (void)foldFind(&curwin->w_folds, curwin->w_cursor.lnum, &fp);
+ while (fp < (fold_T *)curwin->w_folds.ga_data + curwin->w_folds.ga_len
+ && fp->fd_top < bot)
+ {
+ fp->fd_small = MAYBE;
+ ++fp;
+ }
+
+--- 849,865 ----
+ fold_T *fp;
+
+ /* Mark all folds from top to bot as maybe-small. */
+! (void)foldFind(&curwin->w_folds, top, &fp);
+ while (fp < (fold_T *)curwin->w_folds.ga_data + curwin->w_folds.ga_len
+ && fp->fd_top < bot)
+ {
+ fp->fd_small = MAYBE;
++
++ /* Not sure if this is the right place to reset fd_flags (suggested by
++ * Lech Lorens). */
++ if (wp->w_foldinvalid)
++ fp->fd_flags = FD_LEVEL;
++
+ ++fp;
+ }
+
+*** ../vim-7.2.355/src/version.c 2010-02-03 17:42:59.000000000 +0100
+--- src/version.c 2010-02-03 18:12:34.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 356,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+190. You quickly hand over your wallet, leather jacket, and car keys
+ during a mugging, then proceed to beat the crap out of your
+ assailant when he asks for your laptop.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.357 b/vim/vim-7.2/7.2.357
new file mode 100644
index 0000000..e1998a8
--- /dev/null
+++ b/vim/vim-7.2/7.2.357
@@ -0,0 +1,49 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.357
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.357
+Problem: When changing 'fileformat' from/to "mac" and there is a CR in the
+ text the display is wrong.
+Solution: Redraw the text when 'fileformat' is changed. (Ben Schmidt)
+Files: src/option.c
+
+
+*** ../vim-7.2.356/src/option.c 2010-01-27 15:57:17.000000000 +0100
+--- src/option.c 2010-02-11 16:57:19.000000000 +0100
+***************
+*** 5867,5872 ****
+--- 5867,5876 ----
+ #endif
+ /* update flag in swap file */
+ ml_setflags(curbuf);
++ /* Redraw needed when switching to/from "mac": a CR in the text
++ * will be displayed differently. */
++ if (get_fileformat(curbuf) == EOL_MAC || *oldval == 'm')
++ redraw_curbuf_later(NOT_VALID);
+ }
+ }
+
+*** ../vim-7.2.356/src/version.c 2010-02-03 18:14:41.000000000 +0100
+--- src/version.c 2010-02-11 17:01:36.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 357,
+ /**/
+
+--
+From the classified section of a city newspaper:
+Dog for sale: eats anything and is fond of children.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.358 b/vim/vim-7.2/7.2.358
new file mode 100644
index 0000000..524049d
--- /dev/null
+++ b/vim/vim-7.2/7.2.358
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.358
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.358
+Problem: Compiler warnings on VMS. (Zoltan Arpadffy)
+Solution: Pass array itself instead its address. Return a value.
+Files: src/gui_gtk_x11.c, src/os_unix.c
+
+
+*** ../vim-7.2.357/src/gui_gtk_x11.c 2009-11-03 18:13:36.000000000 +0100
+--- src/gui_gtk_x11.c 2010-02-11 18:00:28.000000000 +0100
+***************
+*** 6190,6196 ****
+ int pcc[MAX_MCO];
+
+ /* TODO: use the composing characters */
+! c = utfc_ptr2char_len(p, &pcc, len - (p - s));
+ if (c >= 0x10000) /* show chars > 0xffff as ? */
+ c = 0xbf;
+ buf[textlen].byte1 = c >> 8;
+--- 6190,6196 ----
+ int pcc[MAX_MCO];
+
+ /* TODO: use the composing characters */
+! c = utfc_ptr2char_len(p, pcc, len - (p - s));
+ if (c >= 0x10000) /* show chars > 0xffff as ? */
+ c = 0xbf;
+ buf[textlen].byte1 = c >> 8;
+*** ../vim-7.2.357/src/os_unix.c 2009-07-22 13:27:50.000000000 +0200
+--- src/os_unix.c 2010-02-11 18:10:20.000000000 +0100
+***************
+*** 1471,1476 ****
+--- 1471,1479 ----
+ {
+ /* This function should not return, it causes exit(). Longjump instead. */
+ LONGJMP(lc_jump_env, 1);
++ # ifdef VMS
++ return 0; /* avoid the compiler complains about missing return value */
++ # endif
+ }
+ # endif
+
+***************
+*** 1490,1495 ****
+--- 1493,1501 ----
+
+ /* This function should not return, it causes exit(). Longjump instead. */
+ LONGJMP(x_jump_env, 1);
++ # ifdef VMS
++ return 0; /* avoid the compiler complains about missing return value */
++ # endif
+ }
+ #endif
+
+*** ../vim-7.2.357/src/version.c 2010-02-11 17:02:04.000000000 +0100
+--- src/version.c 2010-02-11 18:10:45.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 358,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+221. Your wife melts your keyboard in the oven.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/7.2.359 b/vim/vim-7.2/7.2.359
new file mode 100644
index 0000000..eb7ade2
--- /dev/null
+++ b/vim/vim-7.2/7.2.359
@@ -0,0 +1,68 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.359
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.359
+Problem: Crash when using the Netbeans join command.
+Solution: Make sure the ml_flush_line() function is not used recursively.
+ (Xavier de Gaye)
+Files: src/memline.c
+
+
+*** ../vim-7.2.358/src/memline.c 2009-11-17 17:13:03.000000000 +0100
+--- src/memline.c 2010-02-11 18:47:48.000000000 +0100
+***************
+*** 3087,3098 ****
+--- 3087,3105 ----
+ int start;
+ int count;
+ int i;
++ static int entered = FALSE;
+
+ if (buf->b_ml.ml_line_lnum == 0 || buf->b_ml.ml_mfp == NULL)
+ return; /* nothing to do */
+
+ if (buf->b_ml.ml_flags & ML_LINE_DIRTY)
+ {
++ /* This code doesn't work recursively, but Netbeans may call back here
++ * when obtaining the cursor position. */
++ if (entered)
++ return;
++ entered = TRUE;
++
+ lnum = buf->b_ml.ml_line_lnum;
+ new_line = buf->b_ml.ml_line_ptr;
+
+***************
+*** 3160,3165 ****
+--- 3167,3174 ----
+ }
+ }
+ vim_free(new_line);
++
++ entered = FALSE;
+ }
+
+ buf->b_ml.ml_line_lnum = 0;
+*** ../vim-7.2.358/src/version.c 2010-02-11 18:19:32.000000000 +0100
+--- src/version.c 2010-02-11 18:53:55.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 359,
+ /**/
+
+--
+Your fault: core dumped
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vim/vim-7.2/spell/check/check_aa.aff b/vim/vim-7.2/spell/check/check_aa.aff
new file mode 100644
index 0000000..20e1633
--- /dev/null
+++ b/vim/vim-7.2/spell/check/check_aa.aff
@@ -0,0 +1,50 @@
+SET ISO8859-1
+TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
+
+FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
+
+SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
+SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
+
+MIDWORD '-
+
+PFXPOSTPONE
+
+COMPOUNDFLAG x
+COMPOUNDMIN 5
+
+KEEPCASE =
+RARE ?
+BAD !
+
+MAP 9
+MAP aàáâãäå
+MAP eèéêë
+MAP iìíîï
+MAP oòóôõö
+MAP uùúûü
+MAP nñ
+MAP cç
+MAP yÿý
+MAP sß
+
+PFX A Y 1
+PFX A 0 aan .
+
+PFX B N 1
+PFX B 0 be .
+
+PFX C Y 1
+PFX C a in aa
+
+SFX J N 1
+SFX J 0 tje [aeiou][aeiou]
+
+SFX Z N 1
+SFX Z af ven aaf
+
+REP 2
+REP g ch
+REP cht gd
diff --git a/vim/vim-7.2/spell/check/check_aa.dic b/vim/vim-7.2/spell/check/check_aa.dic
new file mode 100644
index 0000000..697a9c9
--- /dev/null
+++ b/vim/vim-7.2/spell/check/check_aa.dic
@@ -0,0 +1,12 @@
+1234
+#Some Comment that isn't supposed to matter
+/Another Comment that isn't supposed to matter
+'s-Graveland
+A4
+AagJe
+Aalburg/xZBCJZ
+Aals'meer/x
+Aal-ten/x
+Aalburgers/x
+Aalsmeer/x
+Aalten/x
diff --git a/vim/vim-7.2/spell/check/check_bb.aff b/vim/vim-7.2/spell/check/check_bb.aff
new file mode 100644
index 0000000..20e1633
--- /dev/null
+++ b/vim/vim-7.2/spell/check/check_bb.aff
@@ -0,0 +1,50 @@
+SET ISO8859-1
+TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
+
+FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
+
+SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
+SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
+
+MIDWORD '-
+
+PFXPOSTPONE
+
+COMPOUNDFLAG x
+COMPOUNDMIN 5
+
+KEEPCASE =
+RARE ?
+BAD !
+
+MAP 9
+MAP aàáâãäå
+MAP eèéêë
+MAP iìíîï
+MAP oòóôõö
+MAP uùúûü
+MAP nñ
+MAP cç
+MAP yÿý
+MAP sß
+
+PFX A Y 1
+PFX A 0 aan .
+
+PFX B N 1
+PFX B 0 be .
+
+PFX C Y 1
+PFX C a in aa
+
+SFX J N 1
+SFX J 0 tje [aeiou][aeiou]
+
+SFX Z N 1
+SFX Z af ven aaf
+
+REP 2
+REP g ch
+REP cht gd
diff --git a/vim/vim-7.2/spell/check/check_bb.dic b/vim/vim-7.2/spell/check/check_bb.dic
new file mode 100644
index 0000000..c01e716
--- /dev/null
+++ b/vim/vim-7.2/spell/check/check_bb.dic
@@ -0,0 +1,12 @@
+1234
+#Some Comment that isn't supposed to matter
+/Another Comment that isn't supposed to matter
+'s-Graveland
+A4
+AagJe
+Aalburg/xZBCJZ
+Aals'meer/x
+Aal-ten/x
+foobar/=
+rare/?
+Emacs/!
diff --git a/vim/vim-7.2/spell/check/main.aap b/vim/vim-7.2/spell/check/main.aap
new file mode 100644
index 0000000..a47351f
--- /dev/null
+++ b/vim/vim-7.2/spell/check/main.aap
@@ -0,0 +1,15 @@
+# Aap recipe for a dummy spell file.
+# This is used to check if the .spl file format changes.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+ VIM = ../../../src/vim
+@else:
+ :progsearch VIM vim
+
+all: check.latin1.spl
+
+check.latin1.spl : $VIM check_aa.aff check_aa.dic check_bb.aff check_bb.dic
+ :sys $VIM -u NONE -e -c "mkspell! check check_aa check_bb" -c q
+
+# vim: set sts=4 sw=4 :
diff --git a/vim/vim-7.2/spell/tet/main.aap b/vim/vim-7.2/spell/tet/main.aap
new file mode 100644
index 0000000..617c8a2
--- /dev/null
+++ b/vim/vim-7.2/spell/tet/main.aap
@@ -0,0 +1,79 @@
+# Aap recipe for Tetum Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+ VIM = ../../../src/vim
+@else:
+ :progsearch VIM vim
+
+SPELLDIR = ..
+FILES = tet_ID.aff tet_ID.dic
+
+# I don't hava a Tetum locale, use the Dutch one instead.
+all: $SPELLDIR/tet.latin1.spl $SPELLDIR/tet.utf-8.spl ../README_tet.txt
+
+$SPELLDIR/tet.latin1.spl : $FILES
+ :sys env LANG=nl_NL.ISO8859-1
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/tet tet_ID" -c q
+
+$SPELLDIR/tet.utf-8.spl : $FILES
+ :sys env LANG=nl_NL.UTF-8
+ $VIM -u NONE -e -c "mkspell! $SPELLDIR/tet tet_ID" -c q
+
+../README_tet.txt : README_tet_ID.txt
+ :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} tet_ID.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+tet_ID.aff tet_ID.dic: {buildcheck=}
+ :assertpkg unzip patch
+ :fetch tet_ID.zip
+ :sys $UNZIP tet_ID.zip
+ :delete tet_ID.zip
+ @if not os.path.exists('tet_ID.orig.aff'):
+ :copy tet_ID.aff tet_ID.orig.aff
+ @if not os.path.exists('tet_ID.orig.dic'):
+ :copy tet_ID.dic tet_ID.orig.dic
+ @if os.path.exists('tet_ID.diff'):
+ :sys patch <tet_ID.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+ :assertpkg diff
+ :sys {force} diff -a -C 1 tet_ID.orig.aff tet_ID.aff >tet_ID.diff
+ :sys {force} diff -a -C 1 tet_ID.orig.dic tet_ID.dic >>tet_ID.diff
+
+
+# Check for updated OpenOffice spell files. When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+ :assertpkg unzip diff
+ :fetch tet_ID.zip
+ :mkdir tmp
+ :cd tmp
+ @try:
+ @import stat
+ :sys $UNZIP ../tet_ID.zip
+ :sys {force} diff ../tet_ID.orig.aff tet_ID.aff >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy tet_ID.aff ../tet_ID.new.aff
+ :sys {force} diff ../tet_ID.orig.dic tet_ID.dic >d
+ @if os.stat('d')[stat.ST_SIZE] > 0:
+ :copy tet_ID.dic ../tet_ID.new.dic
+ @finally:
+ :cd ..
+ :delete {r}{f}{q} tmp
+ :delete tet_ID.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/vim/vim-7.2/spell/tet/tet_ID.diff b/vim/vim-7.2/spell/tet/tet_ID.diff
new file mode 100644
index 0000000..941121c
--- /dev/null
+++ b/vim/vim-7.2/spell/tet/tet_ID.diff
@@ -0,0 +1,26 @@
+*** tet_ID.orig.aff Wed Aug 31 21:14:37 2005
+--- tet_ID.aff Wed Aug 31 21:15:15 2005
+***************
+*** 19 ****
+--- 19,39 ----
+ TRY aineousrthlkmdbp'fTvgzLAINjSPEMéD-KHáóFRUBGJúOcíwxCWXVñãÁqêçZÓQyâÍ
++
++ FOL ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
++ LOW ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
++ UPP ßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞÿ
++
++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
++ SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++
++ MIDWORD '-
++
++ MAP 9
++ MAP aàáâãäå
++ MAP eèéêë
++ MAP iìíîï
++ MAP oòóôõö
++ MAP uùúûü
++ MAP nñ
++ MAP cç
++ MAP yÿý
++ MAP sß
diff --git a/vim/vim-7.2/tutor/tutor.bj b/vim/vim-7.2/tutor/tutor.bj
new file mode 100644
index 0000000..642a8f3
--- /dev/null
+++ b/vim/vim-7.2/tutor/tutor.bj
@@ -0,0 +1,987 @@
+===============================================================================
+= G o t i k a m i n n W I M M - S c h a i n e r - Fassung 1.7D =
+===============================================================================
+
+ Dyr Wimm ist ayn gro mächtigs Blat, dös was mit aynn Wösn Befelh aufwartt; z
+ vil, däß myn s allsand in aynn Schainer wie dönn daader unterbräng. Der
+ Schainer ist yso aufbaut, däß yr halt netty die Befelh allsand bringt, wost
+ brauchst, däßst mit iem für s Eerste wirklich öbbs anfangen kanst.
+ Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; dös haisst,
+ wennst di nit grooß mit n Pröbln und Tüftln aufhaltst.
+
+ OBACHT:
+ Die Faudungen, wost daader finddst, gaand istig s Gwort öndern. Dösswögn
+ machst eyn n Böstn glei ayn Aamum von derer Dautticht daader. Haast alsnan
+ dös Gwort daader mit n Befelh "vimtutor bj" ausherlaassn, ist s ee schoon
+ ayn Aamum.
+ Mir kan s nit oft gnueg sagn, däß der Schainer daader istig gan n Üebn
+ ghoert. Also muesst schoon aau die Befelh ausfüern, wennst ys gscheid ler-
+ nen willst. Mit n Lösn yllain ist s +nit taan!
+
+ Ietz schaust grad non, däß dein Föststölltastn nit druckt ist; und aft geest
+ glei aynmaal mit dyr j-Tastn abwärts (yso laaufft dös nömlich), hinst däßst
+ de gantze Letzn 1.1 auf n Bildschirm haast.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 1.1: MIT N MÖRKL UMAYNANDFARN
+
+** Dyrmitst mit n Mörkl umaynandkimmst, druck h, j, k und l wie unt zaigt. **
+ ^ Ayn Öslsbrugg:
+ k De Tastn h ist winster und +geet aau gan winster.
+ < h l > S l leit zesm und richtt si gan zesm.
+ j S j kan myn wie aynn Pfeil gan unt seghn.
+ v Mit n k kimmst gan n KOPF.
+ 1. Ietz ruedertst ainfach mit n Mörkl auf n Bildschirm umaynand, hinst däßst
+ di sicher füelst.
+ 2. Halt d Abhin-Tastn (j) druckt; aft rumplt s ainfach weiter. Netty yso
+ kimmst gan dyr naehstn Letzn.
+
+ 3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.2.
+
+Non öbbs: Allweil, wenn dyr niemer ganz wol ist, wasst öbbenn druckt haast, aft
+ zipfst <ESC>; naacherd bist wider ganz gwon in dyr Befelhs-Artweis.
+
+
+ Nöbnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter. Aber
+ hjkl seind z haissn s Wimm-Urgstain; und de "Hörtn" seind ganz dyr-
+ für, däß myn bei +dene bleibt. Pröblt s ainfach aus!
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 1.2: ÖNN WIMM AUSSCHALTTN
+
+
+ ALSO, EE WENNST ÖBBS VON DAA UNT AUSFÜERST, LIS LIEBER ZEERST DE GANTZE LET-
+ ZN!
+
+ 1. Druck d <ESC>-Tastn, dyrmitst aau gwiß in dyr Befelhs-Artweis bist.
+
+ 2. Demmlt :q! <EIN>.
+ Daa dyrmit benddst ys Blat und verwirffst allss, wasst öbbenn göndert
+ haast.
+
+ 3. Balst önn Eingib seghst, gib dö Faudung ein, wo di zo dönn Schainer brun-
+ gen haat, also vimtutor bj <EIN>.
+
+ 4. Also, wenn ietz allsse sitzt, naacherd füerst d Schritt 1 hinst 3 aus, mit
+ wasst ys Blat verlaasst und aft wider einhinkimmst.
+
+Anmörkung: Mit :q! <EIN> verwirffst allss, wasst göndert older enther gschribn
+ haast. In aynn Öttlych Letznen lernst acht, wiest dös allss in ayner
+ Dautticht speichertst.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 1.3: GWORT BARECHTN - LÖSCHN
+
+
+ ** Druck x , dyrmitst dös Zaichen unter n Mörkl löschst. **
+
+ 1. Bewög di mit n Mörkl auf de mit ---> angmörkte Zeil unt.
+
+ 2. Zo n Faeler Verbössern farst mit n Mörkl netty auf dös Zaichen, dös wo
+ glöscht ghoert.
+
+ 3. Druck de Tastn x , däßst dös überflüssige Zaichen löschst.
+
+ 4. Ietz tuest so lang weiter mit 2 hinst 4, hinst däß dyr Saz stimmt.
+
+---> De Kkuue sprangg übber nn Maanad.
+
+ 5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.4. weiter.
+
+Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn,
+ allss auswendig z lernen; nän, lern ainfach mit n Anwenddn!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 1.4: GWORT BARECHTN - EINFÜEGN
+
+
+ ** Druck i , dyrmitst öbbs einfüegst. **
+
+ 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil, wo mit ---> angeet.
+
+ 2. Dyrmitst de eerste Zeil wie de zwaitte machst, bewög önn Mörkl auf dös
+ eerste Zaichen NAACH derer Stöll, daa wo s Gwort eingfüegt werdn sollt.
+
+ 3. Druck i und gib dös ein, was abgeet.
+
+ 4. Wenn ieweils ayn Faeler verweitert ist, aft druck <ESC>; und dyrmit kimmst
+ gan dyr Befelhsartweis zrugg.
+ So, und ietz tuest ainfach yso weiter, hinst däß dyr Saz stimmt.
+
+---> Daader gt dd öbbs b.
+---> Daader geet diend öbbs ab.
+
+ 5. Balst mainst, däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.5.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 1.5: GWORT BARECHTN - ANFÜEGN
+
+
+ ** Druck A gan n Gwort Anfüegn. **
+
+ 1. Gee mit n Mörkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat.
+ Daa ist s gleich, wo gnaun dyr Mörkl in derer Zeil steet.
+
+ 2. Demmlt A und gib de entspröchetn Ergöntzungen ein.
+
+ 3. Wennst mit n Anfüegn förtig bist, aft druckst <ESC>, däßst wider eyn de
+ Befelhsartweis zruggkimmst.
+
+ 4. So, und ietz geest aft non gan dyr zwaittn mit ---> angmörktn Zeil; und
+ daadl machst ys netty yso.
+
+---> In derer Zeil gee
+ In derer Zeil geet ayn Weeng ayn Gwort ab.
+---> Aau daader stee
+ Aau daader steet öbbs Unvollstöndigs.
+
+ 5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 1.6: AYN DAUTTICHT BARECHTN
+
+
+ ** Mit :wq speichertst ayn Dautticht und verlaasst önn Wimm ganz. **
+
+ !! OBACHT: Ee wennst mit dönn alln daa unt weitertuest, lis zeerst de gantze
+ Letzn durch!!
+
+ 1. Verlaaß also s Blat, wie s in dyr Letzn 1.2. haisst, mit :q! !
+
+ 2. Gib dö Faudung eyn n Eingib ein: vim Schainer <EIN> . 'vim' ruefft s Blat
+ auf, und 'Schainer' haisst de Dautticht, wost barechtn willst. Dyrmit
+ haast also ayn Dautticht, dö wost barechtn kanst.
+
+ 3. Ietz füegst öbbs ein older löschst öbbs, wiest ys in de vorignen Letznen
+ glernt haast.
+
+ 4. Speichert de gönderte Dautticht und verlaaß önn Wimm mit :wq <EIN> .
+
+ 5. Schmeiß önn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung.
+
+ 6. Aft däßst de obignen Schritt glösn und käppt haast, kanst ys durchfüern.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 1
+
+
+ 1. Dyr Mörkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert.
+ h (winst) j (ab) k (auf) l (zes)
+
+ 2. Um önn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT <EIN> .
+
+ 3. Willst önn Wimm verlaassn und aau allss verwerffen, aft gibst ein:
+ <ESC> :q! <EIN> .
+ Gan n Verlaassn und Speichern aber zipfst <ESC> :wq <EIN>.
+
+ 4. Willst dös Zaichen löschn, daa wo dyr Mörkl drauf ist, demmltst x .
+
+ 5. Willst öbbs vor n Mörkl eingöbn, zipfst i und drafter <ESC> .
+ Mechst ys aber eyn s Zeilnend anhinhöngen, benutzt ys A .
+ Und ainfach naach n Mörkl füegst ys mit a ein .
+
+Anmörkung: Druckst <ESC>, kimmst eyn de Befelhsartweis zrugg older brichst ayn
+ Faudung ab, dö wo dyr schiefgangen ist.
+
+ Ietz tue mit dyr Letzn 2 weiter.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.1.: LÖSHFAUDUNGEN
+
+
+ ** Demmlt dw , dyrmitst ayn Wort löschst **
+
+ 1. Druck <ESC>, dyrmit s aau gwiß ist, däßst in dyr Befelhsartweis bist.
+
+ 2. Bewög önn Mörkl zo dyr mit ---> angmörktn Zeil unt.
+
+ 3. Und daa geest ietz auf n Anfang von aynn Wort, dös wo glöscht ghoert.
+
+ 4. Zipf dw , däßst dös gantze Wort löschst.
+
+ Nöbnbei: Dyr Buechstabn d erscheint auf dyr lösstn Zeil von n Bildschirm,
+ sobaldst n eingibst. Dyr Wimm wartt ietz drauf, däß öbbs kimmt, al-
+ so daader ayn w . Seghst freilich öbbs Anderts wie ayn d ,
+ naacherd haast öbbs Falschs demmlt. Druck aft <ESC> und pröblt
+ s non aynmaal.
+---> Ayn Öttlych Wörter lustig ghoernd nit Fisper eyn dönn Saz einhin.
+
+ 5. Äfert d Schritt 3 und 4, hinst däß dyr Saz pässt, und gee aft gan dyr
+ Letzn 2.2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.2.: NON MEERER LÖSHFAUDUNGEN
+
+
+ ** Gib d$ ein, däßst hinst eyn s Zeilnend löschst. **
+
+ 1. Druck <ESC> , dyrmitst aau gwiß in dyr Befelhsartweis bist.
+
+ 2. Bewög önn Mörkl hinst eyn de mit ---> angmörkte Zeil untn.
+
+ 3. Gee mit n Mörkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn . .
+
+ 4. Zipf d$ , däßst hinst eyn s End von dyr Zeil löschst.
+
+---> Öbber haat s End von dyr Zeil doplt eingöbn. doplt eingöbn.
+
+
+ 5. Gee weiter gan dyr Letzn 2.3, dyrmitst versteest, was daader ablaaufft.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.3: PFEMERER UND WOLENDER
+
+
+ Vil Faudungen, wo s Gwort öndernd, sötznd si aus aynn Pfemerer und aynn Wo-
+ lend zamm. Bal i also öbbs löschn will, schreib i ainsting d und aft s "Wo-
+ lend", dös haisst also, "wolend", "wohin" däß i will - older was i halt gnaun
+ löschn will.
+
+
+
+
+
+
+ Daader also, was i wie löschn kan:
+ w - hinst eyn n Anfang von n naehstn Wort AANE dönn sein eersts Zaichen.
+ e - gan n End von n ietzundn Wort MIT dönn seinn lösstn Zaichen.
+ $ - zo n End von dyr Zeil MIT derer irn lösstn Zaichen.
+
+ Also löscht de Tastnfolg de umbb n Mörkl hinst eyn s Wortend.
+Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mörkl
+ entspröchet weiter.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN
+
+
+ ** Gib i ayn Zal vor aynn Wolend ein, werd dös Sel halt widerholt. **
+
+ 1. Bewög önn Mörkl gan n Anfang von dyr Zeil mit ---> dyrvor unt.
+
+ 2. Zipf 2w , däßst mit n Mörkl zwai Wörter weitergeest.
+
+ 3. Zipf 3e , däßst mit n Mörkl auf s End von n drittn Wort kimmst.
+
+ 4. Zipf 0 (aynn Nuller), däßst eyn n Anfang von dyr Zeil hinkimmst.
+
+ 5. Widerhol d Schritt 2 und 3 mit verschaidne Zöler.
+
+ ---> Dös ist ietz grad ayn Zeil zo n drinn Umaynanderruedern.
+
+ 6. Gee weiter gan dyr Letzn 2.5.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN
+
+
+ ** Ayn Zal vor aynn Pfemerer äfert dönn um seln Werd. **
+
+ Also, i mecht löschn, und zwaar öbbs Bestimmts, und dös so und so oft: Daa
+ dyrzue benutz i aynn Zöler:
+ d Zöler Wolend (also önn Bewögungsschrit)
+
+ 1. Bewög önn Mörkl gan n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an-
+ gmörktn Zeil.
+
+ 2. Demmlt d2w , dyrmitst de ganz grooßgschribnen Wörter löschst.
+
+ 3. Äfert d Schritt 1 und 2 mit dönn entspröchetn Zöler, dyrmitst de drauf-
+ folgetn ganz großgschribnen Wörter mit ayner ainzignen Faudung löschst:
+
+
+---> Dö ABC DE Zeil FGHI JK LMN OP mit Wörter ist Q RS TUV ietz berichtigt.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.6: ARECHTN AUF ZEILN
+
+
+ ** Zipf dd , um ayn gantze Zeil z löschn. **
+
+ Weil s gro oft vürkimmt, däß myn gantze Zeiln löscht, kaamend schoon d Ent-
+ wickler von n Urwimm daa drauf, däß myn ainfach dd gan dönn Zwök schreibt.
+
+
+ 1. Bewög önn Mörkl gan dyr zwaittn Zeil in n untignen "Gedicht".
+ 2. Zipf dd , um dö Zeil z löschn.
+ 3. Ietz bewögst di gan dyr viertn Zeil.
+ 4. Zipf 2dd , um zwo Zeiln zo n Löschn.
+
+---> 1) Roosn seind root;
+---> 2) Drunter ist s Koot.
+---> 3) Veigerln seind blau.
+---> 4) Umgrabn tuet s d Sau.
+---> 5) D Ur sait de Zeit,
+---> 6) Sait, däß s mi freut,
+---> 7) Dirndl, dein Gschau.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.7: RUGGGÖNGIG MACHEN (RUGGLN)
+
+
+ ** Zipf u , dyrmitst de lösstn Faudungen ruggltst **
+ ** older U , um ayn gantze Zeil widerherzstölln. **
+
+ 1. Bewög önn Mörkl gan dyr mit ---> angmörktn Zeil unt und gee dyrmit auf n
+ eerstn Faeler.
+ 2. Zipf x , däßst dös eerste z vile Zaichen löschst.
+ 3. Ietz demmlt u , dyrmitst de lösste Faudung ruggltst.
+ 4. Ietz behöb allsand Faeler auf dyr Zeil mit dyr Hilf von n Befelh x .
+ 5. Aft gibst ayn U (grooß) ein, däßst de Zeil wider yso hinbringst, wie s
+ gwösn ist.
+ 6. So, und ietz demmltst so oft u , hinst däßst s U und de andern Fau-
+ dungen rugggöngig gmacht haast.
+ 7. Und ietzet widerum schreibst so oft <STRG>r , hinst däßst allsand Be-
+ felh widerhergstöllt, z haissn allsse rugg-grugglt haast (also d Rugggön-
+ gigmachungen rugggöngig gmacht).
+---> Beerichtig d Faeller voon dehrer Zeiil und sttöll s mitt n Ruggruggln wi-
+ der her.
+ 8. Die Faudungen seind gro wichtig; sö helffend ainn närrisch weiter.
+ Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 2
+
+
+ 1. Um von n Mörkl aus hinst eyn s naehste Wort zo n Löschn, zipf: dw
+ 2. Um umbb n Mörkl hinst eyn s End von dyr Zeil zo n Löschn, demmlt d$
+ 3. Dyrmitst ayn gantze Zeil löschst, gib ein: dd
+ 4. Mechst ayn Bewögung, ayn "Wolend", öfters, stöll de entspröchete Zal dyr-
+ vor: 3dw older aau: d3w
+ 5. Dyr Pfueg für ayn Önderungsfaudung lautt yso:
+ Pfemerer [Zal] Bewögungsschrit (Wolend)
+ Und dös haisst:
+ Dyr PFEMERER gibt an, WAS taan ghoert, öbbenn d = löschn (»delete«).
+ [ZAL] - Ayn Zal KAN myn angöbn, wenn myn halt ayn Wolend öfter habn will.
+ S WOLEND, also dyr Schrit WOHIN, besagt, auf was i aushin will, öbbenn
+ auf ayn Wort ( w ), s End von dyr Zeil ( $ ) und so weiter.
+
+ 6. Däßst eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller: 0
+
+ 7. Um öbbs Vorigs wider z ruggln, gib ein: u (klain also)
+ Um allsand Önderungen in ayner Zeil z ruggln, haast: U (also grooß)
+ Um "rugg-z-ruggln", also allss wider herzstölln, zipf: <STRG>r
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 3.1: ANFÜEGN (»put«)
+
+
+ ** Zipf p , dyrmitst öbbs gnetty Glöschts naach n Mörkl anfüegst. **
+
+ 1. Bewög önn Mörkl gan dyr eerstn untignen Zeil mit ---> dyrvor.
+
+ 2. Zipf dd , um sele Zeil z löschn und dyrmit in aynn Wimm-"Roster" zo n
+ speichern.
+
+ 3. Bewög önn Mörkl gan dyr Zeil c), ÜBER derer, daa wo de glöschte Zeil ein-
+ hinkemmen sollt.
+
+ 4. So, und ietz gibst ainfach p ein, und schoon haast dö Zeil unter derer
+ mit n Mörkl drinn.
+ 5. Äfert d Schritt 2 hinst 4, hinst däßst allsand Zeiln yso naachynaynand
+ haast, wie s hinghoernd.
+
+---> d) Kanst du dös aau?
+---> b) Veigerln seind blau.
+---> c) Bedachtn kan myn lernen.
+---> a) Roosn seind root.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 3.2: ERSÖTZN (»replace«)
+
+
+ ** Zipf rx , um dös Zaichen unter n Mörkl durch x z ersötzn. **
+
+ 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil mit ---> dyrvor.
+
+ 2. Bewög önn Mörkl, hinst däß yr auf n eerstn Faeler steet.
+
+ 3. Zipf r und drafter dös Zaichen, wo dyrfür daa hinghoert.
+
+ 4. Widerhol d Schritt 2 und 3, hinst däßst de eerste Zeil gmaeß dyr zwaittn
+ berichtigt haast:
+---> Wie dö Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft!
+---> Wie dö Zeil eingöbn wurd, wurdnd ainige falsche Tastnen zipft!
+
+ 5. Ietz tue mit dyr Letzn 3.3 weiter.
+
+Anmörkung: Vergiß nit drauf, däßst mit n Anwenddn lernen solltst und nit öbbenn
+ mit n Auswendiglernen!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 3.3: ÖNDERN (»change«)
+
+
+ ** Um hinst eyn s Wortend z öndern, zipf ce . **
+
+ 1. Gee mit n Mörkl auf de eerste mit ---> angmörkte Zeil.
+
+ 2. Ietz farst netty auf s "s" von Wstwr hin.
+
+ 3. Zipf ce ein und aft d Wortberichtigung, daader also örter .
+
+ 4. Druck <ESC> und bewög önn Mörkl gan n naehstn Zaichen, wo göndert ghoert.
+
+ 5. Äfert d Schritt 3 und 4, hinst däß dyr eerste Saz wie dyr zwaitte ist.
+
+---> Ainige Wstwr von derer Zlww ghhnnd mit n Öndern-Pfemerer gaauu.
+---> Ainige Wörter von derer Zeil ghoernd mit n Öndern-Pfemerer göndert.
+
+ce löscht also s Wort und schlaaufft di eyn d Eingaab-Artweis.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 3.4.: NON MEERER ÖNDERUNGEN PFELFS c
+
+
+ ** D Löshfaudung c arechtt mit de nömlichnen Wolender wie dö mit d **
+
+ 1. Dyr Önder-Pfemerer arechtt anleich wie d Löshfaudung mit d , und zwaar
+ yso:
+ c [Zal] Bewögungsschritt (Wolend)
+
+ 2. D Wolender seind de gleichn, öbbenn w für Wort und $ für s Zeilnend.
+
+
+ 3. Bewög di zo dyr eerstn untignen Zeil mit ---> .
+
+ 4. Ietz geest auf dönn eerstn Faeler.
+
+ 5. Zipf c$ , gib önn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft
+ <ESC>.
+---> S End von derer Zeil sollt an de zwaitte daader anglichen werdn.
+---> S End von derer Zeil sollt mit n Befelh c$ berichtigt werdn.
+
+Denk allweil dran, däßst iederzeit mit dyr Ruggtastn Faeler ausbössern kanst.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 3
+
+
+ 1. Um ayn vorher glöschts Gwort anzfüegn, zipf p . Daa dyrmit werd dös
+ gantze Gwort NAACH n Mörkl angfüegt. Wenn s ayn gantze Zeil gwösn ist,
+ werd dö sel als de Zeil unterhalb n Mörkl eingfüegt.
+
+ 2. Um dös Zaichen unter n Mörkl, also wo dyr Mörkl ist, z ersötzn, zipf r
+ und aft dös Zaichen, wost daadl habn willst.
+
+ 3. Dyr Önderungspfemerer ( c = »change«) laasst ainn umbb n Mörkl hinst eyn s
+ End von n Wolend öndern. Zipf ce , dyrmitst umbb n Mörkl hinst eyn s End
+ von n Wort öndertst, und c$ hinst eyn s End von dyr Zeil.
+
+ 4. Für d Önderung lautt dyr Pfueg:
+
+ c [Zal] Wolend
+
+Ietz tue mit dyr naehstn Letzn weiter.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND
+
+** Demmlt <STRG>g, däßst önn Befand und Darstand von dyr Dautticht anzaigst. **
+ ** Zipf G , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. **
+
+Anmörkung: Lis dö gantze Letzn daader durch, ee wennst iewign öbbs unternimmst!
+
+ 1. Druck <STRG>g . Auf dös hin erscheint auf derer Seitt ganz unt ayn Dar-
+ standsmeldung mit n Dauttichtnam und n Befand innerhalb dyr Dautticht.
+ Mörk dyr de Zeilnnummer für n Schrit 3.
+
+Anmörkung: Müglicherweis seghst aau önn Mörklbefand in n zesmen untern Bild-
+ schirmögg. Aft ist s "Lindl" (»ruler«) eingstöllt; schau dyrzue mit
+ n Befelh :help 'ruler' naach.
+ 2. Druck G , um an s End von dyr Dautticht z kemmen.
+ gg gibst ein, däßst gan n Anfang von dyr Dautticht aufhinkimmst.
+
+ 3. Gib d Nummer von derer Zeil ein, daa wost vorher warst, und aft non G .
+ Dös bringt di zrugg gan seler Zeil, daa wost stuenddst, wiest dös eerste
+ Maal <STRG>g gadruckst.
+
+ 4. Wennst di sicher gnueg füelst, aft füer d Schritt 1 hinst 3 aus.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 4.2: DYR BEFELH ZO N SUECHEN
+
+
+ ** Zipf / und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. **
+
+ 1. Du gibst also in dyr Befelhsartweis s Zaichen / ein. Dös sel wie aau dyr
+ Mörkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung : .
+
+ 2. Ietz zipf 'Faeeler' <EIN>. Netty um dös 'Faeeler' willst ietz suechen.
+
+ 3. Willst um gnaun dönn Ausdruk weitersuechen, zipf ainfach n (wie »next«).
+ Willst hinzrugg suechen, aft gibst N ein.
+
+ 4. Um von Haus aus zruggaus z suechen, nimm ? statt / her.
+
+ 5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, druck <STRG>o, und dös
+ öfter, wennst weiter zrugg willst. Mit <STRG>i widerum kimmst vorwärts.
+
+---> Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler
+
+Anmörkung: Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi-
+ der weiter dyrmit, men Sach dyr Schaltter 'wrapscan' wär auf aus.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 4.3: DE GÖGNKLAMMERN FINDDN
+
+
+ ** Zipf % , um de entspröchete Klammer ) , ] older } z finddn. **
+
+ 1. Sötz önn Mörkl auf iewign aine von dene drei Klammern ( , [ older {
+ in dyr untignen Zeil, wo mit ---> angmörkt ist.
+
+ 2. Ietzet zipf s Zaichen % .
+
+ 3. Dyr Mörkl geet ietz auf de pässete schliessete Klammer.
+
+ 4. Ietz demmlt % , und dyrmit kimmst gan dyr öffneretn Klammer zrugg.
+
+ 5. Sötz önn Mörkl auf ayn anderne Klammer von ({[]}) und pröblt % aus.
+
+---> Dös ( ist blooß ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. ))
+
+Anmörkung: Um dö Müglichkeit gaast bsunders froo sein, wennst aynmaal in aynn
+ Spaichgwort verzweiflt ayn faelete Gögnklammer suechst!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 4.4: D ERSÖTZUNGSFAUDUNG (»substitute«)
+
+
+ ** Zipf :s/alt/neu/g , um 'alt' durch 'neu' zo n Ersötzn. **
+
+ 1. Gee mit n Mörkl zo dyr unt steehetn mit ---> angmörktn Zeil.
+
+ 2. Zipf :s/dee/de <EIN> . Der Befelh ersötzt alsnan grad dös +eerste "dee",
+ wo vürkimmt.
+
+ 3. Ietz pröblt s mit :s/dee/de/g . Dös zuesötzliche g ("Pflok" nennt myn
+ öbbs Sölchers) bewirkt, däß allss, was dyrmit kennzaichnet ist, innerhalb
+ von dyr ainn Zeil ersötzt werd.
+
+---> Dee schoenste Zeit, däß myn dee Blüemln anschaut, ist dee schoene Lan-
+ gesszeit.
+ 4. Um ietz allsand Suechbegriff innerhalb von zwo Zeiln zo n Öndern, zipf
+ :#,#s/alt/neu/g , wobei # ieweils für de eerste und lösste Zeil von dönn
+ Pfraich steet.
+ :%s/alt/neu/g zipfst, däßst d Vürkemmen in dyr gantzn Dautticht öndertst.
+ Mit :%s/alt/neu/gc finddst allsand Vürkemmen in dyr gsamtn Dautticht;
+ daa werst aber zeerst non gfraagt, obst ys ersötzn willst older nity.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 4
+
+ 1. <STRG>g zaigt dönn ietzundn Dauttichtbefand und önn Darstand dyrvon an.
+ G bringt di an s End von dyr Dautticht.
+ <Zal> G bringt di gan dyr entspröchetn Zeilnnummer.
+ gg bringt di zo dyr eerstn Zeil.
+
+ 2. D Eingaab von / mit aynn Ausdruk suecht VÜRSHLING um dönn Ausdruk.
+ Gibst ? und aynn Suechbegrif ein, suecht s um dönn ÄRSHLING.
+ Zipf naach ayner Suech n ; naacherd werd in de gleiche Richtung weiter-
+ gsuecht. Mit N geet s umkeerter weiter.
+ <STRG>o bringt di zo ölterne Befändd zrugg, <STRG>i zo neuerne.
+
+ 3. D Eingaab von % , wenn dyr Mörkl auf ainer von dene Klammern steet: ({[
+ )]} , bringt di zo dyr Gögnklammer.
+
+ 4. Um dös eerste Vürkemmen von "alt" in ayner Zeil durch "neu" z ersötzn,
+ zipf :s/alt/neu .
+ Um allsand in ayner Zeil z ersötzn, zipf :s/alt/neu/g .
+ Mechst allss in zwo Zeiln ersötzn, demmlt zo n Beispil :5,6s/alt/neu/g .
+ Mechst allss in dyr gantzn Dautticht ersötzn, gib ein: :%s/alt/neu/g .
+ Willst ayn ieds Maal bstaetln, höng 'c' wie »confirm« hint anhin.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÜERN
+
+
+ ** Willst ayn Gfäßfaudung ausfüern, gib ainfach dö sel naach :! ein. **
+
+ 1. Zipf dönn bekanntn Befelh : , dyrmitst mit n Mörkl auf n Bildschirm
+ ganz abhin kimmst. Draufhin kanst aynn gwonen Gfäßbefelh eingöbn.
+
+ 2. Zeerst kimmt aber non ayn Ruefzaichen ! . Und ietz haast de Müglich-
+ keit, ayn beliebige ausserige Gfäßfaudung auszfüern.
+
+ 3. Als Beispil zipf :!ls <EIN> ; und schoon haast ayn Auflistung von deinn
+ Verzaichniss, netty wie wennst ganz gwon in n Eingib wärst. Geet ls
+ aus iewign aynn Grund nit, aft pröblt s mit :!dir <EIN> .
+
+Also non aynmaal: Mit dönn Angang kan ayn iede beliebige ausserige Faudung aus-
+ gfüert werdn, aau mit Auerwerdd.
+
+Und wolgmörkt: Allsand Befelh, wo mit : angeend, müessend mit <EIN> bstö-
+ tigt werdn. Dös dyrsagn myr vürbaß niemer.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 5.2: NON MEERER DRÜBER, WIE MYN DAUTTICHTN SCHREIBT
+
+
+ ** Um öbbs Gönderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM. **
+
+ 1. Zipf :!dir older :!ls , däßst dyr ayn Auflistung von deinn Verzaich-
+ niss ausherlaasst. Däßst dyrnaach <EIN> eingöbn muesst, waisst ee schoon.
+
+ 2. Suech dyr aynn Dauttichtnam aus, dönn wo s non nit geit, öbbenn POCH.
+
+ 3. Ietz demmlt: :w POCH (also mit POCH als dönn neuen Dauttichtnam).
+
+ 4. Dös speichert ietz de gantze Dautticht, also önn Wimmschainer, unter dönn
+ Nam POCH. Dös kanst leicht überprüeffen, indem däßst ainfach :!ls older
+ :!dir zipfst und dyrmit deinn Verzaichnissinhalt seghst.
+
+Anmörkung: Stigst ietz aus n Wimm aus und gännst n aft wider mit vim POCH ,
+ naacherd wär dö Dautticht ayn gnaune Aamum von n Schainer dyrselbn,
+ wiest n gspeichert haast.
+
+ 5. Ietz verweitert dö Dautticht - fallsst s Fenstl haast - , mit :!del POCH
+ beziehungsweis bei aynn Ainslgebäu mit :!rm POCH .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN
+
+** Um aynn Tail von dyr Dautticht z speichern, zipf v [Wolend] :w DAUTTICHT **
+
+ 1. Ruck önn Mörkl auf netty dö Zeil daader.
+
+ 2. Demmlt v und gee mit n Mörkl auf dönn fümftn Auflistungspunt untet. Du
+ seghst glei, däß s Gwort vürherghöbt erscheint.
+
+ 3. Druck s Zaichen : . Ganz unt auf n Bildschirm erscheint :'<,'> .
+
+ 4. Zipf w POCH , wobei s dönn Dauttichtnam POCH non nit geit. Vergwiß di,
+ däßst dös :'<,'>w POCH aau +seghst, ee wennst <EIN> druckst.
+
+ 5. Dyr Wimm schreibt de ausgwaltn Zeil eyn de Dautticht POCH einhin. Benutz
+ :!dir older :!ls , däßst dös überprüeffst. Lösh s fein nit öbbenn! Mir
+ brauchend s nömlich für de naehste Letzn.
+
+Anmörkung: Druckt myn v , ginnt d Sichtisch-Auswal. Du kanst mit n Mörkl um-
+ aynandfarn, um d Auswal z veröndern. Drafter kan myn mit yn aynn
+ Pfemerer mit dönn Gwort öbbs machen. Zo n Beispil löscht d dös
+ Gwort.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 5.4: EINLÖSN UND ZAMMENFÜERN VON DAUTTICHTN
+
+
+ ** Um önn Inhalt von ayner Dautticht einzlösn, zipf :r DAUTTICHTNAM **
+
+ 1. Sötz önn Mörkl über dö Zeil daader.
+
+OBACHT: Aft däßst önn Schrit 2 ausgfüert haast, seghst auf aynmaal öbbs aus
+ dyr Letzn 5.3. Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi-
+ derfinddst.
+ 2. Ietz lis dein Dautticht POCH ein, indem däßst d Faudung :r POCH aus-
+ füerst, wobei wie gsait POCH für dönn von dir ausgsuechtn Dauttichtnam
+ steet. De einglösne Dautticht werd unterhalb dyr Mörklzeil eingfüegt.
+
+ 3. Um zo n Überprüeffen, ob de Dautticht aau gwiß einglösn ist, gee zrugg;
+ und du seghst, däß s ietz zwo Ausförtigungen von dyr Letzn 5.3. geit, s
+ Urniss und de eingfüegte Dauttichtfassung.
+
+Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei-
+ spil list :r !ls d Ausgaab von dyr Faudung ls ein und füegt s
+ unterhalb n Mörkl ein.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 5
+
+
+ 1. :!FAUDUNG füert aynn ausserignen Befelh aus.
+
+ Daader ayn Öttlych gwänddte Beispiler:
+ (Fenstl) (Ainsl - Leinsl)
+ :!dir :!ls - listt s Verzaichniss auf.
+ :!del DAUTTICHT :!rm DAUTTICHT - verweitert sele Dautticht.
+
+ 2. :w DAUTTICHT speichert de ietzunde Wimmdautticht unter dönn besagtn Nam.
+
+ 3. v WOLEND :w DAUTTICHTNAM schreibt de sichtisch ausgwaltn Zeiln eyn de
+ Dautticht mit seln Nam.
+
+ 4. :r DAUTTICHTNAM ladt sele Dautticht und füegt s unterhalb n Mörklbefand
+ ein.
+
+ 5. :r !dir list d Ausgaab von dyr Faudung dir und füegt s unterhalb n
+ Mörklbefand ein.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 6.1: ZEIL ÖFFNEN (»open«)
+
+
+ ** Zipf o, um ayn Zeil unterhalb n Mörkl z öffnen und eyn d **
+ ** Einfüegartweis z kemmen. **
+
+ 1. Bewög önn Mörkl zo dyr eerstn mit ---> angmörktn Zeil unt.
+
+ 2. Zipf o (klain), um ayn Zeil UNTERHALB n Mörkl z öffnen und mit dyr Ein-
+ füegartweis weiterztuen.
+
+ 3. Ietz zipf ayn Weeng ayn Gwort und druck <ESC>, um d Einfüegartweis z ver-
+ laassn.
+---> Mit o werd dyr Mörkl auf de offene Zeil in dyr Einfüegartweis gsötzt.
+
+ 4. Um ayn Zeil OBERHALB n Mörkl aufzmachen, gib ainfach aynn groosss O statt
+ yn aynn klainen ein. Versuech dös auf dyr untignen Zeil.
+
+---> Öffnet ayn Zeil über derer daader mit O , wenn dyr Mörkl auf derer Zeil
+ ist.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 6.2: GWORT ANFÜEGN (»append«)
+
+
+ ** Zipf a , um öbbs NAACH n Mörkl einzfüegn. **
+
+ 1. Bewög önn Mörkl gan n Anfang von dyr eerstn Üebungszeil mit ---> unt.
+
+ 2. Druck e , hinst däß dyr Mörkl an n End von Zei steet.
+
+ 3. Zipf ayn klains a , um öbbs NAACH n Mörkl anzfüegn.
+
+ 4. Vergöntz dös Wort wie in dyr Zeil drunter. Druck <ESC>, um d Schreib-Art-
+ weis z verlaassn.
+
+ 5. Bewög di mit e zo n naehstn ungantzn Wort und widerhol d Schritt 3 und
+ 4.
+
+---> Dö Ze biett ayn Glögn , ayn Gwort in ayner Zeil anzfü.
+---> Dö Zeil biett ayn Glögnet, ayn Gwort in ayner Zeil anzfüegn.
+
+Anmörkung: a , i und A bringend ainn gleichermaaßn eyn d Einfüegartweis;
+ dyr ainzige Unterschaid ist, WO mit n Einfüegn angfangt werd.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«)
+
+
+ ** Demmlt ayn groosss R , um meerer als wie grad ain Zaichen z ersötzn. **
+
+ 1. Bewög önn Mörkl zo dyr eerstn untignen, mit ---> angmörktn Zeil.
+ Gee mit n Mörkl gan n Anfang von n eerstn xxx .
+
+ 2. Ietz druck R und zipf sele Zal, wo drunter in dyr zwaittn Zeil steet,
+ yso däß de sel s xxx ersötzt.
+
+ 3. Druck <ESC> , um d Ersötzungsartweis z verlaassn. Du gspannst, däß dyr
+ Rest von dyr Zeil unveröndert bleibt.
+
+ 4. Äfert die Schritt, um dös überblibne xxx z ersötzn.
+
+---> S Zunddn von 123 zo xxx ergibt xxx.
+---> S Zunddn von 123 zo 456 ergibt 579.
+
+Anmörkung: D Ersötzungsartweis ist wie d Einfüegartweis, aber ayn ieds eindem-
+ mlte Zaichen löscht ayn vorhanddns.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 6.4: GWORT AAMEN UND EINFÜEGN
+
+ ** Benutz önn Pfemerer y , um öbbs z aamen, und p , um öbbs einzfüegn. **
+
+ 1. Gee zo dyr mit ---> angmörktn Zeil unt und sötz önn Mörkl hinter "a)".
+
+ 2. Ginn d Sichtisch-Artweis mit v und bewög önn Mörkl gnaun vor "eerste".
+
+ 3. Zipf y , um dönn vürherghöbtn Tail z aamen.
+
+ 4. Bewög önn Mörkl gan n End von dyr naehstn Zeil: j$
+
+ 5. Demmlt p , um dös Gwort einzfüegn, und aft: a zwaitte <ESC> .
+
+ 6. Benutz d Sichtischartweis, um " Eintrag." auszwaln, aam s pfelfs y, be-
+ wög di gan n End von dyr naehstn Zeil mit j$ und füeg s Gwort dortn mit
+ p an.
+
+---> a) dös ist dyr eerste Eintrag.
+ b)
+
+Anmörkung: Du kanst y aau als Pfemerer verwenddn; yw aamt ain Wort.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 6.5: SCHALTTER SÖTZN
+
+** Sötz aynn Schaltter yso, däß ayn Suech older Ersötzung Grooß- und Klain- **
+ ** schreibung übergeet. **
+
+ 1. Suech um 'übergee", indem däßst /übergee eingibst.
+ Widerhol d Suech ayn Öttlych Maal, indem däßst de Tastn n druckst.
+
+ 2. Sötz de Zwisl - önn Schaltter - 'ic' (»ignore case«), indem däßst :set ic
+ eingibst.
+ 3. Ietz suech wider um 'übergee' und tue aau wider mit n weiter. Daa fallt
+ dyr auf, däß ietz öbbenn aau Übergee und ÜBERGEE hergeet.
+
+ 4. Sötz de Zwisln 'hlsearch' und 'incsearch' pfelfs: :set hls is
+
+ 5. Widerhol d Suech und bobacht, was ietz gschieght: /übergee <EIN>
+
+ 6. Däßst grooß und klain wider gwon unterscheidst, zipf: :set noic
+
+Anmörkung: Mechst de Tröffer niemer vürherghöbt seghn, gib ein: :nohlsearch
+Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \c
+ in n Suechausdruk: /übergee\c <EIN>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 6
+
+ 1. Zipf o , um ayn Zeil UNTERHALB n Mörkl z öffnen und d Einfüegartweis z
+ ginnen.
+ Zipf O , um ayn Zeil OBERHALB n Mörkl z öffnen.
+
+ 2. Zipf a , um NAACH n Mörkl ayn Gwort einzfüegn.
+ Zipf A , um ayn Gwort naach n Zeilnend anzfüegn.
+
+ 3. D Faudung e bringt di gan n End von aynn Wort.
+
+ 4. Dyr Pfemerer y (»yank«) aamt öbbs, p (»put«) füegt dös ein.
+
+ 5. Ayn groosss R geet eyn d Ersötzungsartweis, hinst däß myn <ESC> druckt.
+
+ 6. D Eingaab von ":set xxx" sötzt de Zwisl "xxx". Ayn Öttlych Zwisln seind:
+ 'ic' 'ignorecase' Grooß/klain wurst bei ayner Suech
+ 'is' 'incsearch' Zaig aau schoon ayn Tailüberainstimmung
+ 'hls' 'hlsearch' Höb allsand pässetn Ausdrück vürher
+ Dyr Schaltternam kan in dyr Kurz- older Langform angöbn werdn.
+
+ 7. Stöll yn ayner Zwisl "no" voran, däßst ys abschalttst: :set noic
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 7.1: AYN HILFGWORT AUFRUEFFEN
+
+
+ ** Nutz dös einbaute Hilfgebäu, de "Betribsanlaittung" **
+
+ Eyn n Wimm ist ayn ausfüerliche "Gebrauchsanweisung" einbaut. Für s Eerste
+ pröblt ainfach ains von dene dreu aus:
+ - Druck d <HILF>-Tastn, wennst öbbenn aine haast.
+ - Druck de Tastn <F1>, fallsst ys haast.
+ - Zipf :help <EIN>
+
+ Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie dös mit dyr Hilf geet.
+ Demmlt <STRG>w w , um von ainn Fenster zo n andern zo n Springen.
+ Demmlt :q <EIN> , um s Hilffenster zo n Schliessn.
+
+ Du kanst zo so guet wie allssand ayn Hilf finddn, indem däßst yn dyr Faudung
+ :help aynn Auerwerd naachstöllst und istig <EIN> nit vergisst. Pröblt dös:
+
+ :help w
+ :help c_CTRL-D
+ :help insert-index
+ :help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 7.2: ERSTÖLL AYN GIN-SCHRIPF
+
+
+ ** Mutz önn Wimm mit de einbautn Faehigkeitn auf **
+
+ Dyr Wimm besitzt ayn Wösn Schäftungen, wo über n Urwimm aushingeend, aber de
+ meerern dyrvon seind in dyr Vorgaab ausgschaltt. Dyrmitst meerer aus n Wimm
+ ausherholst, erstöllst ayn "vimrc"-Dautticht.
+
+ 1. Lög ayn "vimrc"-Dautticht an; dös geet ie naach Betribsgebäu verschidn:
+ :e ~/.vimrc für s Ainsl
+ :e $VIM/_vimrc bei n Fenstl
+
+ 2. Ietz lis önn Inhalt von dyr Beispil-"vimrc"-Dautticht ein:
+ :r $VIMRUNTIME/vimrc_example.vim
+
+ 3. Speichert de Dautticht mit:
+ :w
+
+ 4. Bei n naehstn Gin von n Wimm ist aft d Füegnussvürherhöbung zuegschaltt.
+ Du kanst dyr allss eyn dö Dautticht einhinschreibn, wasst bständig habn
+ willst. Meerer dyrzue erfarst unter: :help vimrc-intro
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 7.3: VERGÖNTZN
+
+
+ ** Befelhszeilnvergöntzung mit <STRG>d und <TAB> **
+
+ 1. Vergwiß di, däß dyr Wimm nit auf n Urwimm-"Glais" fart: :set nocp
+
+ 2. Schaug naach, wölcherne Dauttichtn däß s in n Verzaichniss geit: :!ls
+ older :!dir
+ 3. Zipf önn Anfang von ayner Faudung: :e
+
+ 4. Druck <STRG>d , und dyr Wimm zaigt ayn Listn von Faudungen, wo mit "e"
+ angeend.
+ 5. Druck <TAB> , und dyr Wimm vervollstöndigt önn Faudungsnam zo ":edit".
+
+ 6. Füeg ayn Laerzaichen und önn Anfang von ayner besteehetn Dautticht an:
+ :edit DAU
+
+ 7. Druck <TAB>. Dyr Wimm vergöntzt önn Nam, dös haisst, wenn yr aindeuttig
+ ist.
+Anmörkung: D Vergöntzung geit s für aynn Hauffen Faudungen. Versuech ainfach
+ <STRG>d und <TAB>. Bsunders nützlich ist dös bei :help .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 7
+
+
+ 1. Zipf :help older druck <F1> older <HILF>, um ayn Hilffenster z öffnen.
+
+ 2. Zipf :help FAUDUNG , um auf ayn Hilf gan aynn Befelh z kemmen.
+
+ 3. Zipf <STRG>w w , um zo n andern Fenster z springen.
+
+ 4. Zipf :q , um s Hilffenster z schliessn.
+
+ 5. Erstöll ayn vimrc-Ginschripf zuer Sicherung von deine Mötzneinstöllungen.
+
+ 6. Druck <STRG>d, aft däßst naach : mit ayner Faudung angfangt haast, dyr-
+ mitst mügliche Vergöntzungen anzaigt kriegst.
+ Druck <TAB> für ain Vervollstöndigung yllain.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ Dös wär ietzet s End von n Wimmschainer. Gangen ist s daa drum, aynn kurtzn
+ und bündignen Überblik über s Blat WIMM z lifern, netty vil gnueg, däß myn
+ für s Eerste wirklich öbbs dyrmit anfangen kan. Dyrmit ist s aber auf kain
+ Weitn non nit taan; dyr Wimm haat schoon non vil meerer auf Lager. Lis als
+ Naehsts aynmaal s Benutzerhandbuech: :help user-manual .
+
+ Zo n Weiterlösn und Weiterlernen wör dös Buech daader zo n Empfelhen:
+ Vim - Vi Improved - von n OUALLINE Steve
+ Verlaag: New Riders
+ Dös ist dös eerste Buech, wo ganz yn n Wimm gwidmt ist, netty dös Grechte für
+ Anfönger. Es haat ayn Wösn Beispiler und aau Bilder drinn.
+ See http://iccf-holland.org/click5.html
+
+ Dös folgete Buech ist schoon ölter und meerer über n Urwimm als wie über n
+ Wimm, aber aau zo n Empfelhen: Textbearbeitung mit dem vi-Editor - von dyr
+ LAMB Linda und n ROBBINS Arnold - Verlaag O'Reilly - Buechlaittzal (ISBN):
+ 3897211262
+ In dönn Buech kan myn fast allss finddn, was myn mit n Urwimm angeen mecht.
+ De söxte Ausgaab enthaltt aau schoon öbbs über n Wimm.
+ Als ietzunde Bezugniss für d Fassung 6.2 und ayn pfrenge Einfüerung dient
+ dös folgete Buech:
+ vim ge-packt von n WOBST Reinhard
+ mitp-Verlaag, Buechlaittzal 3-8266-1425-9
+ Trotz dyr recht pfrengen Darstöllung ist s durch seine viln nützlichnen Bei-
+ spiler aau für Einsteiger grad grecht. Probhaeupster und de Beispilschripfer
+ seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html
+
+ Verfasst habnd dönn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr
+ Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entwürff, wo
+ dyr SMITH Charles von dyr Kolraader Allschuel (Colorado State University)
+ zuer Verfüegung gstöllt haat. Gundpost: bware@mines.colorado.edu.
+ Für n Wimm haat n dyr MOOLENAAR Bram barechtt.
+ De bairische Übersötzung stammt von n HELL Sepp 2009. Sein Gundpostbrächt ist
+ sturmibund@t-online.de
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+
+
diff --git a/vim/vim-7.2/tutor/tutor.bj.utf-8 b/vim/vim-7.2/tutor/tutor.bj.utf-8
new file mode 100644
index 0000000..80c3ade
--- /dev/null
+++ b/vim/vim-7.2/tutor/tutor.bj.utf-8
@@ -0,0 +1,987 @@
+===============================================================================
+= G o t i k a m i n n W I M M - S c h a i n e r - Fassung 1.7D =
+===============================================================================
+
+ Dyr Wimm ist ayn gro mächtigs Blat, dös was mit aynn Wösn Befelh aufwartt; z
+ vil, däß myn s allsand in aynn Schainer wie dönn daader unterbräng. Der
+ Schainer ist yso aufbaut, däß yr halt netty die Befelh allsand bringt, wost
+ brauchst, däßst mit iem für s Eerste wirklich öbbs anfangen kanst.
+ Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; dös haisst,
+ wennst di nit grooß mit n Pröbln und Tüftln aufhaltst.
+
+ OBACHT:
+ Die Faudungen, wost daader finddst, gaand istig s Gwort öndern. Dösswögn
+ machst eyn n Böstn glei ayn Aamum von derer Dautticht daader. Haast alsnan
+ dös Gwort daader mit n Befelh "vimtutor bj" ausherlaassn, ist s ee schoon
+ ayn Aamum.
+ Mir kan s nit oft gnueg sagn, däß der Schainer daader istig gan n Üebn
+ ghoert. Also muesst schoon aau die Befelh ausfüern, wennst ys gscheid ler-
+ nen willst. Mit n Lösn yllain ist s +nit taan!
+
+ Ietz schaust grad non, däß dein Föststölltastn nit druckt ist; und aft geest
+ glei aynmaal mit dyr j-Tastn abwärts (yso laaufft dös nömlich), hinst däßst
+ de gantze Letzn 1.1 auf n Bildschirm haast.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 1.1: MIT N MÖRKL UMAYNANDFARN
+
+** Dyrmitst mit n Mörkl umaynandkimmst, druck h, j, k und l wie unt zaigt. **
+ ^ Ayn Öslsbrugg:
+ k De Tastn h ist winster und +geet aau gan winster.
+ < h l > S l leit zesm und richtt si gan zesm.
+ j S j kan myn wie aynn Pfeil gan unt seghn.
+ v Mit n k kimmst gan n KOPF.
+ 1. Ietz ruedertst ainfach mit n Mörkl auf n Bildschirm umaynand, hinst däßst
+ di sicher füelst.
+ 2. Halt d Abhin-Tastn (j) druckt; aft rumplt s ainfach weiter. Netty yso
+ kimmst gan dyr naehstn Letzn.
+
+ 3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.2.
+
+Non öbbs: Allweil, wenn dyr niemer ganz wol ist, wasst öbbenn druckt haast, aft
+ zipfst <ESC>; naacherd bist wider ganz gwon in dyr Befelhs-Artweis.
+
+
+ Nöbnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter. Aber
+ hjkl seind z haissn s Wimm-Urgstain; und de "Hörtn" seind ganz dyr-
+ für, däß myn bei +dene bleibt. Pröblt s ainfach aus!
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 1.2: ÖNN WIMM AUSSCHALTTN
+
+
+ ALSO, EE WENNST ÖBBS VON DAA UNT AUSFÜERST, LIS LIEBER ZEERST DE GANTZE LET-
+ ZN!
+
+ 1. Druck d <ESC>-Tastn, dyrmitst aau gwiß in dyr Befelhs-Artweis bist.
+
+ 2. Demmlt :q! <EIN>.
+ Daa dyrmit benddst ys Blat und verwirffst allss, wasst öbbenn göndert
+ haast.
+
+ 3. Balst önn Eingib seghst, gib dö Faudung ein, wo di zo dönn Schainer brun-
+ gen haat, also vimtutor bj <EIN>.
+
+ 4. Also, wenn ietz allsse sitzt, naacherd füerst d Schritt 1 hinst 3 aus, mit
+ wasst ys Blat verlaasst und aft wider einhinkimmst.
+
+Anmörkung: Mit :q! <EIN> verwirffst allss, wasst göndert older enther gschribn
+ haast. In aynn Öttlych Letznen lernst acht, wiest dös allss in ayner
+ Dautticht speichertst.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 1.3: GWORT BARECHTN - LÖSCHN
+
+
+ ** Druck x , dyrmitst dös Zaichen unter n Mörkl löschst. **
+
+ 1. Bewög di mit n Mörkl auf de mit ---> angmörkte Zeil unt.
+
+ 2. Zo n Faeler Verbössern farst mit n Mörkl netty auf dös Zaichen, dös wo
+ glöscht ghoert.
+
+ 3. Druck de Tastn x , däßst dös überflüssige Zaichen löschst.
+
+ 4. Ietz tuest so lang weiter mit 2 hinst 4, hinst däß dyr Saz stimmt.
+
+---> De Kkuue sprangg übber nn Maanad.
+
+ 5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.4. weiter.
+
+Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn,
+ allss auswendig z lernen; nän, lern ainfach mit n Anwenddn!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 1.4: GWORT BARECHTN - EINFÃœEGN
+
+
+ ** Druck i , dyrmitst öbbs einfüegst. **
+
+ 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil, wo mit ---> angeet.
+
+ 2. Dyrmitst de eerste Zeil wie de zwaitte machst, bewög önn Mörkl auf dös
+ eerste Zaichen NAACH derer Stöll, daa wo s Gwort eingfüegt werdn sollt.
+
+ 3. Druck i und gib dös ein, was abgeet.
+
+ 4. Wenn ieweils ayn Faeler verweitert ist, aft druck <ESC>; und dyrmit kimmst
+ gan dyr Befelhsartweis zrugg.
+ So, und ietz tuest ainfach yso weiter, hinst däß dyr Saz stimmt.
+
+---> Daader gt dd öbbs b.
+---> Daader geet diend öbbs ab.
+
+ 5. Balst mainst, däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.5.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 1.5: GWORT BARECHTN - ANFÃœEGN
+
+
+ ** Druck A gan n Gwort Anfüegn. **
+
+ 1. Gee mit n Mörkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat.
+ Daa ist s gleich, wo gnaun dyr Mörkl in derer Zeil steet.
+
+ 2. Demmlt A und gib de entspröchetn Ergöntzungen ein.
+
+ 3. Wennst mit n Anfüegn förtig bist, aft druckst <ESC>, däßst wider eyn de
+ Befelhsartweis zruggkimmst.
+
+ 4. So, und ietz geest aft non gan dyr zwaittn mit ---> angmörktn Zeil; und
+ daadl machst ys netty yso.
+
+---> In derer Zeil gee
+ In derer Zeil geet ayn Weeng ayn Gwort ab.
+---> Aau daader stee
+ Aau daader steet öbbs Unvollstöndigs.
+
+ 5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 1.6: AYN DAUTTICHT BARECHTN
+
+
+ ** Mit :wq speichertst ayn Dautticht und verlaasst önn Wimm ganz. **
+
+ !! OBACHT: Ee wennst mit dönn alln daa unt weitertuest, lis zeerst de gantze
+ Letzn durch!!
+
+ 1. Verlaaß also s Blat, wie s in dyr Letzn 1.2. haisst, mit :q! !
+
+ 2. Gib dö Faudung eyn n Eingib ein: vim Schainer <EIN> . 'vim' ruefft s Blat
+ auf, und 'Schainer' haisst de Dautticht, wost barechtn willst. Dyrmit
+ haast also ayn Dautticht, dö wost barechtn kanst.
+
+ 3. Ietz füegst öbbs ein older löschst öbbs, wiest ys in de vorignen Letznen
+ glernt haast.
+
+ 4. Speichert de gönderte Dautticht und verlaaß önn Wimm mit :wq <EIN> .
+
+ 5. Schmeiß önn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung.
+
+ 6. Aft däßst de obignen Schritt glösn und käppt haast, kanst ys durchfüern.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 1
+
+
+ 1. Dyr Mörkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert.
+ h (winst) j (ab) k (auf) l (zes)
+
+ 2. Um önn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT <EIN> .
+
+ 3. Willst önn Wimm verlaassn und aau allss verwerffen, aft gibst ein:
+ <ESC> :q! <EIN> .
+ Gan n Verlaassn und Speichern aber zipfst <ESC> :wq <EIN>.
+
+ 4. Willst dös Zaichen löschn, daa wo dyr Mörkl drauf ist, demmltst x .
+
+ 5. Willst öbbs vor n Mörkl eingöbn, zipfst i und drafter <ESC> .
+ Mechst ys aber eyn s Zeilnend anhinhöngen, benutzt ys A .
+ Und ainfach naach n Mörkl füegst ys mit a ein .
+
+Anmörkung: Druckst <ESC>, kimmst eyn de Befelhsartweis zrugg older brichst ayn
+ Faudung ab, dö wo dyr schiefgangen ist.
+
+ Ietz tue mit dyr Letzn 2 weiter.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.1.: LÖSHFAUDUNGEN
+
+
+ ** Demmlt dw , dyrmitst ayn Wort löschst **
+
+ 1. Druck <ESC>, dyrmit s aau gwiß ist, däßst in dyr Befelhsartweis bist.
+
+ 2. Bewög önn Mörkl zo dyr mit ---> angmörktn Zeil unt.
+
+ 3. Und daa geest ietz auf n Anfang von aynn Wort, dös wo glöscht ghoert.
+
+ 4. Zipf dw , däßst dös gantze Wort löschst.
+
+ Nöbnbei: Dyr Buechstabn d erscheint auf dyr lösstn Zeil von n Bildschirm,
+ sobaldst n eingibst. Dyr Wimm wartt ietz drauf, däß öbbs kimmt, al-
+ so daader ayn w . Seghst freilich öbbs Anderts wie ayn d ,
+ naacherd haast öbbs Falschs demmlt. Druck aft <ESC> und pröblt
+ s non aynmaal.
+---> Ayn Öttlych Wörter lustig ghoernd nit Fisper eyn dönn Saz einhin.
+
+ 5. Äfert d Schritt 3 und 4, hinst däß dyr Saz pässt, und gee aft gan dyr
+ Letzn 2.2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.2.: NON MEERER LÖSHFAUDUNGEN
+
+
+ ** Gib d$ ein, däßst hinst eyn s Zeilnend löschst. **
+
+ 1. Druck <ESC> , dyrmitst aau gwiß in dyr Befelhsartweis bist.
+
+ 2. Bewög önn Mörkl hinst eyn de mit ---> angmörkte Zeil untn.
+
+ 3. Gee mit n Mörkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn . .
+
+ 4. Zipf d$ , däßst hinst eyn s End von dyr Zeil löschst.
+
+---> Öbber haat s End von dyr Zeil doplt eingöbn. doplt eingöbn.
+
+
+ 5. Gee weiter gan dyr Letzn 2.3, dyrmitst versteest, was daader ablaaufft.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.3: PFEMERER UND WOLENDER
+
+
+ Vil Faudungen, wo s Gwort öndernd, sötznd si aus aynn Pfemerer und aynn Wo-
+ lend zamm. Bal i also öbbs löschn will, schreib i ainsting d und aft s "Wo-
+ lend", dös haisst also, "wolend", "wohin" däß i will - older was i halt gnaun
+ löschn will.
+
+
+
+
+
+
+ Daader also, was i wie löschn kan:
+ w - hinst eyn n Anfang von n naehstn Wort AANE dönn sein eersts Zaichen.
+ e - gan n End von n ietzundn Wort MIT dönn seinn lösstn Zaichen.
+ $ - zo n End von dyr Zeil MIT derer irn lösstn Zaichen.
+
+ Also löscht de Tastnfolg de umbb n Mörkl hinst eyn s Wortend.
+Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mörkl
+ entspröchet weiter.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN
+
+
+ ** Gib i ayn Zal vor aynn Wolend ein, werd dös Sel halt widerholt. **
+
+ 1. Bewög önn Mörkl gan n Anfang von dyr Zeil mit ---> dyrvor unt.
+
+ 2. Zipf 2w , däßst mit n Mörkl zwai Wörter weitergeest.
+
+ 3. Zipf 3e , däßst mit n Mörkl auf s End von n drittn Wort kimmst.
+
+ 4. Zipf 0 (aynn Nuller), däßst eyn n Anfang von dyr Zeil hinkimmst.
+
+ 5. Widerhol d Schritt 2 und 3 mit verschaidne Zöler.
+
+ ---> Dös ist ietz grad ayn Zeil zo n drinn Umaynanderruedern.
+
+ 6. Gee weiter gan dyr Letzn 2.5.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN
+
+
+ ** Ayn Zal vor aynn Pfemerer äfert dönn um seln Werd. **
+
+ Also, i mecht löschn, und zwaar öbbs Bestimmts, und dös so und so oft: Daa
+ dyrzue benutz i aynn Zöler:
+ d Zöler Wolend (also önn Bewögungsschrit)
+
+ 1. Bewög önn Mörkl gan n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an-
+ gmörktn Zeil.
+
+ 2. Demmlt d2w , dyrmitst de ganz grooßgschribnen Wörter löschst.
+
+ 3. Äfert d Schritt 1 und 2 mit dönn entspröchetn Zöler, dyrmitst de drauf-
+ folgetn ganz großgschribnen Wörter mit ayner ainzignen Faudung löschst:
+
+
+---> Dö ABC DE Zeil FGHI JK LMN OP mit Wörter ist Q RS TUV ietz berichtigt.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.6: ARECHTN AUF ZEILN
+
+
+ ** Zipf dd , um ayn gantze Zeil z löschn. **
+
+ Weil s gro oft vürkimmt, däß myn gantze Zeiln löscht, kaamend schoon d Ent-
+ wickler von n Urwimm daa drauf, däß myn ainfach dd gan dönn Zwök schreibt.
+
+
+ 1. Bewög önn Mörkl gan dyr zwaittn Zeil in n untignen "Gedicht".
+ 2. Zipf dd , um dö Zeil z löschn.
+ 3. Ietz bewögst di gan dyr viertn Zeil.
+ 4. Zipf 2dd , um zwo Zeiln zo n Löschn.
+
+---> 1) Roosn seind root;
+---> 2) Drunter ist s Koot.
+---> 3) Veigerln seind blau.
+---> 4) Umgrabn tuet s d Sau.
+---> 5) D Ur sait de Zeit,
+---> 6) Sait, däß s mi freut,
+---> 7) Dirndl, dein Gschau.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 2.7: RUGGGÖNGIG MACHEN (RUGGLN)
+
+
+ ** Zipf u , dyrmitst de lösstn Faudungen ruggltst **
+ ** older U , um ayn gantze Zeil widerherzstölln. **
+
+ 1. Bewög önn Mörkl gan dyr mit ---> angmörktn Zeil unt und gee dyrmit auf n
+ eerstn Faeler.
+ 2. Zipf x , däßst dös eerste z vile Zaichen löschst.
+ 3. Ietz demmlt u , dyrmitst de lösste Faudung ruggltst.
+ 4. Ietz behöb allsand Faeler auf dyr Zeil mit dyr Hilf von n Befelh x .
+ 5. Aft gibst ayn U (grooß) ein, däßst de Zeil wider yso hinbringst, wie s
+ gwösn ist.
+ 6. So, und ietz demmltst so oft u , hinst däßst s U und de andern Fau-
+ dungen rugggöngig gmacht haast.
+ 7. Und ietzet widerum schreibst so oft <STRG>r , hinst däßst allsand Be-
+ felh widerhergstöllt, z haissn allsse rugg-grugglt haast (also d Rugggön-
+ gigmachungen rugggöngig gmacht).
+---> Beerichtig d Faeller voon dehrer Zeiil und sttöll s mitt n Ruggruggln wi-
+ der her.
+ 8. Die Faudungen seind gro wichtig; sö helffend ainn närrisch weiter.
+ Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 2
+
+
+ 1. Um von n Mörkl aus hinst eyn s naehste Wort zo n Löschn, zipf: dw
+ 2. Um umbb n Mörkl hinst eyn s End von dyr Zeil zo n Löschn, demmlt d$
+ 3. Dyrmitst ayn gantze Zeil löschst, gib ein: dd
+ 4. Mechst ayn Bewögung, ayn "Wolend", öfters, stöll de entspröchete Zal dyr-
+ vor: 3dw older aau: d3w
+ 5. Dyr Pfueg für ayn Önderungsfaudung lautt yso:
+ Pfemerer [Zal] Bewögungsschrit (Wolend)
+ Und dös haisst:
+ Dyr PFEMERER gibt an, WAS taan ghoert, öbbenn d = löschn (»delete«).
+ [ZAL] - Ayn Zal KAN myn angöbn, wenn myn halt ayn Wolend öfter habn will.
+ S WOLEND, also dyr Schrit WOHIN, besagt, auf was i aushin will, öbbenn
+ auf ayn Wort ( w ), s End von dyr Zeil ( $ ) und so weiter.
+
+ 6. Däßst eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller: 0
+
+ 7. Um öbbs Vorigs wider z ruggln, gib ein: u (klain also)
+ Um allsand Önderungen in ayner Zeil z ruggln, haast: U (also grooß)
+ Um "rugg-z-ruggln", also allss wider herzstölln, zipf: <STRG>r
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 3.1: ANFÜEGN (»put«)
+
+
+ ** Zipf p , dyrmitst öbbs gnetty Glöschts naach n Mörkl anfüegst. **
+
+ 1. Bewög önn Mörkl gan dyr eerstn untignen Zeil mit ---> dyrvor.
+
+ 2. Zipf dd , um sele Zeil z löschn und dyrmit in aynn Wimm-"Roster" zo n
+ speichern.
+
+ 3. Bewög önn Mörkl gan dyr Zeil c), ÜBER derer, daa wo de glöschte Zeil ein-
+ hinkemmen sollt.
+
+ 4. So, und ietz gibst ainfach p ein, und schoon haast dö Zeil unter derer
+ mit n Mörkl drinn.
+ 5. Äfert d Schritt 2 hinst 4, hinst däßst allsand Zeiln yso naachynaynand
+ haast, wie s hinghoernd.
+
+---> d) Kanst du dös aau?
+---> b) Veigerln seind blau.
+---> c) Bedachtn kan myn lernen.
+---> a) Roosn seind root.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 3.2: ERSÖTZN (»replace«)
+
+
+ ** Zipf rx , um dös Zaichen unter n Mörkl durch x z ersötzn. **
+
+ 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil mit ---> dyrvor.
+
+ 2. Bewög önn Mörkl, hinst däß yr auf n eerstn Faeler steet.
+
+ 3. Zipf r und drafter dös Zaichen, wo dyrfür daa hinghoert.
+
+ 4. Widerhol d Schritt 2 und 3, hinst däßst de eerste Zeil gmaeß dyr zwaittn
+ berichtigt haast:
+---> Wie dö Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft!
+---> Wie dö Zeil eingöbn wurd, wurdnd ainige falsche Tastnen zipft!
+
+ 5. Ietz tue mit dyr Letzn 3.3 weiter.
+
+Anmörkung: Vergiß nit drauf, däßst mit n Anwenddn lernen solltst und nit öbbenn
+ mit n Auswendiglernen!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 3.3: ÖNDERN (»change«)
+
+
+ ** Um hinst eyn s Wortend z öndern, zipf ce . **
+
+ 1. Gee mit n Mörkl auf de eerste mit ---> angmörkte Zeil.
+
+ 2. Ietz farst netty auf s "s" von Wstwr hin.
+
+ 3. Zipf ce ein und aft d Wortberichtigung, daader also örter .
+
+ 4. Druck <ESC> und bewög önn Mörkl gan n naehstn Zaichen, wo göndert ghoert.
+
+ 5. Äfert d Schritt 3 und 4, hinst däß dyr eerste Saz wie dyr zwaitte ist.
+
+---> Ainige Wstwr von derer Zlww ghhnnd mit n Öndern-Pfemerer gaauu.
+---> Ainige Wörter von derer Zeil ghoernd mit n Öndern-Pfemerer göndert.
+
+ce löscht also s Wort und schlaaufft di eyn d Eingaab-Artweis.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 3.4.: NON MEERER ÖNDERUNGEN PFELFS c
+
+
+ ** D Löshfaudung c arechtt mit de nömlichnen Wolender wie dö mit d **
+
+ 1. Dyr Önder-Pfemerer arechtt anleich wie d Löshfaudung mit d , und zwaar
+ yso:
+ c [Zal] Bewögungsschritt (Wolend)
+
+ 2. D Wolender seind de gleichn, öbbenn w für Wort und $ für s Zeilnend.
+
+
+ 3. Bewög di zo dyr eerstn untignen Zeil mit ---> .
+
+ 4. Ietz geest auf dönn eerstn Faeler.
+
+ 5. Zipf c$ , gib önn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft
+ <ESC>.
+---> S End von derer Zeil sollt an de zwaitte daader anglichen werdn.
+---> S End von derer Zeil sollt mit n Befelh c$ berichtigt werdn.
+
+Denk allweil dran, däßst iederzeit mit dyr Ruggtastn Faeler ausbössern kanst.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 3
+
+
+ 1. Um ayn vorher glöschts Gwort anzfüegn, zipf p . Daa dyrmit werd dös
+ gantze Gwort NAACH n Mörkl angfüegt. Wenn s ayn gantze Zeil gwösn ist,
+ werd dö sel als de Zeil unterhalb n Mörkl eingfüegt.
+
+ 2. Um dös Zaichen unter n Mörkl, also wo dyr Mörkl ist, z ersötzn, zipf r
+ und aft dös Zaichen, wost daadl habn willst.
+
+ 3. Dyr Önderungspfemerer ( c = »change«) laasst ainn umbb n Mörkl hinst eyn s
+ End von n Wolend öndern. Zipf ce , dyrmitst umbb n Mörkl hinst eyn s End
+ von n Wort öndertst, und c$ hinst eyn s End von dyr Zeil.
+
+ 4. Für d Önderung lautt dyr Pfueg:
+
+ c [Zal] Wolend
+
+Ietz tue mit dyr naehstn Letzn weiter.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND
+
+** Demmlt <STRG>g, däßst önn Befand und Darstand von dyr Dautticht anzaigst. **
+ ** Zipf G , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. **
+
+Anmörkung: Lis dö gantze Letzn daader durch, ee wennst iewign öbbs unternimmst!
+
+ 1. Druck <STRG>g . Auf dös hin erscheint auf derer Seitt ganz unt ayn Dar-
+ standsmeldung mit n Dauttichtnam und n Befand innerhalb dyr Dautticht.
+ Mörk dyr de Zeilnnummer für n Schrit 3.
+
+Anmörkung: Müglicherweis seghst aau önn Mörklbefand in n zesmen untern Bild-
+ schirmögg. Aft ist s "Lindl" (»ruler«) eingstöllt; schau dyrzue mit
+ n Befelh :help 'ruler' naach.
+ 2. Druck G , um an s End von dyr Dautticht z kemmen.
+ gg gibst ein, däßst gan n Anfang von dyr Dautticht aufhinkimmst.
+
+ 3. Gib d Nummer von derer Zeil ein, daa wost vorher warst, und aft non G .
+ Dös bringt di zrugg gan seler Zeil, daa wost stuenddst, wiest dös eerste
+ Maal <STRG>g gadruckst.
+
+ 4. Wennst di sicher gnueg füelst, aft füer d Schritt 1 hinst 3 aus.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 4.2: DYR BEFELH ZO N SUECHEN
+
+
+ ** Zipf / und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. **
+
+ 1. Du gibst also in dyr Befelhsartweis s Zaichen / ein. Dös sel wie aau dyr
+ Mörkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung : .
+
+ 2. Ietz zipf 'Faeeler' <EIN>. Netty um dös 'Faeeler' willst ietz suechen.
+
+ 3. Willst um gnaun dönn Ausdruk weitersuechen, zipf ainfach n (wie »next«).
+ Willst hinzrugg suechen, aft gibst N ein.
+
+ 4. Um von Haus aus zruggaus z suechen, nimm ? statt / her.
+
+ 5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, druck <STRG>o, und dös
+ öfter, wennst weiter zrugg willst. Mit <STRG>i widerum kimmst vorwärts.
+
+---> Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler
+
+Anmörkung: Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi-
+ der weiter dyrmit, men Sach dyr Schaltter 'wrapscan' wär auf aus.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 4.3: DE GÖGNKLAMMERN FINDDN
+
+
+ ** Zipf % , um de entspröchete Klammer ) , ] older } z finddn. **
+
+ 1. Sötz önn Mörkl auf iewign aine von dene drei Klammern ( , [ older {
+ in dyr untignen Zeil, wo mit ---> angmörkt ist.
+
+ 2. Ietzet zipf s Zaichen % .
+
+ 3. Dyr Mörkl geet ietz auf de pässete schliessete Klammer.
+
+ 4. Ietz demmlt % , und dyrmit kimmst gan dyr öffneretn Klammer zrugg.
+
+ 5. Sötz önn Mörkl auf ayn anderne Klammer von ({[]}) und pröblt % aus.
+
+---> Dös ( ist blooß ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. ))
+
+Anmörkung: Um dö Müglichkeit gaast bsunders froo sein, wennst aynmaal in aynn
+ Spaichgwort verzweiflt ayn faelete Gögnklammer suechst!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 4.4: D ERSÖTZUNGSFAUDUNG (»substitute«)
+
+
+ ** Zipf :s/alt/neu/g , um 'alt' durch 'neu' zo n Ersötzn. **
+
+ 1. Gee mit n Mörkl zo dyr unt steehetn mit ---> angmörktn Zeil.
+
+ 2. Zipf :s/dee/de <EIN> . Der Befelh ersötzt alsnan grad dös +eerste "dee",
+ wo vürkimmt.
+
+ 3. Ietz pröblt s mit :s/dee/de/g . Dös zuesötzliche g ("Pflok" nennt myn
+ öbbs Sölchers) bewirkt, däß allss, was dyrmit kennzaichnet ist, innerhalb
+ von dyr ainn Zeil ersötzt werd.
+
+---> Dee schoenste Zeit, däß myn dee Blüemln anschaut, ist dee schoene Lan-
+ gesszeit.
+ 4. Um ietz allsand Suechbegriff innerhalb von zwo Zeiln zo n Öndern, zipf
+ :#,#s/alt/neu/g , wobei # ieweils für de eerste und lösste Zeil von dönn
+ Pfraich steet.
+ :%s/alt/neu/g zipfst, däßst d Vürkemmen in dyr gantzn Dautticht öndertst.
+ Mit :%s/alt/neu/gc finddst allsand Vürkemmen in dyr gsamtn Dautticht;
+ daa werst aber zeerst non gfraagt, obst ys ersötzn willst older nity.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 4
+
+ 1. <STRG>g zaigt dönn ietzundn Dauttichtbefand und önn Darstand dyrvon an.
+ G bringt di an s End von dyr Dautticht.
+ <Zal> G bringt di gan dyr entspröchetn Zeilnnummer.
+ gg bringt di zo dyr eerstn Zeil.
+
+ 2. D Eingaab von / mit aynn Ausdruk suecht VÜRSHLING um dönn Ausdruk.
+ Gibst ? und aynn Suechbegrif ein, suecht s um dönn ÄRSHLING.
+ Zipf naach ayner Suech n ; naacherd werd in de gleiche Richtung weiter-
+ gsuecht. Mit N geet s umkeerter weiter.
+ <STRG>o bringt di zo ölterne Befändd zrugg, <STRG>i zo neuerne.
+
+ 3. D Eingaab von % , wenn dyr Mörkl auf ainer von dene Klammern steet: ({[
+ )]} , bringt di zo dyr Gögnklammer.
+
+ 4. Um dös eerste Vürkemmen von "alt" in ayner Zeil durch "neu" z ersötzn,
+ zipf :s/alt/neu .
+ Um allsand in ayner Zeil z ersötzn, zipf :s/alt/neu/g .
+ Mechst allss in zwo Zeiln ersötzn, demmlt zo n Beispil :5,6s/alt/neu/g .
+ Mechst allss in dyr gantzn Dautticht ersötzn, gib ein: :%s/alt/neu/g .
+ Willst ayn ieds Maal bstaetln, höng 'c' wie »confirm« hint anhin.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÃœERN
+
+
+ ** Willst ayn Gfäßfaudung ausfüern, gib ainfach dö sel naach :! ein. **
+
+ 1. Zipf dönn bekanntn Befelh : , dyrmitst mit n Mörkl auf n Bildschirm
+ ganz abhin kimmst. Draufhin kanst aynn gwonen Gfäßbefelh eingöbn.
+
+ 2. Zeerst kimmt aber non ayn Ruefzaichen ! . Und ietz haast de Müglich-
+ keit, ayn beliebige ausserige Gfäßfaudung auszfüern.
+
+ 3. Als Beispil zipf :!ls <EIN> ; und schoon haast ayn Auflistung von deinn
+ Verzaichniss, netty wie wennst ganz gwon in n Eingib wärst. Geet ls
+ aus iewign aynn Grund nit, aft pröblt s mit :!dir <EIN> .
+
+Also non aynmaal: Mit dönn Angang kan ayn iede beliebige ausserige Faudung aus-
+ gfüert werdn, aau mit Auerwerdd.
+
+Und wolgmörkt: Allsand Befelh, wo mit : angeend, müessend mit <EIN> bstö-
+ tigt werdn. Dös dyrsagn myr vürbaß niemer.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 5.2: NON MEERER DRÃœBER, WIE MYN DAUTTICHTN SCHREIBT
+
+
+ ** Um öbbs Gönderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM. **
+
+ 1. Zipf :!dir older :!ls , däßst dyr ayn Auflistung von deinn Verzaich-
+ niss ausherlaasst. Däßst dyrnaach <EIN> eingöbn muesst, waisst ee schoon.
+
+ 2. Suech dyr aynn Dauttichtnam aus, dönn wo s non nit geit, öbbenn POCH.
+
+ 3. Ietz demmlt: :w POCH (also mit POCH als dönn neuen Dauttichtnam).
+
+ 4. Dös speichert ietz de gantze Dautticht, also önn Wimmschainer, unter dönn
+ Nam POCH. Dös kanst leicht überprüeffen, indem däßst ainfach :!ls older
+ :!dir zipfst und dyrmit deinn Verzaichnissinhalt seghst.
+
+Anmörkung: Stigst ietz aus n Wimm aus und gännst n aft wider mit vim POCH ,
+ naacherd wär dö Dautticht ayn gnaune Aamum von n Schainer dyrselbn,
+ wiest n gspeichert haast.
+
+ 5. Ietz verweitert dö Dautticht - fallsst s Fenstl haast - , mit :!del POCH
+ beziehungsweis bei aynn Ainslgebäu mit :!rm POCH .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN
+
+** Um aynn Tail von dyr Dautticht z speichern, zipf v [Wolend] :w DAUTTICHT **
+
+ 1. Ruck önn Mörkl auf netty dö Zeil daader.
+
+ 2. Demmlt v und gee mit n Mörkl auf dönn fümftn Auflistungspunt untet. Du
+ seghst glei, däß s Gwort vürherghöbt erscheint.
+
+ 3. Druck s Zaichen : . Ganz unt auf n Bildschirm erscheint :'<,'> .
+
+ 4. Zipf w POCH , wobei s dönn Dauttichtnam POCH non nit geit. Vergwiß di,
+ däßst dös :'<,'>w POCH aau +seghst, ee wennst <EIN> druckst.
+
+ 5. Dyr Wimm schreibt de ausgwaltn Zeil eyn de Dautticht POCH einhin. Benutz
+ :!dir older :!ls , däßst dös überprüeffst. Lösh s fein nit öbbenn! Mir
+ brauchend s nömlich für de naehste Letzn.
+
+Anmörkung: Druckt myn v , ginnt d Sichtisch-Auswal. Du kanst mit n Mörkl um-
+ aynandfarn, um d Auswal z veröndern. Drafter kan myn mit yn aynn
+ Pfemerer mit dönn Gwort öbbs machen. Zo n Beispil löscht d dös
+ Gwort.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 5.4: EINLÖSN UND ZAMMENFÜERN VON DAUTTICHTN
+
+
+ ** Um önn Inhalt von ayner Dautticht einzlösn, zipf :r DAUTTICHTNAM **
+
+ 1. Sötz önn Mörkl über dö Zeil daader.
+
+OBACHT: Aft däßst önn Schrit 2 ausgfüert haast, seghst auf aynmaal öbbs aus
+ dyr Letzn 5.3. Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi-
+ derfinddst.
+ 2. Ietz lis dein Dautticht POCH ein, indem däßst d Faudung :r POCH aus-
+ füerst, wobei wie gsait POCH für dönn von dir ausgsuechtn Dauttichtnam
+ steet. De einglösne Dautticht werd unterhalb dyr Mörklzeil eingfüegt.
+
+ 3. Um zo n Überprüeffen, ob de Dautticht aau gwiß einglösn ist, gee zrugg;
+ und du seghst, däß s ietz zwo Ausförtigungen von dyr Letzn 5.3. geit, s
+ Urniss und de eingfüegte Dauttichtfassung.
+
+Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei-
+ spil list :r !ls d Ausgaab von dyr Faudung ls ein und füegt s
+ unterhalb n Mörkl ein.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 5
+
+
+ 1. :!FAUDUNG füert aynn ausserignen Befelh aus.
+
+ Daader ayn Öttlych gwänddte Beispiler:
+ (Fenstl) (Ainsl - Leinsl)
+ :!dir :!ls - listt s Verzaichniss auf.
+ :!del DAUTTICHT :!rm DAUTTICHT - verweitert sele Dautticht.
+
+ 2. :w DAUTTICHT speichert de ietzunde Wimmdautticht unter dönn besagtn Nam.
+
+ 3. v WOLEND :w DAUTTICHTNAM schreibt de sichtisch ausgwaltn Zeiln eyn de
+ Dautticht mit seln Nam.
+
+ 4. :r DAUTTICHTNAM ladt sele Dautticht und füegt s unterhalb n Mörklbefand
+ ein.
+
+ 5. :r !dir list d Ausgaab von dyr Faudung dir und füegt s unterhalb n
+ Mörklbefand ein.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 6.1: ZEIL ÖFFNEN (»open«)
+
+
+ ** Zipf o, um ayn Zeil unterhalb n Mörkl z öffnen und eyn d **
+ ** Einfüegartweis z kemmen. **
+
+ 1. Bewög önn Mörkl zo dyr eerstn mit ---> angmörktn Zeil unt.
+
+ 2. Zipf o (klain), um ayn Zeil UNTERHALB n Mörkl z öffnen und mit dyr Ein-
+ füegartweis weiterztuen.
+
+ 3. Ietz zipf ayn Weeng ayn Gwort und druck <ESC>, um d Einfüegartweis z ver-
+ laassn.
+---> Mit o werd dyr Mörkl auf de offene Zeil in dyr Einfüegartweis gsötzt.
+
+ 4. Um ayn Zeil OBERHALB n Mörkl aufzmachen, gib ainfach aynn groosss O statt
+ yn aynn klainen ein. Versuech dös auf dyr untignen Zeil.
+
+---> Öffnet ayn Zeil über derer daader mit O , wenn dyr Mörkl auf derer Zeil
+ ist.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 6.2: GWORT ANFÜEGN (»append«)
+
+
+ ** Zipf a , um öbbs NAACH n Mörkl einzfüegn. **
+
+ 1. Bewög önn Mörkl gan n Anfang von dyr eerstn Üebungszeil mit ---> unt.
+
+ 2. Druck e , hinst däß dyr Mörkl an n End von Zei steet.
+
+ 3. Zipf ayn klains a , um öbbs NAACH n Mörkl anzfüegn.
+
+ 4. Vergöntz dös Wort wie in dyr Zeil drunter. Druck <ESC>, um d Schreib-Art-
+ weis z verlaassn.
+
+ 5. Bewög di mit e zo n naehstn ungantzn Wort und widerhol d Schritt 3 und
+ 4.
+
+---> Dö Ze biett ayn Glögn , ayn Gwort in ayner Zeil anzfü.
+---> Dö Zeil biett ayn Glögnet, ayn Gwort in ayner Zeil anzfüegn.
+
+Anmörkung: a , i und A bringend ainn gleichermaaßn eyn d Einfüegartweis;
+ dyr ainzige Unterschaid ist, WO mit n Einfüegn angfangt werd.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«)
+
+
+ ** Demmlt ayn groosss R , um meerer als wie grad ain Zaichen z ersötzn. **
+
+ 1. Bewög önn Mörkl zo dyr eerstn untignen, mit ---> angmörktn Zeil.
+ Gee mit n Mörkl gan n Anfang von n eerstn xxx .
+
+ 2. Ietz druck R und zipf sele Zal, wo drunter in dyr zwaittn Zeil steet,
+ yso däß de sel s xxx ersötzt.
+
+ 3. Druck <ESC> , um d Ersötzungsartweis z verlaassn. Du gspannst, däß dyr
+ Rest von dyr Zeil unveröndert bleibt.
+
+ 4. Äfert die Schritt, um dös überblibne xxx z ersötzn.
+
+---> S Zunddn von 123 zo xxx ergibt xxx.
+---> S Zunddn von 123 zo 456 ergibt 579.
+
+Anmörkung: D Ersötzungsartweis ist wie d Einfüegartweis, aber ayn ieds eindem-
+ mlte Zaichen löscht ayn vorhanddns.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 6.4: GWORT AAMEN UND EINFÃœEGN
+
+ ** Benutz önn Pfemerer y , um öbbs z aamen, und p , um öbbs einzfüegn. **
+
+ 1. Gee zo dyr mit ---> angmörktn Zeil unt und sötz önn Mörkl hinter "a)".
+
+ 2. Ginn d Sichtisch-Artweis mit v und bewög önn Mörkl gnaun vor "eerste".
+
+ 3. Zipf y , um dönn vürherghöbtn Tail z aamen.
+
+ 4. Bewög önn Mörkl gan n End von dyr naehstn Zeil: j$
+
+ 5. Demmlt p , um dös Gwort einzfüegn, und aft: a zwaitte <ESC> .
+
+ 6. Benutz d Sichtischartweis, um " Eintrag." auszwaln, aam s pfelfs y, be-
+ wög di gan n End von dyr naehstn Zeil mit j$ und füeg s Gwort dortn mit
+ p an.
+
+---> a) dös ist dyr eerste Eintrag.
+ b)
+
+Anmörkung: Du kanst y aau als Pfemerer verwenddn; yw aamt ain Wort.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 6.5: SCHALTTER SÖTZN
+
+** Sötz aynn Schaltter yso, däß ayn Suech older Ersötzung Grooß- und Klain- **
+ ** schreibung übergeet. **
+
+ 1. Suech um 'übergee", indem däßst /übergee eingibst.
+ Widerhol d Suech ayn Öttlych Maal, indem däßst de Tastn n druckst.
+
+ 2. Sötz de Zwisl - önn Schaltter - 'ic' (»ignore case«), indem däßst :set ic
+ eingibst.
+ 3. Ietz suech wider um 'übergee' und tue aau wider mit n weiter. Daa fallt
+ dyr auf, däß ietz öbbenn aau Übergee und ÜBERGEE hergeet.
+
+ 4. Sötz de Zwisln 'hlsearch' und 'incsearch' pfelfs: :set hls is
+
+ 5. Widerhol d Suech und bobacht, was ietz gschieght: /übergee <EIN>
+
+ 6. Däßst grooß und klain wider gwon unterscheidst, zipf: :set noic
+
+Anmörkung: Mechst de Tröffer niemer vürherghöbt seghn, gib ein: :nohlsearch
+Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \c
+ in n Suechausdruk: /übergee\c <EIN>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 6
+
+ 1. Zipf o , um ayn Zeil UNTERHALB n Mörkl z öffnen und d Einfüegartweis z
+ ginnen.
+ Zipf O , um ayn Zeil OBERHALB n Mörkl z öffnen.
+
+ 2. Zipf a , um NAACH n Mörkl ayn Gwort einzfüegn.
+ Zipf A , um ayn Gwort naach n Zeilnend anzfüegn.
+
+ 3. D Faudung e bringt di gan n End von aynn Wort.
+
+ 4. Dyr Pfemerer y (»yank«) aamt öbbs, p (»put«) füegt dös ein.
+
+ 5. Ayn groosss R geet eyn d Ersötzungsartweis, hinst däß myn <ESC> druckt.
+
+ 6. D Eingaab von ":set xxx" sötzt de Zwisl "xxx". Ayn Öttlych Zwisln seind:
+ 'ic' 'ignorecase' Grooß/klain wurst bei ayner Suech
+ 'is' 'incsearch' Zaig aau schoon ayn Tailüberainstimmung
+ 'hls' 'hlsearch' Höb allsand pässetn Ausdrück vürher
+ Dyr Schaltternam kan in dyr Kurz- older Langform angöbn werdn.
+
+ 7. Stöll yn ayner Zwisl "no" voran, däßst ys abschalttst: :set noic
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 7.1: AYN HILFGWORT AUFRUEFFEN
+
+
+ ** Nutz dös einbaute Hilfgebäu, de "Betribsanlaittung" **
+
+ Eyn n Wimm ist ayn ausfüerliche "Gebrauchsanweisung" einbaut. Für s Eerste
+ pröblt ainfach ains von dene dreu aus:
+ - Druck d <HILF>-Tastn, wennst öbbenn aine haast.
+ - Druck de Tastn <F1>, fallsst ys haast.
+ - Zipf :help <EIN>
+
+ Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie dös mit dyr Hilf geet.
+ Demmlt <STRG>w w , um von ainn Fenster zo n andern zo n Springen.
+ Demmlt :q <EIN> , um s Hilffenster zo n Schliessn.
+
+ Du kanst zo so guet wie allssand ayn Hilf finddn, indem däßst yn dyr Faudung
+ :help aynn Auerwerd naachstöllst und istig <EIN> nit vergisst. Pröblt dös:
+
+ :help w
+ :help c_CTRL-D
+ :help insert-index
+ :help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 7.2: ERSTÖLL AYN GIN-SCHRIPF
+
+
+ ** Mutz önn Wimm mit de einbautn Faehigkeitn auf **
+
+ Dyr Wimm besitzt ayn Wösn Schäftungen, wo über n Urwimm aushingeend, aber de
+ meerern dyrvon seind in dyr Vorgaab ausgschaltt. Dyrmitst meerer aus n Wimm
+ ausherholst, erstöllst ayn "vimrc"-Dautticht.
+
+ 1. Lög ayn "vimrc"-Dautticht an; dös geet ie naach Betribsgebäu verschidn:
+ :e ~/.vimrc für s Ainsl
+ :e $VIM/_vimrc bei n Fenstl
+
+ 2. Ietz lis önn Inhalt von dyr Beispil-"vimrc"-Dautticht ein:
+ :r $VIMRUNTIME/vimrc_example.vim
+
+ 3. Speichert de Dautticht mit:
+ :w
+
+ 4. Bei n naehstn Gin von n Wimm ist aft d Füegnussvürherhöbung zuegschaltt.
+ Du kanst dyr allss eyn dö Dautticht einhinschreibn, wasst bständig habn
+ willst. Meerer dyrzue erfarst unter: :help vimrc-intro
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Letzn 7.3: VERGÖNTZN
+
+
+ ** Befelhszeilnvergöntzung mit <STRG>d und <TAB> **
+
+ 1. Vergwiß di, däß dyr Wimm nit auf n Urwimm-"Glais" fart: :set nocp
+
+ 2. Schaug naach, wölcherne Dauttichtn däß s in n Verzaichniss geit: :!ls
+ older :!dir
+ 3. Zipf önn Anfang von ayner Faudung: :e
+
+ 4. Druck <STRG>d , und dyr Wimm zaigt ayn Listn von Faudungen, wo mit "e"
+ angeend.
+ 5. Druck <TAB> , und dyr Wimm vervollstöndigt önn Faudungsnam zo ":edit".
+
+ 6. Füeg ayn Laerzaichen und önn Anfang von ayner besteehetn Dautticht an:
+ :edit DAU
+
+ 7. Druck <TAB>. Dyr Wimm vergöntzt önn Nam, dös haisst, wenn yr aindeuttig
+ ist.
+Anmörkung: D Vergöntzung geit s für aynn Hauffen Faudungen. Versuech ainfach
+ <STRG>d und <TAB>. Bsunders nützlich ist dös bei :help .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ZAMMENFASSUNG VON DYR LETZN 7
+
+
+ 1. Zipf :help older druck <F1> older <HILF>, um ayn Hilffenster z öffnen.
+
+ 2. Zipf :help FAUDUNG , um auf ayn Hilf gan aynn Befelh z kemmen.
+
+ 3. Zipf <STRG>w w , um zo n andern Fenster z springen.
+
+ 4. Zipf :q , um s Hilffenster z schliessn.
+
+ 5. Erstöll ayn vimrc-Ginschripf zuer Sicherung von deine Mötzneinstöllungen.
+
+ 6. Druck <STRG>d, aft däßst naach : mit ayner Faudung angfangt haast, dyr-
+ mitst mügliche Vergöntzungen anzaigt kriegst.
+ Druck <TAB> für ain Vervollstöndigung yllain.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ Dös wär ietzet s End von n Wimmschainer. Gangen ist s daa drum, aynn kurtzn
+ und bündignen Überblik über s Blat WIMM z lifern, netty vil gnueg, däß myn
+ für s Eerste wirklich öbbs dyrmit anfangen kan. Dyrmit ist s aber auf kain
+ Weitn non nit taan; dyr Wimm haat schoon non vil meerer auf Lager. Lis als
+ Naehsts aynmaal s Benutzerhandbuech: :help user-manual .
+
+ Zo n Weiterlösn und Weiterlernen wör dös Buech daader zo n Empfelhen:
+ Vim - Vi Improved - von n OUALLINE Steve
+ Verlaag: New Riders
+ Dös ist dös eerste Buech, wo ganz yn n Wimm gwidmt ist, netty dös Grechte für
+ Anfönger. Es haat ayn Wösn Beispiler und aau Bilder drinn.
+ See http://iccf-holland.org/click5.html
+
+ Dös folgete Buech ist schoon ölter und meerer über n Urwimm als wie über n
+ Wimm, aber aau zo n Empfelhen: Textbearbeitung mit dem vi-Editor - von dyr
+ LAMB Linda und n ROBBINS Arnold - Verlaag O'Reilly - Buechlaittzal (ISBN):
+ 3897211262
+ In dönn Buech kan myn fast allss finddn, was myn mit n Urwimm angeen mecht.
+ De söxte Ausgaab enthaltt aau schoon öbbs über n Wimm.
+ Als ietzunde Bezugniss für d Fassung 6.2 und ayn pfrenge Einfüerung dient
+ dös folgete Buech:
+ vim ge-packt von n WOBST Reinhard
+ mitp-Verlaag, Buechlaittzal 3-8266-1425-9
+ Trotz dyr recht pfrengen Darstöllung ist s durch seine viln nützlichnen Bei-
+ spiler aau für Einsteiger grad grecht. Probhaeupster und de Beispilschripfer
+ seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html
+
+ Verfasst habnd dönn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr
+ Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entwürff, wo
+ dyr SMITH Charles von dyr Kolraader Allschuel (Colorado State University)
+ zuer Verfüegung gstöllt haat. Gundpost: bware@mines.colorado.edu.
+ Für n Wimm haat n dyr MOOLENAAR Bram barechtt.
+ De bairische Übersötzung stammt von n HELL Sepp 2009. Sein Gundpostbrächt ist
+ sturmibund@t-online.de
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+
+
diff --git a/vim/vim-7.2/tutor/tutor.eo b/vim/vim-7.2/tutor/tutor.eo
new file mode 100644
index 0000000..2ac0689
--- /dev/null
+++ b/vim/vim-7.2/tutor/tutor.eo
@@ -0,0 +1,989 @@
+==============================================================================
+= B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7.eo.2 =
+==============================================================================
+
+ Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili
+ por æion klarigi en instruilo kiel æi tiu. Æi tiu instruilo estas
+ fasonita por priskribi sufiæajn komandojn, por ke vi kapablu uzi Vim
+ kun sufiæa facileco.
+
+ La tempo bezonata por plenumi la kurson estas 25-30 minutoj, kaj dependas
+ de kiom da tempo estas uzata por eksperimenti.
+
+ ATENTU:
+ La komandoj en la lecionoj þanøos la tekston. Kopiu tiun æi dosieron
+ por ekzerci vin (se vi lanæis "vimtutor", tiam estas jam kopio).
+
+ Gravas memori, ke æi tiu instruilo estas organizata por instrui per
+ la uzo. Tio signifas, ke vi devas plenumi la komandojn por bone lerni
+ ilin. Se vi nur legas la tekston, vi forgesos la komandojn!
+
+ Nun, certigu, ke la majuskla baskulo NE estas en reøimo majuskla,
+ kaj premu la klavon j sufiæe da fojoj por movi la kursoron, kaj por
+ ke la leciono 1.1 plenigu la ekranon.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1.1: MOVI LA KURSORON
+
+
+ ** Por movi la kursoron, premu la h,j,k,l klavojn kiel montrite. **
+ ^
+ k Konsilo: La klavo h estas la plej liva kaj movas liven.
+ < h l > La klavo l estas la plej dekstra kaj movas dekstren.
+ j La klavo j aspektas kiel malsuprena sago.
+ v
+ 1. Movu la kursoron sur la ekrano øis kiam vi sentas vin komforta.
+
+ 2. Premu la klavon (j) øis kiam øi ripetas.
+ Vi nun scias, kiel moviøi al la sekvanta leciono
+
+ 3. Uzante la malsuprenan klavon, moviøu al la leciono 1.2.
+
+RIMARKO: Se vi dubas pri tio, kion vi premis, premu <ESK> por reiri al
+ la normala reøimo. Tiam repremu la deziratan komandon.
+
+RIMARKO: La klavoj de la kursoro devus ankaý funkcii. Sed uzante hjkl,
+ vi kapablos moviøi pli rapide post kiam vi kutimiøos.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1.2: ELIRI EL VIM
+
+
+ !! RIMARKO: Antaý ol plenumi iujn subajn paþojn ajn, legu la tutan lecionon!!
+
+ 1. Premu la klavon <ESK> (por certigi, ke vi estas en normala reøimo).
+
+ 2. Tajpu: :q! <Enenklavo>.
+ Tio eliras el la rekdaktilo, SEN konservi la þanøojn, kiujn vi faris.
+
+ 3. Kiam vi vidas la þelinviton, tajpu la komandon kiun vi uzis por eniri
+ en æi tiu instruilo. Tio estus: vimtutor <Enenklavo>
+
+ 4. Se vi memoris tiujn paþojn kaj sentas vin memfida, plenumu la paþojn
+ 1 øis 3 por eliri kaj reeniri la redaktilon.
+
+RIMARKO: :q! <Enenklavo> eliras sen konservi la þanøojn, kiujn vi faris.
+ Post kelkaj lecionoj, vi lernos kiel konservi la þanøojn al dosiero.
+
+ 5. Movu la kursoron suben øis la leciono 1.3.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1.3: REDAKTO DE TEKSTO - FORVIÞO
+
+
+ ** Premu x por forviþi la signon sub la kursoro. **
+
+ 1. Movu la kursoron al la suba linio markita per --->.
+
+ 2. Por korekti la erarojn, movu la kursoron øis kiam øi estas sur la
+ forviþenda signo.
+
+ 3. Premu la klavon x por forviþi la nedeziratan signon.
+
+ 4. Ripetu paþojn 2 øis 4 øis kiam la frazo estas øusta.
+
+
+---> La boovinno saaltiss ssur laa luuno.
+
+ 5. Post kiam la linio estas øusta, iru al la leciono 1.4
+
+RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1.4: REDAKTO DE TEKSTO - ENMETO
+
+
+ ** Premu i por enmeti tekston. **
+
+ 1. Movu la kursoron al la unua suba linio markita per --->.
+
+ 2. Por igi la unuan linion sama kiel la dua, movu la kursoron sur la unuan
+ signon post kie la teksto estas enmetenda.
+
+ 3. Premu i kaj tajpu la bezonatajn aldonojn.
+
+ 4. Premu <ESK> kiam la eraroj estas korektitaj por reiri al la normala
+ reøimo. Ripetu la paþojn 2 øis 4 por korekti la frazon.
+
+---> Mank en æi linio.
+---> Mankas tekston en æi tiu linio.
+
+ 5. Kiam vi sentas vin komforta pri enmeto de teksto, moviøu al la
+ leciono 1.5.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1.5: REDAKTO DE TEKSTO - POSTALDONO
+
+
+ ** Premu A por postaldoni tekston. **
+
+ 1. Movu la kursoron al la unua suba linio markita per --->.
+ Ne gravas sur kiu signo estas la kursoro.
+
+ 2. Premu majusklan A kaj tajpu la bezonatajn aldonojn.
+
+ 3. Post kiam la teksto estas aldonita, premu <ESK> por reiri al la normala
+ reøimo.
+
+ 4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la
+ paþojn 2 kaj 3 por korekti la frazon.
+
+---> Mankas teksto el ti
+ Mankas teksto el tiu linio.
+---> Mankas ankaý teks
+ Mankas ankaý teksto æi tie.
+
+ 5 Kiam vi sentas vin komforta pri postaldono de teksto, moviøu al la
+ leciono 1.6
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1.6: REDAKTI DOSIERON
+
+ ** Uzu :wq por konservi dosieron kaj eliri. **
+
+ !! RIMARKO: Antaý ol plenumi iun suban paþon ajn, legu la tutan lecionon!!
+
+ 1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q!
+
+ 2. Æe la þelinvito, tajpu æi tiun komandon: vim tutor <Enenklavo>
+ 'vim' estas la komando por lanæi la redaktilon Vim, 'tutor' estas la
+ dosiernomo de la dosiero, kiun vi volas redakti. Uzu dosieron, kiu
+ þanøeblas.
+
+ 3. Enmetu kaj forviþu tekston, kiel vi lernis en la antaýaj lecionoj.
+
+ 4. Konservu la dosieron kun þanøoj kaj eliru el Vim per: :wq <Enenklavo>
+
+ 5. Relanæu la instruilon vimtutor kaj moviøu suben al la sekvanta resumo.
+
+ 6. Post kiam vi legis la suprajn paþojn, kaj komprenis ilin: faru ilin.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1 RESUMO
+
+
+ 1. La kursoro moviøas aý per la sagoklavoj, aý per la klavoj hjkl.
+ h (liven) j (suben) k (supren) l (dekstren)
+
+ 2. Por lanæi Vim el la þelinvito, tajpu: vim DOSIERNOMO <Enenklavo>
+
+ 3. Por eliri el Vim, tajpu: <ESK> :q! <Enenklavo> por rezigni la þanøojn
+
+ 4. Por forviþi la signojn æe la pozicio de la kursoro, tajpu: x
+
+ 5. Por enmeti aý postaldoni tekston, tajpu:
+ i tajpu enmetendan tekston <ESK>
+ enmetas tekston antaý la kursoro
+
+ A tajpu la postaldonendan tekston <ESK>
+ postaldonas post la kursoro
+
+RIMARKO: Premo de <ESK> iras al la normala reøimo, aý rezignas la
+ nedeziratan aý parte plenumita komando.
+
+Nun daýrigu al la leciono 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 2.1: KOMANDOJ DE FORVIÞO
+
+
+ ** Tajpu dw por forviþi vorton. **
+
+ 1. Premu <ESK> por certigi, ke vi estas en normala reøimo.
+
+ 2. Movu la kursoron al la linio markita per --->.
+
+ 3. Movu la kursoron al la komenco de vorto, kiu forviþendas.
+
+ 4. Tajpu dw por forviþi la vorton.
+
+ RIMARKO: La litero d aperos en la lasta linio sur la ekrano kiam vi
+ tajpas øin. Vim atendas øis kiam vi tajpas w . Se vi vidas
+ alian signon ol d vi tajpis ion mise; premu <ESK> kaj
+ rekomencu.
+
+---> Estas iuj vortoj kiuj Zamenhof ne devus esti akuzativo en æi tiu frazo.
+
+ 5. Ripetu paþojn 3 kaj 4 øis kiam la frazo estas øusta kaj moviøu al la
+ leciono 2.2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 2.2: PLIAJ KOMANDOJ DE FORVIÞO
+
+
+ ** Tajpu d$ por forviþi la finon de la linio. **
+
+ 1. Premu <ESK> por certigi, ke vi estas en normala reøimo.
+
+ 2. Movu la kursoron sur la suban linion markita per --->.
+
+ 3. Movu la kursoron æe la fino de la øusta linio (POST la unua . ).
+
+ 4. Tajpu d$ por forivþi øis la fino de la linio.
+
+---> Iu tajpis la finon de æi tiu linio dufoje. fino de æi tiu linio dufoje.
+
+
+ 5. Moviøu al la leciono 2.3 por kompreni kio okazas.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 2.3: PRI OPERATOROJ KAJ MOVOJ
+
+
+ Multaj komandoj, kiuj þanøas la tekston, estas faritaj de operatoro kaj
+ movo. La formato de komando de forviþo per la operatoro de forviþo d
+ estas kiel sekvas:
+
+ d movo
+
+ Kie:
+ d - estas la operatoro de movo
+ movo - estas tio, pri kio la operatoro operacios (listigita sube)
+
+ Mallonga listo de movoj:
+ w - øis la komenco de la sekvanta vorto, krom øia unua signo.
+ e - øis la fino de la nuna vorto, krom la lasta signo.
+ $ - øis la fino de la linio, krom la lasta signo.
+
+ Do tajpo de 'de' forviþos ekde la kursoro øis la fino de la vorto.
+
+RIMARKO: Premo de nur la movo en Normala reøimo sen operatoro movos
+ la kursoron kiel specifite.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 2.4: UZI NOMBRON POR MOVO
+
+ ** Tajpo de nombro antaý movo ripetas øin laýfoje. **
+
+ 1. Movu la kursoron æe la komenco de la suba linio markita per --->.
+
+ 2. Tajpu 2w por movi la kursoron je du vortoj antaýen.
+
+ 3. Tajpu 3e por movi la kursoron æe la fino de la tria vorto antaýen.
+
+ 4. Tajpu 0 (nul) por moviøi æe la komenco de la linio.
+
+
+ 5. Ripetu paþojn 2 øis 3 kun malsamaj nombroj.
+
+---> Tio estas nur linio kun vortoj, kie vi povas moviøi.
+
+ 6. Moviøu al la leciono 2.5.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 2.5: UZI NOMBRON POR FORVIÞI PLI
+
+
+ ** Tajpo de nombro kun operatoro ripetas øin laýfoje. **
+
+ En la kombina¼o de la operatoro de forviþo, kaj movo kiel menciita
+ æi-supre, eblas aldoni nombron antaý la movo por pli forviþi:
+ d nombro movo
+
+ 1. Movu la kursoron æe la unua MAJUSKLA vorto en la linio markita per --->.
+
+ 2. Tajpu d2w por forviþi la du MAJUSKLAJN vortojn
+
+ 3. Ripetu paþojn 1 øis 2 per malsama nombro por forviþi la sinsekvajn
+ MAJUSKLAJN vortojn per unu komando
+
+---> Tiu AB CDE linio FGHI JK LMN OP de vortoj estas Q RS TUV purigita.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 2.6: OPERACII SUR LINIOJ
+
+
+ ** Tajpu dd por forviþi tutan linion. **
+
+ Pro la ofteco de forviþo de tuta linio, la verkisto de Vi decidis, ke
+ estus pli facile simple tajpi du d-ojn por forviþi linion.
+
+ 1. Movu la kursoron sur la duan linion en la suba frazo.
+ 2. Tajpu dd por forviþi la linion.
+ 3. Nun moviøu al la kvara linio.
+ 4. Tajpu 2dd por forviþi du liniojn.
+
+---> 1) Rozoj estas ruøaj,
+---> 2) Þlimo estas amuza,
+---> 3) Violoj estas bluaj,
+---> 4) Mi havas aýton,
+---> 5) Horloøoj diras kioma horo estas,
+---> 6) Sukero estas dolæa,
+---> 7) Kaj tiel vi estas.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 2.7: LA KOMANDO DE MALFARO
+
+
+ ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. **
+
+ 1. Movu la kursoron æe la suba linio markita per ---> kaj metu øin sur
+ la unuan eraron.
+ 2. Tajpu x por forviþi la unuan nedeziratan signon.
+ 3. Nun tajpu u por malfari la lastan plenumitan komandon.
+ 4. Æi-foje, riparu æiujn erarojn en la linio kaj øia originala stato.
+ 5. Nun tajpu majusklan U por igi la linion al øia antaýa stato.
+ 6. Nun tajpu u kelkfoje por malfari la U kaj antaýajn komandojn.
+ 7. Nun tajpu CTRL-R (premante la CTRL klavon dum vi premas R) kelkfoje
+ por refari la komandojn (malfari la malfarojn).
+
+---> Koorektii la erarojn sur tiuu æi liniio kaj remettu illlin per malfaro.
+
+ 8. Tiuj estas tre utilaj komandoj. Nun moviøu al la leciono 2 RESUMO.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 2 RESUMO
+
+
+ 1. Por forviþi ekde la kursoro øis la sekvanta vorto, tajpu: dw
+ 2. Por forviþi ekde la kursoro øis la fino de la linio, tajpu: d$
+ 3. Por forviþi tutan linion, tajpu: dd
+
+ 4. Por ripeti movon, antaýmetu nombron: 2w
+ 5. La formato de þanøa komando estas:
+ operatoro [nombro] movo
+
+ kie:
+ operatoro - estas tio, kio farendas, kiel d por forviþi
+ [nombro] - estas opcia nombro por ripeti la movon
+ movo - movas sur la teksto por operacii, kiel ekzemple w (vorto),
+ $ (øis fino de linio), ktp.
+
+ 6. Por moviøi al la komenco de la linio, uzu nul: 0
+
+ 7. Por malfari antaýajn agojn, tajpu: u (minuskla u)
+ Por malfari æiujn þanøojn sur la linio, tajpu: U (majuskla U)
+ Por refari la malfarojn, tajpu: CTRL-R
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 3.1 LA KOMANDO DE METO
+
+
+ ** Tajpu p por meti tekston forviþitan antaýe post la kursoro. **
+
+ 1. Movu la kursoron æe la unua ---> suba linio.
+
+ 2. Tajpu dd por forviþi la linion kaj konservi øin ene de reøistro de Vim.
+
+ 3. Movu la kursoron æe la linio c), SUPER kie la forviþita linio devus esti.
+
+ 4. Tajpu p por meti la linion sub la kursoron.
+
+ 5. Ripetu la paþojn 2 øis 4 por meti æiujn liniojn en la øusta ordo.
+
+---> d) Æu ankaý vi povas lerni?
+---> b) Violoj estas bluaj,
+---> c) Inteligenteco lerneblas,
+---> a) Rozoj estas ruøaj,
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 3.2 LA KOMANDO DE ANSTATAÝIGO
+
+
+ ** Tajpu rx por anstataýigi la signon æe la kursoro per x . **
+
+
+ 1. Movu la kursoron æe la unua suba linio markita per --->.
+
+ 2. Movu la kursoron øis la unua eraro.
+
+ 3. Tajpu r kaj la signon, kiu devus esti tie.
+
+ 4. Ripetu paþojn 2 kaj 3 øis kiam la unua linio egalas la duan.
+
+---> Kiem tiu lanio estis tajpita, iu pramis la naøuftajn klovojn!
+---> Kiam tiu linio estis tajpita, iu premis la neøustajn klavojn!
+
+ 5. Nun moviøu al la leciono 3.3.
+
+Rimarko: Memoru, ke vi devus lerni per uzo, kaj ne per memorado.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 3.3 LA OPERATORO DE ÞANØO
+
+
+ ** Por þanøi øis la fino de la vorto, tajpu ce . **
+
+ 1. Movu la kursoron æe la unua suba linio markita per --->.
+
+ 2. Metu la kursoron sur la d en lduzw
+
+ 3. Tajpu ce kaj la øustan vorton (en tiu æi kazo, tajpu inio ).
+
+ 4. Premu <ESK> kaj moviøu al la sekvanta signo, kiu bezonas þanøon.
+
+ 5. Ripetu la paþojn 3 kaj 4 øis kiam la unua frazo egalas la duan.
+
+---> Tiu lduzw havas kelkajn vortojn, kiii bezas þanøon per la þanøooto.
+---> Tiu linio havas kelkajn vortojn, kiuj bezonas þanøon per la þanøoperatoro.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 3.4 PLIAJ ÞANØOJ PER c
+
+
+ ** La operatoro de þanøo uzeblas kun la sama movo kiel forviþo. **
+
+ 1. La operatoro de þanøo funkcias sammaniere kiel forviþo. La formato estas:
+
+ c [nombro] movo
+
+ 2. La movoj estas samaj, kiel ekzemple w (vorto) kaj $ (fino de linio).
+
+ 3. Moviøu æe la unua suba linio markita per --->.
+
+ 4. Movu la kursoron al la unua eraro.
+
+ 5. Tajpu c$ kaj tajpu la reston de la linio kiel la dua kaj premu <ESK>.
+
+---> La fino de æi tiu linio bezonas helpon por igi øin same kiel la dua.
+---> La fino de æi tiu linio bezonas korektojn per uzo de la komando c$
+
+RIMARKO: Vi povas uzi la klavon Retropaþo por korekti erarojn dum vi tajpas.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 3 RESUMO
+
+
+ 1. Por remeti tekston, kiun vi ¼us forviþis, tajpu p. Tio metas la
+ forviþitan tekston POST la kursoro (se linio estis forviþita, øi
+ iros en la linion sub la kursoro).
+
+ 2. Por anstataýigi la signon sub la kursoro, tajpu r kaj tiam la signon
+ kion vi deziras havi tie.
+
+ 3. La operatoro de þanøo ebligas al vi þanøi ekde la kursoro, øis kie
+ la movo iras. Ekz. tajpu ce por þanøi ekde la kursoro øis la fino
+ de la vorto, c$ por þanøi øis la fino de la linio.
+
+ 4. La formato de þanøo estas:
+
+ c [nombro] movo
+
+Nun daýrigu al la sekvanta leciono.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO
+
+
+ ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton.
+ Tajpu G por moviøi al linio en la dosiero. **
+
+ RIMARKO: Legu la tutan lecionon antaý ol plenumi iun paþon ajn!!
+
+ 1. Premu la klavon Ctrl kaj premu g . Oni nomas tion CTRL-G.
+ Mesaøo aperos æe la suba parto de la paøo kun la dosiernomo kaj la
+ pozicio en la dosiero. Memoru la numeron de la linio por paþo 3.
+
+ RIMARKO: Vi eble vidas la pozicion de la kursoro æe la suba dekstra
+ angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas
+ þaltita (vidu :help 'ruler')
+
+ 2. Premu G por moviøi æe la subo de la dosiero.
+ Tajpu gg por moviøi æe la komenco de la dosiero.
+
+ 3. Tajpu la numeron de la linio kie vi estis kaj poste G . Tio removos
+ vin al la linio, kie vi estis kiam vi unue premis CTRL-G.
+
+ 4. Se vi sentas vin komforta, plenumu paþojn 1 øis 3.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 4.2 LA KOMANDO DE SERÆO
+
+
+ ** Tajpu / kaj poste frazon por seræi la frazon. **
+
+ 1. En normala reøimo, tajpu la / signon. Rimarku, ke øi kaj la kursoro
+ aperas æe la suba parto de la ekrano kiel por la : komando.
+
+ 2. Nun tajpu 'errarro' <Enenklavo>.
+ Tio estas la vorto, kion vi volas seræi.
+
+ 3. Por seræi la saman frazon denove, simple tajpu n .
+ Por seræi la saman frazon denove en la retrodirekto, tajpu N .
+
+ 4. Por seræi frazon en la retrodirekto, uzu ? anstataý / .
+
+ 5. Por reiri tien, el kie vi venis, premu CTRL-O (Premu Ctrl kaj o
+ literon o). Ripetu por pli retroiri. CTRL-I iras antaýen.
+
+---> "errarro" ne estas maniero por literumi eraro; errarro estas eraro.
+
+RIMARKO: Kiam la seræo atingas la finon de la dosiero, øi daýras æe la
+ komenco, krom se la agordo 'wrapscan' estas malþaltita.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 4.3 SERÆO DE KONGRUAJ KRAMPOJ
+
+
+ ** Tajpu % por trovi kongruan ), ] aý } **
+
+ 1. Poziciu la kursoron sur iun (, [ aý { en la linio markita per --->.
+
+ 2. Nun tajpu la % signon.
+
+ 3. La kursoro moviøas al la kongrua krampo.
+
+ 4. Tajpu % por movi la kursoron al la alia kongrua krampo.
+
+ 5. Movu la kursoron al la alia (, ), [, ], {, } kaj observu tion,
+ kion % faras.
+
+---> Æi tiu ( estas testa linio kun (-oj, [-oj, ]-oj kaj {-oj, }-oj en øi. ))
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 4.4 LA KOMANDO DE ANSTATAýIGO
+
+
+ ** Tajpu :s/malnova/nova/g por anstataýigi 'nova' per 'malnova'. **
+
+ 1. Movu la kursoron al la suba linio markita per --->.
+
+ 2. Tajpu :s/laa/la <Enenklavo> . Rimarku, ke la komando þanøas nur la
+ unuan okaza¼on de "laa" en la linio.
+
+ 3. Nun tajpu :s/laa/la/g . Aldono de g opcio signifas mallokan
+ anstataýigon en la linio. Øi þanøas æiujn okaza¼ojn de "laa" en la
+ linio.
+
+---> laa plej bona tempo por vidi florojn estas en laa printempo.
+
+ 4. Por þanøi æiujn okaza¼ojn de iu æena signo inter du linioj,
+ tajpu :#,#s/malnova/nova/g kie #,# estas la numeroj de linioj de la
+ intervalo de la linioj kie la anstataýigo
+ okazos.
+ Tajpu :%s/malnova/nova/g por þanøi æiujn okaza¼ojn en la tuta
+ dosiero.
+ Tajpu :s/malnova/nova/gc por trovi æiujn okaza¼ojn en la tuta
+ dosiero, kun invitilo æu anstataýigi
+ aý ne.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 4 RESUMO
+
+ 1. CTRL-G vidigas vian pozicion en la dosiero kaj la staton de la dosiero.
+ G movas la kursoron al la fino de la dosiero.
+ numero G movas la kursoron al numero de tiu linio.
+ gg movas la kursoron al la unua linio.
+
+ 2. Tajpo de / kaj frazon seræas la frazon antaýen.
+ Tajpo de ? kaj frazon seræas la frazon malantaýen.
+ Post seræo, tajpu n por trovi la sekvantan okaza¼on en la sama direkto aý
+ N por seræi en la mala direkto.
+ CTRL-O movas vin al la antaýaj pozicioj, CTRL-I al la novaj pozicioj.
+
+ 3. Tajpo de % kiam la kursoro estas sur (,),[,],{ aý } moviøas al øia
+ kongruo.
+
+ 4. Por anstataýigi 'nova' en la unua 'malnova' en linio :s/malnova/nova
+ Por anstataýigi 'nova' en æiuj 'malnova'-oj en linio :s/malnova/nova/g
+ Por anstataýigi frazon inter du #-aj linioj :#,#s/malnova/nova/g
+ Por anstataýigi æiujn okaza¼ojn en la dosiero :%s/malnova/nova/g
+ Por demandi konfirmon æiu-foje, aldonu 'c' :%s/malnova/nova/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON
+
+
+ ** Tajpu :! sekvata de ekstera komando por plenumi la komandon. **
+
+ 1. Tajpu la konatan komandon : por pozicii la kursoron æe la suba parto
+ de la ekrano. Tio ebligas tajpadon de komando en komanda linio.
+
+ 2. Nun tajpu la ! (krisigno) signon. Tio ebligas al vi plenumi iun
+ eksteran þelan komandon ajn.
+
+ 3. Ekzemple, tajpu ls post ! kaj tajpu <Enenklavo>. Tio listigos la
+ enhavon de la dosierujo, same kiel se vi estis en þela invito.
+ Aý uzu :!dir se ls ne funkcias.
+
+RIMARKO: Eblas plenumi iun eksteran komandon ajn tiamaniere, ankaý kun
+ argumentoj.
+
+RIMARKO: Æiuj : komandoj devas finiøi per tajpo de <Enenklavo>
+ Ekde nun, ni ne plu mencios tion.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 5.2 PLI PRI KONSERVO DE DOSIERO
+
+
+ ** Por konservi la faritajn þanøojn en la teksto, tajpu :w DOSIERNOMO. **
+
+ 1. Tajpu !dir aý !ls por akiri liston de via dosierujo.
+ Vi jam scias, ke vi devas tajpi <Enenklavo> post tio.
+
+ 2. Elektu dosieron, kiu ne jam ekzistas, kiel ekzemple TESTO.
+
+ 3. Nun tajpu: :w TESTO (kie TESTO estas la elektita dosiernomo)
+
+ 4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO.
+ Por kontroli tion, tajpu :!dir aý !ls denove por vidigi vian
+ dosierujon.
+
+RIMARKO: Se vi volus eliri el Vim kaj restartigi øin denove per vim TESTO,
+ la dosiero estus precize same kiel kopio de la instruilo kiam vi
+ konservis øin.
+
+ 5. Nun forviþu la dosieron tajpante (MS-DOS): :!del TESTO
+ aý (UNIKSO): :!rm TESTO
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 5.3 APARTIGI KONSERVENDAN TESTON
+
+
+ ** Por konservi parton de la dosiero, tajpu v movo :w DOSIERNOMO **
+
+ 1. Movu la kursoron al tiu linio.
+
+ 2. Premu v kaj movu la kursoron al la kvina suba ero. Rimarku, ke la
+ teksto emfaziøas.
+
+ 3. Premu la : signon. Æe la fino de la ekrano :'<,'> aperos.
+
+ 4. Tajpu w TESTO , kie TESTO estas dosiernomo, kiu ne jam ekzistas.
+ Kontrolu, ke vi vidas :'<,'>w TESTO antaý premi <Enenklavo>.
+
+ 5. Vim konservos la apartigitajn liniojn al la dosiero TESTO. Uzu :dir
+ aý :!ls por vidigi øin. Ne forviþu øin. Ni uzos øin en la sekvanta
+ leciono.
+
+RIMARKO: Premo de v komencas Viduman apartigon. Vi povas movi la kursoron
+ por pligrandigi aý malpligrandigi la apartigon. Tiam vi povas uzi
+ operatoron por plenumi ion kun la teksto. Ekzemple, d forviþas
+ la tekston.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 5.4 AKIRI KAJ KUNFANDI DOSIEROJN
+
+
+ ** Por enmeti la enhavon de dosiero, tajpu :r DOSIERNOMON **
+
+ 1. Movu la kursoron ¼us super æi tiu linio.
+
+RIMARKO: Post plenumo de paþo 2, vi vidos tekston el la leciono 5.3. Tiam
+ moviøu SUBEN por vidi tiun lecionon denove.
+
+ 2. Nun akiru vian dosieron TESTO uzante la komandon :r TESTO kie TESTO
+ estas la nomo de la dosiero, kiun vi uzis.
+ La dosiero, kion vi akiras, estas metita sub la linio de la kursoro.
+
+ 3. Por kontroli, æu la dosiero akiriøis, retromovu la kursoron kaj rimarku,
+ ke estas nun du kopioj de la leciono 5.3, la originala kaj la versio mem
+ de la dosiero.
+
+RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple,
+ :r !ls legas la eliron de la komando ls kaj metas øin sub la
+ kursoron.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 5 RESUMO
+
+
+ 1. :!komando plenumas eksteran komandon.
+
+ Iuj utilaj ekzemploj estas:
+ (MS-DOS) (UNIKSO)
+ :!dir :!ls - listigas dosierujon
+ :!del DOSIERNOMO :!rm DOSIERNOMO - forviþas la dosieron DOSIERNOMO
+
+ 2. :w DOSIERNOMO konservas la nunan dosieron de Vim al disko kun la
+ nomo DOSIERNOMO.
+
+ 3. v movo :w DOSIERNOMO konservas la Viduman apartigon de linioj en
+ dosiero DOSIERNOMO.
+
+ 4. :r DOSIERNOMO akiras la dosieron DOSIERNOMO el la disko kaj metas
+ øin sub la pozicion de la kursoro.
+
+ 5. :r !dir legas la eligon de la komando dir kaj metas øin sub la
+ pozicion de la kursoro.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 6.1 LA KOMANDO DE MALFERMO
+
+
+ ** Tajpu o por malfermi linion sub la kursoro kaj eniri Enmetan reøimon. **
+
+ 1. Movu la kursoron al la suba linio markita per --->.
+
+ 2. Tajpu la minusklan literon o por malfermi linion SUB la kursoro kaj
+ eniri la Enmetan reøimon.
+
+ 3. Nun tajpu tekston kaj premu <ESK> por eliri la Enmetan reøimon.
+
+---> Post tajpo de o la kursoro moviøas al la malfermata linio en
+ Enmeta reøimo.
+
+ 4. Por malfermi linion SUPER la kursoro, nur tajpu majusklan O ,
+ anstataý minusklan o. Provu tion per la suba linio.
+
+---> Malfermu linion SUPER tiu tajpante O dum la kursoro estas sur tiu linio.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 6.2 LA KOMANDO DE POSTALDONO
+
+
+ ** Tajpu a por enmeti POST la kursoro. **
+
+ 1. Movu la kursoron æe la komenco de la linio markita per --->.
+
+ 2. Premu e øis kiam la kursoro estas æe la fino de li.
+
+ 3. Tajpu a (minuskle) por aldoni tekston POST la kursoro.
+
+ 4. Kompletigu la vorton same kiel la linio sub øi. Premu <ESK> por
+ eliri la Enmetan reøimon.
+
+ 5. Uzu e por moviøi al la sekvanta nekompleta vorto kaj ripetu
+ paþojn 3 kaj 4.
+
+---> Æi tiu lin ebligos vin ekz vin postal tekston al linio.
+---> Æi tiu linio ebligos vin ekzerci vin postaldoni tekston al linio.
+
+RIMARKO: Æiu a, i kaj A iras al la sama Enmeta reøimo, la nura malsamo
+ estas tie, kie la signoj estas enmetitaj.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 6.3 ALIA MANIERO POR ANSTATAÝIGI
+
+
+ ** Tajpu majusklan R por anstataýigi pli ol unu signo. **
+
+ 1. Movu la kursoron al la unua suba linio markita per --->. Movu la
+ kursoron al la komenco de la unua xxx .
+
+ 2. Nun premu R kaj tajpu la nombron sub øi en la dua linio, por ke øi
+ anstataýigu la xxx .
+
+ 3. Premu <ESK> por foriri la Anstataýigan reøimon. Rimarku, ke la cetera
+ parto de la linio restas neþanøata.
+
+ 4. Ripetu la paþojn por anstataýigi la restantajn xxx.
+
+---> Aldono de 123 al xxx donas al vi xxx.
+---> Aldono de 123 al 456 donas al vi 579.
+
+RIMARKO: Anstataýiga reøimo estas same kiel Enmeta reøimo, sed æiu signo
+ tajpita forviþas ekzistan signon.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 6.4 KOPII KAJ ALGLUI TEKSTON
+
+
+ ** Uzu la y operatoron por kopii tekston, kaj p por alglui øin **
+
+
+ 1. Iru al la linio markita per ---> sube kaj poziciu la kursoron post "a)".
+
+ 2. Komencu la Viduman reøimon per v kaj movu la kursoron ¼us antaý "unua".
+
+ 3. Tajpu y por kopii la emfazitan tekston.
+
+ 4. Movu la kursoron æe la fino de la linio: j$
+
+ 5. Tajpu p por alglui la tekston. Tiam tajpu: a dua <ESK> .
+
+ 6. Uzu Viduman reøimon por apartigi " ero.", kopiu øin per y , moviøu
+ æe la fino de la sekvanta linio per j$ kaj algluu la tekston tie
+ per p .
+
+---> a) tio estas la unua ero.
+ b)
+
+RIMARKO: vi povas ankaý uzi y kiel operatoro; yw kopias unu vorton.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 6.5 AGORDI OPCION
+
+
+ ** Agordu opcion por ke seræo aý anstataýigo ignoru usklecon **
+
+ 1. Seræu 'ignori' per tajpo de /ignori <Enenklavo>
+ Ripetu plurfoje premante n .
+
+ 2. Þaltu la opcion 'ic' (ignori usklecon) per: :set ic
+
+ 3. Nun seræu 'ignori' denove premante n
+ Rimarku, ke Ignori kaj IGNORI estas nun troveblas.
+
+ 4. Þaltu la opciojn 'hlsearch' kaj 'incsearch': :set hls is
+
+ 5. Nun retajpu la seræan komandon kaj vidu kio okazas: /ignore <Enenklavo>
+
+ 6. Por malþalti ignoron de uskleco: :set noic
+
+RIMARKO: Por forigi emfazon de kongruo, tajpu: :nohlsearch
+RIMARKO: Se vi deziras ignori usklecon por nur unu seræa komando, uzu \c
+ en la frazo: /ignore\c <Enenklavo>
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 6 RESUMO
+
+ 1. Tajpu o por malfermi linion SUB la kursoro kaj eki en Enmeta reøimo.
+ 1. Tajpu O por malfermi linion SUPER la kursoro.
+
+ 2. Tajpu a por enmeti tekston POST la kursoro.
+ Tajpu A por enmeti tekston post la fino de la linio.
+
+ 3. La e komando movas la kursoron al la fino de vorto.
+
+ 4. la y operatoro kopias tekston, p algluas øin.
+
+ 5. Tajpo de majuskla R eniras la Anstataýigan reøimon øis kiam
+ <ESK> estas premita.
+
+ 6. Tajpo de ":set xxx" þaltas la opcion "xxx". Iuj opcioj estas:
+ 'ic' 'ignorecase' ignori usklecon dum seræo
+ 'is' 'incsearch' montru partan kongruon dum seræo
+ 'hls' 'hlsearch' emfazas æiujn kongruajn frazojn
+ Vi povas uzi aý la longan, aý la mallongan nomon de opcio.
+
+ 7. Antaýaldonu "no" por malþalti la opcion: :set noic
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 7.1 AKIRI HELPON
+
+
+ ** Uzu la helpan sistemon **
+
+ Vim havas ampleksan helpan sistemon. Por komenciøi, provu unu el la tiuj
+ tri:
+ - premu la klavon <HELPO> (se vi havas øin)
+ - premu la klavon <F1> (se vi havas øin)
+ - tajpu :help <Enenklavo>
+
+ Legu la tekston en la helpfenestro por trovi kiel helpo funkcias.
+ Tajpu CTRL-W CTRL-W por salti de unu fenestro al la alia.
+ Tajpu :q <Enenklavo> por fermi la helpan fenestron.
+
+ Vi povas trovi helpon pri io ajn aldonante argumenton al la komando
+ ":help". Provu tiujn (ne forgesu premi <Enenklavo>):
+
+ :help w
+ :help c_CTRL-D
+ :help insert-index
+ :help user-manual
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 7.2 KREI STARTAN SKRIPTON
+
+
+ ** Ebligu kapablojn de Vim **
+
+ Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defaýlte
+ malþaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc.
+
+ 1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo:
+ :e ~/.vimrc por Unikso
+ :e $VIM/_vimrc por MS-Vindozo
+
+ 2. Nun legu la enhavon de la ekzempla "vimrc"
+ :r $VIMRUNTIME/vimrc_example.vim
+
+ 3. Konservu la dosieron per:
+ :w
+
+ La sekvantan fojon, kiam vi lanæas Vim, øi uzos sintaksan emfazon.
+ Vi povas aldoni æiujn viajn preferatajn agordojn al tiu dosiero "vimrc".
+ Por pli da informoj, tajpu :help vimrc-intro
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 7.3 KOMPLETIGO
+
+
+ ** Kompletigo de komanda linio per CTRL-D kaj <TAB> **
+
+ 1. Certigu ke Vim estas en kongrua reøimo: :set nocp
+
+ 2. Rigardu tiujn dosierojn, kiuj ekzistas en la dosierujo: :!ls aý :!dir
+
+ 3. Tajpu la komencon de komando: :e
+
+ 4. Premu CTRL-D kaj Vim montros liston de komandoj, kiuj komencas per "e".
+
+ 5. Premu <TAB> kaj Vim kompletigos la nomon de la komando al ":edit".
+
+ 6. Nun aldonu spaceton kaj la komencon de ekzistanta nomo: :edit DOSI
+
+ 7. Premu <TAB>. Vim kompletigos la nomon (se øi estas unika)
+
+RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj
+ <TAB>. Estas aparte utila por :help .
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 7 RESUMO
+
+
+ 1. Tajpu :help aý premu <F1> aý <Helpo> por malfermi helpan fenestron.
+
+ 2. Tajpu :help kmd por trovi helpon pri kmd.
+
+ 3. Tajpu CTRL-W CTRL-W por salti al alia fenestro.
+
+ 4. Tajpu :q to fermi la helpan fenestron.
+
+ 5. Kreu komencan skripton vimrc por konservi viajn agordojn.
+
+ 6. Kiam vi tajpas : komandon, premu CTRL-D por vidi æiujn kompleteblojn.
+ Premu <TAB> por uzi unu kompletigon.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ Tio konkludas la instruilon de Vim. Øi celis doni mallongan superrigardon
+ de la redaktilo Vim, nur tio kio sufiæas por ebligi al vi facilan uzon de
+ la redaktilo. Estas nepre nekompleta, æar Vim havas multajn multajn pliajn
+ komandojn. Legu la manlibron: ":help user-manual".
+
+ Tiu instruilo estis verkita de Michael C. Pierce kaj Robert K. Ware,
+ el la Koloradia Lernejo de Minejoj (Colorado School of Mines) uzante
+ ideojn provizitajn de Charles Smith el la Stata Universitato de Koloradio
+ (Colorado State University)
+
+ Retpoþto: bware@mines.colorado.edu.
+
+ Modifita por Vim de Bram Moolenaar.
+
+ Tradukita en Esperanto de Dominique Pellé, 2008-04-01
+ Retpoþto: dominique.pelle@gmail.com
+ Lasta þanøo: 2009-02-01
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/vim/vim-7.2/tutor/tutor.nb b/vim/vim-7.2/tutor/tutor.nb
new file mode 100644
index 0000000..17178df
--- /dev/null
+++ b/vim/vim-7.2/tutor/tutor.nb
@@ -0,0 +1,973 @@
+===============================================================================
+= V e l k o m m e n t i l i n n f ø r i n g e n i V i m -- Ver. 1.7 =
+===============================================================================
+
+ Vim er en meget kraftig editor med mange kommandoer, alt for mange til å
+ kunne gå gjennom alle i en innføring som denne. Den er beregnet på å
+ sette deg inn i bruken av nok kommandoer så du vil være i stand til lett
+ å kunne bruke Vim som en editor til alle formål.
+
+ Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30
+ minutter, avhengig av hvor mye tid du bruker til eksperimentering.
+
+ MERK:
+ Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne
+ filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er
+ dette allerede en kopi).
+
+ Det er viktig å huske at denne innføringen er beregnet på læring gjennom
+ bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig.
+ Hvis du bare leser teksten, vil du glemme kommandoene!
+
+ Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for
+ å flytte markøren helt til leksjon 1.1 fyller skjermen.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 1.1: FLYTTING AV MARKØREN
+
+
+ ** For å flytte markøren, trykk tastene h, j, k, l som vist. **
+ ^
+ k Tips: h-tasten er til venstre og flytter til venstre.
+ < h l > l-tasten er til høyre og flytter til høyre.
+ j j-tasten ser ut som en pil som peker nedover.
+ v
+ 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene.
+
+ 2. Hold inne nedovertasten (j) til den repeterer.
+ Nå vet du hvordan du beveger deg til neste leksjon.
+
+ 3. Gå til leksjon 1.2 ved hjelp av nedovertasten.
+
+Merk: Hvis du blir usikker på noe du har skrevet, trykk <ESC> for å gå til
+ normalmodus. Skriv deretter kommandoen du ønsket på nytt.
+
+Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til
+ å bevege markøren mye raskere når du er blitt vant til det. Helt sant!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 1.2: AVSLUTTE VIM
+
+
+ !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!!
+
+ 1. Trykk <ESC>-tasten (for å forsikre deg om at du er i normalmodus).
+
+ 2. Skriv: :q! <ENTER>.
+ Dette avslutter editoren og FORKASTER alle forandringer som du har gjort.
+
+ 3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne
+ innføringen. Den er: vimtutor <ENTER>
+
+ 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å
+ avslutte og starte editoren på nytt.
+
+MERK: :q! <ENTER> forkaster alle forandringer som du gjorde. I løpet av noen
+ få leksjoner vil du lære hvordan du lagrer forandringene til en fil.
+
+ 5. Flytt markøren ned til leksjon 1.3.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 1.3: REDIGERING AV TEKST -- SLETTING
+
+
+ ** Trykk x for å slette tegnet under markøren. **
+
+ 1. Flytt markøren til den første linjen merket med --->.
+
+ 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som
+ skal slettes.
+
+ 3. Trykk tasten x for å slette det uønskede tegnet.
+
+ 4. Repeter punkt 2 til 4 til setningen er lik den som er under.
+
+---> Hessstennnn brrråsnudddde ii gaaata.
+---> Hesten bråsnudde i gata.
+
+ 5. Nå som linjen er korrekt, gå til leksjon 1.4.
+
+MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men
+ bruk dem helt til de sitter.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING
+
+
+ ** Trykk i for å sette inn tekst. **
+
+ 1. Flytt markøren til den første linjen som er merket med --->.
+
+ 2. For å gjøre den første linjen lik den andre, flytt markøren til den står
+ på tegnet ETTER posisjonen der teksten skal settes inn.
+
+ 3. Trykk i og skriv inn teksten som mangler.
+
+ 4. Etterhvert som hver feil er fikset, trykk <ESC> for å returnere til
+ normalmodus. Repeter punkt 2 til 4 til setningen er korrekt.
+
+---> Det er tkst som mnglr .
+---> Det er ganske mye tekst som mangler her.
+
+ 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen
+ nedenfor.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL
+
+
+ ** Trykk A for å legge til tekst. **
+
+ 1. Flytt markøren til den første linjen nedenfor merket --->.
+ Det har ikke noe å si hvor markøren er plassert på den linjen.
+
+ 2. Trykk A og skriv inn det som skal legges til.
+
+ 3. Når teksten er lagt til, trykk <ESC> for å returnere til normalmodusen.
+
+ 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og
+ 3 for å reparere denne setningen.
+
+---> Det mangler noe tekst p
+ Det mangler noe tekst på denne linjen.
+---> Det mangler også litt tek
+ Det mangler også litt tekst på denne linjen.
+
+ 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 1.6: REDIGERE EN FIL
+
+
+ ** Bruk :wq for å lagre en fil og avslutte. **
+
+ !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!!
+
+ 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q!
+
+ 2. Skriv denne kommandoen på kommandolinja: vim tutor <ENTER>
+ «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila
+ som du vil redigere. Bruk en fil som kan forandres.
+
+ 3. Sett inn og slett tekst som du lærte i de foregående leksjonene.
+
+ 4. Lagre filen med forandringene og avslutt Vim med: :wq <ENTER>
+
+ 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger.
+
+ 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 1
+
+
+ 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene.
+ h (venstre) j (ned) k (opp) l (høyre)
+
+ 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN <ENTER>
+
+ 3. For å avslutte Vim, skriv: <ESC> :q! <ENTER> for å forkaste endringer.
+ ELLER skriv: <ESC> :wq <ENTER> for å lagre forandringene.
+
+ 4. For å slette tegnet under markøren, trykk: x
+
+ 5. For å sette inn eller legge til tekst, trykk:
+ i skriv innsatt tekst <ESC> sett inn før markøren
+ A skriv tillagt tekst <ESC> legg til på slutten av linjen
+
+MERK: Når du trykker <ESC> går du til normalmodus eller du avbryter en uønsket
+ og delvis fullført kommando.
+
+ Nå kan du gå videre til leksjon 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 2.1: SLETTEKOMMANDOER
+
+
+ ** Trykk dw for å slette et ord. **
+
+ 1. Trykk <ESC> for å være sikker på at du er i normalmodus.
+
+ 2. Flytt markøren til den første linjen nedenfor merket --->.
+
+ 3. Flytt markøren til begynnelsen av ordet som skal slettes.
+
+ 4. Trykk dw og ordet vil forsvinne.
+
+MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når
+ du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet
+ tegn enn d har du skrevet noe feil; trykk <ESC> og start på nytt.
+
+---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen.
+---> Det er tre ord som ikke hører hjemme i denne setningen.
+
+ 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå
+ deretter til leksjon 2.2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 2.2: FLERE SLETTEKOMMANDOER
+
+
+ ** Trykk d$ for å slette til slutten av linjen. **
+
+ 1. Trykk <ESC> for å være sikker på at du er i normalmodus.
+
+ 2. Flytt markøren til linjen nedenfor merket --->.
+
+ 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum).
+
+ 4. Trykk d$ for å slette alt til slutten av linjen.
+
+---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye.
+
+ 5. Gå til leksjon 2.3 for å forstå hva som skjer.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 2.3: OM OPERATORER OG BEVEGELSER
+
+
+ Mange kommandoer som forandrer teksten er laget ut i fra en operator og en
+ bevegelse. Formatet for en slettekommando med sletteoperatoren d er:
+
+ d bevegelse
+
+ Der:
+ d - er sletteoperatoren.
+ bevegelse - er hva operatoren vil opere på (listet nedenfor).
+
+ En kort liste med bevegelser:
+ w - til starten av det neste ordet, UNNTATT det første tegnet.
+ e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet.
+ $ - til slutten av linjen, INKLUDERT det siste tegnet.
+
+ Ved å skrive de vil altså alt fra markøren til slutten av ordet bli
+ slettet.
+
+MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil
+ markøren flyttes som spesifisert.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE
+
+
+ ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. **
+
+ 1. Flytt markøren til starten av linjen markert ---> nedenfor.
+
+ 2. Skriv 2w for å flytte markøren to ord framover.
+
+ 3. Skriv 3e for å flytte markøren framover til slutten av det tredje
+ ordet.
+
+ 4. Skriv 0 (null) for å flytte til starten av linjen.
+
+ 5. Repeter steg 2 og 3 med forskjellige tall.
+
+---> Dette er en linje med noen ord som du kan bevege deg rundt på.
+
+ 6. Gå videre til leksjon 2.5.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER
+
+
+ ** Et tall sammen med en operator repeterer den så mange ganger. **
+
+ I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du
+ inn antall før bevegelsen for å slette mer:
+ d nummer bevegelse
+
+ 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert
+ med --->.
+
+ 2. Skriv 2dw for å slette de to ordene med store bokstaver.
+
+ 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende
+ ordene som har store bokstaver.
+
+---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar.
+
+MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å
+ bruke bevegelsen uten en operator.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 2.6: OPERERE PÅ LINJER
+
+
+ ** Trykk dd for å slette en hel linje. **
+
+ På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at
+ det vil være lettere å rett og slett trykke to d-er for å slette en linje.
+
+ 1. Flytt markøren til den andre linjen i verset nedenfor.
+ 2. Trykk dd å slette linjen.
+ 3. Flytt deretter til den fjerde linjen.
+ 4. Trykk 2dd for å slette to linjer.
+
+---> 1) Roser er røde,
+---> 2) Gjørme er gøy,
+---> 3) Fioler er blå,
+---> 4) Jeg har en bil,
+---> 5) Klokker viser tiden,
+---> 6) Druer er søte
+---> 7) Og du er likeså.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 2.7: ANGRE-KOMMANDOEN
+
+
+ ** Trykk u for å angre siste kommando, U for å fikse en hel linje. **
+
+ 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den
+ første feilen.
+ 2. Trykk x for å slette det første uønskede tegnet.
+ 3. Trykk så u for å angre den siste utførte kommandoen.
+ 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x .
+ 5. Trykk nå en stor U for å sette linjen tilbake til det den var
+ originalt.
+ 6. Trykk u noen ganger for å angre U og foregående kommandoer.
+ 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen
+ ganger for å gjenopprette kommandoene (omgjøre angrekommandoene).
+
+---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre.
+
+ 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av
+ leksjon 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 2
+
+
+ 1. For å slette fra markøren fram til det neste ordet, trykk: dw
+ 2. For å slette fra markøren til slutten av en linje, trykk: d$
+ 3. For å slette en hel linje, trykk: dd
+
+ 4. For å repetere en bevegelse, sett et nummer foran: 2w
+ 5. Formatet for en forandringskommando er:
+ operator [nummer] bevegelse
+ der:
+ operator - hva som skal gjøres, f.eks. d for å slette
+ [nummer] - et valgfritt antall for å repetere bevegelsen
+ bevegelse - hva kommandoen skal operere på, eksempelvis w (ord),
+ $ (til slutten av linjen) og så videre.
+
+ 6. For å gå til starten av en linje, bruk en null: 0
+
+ 7. For å angre tidligere endringer, skriv: u (liten u)
+ For å angre alle forandringer på en linje, skriv: U (stor U)
+ For å omgjøre angringen, trykk: CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 3.1: «LIM INN»-KOMMANDOEN
+
+
+ ** Trykk p for å lime inn tidligere slettet tekst etter markøren **
+
+ 1. Flytt markøren til den første linjen med ---> nedenfor.
+
+ 2. Trykk dd for å slette linjen og lagre den i et Vim-register.
+
+ 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn.
+
+ 4. Trykk p for å legge linjen under markøren.
+
+ 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge.
+
+---> d) Kan du også lære?
+---> b) Fioler er blå,
+---> c) Intelligens må læres,
+---> a) Roser er røde,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 3.2: «ERSTATT»-KOMMANDOEN
+
+
+ ** Trykk rx for å erstatte tegnet under markøren med x. **
+
+ 1. Flytt markøren til den første linjen nedenfor merket --->.
+
+ 2. Flytt markøren så den står oppå den første feilen.
+
+ 3. Trykk r og deretter tegnet som skal være der.
+
+ 4. Repeter punkt 2 og 3 til den første linjen er lik den andre.
+
+---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster!
+---> Da denne linjen ble skrevet, var det noen som trykket feile taster!
+
+ 5. Gå videre til leksjon 3.2.
+
+MERK: Husk at du bør lære ved å BRUKE, ikke pugge.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 3.3: «FORANDRE»-OPERATOREN
+
+
+ ** For å forandre til slutten av et ord, trykk ce . **
+
+ 1. Flytt markøren til den første linjen nedenfor som er merket --->.
+
+ 2. Plasser markøren på u i «lubjwr».
+
+ 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»).
+
+ 4. Trykk <ESC> og gå til det neste tegnet som skal forandres.
+
+ 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre.
+
+---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen.
+---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen.
+
+Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c
+
+
+ ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». **
+
+ 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er:
+
+ c [nummer] bevegelse
+
+ 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en
+ linje).
+
+ 3. Gå til den første linjen nedenfor som er merket --->.
+
+ 4. Flytt markøren til den første feilen.
+
+ 5. Skriv c$ og skriv resten av linjen lik den andre og trykk <ESC>.
+
+---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste.
+---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen.
+
+MERK: Du kan bruke slettetasten for å rette feil mens du skriver.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 3
+
+
+ 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette
+ limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet
+ vil den bli limt inn på linjen under markøren).
+
+ 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som
+ du vil ha der.
+
+ 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen
+ tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten
+ av ordet, c$ for å forandre til slutten av linjen.
+
+ 4. Formatet for «forandre» er:
+
+ c [nummer] bevegelse
+
+Nå kan du gå til neste leksjon.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS
+
+ ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen.
+ Trykk G for å gå til en spesifikk linje i filen. **
+
+ Merk: Les hele leksjonen før du utfører noen av punktene!
+
+ 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding
+ vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i
+ filen. Husk linjenummeret for bruk i steg 3.
+
+Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette
+ skjer når «ruler»-valget er satt (forklart i leksjon 6).
+
+ 2. Trykk G for å gå til bunnen av filen.
+ Skriv gg for å gå til begynnelsen av filen.
+
+ 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg
+ tilbake til linjen du var på da du først trykket CTRL-G.
+
+ 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 4.2: SØKEKOMMANDOEN
+
+ ** Skriv / etterfulgt av en søkestreng som du vil lete etter. **
+
+ 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og
+ markøren kommer til syne på bunnen av skjermen i likhet med
+ «:»-kommandoene.
+
+ 2. Skriv «feeeiil» og trykk <ENTER>. Dette er teksten du vil lete etter.
+
+ 3. For å finne neste forekomst av søkestrengen, trykk n .
+ For å lete etter samme søketeksten i motsatt retning, trykk N .
+
+ 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / .
+
+ 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens
+ du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I
+ går framover.
+
+---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil.
+Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt
+ hvis «wrapscan»-valget er resatt.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 4.3: FINN SAMSVARENDE PARENTESER
+
+
+ ** Trykk % for å finne en samsvarende ), ] eller } . **
+
+ 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->.
+
+ 2. Trykk % .
+
+ 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen.
+
+ 4. Trykk % for å flytte markøren til den andre samsvarende parentesen.
+
+ 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør.
+
+---> Dette ( er en testlinje med (, [ ] og { } i den )).
+
+Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert
+ antall parenteser!
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 4.4: ERSTATT-KOMMANDOEN
+
+
+ ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». **
+
+ 1. Flytt markøren til linjen nedenfor som er merket med --->.
+
+ 2. Skriv :s/deen/den/ <ENTER> . Legg merke til at denne kommandoen bare
+ forandrer den første forekomsten av «deen» på linjen.
+
+ 3. Skriv :s/deen/den/g . Når g-flagget legges til, betyr dette global
+ erstatning på linjen og erstatter alle forekomster av «deen» på linjen.
+
+---> deen som kan kaste deen tyngste steinen lengst er deen beste
+
+ 4. For å erstatte alle forekomster av en tekststreng mellom to linjer,
+ skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for
+ linjeområdet erstatningen skal gjøres.
+ Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen.
+ Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og
+ deretter spørre om teksten skal erstattes eller
+ ikke.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 4
+
+
+ 1. Ctrl-G viser nåværende posisjon i filen og filstatusen.
+ G går til slutten av filen.
+ nummer G går til det linjenummeret.
+ gg går til den første linjen.
+
+ 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten.
+ Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten.
+ Etter et søk kan du trykke n for å finne neste forekomst i den samme
+ retningen eller N for å lete i motsatt retning.
+ CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner.
+
+ 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den
+ som samsvarer.
+
+ 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny
+ Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g
+ Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g
+ Erstatte alle forekomster i en fil: :%s/gammel/ny/g
+ For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO
+
+
+ ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. **
+
+ 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av
+ skjermen. Dette lar deg skrive en kommandolinjekommando.
+
+ 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst
+ ekstern kommando.
+
+ 3. Som et eksempel, skriv ls etter utropstegnet og trykk <ENTER>. Du vil
+ nå få en liste over filene i katalogen, akkurat som om du hadde kjørt
+ kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis
+ «ls» ikke virker.
+
+MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med
+ parametere.
+
+MERK: Alle «:»-kommandoer må avsluttes med <ENTER>. Fra dette punktet er det
+ ikke alltid vi nevner det.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 5.2: MER OM LAGRING AV FILER
+
+
+ ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. **
+
+ 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du
+ vet allerede at du må trykke <ENTER> etter dette.
+
+ 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST .
+
+ 3. Skriv :w TEST (der TEST er filnavnet du velger).
+
+ 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å
+ sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av
+ katalogen.
+
+Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST»,
+ ville filen vært en eksakt kopi av innføringen da du lagret den.
+
+ 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende
+ operativsystem, eller :!del TEST hvis du bruker MS-DOS.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES
+
+
+ ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN **
+
+ 1. Flytt markøren til denne linjen.
+
+ 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke
+ til at teksten blir markert.
+
+ 3. Trykk : (kolon). På bunnen av skjermen vil :'<,'> komme til syne.
+
+ 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller
+ at du ser :'<,'>w TEST før du trykker Enter.
+
+ 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller !ls
+ for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon.
+
+MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for
+ å gjøre det valgte området større eller mindre. Deretter kan du bruke en
+ operator for å gjøre noe med teksten. For eksempel sletter d teksten.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER
+
+
+ ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN **
+
+ 1. Plasser markøren like over denne linjen.
+
+MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter
+ NED for å se denne leksjonen igjen.
+
+ 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på
+ filen du brukte. Filen du henter blir plassert nedenfor markørlinjen.
+
+ 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av
+ leksjon 5.3, originalen og denne versjonen.
+
+MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls
+ leser utdataene av ls-kommandoen og legger dem nedenfor markøren.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 5
+
+
+ 1. :!kommando utfører en ekstern kommandio.
+
+ Noen nyttige eksempler er:
+ (MS-DOS) (Unix)
+ :!dir :!ls - List filene i katalogen.
+ :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN.
+
+ 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN .
+
+ 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen
+ FILNAVN.
+
+ 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren.
+
+ 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor
+ markørposisjonen.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN
+
+
+ ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til
+ innsettingsmodus **
+
+ 1. Flytt markøren til linjen nedenfor merket --->.
+
+ 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i
+ innsettingsmodus.
+
+ 3. Skriv litt tekst og trykk <ESC> for å gå ut av innsettingsmodusen.
+
+---> Etter at o er skrevet blir markøren plassert på den tomme linjen.
+
+ 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O
+ istedenfor en liten o . Prøv dette på linjen nedenfor.
+
+---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 6.2: «LEGG TIL»-KOMMANDOEN
+
+
+ ** Skriv a for å legge til tekst ETTER markøren. **
+
+ 1. Flytt markøren til starten av linjen merket ---> nedenfor.
+
+ 2. Trykk e til markøren er på slutten av «li».
+
+ 3. Trykk a (liten a) for å legge til tekst ETTER markøren.
+
+ 4. Fullfør ordet sånn som på linjen nedenfor. Trykk <ESC> for å gå ut av
+ innsettingsmodusen.
+
+ 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og
+ 4.
+
+---> Denne li lar deg øve på å leg til tek på en linje.
+---> Denne linjen lar deg øve på å legge til tekst på en linje.
+
+Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste
+ forskjellen er hvor tegnene blir satt inn.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ
+
+
+ ** Skriv en stor R for å erstatte mer enn ett tegn. **
+
+ 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren
+ til begynnelsen av den første «xxx»-en.
+
+ 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så
+ det erstatter xxx.
+
+ 3. Trykk <ESC> for å gå ut av erstatningsmodusen. Legg merke til at resten
+ av linjen forblir uforandret.
+
+ 4. Repeter stegene for å erstatte den gjenværende xxx.
+
+---> Ved å legge 123 til xxx får vi xxx.
+---> Ved å legge 123 til 456 får vi 579.
+
+MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives
+ erstatter et eksisterende tegn.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 6.4: KOPIERE OG LIME INN TEKST
+
+
+ ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn **
+
+ 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)».
+
+ 2. Gå inn i visuell modus med v og flytt markøren til like før «første».
+
+ 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten.
+
+ 4. Flytt markøren til slutten av den neste linjen: j$
+
+ 5. Trykk p for å lime inn teksten. Trykk deretter: a andre <ESC> .
+
+ 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til
+ slutten av den neste linjen med j$ og legg inn teksten der med p .
+
+---> a) Dette er det første valget.
+ b)
+
+Merk: Du kan også bruke y som en operator; yw kopierer ett ord.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 6.5: SETT VALG
+
+
+ ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. **
+
+ 1. Let etter «ignore» ved å skrive: /ignore <ENTER>
+ Repeter flere ganger ved å trykke n .
+
+ 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic
+
+ 3. Søk etter «ignore» igjen ved å trykke n .
+ Legg merke til at både «Ignore» og «IGNORE» blir funnet.
+
+ 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is
+
+ 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore <ENTER>
+
+ 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic
+
+Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch
+Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk
+ \c i uttrykket: /ignore\c <ENTER>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 6
+
+ 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i
+ innsettingsmodus.
+ Trykk O for å åpne en linje OVER markøren.
+
+ 2. Skriv a for å sette inn tekst ETTER markøren.
+ Skriv A for å sette inn tekst etter slutten av linjen.
+
+ 3. Kommandoen e går til slutten av et ord.
+
+ 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn.
+
+ 5. Ved å trykke R går du inn i erstatningsmodus helt til <ESC> trykkes.
+
+ 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er:
+ «ic» «ignorecase» ignorer store/små bokstaver under søk
+ «is» «incsearch» vis delvise treff for en søketekst
+ «hls» «hlsearch» uthev alle søketreff
+
+ 7. Legg til «no» foran valget for å slå det av: :set noic
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 7.1: FÅ HJELP
+
+
+ ** Bruk det innebygde hjelpesystemet. **
+
+ Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av
+ disse måtene:
+ - Trykk Hjelp-tasten (hvis du har en)
+ - Trykk F1-tasten (hvis du har en)
+ - Skriv :help <ENTER>
+
+ Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker.
+ Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet
+ Skriv :q <ENTER> for å lukke hjelpevinduet.
+
+ Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til
+ «:help»-kommandoen. Prøv disse (ikke glem å trykke <ENTER>):
+
+ :help w
+ :help c_CTRL-D
+ :help insert-index
+ :help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 7.2: LAG ET OPPSTARTSSKRIPT
+
+
+ ** Slå på funksjoner i Vim **
+
+ Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av
+ som standard. For å begynne å bruke flere funksjoner må du lage en
+ «vimrc»-fil.
+
+ 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt:
+ :e ~/.vimrc for Unix
+ :e $VIM/_vimrc for MS Windows
+
+ 2. Les inn eksempelfilen for «vimrc»:
+ :r $VIMRUNTIME/vimrc_example.vim
+
+ 3. Lagre filen med:
+ :w
+
+ Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til
+ alle dine foretrukne oppsett i denne «vimrc»-filen.
+ For mer informasjon, skriv :help vimrc-intro
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 7.3: FULLFØRING
+
+
+ ** Kommandolinjefullføring med CTRL-D og <TAB> **
+
+ 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp
+
+ 2. Se hvilke filer som er i katalogen: :!ls eller :!dir
+
+ 3. Skriv starten på en kommando: :e
+
+ 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med
+ «e».
+
+ 5. Trykk <TAB> og Vim vil fullføre kommandonavnet til «:edit».
+
+ 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL
+
+ 7. Trykk <TAB>. Vim vil fullføre navnet (hvis det er unikt).
+
+MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og
+ <TAB>. Det er spesielt nyttig for bruk sammen med :help .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 7
+
+
+ 1. Skriv :help eller trykk <F1> eller <Help> for å åpne et hjelpevindu.
+
+ 2. Skriv :help kommando for å få hjelp om kommando .
+
+ 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu.
+
+ 4. Trykk :q for å lukke hjelpevinduet.
+
+ 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine.
+
+ 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige
+ fullføringer. Trykk <TAB> for å bruke en fullføring.
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ Her slutter innføringen i Vim. Den var ment som en rask oversikt over
+ editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på
+ langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen
+ ved å skrive :help user-manual .
+
+ For videre lesing og studier, kan denne boken anbefales:
+ «Vim - Vi Improved» av Steve Oualline
+ Utgiver: New Riders
+ Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for
+ nybegynnere. Inneholder mange eksempler og illustrasjoner.
+ Se http://iccf-holland.org/click5.html
+
+ Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også:
+ «Learning the Vi Editor» av Linda Lamb
+ Utgiver: O'Reilly & Associates Inc.
+ Det er en god bok for å få vite omtrent hva som helst om Vi.
+ Den sjette utgaven inneholder også informasjon om Vim.
+
+ Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware,
+ Colorado School of Mines med idéer av Charles Smith, Colorado State
+ University. E-mail: bware@mines.colorado.edu .
+
+ Modifisert for Vim av Bram Moolenaar.
+ Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org
+ Id: tutor.no 406 2007-03-18 22:48:36Z sunny
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+vim: set ts=8 :
diff --git a/vim/vim-7.2/tutor/tutor.nb.utf-8 b/vim/vim-7.2/tutor/tutor.nb.utf-8
new file mode 100644
index 0000000..a7826b7
--- /dev/null
+++ b/vim/vim-7.2/tutor/tutor.nb.utf-8
@@ -0,0 +1,973 @@
+===============================================================================
+= V e l k o m m e n t i l i n n f ø r i n g e n i V i m -- Ver. 1.7 =
+===============================================================================
+
+ Vim er en meget kraftig editor med mange kommandoer, alt for mange til å
+ kunne gå gjennom alle i en innføring som denne. Den er beregnet på å
+ sette deg inn i bruken av nok kommandoer så du vil være i stand til lett
+ å kunne bruke Vim som en editor til alle formål.
+
+ Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30
+ minutter, avhengig av hvor mye tid du bruker til eksperimentering.
+
+ MERK:
+ Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne
+ filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er
+ dette allerede en kopi).
+
+ Det er viktig å huske at denne innføringen er beregnet på læring gjennom
+ bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig.
+ Hvis du bare leser teksten, vil du glemme kommandoene!
+
+ Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for
+ å flytte markøren helt til leksjon 1.1 fyller skjermen.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 1.1: FLYTTING AV MARKØREN
+
+
+ ** For å flytte markøren, trykk tastene h, j, k, l som vist. **
+ ^
+ k Tips: h-tasten er til venstre og flytter til venstre.
+ < h l > l-tasten er til høyre og flytter til høyre.
+ j j-tasten ser ut som en pil som peker nedover.
+ v
+ 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene.
+
+ 2. Hold inne nedovertasten (j) til den repeterer.
+ NÃ¥ vet du hvordan du beveger deg til neste leksjon.
+
+ 3. GÃ¥ til leksjon 1.2 ved hjelp av nedovertasten.
+
+Merk: Hvis du blir usikker på noe du har skrevet, trykk <ESC> for å gå til
+ normalmodus. Skriv deretter kommandoen du ønsket på nytt.
+
+Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til
+ å bevege markøren mye raskere når du er blitt vant til det. Helt sant!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 1.2: AVSLUTTE VIM
+
+
+ !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!!
+
+ 1. Trykk <ESC>-tasten (for å forsikre deg om at du er i normalmodus).
+
+ 2. Skriv: :q! <ENTER>.
+ Dette avslutter editoren og FORKASTER alle forandringer som du har gjort.
+
+ 3. NÃ¥r du ser kommandolinjen i skallet, skriv kommandoen som startet denne
+ innføringen. Den er: vimtutor <ENTER>
+
+ 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å
+ avslutte og starte editoren på nytt.
+
+MERK: :q! <ENTER> forkaster alle forandringer som du gjorde. I løpet av noen
+ få leksjoner vil du lære hvordan du lagrer forandringene til en fil.
+
+ 5. Flytt markøren ned til leksjon 1.3.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 1.3: REDIGERING AV TEKST -- SLETTING
+
+
+ ** Trykk x for å slette tegnet under markøren. **
+
+ 1. Flytt markøren til den første linjen merket med --->.
+
+ 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som
+ skal slettes.
+
+ 3. Trykk tasten x for å slette det uønskede tegnet.
+
+ 4. Repeter punkt 2 til 4 til setningen er lik den som er under.
+
+---> Hessstennnn brrråsnudddde ii gaaata.
+---> Hesten bråsnudde i gata.
+
+ 5. Nå som linjen er korrekt, gå til leksjon 1.4.
+
+MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men
+ bruk dem helt til de sitter.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING
+
+
+ ** Trykk i for å sette inn tekst. **
+
+ 1. Flytt markøren til den første linjen som er merket med --->.
+
+ 2. For å gjøre den første linjen lik den andre, flytt markøren til den står
+ på tegnet ETTER posisjonen der teksten skal settes inn.
+
+ 3. Trykk i og skriv inn teksten som mangler.
+
+ 4. Etterhvert som hver feil er fikset, trykk <ESC> for å returnere til
+ normalmodus. Repeter punkt 2 til 4 til setningen er korrekt.
+
+---> Det er tkst som mnglr .
+---> Det er ganske mye tekst som mangler her.
+
+ 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen
+ nedenfor.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL
+
+
+ ** Trykk A for å legge til tekst. **
+
+ 1. Flytt markøren til den første linjen nedenfor merket --->.
+ Det har ikke noe å si hvor markøren er plassert på den linjen.
+
+ 2. Trykk A og skriv inn det som skal legges til.
+
+ 3. Når teksten er lagt til, trykk <ESC> for å returnere til normalmodusen.
+
+ 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og
+ 3 for å reparere denne setningen.
+
+---> Det mangler noe tekst p
+ Det mangler noe tekst på denne linjen.
+---> Det mangler også litt tek
+ Det mangler også litt tekst på denne linjen.
+
+ 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 1.6: REDIGERE EN FIL
+
+
+ ** Bruk :wq for å lagre en fil og avslutte. **
+
+ !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!!
+
+ 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q!
+
+ 2. Skriv denne kommandoen på kommandolinja: vim tutor <ENTER>
+ «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila
+ som du vil redigere. Bruk en fil som kan forandres.
+
+ 3. Sett inn og slett tekst som du lærte i de foregående leksjonene.
+
+ 4. Lagre filen med forandringene og avslutt Vim med: :wq <ENTER>
+
+ 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger.
+
+ 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 1
+
+
+ 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene.
+ h (venstre) j (ned) k (opp) l (høyre)
+
+ 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN <ENTER>
+
+ 3. For å avslutte Vim, skriv: <ESC> :q! <ENTER> for å forkaste endringer.
+ ELLER skriv: <ESC> :wq <ENTER> for å lagre forandringene.
+
+ 4. For å slette tegnet under markøren, trykk: x
+
+ 5. For å sette inn eller legge til tekst, trykk:
+ i skriv innsatt tekst <ESC> sett inn før markøren
+ A skriv tillagt tekst <ESC> legg til på slutten av linjen
+
+MERK: Når du trykker <ESC> går du til normalmodus eller du avbryter en uønsket
+ og delvis fullført kommando.
+
+ Nå kan du gå videre til leksjon 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 2.1: SLETTEKOMMANDOER
+
+
+ ** Trykk dw for å slette et ord. **
+
+ 1. Trykk <ESC> for å være sikker på at du er i normalmodus.
+
+ 2. Flytt markøren til den første linjen nedenfor merket --->.
+
+ 3. Flytt markøren til begynnelsen av ordet som skal slettes.
+
+ 4. Trykk dw og ordet vil forsvinne.
+
+MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når
+ du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet
+ tegn enn d har du skrevet noe feil; trykk <ESC> og start på nytt.
+
+---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen.
+---> Det er tre ord som ikke hører hjemme i denne setningen.
+
+ 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå
+ deretter til leksjon 2.2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 2.2: FLERE SLETTEKOMMANDOER
+
+
+ ** Trykk d$ for å slette til slutten av linjen. **
+
+ 1. Trykk <ESC> for å være sikker på at du er i normalmodus.
+
+ 2. Flytt markøren til linjen nedenfor merket --->.
+
+ 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum).
+
+ 4. Trykk d$ for å slette alt til slutten av linjen.
+
+---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye.
+
+ 5. Gå til leksjon 2.3 for å forstå hva som skjer.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 2.3: OM OPERATORER OG BEVEGELSER
+
+
+ Mange kommandoer som forandrer teksten er laget ut i fra en operator og en
+ bevegelse. Formatet for en slettekommando med sletteoperatoren d er:
+
+ d bevegelse
+
+ Der:
+ d - er sletteoperatoren.
+ bevegelse - er hva operatoren vil opere på (listet nedenfor).
+
+ En kort liste med bevegelser:
+ w - til starten av det neste ordet, UNNTATT det første tegnet.
+ e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet.
+ $ - til slutten av linjen, INKLUDERT det siste tegnet.
+
+ Ved å skrive de vil altså alt fra markøren til slutten av ordet bli
+ slettet.
+
+MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil
+ markøren flyttes som spesifisert.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE
+
+
+ ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. **
+
+ 1. Flytt markøren til starten av linjen markert ---> nedenfor.
+
+ 2. Skriv 2w for å flytte markøren to ord framover.
+
+ 3. Skriv 3e for å flytte markøren framover til slutten av det tredje
+ ordet.
+
+ 4. Skriv 0 (null) for å flytte til starten av linjen.
+
+ 5. Repeter steg 2 og 3 med forskjellige tall.
+
+---> Dette er en linje med noen ord som du kan bevege deg rundt på.
+
+ 6. GÃ¥ videre til leksjon 2.5.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 2.5: BRUK AV ANTALL FOR Ã… SLETTE MER
+
+
+ ** Et tall sammen med en operator repeterer den så mange ganger. **
+
+ I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du
+ inn antall før bevegelsen for å slette mer:
+ d nummer bevegelse
+
+ 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert
+ med --->.
+
+ 2. Skriv 2dw for å slette de to ordene med store bokstaver.
+
+ 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende
+ ordene som har store bokstaver.
+
+---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar.
+
+MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å
+ bruke bevegelsen uten en operator.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 2.6: OPERERE PÃ… LINJER
+
+
+ ** Trykk dd for å slette en hel linje. **
+
+ PÃ¥ grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at
+ det vil være lettere å rett og slett trykke to d-er for å slette en linje.
+
+ 1. Flytt markøren til den andre linjen i verset nedenfor.
+ 2. Trykk dd å slette linjen.
+ 3. Flytt deretter til den fjerde linjen.
+ 4. Trykk 2dd for å slette to linjer.
+
+---> 1) Roser er røde,
+---> 2) Gjørme er gøy,
+---> 3) Fioler er blå,
+---> 4) Jeg har en bil,
+---> 5) Klokker viser tiden,
+---> 6) Druer er søte
+---> 7) Og du er likeså.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 2.7: ANGRE-KOMMANDOEN
+
+
+ ** Trykk u for å angre siste kommando, U for å fikse en hel linje. **
+
+ 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den
+ første feilen.
+ 2. Trykk x for å slette det første uønskede tegnet.
+ 3. Trykk så u for å angre den siste utførte kommandoen.
+ 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x .
+ 5. Trykk nå en stor U for å sette linjen tilbake til det den var
+ originalt.
+ 6. Trykk u noen ganger for å angre U og foregående kommandoer.
+ 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen
+ ganger for å gjenopprette kommandoene (omgjøre angrekommandoene).
+
+---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre.
+
+ 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av
+ leksjon 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 2
+
+
+ 1. For å slette fra markøren fram til det neste ordet, trykk: dw
+ 2. For å slette fra markøren til slutten av en linje, trykk: d$
+ 3. For å slette en hel linje, trykk: dd
+
+ 4. For å repetere en bevegelse, sett et nummer foran: 2w
+ 5. Formatet for en forandringskommando er:
+ operator [nummer] bevegelse
+ der:
+ operator - hva som skal gjøres, f.eks. d for å slette
+ [nummer] - et valgfritt antall for å repetere bevegelsen
+ bevegelse - hva kommandoen skal operere på, eksempelvis w (ord),
+ $ (til slutten av linjen) og så videre.
+
+ 6. For å gå til starten av en linje, bruk en null: 0
+
+ 7. For å angre tidligere endringer, skriv: u (liten u)
+ For å angre alle forandringer på en linje, skriv: U (stor U)
+ For å omgjøre angringen, trykk: CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 3.1: «LIM INN»-KOMMANDOEN
+
+
+ ** Trykk p for å lime inn tidligere slettet tekst etter markøren **
+
+ 1. Flytt markøren til den første linjen med ---> nedenfor.
+
+ 2. Trykk dd for å slette linjen og lagre den i et Vim-register.
+
+ 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn.
+
+ 4. Trykk p for å legge linjen under markøren.
+
+ 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge.
+
+---> d) Kan du også lære?
+---> b) Fioler er blå,
+---> c) Intelligens må læres,
+---> a) Roser er røde,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 3.2: «ERSTATT»-KOMMANDOEN
+
+
+ ** Trykk rx for å erstatte tegnet under markøren med x. **
+
+ 1. Flytt markøren til den første linjen nedenfor merket --->.
+
+ 2. Flytt markøren så den står oppå den første feilen.
+
+ 3. Trykk r og deretter tegnet som skal være der.
+
+ 4. Repeter punkt 2 og 3 til den første linjen er lik den andre.
+
+---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster!
+---> Da denne linjen ble skrevet, var det noen som trykket feile taster!
+
+ 5. GÃ¥ videre til leksjon 3.2.
+
+MERK: Husk at du bør lære ved å BRUKE, ikke pugge.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 3.3: «FORANDRE»-OPERATOREN
+
+
+ ** For å forandre til slutten av et ord, trykk ce . **
+
+ 1. Flytt markøren til den første linjen nedenfor som er merket --->.
+
+ 2. Plasser markøren på u i «lubjwr».
+
+ 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»).
+
+ 4. Trykk <ESC> og gå til det neste tegnet som skal forandres.
+
+ 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre.
+
+---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen.
+---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen.
+
+Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c
+
+
+ ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». **
+
+ 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er:
+
+ c [nummer] bevegelse
+
+ 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en
+ linje).
+
+ 3. Gå til den første linjen nedenfor som er merket --->.
+
+ 4. Flytt markøren til den første feilen.
+
+ 5. Skriv c$ og skriv resten av linjen lik den andre og trykk <ESC>.
+
+---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste.
+---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen.
+
+MERK: Du kan bruke slettetasten for å rette feil mens du skriver.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 3
+
+
+ 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette
+ limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet
+ vil den bli limt inn på linjen under markøren).
+
+ 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som
+ du vil ha der.
+
+ 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen
+ tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten
+ av ordet, c$ for å forandre til slutten av linjen.
+
+ 4. Formatet for «forandre» er:
+
+ c [nummer] bevegelse
+
+Nå kan du gå til neste leksjon.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS
+
+ ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen.
+ Trykk G for å gå til en spesifikk linje i filen. **
+
+ Merk: Les hele leksjonen før du utfører noen av punktene!
+
+ 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding
+ vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i
+ filen. Husk linjenummeret for bruk i steg 3.
+
+Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette
+ skjer når «ruler»-valget er satt (forklart i leksjon 6).
+
+ 2. Trykk G for å gå til bunnen av filen.
+ Skriv gg for å gå til begynnelsen av filen.
+
+ 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg
+ tilbake til linjen du var på da du først trykket CTRL-G.
+
+ 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 4.2: SØKEKOMMANDOEN
+
+ ** Skriv / etterfulgt av en søkestreng som du vil lete etter. **
+
+ 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og
+ markøren kommer til syne på bunnen av skjermen i likhet med
+ «:»-kommandoene.
+
+ 2. Skriv «feeeiil» og trykk <ENTER>. Dette er teksten du vil lete etter.
+
+ 3. For å finne neste forekomst av søkestrengen, trykk n .
+ For å lete etter samme søketeksten i motsatt retning, trykk N .
+
+ 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / .
+
+ 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens
+ du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I
+ går framover.
+
+---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil.
+Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt
+ hvis «wrapscan»-valget er resatt.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 4.3: FINN SAMSVARENDE PARENTESER
+
+
+ ** Trykk % for å finne en samsvarende ), ] eller } . **
+
+ 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->.
+
+ 2. Trykk % .
+
+ 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen.
+
+ 4. Trykk % for å flytte markøren til den andre samsvarende parentesen.
+
+ 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør.
+
+---> Dette ( er en testlinje med (, [ ] og { } i den )).
+
+Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert
+ antall parenteser!
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 4.4: ERSTATT-KOMMANDOEN
+
+
+ ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». **
+
+ 1. Flytt markøren til linjen nedenfor som er merket med --->.
+
+ 2. Skriv :s/deen/den/ <ENTER> . Legg merke til at denne kommandoen bare
+ forandrer den første forekomsten av «deen» på linjen.
+
+ 3. Skriv :s/deen/den/g . NÃ¥r g-flagget legges til, betyr dette global
+ erstatning på linjen og erstatter alle forekomster av «deen» på linjen.
+
+---> deen som kan kaste deen tyngste steinen lengst er deen beste
+
+ 4. For å erstatte alle forekomster av en tekststreng mellom to linjer,
+ skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for
+ linjeområdet erstatningen skal gjøres.
+ Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen.
+ Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og
+ deretter spørre om teksten skal erstattes eller
+ ikke.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 4
+
+
+ 1. Ctrl-G viser nåværende posisjon i filen og filstatusen.
+ G går til slutten av filen.
+ nummer G går til det linjenummeret.
+ gg går til den første linjen.
+
+ 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten.
+ Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten.
+ Etter et søk kan du trykke n for å finne neste forekomst i den samme
+ retningen eller N for å lete i motsatt retning.
+ CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner.
+
+ 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den
+ som samsvarer.
+
+ 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny
+ Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g
+ Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g
+ Erstatte alle forekomster i en fil: :%s/gammel/ny/g
+ For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO
+
+
+ ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. **
+
+ 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av
+ skjermen. Dette lar deg skrive en kommandolinjekommando.
+
+ 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst
+ ekstern kommando.
+
+ 3. Som et eksempel, skriv ls etter utropstegnet og trykk <ENTER>. Du vil
+ nå få en liste over filene i katalogen, akkurat som om du hadde kjørt
+ kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis
+ «ls» ikke virker.
+
+MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med
+ parametere.
+
+MERK: Alle «:»-kommandoer må avsluttes med <ENTER>. Fra dette punktet er det
+ ikke alltid vi nevner det.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 5.2: MER OM LAGRING AV FILER
+
+
+ ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. **
+
+ 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du
+ vet allerede at du må trykke <ENTER> etter dette.
+
+ 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST .
+
+ 3. Skriv :w TEST (der TEST er filnavnet du velger).
+
+ 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å
+ sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av
+ katalogen.
+
+Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST»,
+ ville filen vært en eksakt kopi av innføringen da du lagret den.
+
+ 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende
+ operativsystem, eller :!del TEST hvis du bruker MS-DOS.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES
+
+
+ ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN **
+
+ 1. Flytt markøren til denne linjen.
+
+ 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke
+ til at teksten blir markert.
+
+ 3. Trykk : (kolon). PÃ¥ bunnen av skjermen vil :'<,'> komme til syne.
+
+ 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller
+ at du ser :'<,'>w TEST før du trykker Enter.
+
+ 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller !ls
+ for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon.
+
+MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for
+ å gjøre det valgte området større eller mindre. Deretter kan du bruke en
+ operator for å gjøre noe med teksten. For eksempel sletter d teksten.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 5.4: HENTING OG SAMMENSLÃ…ING AV FILER
+
+
+ ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN **
+
+ 1. Plasser markøren like over denne linjen.
+
+MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter
+ NED for å se denne leksjonen igjen.
+
+ 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på
+ filen du brukte. Filen du henter blir plassert nedenfor markørlinjen.
+
+ 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av
+ leksjon 5.3, originalen og denne versjonen.
+
+MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls
+ leser utdataene av ls-kommandoen og legger dem nedenfor markøren.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 5
+
+
+ 1. :!kommando utfører en ekstern kommandio.
+
+ Noen nyttige eksempler er:
+ (MS-DOS) (Unix)
+ :!dir :!ls - List filene i katalogen.
+ :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN.
+
+ 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN .
+
+ 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen
+ FILNAVN.
+
+ 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren.
+
+ 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor
+ markørposisjonen.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN
+
+
+ ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til
+ innsettingsmodus **
+
+ 1. Flytt markøren til linjen nedenfor merket --->.
+
+ 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i
+ innsettingsmodus.
+
+ 3. Skriv litt tekst og trykk <ESC> for å gå ut av innsettingsmodusen.
+
+---> Etter at o er skrevet blir markøren plassert på den tomme linjen.
+
+ 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O
+ istedenfor en liten o . Prøv dette på linjen nedenfor.
+
+---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 6.2: «LEGG TIL»-KOMMANDOEN
+
+
+ ** Skriv a for å legge til tekst ETTER markøren. **
+
+ 1. Flytt markøren til starten av linjen merket ---> nedenfor.
+
+ 2. Trykk e til markøren er på slutten av «li».
+
+ 3. Trykk a (liten a) for å legge til tekst ETTER markøren.
+
+ 4. Fullfør ordet sånn som på linjen nedenfor. Trykk <ESC> for å gå ut av
+ innsettingsmodusen.
+
+ 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og
+ 4.
+
+---> Denne li lar deg øve på å leg til tek på en linje.
+---> Denne linjen lar deg øve på å legge til tekst på en linje.
+
+Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste
+ forskjellen er hvor tegnene blir satt inn.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 6.3: EN ANNEN MÃ…TE Ã… ERSTATTE PÃ…
+
+
+ ** Skriv en stor R for å erstatte mer enn ett tegn. **
+
+ 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren
+ til begynnelsen av den første «xxx»-en.
+
+ 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så
+ det erstatter xxx.
+
+ 3. Trykk <ESC> for å gå ut av erstatningsmodusen. Legg merke til at resten
+ av linjen forblir uforandret.
+
+ 4. Repeter stegene for å erstatte den gjenværende xxx.
+
+---> Ved å legge 123 til xxx får vi xxx.
+---> Ved å legge 123 til 456 får vi 579.
+
+MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives
+ erstatter et eksisterende tegn.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 6.4: KOPIERE OG LIME INN TEKST
+
+
+ ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn **
+
+ 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)».
+
+ 2. Gå inn i visuell modus med v og flytt markøren til like før «første».
+
+ 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten.
+
+ 4. Flytt markøren til slutten av den neste linjen: j$
+
+ 5. Trykk p for å lime inn teksten. Trykk deretter: a andre <ESC> .
+
+ 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til
+ slutten av den neste linjen med j$ og legg inn teksten der med p .
+
+---> a) Dette er det første valget.
+ b)
+
+Merk: Du kan også bruke y som en operator; yw kopierer ett ord.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 6.5: SETT VALG
+
+
+ ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. **
+
+ 1. Let etter «ignore» ved å skrive: /ignore <ENTER>
+ Repeter flere ganger ved å trykke n .
+
+ 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic
+
+ 3. Søk etter «ignore» igjen ved å trykke n .
+ Legg merke til at både «Ignore» og «IGNORE» blir funnet.
+
+ 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is
+
+ 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore <ENTER>
+
+ 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic
+
+Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch
+Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk
+ \c i uttrykket: /ignore\c <ENTER>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 6
+
+ 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i
+ innsettingsmodus.
+ Trykk O for å åpne en linje OVER markøren.
+
+ 2. Skriv a for å sette inn tekst ETTER markøren.
+ Skriv A for å sette inn tekst etter slutten av linjen.
+
+ 3. Kommandoen e går til slutten av et ord.
+
+ 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn.
+
+ 5. Ved å trykke R går du inn i erstatningsmodus helt til <ESC> trykkes.
+
+ 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er:
+ «ic» «ignorecase» ignorer store/små bokstaver under søk
+ «is» «incsearch» vis delvise treff for en søketekst
+ «hls» «hlsearch» uthev alle søketreff
+
+ 7. Legg til «no» foran valget for å slå det av: :set noic
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 7.1: FÃ… HJELP
+
+
+ ** Bruk det innebygde hjelpesystemet. **
+
+ Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av
+ disse måtene:
+ - Trykk Hjelp-tasten (hvis du har en)
+ - Trykk F1-tasten (hvis du har en)
+ - Skriv :help <ENTER>
+
+ Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker.
+ Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet
+ Skriv :q <ENTER> for å lukke hjelpevinduet.
+
+ Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til
+ «:help»-kommandoen. Prøv disse (ikke glem å trykke <ENTER>):
+
+ :help w
+ :help c_CTRL-D
+ :help insert-index
+ :help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 7.2: LAG ET OPPSTARTSSKRIPT
+
+
+ ** Slå på funksjoner i Vim **
+
+ Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av
+ som standard. For å begynne å bruke flere funksjoner må du lage en
+ «vimrc»-fil.
+
+ 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt:
+ :e ~/.vimrc for Unix
+ :e $VIM/_vimrc for MS Windows
+
+ 2. Les inn eksempelfilen for «vimrc»:
+ :r $VIMRUNTIME/vimrc_example.vim
+
+ 3. Lagre filen med:
+ :w
+
+ Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til
+ alle dine foretrukne oppsett i denne «vimrc»-filen.
+ For mer informasjon, skriv :help vimrc-intro
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leksjon 7.3: FULLFØRING
+
+
+ ** Kommandolinjefullføring med CTRL-D og <TAB> **
+
+ 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp
+
+ 2. Se hvilke filer som er i katalogen: :!ls eller :!dir
+
+ 3. Skriv starten på en kommando: :e
+
+ 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med
+ «e».
+
+ 5. Trykk <TAB> og Vim vil fullføre kommandonavnet til «:edit».
+
+ 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL
+
+ 7. Trykk <TAB>. Vim vil fullføre navnet (hvis det er unikt).
+
+MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og
+ <TAB>. Det er spesielt nyttig for bruk sammen med :help .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ OPPSUMMERING AV LEKSJON 7
+
+
+ 1. Skriv :help eller trykk <F1> eller <Help> for å åpne et hjelpevindu.
+
+ 2. Skriv :help kommando for å få hjelp om kommando .
+
+ 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu.
+
+ 4. Trykk :q for å lukke hjelpevinduet.
+
+ 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine.
+
+ 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige
+ fullføringer. Trykk <TAB> for å bruke en fullføring.
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ Her slutter innføringen i Vim. Den var ment som en rask oversikt over
+ editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på
+ langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen
+ ved å skrive :help user-manual .
+
+ For videre lesing og studier, kan denne boken anbefales:
+ «Vim - Vi Improved» av Steve Oualline
+ Utgiver: New Riders
+ Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for
+ nybegynnere. Inneholder mange eksempler og illustrasjoner.
+ Se http://iccf-holland.org/click5.html
+
+ Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også:
+ «Learning the Vi Editor» av Linda Lamb
+ Utgiver: O'Reilly & Associates Inc.
+ Det er en god bok for å få vite omtrent hva som helst om Vi.
+ Den sjette utgaven inneholder også informasjon om Vim.
+
+ Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware,
+ Colorado School of Mines med idéer av Charles Smith, Colorado State
+ University. E-mail: bware@mines.colorado.edu .
+
+ Modifisert for Vim av Bram Moolenaar.
+ Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org
+ Id: tutor.no 406 2007-03-18 22:48:36Z sunny
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+vim: set ts=8 :