# HG changeset patch # User vimboss # Date 1118959196 0 # Node ID 18f024844150562a9e56522edcad3fc1d5c257e4 # Parent d5e895294dce3a14039859b36f63f21cd1eb0376 updated for version 7.0086 diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt --- a/runtime/doc/repeat.txt +++ b/runtime/doc/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 +*repeat.txt* For Vim version 7.0aa. Last change: 2005 Jun 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -290,7 +290,7 @@ first line has something like ":map the first line ends in a , but following ones don't, you will get an error message, because the from the first lines will be lost. -Macintosh: Files that are read with ":source" normally have s. +Mac Classic: Files that are read with ":source" normally have s. These always work. If you are using a file with s (for example, a file made on Unix), this will be recognized if 'fileformats' is not empty and the first line does not end in a . Be careful not to use a file with diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt --- a/runtime/doc/spell.txt +++ b/runtime/doc/spell.txt @@ -1,4 +1,4 @@ -*spell.txt* For Vim version 7.0aa. Last change: 2005 Jun 14 +*spell.txt* For Vim version 7.0aa. Last change: 2005 Jun 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -25,9 +25,9 @@ This command switches on spell checking: This switches on the 'spell' option and specifies to check for US English. The words that are not recognized are highlighted with one of these: - SpellBad word not recognized - SpellRare rare word - SpellLocal wrong spelling for selected region + SpellBad word not recognized |hl-SpellBad| + SpellRare rare word |hl-SpellRare| + SpellLocal wrong spelling for selected region |hl-SpellLocal| Vim only checks words for spelling, there is no grammar check. @@ -63,9 +63,10 @@ zw Add word under the cursor as a wron 'spellfile'. In Visual mode the selected characters are added as a word (including white space!). - *:spellg* *:spellgood* -:spellg[ood] {word} Add [word} as a good word to 'spellfile'. + *:spe* *:spellgood* +:spe[llgood] {word} Add [word} as a good word to 'spellfile'. + *:spellw* *:spellwrong* :spellw[rong] {word} Add [word} as a wrong (bad) word to 'spellfile'. After adding a word to 'spellfile' its associated ".spl" file will @@ -117,7 +118,7 @@ comes in (at least) these variants: en_us USA Words that are not used in one region but are used in another region are -highlighted with |SpellLocal|. +highlighted with SpellLocal |hl-SpellLocal|. Always use lowercase letters for the language and region names. @@ -223,7 +224,7 @@ find them here: http://lingucomponent.openoffice.org/spell_dic.html You can also use a plain word list. -:mksp[ell] [-ascii] {outname} {inname} ... *:mksp* *:mkspell* +:mksp[ell][!] [-ascii] {outname} {inname} ... *:mksp* *:mkspell* Generate a Vim spell file word lists. Example: > :mkspell nl nl_NL.words < @@ -233,6 +234,9 @@ You can also use a plain word list. {outname}.{encoding}.spl. {encoding} is the value of the 'encoding' option. + When the output file already exists [!] must be added + to overwrite it. + When the [-ascii] argument is present, words with non-ascii characters are skipped. The resulting file ends in "ascii.spl". diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 7.0aa. Last change: 2005 Jun 14 +*todo.txt* For Vim version 7.0aa. Last change: 2005 Jun 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -30,6 +30,8 @@ be worked on, but only if you sponsor Vi *known-bugs* -------------------- Known bugs and current work ----------------------- +synID() no longer works. + Range(0) should return an empty list (Servatius Brandt). :let @= 'asdf' gives confusing error message. Make @= writable? @@ -77,6 +79,9 @@ changed. Include new PHP indent script from John Wellesz? http://www.vim.org/scripts/download_script.php?src_id=4330 +In Vim indenting use synID() to avoid recognizing "|en" in a string as +"|endif". + autoload: - Add a Vim script in $VIMRUNTIME/tools that takes a file with a list of script names and a help file and produces a script that can be sourced to @@ -88,6 +93,9 @@ autoload: helpfile doc/myscript.txt For the "helpfile" item ":helptags" is run. +For List comparing, consider [4] and ['4'] different? (Servatius Brandt) +Also allows strict comparing for ordinary variables. + Patch to alternate fold highlighting. (Anthony Iano-Fletcher, 2005 May 12) More levels? @@ -105,9 +113,18 @@ PLANNED FOR VERSION 7.0: - Code for making suggestions: - Aspell has the "special" character, useful? - The score is a bit wrong for substituting multi-byte characters. + At the head byte remember how may bytes are still to follow, do + the scoring at the tail byte. But don't even try when the score + plus the minimal penalty (similar char) goes over maximum. - similar_chars() is too slow. - - Swapping works with bytes instead of characters. - - The sound-folding doesn't work for multi-byte characters. + use a lookuptable for single-byte + use a hashtable for multi-byte + support letter appearing in several lists? + - When putting map string in .spl file check for duplicate chars. + - GUI: Selecting text doesn't work at the prompt. + - Should "z?" replacement be redo-able with "."? + - The sound-folding doesn't work for multi-byte characters. It's + very slow too. Prepare the table (remove alternatives)? - Also put list of word characters in word list file. Otherwise the one for Italian may differ from the one used for English. - Make "en-rare" spell file. @@ -182,6 +199,7 @@ PLANNED FOR VERSION 7.0: - Put the list of choices right under the place where they would be inserted. - Pre-expand abbreviations, show which abbrevs would match? + - Completion in .NET framework SharpDevelop: http://www.icsharpcode.net - UNDO TREE: keep all states of the text, don't delete undo info. When making a change, instead of clearing any future undo (thus redo) info, make a new branch. @@ -288,7 +306,7 @@ Don't count it in only_one_window(). (Al Win32: Patch for Korean IME. (Yusung, 2005 March 21) -When "= evaluation results in a list, use it as a sequence of lines. +When "= evaluation results in a List, use it as a sequence of lines. Support ":set syntax=cpp.doxygen"? Suggested patch by Michael Geddes (9 Aug 2004). Should also work for 'filetype'. diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt --- a/runtime/doc/version7.txt +++ b/runtime/doc/version7.txt @@ -1,4 +1,4 @@ -*version7.txt* For Vim version 7.0aa. Last change: 2005 Jun 13 +*version7.txt* For Vim version 7.0aa. Last change: 2005 Jun 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -657,6 +657,10 @@ Grahame Bowland and Evan Webb. Added ":scriptnames" to bugreport.vim, so that we can see what plugins were used. +Win32: If the user changes the setting for the number of lines a scroll wheel +click scrolls it is now used immediately. Previously Vim would need to be +restarted. + ============================================================================== COMPILE TIME CHANGES *compile-changes-7* diff --git a/runtime/filetype.vim b/runtime/filetype.vim --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: Bram Moolenaar -" Last Change: 2005 May 20 +" Last Change: 2005 Jun 16 " Listen very carefully, I will say this only once if exists("did_load_filetypes") @@ -543,6 +543,9 @@ au BufNewFile,BufRead *.exp setf expec " Exports au BufNewFile,BufRead exports setf exports +" Factor +au BufNewFile,BufRead *.factor setf factor + " Fetchmail RC file au BufNewFile,BufRead .fetchmailrc setf fetchmail diff --git a/runtime/indent/pascal.vim b/runtime/indent/pascal.vim --- a/runtime/indent/pascal.vim +++ b/runtime/indent/pascal.vim @@ -1,173 +1,173 @@ -" Vim indent file -" Language: Pascal -" Maintainer: Neil Carter -" Created: 2004 Jul 13 -" Last Change: 2005 Jun 07 -" TODO: Reduce indentation on line after a statement that flowed across -" two lines (e.g. parameter list closed on second line). Also, increase -" indent of a becomes-statement that flows onto second line. - -" Only load this indent file when no other was loaded. -if exists("b:did_indent") - finish -endif -let b:did_indent = 1 - -setlocal indentexpr=GetPascalIndent(v:lnum) -" Appending an & to an option sets it to its default value. -setlocal indentkeys& -setlocal indentkeys+=~end;,=~const,=~type,=~var,=~begin,=~repeat,=~until,=~for -setlocal indentkeys+=~program,=~function,=~procedure,=~object,=~private -setlocal indentkeys+=~record,=~if,=~else,=~case - -if exists("*GetPascalIndent") - finish -endif - - -function s:GetPrevLineNum( line_num ) - - " Skip over comments and conditional directives - let SKIP_LINES = '^\s*\((\*\)\|\(\*\ \)\|\(\*)\)\|\({\$\)' - - let nline = a:line_num - while nline > 0 - let nline = prevnonblank(nline-1) - if getline(nline) !~? SKIP_LINES - break - endif - endwhile - -" call input( "nline = ".nline ) - - return nline - -endfunction - - -function! GetPascalIndent( line_num ) - if a:line_num == 0 - return 0 - endif - - " If in the middle of a three-part comment - if getline( a:line_num ) =~ '^\s*\*\ ' - return indent( a:line_num ) - endif - - " We have to subtract one to start on the line before the current - " one. Otherwise, prevnonblank() returns the current line! - let prev_line_num = s:GetPrevLineNum( a:line_num ) - let prev_line = getline( prev_line_num ) - let indnt = indent( prev_line_num ) - - let this_line = getline( a:line_num ) - - " At the start of a block, we have to indent the newly-created line - " based on the previous line. - " =~ means matches a regular expression - " a question mark after =~ means ignore case (# means match case) - " const, type, var should always appear at the start of a line, but - " begin can appear anywhere in the line. - " if one of the following keywords appear in the previous line with - " nothing before it but optional whitespace, and nothing after it. - " Has to be end of line at end to show this is not a routine - " parameter list. Otherwise, you'd end up with cascading vars. - - " These words appear alone on a line (apart from whitespace). - if prev_line =~ '^\s*\(const\|var\|begin\|repeat\|private\)$' - " Place an & before an option to obtain its value. - let indnt = indnt + &shiftwidth - endif - - " Words preceded by optional whitespace and followed by anything. - if prev_line =~ '^\s*\(for\|if\|else\|case\)' - " Place an & before an option to obtain its value. - let indnt = indnt + &shiftwidth - " if this is a multistatement block then we need to align the - " begin with the previous line. - if this_line =~ '^\s*begin' - let indnt = indnt - &shiftwidth - endif - endif - " These words may have text before them on the line (hence the .*). - if prev_line =~ '^.*\s*\<\(object\|record\)\>$' - let indnt = indnt + &shiftwidth - endif - " If we have opened a bracket and the contents spills over one line, - " then indent one level beyond the bracket's first line. RE = an - " opening bracket followed by any amount of anything other than a - " closing bracket and then the end-of-line. If we didn't include the - " end of line, this RE would match even closed brackets, since it - " would match everything up to the closing bracket. - " This test isn't clever enough to handle brackets inside strings or - " comments. - if prev_line =~ '([^*][^)]*$' - let indnt = indnt + &shiftwidth - endif - - " If we just closed a bracket that started on a previous line, then - " unindent. - if prev_line =~ '^[^(]*[^*])' - let indnt = indnt - &shiftwidth - endif - - " At the end of a block, we have to unindent both the current line - " (the 'end;' for instance) and the newly-created line. - if this_line =~ '^\s*\(end;\|until\|else\)' - let indnt = indnt - &shiftwidth - endif - - " Keywords that always appear at the start of a line. - " Problem is that function and procedure keywords should be indented - " if within a class declaration. - if this_line =~ '^\s*\' - let indnt = 0 - endif - if prev_line =~ '^\s*\' - let indnt = &shiftwidth - endif - - " Put conditional compile directives on first column. - if this_line =~ '^\s*{\$' - let indnt = 0 - endif - - return indnt -endfunction - -" TODO: end; should align with the previous (begin/record/object/else). -" "else begin" is the only case where begin does not appear at the start -" of the line. - -" TODO: Don't align with {$IFDEF} - -"Example from vb.vim -" regular expression match, case insensitive -"if previous_line =~? -" start of line, zero or more whitespace -"'^\s* -" start of word -"\< -" -"\( -" begin\| -" \%( -" \%( -" private\|public\|friend -" \) -" \s\+ -" \) -" zero or more of the previous atom -" \= -" \%( -" function\|sub\|property -" \) -" \|select\|case\|default\|if -"\> -" .\{-}\\s*$\|else\|elseif\|do\|for\|while\|enum\|with -"\) -" end of word -"\>' -" let ind = ind + &sw -"endif +" Vim indent file +" Language: Pascal +" Maintainer: Neil Carter +" Created: 2004 Jul 13 +" Last Change: 2005 Jun 15 + + +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentexpr=GetPascalIndent(v:lnum) +setlocal indentkeys& +setlocal indentkeys+==end;,==const,==type,==var,==begin,==repeat,==until,==for +setlocal indentkeys+==program,==function,==procedure,==object,==private +setlocal indentkeys+==record,==if,==else,==case + +if exists("*GetPascalIndent") + finish +endif + + +function! s:GetPrevNonCommentLineNum( line_num ) + + " Skip lines starting with a comment + let SKIP_LINES = '^\s*\(\((\*\)\|\(\*\ \)\|\(\*)\)\|{\|}\)' + + let nline = a:line_num + while nline > 0 + let nline = prevnonblank(nline-1) + if getline(nline) !~? SKIP_LINES + break + endif + endwhile + + return nline +endfunction + + +function! GetPascalIndent( line_num ) + " Line 0 always goes at column 0 + if a:line_num == 0 + return 0 + endif + + let this_codeline = getline( a:line_num ) + + " If in the middle of a three-part comment + if this_codeline =~ '^\s*\*' + return indent( a:line_num ) + endif + + let prev_codeline_num = s:GetPrevNonCommentLineNum( a:line_num ) + let prev_codeline = getline( prev_codeline_num ) + let indnt = indent( prev_codeline_num ) + + " Compiler directives should always go in column zero. + if this_codeline =~ '^\s*{\(\$IFDEF\|\$ELSE\|\$ENDIF\)' + return 0 + endif + + " These items have nothing before or after (not even a comment), and + " go on column 0. Make sure that the ^\s* is followed by \( to make + " ORs work properly, and not include the start of line (this must + " always appear). + " The bracketed expression with the underline is a routine + " separator. This is one case where we do indent comment lines. + if this_codeline =~ '^\s*\((\*\ _\+\ \*)\|\<\(const\|var\)\>\)$' + return 0 + endif + + " These items may have text after them, and go on column 0 (in most + " cases). The problem is that "function" and "procedure" keywords + " should be indented if within a class declaration. + if this_codeline =~ '^\s*\<\(program\|type\|uses\|procedure\|function\)\>' + return 0 + endif + + " BEGIN + " If the begin does not come after "if", "for", or "else", then it + " goes in column 0 + if this_codeline =~ '^\s*begin\>' && prev_codeline !~ '^\s*\<\(if\|for\|else\)\>' + return 0 + endif + + " These keywords are indented once only. + if this_codeline =~ '^\s*\<\(private\)\>' + return &shiftwidth + endif + + " If the PREVIOUS LINE contained these items, the current line is + " always indented once. + if prev_codeline =~ '^\s*\<\(type\|uses\)\>' + return &shiftwidth + endif + + " These keywords are indented once only. Possibly surrounded by + " other chars. + if this_codeline =~ '^.\+\<\(object\|record\)\>' + return &shiftwidth + endif + + " If the previous line was indenting... + if prev_codeline =~ '^\s*\<\(for\|if\|case\|else\|end\ else\)\>' + " then indent. + let indnt = indnt + &shiftwidth + " BUT... if this is the start of a multistatement block then we + " need to align the begin with the previous line. + if this_codeline =~ '^\s*begin\>' + return indnt - &shiftwidth + endif + + " We also need to keep the indentation level constant if the + " whole if-then statement was on one line. + if prev_codeline =~ '\.\+' + let indnt = indnt - &shiftwidth + endif + endif + + " PREVIOUS-LINE BEGIN + " If the previous line was an indenting keyword then indent once... + if prev_codeline =~ '^\s*\<\(const\|var\|begin\|repeat\|private\)\>' + " But only if this is another var in a list. + if this_codeline !~ '^\s*var\>' + return indnt + &shiftwidth + endif + endif + + " PREVIOUS-LINE BEGIN + " Indent code after a case statement begin + if prev_codeline =~ '\:\ begin\>' + return indnt + &shiftwidth + endif + + " These words may have text before them on the line (hence the .*) + " but are followed by nothing. Always indent once only. + if prev_codeline =~ '^\(.*\|\s*\)\<\(object\|record\)\>$' + return indnt + &shiftwidth + endif + + " If we just closed a bracket that started on a previous line, then + " unindent. But don't return yet -- we need to check for further + " unindentation (for end/until/else) + if prev_codeline =~ '^[^(]*[^*])' + let indnt = indnt - &shiftwidth + endif + + " At the end of a block, we have to unindent both the current line + " (the "end" for instance) and the newly-created line. + if this_codeline =~ '^\s*\<\(end\|until\|else\)\>' + return indnt - &shiftwidth + endif + + " If we have opened a bracket and it continues over one line, + " then indent once. + " + " RE = an opening bracket followed by any amount of anything other + " than a closing bracket and then the end-of-line. + " + " If we didn't include the end of line, this RE would match even + " closed brackets, since it would match everything up to the closing + " bracket. + " + " This test isn't clever enough to handle brackets inside strings or + " comments. + if prev_codeline =~ '([^*]\=[^)]*$' + return indnt + &shiftwidth + endif + + return indnt +endfunction + diff --git a/runtime/indent/vim.vim b/runtime/indent/vim.vim --- a/runtime/indent/vim.vim +++ b/runtime/indent/vim.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: Vim script " Maintainer: Bram Moolenaar -" Last Change: 2005 Feb 25 +" Last Change: 2005 Jun 16 " Only load this indent file when no other was loaded. if exists("b:did_indent") @@ -51,8 +51,8 @@ function GetVimIndent() endif " If the previous line contains an "end" after a pipe, but not in an ":au" - " command. - if getline(lnum) =~ '|\s*\(ene\@!\)' && getline(lnum) !~ '^\s*au\%[tocmd]' + " command. And not when there is a backslash before the pipe. + if getline(lnum) =~ '[^\\]|\s*\(ene\@!\)' && getline(lnum) !~ '^\s*au\%[tocmd]' let ind = ind - &sw endif diff --git a/src/gui_w32.c b/src/gui_w32.c --- a/src/gui_w32.c +++ b/src/gui_w32.c @@ -498,6 +498,18 @@ init_mouse_wheel(void) _OnScroll(hwnd, hwndCtl, zDelta >= 0 ? SB_PAGEUP : SB_PAGEDOWN, 0); } +/* + * Invoked when a setting was changed. + */ + static LRESULT CALLBACK +_OnSettingChange(UINT n) +{ + if (n == SPI_SETWHEELSCROLLLINES) + SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, + &mouse_scroll_lines, 0); + return 0; +} + #if 0 /* disabled, a gap appears below and beside the window, and the window can be moved (in a strange way) */ /* @@ -686,6 +698,10 @@ init_mouse_wheel(void) _OnMouseWheel(hwnd, HIWORD(wParam)); break; + /* Notification for change in SystemParametersInfo() */ + case WM_SETTINGCHANGE: + return _OnSettingChange((UINT)wParam); + #ifdef FEAT_TOOLBAR case WM_NOTIFY: switch (((LPNMHDR) lParam)->code) diff --git a/src/proto/misc2.pro b/src/proto/misc2.pro --- a/src/proto/misc2.pro +++ b/src/proto/misc2.pro @@ -94,4 +94,6 @@ void sort_strings __ARGS((char_u **files int pathcmp __ARGS((const char *p, const char *q, int maxlen)); char_u *parse_list_options __ARGS((char_u *option_str, option_table_T *table, int table_size)); int filewritable __ARGS((char_u *fname)); +int emsg3 __ARGS((char_u *s, char_u *a1, char_u *a2)); +int emsgn __ARGS((char_u *s, long n)); /* vim: set ft=c : */ diff --git a/src/search.c b/src/search.c --- a/src/search.c +++ b/src/search.c @@ -2224,7 +2224,7 @@ check_linecomment(line) int instr = FALSE; /* inside of string */ p = line; /* scan from start */ - while ((p = vim_strpbrk(p, "\";")) != NULL) + while ((p = vim_strpbrk(p, (char_u *)"\";")) != NULL) { if (*p == '"') { diff --git a/src/version.h b/src/version.h --- a/src/version.h +++ b/src/version.h @@ -36,5 +36,5 @@ #define VIM_VERSION_NODOT "vim70aa" #define VIM_VERSION_SHORT "7.0aa" #define VIM_VERSION_MEDIUM "7.0aa ALPHA" -#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 14)" -#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 14, compiled " +#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 16)" +#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 16, compiled "