diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index 4cc671116e..9c67953bd9 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.0g. Last change: 2006 Apr 30 +*change.txt* For Vim version 7.0g. Last change: 2006 May 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1429,8 +1429,9 @@ value action ~ "c" automatic formatting for comments, but not text (good for C code) "tc" automatic formatting for text and comments -Note that when 'textwidth' is 0, Vim does no formatting anyway (but does -insert comment leaders according to the 'comments' option). +Note that when 'textwidth' is 0, Vim does no automatic formatting anyway (but +does insert comment leaders according to the 'comments' option). An exception +is when the 'a' flag is present. |auto-format| Note that when 'paste' is on, Vim does no formatting at all. @@ -1485,6 +1486,9 @@ editing text paragraphs. A few hints on how to use this: - Add the 'c' flag to only auto-format comments. Useful in source code. +- Set 'textwidth' to the desired width. If it is zero then 79 is used, or the + width of the screen if this is smaller. + And a few warnings: - When part of the text is not properly separated in paragraphs, making diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 3696c8aa81..97940895b8 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.0g. Last change: 2006 May 04 +*eval.txt* For Vim version 7.0g. Last change: 2006 May 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2346,12 +2346,13 @@ exists({expr}) The result is a Number, which is non-zero if {expr} is exists("##ColorScheme") < There must be no space between the symbol (&/$/*/#) and the name. - Trailing characters that can't be part of the name are often - ignored, but don't depend on it, it may change in the future! - Example: > - exists("*strftime()") -< This currently works, but it should really be: > - exists("*strftime") + There must be no extra characters after the name, although in + a few cases this is ignored. That may become more strict in + the future, thus don't count on it! + Working example: > + exists(":make") +< NOT working example: > + exists(":make install") < Note that the argument must be a string, not the name of the variable itself. For example: > @@ -2678,21 +2679,25 @@ getbufvar({expr}, {varname}) *getbufvar()* :echo "todo myvar = " . getbufvar("todo", "myvar") < getchar([expr]) *getchar()* - Get a single character from the user. If it is an 8-bit - character, the result is a number. Otherwise a String is - returned with the encoded character. For a special key it's a - sequence of bytes starting with 0x80 (decimal: 128). + Get a single character from the user or input stream. If [expr] is omitted, wait until a character is available. If [expr] is 0, only get a character when one is available. + Return zero otherwise. If [expr] is 1, only check if a character is available, it is - not consumed. If one is available a non-zero - number is returned. For a one-byte character - it is the character itself. - If a normal character available, it is returned as a Number. - Use nr2char() to convert it to a String. - The returned value is zero if no character is available. - The returned value is a string of characters for special keys - and when a modifier (shift, control, alt) was used. + not consumed. Return zero if no character available. + + Without {expr} and when {expr} is 0 a whole character or + special key is returned. If it is an 8-bit character, the + result is a number. Use nr2char() to convert it to a String. + Otherwise a String is returned with the encoded character. + For a special key it's a sequence of bytes starting with 0x80 + (decimal: 128). The returned value is also a String when a + modifier (shift, control, alt) was used that is not included + in the character. + + When {expr} is 1 only the first byte is returned. For a + one-byte character it is the character itself. + There is no prompt, you will somehow have to make clear to the user that a character has to be typed. There is no mapping for the character. diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt index 788143af7b..79ae5b9dba 100644 --- a/runtime/doc/help.txt +++ b/runtime/doc/help.txt @@ -1,4 +1,4 @@ -*help.txt* For Vim version 7.0g. Last change: 2006 May 04 +*help.txt* For Vim version 7.0g. Last change: 2006 May 05 VIM - main help file k @@ -202,6 +202,12 @@ LOCAL ADDITIONS: *local-additions* |test.txt| Testing the hélp cömmånd nôw |typecorr.txt| Plugin for correcting typing mistakes |helpp.txt| Dummy line to avoid an error message +|cecutil.txt| DrChip's Utilities Jun 11, 2004 +|example.txt| Example for a locally added help file +|matchit.txt| Extended "%" matching +|test.txt| Testing the hélp cömmånd nôw +|typecorr.txt| Plugin for correcting typing mistakes +|helpp.txt| Dummy line to avoid an error message ------------------------------------------------------------------------------ *bars* Bars example @@ -210,7 +216,7 @@ Now that you've jumped here with CTRL-] or a double mouse click, you can use CTRL-T, CTRL-O, g, or to go back to where you were. Note that tags are within | characters, but when highlighting is enabled these -are hidden. That makes it easier to read the command. +are hidden. That makes it easier to read a command. Anyway, you can use CTRL-] on any word, also when it is not within |, and Vim will try to find help for it. diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt index 48d4550236..97e964e736 100644 --- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.0g. Last change: 2006 May 03 +*insert.txt* For Vim version 7.0g. Last change: 2006 May 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1020,8 +1020,9 @@ items: info more information about the item, can be displayed in a preview window kind single letter indicating the type of completion - icase when non-zero case is to be ignored; when omitted - the 'ignorecase' option is used + icase when non-zero case is to be ignored when comparing + items to be equal; when omitted zero is used, thus + items that only differ in case are added dup when non-zero this match will be added even when an item with the same word is already present. diff --git a/runtime/ftplugin/ruby.vim b/runtime/ftplugin/ruby.vim index 40d1c5540b..66cfcc7876 100644 --- a/runtime/ftplugin/ruby.vim +++ b/runtime/ftplugin/ruby.vim @@ -1,6 +1,6 @@ " Vim filetype plugin " Language: Ruby -" Maintainer: Gavin Sinclair +" Maintainer: Gavin Sinclair " Info: $Id$ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site @@ -38,7 +38,8 @@ if exists("loaded_matchit") && !exists("b:match_words") \ '\%(\%(^\|;\)\s*\)\@<=\' . \ '\)' . \ ':' . - \ '\%(\%(\.\|\:\:\)\s*\|\:\)\@' + \ '\%(\%(\.\|\:\:\)\s*\|\:\)\@' . + \ ',{:},\[:\],(:)' let b:match_skip = \ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" . diff --git a/runtime/indent/html.vim b/runtime/indent/html.vim index cfea7d85e6..be34409552 100644 --- a/runtime/indent/html.vim +++ b/runtime/indent/html.vim @@ -1,6 +1,7 @@ " Description: html indenter " Author: Johannes Zellner " Last Change: Tue, 27 Apr 2004 10:28:39 CEST +" Restoring 'cpo' and 'ic' added by Bram 2006 May 5 " Globals: g:html_indent_tags -- indenting tags " g:html_indent_strict -- inhibit 'O O' elements " g:html_indent_strict_table -- inhibit 'O -' elements @@ -116,6 +117,7 @@ endif delfun HtmlIndentPush +let s:cpo_save = &cpo set cpo-=C " [-- count indent-increasing tags of line a:lnum --] @@ -183,6 +185,9 @@ fun! HtmlIndentGet(lnum) \ || 0 < searchpair('\c
', '', '\c
', 'nWb') \ || 0 < searchpair('\c
', '', '\c
', 'nW') " we're in a line with or inside
 ... 
+ if restore_ic == 0 + setlocal noic + endif return -1 endif @@ -192,6 +197,9 @@ fun! HtmlIndentGet(lnum) \ || 0 < searchpair(js, '', '', 'nW') " we're inside javascript if getline(lnum) !~ js && getline(a:lnum) != '' + if restore_ic == 0 + setlocal noic + endif return cindent(a:lnum) endif endif @@ -202,6 +210,9 @@ fun! HtmlIndentGet(lnum) " starting
 to restore the indent.
 	let preline = prevnonblank(search('\c
', 'bW') - 1)
 	if preline > 0
+	    if restore_ic == 0
+	      setlocal noic
+	    endif
 	    return indent(preline)
 	endif
     endif
@@ -216,4 +227,7 @@ fun! HtmlIndentGet(lnum)
     return indent(lnum) + (&sw * ind)
 endfun
 
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
 " [-- EOF /indent/html.vim --]
diff --git a/src/edit.c b/src/edit.c
index 2ff1722739..e298a8c389 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -2806,7 +2806,7 @@ ins_compl_files(count, files, thesaurus, flags, regmatch, buf, dir)
 			ptr = find_word_end(ptr);
 		    add_r = ins_compl_add_infercase(regmatch->startp[0],
 					  (int)(ptr - regmatch->startp[0]),
-						     p_ic, files[i], *dir, 0);
+						     FALSE, files[i], *dir, 0);
 		    if (thesaurus)
 		    {
 			char_u *wstart;
@@ -2842,7 +2842,7 @@ ins_compl_files(count, files, thesaurus, flags, regmatch, buf, dir)
 				ptr = find_word_end(ptr);
 			    add_r = ins_compl_add_infercase(wstart,
 				    (int)(ptr - wstart),
-				    p_ic, files[i], *dir, 0);
+				    FALSE, files[i], *dir, 0);
 			}
 		    }
 		    if (add_r == OK)
@@ -3534,7 +3534,7 @@ ins_compl_add_tv(tv, dir)
     int		dir;
 {
     char_u	*word;
-    int		icase = p_ic;
+    int		icase = FALSE;
     int		dup = FALSE;
     char_u	*(cptext[CPT_COUNT]);
 
@@ -3753,7 +3753,7 @@ ins_compl_get_exp(ini)
 		    TAG_INS_COMP | (ctrl_x_mode ? TAG_VERBOSE : 0),
 		    TAG_MANY, curbuf->b_ffname) == OK && num_matches > 0)
 	    {
-		ins_compl_add_matches(num_matches, matches, p_ic);
+		ins_compl_add_matches(num_matches, matches, FALSE);
 	    }
 	    p_ic = save_p_ic;
 	    break;
@@ -3928,7 +3928,7 @@ ins_compl_get_exp(ini)
 			    continue;
 		    }
 		}
-		if (ins_compl_add_infercase(ptr, len, p_ic,
+		if (ins_compl_add_infercase(ptr, len, FALSE,
 				 ins_buf == curbuf ? NULL : ins_buf->b_sfname,
 					   0, flags) != NOTDONE)
 		{
@@ -5818,7 +5818,7 @@ check_auto_format(end_insert)
  */
     int
 comp_textwidth(ff)
-    int		ff;	/* force formatting (for "Q" command) */
+    int		ff;	/* force formatting (for "gq" command) */
 {
     int		textwidth;
 
diff --git a/src/gui_gtk.c b/src/gui_gtk.c
index 0da144fc97..397b45180d 100644
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -2221,16 +2221,6 @@ dialog_key_press_event_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
     DialogInfo *di = (DialogInfo *)data;
 
-#ifndef HAVE_GTK2
-    /* Ignore hitting "Enter" if there is no default button. */
-    if (event->keyval == GDK_Return)
-    {
-	if (!di->ignore_enter)
-	    gtk_dialog_response(di->dialog, GTK_RESPONSE_ACCEPT);
-	return TRUE;
-    }
-#endif
-
     /* Close the dialog when hitting "Esc". */
     if (event->keyval == GDK_Escape)
     {
diff --git a/src/screen.c b/src/screen.c
index f57adc04db..222cd32a0c 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2626,6 +2626,9 @@ win_line(wp, lnum, startrow, endrow, nochange)
     int		prev_c = 0;		/* previous Arabic character */
     int		prev_c1 = 0;		/* first composing char for prev_c */
 #endif
+#if defined(FEAT_DIFF) || defined(LINE_ATTR)
+    int		did_line_attr = 0;
+#endif
 
     /* draw_state: items that are drawn in sequence: */
 #define WL_START	0		/* nothing done yet */
@@ -4133,6 +4136,13 @@ win_line(wp, lnum, startrow, endrow, nochange)
 		    /* Highlight until the right side of the window */
 		    c = ' ';
 		    --ptr;	    /* put it back at the NUL */
+
+		    /* Remember we do the char for line highlighting. */
+		    ++did_line_attr;
+
+		    /* don't do search HL for the rest of the line */
+		    if (line_attr != 0 && char_attr == search_attr && col > 0)
+			char_attr = line_attr;
 # ifdef FEAT_DIFF
 		    if (diff_hlf == HLF_TXD)
 		    {
@@ -4224,22 +4234,34 @@ win_line(wp, lnum, startrow, endrow, nochange)
 	}
 
 	/*
-	 * At end of the text line.
+	 * At end of the text line or just after the last character.
 	 */
-	if (c == NUL)
+	if (c == NUL
+#if defined(FEAT_DIFF) || defined(LINE_ATTR)
+		|| did_line_attr == 1
+#endif
+		)
 	{
+#ifdef FEAT_SEARCH_EXTRA
+	    long prevcol = (long)(ptr - line) - (c == NUL);
+#endif
+
 	    /* invert at least one char, used for Visual and empty line or
 	     * highlight match at end of line. If it's beyond the last
 	     * char on the screen, just overwrite that one (tricky!)  Not
 	     * needed when a '$' was displayed for 'list'. */
 	    if (lcs_eol == lcs_eol_one
-		    && ((area_attr != 0 && vcol == fromcol)
+		    && ((area_attr != 0 && vcol == fromcol && c == NUL)
 #ifdef FEAT_SEARCH_EXTRA
 			/* highlight 'hlsearch' match at end of line */
-			|| (ptr - line) - 1 == (long)search_hl.startcol
-			|| (ptr - line) - 1 == (long)match_hl[0].startcol
-			|| (ptr - line) - 1 == (long)match_hl[1].startcol
-			|| (ptr - line) - 1 == (long)match_hl[2].startcol
+			|| ((prevcol == (long)search_hl.startcol
+				|| prevcol == (long)match_hl[0].startcol
+				|| prevcol == (long)match_hl[1].startcol
+				|| prevcol == (long)match_hl[2].startcol)
+# if defined(FEAT_DIFF) || defined(LINE_ATTR)
+			    && did_line_attr <= 1
+# endif
+			   )
 #endif
 		       ))
 	    {
@@ -4297,7 +4319,13 @@ win_line(wp, lnum, startrow, endrow, nochange)
 		    ++col;
 		++vcol;
 	    }
+	}
 
+	/*
+	 * At end of the text line.
+	 */
+	if (c == NUL)
+	{
 #ifdef FEAT_SYN_HL
 	    /* Highlight 'cursorcolumn' past end of the line. */
 	    if (wp->w_p_wrap)
diff --git a/src/search.c b/src/search.c
index 0e535ab228..a8a390e1f7 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4871,7 +4871,7 @@ search_line:
 			goto exit_matched;
 		}
 
-		add_r = ins_compl_add_infercase(aux, i, p_ic,
+		add_r = ins_compl_add_infercase(aux, i, FALSE,
 			curr_fname == curbuf->b_fname ? NULL : curr_fname,
 			dir, reuse);
 		if (add_r == OK)
@@ -5110,7 +5110,7 @@ show_pat_in_path(line, type, did_show, action, fp, lnum, count)
 
     if (did_show)
 	msg_putchar('\n');	/* cursor below last one */
-    else
+    else if (!msg_silent)
 	gotocmdline(TRUE);	/* cursor at status line */
     if (got_int)		/* 'q' typed at "--more--" message */
 	return;
diff --git a/src/testdir/test60.in b/src/testdir/test60.in
index 2c414b38ef..d5a0d7c28c 100644
--- a/src/testdir/test60.in
+++ b/src/testdir/test60.in
@@ -18,6 +18,8 @@ endfunction
 
     " valid autocmd group
     let test_cases += [['#myagroup', 1]]
+    " valid autocmd group with garbage
+    let test_cases += [['#myagroup+b', 0]]
     " Valid autocmd group and event
     let test_cases += [['#myagroup#BufEnter', 1]]
     " Valid autocmd group, event and pattern
@@ -51,6 +53,8 @@ endfunction
     let test_cases += [['&textwidth', 1]]
     " Existing and working option (short form)
     let test_cases += [['&tw', 1]]
+    " Existing and working option with garbage
+    let test_cases += [['&tw-', 0]]
     " Global option
     let test_cases += [['&g:errorformat', 1]]
     " Local option
@@ -64,6 +68,8 @@ endfunction
 
     " Existing and working option (long form)
     let test_cases += [['+incsearch', 1]]
+    " Existing and working option with garbage
+    let test_cases += [['+incsearch!1', 0]]
     " Existing and working option (short form)
     let test_cases += [['+is', 1]]
     " Existing option that is hidden.
@@ -77,8 +83,12 @@ endfunction
 
     " Valid internal function
     let test_cases += [['*bufnr', 1]]
+    " Valid internal function with ()
+    let test_cases += [['*bufnr()', 1]]
     " Non-existing internal function
     let test_cases += [['*myxyzfunc', 0]]
+    " Valid internal function with garbage
+    let test_cases += [['*bufnr&6', 0]]
 
     " Valid user defined function
     let test_cases += [['*TestExists', 1]]
@@ -100,6 +110,14 @@ endfunction
 	echo "FAILED"
     endif
 
+    " Valid internal command (full match) with garbage
+    echo ':edit/a: 0'
+    if exists(':edit/a') == 0
+	echo "OK"
+    else
+	echo "FAILED"
+    endif
+
     " Valid internal command (partial match)
     echo ':q: 1'
     if exists(':q') == 1
@@ -171,6 +189,15 @@ endfunction
 	echo "FAILED"
     endif
 
+    " Valid local variable with garbage
+    let local_var = 1
+    echo 'local_var%n: 0'
+    if !exists('local_var%n')
+	echo "OK"
+    else
+	echo "FAILED"
+    endif
+
     " Non-existing local variable
     unlet local_var
     echo 'local_var: 0'
@@ -189,6 +216,30 @@ endfunction
 	echo "FAILED"
     endif
 
+    " Valid local list item
+    echo 'local_list[1]: 1'
+    if exists('local_list[1]')
+	echo "OK"
+    else
+	echo "FAILED"
+    endif
+
+    " Valid local list item with garbage
+    echo 'local_list[1]+5: 0'
+    if !exists('local_list[1]+5')
+	echo "OK"
+    else
+	echo "FAILED"
+    endif
+
+    " Invalid local list item
+    echo 'local_list[2]: 0'
+    if !exists('local_list[2]')
+	echo "OK"
+    else
+	echo "FAILED"
+    endif
+
     " Non-existing local list
     unlet local_list
     echo 'local_list: 0'
@@ -245,6 +296,14 @@ endfunction
 	echo "FAILED"
     endif
 
+    " Existing global variable with garbage
+    echo 'g:global_var-n: 1'
+    if !exists('g:global_var-n')
+	echo "OK"
+    else
+	echo "FAILED"
+    endif
+
     " Non-existing global variable
     unlet g:global_var
     echo 'g:global_var: 0'
diff --git a/src/version.h b/src/version.h
index 6323f460a8..389219d493 100644
--- a/src/version.h
+++ b/src/version.h
@@ -35,6 +35,6 @@
  */
 #define VIM_VERSION_NODOT	"vim70g"
 #define VIM_VERSION_SHORT	"7.0g"
-#define VIM_VERSION_MEDIUM	"7.0g03 BETA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0g03 BETA (2006 May 4)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0g03 BETA (2006 May 4, compiled "
+#define VIM_VERSION_MEDIUM	"7.0g04 BETA"
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0g04 BETA (2006 May 5)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0g04 BETA (2006 May 5, compiled "