diff options
Diffstat (limited to 'vim')
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 ï¼¹ ++ ENDTEST ++ ++ { ++ X ++ Xa ++ X a ++ XY ++ X ï¼¹ ++ } ++ ++ STARTTEST ++ /^{/+1 ++ :set tw=2 fo=tm ++ gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo ++ X ++ Xa ++ X a ++ XY ++ X ï¼¹ ++ aX ++ abX ++ abcX ++ abX c ++ abXY ++ ENDTEST ++ ++ { ++ X ++ Xa ++ X a ++ XY ++ X ï¼¹ ++ 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 ++ Xaï¼¹ ++ XY ++ XYZ ++ X ï¼¹ ++ X YZ ++ XX ++ XXa ++ XXY ++ ENDTEST ++ ++ { ++ X ++ Xa ++ Xaï¼¹ ++ XY ++ XYZ ++ X ï¼¹ ++ 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 ï¼¹ ++ X ï¼¹ ++ X Z ++ XX ++ XXa ++ XXY ++ ++ X ++ Xa ++ Xa ++ XY ++ XY ++ XY ++ XZ ++ X ï¼¹ ++ X ï¼¹ ++ 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 : |