Compare commits

...

27 Commits

Author SHA1 Message Date
Bram Moolenaar
8a33e74dd2 updated for version 7.2.367
Problem:    "xxd -r -p" doesn't work as documented.
Solution:   Skip white space. (James Vega)
2010-02-17 18:28:41 +01:00
Bram Moolenaar
bacd9da40e updated for version 7.2.366
Problem:    CTRL-B doesn't go back to the first line of the buffer.
Solution:   Avoid an overflow when adding MAXCOL.
2010-02-17 18:20:37 +01:00
Bram Moolenaar
8c83ac3d83 updated for version 7.2.365
Problem:    MS-Windows with MingW: "File->Save As" does not work. (John
            Marriott)
Solution:   Correctly fill in structure size. (Andy Kittner)
2010-02-17 17:34:43 +01:00
Bram Moolenaar
175aa24846 updated for version 7.2.364
Problem:    Can't build gvimext.dll on Win 7 x64 using MinGW (John Marriott)
Solution:   Check if _MSC_VER is defined. (Andy Kittner)
2010-02-17 17:24:27 +01:00
Bram Moolenaar
3a0573acae updated for version 7.2.363
Problem:    Can't dynamically load Perl 5.10.
Solution:   Add the function Perl_croak_xs_usage. (Sergey Khorev)
2010-02-17 16:40:58 +01:00
Bram Moolenaar
33d0b69ab8 updated for version 7.2.362
Problem:    Win64: Vim doesn't work when cross-compiled with MingW libraries.
Solution:   Instead of handling WM_NCCREATE, create wide text area window
            class if the parent window iw side. (Sergey Khorev)
2010-02-17 16:31:32 +01:00
Bram Moolenaar
165641da25 updated for version 7.2.361
Problem:    Ruby 1.9 is not supported.
Solution:   Add Ruby 1.9 support. (Msaki Suketa)
2010-02-17 16:23:09 +01:00
Bram Moolenaar
0b69c73411 updated for version 7.2.360
Problem:    Ruby on MS-Windows: can't use sockets.
Solution:   Call NtInitialize() during initialization. (Ariya Mizutani)
2010-02-17 15:11:50 +01:00
Bram Moolenaar
0ca4b350f0 updated for version 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)
2010-02-11 18:54:43 +01:00
Bram Moolenaar
b4990bf90b updated for version 7.2.358
Problem:    Compiler warnings on VMS. (Zoltan Arpadffy)
Solution:   Pass array itself instead its address.  Return a value.
2010-02-11 18:19:38 +01:00
Bram Moolenaar
0413d48711 updated for version 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)
2010-02-11 17:02:11 +01:00
Bram Moolenaar
6dfc28be25 Updated runtime files. 2010-02-11 14:19:15 +01:00
Bram Moolenaar
cee6a352b2 updated for version 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)
2010-02-03 18:14:49 +01:00
Bram Moolenaar
6427c608e7 updated for version 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)
2010-02-03 17:43:07 +01:00
Bram Moolenaar
990bb661a1 updated for version 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)
2010-02-03 15:48:04 +01:00
Bram Moolenaar
f86f26c06a updated for version 7.2.353
Problem:    No command line completion for ":profile".
Solution:   Complete the subcommand and file name.
2010-02-03 15:14:22 +01:00
Bram Moolenaar
4d526ad35a updated for version 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)
2010-02-03 12:23:24 +01:00
Bram Moolenaar
d21d9a6c61 updated for version 7.2.351
Problem:    Can't build with some compilers.
Solution:   Move the #ifdef outside of a macro.  Cleanup the code.
2010-01-28 22:58:16 +01:00
Bram Moolenaar
c5d5d01ad9 updated for version 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.
2010-01-27 21:05:05 +01:00
Bram Moolenaar
6d1dcffc35 updated for version 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.
2010-01-27 20:26:46 +01:00
Bram Moolenaar
da4d7a92d5 updated for version 7.2.348
Problem:    Unicode double-width characters are not up-to date.
Solution:   Produce the double-width table like the others.
2010-01-27 18:29:26 +01:00
Bram Moolenaar
0dbf720d86 updated for version 7.2.347
Problem:    Crash when executing <expr> mapping redefines that same mapping.
Solution:   Save the values used before evaluating the expression.
2010-01-27 17:31:43 +01:00
Bram Moolenaar
38ef43b262 updated for version 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)
2010-01-27 16:31:13 +01:00
Bram Moolenaar
5075aad6a8 updated for version 7.2.345
Problem:    Tab line is not updated when the value of 'bt' is changed.
Solution:   Call redraw_titles(). (Lech Lorens)
2010-01-27 15:58:13 +01:00
Bram Moolenaar
7ad01410da Add more pathdef.c to .hgignore. 2010-01-20 21:56:50 +01:00
Bram Moolenaar
8d8ef0b0b9 updated for version 7.2.344
Problem:    Can't compile on some systems
Solution:   Move the #ifdef outside of the mch_open macro. (Patrick Texier)
2010-01-20 21:41:47 +01:00
Bram Moolenaar
fc307fa1a6 updated for version 7.2.343
Problem:    Can't compile on Win32.
Solution:   Insert the missing bar.
2010-01-19 23:30:41 +01:00
42 changed files with 655 additions and 179 deletions

1
.gitignore vendored
View File

@@ -28,6 +28,7 @@ src/auto/pathdef.c
*.res
*.RES
src/pathdef.c
src/Obj*/pathdef.c
gvimext.dll
gvimext.lib

View File

@@ -1,10 +1,15 @@
" Vim completion script
" Language: All languages, uses existing syntax highlighting rules
" Maintainer: David Fishburn <dfishburn.vim@gmail.com>
" Version: 4.0
" Last Change: Fri 26 Oct 2007 05:27:03 PM Eastern Daylight Time
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
" Version: 5.0
" Last Change: 2010 Jan 31
" Usage: For detailed help, ":help ft-syntax-omni"
" History
" Version 5.0
" When processing a list of syntax groups, the final group
" was missed in function SyntaxCSyntaxGroupItems.
"
" Set completion with CTRL-X CTRL-O to autoloaded function.
" This check is in place in case this script is
" sourced directly instead of using the autoload feature.
@@ -312,9 +317,13 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
" \zs - start the match
" .\{-} - everything ...
" \ze - end the match
" \( - start a group or 2 potential matches
" \n\w - at the first newline starting with a character
" \| - 2nd potential match
" \%$ - matches end of the file or string
" \) - end a group
let syntax_group = matchstr(a:syntax_full,
\ "\n".a:group_name.'\s\+xxx\s\+\zs.\{-}\ze'."\n".'\w'
\ "\n".a:group_name.'\s\+xxx\s\+\zs.\{-}\ze\(\n\w\|\%$\)'
\ )
if syntax_group != ""

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 7.2. Last change: 2010 Jan 05
*eval.txt* For Vim version 7.2. Last change: 2010 Jan 19
VIM REFERENCE MANUAL by Bram Moolenaar

View File

