# HG changeset patch # User vimboss # Date 1124921771 0 # Node ID 73f10d8124f48510e0ad1468ee9e29c010009621 # Parent 381caa3f6ea810707cd767381efdb26a3c65e4b8 updated for version 7.0136 diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 +*filetype.txt* For Vim version 7.0aa. Last change: 2005 Aug 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -401,7 +401,7 @@ Local mappings: Global mappings: NOTE: The global mappings are accessed by sourcing the ftplugin/changelog.vim file first, e.g. with > - runtime ftplugin/man.vim + runtime ftplugin/changelog.vim < in your |.vimrc|. o Switches to the ChangeLog buffer opened for the current directory, or opens it in a new buffer if it 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 Aug 23 +*spell.txt* For Vim version 7.0aa. Last change: 2005 Aug 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -645,7 +645,11 @@ The first line contains the number of wo an error message if it's not there. *E760* What follows is one word per line. There should be no white space before or -after the word. +after the word. After the word there is an optional slash and flags. Most of +these flags are letters that indicate the affixes that can be used with this +word. These are specified with SFX and PFX lines in the .aff file. See the +Myspell documentation. Vim allows using other flag types with the FLAG item +in the affix file |spell-FLAG|. When the word only has lower-case letters it will also match with the word starting with an upper-case letter. @@ -671,11 +675,6 @@ any character in a word. When checking when it appears with a non-word character before and after it. For Myspell a word starting with a non-word character probably won't work. -After the word there is an optional slash and flags. Most of these flags are -letters that indicate the affixes that can be used with this word. These are -specified with SFX and PFX lines in the .aff file. See the Myspell -documentation. - In line 12 the word "TCP/IP" is defined. Since the slash has a special meaning the comma is used instead. This is defined with the SLASH item in the affix file, see |spell-SLASH|. Note that without this SLASH item the @@ -767,6 +766,29 @@ These characters are defined with MIDWOR MIDWORD '- ~ +FLAG TYPES *spell-FLAG* + +Flags are used to specify the affixes that can be used with a word and for +other properties of the word. Normally single-character flags are used. This +limits the number of possible flags, especially for 8-bit encodings. The FLAG +item can be used if more affixes are to be used. Possible values: + + FLAG long use two-character flags + FLAG num use numbers, from 1 up to 65000 + FLAG huh use one-character flags without A-Z and two-character + flags that start with A-Z + +With "FLAG num" the numbers in a list of affixes need to be separated with a +comma: "234,2143,1435". This method is inefficient, but useful if the file is +generated with a program. + +When using "huh" the two-character flags all start with a capital: "Aa", "B1", +"BB", etc. This is useful to use one-character flags for the most common +items and two-character flags for uncommon items. + +Note: When using utf-8 only characters up to 65000 may be used for flags. + + AFFIXES *spell-PFX* *spell-SFX* The usual PFX (prefix) and SFX (suffix) lines are supported (see the Myspell @@ -1065,7 +1087,9 @@ used to make spelling suggestions. The REP k ch ~ REP ch k ~ -The first line specifies the number of REP lines following. Vim ignores it. +The first line specifies the number of REP lines following. Vim ignores the +number, but it must be there. + Don't include simple one-character replacements or swaps. Vim will try these anyway. You can include whole words if you want to, but you might want to use the "file:" item in 'spellsuggest' instead. @@ -1081,7 +1105,8 @@ to prefer suggestions with these letters MAP e ~ MAP u ~ -The first line specifies the number of MAP lines following. Vim ignores it. +The first line specifies the number of MAP lines following. Vim ignores the +number, but the line must be there. Each letter must appear in only one of the MAP items. It's a bit more efficient if the first letter is ASCII or at least one without accents. diff --git a/runtime/doc/tags b/runtime/doc/tags --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -6389,35 +6389,36 @@ spec_chglog_release_info pi_spec.txt /*s special-buffers windows.txt /*special-buffers* speed-up tips.txt /*speed-up* spell spell.txt /*spell* +spell-BAD spell.txt /*spell-BAD* spell-CMP spell.txt /*spell-CMP* spell-COMPOUNDFLAG spell.txt /*spell-COMPOUNDFLAG* spell-COMPOUNDFLAGS spell.txt /*spell-COMPOUNDFLAGS* spell-COMPOUNDMAX spell.txt /*spell-COMPOUNDMAX* spell-COMPOUNDMIN spell.txt /*spell-COMPOUNDMIN* spell-COMPOUNDSYLMAX spell.txt /*spell-COMPOUNDSYLMAX* +spell-FOL spell.txt /*spell-FOL* +spell-KEP spell.txt /*spell-KEP* +spell-LOW spell.txt /*spell-LOW* +spell-MAP spell.txt /*spell-MAP* +spell-NEEDAFFIX spell.txt /*spell-NEEDAFFIX* +spell-NOBREAK spell.txt /*spell-NOBREAK* +spell-PFX spell.txt /*spell-PFX* +spell-PFXPOSTPONE spell.txt /*spell-PFXPOSTPONE* +spell-RAR spell.txt /*spell-RAR* +spell-REP spell.txt /*spell-REP* +spell-SAL spell.txt /*spell-SAL* +spell-SFX spell.txt /*spell-SFX* +spell-SLASH spell.txt /*spell-SLASH* +spell-SOFOFROM spell.txt /*spell-SOFOFROM* +spell-SOFOTO spell.txt /*spell-SOFOTO* spell-SYLLABLE spell.txt /*spell-SYLLABLE* -spell-affix-BAD spell.txt /*spell-affix-BAD* -spell-affix-FOL spell.txt /*spell-affix-FOL* -spell-affix-KEP spell.txt /*spell-affix-KEP* -spell-affix-LOW spell.txt /*spell-affix-LOW* -spell-affix-MAP spell.txt /*spell-affix-MAP* -spell-affix-NEEDAFFIX spell.txt /*spell-affix-NEEDAFFIX* -spell-affix-PFX spell.txt /*spell-affix-PFX* -spell-affix-PFXPOSTPONE spell.txt /*spell-affix-PFXPOSTPONE* -spell-affix-RAR spell.txt /*spell-affix-RAR* -spell-affix-REP spell.txt /*spell-affix-REP* -spell-affix-SAL spell.txt /*spell-affix-SAL* -spell-affix-SFX spell.txt /*spell-affix-SFX* -spell-affix-SLASH spell.txt /*spell-affix-SLASH* -spell-affix-SOFOFROM spell.txt /*spell-affix-SOFOFROM* -spell-affix-SOFOTO spell.txt /*spell-affix-SOFOTO* -spell-affix-UPP spell.txt /*spell-affix-UPP* +spell-UPP spell.txt /*spell-UPP* spell-affix-chars spell.txt /*spell-affix-chars* -spell-affix-compound spell.txt /*spell-affix-compound* spell-affix-mbyte spell.txt /*spell-affix-mbyte* spell-affix-nocomp spell.txt /*spell-affix-nocomp* spell-affix-rare spell.txt /*spell-affix-rare* spell-affix-vim spell.txt /*spell-affix-vim* +spell-compound spell.txt /*spell-compound* spell-dic-format spell.txt /*spell-dic-format* spell-double-scoring spell.txt /*spell-double-scoring* spell-file-format spell.txt /*spell-file-format* 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 Aug 23 +*todo.txt* For Vim version 7.0aa. Last change: 2005 Aug 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -31,13 +31,12 @@ be worked on, but only if you sponsor Vi -------------------- Known bugs and current work ----------------------- Spelling: -- Support flags of two characters, numbers (comma separated) and HUH - flags: [^A-Z], A[^A-Z], ..., Z[^A-Z]? - FLAG long - FLAG num - FLAG mix - Problem: room in idxs[]. Need to translate flags for postponed prefixes and - compound words, these can only be 255. +- Bug: with 'nowrap' spell checking may start halfway a word. + +- Use 'wrapscan' for "[s" and "]s"? + +- Check support of flags of two characters, numbers (comma separated) and HUH. + When using many compound flags, does regexp still work? - Compound word is accepted if nr of words is <= COMPOUNDMAX OR nr of syllables <= COMPOUNDSYLMAX. Specify AND in the affix file? @@ -521,6 +520,9 @@ GTK+ GUI known bugs: 8 GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj Machowski) They are displayed as separate characters. Problem in creating a label? +8 GTK 2: Combining UTF-8 characters are sometimes not drawn properly. + Depends on the font size, "monospace 13" has the problem. Vim seems to do + everything right, must be a GTK bug. Is there a way to work around it? 9 Can't paste a Visual selection from GTK-gvim to vim in xterm or Motif gvim when it is longer than 4000 characters. Works OK from gvim to gvim and vim to vim. Pasting through xterm (using the shift key) also works. 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 Aug 23 +*version7.txt* For Vim version 7.0aa. Last change: 2005 Aug 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1304,4 +1304,7 @@ in an error message while redrawing, whi while it was being used, resulting in a crash. Now don't clear syntax highlighting, disable it with b_syn_error. +Win32: Combining UTF-8 characters were drawn on the previous character. +Could be noticed with a Thai font. + vim:tw=78:ts=8:ft=help:norl: 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 Aug 17 +" Last Change: 2005 Aug 24 " Listen very carefully, I will say this only once if exists("did_load_filetypes") @@ -629,8 +629,8 @@ au BufNewFile,BufRead *.hex,*.h32 setf " Tilde (must be before HTML) au BufNewFile,BufRead *.t.html setf tilde -" HTML (.shtml and .stm for server side, .rhtml for Ruby html) -au BufNewFile,BufRead *.html,*.htm,*.shtml,*.rhtml,*.stm call s:FThtml() +" HTML (.shtml and .stm for server side) +au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm call s:FThtml() " Distinguish between HTML and XHTML fun! s:FThtml() @@ -645,6 +645,8 @@ fun! s:FThtml() setf html endfun +" HTML with Ruby - eRuby +au BufNewFile,BufRead *.rhtml setf eruby " HTML with M4 au BufNewFile,BufRead *.html.m4 setf htmlm4 diff --git a/runtime/syntax/eruby.vim b/runtime/syntax/eruby.vim new file mode 100644 --- /dev/null +++ b/runtime/syntax/eruby.vim @@ -0,0 +1,62 @@ +" Vim syntax file +" Language: eRuby +" Maintainer: Doug Kearns +" Info: $Id$ +" URL: http://vim-ruby.sourceforge.net +" Anon CVS: See above site +" Licence: GPL (http://www.gnu.org) +" Disclaimer: +" This program is distributed in the hope that it will be useful, +" but WITHOUT ANY WARRANTY; without even the implied warranty of +" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +" GNU General Public License for more details. +" ---------------------------------------------------------------------------- + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +if !exists("main_syntax") + let main_syntax = 'eruby' +endif + +if version < 600 + so :p:h/html.vim + syn include @rubyTop :p:h/ruby.vim +else + runtime! syntax/html.vim + unlet b:current_syntax + syn include @rubyTop syntax/ruby.vim +endif + +syn region erubyOneLiner matchgroup=erubyDelimiter start="^\s*\zs%" end="$" contains=@rubyTop,erubyDelimiter keepend +syn region erubyBlock matchgroup=erubyDelimiter start="<%=\=" end="%>" contains=@rubyTop containedin=ALLBUT,erubyComment keepend +syn region erubyComment matchgroup=erubyDelimiter start="<%#" end="%>" keepend + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_eruby_syntax_inits") + if version < 508 + let did_ruby_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink erubyDelimiter Delimiter + HiLink erubyComment Comment + + delcommand HiLink +endif +let b:current_syntax = "eruby" + +if main_syntax == 'eruby' + unlet main_syntax +endif + +" vim: sw=2 sts=2 ts=8 ff=unix nowrap: diff --git a/src/charset.c b/src/charset.c --- a/src/charset.c +++ b/src/charset.c @@ -1542,9 +1542,9 @@ vim_isxdigit(c) #define LATIN1UPPER 'U' /* !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]%_'abcdefghijklmnopqrstuvwxyz{|}~ */ -static char_u latin1flags[256] = " UUUUUUUUUUUUUUUUUUUUUUUUUU llllllllllllllllllllllllll UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUllllllllllllllllllllllll llllllll"; -static char_u latin1upper[256] = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~"; -static char_u latin1lower[256] = " !\"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; +static char_u latin1flags[257] = " UUUUUUUUUUUUUUUUUUUUUUUUUU llllllllllllllllllllllllll UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUllllllllllllllllllllllll llllllll"; +static char_u latin1upper[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~"; +static char_u latin1lower[257] = " !\"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; int vim_islower(c) diff --git a/src/edit.c b/src/edit.c --- a/src/edit.c +++ b/src/edit.c @@ -137,6 +137,7 @@ static void start_arrow __ARGS((pos_T *e #ifdef FEAT_SYN_HL static void check_spell_redraw __ARGS((void)); static void spell_back_to_badword __ARGS((void)); +static int spell_bad_len = 0; /* length of located bad word */ #endif static void stop_insert __ARGS((pos_T *end_insert_pos, int esc)); static int echeck_abbr __ARGS((int)); @@ -3536,8 +3537,11 @@ ins_complete(c) else if (ctrl_x_mode == CTRL_X_SPELL) { #ifdef FEAT_SYN_HL - compl_col = spell_word_start(startcol); - if (compl_col == (colnr_T)startcol) + if (spell_bad_len > 0) + compl_col = curs_col - spell_bad_len; + else + compl_col = spell_word_start(startcol); + if (compl_col >= (colnr_T)startcol) return FAIL; compl_length = (int)curs_col - compl_col; compl_pattern = vim_strnsave(line + compl_col, compl_length); @@ -4806,7 +4810,7 @@ spell_back_to_badword() { pos_T tpos = curwin->w_cursor; - spell_move_to(BACKWARD, TRUE, TRUE); + spell_bad_len = spell_move_to(BACKWARD, TRUE, TRUE); if (curwin->w_cursor.col != tpos.col) start_arrow(&tpos); } diff --git a/src/eval.c b/src/eval.c --- a/src/eval.c +++ b/src/eval.c @@ -13749,22 +13749,16 @@ f_spellbadword(argvars, rettv) typval_T *argvars; typval_T *rettv; { - int attr; - char_u *ptr; int len; rettv->vval.v_string = NULL; rettv->v_type = VAR_STRING; #ifdef FEAT_SYN_HL - /* Find the start of the badly spelled word. */ - if (spell_move_to(FORWARD, TRUE, TRUE) == FAIL) - return; - - /* Get the length of the word and copy it. */ - ptr = ml_get_cursor(); - len = spell_check(curwin, ptr, &attr, NULL); - rettv->vval.v_string = vim_strnsave(ptr, len); + /* Find the start and length of the badly spelled word. */ + len = spell_move_to(FORWARD, TRUE, TRUE); + if (len != 0) + rettv->vval.v_string = vim_strnsave(ml_get_cursor(), len); #endif } diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c --- a/src/gui_gtk_x11.c +++ b/src/gui_gtk_x11.c @@ -5328,6 +5328,9 @@ not_ascii: int cluster_width; int last_glyph_rbearing; int cells = 0; /* cells occupied by current cluster */ +#if 0 + int monospace13 = STRICMP(p_guifont, "monospace 13") == 0; +#endif /* Safety check: pango crashes when invoked with invalid utf-8 * characters. */ @@ -5446,10 +5449,17 @@ not_ascii: * characters the canonical way. That is, setting the * width of the previous glyph to 0. */ glyphs->glyphs[i - 1].geometry.width = 0; - width = cells * gui.char_width * PANGO_SCALE; glyph->geometry.x_offset += MAX(0, width - cluster_width) / 2; +#if 0 + /* Dirty hack: for "monospace 13" font there is a bug that + * draws composing chars in the wrong position. Add + * "width" to the offset to work around that. */ + if (monospace13) + glyph->geometry.x_offset = width; +#endif + glyph->geometry.width = width; } else /* i == 0 "cannot happen" */ 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 Aug 24)" -#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 24, compiled " +#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 25)" +#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 25, compiled "