@@ -1,4 +1,4 @@
*indent.txt* For Vim version 7.2. Last change: 2009 Nov 12
*indent.txt* For Vim version 7.2. Last change: 2010 Jan 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -437,7 +437,7 @@ assume a 'shiftwidth' of 4.
*N Vim searches for unclosed comments at most N lines away. This
limits the time needed to search for the start of a comment.
(default 30 lines).
(default 70 lines).
#N When N is non-zero recognize shell/Perl comments, starting with
'#'. Default N is zero: don't recognizes '#' comments. Note

View File

@@ -482,7 +482,7 @@ example: >
{shellpipe} is the 'shellpipe' option.
{errorfile} is the 'makeef' option, with ## replaced to make it unique.
The placeholder "$*" can be used for the argument list in {makeprog} if the
The placeholder "$*" can be used for the argument list in {makeprg} if the
command needs some additional characters after its arguments. The $* is
replaced then by all arguments. Example: >
:set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
@@ -1212,7 +1212,7 @@ Maintaining the correct directory is more complicated if you don't use
GNU-make. AIX-make for example doesn't print any information about its
working directory. Then you need to enhance the makefile. In the makefile of
LessTif there is a command which echoes "Making {target} in {dir}". The
special problem here is that it doesn't print informations on leaving the
special problem here is that it doesn't print information on leaving the
directory and that it doesn't print the absolute path.
To solve the problem with relative paths and missing "leave directory"

View File

@@ -340,7 +340,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
this to get 'compatible', even though a .vimrc file exists.
Keep in mind that the command ":set nocompatible" in some
plugin or startup script overrules this, so you may end up
with 'nocmpatible' anyway. To find out, use: >
with 'nocompatible' anyway. To find out, use: >
:verbose set compatible?
< Several plugins won't work with 'compatible' set. You may
want to set it after startup this way: >

View File

@@ -6486,11 +6486,13 @@ mysql ft_sql.txt /*mysql*
mysyntaxfile syntax.txt /*mysyntaxfile*
mysyntaxfile-add syntax.txt /*mysyntaxfile-add*
mysyntaxfile-replace syntax.txt /*mysyntaxfile-replace*
mzeval() eval.txt /*mzeval()*
mzscheme if_mzsch.txt /*mzscheme*
mzscheme-buffer if_mzsch.txt /*mzscheme-buffer*
mzscheme-commands if_mzsch.txt /*mzscheme-commands*
mzscheme-dynamic if_mzsch.txt /*mzscheme-dynamic*
mzscheme-examples if_mzsch.txt /*mzscheme-examples*
mzscheme-mzeval if_mzsch.txt /*mzscheme-mzeval*
mzscheme-sandbox if_mzsch.txt /*mzscheme-sandbox*
mzscheme-threads if_mzsch.txt /*mzscheme-threads*
mzscheme-vim if_mzsch.txt /*mzscheme-vim*

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.2. Last change: 2010 Jan 14
*todo.txt* For Vim version 7.2. Last change: 2010 Feb 09
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -30,49 +30,39 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs*
-------------------- Known bugs and current work -----------------------
Patch from Dominique Pelle, documentation fixes. (2010 Jan 9)
Another patch for README files.
Patch for crash in netbeans on join command. (Xavier de Gaye, 2010 Feb 5)
Patch from Dominique Pelle for buffer reload when fixing spell mistake.
(2010 Jan 14)
Patch for mzscheme docs. (Sergey Khorev, 2010 Jan 29)
Extention for MzScheme interface. (Sergey Khorev, 2009 Dec 21, update Dec 26)
Patch to support netbeans in Unix console Vim. (Xavier de Gaye, 2009 Apr 26)
Now with Mercurial repository (2010 Jan 2)
patch from Sergey Khorev for "*" command escaping. (2010 Jan 5)
Warnings for Python 2.6.4. (Dominique Pelle, 2010 Jan 31)
Patch: :compiler command doesn't function properly when invoked in a function
(Yukihiro Nakadaira)
Patch for better fix for Win64. (Sergey Khorev, 2010 Feb 4)
Patch for error messages. (Dominique Pelle, 2010 Feb 5)
Patch for visual-operators text (Dominique Pelle, 2010 Feb 6)
Patch for Win64 MingW struct size. (Andy Kittner, 2010 Feb 7)
Patch for Perl interface with Perl 5.10. (Sergey Khorev, 2010 Feb 5)
Patch for xxd to support "-r -p" as documented. (James Vega, 2010 Feb 8)
Win32: patch for cross compile xxd and GvimExt. (Markus Heidelberg, 2009 Mar
18) Also update INSTALLpc.txt?
Patch for xxd/Make_cyg.mak. (Chris Sutcliffe, 2009 Jun 10) Included in the
above?
iconv() doesn't fail on an illegal character, as documented. (Yongwei Wu, 2009
Nov 15, example Nov 26) Add argument to specify whether iconv() should fail
or replace with a character and continue?
Problem with window jumping to other screen when changing font. (patch by
Michael Wookey, 2009 Oct 16)
Better: if the window offset was negative before changing something, then
don't change it.
Patch to make CTRL-] work on scheme keywords. (Sergey Khorev, 2010 Jan 5)
Gcc warning for condition that can never be true, fold.c line 3242. (James
Vega, 2010 Jan 13)
Omni menu position one column too far to the right, double-wide chars split to
next line. (Jiang Ma, 2010 Jan 10)
Explicit example from Dominique.
Need to check that the last character fits?
Patch from Dominique Pelle. (2010 Jan 12) One more (2010 Jan 12)
has("win64") returns zero. Patch from Sergey Khorev, 2009 Jan 5.
Or define WIN64 when _WIN64 is defined, change all _WIN64 to WIN64.
Add local time at start of --startuptime output.
Requires configure check for localtime().
Use format year-month-day hr:min:sec.
Patch to support netbeans in Unix console Vim. (Xaview de Gaye, 2009 Apr 26)
Now with Mercurial repository (2010 Jan 2)
Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3)
Find tail? Might have a / in argument. Find space? Might have space in
path.
@@ -177,7 +167,7 @@ Problem with <script> mappings (Andy Wokula, 2009 Mar 8)
Patch to support netbeans for Mac. (Kazuki Sakamoto, 2009 Jun 25)
Patch to support clibpoard for Mac terminal. (Jjgod Jiang, 2009 Aug 1)
Patch to support clipboard for Mac terminal. (Jjgod Jiang, 2009 Aug 1)
When starting Vim with "gvim -f -u non_existent_file > foo.txt" there are a
few control characters in the output. (Dale Wiles, 2009 May 28)
@@ -191,6 +181,7 @@ J. Wang, 2009 Mar 31)
Patch for vertical line at certain column position, 'guidecolumn' option.
(Pankaj Garg, 2009 Apr 14, aka Lone, Apr 15)
Update 2009 May 2, 'margincolumn'
Alternative patch. (2010 Feb 2, Gregor Uhlenheuer)
Add different highlighting for a fold line depending on the fold level.
Patch. (Noel Henson, 2009 Sep 13)
@@ -258,11 +249,6 @@ Kondakoff, 2009 May 13)
Win32 GUI: Changing manifest helps for dpi changes (Joe Castro, 2009 Mar 27)
Win32: patch for cross compile xxd and GvimExt. (Markus Heidelberg, 2009 Mar
18) Also update INSTALLpc.txt?
Patch for xxd/Make_cyg.mak. (Chris Sutcliffe, 2009 Jun 10) Included in the
above?
Win32: patch for better font scaling. (George Reilly, 2009 Mar 26)
Win32 GUI: last message from startup doesn't show up when there is an echoerr
@@ -856,6 +842,9 @@ When 'backupskip' is set from $TEMP special characters need to be escaped.
Another problem is that file_pat_to_reg_pat() doesn't recognize "\\", so "\\("
will be seen as a path separator plus "\(".
gvim d:\path\path\(FILE).xml should not remove the \ before the (.
This also fails with --remote.
When doing ":quit" the Netbeans "killed" event isn't sent. (Xavier de Gaye,
2008 Nov 10) call netbeans_file_closed() at the end of buf_freeall(), or in
all places where buf_freeall() is called?
@@ -920,7 +909,7 @@ Win32: When 'autochdir' is on and 'encoding' is changed, files on the command
line are opened again, but from the wrong directory. Apply 'autochdir' only
after starting up?
When showing a diff between a non-existant file and an existing one, with the
When showing a diff between a non-existent file and an existing one, with the
cursor in the empty buffer, the other buffer only shows the last line. Change
the "insert" into a change from one line to many? (Yakov Lerner, 2008 May 27)
@@ -1046,7 +1035,7 @@ visible.
GTK: when setting 'columns' in a startup script and doing ":vertical diffsplit"
the window isn't redrawn properly, see two vertical bars.
GTK: file choser is disabled. Patch by Tim Starling, 2009 Nov 13.
GTK: file chooser is disabled. Patch by Tim Starling, 2009 Nov 13.
The magic clipboard format "VimClipboard2" appears in several places. Should
be only one.
@@ -2315,7 +2304,7 @@ Spell checking:
Is COMPLEXPREFIXES necessary when we have flags for affixes?
- Support spelling words in CamelCase as if they were two separate words.
Requires some option to enable it. (Timothy Knox)
- There is no Finnish spell checking file. For openoffic Voikko is now
- There is no Finnish spell checking file. For openoffice Voikko is now
used, which is based on Malaga: http://home.arcor.de/bjoern-beutel/malaga/
(Teemu Likonen)
8 ":mkspell" still takes much too long in Hungarian dictionary from

View File

@@ -11170,7 +11170,7 @@ Files: runtime/doc/help.txt, runtime/doc/sponsor.txt, runtime/doc/tags,
runtime/menu.vim, src/version.c
Patch 6.2.192
Problem: Using CTRL-T and CTRL-D with "gR" messes up the text. (Jonahtan
Problem: Using CTRL-T and CTRL-D with "gR" messes up the text. (Jonathan
Hankins)
Solution: Avoid calling change_indent() recursively.
Files: src/edit.c

View File

@@ -4734,7 +4734,7 @@ New keymap files:
Other new runtime files:
Esperanto menu and message translations. (Dominique Pelle)
Finnish menu and message translations. (Flammie Pirinen)
Brazilian Portugese message translations. (Eduardo Dobay)
Brazilian Portuguese message translations. (Eduardo Dobay)
Added floating point support. |Float|
@@ -4925,7 +4925,7 @@ Files: src/fileio.c, src/os_unix.h
Patch 7.1.028
Problem: Can't use last search pattern for ":sort". (Brian McKee)
Solution: When the pattern is emtpy use the last search pattern. (Martin
Solution: When the pattern is empty use the last search pattern. (Martin
Toft)
Files: runtime/doc/change.txt, src/ex_cmds.c
@@ -5463,7 +5463,7 @@ Solution: Remove the replacement with a question mark when UNICODE16 is not
Files: src/screen.c
Patch 7.1.117
Problem: Can't check wether Vim was compiled with Gnome. (Tony Mechelynck)
Problem: Can't check whether Vim was compiled with Gnome. (Tony Mechelynck)
Solution: Add gui_gnome to the has() list.
Files: src/eval.c

View File

@@ -1,7 +1,7 @@
" Vim syntax file
" Language: indent(1) configuration file
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2007-06-17
" Latest Revision: 2010-01-23
" indent_is_bsd: If exists, will change somewhat to match BSD implementation
"
" TODO: is the deny-all (a la lilo.vim nice or no?)...
@@ -27,7 +27,7 @@ syn region indentComment start='//' skip='\\$' end='$'
\ contains=indentTodo,@Spell
if !exists("indent_is_bsd")
syn match indentOptions '-i\|--indentation-level'
syn match indentOptions '-i\|--indentation-level\|-il\|--indent-level'
\ nextgroup=indentNumber skipwhite skipempty
endif
syn match indentOptions '-\%(bli\|c\%([bl]i\|[dip]\)\=\|di\=\|ip\=\|lc\=\|pp\=i\|sbi\|ts\|-\%(brace-indent\|comment-indentation\|case-brace-indentation\|declaration-comment-column\|continuation-indentation\|case-indentation\|else-endif-column\|line-comments-indentation\|declaration-indentation\|indent-level\|parameter-indentation\|line-length\|comment-line-length\|paren-indentation\|preprocessor-indentation\|struct-brace-indentation\|tab-size\)\)'
@@ -123,6 +123,7 @@ syn keyword indentOptions -bacc --blank-lines-after-ifdefs
\ -ut --use-tabs
\ -v --verbose
\ -version --version
\ -linux --linux-style
if exists("indent_is_bsd")
syn keyword indentOptions -ip -ei -nei

View File

@@ -1,8 +1,8 @@
" Vim syntax file
" Language: lilo configuration (lilo.conf)
" Maintainer: help wanted!
" Maintainer: Niels Horn <niels.horn@gmail.com>
" Previous Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
" Last Change: 2009-01-27
" Last Change: 2010-02-03
" Setup
if version >= 600

View File

@@ -1,7 +1,7 @@
" Vim syntax file
" Language: reStructuredText documentation format
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2009-05-25
" Latest Revision: 2010-01-23
if exists("b:current_syntax")
finish
@@ -137,7 +137,7 @@ syn match rstStandaloneHyperlink contains=@NoSpell
" TODO: Use better syncing. I dont know the specifics of syncing well enough,
" though.
syn sync minlines=50
syn sync minlines=50 linebreaks=1
hi def link rstTodo Todo
hi def link rstComment Comment

View File

@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Zsh shell script
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2008-07-17
" Latest Revision: 2010-01-23
if exists("b:current_syntax")
finish
@@ -14,7 +14,7 @@ setlocal iskeyword+=-
syn keyword zshTodo contained TODO FIXME XXX NOTE
syn region zshComment display oneline start='\%(^\|\s\)#' end='$'
syn region zshComment oneline start='\%(^\|\s\)#' end='$'
\ contains=zshTodo,@Spell
syn match zshPreProc '^\%1l#\%(!\|compdef\|autoload\).*$'

View File

@@ -187,16 +187,27 @@ func! BuildCombiningTable()
wincmd p
endfunc
" Build the ambiguous table in a new buffer.
" Build the double width or ambiguous width table in a new buffer.
" Uses s:widthprops and s:dataprops.
func! BuildAmbiguousTable()
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'
let n = ('0x' . p[0]) + 0
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,27 +216,23 @@ func! BuildAmbiguousTable()
endif
let dataidx += 1
endwhile
if dn != n
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 dp[2] != 'Mn' && dp[2] != 'Mc' && dp[2] != 'Me'
if n_last > n || (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
let end = n_last
endif
endif
endfor
@@ -235,8 +242,8 @@ func! BuildAmbiguousTable()
" New buffer to put the result in.
new
file ambiguous
call setline(1, " static struct interval ambiguous[] =")
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,5 +283,8 @@ 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()
" Build the double width table.
call BuildWidthTable('[WF]', 'doublewidth')
" Build the ambiguous width table.
call BuildWidthTable('A', 'ambiguous')

View File

@@ -14,9 +14,9 @@
#if !defined(AFX_STDAFX_H__3389658B_AD83_11D3_9C1E_0090278BBD99__INCLUDED_)
#define AFX_STDAFX_H__3389658B_AD83_11D3_9C1E_0090278BBD99__INCLUDED_
#if _MSC_VER > 1000
#if defined(_MSC_VER) && _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#endif
// Insert your headers here
// #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
@@ -34,7 +34,7 @@
#define INC_OLE2 // WIN32, get ole2 from windows.h
/* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
#if _MSC_VER >= 1400
#if defined(_MSC_VER) && _MSC_VER >= 1400
# define _CRT_SECURE_NO_DEPRECATE
# define _CRT_NONSTDC_NO_DEPRECATE
#endif
@@ -44,7 +44,7 @@
#include <shlobj.h>
/* Accommodate old versions of VC that don't have a modern Platform SDK */
#if _MSC_VER < 1300
#if defined(_MSC_VER) && _MSC_VER < 1300
# undef UINT_PTR
# define UINT_PTR UINT
#endif

View File

@@ -395,7 +395,9 @@ CClink = $(CC)
# RUBY
# Uncomment this when you want to include the Ruby interface.
#CONF_OPT_RUBY = --enable-rubyinterp
# Note: you need the development package (e.g., ruby1.9.1-dev on Ubuntu).
# CONF_OPT_RUBY = --enable-rubyinterp
# CONF_OPT_RUBY = --enable-rubyinterp --with-ruby-command=ruby1.9.1
# MZSCHEME
# Uncomment this when you want to include the MzScheme interface.

30
src/auto/configure vendored
View File

@@ -793,6 +793,7 @@ with_python_config_dir
enable_tclinterp
with_tclsh
enable_rubyinterp
with_ruby_command
enable_cscope
enable_workshop
enable_netbeans
@@ -1503,6 +1504,7 @@ Optional Packages:
--with-plthome=PLTHOME Use PLTHOME.
--with-python-config-dir=PATH Python's config directory
--with-tclsh=PATH which tclsh to use (default: tclsh8.0)
--with-ruby-command=RUBY name of the Ruby command (default: ruby)
--with-x use the X Window System
--with-gtk-prefix=PFX Prefix where GTK is installed (optional)
--with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)
@@ -5703,9 +5705,21 @@ fi
{ $as_echo "$as_me:$LINENO: result: $enable_rubyinterp" >&5
$as_echo "$enable_rubyinterp" >&6; }
if test "$enable_rubyinterp" = "yes"; then
{ $as_echo "$as_me:$LINENO: checking --with-ruby-command argument" >&5
$as_echo_n "checking --with-ruby-command argument... " >&6; }
# Extract the first word of "ruby", so it can be a program name with args.
set dummy ruby; ac_word=$2
# Check whether --with-ruby-command was given.
if test "${with_ruby_command+set}" = set; then
withval=$with_ruby_command; RUBY_CMD="$withval"; { $as_echo "$as_me:$LINENO: result: $RUBY_CMD" >&5
$as_echo "$RUBY_CMD" >&6; }
else
RUBY_CMD="ruby"; { $as_echo "$as_me:$LINENO: result: defaulting to $RUBY_CMD" >&5
$as_echo "defaulting to $RUBY_CMD" >&6; }
fi
# Extract the first word of "$RUBY_CMD", so it can be a program name with args.
set dummy $RUBY_CMD; ac_word=$2
{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_path_vi_cv_path_ruby+set}" = set; then
@@ -5752,11 +5766,17 @@ $as_echo_n "checking Ruby version... " >&6; }
$as_echo "OK" >&6; }
{ $as_echo "$as_me:$LINENO: checking Ruby header files" >&5
$as_echo_n "checking Ruby header files... " >&6; }
rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG["archdir"] || $hdrdir' 2>/dev/null`
rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG["rubyhdrdir"] || Config::CONFIG["archdir"] || $hdrdir' 2>/dev/null`
if test "X$rubyhdrdir" != "X"; then
{ $as_echo "$as_me:$LINENO: result: $rubyhdrdir" >&5
$as_echo "$rubyhdrdir" >&6; }
RUBY_CFLAGS="-I$rubyhdrdir"
rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["arch"]'`
if test -d "$rubyhdrdir/$rubyarch"; then
RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
fi
rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["ruby_version"].gsub(/\./, "")[0,2]'`
RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LIBS"]'`
if test "X$rubylibs" != "X"; then
RUBY_LIBS="$rubylibs"
@@ -5793,8 +5813,8 @@ $as_echo "$rubyhdrdir" >&6; }
_ACEOF
else
{ $as_echo "$as_me:$LINENO: result: not found" >&5
$as_echo "not found" >&6; }
{ $as_echo "$as_me:$LINENO: result: not found; disabling Ruby" >&5
$as_echo "not found; disabling Ruby" >&6; }
fi
else
{ $as_echo "$as_me:$LINENO: result: too old; need Ruby version 1.6.0 or later" >&5

View File

@@ -949,17 +949,27 @@ AC_ARG_ENABLE(rubyinterp,
[enable_rubyinterp="no"])
AC_MSG_RESULT($enable_rubyinterp)
if test "$enable_rubyinterp" = "yes"; then
AC_MSG_CHECKING(--with-ruby-command argument)
AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
AC_SUBST(vi_cv_path_ruby)
AC_PATH_PROG(vi_cv_path_ruby, ruby)
AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
if test "X$vi_cv_path_ruby" != "X"; then
AC_MSG_CHECKING(Ruby version)
if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
AC_MSG_RESULT(OK)
AC_MSG_CHECKING(Ruby header files)
rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
if test "X$rubyhdrdir" != "X"; then
AC_MSG_RESULT($rubyhdrdir)
RUBY_CFLAGS="-I$rubyhdrdir"
rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
if test -d "$rubyhdrdir/$rubyarch"; then
RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
fi
rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
if test "X$rubylibs" != "X"; then
RUBY_LIBS="$rubylibs"
@@ -997,7 +1007,7 @@ if test "$enable_rubyinterp" = "yes"; then
RUBY_PRO="if_ruby.pro"
AC_DEFINE(FEAT_RUBY)
else
AC_MSG_RESULT(not found, disabling Ruby)
AC_MSG_RESULT(not found; disabling Ruby)
fi
else
AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)

View File

@@ -1115,6 +1115,79 @@ ex_profile(eap)
}
}
/* 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.
*/
@@ -2814,11 +2887,11 @@ static FILE *fopen_noinh_readbin __ARGS((char *filename));
fopen_noinh_readbin(filename)
char *filename;
{
int fd_tmp = mch_open(filename, O_RDONLY
# ifdef WIN32
O_BINARY | O_NOINHERIT
int fd_tmp = mch_open(filename, O_RDONLY | O_BINARY | O_NOINHERIT, 0);
# else
int fd_tmp = mch_open(filename, O_RDONLY, 0);
# endif
, 0);
if (fd_tmp == -1)
return NULL;

View File

@@ -3804,6 +3804,11 @@ set_one_cmd_context(xp, buff)
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 */

View File

@@ -4522,6 +4522,9 @@ ExpandFromContext(xp, pat, num_file, file, options)
#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},

View File

@@ -849,11 +849,17 @@ foldUpdate(wp, top, bot)
fold_T *fp;
/* Mark all folds from top to bot as maybe-small. */
(void)foldFind(&curwin->w_folds, curwin->w_cursor.lnum, &fp);
(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;
}

View File

@@ -2389,6 +2389,17 @@ vgetorpeek(advance)
/* 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,6 +2442,16 @@ vgetorpeek(advance)
#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,7 +2467,9 @@ vgetorpeek(advance)
if (tabuf.typebuf_valid)
{
vgetc_busy = 0;
s = eval_map_expr(mp->m_str, NUL);
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
@@ -2469,18 +2492,33 @@ vgetorpeek(advance)
i = FAIL;
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);
int noremap;
if (save_m_noremap != REMAP_YES)
noremap = save_m_noremap;
else if (
#ifdef FEAT_EVAL
if (mp->m_expr)
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);
#endif
}
#ifdef FEAT_EVAL
vim_free(save_m_keys);
vim_free(save_m_str);
#endif
if (i == FAIL)
{
c = -1;

View File

@@ -1390,6 +1390,7 @@ gui_set_shellsize(mustset, fit_to_display, direction)
int un_maximize = mustset;
int did_adjust = 0;
#endif
int x = -1, y = -1;
if (!gui.shell_created)
return;
@@ -1406,6 +1407,10 @@ gui_set_shellsize(mustset, fit_to_display, direction)
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,11 +1478,12 @@ gui_set_shellsize(mustset, fit_to_display, direction)
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. */
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);

View File

@@ -6190,7 +6190,7 @@ gui_mch_draw_string(int row, int col, char_u *s, int len, int flags)
int pcc[MAX_MCO];
/* TODO: use the composing characters */
c = utfc_ptr2char_len(p, &pcc, len - (p - s));
c = utfc_ptr2char_len(p, pcc, len - (p - s));
if (c >= 0x10000) /* show chars > 0xffff as ? */
c = 0xbf;
buf[textlen].byte1 = c >> 8;

View File

@@ -1329,6 +1329,7 @@ gui_mch_init(void)
WNDCLASS wndclass;
#ifdef FEAT_MBYTE
const WCHAR szVimWndClassW[] = VIM_CLASSW;
const WCHAR szTextAreaClassW[] = L"VimTextArea";
WNDCLASSW wndclassw;
#endif
#ifdef GLOBAL_IME
@@ -1479,6 +1480,28 @@ gui_mch_init(void)
#endif
/* Create the text area window */
#ifdef FEAT_MBYTE
if (wide_WindowProc)
{
if (GetClassInfoW(s_hinst, szTextAreaClassW, &wndclassw) == 0)
{
wndclassw.style = CS_OWNDC;
wndclassw.lpfnWndProc = _TextAreaWndProc;
wndclassw.cbClsExtra = 0;
wndclassw.cbWndExtra = 0;
wndclassw.hInstance = s_hinst;
wndclassw.hIcon = NULL;
wndclassw.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclassw.hbrBackground = NULL;
wndclassw.lpszMenuName = NULL;
wndclassw.lpszClassName = szTextAreaClassW;
if (RegisterClassW(&wndclassw) == 0)
return FAIL;
}
}
else
#endif
if (GetClassInfo(s_hinst, szTextAreaClass, &wndclass) == 0)
{
wndclass.style = CS_OWNDC;

View File

@@ -1084,9 +1084,8 @@ _TextAreaWndProc(
case WM_NOTIFY: Handle_WM_Notify(hwnd, (LPNMHDR)lParam);
return TRUE;
#endif
default:
return MyWindowProc(hwnd, uMsg, wParam, lParam);
default:
return MyWindowProc(hwnd, uMsg, wParam, lParam);
}
}
@@ -3346,7 +3345,7 @@ gui_mch_browseW(
#ifdef OPENFILENAME_SIZE_VERSION_400
/* be compatible with Windows NT 4.0 */
/* TODO: what to use for OPENFILENAMEW??? */
fileStruct.lStructSize = sizeof(OPENFILENAME_SIZE_VERSION_400);
fileStruct.lStructSize = OPENFILENAME_SIZE_VERSION_400;
#else
fileStruct.lStructSize = sizeof(fileStruct);
#endif
@@ -3507,7 +3506,7 @@ gui_mch_browse(
memset(&fileStruct, 0, sizeof(OPENFILENAME));
#ifdef OPENFILENAME_SIZE_VERSION_400
/* be compatible with Windows NT 4.0 */
fileStruct.lStructSize = sizeof(OPENFILENAME_SIZE_VERSION_400);
fileStruct.lStructSize = OPENFILENAME_SIZE_VERSION_400;
#else
fileStruct.lStructSize = sizeof(fileStruct);
#endif

View File

@@ -93,6 +93,9 @@ EXTERN_C void boot_DynaLoader __ARGS((pTHX_ CV*));
# define perl_free dll_perl_free
# define Perl_get_context dll_Perl_get_context
# define Perl_croak dll_Perl_croak
# if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
# define Perl_croak_xs_usage dll_Perl_croak_xs_usage
# endif
# ifndef PROTO
# define Perl_croak_nocontext dll_Perl_croak_nocontext
# define Perl_call_argv dll_Perl_call_argv
@@ -202,6 +205,9 @@ static int (*perl_run)(PerlInterpreter*);
static int (*perl_parse)(PerlInterpreter*, XSINIT_t, int, char**, char**);
static void* (*Perl_get_context)(void);
static void (*Perl_croak)(pTHX_ const char*, ...);
#if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
static void (*Perl_croak_xs_usage)(pTHX_ const CV *const, const char *const params);
#endif
static void (*Perl_croak_nocontext)(const char*, ...);
static I32 (*Perl_dowantarray)(pTHX);
static void (*Perl_free_tmps)(pTHX);
@@ -306,6 +312,9 @@ static struct {
{"perl_parse", (PERL_PROC*)&perl_parse},
{"Perl_get_context", (PERL_PROC*)&Perl_get_context},
{"Perl_croak", (PERL_PROC*)&Perl_croak},
#if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
{"Perl_croak_xs_usage", (PERL_PROC*)&Perl_croak_xs_usage},
#endif
{"Perl_croak_nocontext", (PERL_PROC*)&Perl_croak_nocontext},
{"Perl_dowantarray", (PERL_PROC*)&Perl_dowantarray},
{"Perl_free_tmps", (PERL_PROC*)&Perl_free_tmps},

View File

@@ -48,7 +48,15 @@
# endif
#endif
/* suggested by Ariya Mizutani */
#if (_MSC_VER == 1200)
# undef _WIN32_WINNT
#endif
#include <ruby.h>
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
# include <ruby/encoding.h>
#endif
#undef EXTERN
#undef _
@@ -60,6 +68,28 @@
# define __OPENTRANSPORTPROVIDERS__
#endif
/*
* Backward compatiblity for Ruby 1.8 and earlier.
* Ruby 1.9 does not provide STR2CSTR, instead StringValuePtr is provided.
* Ruby 1.9 does not provide RXXX(s)->len and RXXX(s)->ptr, instead
* RXXX_LEN(s) and RXXX_PTR(s) are provided.
*/
#ifndef StringValuePtr
# define StringValuePtr(s) STR2CSTR(s)
#endif
#ifndef RARRAY_LEN
# define RARRAY_LEN(s) RARRAY(s)->len
#endif
#ifndef RARRAY_PTR
# define RARRAY_PTR(s) RARRAY(s)->ptr
#endif
#ifndef RSTRING_LEN
# define RSTRING_LEN(s) RSTRING(s)->len
#endif
#ifndef RSTRING_PTR
# define RSTRING_PTR(s) RSTRING(s)->ptr
#endif
#include "vim.h"
#include "version.h"
@@ -129,13 +159,26 @@ static void ruby_vim_init(void);
#define rb_str_concat dll_rb_str_concat
#define rb_str_new dll_rb_str_new
#define rb_str_new2 dll_rb_str_new2
#define ruby_errinfo (*dll_ruby_errinfo)
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
# define rb_errinfo dll_rb_errinfo
#else
# define ruby_errinfo (*dll_ruby_errinfo)
#endif
#define ruby_init dll_ruby_init
#define ruby_init_loadpath dll_ruby_init_loadpath
#define NtInitialize dll_NtInitialize
#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
# define rb_w32_snprintf dll_rb_w32_snprintf
#endif
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
# define ruby_script dll_ruby_script
# define rb_enc_find_index dll_rb_enc_find_index
# define rb_enc_find dll_rb_enc_find
# define rb_enc_str_new dll_rb_enc_str_new
# define rb_sprintf dll_rb_sprintf
#endif
/*
* Pointers for dynamic link
*/
@@ -183,13 +226,26 @@ static VALUE (*dll_rb_str_cat) (VALUE, const char*, long);
static VALUE (*dll_rb_str_concat) (VALUE, VALUE);
static VALUE (*dll_rb_str_new) (const char*, long);
static VALUE (*dll_rb_str_new2) (const char*);
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
static VALUE (*dll_rb_errinfo) (void);
#else
static VALUE *dll_ruby_errinfo;
#endif
static void (*dll_ruby_init) (void);
static void (*dll_ruby_init_loadpath) (void);
static void (*dll_NtInitialize) (int*, char***);
#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...);
#endif
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
static void (*dll_ruby_script) (const char*);
static int (*dll_rb_enc_find_index) (const char*);
static rb_encoding* (*dll_rb_enc_find) (const char*);
static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*);
static VALUE (*dll_rb_sprintf) (const char*, ...);
#endif
static HINSTANCE hinstRuby = 0; /* Instance of ruby.dll */
/*
@@ -245,11 +301,23 @@ static struct
{"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat},
{"rb_str_new", (RUBY_PROC*)&dll_rb_str_new},
{"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2},
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
{"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo},
#else
{"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo},
#endif
{"ruby_init", (RUBY_PROC*)&dll_ruby_init},
{"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath},
{"NtInitialize", (RUBY_PROC*)&dll_NtInitialize},
#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
{"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf},
#endif
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
{"ruby_script", (RUBY_PROC*)&dll_ruby_script},
{"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index},
{"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find},
{"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new},
{"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf},
#endif
{"", NULL},
};
@@ -340,6 +408,58 @@ void ex_ruby(exarg_T *eap)
vim_free(script);
}
/*
* In Ruby 1.9 or later, ruby String object has encoding.
* conversion buffer string of vim to ruby String object using
* VIM encoding option.
*/
static VALUE
vim_str2rb_enc_str(const char *s)
{
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
int isnum;
long lval;
char_u *sval;
rb_encoding *enc;
isnum = get_option_value((char_u *)"enc", &lval, &sval, 0);
if (isnum == 0)
{
enc = rb_enc_find((char *)sval);
vim_free(sval);
if (enc) {
return rb_enc_str_new(s, strlen(s), enc);
}
}
#endif
return rb_str_new2(s);
}
static VALUE
eval_enc_string_protect(const char *str, int *state)
{
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
int isnum;
long lval;
char_u *sval;
rb_encoding *enc;
VALUE v;
isnum = get_option_value((char_u *)"enc", &lval, &sval, 0);
if (isnum == 0)
{
enc = rb_enc_find((char *)sval);
vim_free(sval);
if (enc)
{
v = rb_sprintf("#-*- coding:%s -*-\n%s", rb_enc_name(enc), str);
return rb_eval_string_protect(StringValuePtr(v), state);
}
}
#endif
return rb_eval_string_protect(str, state);
}
void ex_rubydo(exarg_T *eap)
{
int state;
@@ -352,9 +472,9 @@ void ex_rubydo(exarg_T *eap)
for (i = eap->line1; i <= eap->line2; i++) {
VALUE line, oldline;
line = oldline = rb_str_new2((char *)ml_get(i));
line = oldline = vim_str2rb_enc_str((char *)ml_get(i));
rb_lastline_set(line);
rb_eval_string_protect((char *) eap->arg, &state);
eval_enc_string_protect((char *) eap->arg, &state);
if (state) {
error_print(state);
break;
@@ -365,7 +485,7 @@ void ex_rubydo(exarg_T *eap)
EMSG(_("E265: $_ must be an instance of String"));
return;
}
ml_replace(i, (char_u *) STR2CSTR(line), 1);
ml_replace(i, (char_u *) StringValuePtr(line), 1);
changed();
#ifdef SYNTAX_HL
syn_changed(i); /* recompute syntax hl. for this line */
@@ -413,10 +533,25 @@ static int ensure_ruby_initialized(void)
#ifdef DYNAMIC_RUBY
if (ruby_enabled(TRUE))
{
#endif
#ifdef _WIN32
/* suggested by Ariya Mizutani */
int argc = 1;
char *argv[] = {"gvim.exe"};
NtInitialize(&argc, &argv);
#endif
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
RUBY_INIT_STACK;
#endif
ruby_init();
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
ruby_script("vim-ruby");
#endif
ruby_init_loadpath();
ruby_io_init();
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
rb_enc_find_index("encdb");
#endif
ruby_vim_init();
ruby_initialized = 1;
#ifdef DYNAMIC_RUBY
@@ -434,7 +569,9 @@ static int ensure_ruby_initialized(void)
static void error_print(int state)
{
#ifndef DYNAMIC_RUBY
#if !(defined(RUBY_VERSION) && RUBY_VERSION >= 19)
RUBYEXTERN VALUE ruby_errinfo;
#endif
#endif
VALUE eclass;
VALUE einfo;
@@ -468,9 +605,14 @@ static void error_print(int state)
break;
case TAG_RAISE:
case TAG_FATAL:
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
eclass = CLASS_OF(rb_errinfo());
einfo = rb_obj_as_string(rb_errinfo());
#else
eclass = CLASS_OF(ruby_errinfo);
einfo = rb_obj_as_string(ruby_errinfo);
if (eclass == rb_eRuntimeError && RSTRING(einfo)->len == 0) {
#endif
if (eclass == rb_eRuntimeError && RSTRING_LEN(einfo) == 0) {
EMSG(_("E272: unhandled exception"));
}
else {
@@ -479,7 +621,7 @@ static void error_print(int state)
epath = rb_class_path(eclass);
vim_snprintf(buff, BUFSIZ, "%s: %s",
RSTRING(epath)->ptr, RSTRING(einfo)->ptr);
RSTRING_PTR(epath), RSTRING_PTR(einfo));
p = strchr(buff, '\n');
if (p) *p = '\0';
EMSG(buff);
@@ -497,8 +639,8 @@ static VALUE vim_message(VALUE self UNUSED, VALUE str)
char *buff, *p;
str = rb_obj_as_string(str);
buff = ALLOCA_N(char, RSTRING(str)->len);
strcpy(buff, RSTRING(str)->ptr);
buff = ALLOCA_N(char, RSTRING_LEN(str));
strcpy(buff, RSTRING_PTR(str));
p = strchr(buff, '\n');
if (p) *p = '\0';
MSG(buff);
@@ -507,21 +649,21 @@ static VALUE vim_message(VALUE self UNUSED, VALUE str)
static VALUE vim_set_option(VALUE self UNUSED, VALUE str)
{
do_set((char_u *)STR2CSTR(str), 0);
do_set((char_u *)StringValuePtr(str), 0);
update_screen(NOT_VALID);
return Qnil;
}
static VALUE vim_command(VALUE self UNUSED, VALUE str)
{
do_cmdline_cmd((char_u *)STR2CSTR(str));
do_cmdline_cmd((char_u *)StringValuePtr(str));
return Qnil;
}
static VALUE vim_evaluate(VALUE self UNUSED, VALUE str)
{
#ifdef FEAT_EVAL
char_u *value = eval_to_string((char_u *)STR2CSTR(str), NULL, TRUE);
char_u *value = eval_to_string((char_u *)StringValuePtr(str), NULL, TRUE);
if (value != NULL)
{
@@ -626,9 +768,9 @@ static VALUE get_buffer_line(buf_T *buf, linenr_T n)
if (n > 0 && n <= buf->b_ml.ml_line_count)
{
char *line = (char *)ml_get_buf(buf, n, FALSE);
return line ? rb_str_new2(line) : Qnil;
return line ? vim_str2rb_enc_str(line) : Qnil;
}
rb_raise(rb_eIndexError, "index %d out of buffer", n);
rb_raise(rb_eIndexError, "line number %ld out of range", (long)n);
#ifndef __GNUC__
return Qnil; /* For stop warning */
#endif
@@ -645,7 +787,7 @@ static VALUE buffer_aref(VALUE self, VALUE num)
static VALUE set_buffer_line(buf_T *buf, linenr_T n, VALUE str)
{
char *line = STR2CSTR(str);
char *line = StringValuePtr(str);
aco_save_T aco;
if (n > 0 && n <= buf->b_ml.ml_line_count && line != NULL)
@@ -669,7 +811,7 @@ static VALUE set_buffer_line(buf_T *buf, linenr_T n, VALUE str)
}
else
{
rb_raise(rb_eIndexError, "index %d out of buffer", n);
rb_raise(rb_eIndexError, "line number %ld out of range", (long)n);
#ifndef __GNUC__
return Qnil; /* For stop warning */
#endif
@@ -715,7 +857,7 @@ static VALUE buffer_delete(VALUE self, VALUE num)
}
else
{
rb_raise(rb_eIndexError, "index %d out of buffer", n);
rb_raise(rb_eIndexError, "line number %ld out of range", n);
}
return Qnil;
}
@@ -723,11 +865,14 @@ static VALUE buffer_delete(VALUE self, VALUE num)
static VALUE buffer_append(VALUE self, VALUE num, VALUE str)
{
buf_T *buf = get_buf(self);
char *line = STR2CSTR(str);
char *line = StringValuePtr(str);
long n = NUM2LONG(num);
aco_save_T aco;
if (n >= 0 && n <= buf->b_ml.ml_line_count && line != NULL)
if (line != NULL) {
rb_raise(rb_eIndexError, "NULL line");
}
else if (n >= 0 && n <= buf->b_ml.ml_line_count)
{
/* set curwin/curbuf for "buf" and save some things */
aucmd_prepbuf(&aco, buf);
@@ -749,7 +894,7 @@ static VALUE buffer_append(VALUE self, VALUE num, VALUE str)
update_curbuf(NOT_VALID);
}
else {
rb_raise(rb_eIndexError, "index %d out of buffer", n);
rb_raise(rb_eIndexError, "line number %ld out of range", n);
}
return str;
}
@@ -890,10 +1035,10 @@ static VALUE window_set_cursor(VALUE self, VALUE pos)
win_T *win = get_win(self);
Check_Type(pos, T_ARRAY);
if (RARRAY(pos)->len != 2)
if (RARRAY_LEN(pos) != 2)
rb_raise(rb_eArgError, "array length must be 2");
lnum = RARRAY(pos)->ptr[0];
col = RARRAY(pos)->ptr[1];
lnum = RARRAY_PTR(pos)[0];
col = RARRAY_PTR(pos)[1];
win->w_cursor.lnum = NUM2LONG(lnum);
win->w_cursor.col = NUM2UINT(col);
check_cursor(); /* put cursor on an existing line */
@@ -910,7 +1055,7 @@ static VALUE f_p(int argc, VALUE *argv, VALUE self UNUSED)
if (i > 0) rb_str_cat(str, ", ", 2);
rb_str_concat(str, rb_inspect(argv[i]));
}
MSG(RSTRING(str)->ptr);
MSG(RSTRING_PTR(str));
return Qnil;
}

View File

@@ -1200,6 +1200,49 @@ intable(table, size, c)
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,20 +1446,7 @@ utf_char2cells(c)
#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)))
if (intable(doublewidth, sizeof(doublewidth), c))
return 2;
#endif
}

View File

@@ -3087,12 +3087,19 @@ ml_flush_line(buf)
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,6 +3167,8 @@ ml_flush_line(buf)
}
}
vim_free(new_line);
entered = FALSE;
}
buf->b_ml.ml_line_lnum = 0;

View File

@@ -889,6 +889,7 @@ validate_cursor_col()
{
colnr_T off;
colnr_T col;
int width;
validate_virtcol();
if (!(curwin->w_valid & VALID_WCOL))
@@ -896,15 +897,14 @@ validate_cursor_col()
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)
&& W_WIDTH(curwin) - off + curwin_col_off2() > 0)
{
col -= W_WIDTH(curwin);
col = col % (W_WIDTH(curwin) - off + curwin_col_off2());
}
&& 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,6 +1041,7 @@ curs_columns(scroll)
/* 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;
@@ -1609,7 +1610,7 @@ scrollup_clamp()
* Add one line above "lp->lnum". This can be a filler line, a closed fold or
* a (wrapped) text line. Uses and sets "lp->fill".
* Returns the height of the added line in "lp->height".
* Lines above the first one are incredibly high.
* Lines above the first one are incredibly high: MAXCOL.
*/
static void
topline_back(lp)
@@ -1941,7 +1942,7 @@ scroll_cursor_bot(min_scroll, set_topbot)
{
loff.lnum = curwin->w_topline;
topline_back(&loff);
if (used + loff.height > curwin->w_height)
if (loff.height == MAXCOL || used + loff.height > curwin->w_height)
break;
used += loff.height;
#ifdef FEAT_DIFF
@@ -2020,7 +2021,10 @@ scroll_cursor_bot(min_scroll, set_topbot)
/* Add one line above */
topline_back(&loff);
used += loff.height;
if (loff.height == MAXCOL)
used = MAXCOL;
else
used += loff.height;
if (used > curwin->w_height)
break;
if (loff.lnum >= curwin->w_botline
@@ -2174,7 +2178,10 @@ scroll_cursor_halfway(atend)
if (below > above) /* add a line above the cursor */
{
topline_back(&loff);
used += loff.height;
if (loff.height == MAXCOL)
used = MAXCOL;
else
used += loff.height;
if (used > curwin->w_height)
break;
above += loff.height;
@@ -2471,9 +2478,12 @@ onepage(dir, count)
while (n <= curwin->w_height && loff.lnum >= 1)
{
topline_back(&loff);
n += loff.height;
if (loff.height == MAXCOL)
n = MAXCOL;
else
n += loff.height;
}
if (n <= curwin->w_height) /* at begin of file */
if (loff.lnum < 1) /* at begin of file */
{
curwin->w_topline = 1;
#ifdef FEAT_DIFF

View File

@@ -1301,10 +1301,16 @@ put_reedit_in_typebuf(silent)
}
}
/*
* 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; /* Escape CSI characters */
int esc;
int colon; /* add ':' before the line */
int silent;
{
@@ -1312,7 +1318,7 @@ put_in_typebuf(s, esc, colon, silent)
put_reedit_in_typebuf(silent);
if (colon)
retval = ins_typebuf((char_u *)"\n", REMAP_YES, 0, TRUE, silent);
retval = ins_typebuf((char_u *)"\n", REMAP_NONE, 0, TRUE, silent);
if (retval == OK)
{
char_u *p;
@@ -1324,12 +1330,13 @@ put_in_typebuf(s, esc, colon, silent)
if (p == NULL)
retval = FAIL;
else
retval = ins_typebuf(p, REMAP_YES, 0, TRUE, silent);
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_YES, 0, TRUE, silent);
retval = ins_typebuf((char_u *)":", REMAP_NONE, 0, TRUE, silent);
return retval;
}

View File

@@ -5867,6 +5867,10 @@ did_set_string_option(opt_idx, varp, new_value_alloced, oldval, errbuf,
#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);
}
}
@@ -6410,6 +6414,9 @@ did_set_string_option(opt_idx, varp, new_value_alloced, oldval, errbuf,
}
# endif
curbuf->b_help = (curbuf->b_p_bt[0] == 'h');
# ifdef FEAT_TITLE
redraw_titles();
# endif
}
}
#endif

View File

@@ -1471,6 +1471,9 @@ x_IOerror_check(dpy)
{
/* 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,6 +1493,9 @@ x_IOerror_handler(dpy)
/* 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

View File

@@ -24,6 +24,8 @@ void profile_sub_wait __ARGS((proftime_T *tm, proftime_T *tma));
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));

View File

@@ -2335,13 +2335,12 @@ fold_line(wp, fold_count, foldinfo, lnum, row)
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];
}
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,7 +4630,11 @@ win_line(wp, lnum, startrow, endrow, nochange)
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)

View File

@@ -681,6 +681,56 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
367,
/**/
366,
/**/
365,
/**/
364,
/**/
363,
/**/
362,
/**/
361,
/**/
360,
/**/
359,
/**/
358,
/**/
357,
/**/
356,
/**/
355,
/**/
354,
/**/
353,
/**/
352,
/**/
351,
/**/
350,
/**/
349,
/**/
348,
/**/
347,
/**/
346,
/**/
345,
/**/
344,
/**/
343,
/**/
342,
/**/

View File

@@ -718,6 +718,7 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname);
#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

View File

@@ -626,7 +626,7 @@ wingotofile:
#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;
cmdmod.tab = tabpage_index(curtab) + 1;
nchar = xchar;
goto wingotofile;
#endif

View File

@@ -231,7 +231,7 @@ char *pname;
fprintf(stderr, " or\n %s -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]\n", pname);
fprintf(stderr, "Options:\n");
fprintf(stderr, " -a toggle autoskip: A single '*' replaces nul-lines. Default off.\n");
fprintf(stderr, " -b binary digit dump (incompatible with -p,-i,-r). Default hex.\n");
fprintf(stderr, " -b binary digit dump (incompatible with -ps,-i,-r). Default hex.\n");
fprintf(stderr, " -c cols format <cols> octets per line. Default 16 (-i: 12, -ps: 30).\n");
fprintf(stderr, " -E show characters in EBCDIC. Default ASCII.\n");
fprintf(stderr, " -g number of octets per group in normal output. Default 2.\n");
@@ -276,11 +276,11 @@ long base_off;
if (c == '\r') /* Doze style input file? */
continue;
#if 0 /* this doesn't work when there is normal text after the hex codes in
the last line that looks like hex */
if (c == ' ' || c == '\n' || c == '\t') /* allow multiple spaces */
/* Allow multiple spaces. This doesn't work when there is normal text
* after the hex codes in the last line that looks like hex, thus only
* use it for PostScript format. */
if (hextype == HEX_POSTSCRIPT && (c == ' ' || c == '\n' || c == '\t'))
continue;
#endif
n3 = n2;
n2 = n1;