Merge branch 'vim'

This commit is contained in:
Bjorn Winckler
2013-06-27 21:40:25 +02:00
51 changed files with 1762 additions and 547 deletions
+3
View File
@@ -38,6 +38,9 @@ src/Obj*/pathdef.c
gvimext.dll
gvimext.lib
# Mac OSX
src/xxd/xxd.dSYM
# All platforms
*.rej
*.orig
+18
View File
@@ -2570,3 +2570,21 @@ f5c822e5a0eba6f490d0be9f6892de929295be87 v7-3-1230
537bbfff0c5c0bc2307a85133f59f07b00c55e41 v7-3-1231
a594ce86b5eade96cb84415b3b027abe611c2238 v7-3-1232
4ed713442c51625160cd0bca612d9a3417e4ba14 v7-3-1233
f4969f8f66e974584e8e7815d0a262c5dca79638 v7-3-1234
9ae0fe46777674504e0f372e68cfb8e0be81b2ee v7-3-1235
39980afcf54aafdb9255424adf5808af45ab2242 v7-3-1236
5b2c8f3b390632e1e57a3839f040146f6798a969 v7-3-1237
048c69ebe8eecb218320030d9ea41fe4f6290848 v7-3-1238
e130cc3d17af412971143b8420d6e7b1cbd13ff2 v7-3-1239
bc9125136c69a4feecb4b68912fa04380f42b77f v7-3-1240
c8747604696795a300f6ff05091813d691f9a488 v7-3-1241
b4a2eaf28b51327b4e56b4eacf4b5d72a52560f6 v7-3-1242
8a7d3a73adabaad5e9fe079acf6431982145c7d1 v7-3-1243
b4a71dbdb78790ca423103ad5deb71b1df9b5b04 v7-3-1244
43329b2b5b79ed2e1017869ee2e0b1caeaf2f0f6 v7-3-1245
a1b41dabc682ed8f8770a12c2d3a227eb348885b v7-3-1246
f451d60ab8ec56d02a7b5f2d5c16187566279886 v7-3-1247
3717d569027d8ec8b62e42e33f91333ac22ce6ba v7-3-1248
b614332f7df2f6f471bb4bd93767becd7844b90c v7-3-1249
6aecf486bb347ac6885afe36d62ddbbf2457f898 v7-3-1250
788f4802967766b7f3d6dce83cc027baef422f4a v7-3-1251
+4
View File
@@ -87,6 +87,10 @@ SRC_ALL = \
src/testdir/python2/*.py \
src/testdir/python3/*.py \
src/testdir/pythonx/*.py \
src/testdir/pythonx/topmodule/__init__.py \
src/testdir/pythonx/topmodule/submodule/__init__.py \
src/testdir/pythonx/topmodule/submodule/subsubmodule/__init__.py \
src/testdir/pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py \
src/testdir/python_after/*.py \
src/testdir/python_before/*.py \
src/proto.h \
+24 -9
View File
@@ -1,6 +1,6 @@
" Vim autoload file for the tohtml plugin.
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2013 May 31
" Last Change: 2013 Jun 19
"
" Additional contributors:
"
@@ -401,15 +401,15 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
call add(html, '</head>')
let body_line_num = len(html)
if !empty(s:settings.prevent_copy)
call add(html, "<body onload='FixCharWidth(); JumpToLine();'>")
call add(html, "<body onload='FixCharWidth();".(s:settings.line_ids ? " JumpToLine();" : "")."'>")
call add(html, "<!-- hidden divs used by javascript to get the width of a char -->")
call add(html, "<div id='oneCharWidth'>0</div>")
call add(html, "<div id='oneInputWidth'><input size='1' value='0'".tag_close."</div>")
call add(html, "<div id='oneEmWidth' style='width: 1em;'></div>")
else
call add(html, '<body onload="JumpToLine();">')
call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>')
endif
call add(html, "<table border='1' width='100%' id='vimCodeElement'>")
call add(html, "<table border='1' width='100%' id='vimCodeElement".s:settings.id_suffix."'>")
call add(html, '<tr>')
for buf in a:win_list
@@ -475,7 +475,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
let temp = getline(1,'$')
" clean out id on the main content container because we already set it on
" the table
let temp[0] = substitute(temp[0], " id='vimCodeElement'", "", "")
let temp[0] = substitute(temp[0], " id='vimCodeElement[^']*'", "", "")
" undo deletion of start and end part
" so we can later save the file as valid html
" TODO: restore using grabbed lines if undolevel is 1?
@@ -568,9 +568,9 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
\ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;',
\ ' if (inputWidth > goodWidth) {',
\ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {',
\ ' ratio += 5;',
\ ' }',
\ ' document.getElementById("vimCodeElement").className = "em"+ratio;',
\ ' ratio += 5;',
\ ' }',
\ ' document.getElementById("vimCodeElement'.s:settings.id_suffix.'").className = "em"+ratio;',
\ ' }',
\ '}'
\ ])
@@ -596,7 +596,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
\ "",
\ " /* navigate upwards in the DOM tree to open all folds containing the line */",
\ " var node = lineElem;",
\ " while (node && node.id != 'vimCodeElement')",
\ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
\ " {",
\ " if (node.className == 'closed-fold')",
\ " {",
@@ -722,6 +722,7 @@ func! tohtml#GetUserSettings() "{{{
call tohtml#GetOption(user_settings, 'no_invalid', 0 )
call tohtml#GetOption(user_settings, 'whole_filler', 0 )
call tohtml#GetOption(user_settings, 'use_xhtml', 0 )
call tohtml#GetOption(user_settings, 'line_ids', user_settings.number_lines )
" }}}
" override those settings that need it {{{
@@ -855,6 +856,20 @@ func! tohtml#GetUserSettings() "{{{
let user_settings.no_invalid = 0
endif
if exists('g:html_id_expr')
let user_settings.id_suffix = eval(g:html_id_expr)
if user_settings.id_suffix !~ '^[-_:.A-Za-z0-9]*$'
echohl WarningMsg
echomsg '2html: g:html_id_expr evaluated to invalid string for HTML id attributes'
echomsg '2html: Omitting user-specified suffix'
echohl None
sleep 3
let user_settings.id_suffix=""
endif
else
let user_settings.id_suffix=""
endif
" TODO: font
return user_settings
+5 -1
View File
@@ -1,4 +1,4 @@
*index.txt* For Vim version 7.3. Last change: 2013 Jun 06
*index.txt* For Vim version 7.3. Last change: 2013 Jun 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -801,6 +801,10 @@ tag char note action in Normal mode ~
|zE| zE eliminate all folds
|zF| zF create a fold for N lines
|zG| zG mark word as good spelled word
|zH| zH when 'wrap' off scroll half a screenwidth
to the right
|zL| zL when 'wrap' off scroll half a screenwidth
to the left
|zM| zM set 'foldlevel' to zero
|zN| zN set 'foldenable'
|zO| zO open folds recursively
+2 -1
View File
@@ -1,4 +1,4 @@
*intro.txt* For Vim version 7.3. Last change: 2012 Sep 05
*intro.txt* For Vim version 7.3. Last change: 2013 Jun 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -261,6 +261,7 @@ Vim would never have become what it is now, without the help of these people!
I wish to thank all the people that sent me bug reports and suggestions. The
list is too long to mention them all here. Vim would not be the same without
the ideas from all these people: They keep Vim alive!
*love* *peace* *friendship* *gross-national-happiness*
In this documentation there are several references to other versions of Vi:
+38
View File
@@ -4094,6 +4094,26 @@ A jump table for the options with a short description can be found at |Q_op|.
Can be overruled by using "\c" or "\C" in the pattern, see
|/ignorecase|.
*'imactivatefunc'* *'imaf'*
'imactivatefunc' 'imaf' string (default "")
global
{not in Vi}
{only available when compiled with |+xim| and
|+GUI_GTK|}
This option specifies a function that will be called to
activate/inactivate Input Method.
Example: >
function ImActivateFunc(active)
if a:active
... do something
else
... do something
endif
" return value is not used
endfunction
set imactivatefunc=ImActivateFunc
<
*'imactivatekey'* *'imak'*
'imactivatekey' 'imak' string (default "")
global
@@ -4191,6 +4211,24 @@ A jump table for the options with a short description can be found at |Q_op|.
The value 0 may not work correctly with Athena and Motif with some XIM
methods. Use 'imdisable' to disable XIM then.
*'imstatusfunc'* *'imsf'*
'imstatusfunc' 'imsf' string (default "")
global
{not in Vi}
{only available when compiled with |+xim| and
|+GUI_GTK|}
This option specifies a function that is called to obtain the status
of Input Method. It must return a positive number when IME is active.
Example: >
function ImStatusFunc()
let is_active = ...do something
return is_active ? 1 : 0
endfunction
set imstatusfunc=ImStatusFunc
<
NOTE: This function is invoked very often. Keep it fast.
*'include'* *'inc'*
'include' 'inc' string (default "^\s*#\s*include")
global or local to buffer |global-local|
+170 -56
View File
@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 7.3. Last change: 2013 Jun 06
*syntax.txt* For Vim version 7.3. Last change: 2013 Jun 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -379,12 +379,12 @@ settings, depending on which syntax is active. Example: >
2HTML *2html.vim* *convert-to-HTML*
This is not a syntax file itself, but a script that converts the current
window into HTML. Vim opens a new window in which it builds the HTML file.
window into HTML. Vim opens a new window in which it builds the HTML file.
After you save the resulting file, you can view it with any browser. The
colors should be exactly the same as you see them in Vim. You can jump to
specific lines by adding (for example) #L123 or #123 to the end of the URL in
your browser's address bar (#123 only with javascript support). And with
After you save the resulting file, you can view it with any browser. The
colors should be exactly the same as you see them in Vim. With
|g:html_line_ids| you can jump to specific lines by adding (for example) #L123
or #123 to the end of the URL in your browser's address bar. And with
|g:html_dynamic_folds| enabled, you can show or hide the text that is folded
in Vim.
@@ -425,15 +425,14 @@ and last line to be converted. Example, using the last set Visual area: >
|g:html_end_line| to the start and end of the range,
respectively. Default range is the entire buffer.
If the current window is part of a |diff|, unless
|g:html_diff_one_file| is set, :TOhtml will convert
all windows which are part of the diff in the current
tab and place them side-by-side in a <table> element
in the generated HTML. When this happens you can jump
to lines in specific windows with (for example) #W1L42
for line 42 in the first diffed window, or #W3L87 for
line 87 in the third. Omitting the window ID will
default to the first window if javascript is enabled.
If the current window is part of a |diff|, unless
|g:html_diff_one_file| is set, :TOhtml will convert
all windows which are part of the diff in the current
tab and place them side-by-side in a <table> element
in the generated HTML. With |g:html_line_ids| you can
jump to lines in specific windows with (for example)
#W1L42 for line 42 in the first diffed window, or
#W3L87 for line 87 in the third.
Examples: >
@@ -443,9 +442,9 @@ and last line to be converted. Example, using the last set Visual area: >
<
*g:html_diff_one_file*
Default: 0.
When 0, all windows involved in a |diff| in the current tab page are converted
to HTML and placed side-by-side in a <table> element.
When 1, only the current buffer is converted.
When 0, and using |:TOhtml| all windows involved in a |diff| in the current tab
page are converted to HTML and placed side-by-side in a <table> element. When
1, only the current buffer is converted.
Example: >
let g:html_diff_one_file = 1
@@ -494,6 +493,23 @@ Force to omit the line numbers: >
:let g:html_number_lines = 0
Go back to the default to use 'number' by deleting the variable: >
:unlet g:html_number_lines
<
*g:html_line_ids*
Default: 1 if |g:html_number_lines| is set, 0 otherwise.
When 1, adds an HTML id attribute to each line number, or to an empty <span>
inserted for that purpose if no line numbers are shown. This ID attribute
takes the form of L123 for single-buffer HTML pages, or W2L123 for diff-view
pages, and is used to jump to a specific line (in a specific window of a diff
view). Javascript is inserted to open any closed dynamic folds
(|g:html_dynamic_folds|) containing the specificed line before jumping. The
javascript also allows omitting the window ID in the url, and the leading L.
For example: >
page.html#L123 jumps to line 123 in a single-buffer file
page.html#123 does the same
diff.html#W1L42 jumps to line 42 in the first window in a diff
diff.html#42 does the same
<
*g:html_use_css*
Default: 1.
@@ -603,6 +619,25 @@ they will not be openable without a foldcolumn.
>
:let g:html_hover_unfold = 1
<
*g:html_id_expr*
Default: ""
Dynamic folding and jumping to line IDs rely on unique IDs within the document
to work. If generated HTML is copied into a larger document, these IDs are no
longer guaranteed to be unique. Set g:html_id_expr to an expression Vim can
evaluate to get a unique string to append to each ID used in a given document,
so that the full IDs will be unique even when combined with other content in a
larger HTML document. Example, to append _ and the buffer number to each ID: >
:let g:html_id_expr = '"_".bufnr("%")'
<
To append a string "_mystring" to the end of each ID: >
:let g:html_id_expr = '"_mystring"'
<
Note, when converting a diff view to HTML, the expression will only be
evaluated for the first window in the diff, and the result used for all the
windows.
*TOhtml-wrap-text* *g:html_pre_wrap*
Default: current 'wrap' setting.
When 0, if |g:html_no_pre| is 0 or unset, the text in the generated HTML does
@@ -1318,8 +1353,8 @@ FORTRAN *fortran.vim* *ft-fortran-syntax*
Default highlighting and dialect ~
Highlighting appropriate for Fortran 2008 is used by default. This choice
should be appropriate for most users most of the time because Fortran 2008 is
almost a superset of previous versions (Fortran 2003, 95, 90, and 77).
should be appropriate for most users most of the time because Fortran 2008 is
almost a superset of previous versions (Fortran 2003, 95, 90, and 77).
Fortran source code form ~
Fortran code can be in either fixed or free source form. Note that the
@@ -1410,7 +1445,7 @@ items.
If you use F, the advantage of setting the dialect appropriately is that
other legacy features excluded from F will be highlighted as todo items and
that free source form will be assumed.
that free source form will be assumed.
The dialect can be selected in various ways. If all your fortran files use
the same dialect, set the global variable fortran_dialect in your .vimrc prior
@@ -1444,13 +1479,13 @@ Fortran comment of the form >
For previous versions of the syntax, you may have set fortran_dialect to the
now-obsolete values "f77", "f90", "f95", or "elf". Such settings will be
silently handled as "f08". Users of "elf" may wish to experiment with "F"
instead.
instead.
The syntax/fortran.vim script contains embedded comments that tell you how to
comment and/or uncomment some lines to (a) activate recognition of some
non-standard, vendor-supplied intrinsics and (b) to prevent features deleted
or declared obsolescent in the 2008 standard from being highlighted as todo
items.
items.
Limitations ~
Parenthesis checking does not catch too few closing parentheses. Hollerith
@@ -2197,9 +2232,11 @@ PERL *perl.vim* *ft-perl-syntax*
There are a number of possible options to the perl syntax highlighting.
If you use POD files or POD segments, you might: >
Inline POD highlighting is now turned on by default. If you don't wish
to have the added complexity of highlighting POD embedded within Perl
files, you may set the 'perl_include_pod' option to 0: >
:let perl_include_pod = 1
:let perl_include_pod = 0
The reduce the complexity of parsing (and increase performance) you can switch
off two elements in the parsing of variable names and contents. >
@@ -2252,13 +2289,20 @@ If you want to fold blocks in if statements, etc. as well set the following: >
:let perl_fold_blocks = 1
To avoid folding packages or subs when perl_fold is let, let the appropriate
variable(s): >
Subroutines are folded by default if 'perl_fold' is set. If you do not want
this, you can set 'perl_nofold_subs': >
:unlet perl_nofold_packages
:unlet perl_nofold_subs
:let perl_nofold_subs = 1
Anonymous subroutines are not folded by default; you may enable their folding
via 'perl_fold_anonymous_subs': >
:let perl_fold_anonymous_subs = 1
Packages are also folded by default if 'perl_fold' is set. To disable this
behavior, set 'perl_nofold_packages': >
:let perl_nofold_packages = 1
PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax*
@@ -2481,7 +2525,7 @@ If you want all possible Python highlighting (the same as setting the
preceding last option and unsetting all other ones): >
:let python_highlight_all = 1
Note: only existence of these options matter, not their value. You can replace
Note: only existence of these options matter, not their value. You can replace
1 above with anything.
@@ -2874,9 +2918,24 @@ tcsh_minlines is 100. The disadvantage of using a larger number is that
redrawing can become slow.
TEX *tex.vim* *ft-tex-syntax*
TEX *tex.vim* *ft-tex-syntax* *latex-syntax*
*tex-folding*
Tex Contents~
Tex: Want Syntax Folding? |tex-folding|
Tex: No Spell Checking Wanted |g:tex_nospell|
Tex: Don't Want Spell Checking In Comments? |tex-nospell|
Tex: Want Spell Checking in Verbatim Zones? |tex-verb|
Tex: Run-on Comments or MathZones |tex-runon|
Tex: Slow Syntax Highlighting? |tex-slow|
Tex: Want To Highlight More Commands? |tex-morecommands|
Tex: Excessive Error Highlighting? |tex-error|
Tex: Need a new Math Group? |tex-math|
Tex: Starting a New Style? |tex-style|
Tex: Taking Advantage of Conceal Mode |tex-conceal|
Tex: Selective Conceal Mode |g:tex_conceal|
Tex: Controlling iskeyword |g:tex_isk|
*tex-folding* *g:tex_fold_enabled*
Tex: Want Syntax Folding? ~
As of version 28 of <syntax/tex.vim>, syntax-based folding of parts, chapters,
@@ -2886,24 +2945,27 @@ in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a
modeline at the end of your LaTeX file: >
% vim: fdm=syntax
If your system becomes too slow, then you might wish to look into >
http://vim.wikia.com/wiki/Keep_folds_closed_while_inserting_text
https://vimhelp.appspot.com/vim_faq.txt.html#faq-29.7
<
*tex-nospell*
*g:tex_nospell*
Tex: No Spell Checking Wanted~
If you don't want spell checking anywhere in your LaTeX document, put >
let g:tex_nospell=1
into your .vimrc. If you merely wish to suppress spell checking inside
comments only, see |g:tex_comment_nospell|.
*tex-nospell* *g:tex_comment_nospell*
Tex: Don't Want Spell Checking In Comments? ~
Some folks like to include things like source code in comments and so would
prefer that spell checking be disabled in comments in LaTeX files. To do
this, put the following in your <.vimrc>: >
let g:tex_comment_nospell= 1
The comment lines >
% nospell{
...
% nospell}
will suppress spell checking between them. These comment lines spelling
control are known to be fragile; for example, don't include any of the section
commands (\part, \chapter, \section, \paragraph, etc) inside nospell blocks
or interleave environments (such as math) across nospell blocks.
*tex-verb*
If you want to suppress spell checking everywhere inside your LaTeX document,
see |g:tex_nospell|.
*tex-verb* *g:tex_verbspell*
Tex: Want Spell Checking in Verbatim Zones?~
Often verbatim regions are used for things like source code; seldom does
@@ -2911,7 +2973,7 @@ one want source code spell-checked. However, for those of you who do
want your verbatim zones spell-checked, put the following in your <.vimrc>: >
let g:tex_verbspell= 1
<
*tex-runon*
*tex-runon* *tex-stopzone*
Tex: Run-on Comments or MathZones ~
The <syntax/tex.vim> highlighting supports TeX, LaTeX, and some AmsTeX. The
@@ -2924,7 +2986,7 @@ special "TeX comment" has been provided >
which will forcibly terminate the highlighting of either a texZone or a
texMathZone.
*tex-slow*
*tex-slow* *tex-sync*
Tex: Slow Syntax Highlighting? ~
If you have a slow computer, you may wish to reduce the values for >
@@ -2966,7 +3028,39 @@ selectively to enable just some syntax highlighting: >
As an example, let g:tex_fast= "M" will allow math-associated highlighting
but suppress all the other region-based syntax highlighting.
*tex-morecommands* *tex-package*
Another cause of slow highlighting is due to syntax-driven folding; see
|tex-folding| for a way around this.
*g:tex_fast*
Finally, if syntax highlighting is still too slow, you may set >
:let g:tex_fast= ""
in your .vimrc. Used this way, the g:tex_fast variable causes the syntax
highlighting script to avoid defining any regions and associated
synchronization. The result will be much faster syntax highlighting; the
price: you will no longer have as much highlighting or any syntax-based
folding, and you will be missing syntax-based error checking.
You may decide that some syntax is acceptable; you may use the following table
selectively to enable just some syntax highlighting: >
b : allow bold and italic syntax
c : allow texComment syntax
m : allow texMatcher syntax (ie. {...} and [...])
M : allow texMath syntax
p : allow parts, chapter, section, etc syntax
r : allow texRefZone syntax (nocite, bibliography, label, pageref, eqref)
s : allow superscript/subscript regions
S : allow texStyle syntax
v : allow verbatim syntax
V : allow texNewEnv and texNewCmd syntax
<
As an example, let g:tex_fast= "M" will allow math-associated highlighting
but suppress all the other region-based syntax highlighting.
*tex-morecommands* *tex-package*
Tex: Want To Highlight More Commands? ~
LaTeX is a programmable language, and so there are thousands of packages full
@@ -2978,14 +3072,14 @@ by syntax/tex.vim. Please consider uploading any extensions that you write,
which typically would go in $HOME/after/syntax/tex/[pkgname].vim, to
http://vim.sf.net/.
*tex-error*
*tex-error* *g:tex_no_error*
Tex: Excessive Error Highlighting? ~
The <tex.vim> supports lexical error checking of various sorts. Thus,
although the error checking is ofttimes very useful, it can indicate
errors where none actually are. If this proves to be a problem for you,
you may put in your <.vimrc> the following statement: >
let tex_no_error=1
let g:tex_no_error=1
and all error checking by <syntax/tex.vim> will be suppressed.
*tex-math*
@@ -3003,7 +3097,7 @@ and then to the call to it in .vim/after/syntax/tex.vim.
The "starform" variable, if true, implies that your new math group
has a starred form (ie. eqnarray*).
*tex-style*
*tex-style* *b:tex_stylish*
Tex: Starting a New Style? ~
One may use "\makeatletter" in *.tex files, thereby making the use of "@" in
@@ -3030,12 +3124,12 @@ In fact, only a few characters are supported as subscripts.
One way to use this is to have vertically split windows (see |CTRL-W_v|); one
with |'conceallevel'| at 0 and the other at 2; and both using |'scrollbind'|.
*g:tex_conceal*
*g:tex_conceal*
Tex: Selective Conceal Mode~
You may selectively use conceal mode by setting g:tex_conceal in your
<.vimrc>. By default it is set to "admgs" to enable conceal for the
following sets of characters: >
<.vimrc>. By default, g:tex_conceal is set to "admgs" to enable concealment
for the following sets of characters: >
a = accents/ligatures
b = bold and italic
@@ -3058,7 +3152,7 @@ with one that works for LaTeX.
However, one may override this iskeyword re-setting by setting the
variable, g:tex_isk, in one's .vimrc to whatever one wishes and
it will be used instead.
TF *tf.vim* *ft-tf-syntax*
@@ -3069,6 +3163,26 @@ set "tf_minlines" to the value you desire. Example: >
:let tf_minlines = your choice
*g:tex_isk* *g:tex_stylish*
Tex: Controlling iskeyword~
Normally, LaTeX keywords support 0-9, a-z, A-z, and 192-255 only. Latex
keywords don't support the underscore - except when in *.sty files. The
syntax highlighting script handles this with the following logic:
* If g:tex_stylish exists and is 1
then the file will be treated as a "sty" file, so the "_"
will be allowed as part of keywords
(irregardless of g:tex_isk)
* Else if the file's suffix is sty, cls, clo, dtx, or ltx,
then the file will be treated as a "sty" file, so the "_"
will be allowed as part of keywords
(irregardless of g:tex_isk)
* If g:tex_isk exists, then it will be used for the local 'iskeyword'
* Else the local 'iskeyword' will be set to 48-57,a-z,A-Z,192-255
VIM *vim.vim* *ft-vim-syntax*
*g:vimsyn_minlines* *g:vimsyn_maxlines*
@@ -4936,7 +5050,7 @@ restoring "b:current_syntax", since the syntax files do set
"w:current_syntax".
Once a window has its own syntax, syntax commands executed from other windows
on the same buffer (including :syntax clear) have no effect. Conversely,
on the same buffer (including :syntax clear) have no effect. Conversely,
syntax commands executed from that window do not affect other windows on the
same buffer.
@@ -5141,9 +5255,9 @@ When using the "\@<=" and "\@<!" items, add a maximum size to avoid trying at
all positions in the current and previous line. For example, if the item is
literal text specify the size of that text (in bytes):
"<\@<=span" Matches "span" in "<span". This tries matching with "<" in
"<\@<=span" Matches "span" in "<span". This tries matching with "<" in
many places.
"<\@1<=span" Matches the same, but only tries one byte before "span".
"<\@1<=span" Matches the same, but only tries one byte before "span".
vim:tw=78:sw=4:ts=8:ft=help:norl:
+18
View File
@@ -4858,6 +4858,7 @@ b:changedtick eval.txt /*b:changedtick*
b:changelog_name filetype.txt /*b:changelog_name*
b:current_syntax-variable syntax.txt /*b:current_syntax-variable*
b:netrw_lastfile pi_netrw.txt /*b:netrw_lastfile*
b:tex_stylish syntax.txt /*b:tex_stylish*
b:var eval.txt /*b:var*
baan-folding syntax.txt /*baan-folding*
baan-syntax syntax.txt /*baan-syntax*
@@ -5719,6 +5720,7 @@ format-comments change.txt /*format-comments*
formatting change.txt /*formatting*
formfeed intro.txt /*formfeed*
fortran.vim syntax.txt /*fortran.vim*
friendship intro.txt /*friendship*
frombook usr_01.txt /*frombook*
ft-abel-syntax syntax.txt /*ft-abel-syntax*
ft-ada-commands ft_ada.txt /*ft-ada-commands*
@@ -5946,8 +5948,10 @@ g:html_encoding_override syntax.txt /*g:html_encoding_override*
g:html_end_line syntax.txt /*g:html_end_line*
g:html_expand_tabs syntax.txt /*g:html_expand_tabs*
g:html_hover_unfold syntax.txt /*g:html_hover_unfold*
g:html_id_expr syntax.txt /*g:html_id_expr*
g:html_ignore_conceal syntax.txt /*g:html_ignore_conceal*
g:html_ignore_folding syntax.txt /*g:html_ignore_folding*
g:html_line_ids syntax.txt /*g:html_line_ids*
g:html_no_foldcolumn syntax.txt /*g:html_no_foldcolumn*
g:html_no_invalid syntax.txt /*g:html_no_invalid*
g:html_no_pre syntax.txt /*g:html_no_pre*
@@ -6051,10 +6055,18 @@ g:tar_nomax pi_tar.txt /*g:tar_nomax*
g:tar_readoptions pi_tar.txt /*g:tar_readoptions*
g:tar_secure pi_tar.txt /*g:tar_secure*
g:tar_writeoptions pi_tar.txt /*g:tar_writeoptions*
g:tex_comment_nospell syntax.txt /*g:tex_comment_nospell*
g:tex_conceal syntax.txt /*g:tex_conceal*
g:tex_fast syntax.txt /*g:tex_fast*
g:tex_fast syntax.txt /*g:tex_fast*
g:tex_flavor filetype.txt /*g:tex_flavor*
g:tex_fold_enabled syntax.txt /*g:tex_fold_enabled*
g:tex_isk syntax.txt /*g:tex_isk*
g:tex_isk syntax.txt /*g:tex_isk*
g:tex_no_error syntax.txt /*g:tex_no_error*
g:tex_nospell syntax.txt /*g:tex_nospell*
g:tex_stylish syntax.txt /*g:tex_stylish*
g:tex_verbspell syntax.txt /*g:tex_verbspell*
g:var eval.txt /*g:var*
g:vimball_home pi_vimball.txt /*g:vimball_home*
g:vimball_mkdir pi_vimball.txt /*g:vimball_mkdir*
@@ -6188,6 +6200,7 @@ graphic-option-gone version4.txt /*graphic-option-gone*
greek options.txt /*greek*
grep quickfix.txt /*grep*
groff.vim syntax.txt /*groff.vim*
gross-national-happiness intro.txt /*gross-national-happiness*
group-name syntax.txt /*group-name*
gs various.txt /*gs*
gsp.vim syntax.txt /*gsp.vim*
@@ -6670,6 +6683,7 @@ language-mapping map.txt /*language-mapping*
last-pattern pattern.txt /*last-pattern*
last-position-jump eval.txt /*last-position-jump*
last_buffer_nr() eval.txt /*last_buffer_nr()*
latex-syntax syntax.txt /*latex-syntax*
lc_time-variable eval.txt /*lc_time-variable*
lcs-conceal options.txt /*lcs-conceal*
lcs-eol options.txt /*lcs-eol*
@@ -6723,6 +6737,7 @@ location-list-window quickfix.txt /*location-list-window*
log() eval.txt /*log()*
log10() eval.txt /*log10()*
long-lines version5.txt /*long-lines*
love intro.txt /*love*
lowercase change.txt /*lowercase*
lpc.vim syntax.txt /*lpc.vim*
lua if_lua.txt /*lua*
@@ -7335,6 +7350,7 @@ pattern-searches pattern.txt /*pattern-searches*
pattern.txt pattern.txt /*pattern.txt*
patterns-composing pattern.txt /*patterns-composing*
pdev-option print.txt /*pdev-option*
peace intro.txt /*peace*
penc-option print.txt /*penc-option*
perl if_perl.txt /*perl*
perl-Append if_perl.txt /*perl-Append*
@@ -8277,7 +8293,9 @@ tex-nospell syntax.txt /*tex-nospell*
tex-package syntax.txt /*tex-package*
tex-runon syntax.txt /*tex-runon*
tex-slow syntax.txt /*tex-slow*
tex-stopzone syntax.txt /*tex-stopzone*
tex-style syntax.txt /*tex-style*
tex-sync syntax.txt /*tex-sync*
tex-verb syntax.txt /*tex-verb*
tex.vim syntax.txt /*tex.vim*
text-functions usr_41.txt /*text-functions*
+22 -9
View File
@@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.3. Last change: 2013 Jun 15
*todo.txt* For Vim version 7.3. Last change: 2013 Jun 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -36,6 +36,10 @@ not be repeated below, unless there is extra information.
--- Python interface
Test 86 fails on MS-Windows, using backslashes instead of forward slashes.
(Taro Muraoka, 2013 Jun 24)
Can we fix this in code instead of in the test?
Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
Win32: The Python interface only works with one version of Python, selected at
@@ -51,22 +55,23 @@ Does not work, tests fail.
--- bug fixes
Do allow real tags above the !_TAG entries. Undo older patch. Issue 90.
Matches might be highlighted correctly. Inefficient patch by Christian
Brabandt, 2013 Feb 26.
Patch to use bold/italic fonts when 'guifontewide' is set. (Ken Takata, 2013
Mar 31)
Problem with winfixheight and resizing. (Yukihiro Nakadaira, 2011 Sep 17)
Patch Sep 18.
Patch for IME problems. Remove hacking code for old IM. (Yukihiro Nakadaira,
2012 Jul 20)
Modeline is not triggered when using Vim: instead of vim:. It's very hard to
see why it doesn't work.
Patch to fix finding toolbar bitmaps. Issue 129.
Patch 7.3.1200 doesn't fix the problem in all cases. (Hirohito Higashi, 2013
Jun 24)
Patch to avoid clang warnings when building with Athena.
(Dominique Pelle, 2013 Jun 22)
Suggestion to remove __QNXNTO__ in gui.c. (Sean Boudreau, 2013 Jun 7)
Combining characters are not used when executing a register with :@w.
@@ -106,6 +111,9 @@ Patch by Christian Wellenbrock, 2013 Jun 2. Update Jun 3 (second one).
Patch to fix glob() and globpath() with escaped special characters.
(Adnan Zafar, 2013 Jun 2, tests Jun 3)
Bug in findfile() directory matching. (Markus Braun Ben Fritz, 2013 Jun 20)
Patch by Christian Brabandt (2013 Jun 22)
---- Fixes to be included before 7.4 above, less important stuff below ----
Patch to make has() check for Vim version and patch at the same time.
@@ -158,6 +166,9 @@ Patch to view coverage of the tests. (Nazri Ramliy, 2013 Feb 15)
Patch to invert characters differently in GTK. (Yukihiro Nakadaira, 2013 May
5)
Patch to add "Q" and "A" responses to interactive :substitute. They are
carried over when using :global. (Christian Brabandt, 2013 Jun 19)
Bug with 'cursorline' in diff mode. Line being scrolled into view gets
highlighted as the cursor line. (Alessandro Ivaldi, 2013 Jun 4)
@@ -268,6 +279,8 @@ MS-Windows resizing problems:
Patch to append regexp to tag commands to make it possible to select one out
of many matches. (Cody Cutler, 2013 Mar 28)
Patch to add tagfunc(). Cleaned up by Christian Brabandt, 2013 Jun 22.
Help for 'b:undo_indent'. (Thilo Six, 2012 May 28)
Also question if examples are correct.
+18 -1
View File
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2013 Jun 12
" Last Change: 2013 Jun 24
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -930,6 +930,23 @@ au BufNewFile,BufRead *.inf,*.INF setf inform
" Initng
au BufNewFile,BufRead */etc/initng/**/*.i,*.ii setf initng
" Innovation Data Processing
au BufRead,BufNewFile UPSTREAM.DAT,upstream.dat setf upstreamdat
au BufRead,BufNewFile UPSTREAM.*.DAT,upstream.*.dat setf upstreamdat
au BufRead,BufNewFile *.UPSTREAM.DAT,*.upstream.dat setf upstreamdat
au BufRead,BufNewFile UPSTREAM.LOG,upstream.log setf upstreamlog
au BufRead,BufNewFile UPSTREAM.*.LOG,upstream.*.log setf upstreamlog
au BufRead,BufNewFile *.UPSTREAM.LOG,*.upstream.log setf upstreamlog
au BufRead,BufNewFile UPSTREAMInstall.log,upstreaminstall.log setf upstreaminstalllog
au BufRead,BufNewFile UPSTREAMInstall.*.log,upstreaminstall.*.log setf upstreaminstalllog
au BufRead,BufNewFile *.UPSTREAMInstall.log,*.upstreaminstall.log setf upstreaminstalllog
au BufRead,BufNewFile USSERVER.LOG,usserver.log setf usserverlog
au BufRead,BufNewFile USSERVER.*.LOG,usserver.*.log setf usserverlog
au BufRead,BufNewFile *.USSERVER.LOG,*.usserver.log setf usserverlog
au BufRead,BufNewFile USW2KAgt.log,usw2kagt.log setf usw2kagtlog
au BufRead,BufNewFile USW2KAgt.*.log,usw2kagt.*.log setf usw2kagtlog
au BufRead,BufNewFile *.USW2KAgt.log,*.usw2kagt.log setf usw2kagtlog
" Ipfilter
au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules setf ipfilter
+9 -9
View File
@@ -2,7 +2,7 @@
" Language: Python
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Original Author: David Bustos <bustos@caltech.edu>
" Last Change: 2012 May 01
" Last Change: 2013 Jun 21
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -36,7 +36,7 @@ function GetPythonIndent(lnum)
if a:lnum > 1 && getline(a:lnum - 2) =~ '\\$'
return indent(a:lnum - 1)
endif
return indent(a:lnum - 1) + (exists("g:pyindent_continue") ? eval(g:pyindent_continue) : (&sw * 2))
return indent(a:lnum - 1) + (exists("g:pyindent_continue") ? eval(g:pyindent_continue) : (shiftwidth() * 2))
endif
" If the start of the line is in a string don't change the indent.
@@ -89,9 +89,9 @@ function GetPythonIndent(lnum)
\ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
\ . " =~ '\\(Comment\\|String\\)$'")
if pp > 0
return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : &sw)
return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : shiftwidth())
endif
return indent(plnum) + (exists("g:pyindent_open_paren") ? eval(g:pyindent_open_paren) : (&sw * 2))
return indent(plnum) + (exists("g:pyindent_open_paren") ? eval(g:pyindent_open_paren) : (shiftwidth() * 2))
endif
if plnumstart == p
return indent(plnum)
@@ -134,15 +134,15 @@ function GetPythonIndent(lnum)
" If the previous line ended with a colon, indent this line
if pline =~ ':\s*$'
return plindent + &sw
return plindent + shiftwidth()
endif
" If the previous line was a stop-execution statement...
if getline(plnum) =~ '^\s*\(break\|continue\|raise\|return\|pass\)\>'
" See if the user has already dedented
if indent(a:lnum) > indent(plnum) - &sw
if indent(a:lnum) > indent(plnum) - shiftwidth()
" If not, recommend one dedent
return indent(plnum) - &sw
return indent(plnum) - shiftwidth()
endif
" Otherwise, trust the user
return -1
@@ -173,11 +173,11 @@ function GetPythonIndent(lnum)
endif
" Or the user has already dedented
if indent(a:lnum) <= plindent - &sw
if indent(a:lnum) <= plindent - shiftwidth()
return -1
endif
return plindent - &sw
return plindent - shiftwidth()
endif
" When after a () construct we probably want to go back to the start line.
+9 -3
View File
@@ -1,6 +1,6 @@
" Vim plugin for converting a syntax highlighted file to HTML.
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2013 May 31
" Last Change: 2013 Jun 12
"
" The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and
" $VIMRUNTIME/syntax/2html.vim
@@ -67,12 +67,18 @@
if exists('g:loaded_2html_plugin')
finish
endif
let g:loaded_2html_plugin = 'vim7.3_v13'
let g:loaded_2html_plugin = 'vim7.3_v14'
"
" Changelog: {{{
"
" 7.3_v13 (this version): Keep foldmethod at manual in the generated file and
" 7.3_v14 (this version): Allow suppressing empty <span> created for line
" number anchors when line numbers are not included,
" using g:html_empty_anchors=0. Allow customizing
" important IDs (like line IDs and fold IDs) using
" g:html_id_expr evalutated when the buffer conversion
" is started.
" 7.3_v13 (2eb30f341e8d): Keep foldmethod at manual in the generated file and
" insert modeline to set it to manual.
" Fix bug: diff mode with 2 unsaved buffers creates a
" duplicate of one buffer instead of including both.
+6 -1
View File
@@ -2,7 +2,7 @@
" This file is normally sourced from menu.vim.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2010 Jul 26
" Last Change: 2013 Jun 24
" Define the SetSyn function, used for the Syntax menu entries.
" Set 'filetype' and also 'syntax' if it is manually selected.
@@ -243,6 +243,11 @@ an 50.50.360 &Syntax.HIJK.Informix\ 4GL :cal SetSyn("fgl")<CR>
an 50.50.370 &Syntax.HIJK.Initng :cal SetSyn("initng")<CR>
an 50.50.380 &Syntax.HIJK.Inittab :cal SetSyn("inittab")<CR>
an 50.50.390 &Syntax.HIJK.Inno\ setup :cal SetSyn("iss")<CR>
an 50.50.393 &Syntax.HIJK.Innovation\ Data\ Processing.Upstream\ dat :cal SetSyn ("upstreamdat")<CR>
an 50.50.394 &Syntax.HIJK.Innovation\ Data\ Processing.Upstream\ log :cal SetSyn ("upstreamlog")<CR>
an 50.50.395 &Syntax.HIJK.Innovation\ Data\ Processing.Upstream\ Install\ log :cal SetSyn ("upstreaminstalllog")<CR>
an 50.50.396 &Syntax.HIJK.Innovation\ Data\ Processing.Usserver\ log :cal SetSyn ("usserverlog")<CR>
an 50.50.397 &Syntax.HIJK.Innovation\ Data\ Processing.USW2KAgt\ log :cal SetSyn ("usw2kagtlog")<CR>
an 50.50.400 &Syntax.HIJK.InstallShield\ script :cal SetSyn("ishd")<CR>
an 50.50.410 &Syntax.HIJK.Interactive\ Data\ Lang :cal SetSyn("idlang")<CR>
an 50.50.420 &Syntax.HIJK.IPfilter :cal SetSyn("ipfilter")<CR>
+83 -69
View File
@@ -1,6 +1,6 @@
" Vim syntax support file
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2013 May 31
" Last Change: 2013 Jun 19
"
" Additional contributors:
"
@@ -450,30 +450,42 @@ endfun
" element is supposed to be unselectable or not
if s:settings.prevent_copy =~# 'n'
if s:settings.number_lines
function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
if a:lnr > 0
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.'" ', 1)
else
if s:settings.line_ids
function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
if a:lnr > 0
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 1)
else
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1)
endif
endfun
else
function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1)
endif
endfun
else
endfun
endif
elseif s:settings.line_ids
" if lines are not being numbered the only reason this function gets called
" is to put the line IDs on each line; "text" will be emtpy but lnr will
" always be non-zero, however we don't want to use the <input> because that
" won't work as nice for empty text
function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.'" ', 0)
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 0)
endfun
endif
else
function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
if a:lnr > 0
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.'" ', 0)
else
if s:settings.line_ids
function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
if a:lnr > 0
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 0)
else
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0)
endif
endfun
else
function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0)
endif
endfun
endfun
endif
endif
if s:settings.prevent_copy =~# 'd'
function! s:HtmlFormat_d(text, style_id, diff_style_id)
@@ -818,50 +830,52 @@ if s:settings.dynamic_folds
\ ])
endif
" insert javascript to get IDs from line numbers, and to open a fold before
" jumping to any lines contained therein
call extend(s:lines, [
\ "",
\ "/* function to open any folds containing a jumped-to line before jumping to it */",
\ "function JumpToLine()",
\ "{",
\ " var lineNum;",
\ " lineNum = window.location.hash;",
\ " lineNum = lineNum.substr(1); /* strip off '#' */",
\ "",
\ " if (lineNum.indexOf('L') == -1) {",
\ " lineNum = 'L'+lineNum;",
\ " }",
\ " lineElem = document.getElementById(lineNum);"
\ ])
if s:settings.dynamic_folds
if s:settings.line_ids
" insert javascript to get IDs from line numbers, and to open a fold before
" jumping to any lines contained therein
call extend(s:lines, [
\ "",
\ " /* navigate upwards in the DOM tree to open all folds containing the line */",
\ " var node = lineElem;",
\ " while (node && node.id != 'vimCodeElement')",
\ " {",
\ " if (node.className == 'closed-fold')",
\ " {",
\ " node.className = 'open-fold';",
\ " }",
\ " node = node.parentNode;",
\ "/* function to open any folds containing a jumped-to line before jumping to it */",
\ "function JumpToLine()",
\ "{",
\ " var lineNum;",
\ " lineNum = window.location.hash;",
\ " lineNum = lineNum.substr(1); /* strip off '#' */",
\ "",
\ " if (lineNum.indexOf('L') == -1) {",
\ " lineNum = 'L'+lineNum;",
\ " }",
\ " lineElem = document.getElementById(lineNum);"
\ ])
if s:settings.dynamic_folds
call extend(s:lines, [
\ "",
\ " /* navigate upwards in the DOM tree to open all folds containing the line */",
\ " var node = lineElem;",
\ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
\ " {",
\ " if (node.className == 'closed-fold')",
\ " {",
\ " node.className = 'open-fold';",
\ " }",
\ " node = node.parentNode;",
\ " }",
\ ])
endif
call extend(s:lines, [
\ " /* Always jump to new location even if the line was hidden inside a fold, or",
\ " * we corrected the raw number to a line ID.",
\ " */",
\ " if (lineElem) {",
\ " lineElem.scrollIntoView(true);",
\ " }",
\ " return true;",
\ "}",
\ "if ('onhashchange' in window) {",
\ " window.onhashchange = JumpToLine;",
\ "}"
\ ])
endif
call extend(s:lines, [
\ " /* Always jump to new location even if the line was hidden inside a fold, or",
\ " * we corrected the raw number to a line ID.",
\ " */",
\ " if (lineElem) {",
\ " lineElem.scrollIntoView(true);",
\ " }",
\ " return true;",
\ "}",
\ "if ('onhashchange' in window) {",
\ " window.onhashchange = JumpToLine;",
\ "}"
\ ])
" Small text columns like the foldcolumn and line number column need a weird
" hack to work around Webkit's and (in versions prior to 9) IE's lack of support
@@ -914,9 +928,9 @@ if !empty(s:settings.prevent_copy)
\ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;',
\ ' if (inputWidth > goodWidth) {',
\ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {',
\ ' ratio += 5;',
\ ' }',
\ ' document.getElementById("vimCodeElement").className = "em"+ratio;',
\ ' ratio += 5;',
\ ' }',
\ ' document.getElementById("vimCodeElement'.s:settings.id_suffix.'").className = "em"+ratio;',
\ ' }',
\ '}'
\ ])
@@ -932,22 +946,22 @@ call extend(s:lines, [
call extend(s:lines, ["</head>"])
if !empty(s:settings.prevent_copy)
call extend(s:lines,
\ ["<body onload='FixCharWidth(); JumpToLine();'>",
\ ["<body onload='FixCharWidth();".(s:settings.line_ids ? " JumpToLine();" : "")."'>",
\ "<!-- hidden divs used by javascript to get the width of a char -->",
\ "<div id='oneCharWidth'>0</div>",
\ "<div id='oneInputWidth'><input size='1' value='0'".s:tag_close."</div>",
\ "<div id='oneEmWidth' style='width: 1em;'></div>"
\ ])
else
call extend(s:lines, ["<body onload='JumpToLine();'>"])
call extend(s:lines, ["<body".(s:settings.line_ids ? " onload='JumpToLine();'" : "").">"])
endif
if s:settings.no_pre
" if we're not using CSS we use a font tag which can't have a div inside
if s:settings.use_css
call extend(s:lines, ["<div id='vimCodeElement'>"])
call extend(s:lines, ["<div id='vimCodeElement".s:settings.id_suffix."'>"])
endif
else
call extend(s:lines, ["<pre id='vimCodeElement'>"])
call extend(s:lines, ["<pre id='vimCodeElement".s:settings.id_suffix."'>"])
endif
exe s:orgwin . "wincmd w"
@@ -1364,7 +1378,7 @@ while s:lnum <= s:end
let s:foldId = s:foldId + 1
let s:new .= "<span id='"
let s:new .= (exists('g:html_diff_win_num') ? "win".g:html_diff_win_num : "")
let s:new .= "fold".s:foldId."' class='".s:allfolds[0].type."'>"
let s:new .= "fold".s:foldId.s:settings.id_suffix."' class='".s:allfolds[0].type."'>"
" Unless disabled, add a fold column for the opening line of a fold.
@@ -1376,19 +1390,19 @@ while s:lnum <= s:end
" add fold column that can open the new fold
if s:allfolds[0].level > 1 && s:firstfold
let s:new = s:new . s:FoldColumn_build('|', s:allfolds[0].level - 1, 0, "",
\ 'toggle-open FoldColumn','javascript:toggleFold("fold'.s:foldstack[0].id.'");')
\ 'toggle-open FoldColumn','javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
endif
" add the filler spaces separately from the '+' char so that it can be
" shown/hidden separately during a hover unfold
let s:new = s:new . s:FoldColumn_build("+", 1, 0, "",
\ 'toggle-open FoldColumn', 'javascript:toggleFold("fold'.s:foldId.'");')
\ 'toggle-open FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
" If this is not the last fold we're opening on this line, we need
" to keep the filler spaces hidden if the fold is opened by mouse
" hover. If it is the last fold to open in the line, we shouldn't hide
" them, so don't apply the toggle-filler class.
let s:new = s:new . s:FoldColumn_build(" ", 1, s:foldcolumn - s:allfolds[0].level - 1, "",
\ 'toggle-open FoldColumn'. (get(s:allfolds, 1, {'firstline': 0}).firstline == s:lnum ?" toggle-filler" :""),
\ 'javascript:toggleFold("fold'.s:foldId.'");')
\ 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
" add fold column that can close the new fold
" only add extra blank space if we aren't opening another fold on the
@@ -1402,11 +1416,11 @@ while s:lnum <= s:end
" the first fold in a line has '|' characters from folds opened in
" previous lines, before the '-' for this fold
let s:new .= s:FoldColumn_build('|', s:allfolds[0].level - 1, s:extra_space, '-',
\ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.'");')
\ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
else
" any subsequent folds in the line only add a single '-'
let s:new = s:new . s:FoldColumn_build("-", 1, s:extra_space, "",
\ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.'");')
\ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
endif
let s:firstfold = 0
endif
@@ -1440,7 +1454,7 @@ while s:lnum <= s:end
" add the fold column for folds not on the opening line
if get(s:foldstack, 0).firstline < s:lnum
let s:new = s:new . s:FoldColumn_build('|', s:foldstack[0].level, s:foldcolumn - s:foldstack[0].level, "",
\ 'FoldColumn', 'javascript:toggleFold("fold'.s:foldstack[0].id.'");')
\ 'FoldColumn', 'javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
endif
endif
endif
@@ -1449,7 +1463,7 @@ while s:lnum <= s:end
" Now continue with the unfolded line text
if s:settings.number_lines
let s:new = s:new . s:HtmlFormat_n(s:numcol, s:LINENR_ID, 0, s:lnum)
else
elseif s:settings.line_ids
let s:new = s:new . s:HtmlFormat_n("", s:LINENR_ID, 0, s:lnum)
endif
+6 -4
View File
@@ -2,8 +2,7 @@
" Language: Clean
" Author: Pieter van Engelen <pietere@sci.kun.nl>
" Co-Author: Arthur van Leeuwen <arthurvl@sci.kun.nl>
" Previous Change: 2011 Dec 25 by Thilo Six
" Last Change: 2013 Apr 25 by Jurriën Stutterheim
" Last Change: 2013 Jun 19 by Jurriën Stutterheim
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@ -19,7 +18,6 @@ set cpo&vim
" Some Clean-keywords
syn keyword cleanConditional if case
syn keyword cleanLabel let! with where in of
syn keyword cleanInclude from import qualified
syn keyword cleanSpecial Start
syn keyword cleanKeyword infixl infixr infix
syn keyword cleanBasicType Int Real Char Bool String
@@ -27,6 +25,10 @@ syn keyword cleanSpecialType World ProcId Void Files File
syn keyword cleanModuleSystem module implementation definition system
syn keyword cleanTypeClass class instance export
" Import highlighting
syn region cleanIncludeRegion start="^\s*\(from\|import\|\s\+\(as\|qualified\)\)" end="\n" contains=cleanIncludeKeyword keepend
syn keyword cleanIncludeKeyword contained from import as qualified
" To do some Denotation Highlighting
syn keyword cleanBoolDenot True False
syn region cleanStringDenot start=+"+ end=+"+
@@ -75,7 +77,7 @@ if version >= 508 || !exists("did_clean_syntax_init")
HiLink cleanLabel Label
HiLink cleanKeyword Keyword
" Generic Preprocessing
HiLink cleanInclude Include
HiLink cleanIncludeKeyword Include
HiLink cleanModuleSystem PreProc
" Type
HiLink cleanBasicType Type
+11 -11
View File
@@ -12,23 +12,23 @@ elseif exists("b:current_syntax")
endif
"All options
:syntax keyword esmtprcOptions hostname username password starttls certificate_passphrase preconnect identity mda
syntax keyword esmtprcOptions hostname username password starttls certificate_passphrase preconnect identity mda
"All keywords
:syntax keyword esmtprcIdentifier default enabled disabled required
syntax keyword esmtprcIdentifier default enabled disabled required
"We're trying to be smarer than /."*@.*/ :)
:syntax match esmtprcAddress /[a-z0-9_.-]*[a-z0-9]\+@[a-z0-9_.-]*[a-z0-9]\+\.[a-z]\+/
:syntax match esmtprcFulladd /[a-z0-9_.-]*[a-z0-9]\+\.[a-z]\+:[0-9]\+/
syntax match esmtprcAddress /[a-z0-9_.-]*[a-z0-9]\+@[a-z0-9_.-]*[a-z0-9]\+\.[a-z]\+/
syntax match esmtprcFulladd /[a-z0-9_.-]*[a-z0-9]\+\.[a-z]\+:[0-9]\+/
"String..
:syntax region esmtprcString start=/"/ end=/"/
syntax region esmtprcString start=/"/ end=/"/
:highlight link esmtprcOptions Label
:highlight link esmtprcString String
:highlight link esmtprcAddress Type
:highlight link esmtprcIdentifier Identifier
:highlight link esmtprcFulladd Include
highlight link esmtprcOptions Label
highlight link esmtprcString String
highlight link esmtprcAddress Type
highlight link esmtprcIdentifier Identifier
highlight link esmtprcFulladd Include
let b:current_syntax="esmtprc"
let b:current_syntax = "esmtprc"
+296
View File
@@ -0,0 +1,296 @@
" Vim syntax file
" Language: Innovation Data Processing upstream.dat file
" Maintainer: Rob Owens <rowens@fdrinnovation.com>
" Latest Revision: 2013-06-17
" Quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
syn keyword upstreamdat_Parameter ACCEPTPCREMOTE
syn keyword upstreamdat_Parameter ACCEPTREMOTE
syn keyword upstreamdat_Parameter ACTION
syn keyword upstreamdat_Parameter ACTIVATEONENTRY
syn keyword upstreamdat_Parameter ARCHIVEBIT
syn keyword upstreamdat_Parameter ARCHIVEBIT
syn keyword upstreamdat_Parameter ASCTOEBC
syn keyword upstreamdat_Parameter ASRBACKUP
syn keyword upstreamdat_Parameter ATTENDED
syn keyword upstreamdat_Parameter AUTHORITATIVE
syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE
syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE
syn keyword upstreamdat_Parameter BACKUPPROFILE
syn keyword upstreamdat_Parameter BACKUPPROFILE2
syn keyword upstreamdat_Parameter BACKUPREPARSEFILES
syn keyword upstreamdat_Parameter BACKUPREPARSEFILES
syn keyword upstreamdat_Parameter BACKUPVERIFY
syn keyword upstreamdat_Parameter BLANKTRUNC
syn keyword upstreamdat_Parameter CALCDASDSIZE
syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS
syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS
syn keyword upstreamdat_Parameter COMPRESSLEVEL
syn keyword upstreamdat_Parameter CONTROLFILE
syn keyword upstreamdat_Parameter DASDOVERRIDE
syn keyword upstreamdat_Parameter DATELIMIT
syn keyword upstreamdat_Parameter DATELIMIT
syn keyword upstreamdat_Parameter DAYSOLD
syn keyword upstreamdat_Parameter DAYSOLD
syn keyword upstreamdat_Parameter DELETED
syn keyword upstreamdat_Parameter DELETED
syn keyword upstreamdat_Parameter DELETEPROMPTS
syn keyword upstreamdat_Parameter DELETEPROMPTS
syn keyword upstreamdat_Parameter DESTINATION
syn keyword upstreamdat_Parameter DESTINATION
syn keyword upstreamdat_Parameter DIRDELETE
syn keyword upstreamdat_Parameter DIRECTORVMC
syn keyword upstreamdat_Parameter DIRONLYRESTOREOK
syn keyword upstreamdat_Parameter DIRSONLY
syn keyword upstreamdat_Parameter DIRSONLY
syn keyword upstreamdat_Parameter DISASTERRECOVERY
syn keyword upstreamdat_Parameter DISPLAY
syn keyword upstreamdat_Parameter DRIVEALIAS
syn keyword upstreamdat_Parameter DRIVEALIAS
syn keyword upstreamdat_Parameter DUALCOPY
syn keyword upstreamdat_Parameter DUPDAYS
syn keyword upstreamdat_Parameter DUPLICATE
syn keyword upstreamdat_Parameter EBCTOASC
syn keyword upstreamdat_Parameter ENCRYPT
syn keyword upstreamdat_Parameter ENCRYPTLEVEL
syn keyword upstreamdat_Parameter EXCLUDELISTNAME
syn keyword upstreamdat_Parameter FAILBACKUPONERROR
syn keyword upstreamdat_Parameter FAILBACKUPONERROR
syn keyword upstreamdat_Parameter FAILIFNOFILES
syn keyword upstreamdat_Parameter FAILIFNOFILES
syn keyword upstreamdat_Parameter FAILIFSKIP
syn keyword upstreamdat_Parameter FAILJOB
syn keyword upstreamdat_Parameter FAILRESTOREONERROR
syn keyword upstreamdat_Parameter FAILRESTOREONERROR
syn keyword upstreamdat_Parameter FILEDATE
syn keyword upstreamdat_Parameter FILEDATE
syn keyword upstreamdat_Parameter FILEDELETE
syn keyword upstreamdat_Parameter FILEDELETE
syn keyword upstreamdat_Parameter FILES
syn keyword upstreamdat_Parameter FILES
syn keyword upstreamdat_Parameter FILESOPENFORUPDAT
syn keyword upstreamdat_Parameter FILESOPENFORUPDAT
syn keyword upstreamdat_Parameter FILETRANSFER
syn keyword upstreamdat_Parameter GETREMOTEFILES
syn keyword upstreamdat_Parameter HARDLINKDB
syn keyword upstreamdat_Parameter HARDLINKS
syn keyword upstreamdat_Parameter HARDLINKS
syn keyword upstreamdat_Parameter HIDDENFILES
syn keyword upstreamdat_Parameter HIDDENFILES
syn keyword upstreamdat_Parameter HOLDTAPE
syn keyword upstreamdat_Parameter HOLDUSERDIRS
syn keyword upstreamdat_Parameter HOSTFILENAME
syn keyword upstreamdat_Parameter HOSTRECORD
syn keyword upstreamdat_Parameter HOSTSORT
syn keyword upstreamdat_Parameter IGNOREPLUGINSFORRESTORE
syn keyword upstreamdat_Parameter INCRDB
syn keyword upstreamdat_Parameter INCRDBARCHIVEBIT
syn keyword upstreamdat_Parameter INCRDBDELETEDFILES
syn keyword upstreamdat_Parameter INCREMENTAL
syn keyword upstreamdat_Parameter INCREMENTAL
syn keyword upstreamdat_Parameter INQOPTIONS
syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT
syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT
syn keyword upstreamdat_Parameter JOBOPTIONS
syn keyword upstreamdat_Parameter JOBRETURNCODEMAP
syn keyword upstreamdat_Parameter JOBWAITTIMELIMIT
syn keyword upstreamdat_Parameter KEEPALIVE
syn keyword upstreamdat_Parameter LANINTERFACE
syn keyword upstreamdat_Parameter LANWSNAME
syn keyword upstreamdat_Parameter LANWSPASSWORD
syn keyword upstreamdat_Parameter LASTACCESS
syn keyword upstreamdat_Parameter LASTACCESS
syn keyword upstreamdat_Parameter LATESTDATE
syn keyword upstreamdat_Parameter LATESTDATE
syn keyword upstreamdat_Parameter LATESTTIME
syn keyword upstreamdat_Parameter LATESTTIME
syn keyword upstreamdat_Parameter LATESTVERSION
syn keyword upstreamdat_Parameter LINEBLOCK
syn keyword upstreamdat_Parameter LINETRUNC
syn keyword upstreamdat_Parameter LISTENFORREMOTE
syn keyword upstreamdat_Parameter LOCALBACKUP
syn keyword upstreamdat_Parameter LOCALBACKUPDIR
syn keyword upstreamdat_Parameter LOCALBACKUPMAX
syn keyword upstreamdat_Parameter LOCALBACKUPMAXFILESIZE
syn keyword upstreamdat_Parameter LOCALBACKUPMAXSIZE
syn keyword upstreamdat_Parameter LOCALEXCLUDEFILE
syn keyword upstreamdat_Parameter LOCALPARAMETERS
syn keyword upstreamdat_Parameter LOCALPASSWORD
syn keyword upstreamdat_Parameter LOCALRESTORE
syn keyword upstreamdat_Parameter LOCALUSER
syn keyword upstreamdat_Parameter LOFS
syn keyword upstreamdat_Parameter LOGNONFATAL
syn keyword upstreamdat_Parameter MAXBACKUPFILESFAIL
syn keyword upstreamdat_Parameter MAXBACKUPTIME
syn keyword upstreamdat_Parameter MAXDUPS
syn keyword upstreamdat_Parameter MAXFILENAMESIZE
syn keyword upstreamdat_Parameter MAXKFILESIZE
syn keyword upstreamdat_Parameter MAXLOGDAYS
syn keyword upstreamdat_Parameter MAXRESTOREFILESFAIL
syn keyword upstreamdat_Parameter MAXRESTORETIME
syn keyword upstreamdat_Parameter MAXRETRY
syn keyword upstreamdat_Parameter MAXRPTDAYS
syn keyword upstreamdat_Parameter MERGE
syn keyword upstreamdat_Parameter MIGRBITS
syn keyword upstreamdat_Parameter MIGRBITS
syn keyword upstreamdat_Parameter MINCOMPRESSSIZE
syn keyword upstreamdat_Parameter MINIMIZE
syn keyword upstreamdat_Parameter MODIFYFILE
syn keyword upstreamdat_Parameter MOUNTPOINTS
syn keyword upstreamdat_Parameter MOUNTPOINTS
syn keyword upstreamdat_Parameter NDS
syn keyword upstreamdat_Parameter NDS
syn keyword upstreamdat_Parameter NEWFILECOMPARE
syn keyword upstreamdat_Parameter NFSBELOW
syn keyword upstreamdat_Parameter NODATAOK
syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL
syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL
syn keyword upstreamdat_Parameter NONFILEDATABITMAP
syn keyword upstreamdat_Parameter NONFILEDATABITMAP
syn keyword upstreamdat_Parameter NOPOINTRESTORE
syn keyword upstreamdat_Parameter NOSPECINHERITANCE
syn keyword upstreamdat_Parameter NOTIFYEVENTS
syn keyword upstreamdat_Parameter NOTIFYFAILUREATTACHMENT
syn keyword upstreamdat_Parameter NOTIFYSUCCESSATTACHMENT
syn keyword upstreamdat_Parameter NOTIFYTARGETS
syn keyword upstreamdat_Parameter NOUIDGIDNAMES
syn keyword upstreamdat_Parameter NOUIDGIDNAMES
syn keyword upstreamdat_Parameter NOVELLMIGRATE
syn keyword upstreamdat_Parameter NOVELLMIGRATE
syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT
syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT
syn keyword upstreamdat_Parameter NOVELLPROFILE
syn keyword upstreamdat_Parameter NOVELLRECALL
syn keyword upstreamdat_Parameter NTFSADDPERMISSION
syn keyword upstreamdat_Parameter NTFSADDPERMISSION
syn keyword upstreamdat_Parameter NTREGRESTORE
syn keyword upstreamdat_Parameter OSTYPE
syn keyword upstreamdat_Parameter OUTPORT
syn keyword upstreamdat_Parameter PACKFLUSHAFTERFILE
syn keyword upstreamdat_Parameter PACKRECSIZE
syn keyword upstreamdat_Parameter PARAMETER
syn keyword upstreamdat_Parameter PASSWORD
syn keyword upstreamdat_Parameter PATHNAME
syn keyword upstreamdat_Parameter PATHNAME
syn keyword upstreamdat_Parameter PERFORMBITMAP
syn keyword upstreamdat_Parameter PERFORMNUMRECORDS
syn keyword upstreamdat_Parameter PERFORMRECORDSIZE
syn keyword upstreamdat_Parameter PLUGIN
syn keyword upstreamdat_Parameter PLUGIN
syn keyword upstreamdat_Parameter PLUGINPARAMETERS
syn keyword upstreamdat_Parameter PLUGINPARAMETERS
syn keyword upstreamdat_Parameter POSTJOB
syn keyword upstreamdat_Parameter PREJOB
syn keyword upstreamdat_Parameter PRTYCLASS
syn keyword upstreamdat_Parameter PRTYLEVEL
syn keyword upstreamdat_Parameter RECALLCLEANUP
syn keyword upstreamdat_Parameter RECALLOFFLINEFILES
syn keyword upstreamdat_Parameter RECALLOFFLINEFILES
syn keyword upstreamdat_Parameter RECORDSIZE
syn keyword upstreamdat_Parameter REMOTEADDR
syn keyword upstreamdat_Parameter REMOTEAPPLPREF
syn keyword upstreamdat_Parameter REMOTEAPPLRETRY
syn keyword upstreamdat_Parameter REMOTECONNECTTYPE
syn keyword upstreamdat_Parameter REMOTEFLAGS
syn keyword upstreamdat_Parameter REMOTEIPADAPTER
syn keyword upstreamdat_Parameter REMOTELOCALPARAMETERS
syn keyword upstreamdat_Parameter REMOTELOGMODE
syn keyword upstreamdat_Parameter REMOTELUNAME
syn keyword upstreamdat_Parameter REMOTEMAXRETRIES
syn keyword upstreamdat_Parameter REMOTEMODENAME
syn keyword upstreamdat_Parameter REMOTEPARAMETERFILE
syn keyword upstreamdat_Parameter REMOTEPORT
syn keyword upstreamdat_Parameter REMOTEREQUEST
syn keyword upstreamdat_Parameter REMOTERESTART
syn keyword upstreamdat_Parameter REMOTEROUTE
syn keyword upstreamdat_Parameter REMOTETARGETNAME
syn keyword upstreamdat_Parameter REMOTETCP
syn keyword upstreamdat_Parameter REMOTETIMEOUT
syn keyword upstreamdat_Parameter REMOTETMAXRETRY
syn keyword upstreamdat_Parameter REMOTETPN
syn keyword upstreamdat_Parameter REMOTEUSAPPL
syn keyword upstreamdat_Parameter REMOTEVERIFY
syn keyword upstreamdat_Parameter REMOTEWTOCOMP
syn keyword upstreamdat_Parameter REPORTNAME
syn keyword upstreamdat_Parameter REPORTOPTIONS
syn keyword upstreamdat_Parameter RESTARTLASTFILE
syn keyword upstreamdat_Parameter RESTART
syn keyword upstreamdat_Parameter RESTARTTYPE
syn keyword upstreamdat_Parameter RESTARTVERSIONDATE
syn keyword upstreamdat_Parameter RESTOREARCHIVEBIT
syn keyword upstreamdat_Parameter RESTORECHECKPOINT
syn keyword upstreamdat_Parameter RESTOREDATELIMIT
syn keyword upstreamdat_Parameter RESTOREDATELIMIT
syn keyword upstreamdat_Parameter RESTOREFILEFAIL
syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS
syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS
syn keyword upstreamdat_Parameter RESTORESEGMENTS
syn keyword upstreamdat_Parameter RESTORESEGMENTS
syn keyword upstreamdat_Parameter RESTORETODIFFFS
syn keyword upstreamdat_Parameter RETAIN
syn keyword upstreamdat_Parameter RETAIN
syn keyword upstreamdat_Parameter ROOTENTRY
syn keyword upstreamdat_Parameter ROOTENTRY
syn keyword upstreamdat_Parameter SAN
syn keyword upstreamdat_Parameter SCHEDULENAME
syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE
syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE
syn keyword upstreamdat_Parameter SEGMENTSIZE
syn keyword upstreamdat_Parameter SEGMENTSIZE
syn keyword upstreamdat_Parameter SENDHOSTDETAILS
syn keyword upstreamdat_Parameter SINGLEFS
syn keyword upstreamdat_Parameter SIZETRC
syn keyword upstreamdat_Parameter SKIP
syn keyword upstreamdat_Parameter SKIPBACKUPSCAN
syn keyword upstreamdat_Parameter SKIPOLD
syn keyword upstreamdat_Parameter SKIPOLD
syn keyword upstreamdat_Parameter SMSTARGETSERVICENAME
syn keyword upstreamdat_Parameter SMSTSA
syn keyword upstreamdat_Parameter SOLO
syn keyword upstreamdat_Parameter SORTBACKUP
syn keyword upstreamdat_Parameter SOSDISK
syn keyword upstreamdat_Parameter SOSDISK
syn keyword upstreamdat_Parameter SOSTIMESTAMP
syn keyword upstreamdat_Parameter SOSTIMESTAMP
syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH
syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH
syn keyword upstreamdat_Parameter SPECNUMBER
syn keyword upstreamdat_Parameter SPECNUMBER
syn keyword upstreamdat_Parameter SPECTYPE
syn keyword upstreamdat_Parameter SPECTYPE
syn keyword upstreamdat_Parameter STARTTIME
syn keyword upstreamdat_Parameter STORAGETYPE
syn keyword upstreamdat_Parameter SUBDIRECTORIES
syn keyword upstreamdat_Parameter SUBDIRECTORIES
syn keyword upstreamdat_Parameter SWITCHTOTAPEMB
syn keyword upstreamdat_Parameter TCPADDRESS
syn keyword upstreamdat_Parameter TCPTIMEOUT
syn keyword upstreamdat_Parameter TIMEOVERRIDE
syn keyword upstreamdat_Parameter TRACE
syn keyword upstreamdat_Parameter TRANSLATE
syn keyword upstreamdat_Parameter ULTRACOMP
syn keyword upstreamdat_Parameter ULTREG
syn keyword upstreamdat_Parameter ULTUPD
syn keyword upstreamdat_Parameter UNCMACHINEALIAS
syn keyword upstreamdat_Parameter UNCMACHINEALIAS
syn keyword upstreamdat_Parameter USEALEBRA
syn keyword upstreamdat_Parameter USECONTROLFILE
syn keyword upstreamdat_Parameter USEGID
syn keyword upstreamdat_Parameter USERID
syn keyword upstreamdat_Parameter USEUID
syn keyword upstreamdat_Parameter USNOUIDGIDERRORS
syn keyword upstreamdat_Parameter UTF8
syn keyword upstreamdat_Parameter VAULTNUMBER
syn keyword upstreamdat_Parameter VERSIONDATE
syn keyword upstreamdat_Parameter WRITESPARSE
syn keyword upstreamdat_Parameter XFERECORDSIZE
syn keyword upstreamdat_Parameter XFERRECSEP
syn keyword upstreamdat_Parameter XFERRECUSECR
hi def link upstreamdat_Parameter Type
let b:current_syntax = "upstreamdat"
+27
View File
@@ -0,0 +1,27 @@
" Vim syntax file
" Language: Innovation Data Processing UPSTREAMInstall.log file
" Maintainer: Rob Owens <rowens@fdrinnovation.com>
" Latest Revision: 2013-06-17
" Quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
" Date:
syn match upstreaminstalllog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/
" Msg Types:
syn match upstreaminstalllog_MsgD /Msg #MSI\d\{4,5}D/
syn match upstreaminstalllog_MsgE /Msg #MSI\d\{4,5}E/
syn match upstreaminstalllog_MsgI /Msg #MSI\d\{4,5}I/
syn match upstreaminstalllog_MsgW /Msg #MSI\d\{4,5}W/
" IP Address:
syn match upstreaminstalllog_IPaddr / \d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/
hi def link upstreaminstalllog_Date Underlined
hi def link upstreaminstalllog_MsgD Type
hi def link upstreaminstalllog_MsgE Error
hi def link upstreaminstalllog_MsgW Constant
hi def link upstreaminstalllog_IPaddr Identifier
let b:current_syntax = "upstreaminstalllog"
+42
View File
@@ -0,0 +1,42 @@
" Vim syntax file
" Language: Innovation Data Processing upstream.log file
" Maintainer: Rob Owens <rowens@fdrinnovation.com>
" Latest Revision: 2013-06-17
" Quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
" Date:
syn match upstreamlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/
" Msg Types:
syn match upstreamlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=upstreamlog_Process skipwhite
syn match upstreamlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=upstreamlog_Process skipwhite
syn match upstreamlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=upstreamlog_Process skipwhite
syn match upstreamlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=upstreamlog_Process skipwhite
" Processes:
syn region upstreamlog_Process start="(" end=")" contained
" IP Address:
syn match upstreamlog_IPaddr / \d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/
" Profile:
syn region upstreamlog_Profile start="Profile name \zs" end="\"\S\{1,8}\""
syn region upstreamlog_Profile start=" Profile: \zs" end="\S\{1,8}"
syn region upstreamlog_Profile start=" Profile: \zs" end="\ze, "
syn region upstreamlog_Profile start="Backup Profile: \zs" end="\ze Version date"
syn region upstreamlog_Profile start="Full of \zs" end="\ze$"
syn region upstreamlog_Profile start="Incr. of \zs" end="\ze$"
" Target:
syn region upstreamlog_Target start="Computer: \zs" end="\ze[\]\)]"
syn region upstreamlog_Target start="Computer name \zs" end="\ze,"
hi def link upstreamlog_Date Underlined
hi def link upstreamlog_MsgD Type
hi def link upstreamlog_MsgE Error
hi def link upstreamlog_MsgW Constant
hi def link upstreamlog_Process Statement
hi def link upstreamlog_IPaddr Identifier
hi def link upstreamlog_Profile Identifier
hi def link upstreamlog_Target Identifier
let b:current_syntax = "upstreamlog"
+48
View File
@@ -0,0 +1,48 @@
" Vim syntax file
" Language: Innovation Data Processing usserver.log file
" Maintainer: Rob Owens <rowens@fdrinnovation.com>
" Latest Revision: 2013-06-17
" Quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
" Date:
syn match usserver_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/
" Msg Types:
syn match usserver_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=usserver_Process skipwhite
syn match usserver_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=usserver_Process skipwhite
syn match usserver_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=usserver_Process skipwhite
syn match usserver_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=usserver_Process skipwhite
" Processes:
syn region usserver_Process start="(" end=")" contained
" IP Address:
syn match usserver_IPaddr /\( \|(\)\zs\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/
" Profile:
syn region usserver_Profile start="Profile name \zs" end="\"\S\{1,8}\""
syn region usserver_Profile start=" Profile: \zs" end="\S\{1,8}"
syn region usserver_Profile start=", profile: \zs" end="\S\{1,8}\ze,"
syn region usserver_Profile start=" profile \zs" end="\S\{1,8}"
syn region usserver_Profile start=" Profile: \zs" end="\ze, "
syn region usserver_Profile start="Backup Profile: \zs" end="\ze Version date"
syn region usserver_Profile start="Full of \zs" end="\ze$"
syn region usserver_Profile start="Incr. of \zs" end="\ze$"
syn region usserver_Profile start="Profile=\zs" end="\S\{1,8}\ze,"
" Target:
syn region usserver_Target start="Computer: \zs" end="\ze[\]\)]"
syn region usserver_Target start="Computer name \zs" end="\ze,"
syn region usserver_Target start="Registration add request successful \zs" end="$"
syn region usserver_Target start="request to registered name \zs" end=" "
syn region usserver_Target start=", sending to \zs" end="$"
hi def link usserver_Date Underlined
hi def link usserver_MsgD Type
hi def link usserver_MsgE Error
hi def link usserver_MsgW Constant
hi def link usserver_Process Statement
hi def link usserver_IPaddr Identifier
hi def link usserver_Profile Identifier
hi def link usserver_Target Identifier
let b:current_syntax = "usserver"
+48
View File
@@ -0,0 +1,48 @@
" Vim syntax file
" Language: Innovation Data Processing USW2KAgt.log file
" Maintainer: Rob Owens <rowens@fdrinnovation.com>
" Latest Revision: 2013-06-17
" Quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
" Date:
syn match usw2kagentlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/
" Msg Types:
syn match usw2kagentlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=usw2kagentlog_Process skipwhite
syn match usw2kagentlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=usw2kagentlog_Process skipwhite
syn match usw2kagentlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=usw2kagentlog_Process skipwhite
syn match usw2kagentlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=usw2kagentlog_Process skipwhite
" Processes:
syn region usw2kagentlog_Process start="(" end=")" contained
syn region usw2kagentlog_Process start="Starting the processing for a \zs\"" end="\ze client request"
syn region usw2kagentlog_Process start="Ending the processing for a \zs\"" end="\ze client request"
" IP Address:
syn match usw2kagentlog_IPaddr / \d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/
" Profile:
syn region usw2kagentlog_Profile start="Profile name \zs" end="\"\S\{1,8}\""
syn region usw2kagentlog_Profile start=" Profile: \zs" end="\S\{1,8}"
syn region usw2kagentlog_Profile start=" Profile: \zs" end="\ze, "
syn region usw2kagentlog_Profile start="Backup Profile: \zs" end="\ze Version date"
syn region usw2kagentlog_Profile start="Full of \zs" end="\ze$"
syn region usw2kagentlog_Profile start="Incr. of \zs" end="\ze$"
syn region usw2kagentlog_Profile start="profile name \zs\"" end="\""
" Target:
syn region usw2kagentlog_Target start="Computer: \zs" end="\ze[\]\)]"
syn region usw2kagentlog_Target start="Computer name \zs" end="\ze,"
" Agent Keywords:
syn keyword usw2kagentlog_Agentword opened closed
hi def link usw2kagentlog_Date Underlined
hi def link usw2kagentlog_MsgD Type
hi def link usw2kagentlog_MsgE Error
hi def link usw2kagentlog_MsgW Constant
hi def link usw2kagentlog_Process Statement
hi def link usw2kagentlog_IPaddr Identifier
hi def link usw2kagentlog_Profile Identifier
hi def link usw2kagentlog_Target Identifier
hi def link usw2kagentlog_Agentword Special
let b:current_syntax = "usw2kagentlog"
+2 -1
View File
@@ -5106,7 +5106,8 @@ chk_modeline(lnum, flags)
if ((prev != -1 && STRNCMP(s, "ex:", (size_t)3) == 0)
|| STRNCMP(s, "vi:", (size_t)3) == 0)
break;
if (STRNCMP(s, "vim", 3) == 0)
/* Accept both "vim" and "Vim". */
if ((s[0] == 'v' || s[0] == 'V') && s[1] == 'i' && s[2] == 'm')
{
if (s[3] == '<' || s[3] == '=' || s[3] == '>')
e = s + 4;
+1 -1
View File
@@ -10449,7 +10449,7 @@ findfilendir(argvars, rettv, find_what)
{
do
{
if (rettv->v_type == VAR_STRING)
if (rettv->v_type == VAR_STRING || rettv->v_type == VAR_LIST)
vim_free(fresult);
fresult = find_file_in_path_option(first ? fname : NULL,
first ? (int)STRLEN(fname) : 0,
+2 -2
View File
@@ -1708,13 +1708,13 @@ getcmdline(firstc, count, indent)
* We come here if we have a normal character.
*/
if (do_abbr && (IS_SPECIAL(c) || !vim_iswordc(c)) && ccheck_abbr(
if (do_abbr && (IS_SPECIAL(c) || !vim_iswordc(c)) && (ccheck_abbr(
#ifdef FEAT_MBYTE
/* Add ABBR_OFF for characters above 0x100, this is
* what check_abbr() expects. */
(has_mbyte && c >= 0x100) ? (c + ABBR_OFF) :
#endif
c))
c) || c == Ctrl_RSB))
goto cmdline_changed;
/*
+6
View File
@@ -9610,6 +9610,12 @@ unblock_autocmds()
# endif
}
int
is_autocmd_blocked()
{
return autocmd_blocked != 0;
}
/*
* Find next autocommand pattern that matches.
*/
+3 -3
View File
@@ -3216,7 +3216,7 @@ gui_mch_dialog(
if (l == 1 && vim_iswhite(*pend)
&& textWidth > maxDialogWidth * 3 / 4)
last_white = pend;
textWidth += GetTextWidth(hdc, pend, l);
textWidth += GetTextWidthEnc(hdc, pend, l);
if (textWidth >= maxDialogWidth)
{
/* Line will wrap. */
@@ -3282,7 +3282,7 @@ gui_mch_dialog(
pend = vim_strchr(pstart, DLG_BUTTON_SEP);
if (pend == NULL)
pend = pstart + STRLEN(pstart); // Last button name.
textWidth = GetTextWidth(hdc, pstart, (int)(pend - pstart));
textWidth = GetTextWidthEnc(hdc, pstart, (int)(pend - pstart));
if (textWidth < minButtonWidth)
textWidth = minButtonWidth;
textWidth += dlgPaddingX; /* Padding within button */
@@ -3307,7 +3307,7 @@ gui_mch_dialog(
pend = vim_strchr(pstart, DLG_BUTTON_SEP);
if (pend == NULL)
pend = pstart + STRLEN(pstart); // Last button name.
textWidth = GetTextWidth(hdc, pstart, (int)(pend - pstart));
textWidth = GetTextWidthEnc(hdc, pstart, (int)(pend - pstart));
textWidth += dlgPaddingX; /* Padding within button */
textWidth += DLG_VERT_PADDING_X * 2; /* Padding around button */
if (textWidth > dlgwidth)
+134 -103
View File
@@ -37,16 +37,17 @@ static const char *vim_special_path = "_vim_path_";
: obj->ob_type->tp_name)
#define RAISE_NO_EMPTY_KEYS PyErr_SET_STRING(PyExc_ValueError, \
"empty keys are not allowed")
#define RAISE_LOCKED(type) PyErr_SET_VIM(_(type " is locked"))
#define RAISE_LOCKED_DICTIONARY RAISE_LOCKED("dictionary")
#define RAISE_LOCKED_LIST RAISE_LOCKED("list")
#define RAISE_UNDO_FAIL PyErr_SET_VIM("cannot save undo information")
#define RAISE_LINE_FAIL(act) PyErr_SET_VIM("cannot " act " line")
N_("empty keys are not allowed"))
#define RAISE_LOCKED_DICTIONARY PyErr_SET_VIM(N_("dictionary is locked"))
#define RAISE_LOCKED_LIST PyErr_SET_VIM(N_("list is locked"))
#define RAISE_UNDO_FAIL PyErr_SET_VIM(N_("cannot save undo information"))
#define RAISE_DELETE_LINE_FAIL PyErr_SET_VIM(N_("cannot delete line"))
#define RAISE_INSERT_LINE_FAIL PyErr_SET_VIM(N_("cannot insert line"))
#define RAISE_REPLACE_LINE_FAIL PyErr_SET_VIM(N_("cannot replace line"))
#define RAISE_KEY_ADD_FAIL(key) \
PyErr_VIM_FORMAT("failed to add key '%s' to dictionary", key)
PyErr_VIM_FORMAT(N_("failed to add key '%s' to dictionary"), key)
#define RAISE_INVALID_INDEX_TYPE(idx) \
PyErr_FORMAT(PyExc_TypeError, "index must be int or slice, not %s", \
PyErr_FORMAT(PyExc_TypeError, N_("index must be int or slice, not %s"), \
Py_TYPE_NAME(idx));
#define INVALID_BUFFER_VALUE ((buf_T *)(-1))
@@ -138,13 +139,15 @@ StringToChars(PyObject *obj, PyObject **todecref)
}
else
{
PyErr_FORMAT(PyExc_TypeError,
#if PY_MAJOR_VERSION < 3
"expected str() or unicode() instance, but got %s"
PyErr_FORMAT(PyExc_TypeError,
N_("expected str() or unicode() instance, but got %s"),
Py_TYPE_NAME(obj));
#else
"expected bytes() or str() instance, but got %s"
PyErr_FORMAT(PyExc_TypeError,
N_("expected bytes() or str() instance, but got %s"),
Py_TYPE_NAME(obj));
#endif
, Py_TYPE_NAME(obj));
return NULL;
}
@@ -190,15 +193,17 @@ NumberToLong(PyObject *obj, long *result, int flags)
}
else
{
PyErr_FORMAT(PyExc_TypeError,
#if PY_MAJOR_VERSION < 3
"expected int(), long() or something supporting "
"coercing to long(), but got %s"
PyErr_FORMAT(PyExc_TypeError,
N_("expected int(), long() or something supporting "
"coercing to long(), but got %s"),
Py_TYPE_NAME(obj));
#else
"expected int() or something supporting coercing to int(), "
"but got %s"
PyErr_FORMAT(PyExc_TypeError,
N_("expected int() or something supporting coercing to int(), "
"but got %s"),
Py_TYPE_NAME(obj));
#endif
, Py_TYPE_NAME(obj));
return -1;
}
@@ -207,13 +212,13 @@ NumberToLong(PyObject *obj, long *result, int flags)
if (*result > INT_MAX)
{
PyErr_SET_STRING(PyExc_OverflowError,
"value is too large to fit into C int type");
N_("value is too large to fit into C int type"));
return -1;
}
else if (*result < INT_MIN)
{
PyErr_SET_STRING(PyExc_OverflowError,
"value is too small to fit into C int type");
N_("value is too small to fit into C int type"));
return -1;
}
}
@@ -223,7 +228,7 @@ NumberToLong(PyObject *obj, long *result, int flags)
if (*result <= 0)
{
PyErr_SET_STRING(PyExc_ValueError,
"number must be greater then zero");
N_("number must be greater then zero"));
return -1;
}
}
@@ -232,7 +237,7 @@ NumberToLong(PyObject *obj, long *result, int flags)
if (*result < 0)
{
PyErr_SET_STRING(PyExc_ValueError,
"number must be greater or equal to zero");
N_("number must be greater or equal to zero"));
return -1;
}
}
@@ -326,7 +331,7 @@ OutputSetattr(OutputObject *self, char *name, PyObject *valObject)
if (valObject == NULL)
{
PyErr_SET_STRING(PyExc_AttributeError,
"can't delete OutputObject attributes");
N_("can't delete OutputObject attributes"));
return -1;
}
@@ -337,7 +342,7 @@ OutputSetattr(OutputObject *self, char *name, PyObject *valObject)
return 0;
}
PyErr_FORMAT(PyExc_AttributeError, "invalid attribute: %s", name);
PyErr_FORMAT(PyExc_AttributeError, N_("invalid attribute: %s"), name);
return -1;
}
@@ -785,7 +790,7 @@ VimEval(PyObject *self UNUSED, PyObject *args)
if (our_tv == NULL)
{
PyErr_SET_VIM("invalid expression");
PyErr_SET_VIM(N_("invalid expression"));
return NULL;
}
@@ -836,7 +841,7 @@ VimEvalPy(PyObject *self UNUSED, PyObject *string)
if (our_tv == NULL)
{
PyErr_SET_VIM("invalid expression");
PyErr_SET_VIM(N_("invalid expression"));
return NULL;
}
@@ -908,7 +913,7 @@ _VimChdir(PyObject *_chdir, PyObject *args, PyObject *kwargs)
if (VimTryEnd())
return NULL;
PyErr_SET_VIM("failed to change directory");
PyErr_SET_VIM(N_("failed to change directory"));
return NULL;
}
@@ -1086,15 +1091,15 @@ call_load_module(char *name, int len, PyObject *find_module_result)
if (!PyTuple_Check(find_module_result))
{
PyErr_FORMAT(PyExc_TypeError,
"expected 3-tuple as imp.find_module() result, but got %s",
N_("expected 3-tuple as imp.find_module() result, but got %s"),
Py_TYPE_NAME(find_module_result));
return NULL;
}
if (PyTuple_GET_SIZE(find_module_result) != 3)
{
PyErr_FORMAT(PyExc_TypeError,
"expected 3-tuple as imp.find_module() result, but got "
"tuple of size %d",
N_("expected 3-tuple as imp.find_module() result, but got "
"tuple of size %d"),
(int) PyTuple_GET_SIZE(find_module_result));
return NULL;
}
@@ -1104,7 +1109,7 @@ call_load_module(char *name, int len, PyObject *find_module_result)
|| !(description = PyTuple_GET_ITEM(find_module_result, 2)))
{
PyErr_SET_STRING(PyExc_RuntimeError,
"internal error: imp.find_module returned tuple with NULL");
N_("internal error: imp.find_module returned tuple with NULL"));
return NULL;
}
@@ -1198,6 +1203,14 @@ FinderFindModule(PyObject *self, PyObject *args)
if (!module)
{
if (PyErr_Occurred())
{
if (PyErr_ExceptionMatches(PyExc_ImportError))
PyErr_Clear();
else
return NULL;
}
Py_INCREF(Py_None);
return Py_None;
}
@@ -1476,7 +1489,7 @@ DictionarySetattr(DictionaryObject *self, char *name, PyObject *valObject)
if (valObject == NULL)
{
PyErr_SET_STRING(PyExc_AttributeError,
"cannot delete vim.Dictionary attributes");
N_("cannot delete vim.Dictionary attributes"));
return -1;
}
@@ -1484,7 +1497,8 @@ DictionarySetattr(DictionaryObject *self, char *name, PyObject *valObject)
{
if (self->dict->dv_lock == VAR_FIXED)
{
PyErr_SET_STRING(PyExc_TypeError, "cannot modify fixed dictionary");
PyErr_SET_STRING(PyExc_TypeError,
N_("cannot modify fixed dictionary"));
return -1;
}
else
@@ -1501,7 +1515,7 @@ DictionarySetattr(DictionaryObject *self, char *name, PyObject *valObject)
}
else
{
PyErr_FORMAT(PyExc_AttributeError, "cannot set attribute %s", name);
PyErr_FORMAT(PyExc_AttributeError, N_("cannot set attribute %s"), name);
return -1;
}
}
@@ -1609,7 +1623,7 @@ DictionaryContains(DictionaryObject *self, PyObject *keyObject)
ret = (rObj == Py_True);
Py_DECREF(Py_True);
Py_DECREF(rObj);
return ret;
}
@@ -1635,7 +1649,7 @@ DictionaryIterNext(dictiterinfo_T **dii)
(*dii)->ht->ht_used != (*dii)->ht_used)
{
PyErr_SET_STRING(PyExc_RuntimeError,
"hashtab changed during iteration");
N_("hashtab changed during iteration"));
return NULL;
}
@@ -1906,9 +1920,9 @@ DictionaryUpdate(DictionaryObject *self, PyObject *args, PyObject *kwargs)
Py_DECREF(iterator);
Py_DECREF(fast);
PyErr_FORMAT(PyExc_ValueError,
"expected sequence element of size 2, "
"but got sequence of size %d",
PySequence_Fast_GET_SIZE(fast));
N_("expected sequence element of size 2, "
"but got sequence of size %d"),
(int) PySequence_Fast_GET_SIZE(fast));
return NULL;
}
@@ -2150,7 +2164,7 @@ ListConstructor(PyTypeObject *subtype, PyObject *args, PyObject *kwargs)
if (kwargs)
{
PyErr_SET_STRING(PyExc_TypeError,
"list constructor does not accept keyword arguments");
N_("list constructor does not accept keyword arguments"));
return NULL;
}
@@ -2205,14 +2219,14 @@ ListItem(ListObject *self, Py_ssize_t index)
if (index >= ListLength(self))
{
PyErr_SET_STRING(PyExc_IndexError, "list index out of range");
PyErr_SET_STRING(PyExc_IndexError, N_("list index out of range"));
return NULL;
}
li = list_find(self->list, (long) index);
if (li == NULL)
{
/* No more suitable format specifications in python-2.3 */
PyErr_VIM_FORMAT("internal error: failed to get vim list item %d",
PyErr_VIM_FORMAT(N_("internal error: failed to get vim list item %d"),
(int) index);
return NULL;
}
@@ -2331,7 +2345,7 @@ ListAssItem(ListObject *self, Py_ssize_t index, PyObject *obj)
}
if (index > length || (index == length && obj == NULL))
{
PyErr_SET_STRING(PyExc_IndexError, "list index out of range");
PyErr_SET_STRING(PyExc_IndexError, N_("list index out of range"));
return -1;
}
@@ -2352,7 +2366,7 @@ ListAssItem(ListObject *self, Py_ssize_t index, PyObject *obj)
if (list_append_tv(l, &tv) == FAIL)
{
clear_tv(&tv);
PyErr_SET_VIM("failed to add item to list");
PyErr_SET_VIM(N_("failed to add item to list"));
return -1;
}
}
@@ -2393,7 +2407,8 @@ ListAssSlice(ListObject *self, Py_ssize_t first, Py_ssize_t last, PyObject *obj)
li = list_find(l, (long) first);
if (li == NULL)
{
PyErr_VIM_FORMAT("internal error: no vim list item %d", (int)first);
PyErr_VIM_FORMAT(N_("internal error: no vim list item %d"),
(int)first);
return -1;
}
if (last > first)
@@ -2426,12 +2441,16 @@ ListAssSlice(ListObject *self, Py_ssize_t first, Py_ssize_t last, PyObject *obj)
if (list_insert_tv(l, &v, li) == FAIL)
{
clear_tv(&v);
PyErr_SET_VIM("internal error: failed to add item to list");
PyErr_SET_VIM(N_("internal error: failed to add item to list"));
return -1;
}
clear_tv(&v);
}
Py_DECREF(iterator);
if (PyErr_Occurred())
return -1;
return 0;
}
@@ -2478,7 +2497,7 @@ ListSetattr(ListObject *self, char *name, PyObject *valObject)
if (valObject == NULL)
{
PyErr_SET_STRING(PyExc_AttributeError,
"cannot delete vim.List attributes");
N_("cannot delete vim.List attributes"));
return -1;
}
@@ -2486,7 +2505,7 @@ ListSetattr(ListObject *self, char *name, PyObject *valObject)
{
if (self->list->lv_lock == VAR_FIXED)
{
PyErr_SET_STRING(PyExc_TypeError, "cannot modify fixed list");
PyErr_SET_STRING(PyExc_TypeError, N_("cannot modify fixed list"));
return -1;
}
else
@@ -2503,7 +2522,7 @@ ListSetattr(ListObject *self, char *name, PyObject *valObject)
}
else
{
PyErr_FORMAT(PyExc_AttributeError, "cannot set attribute %s", name);
PyErr_FORMAT(PyExc_AttributeError, N_("cannot set attribute %s"), name);
return -1;
}
}
@@ -2539,7 +2558,7 @@ FunctionNew(PyTypeObject *subtype, char_u *name)
if (!translated_function_exists(name))
{
PyErr_FORMAT(PyExc_ValueError,
"unnamed function %s does not exist", name);
N_("unnamed function %s does not exist"), name);
return NULL;
}
self->name = vim_strsave(name);
@@ -2550,7 +2569,8 @@ FunctionNew(PyTypeObject *subtype, char_u *name)
vim_strchr(name, AUTOLOAD_CHAR) == NULL))
== NULL)
{
PyErr_FORMAT(PyExc_ValueError, "function %s does not exist", name);
PyErr_FORMAT(PyExc_ValueError,
N_("function %s does not exist"), name);
return NULL;
}
@@ -2566,7 +2586,7 @@ FunctionConstructor(PyTypeObject *subtype, PyObject *args, PyObject *kwargs)
if (kwargs)
{
PyErr_SET_STRING(PyExc_TypeError,
"function constructor does not accept keyword arguments");
N_("function constructor does not accept keyword arguments"));
return NULL;
}
@@ -2643,7 +2663,7 @@ FunctionCall(FunctionObject *self, PyObject *argsObject, PyObject *kwargs)
else if (error != OK)
{
ret = NULL;
PyErr_VIM_FORMAT("failed to run function %s", (char *)name);
PyErr_VIM_FORMAT(N_("failed to run function %s"), (char *)name);
}
else
ret = ConvertToPyObject(&rettv);
@@ -2796,13 +2816,13 @@ OptionsItem(OptionsObject *self, PyObject *keyObject)
else
{
PyErr_SET_STRING(PyExc_RuntimeError,
"unable to get option value");
N_("unable to get option value"));
return NULL;
}
}
else
{
PyErr_SET_VIM("internal error: unknown option type");
PyErr_SET_VIM(N_("internal error: unknown option type"));
return NULL;
}
}
@@ -2845,7 +2865,7 @@ set_option_value_for(
{
if (VimTryEnd())
return -1;
PyErr_SET_VIM("problem while switching windows");
PyErr_SET_VIM(N_("problem while switching windows"));
return -1;
}
set_ret = set_option_value_err(key, numval, stringval, opt_flags);
@@ -2902,15 +2922,15 @@ OptionsAssItem(OptionsObject *self, PyObject *keyObject, PyObject *valObject)
if (self->opt_type == SREQ_GLOBAL)
{
PyErr_FORMAT(PyExc_ValueError,
"unable to unset global option %s", key);
N_("unable to unset global option %s"), key);
Py_XDECREF(todecref);
return -1;
}
else if (!(flags & SOPT_GLOBAL))
{
PyErr_FORMAT(PyExc_ValueError,
"unable to unset option %s "
"which does not have global value", key);
N_("unable to unset option %s "
"which does not have global value"), key);
Py_XDECREF(todecref);
return -1;
}
@@ -2988,7 +3008,7 @@ CheckTabPage(TabPageObject *self)
{
if (self->tab == INVALID_TABPAGE_VALUE)
{
PyErr_SET_VIM("attempt to refer to deleted tab page");
PyErr_SET_VIM(N_("attempt to refer to deleted tab page"));
return -1;
}
@@ -3132,7 +3152,7 @@ TabListItem(PyObject *self UNUSED, PyInt n)
if (n == 0)
return TabPageNew(tp);
PyErr_SET_STRING(PyExc_IndexError, "no such tab page");
PyErr_SET_STRING(PyExc_IndexError, N_("no such tab page"));
return NULL;
}
@@ -3154,7 +3174,7 @@ CheckWindow(WindowObject *self)
{
if (self->win == INVALID_WINDOW_VALUE)
{
PyErr_SET_VIM("attempt to refer to deleted window");
PyErr_SET_VIM(N_("attempt to refer to deleted window"));
return -1;
}
@@ -3320,7 +3340,7 @@ WindowSetattr(WindowObject *self, char *name, PyObject *valObject)
if (strcmp(name, "buffer") == 0)
{
PyErr_SET_STRING(PyExc_TypeError, "readonly attribute: buffer");
PyErr_SET_STRING(PyExc_TypeError, N_("readonly attribute: buffer"));
return -1;
}
else if (strcmp(name, "cursor") == 0)
@@ -3333,7 +3353,7 @@ WindowSetattr(WindowObject *self, char *name, PyObject *valObject)
if (lnum <= 0 || lnum > self->win->w_buffer->b_ml.ml_line_count)
{
PyErr_SET_VIM("cursor position outside buffer");
PyErr_SET_VIM(N_("cursor position outside buffer"));
return -1;
}
@@ -3357,7 +3377,7 @@ WindowSetattr(WindowObject *self, char *name, PyObject *valObject)
long height;
win_T *savewin;
if (NumberToLong(valObject, &height, NUMBER_INT))
if (NumberToLong(valObject, &height, NUMBER_INT|NUMBER_UNSIGNED))
return -1;
#ifdef FEAT_GUI
@@ -3380,7 +3400,7 @@ WindowSetattr(WindowObject *self, char *name, PyObject *valObject)
long width;
win_T *savewin;
if (NumberToLong(valObject, &width, NUMBER_INT))
if (NumberToLong(valObject, &width, NUMBER_INT|NUMBER_UNSIGNED))
return -1;
#ifdef FEAT_GUI
@@ -3496,7 +3516,7 @@ WinListItem(WinListObject *self, PyInt n)
if (n == 0)
return WindowNew(w, self->tabObject? self->tabObject->tab: curtab);
PyErr_SET_STRING(PyExc_IndexError, "no such window");
PyErr_SET_STRING(PyExc_IndexError, N_("no such window"));
return NULL;
}
@@ -3514,7 +3534,7 @@ StringToLine(PyObject *obj)
char *str;
char *save;
PyObject *bytes = NULL;
Py_ssize_t len;
Py_ssize_t len = 0;
PyInt i;
char *p;
@@ -3529,13 +3549,26 @@ StringToLine(PyObject *obj)
if (!(bytes = PyUnicode_AsEncodedString(obj, ENC_OPT, NULL)))
return NULL;
if(PyBytes_AsStringAndSize(bytes, &str, &len) == -1
if (PyBytes_AsStringAndSize(bytes, &str, &len) == -1
|| str == NULL)
{
Py_DECREF(bytes);
return NULL;
}
}
else
{
#if PY_MAJOR_VERSION < 3
PyErr_FORMAT(PyExc_TypeError,
N_("expected str() or unicode() instance, but got %s"),
Py_TYPE_NAME(obj));
#else
PyErr_FORMAT(PyExc_TypeError,
N_("expected bytes() or str() instance, but got %s"),
Py_TYPE_NAME(obj));
#endif
return NULL;
}
/*
* Error checking: String must not contain newlines, as we
@@ -3550,7 +3583,7 @@ StringToLine(PyObject *obj)
--len;
else
{
PyErr_SET_VIM("string cannot contain newlines");
PyErr_SET_VIM(N_("string cannot contain newlines"));
Py_XDECREF(bytes);
return NULL;
}
@@ -3688,7 +3721,7 @@ SetBufferLine(buf_T *buf, PyInt n, PyObject *line, PyInt *len_change)
if (u_savedel((linenr_T)n, 1L) == FAIL)
RAISE_UNDO_FAIL;
else if (ml_delete((linenr_T)n, FALSE) == FAIL)
RAISE_LINE_FAIL("delete");
RAISE_DELETE_LINE_FAIL;
else
{
if (buf == savebuf)
@@ -3727,7 +3760,7 @@ SetBufferLine(buf_T *buf, PyInt n, PyObject *line, PyInt *len_change)
}
else if (ml_replace((linenr_T)n, (char_u *)save, FALSE) == FAIL)
{
RAISE_LINE_FAIL("replace");
RAISE_REPLACE_LINE_FAIL;
vim_free(save);
}
else
@@ -3794,7 +3827,7 @@ SetBufferLineList(
{
if (ml_delete((linenr_T)lo, FALSE) == FAIL)
{
RAISE_LINE_FAIL("delete");
RAISE_DELETE_LINE_FAIL;
break;
}
}
@@ -3866,7 +3899,7 @@ SetBufferLineList(
for (i = 0; i < old_len - new_len; ++i)
if (ml_delete((linenr_T)lo, FALSE) == FAIL)
{
RAISE_LINE_FAIL("delete");
RAISE_DELETE_LINE_FAIL;
break;
}
extra -= i;
@@ -3882,7 +3915,7 @@ SetBufferLineList(
if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], FALSE)
== FAIL)
{
RAISE_LINE_FAIL("replace");
RAISE_REPLACE_LINE_FAIL;
break;
}
}
@@ -3900,7 +3933,7 @@ SetBufferLineList(
if (ml_append((linenr_T)(lo + i - 1),
(char_u *)array[i], 0, FALSE) == FAIL)
{
RAISE_LINE_FAIL("insert");
RAISE_INSERT_LINE_FAIL;
break;
}
vim_free(array[i]);
@@ -3979,7 +4012,7 @@ InsertBufferLines(buf_T *buf, PyInt n, PyObject *lines, PyInt *len_change)
if (u_save((linenr_T)n, (linenr_T)(n+1)) == FAIL)
RAISE_UNDO_FAIL;
else if (ml_append((linenr_T)n, (char_u *)str, 0, FALSE) == FAIL)
RAISE_LINE_FAIL("insert");
RAISE_INSERT_LINE_FAIL;
else
appended_lines_mark((linenr_T)n, 1L);
@@ -4036,7 +4069,7 @@ InsertBufferLines(buf_T *buf, PyInt n, PyObject *lines, PyInt *len_change)
if (ml_append((linenr_T)(n + i),
(char_u *)array[i], 0, FALSE) == FAIL)
{
RAISE_LINE_FAIL("insert");
RAISE_INSERT_LINE_FAIL;
/* Free the rest of the lines */
while (i < size)
@@ -4089,7 +4122,7 @@ CheckBuffer(BufferObject *self)
{
if (self->buf == INVALID_BUFFER_VALUE)
{
PyErr_SET_VIM("attempt to refer to deleted buffer");
PyErr_SET_VIM(N_("attempt to refer to deleted buffer"));
return -1;
}
@@ -4110,7 +4143,7 @@ RBItem(BufferObject *self, PyInt n, PyInt start, PyInt end)
if (n < 0 || n > end - start)
{
PyErr_SET_STRING(PyExc_IndexError, "line number out of range");
PyErr_SET_STRING(PyExc_IndexError, N_("line number out of range"));
return NULL;
}
@@ -4166,7 +4199,7 @@ RBAsItem(
if (n < 0 || n > end - start)
{
PyErr_SET_STRING(PyExc_IndexError, "line number out of range");
PyErr_SET_STRING(PyExc_IndexError, N_("line number out of range"));
return -1;
}
@@ -4250,7 +4283,7 @@ RBAppend(
if (n < 0 || n > max)
{
PyErr_SET_STRING(PyExc_IndexError, "line number out of range");
PyErr_SET_STRING(PyExc_IndexError, N_("line number out of range"));
return NULL;
}
@@ -4533,7 +4566,7 @@ BufferSetattr(BufferObject *self, char *name, PyObject *valObject)
if (ren_ret == FAIL)
{
PyErr_SET_VIM("failed to rename buffer");
PyErr_SET_VIM(N_("failed to rename buffer"));
return -1;
}
return 0;
@@ -4569,7 +4602,7 @@ BufferMark(BufferObject *self, PyObject *pmarkObject)
if (pmark[0] == '\0' || pmark[1] != '\0')
{
PyErr_SET_STRING(PyExc_ValueError,
"mark name must be a single character");
N_("mark name must be a single character"));
Py_XDECREF(todecref);
return NULL;
}
@@ -4587,7 +4620,7 @@ BufferMark(BufferObject *self, PyObject *pmarkObject)
if (posp == NULL)
{
PyErr_SET_VIM("invalid mark name");
PyErr_SET_VIM(N_("invalid mark name"));
return NULL;
}
@@ -4812,7 +4845,7 @@ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *valObject)
if (valObject->ob_type != &BufferType)
{
PyErr_FORMAT(PyExc_TypeError,
"expected vim.Buffer object, but got %s",
N_("expected vim.Buffer object, but got %s"),
Py_TYPE_NAME(valObject));
return -1;
}
@@ -4826,7 +4859,7 @@ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *valObject)
{
if (VimTryEnd())
return -1;
PyErr_VIM_FORMAT("failed to switch to buffer %d", count);
PyErr_VIM_FORMAT(N_("failed to switch to buffer %d"), count);
return -1;
}
@@ -4839,7 +4872,7 @@ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *valObject)
if (valObject->ob_type != &WindowType)
{
PyErr_FORMAT(PyExc_TypeError,
"expected vim.Window object, but got %s",
N_("expected vim.Window object, but got %s"),
Py_TYPE_NAME(valObject));
return -1;
}
@@ -4851,7 +4884,7 @@ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *valObject)
if (!count)
{
PyErr_SET_STRING(PyExc_ValueError,
"failed to find window in the current tab page");
N_("failed to find window in the current tab page"));
return -1;
}
@@ -4862,7 +4895,7 @@ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *valObject)
if (VimTryEnd())
return -1;
PyErr_SET_STRING(PyExc_RuntimeError,
"did not switch to the specified window");
N_("did not switch to the specified window"));
return -1;
}
@@ -4873,7 +4906,7 @@ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *valObject)
if (valObject->ob_type != &TabPageType)
{
PyErr_FORMAT(PyExc_TypeError,
"expected vim.TabPage object, but got %s",
N_("expected vim.TabPage object, but got %s"),
Py_TYPE_NAME(valObject));
return -1;
}
@@ -4888,7 +4921,7 @@ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *valObject)
if (VimTryEnd())
return -1;
PyErr_SET_STRING(PyExc_RuntimeError,
"did not switch to the specified tab page");
N_("did not switch to the specified tab page"));
return -1;
}
@@ -5371,7 +5404,7 @@ ConvertFromPyMapping(PyObject *obj, typval_T *tv)
else
{
PyErr_FORMAT(PyExc_TypeError,
"unable to convert %s to vim dictionary",
N_("unable to convert %s to vim dictionary"),
Py_TYPE_NAME(obj));
ret = -1;
}
@@ -5479,6 +5512,7 @@ _ConvertFromPyObject(PyObject *obj, typval_T *tv, PyObject *lookup_dict)
#endif
else if (PyObject_HasAttrString(obj, "keys"))
return convert_dl(obj, tv, pymap_to_tv, lookup_dict);
/* PyObject_GetIter can create built-in iterator for any sequence object */
else if (PyIter_Check(obj) || PySequence_Check(obj))
return convert_dl(obj, tv, pyseq_to_tv, lookup_dict);
else if (PyMapping_Check(obj))
@@ -5498,7 +5532,7 @@ _ConvertFromPyObject(PyObject *obj, typval_T *tv, PyObject *lookup_dict)
else
{
PyErr_FORMAT(PyExc_TypeError,
"unable to convert %s to vim structure",
N_("unable to convert %s to vim structure"),
Py_TYPE_NAME(obj));
return -1;
}
@@ -5510,7 +5544,7 @@ ConvertToPyObject(typval_T *tv)
{
if (tv == NULL)
{
PyErr_SET_VIM("internal error: NULL reference passed");
PyErr_SET_VIM(N_("internal error: NULL reference passed"));
return NULL;
}
switch (tv->v_type)
@@ -5535,7 +5569,7 @@ ConvertToPyObject(typval_T *tv)
Py_INCREF(Py_None);
return Py_None;
default:
PyErr_SET_VIM("internal error: invalid value type");
PyErr_SET_VIM(N_("internal error: invalid value type"));
return NULL;
}
}
@@ -5926,11 +5960,8 @@ static struct object_constant {
{"_Loader", (PyObject *)&LoaderType},
};
typedef int (*object_adder)(PyObject *, const char *, PyObject *);
typedef PyObject *(*attr_getter)(PyObject *, const char *);
#define ADD_OBJECT(m, name, obj) \
if (add_object(m, name, obj)) \
if (PyModule_AddObject(m, name, obj)) \
return -1;
#define ADD_CHECKED_OBJECT(m, name, obj) \
@@ -5942,7 +5973,7 @@ typedef PyObject *(*attr_getter)(PyObject *, const char *);
}
static int
populate_module(PyObject *m, object_adder add_object, attr_getter get_attr)
populate_module(PyObject *m)
{
int i;
PyObject *other_module;
@@ -5986,7 +6017,7 @@ populate_module(PyObject *m, object_adder add_object, attr_getter get_attr)
if (!(py_chdir = PyObject_GetAttrString(other_module, "chdir")))
return -1;
ADD_OBJECT(m, "_chdir", py_chdir);
if (!(attr = get_attr(m, "chdir")))
if (!(attr = PyObject_GetAttrString(m, "chdir")))
return -1;
if (PyObject_SetAttrString(other_module, "chdir", attr))
{
@@ -5998,7 +6029,7 @@ populate_module(PyObject *m, object_adder add_object, attr_getter get_attr)
if ((py_fchdir = PyObject_GetAttrString(other_module, "fchdir")))
{
ADD_OBJECT(m, "_fchdir", py_fchdir);
if (!(attr = get_attr(m, "fchdir")))
if (!(attr = PyObject_GetAttrString(m, "fchdir")))
return -1;
if (PyObject_SetAttrString(other_module, "fchdir", attr))
{
+3 -4
View File
@@ -333,7 +333,7 @@ static PyTypeObject* dll_PyInt_Type;
static PyTypeObject* dll_PyLong_Type;
static PyObject*(*dll_PyList_GetItem)(PyObject *, PyInt);
static int(*dll_PyList_Append)(PyObject *, PyObject *);
static int(*dll_PyList_Insert)(PyObject *, int, PyObject *);
static int(*dll_PyList_Insert)(PyObject *, PyInt, PyObject *);
static PyObject*(*dll_PyList_New)(PyInt size);
static int(*dll_PyList_SetItem)(PyObject *, PyInt, PyObject *);
static PyInt(*dll_PyList_Size)(PyObject *);
@@ -369,7 +369,7 @@ static PyObject* (*dll_PyObject_CallFunction)(PyObject *, char *, ...);
static PyObject* (*dll_PyObject_Call)(PyObject *, PyObject *, PyObject *);
static PyObject* (*dll_PyObject_Repr)(PyObject *);
static char*(*dll_PyString_AsString)(PyObject *);
static int(*dll_PyString_AsStringAndSize)(PyObject *, char **, int *);
static int(*dll_PyString_AsStringAndSize)(PyObject *, char **, PyInt *);
static PyObject*(*dll_PyString_FromString)(const char *);
static PyObject*(*dll_PyString_FromFormat)(const char *, ...);
static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt);
@@ -1408,8 +1408,7 @@ PythonMod_Init(void)
vim_module = Py_InitModule4("vim", VimMethods, (char *)NULL,
(PyObject *)NULL, PYTHON_API_VERSION);
if (populate_module(vim_module, PyModule_AddObject,
PyObject_GetAttrString))
if (populate_module(vim_module))
return -1;
if (init_sys_path())
+1 -1
View File
@@ -1623,7 +1623,7 @@ Py3Init_vim(void)
if ((vim_module = PyModule_Create(&vimmodule)) == NULL)
return NULL;
if (populate_module(vim_module, PyModule_AddObject, PyObject_GetAttrString))
if (populate_module(vim_module))
return NULL;
if (init_sys_path())
+26 -31
View File
@@ -4457,7 +4457,7 @@ im_set_active(int active)
{
int was_active;
was_active = !!im_is_active;
was_active = !!im_get_status();
im_is_active = (active && !p_imdisable);
if (im_is_active != was_active)
@@ -5138,44 +5138,25 @@ xim_reset(void)
# ifndef FEAT_GUI_MACVIM
if (xic != NULL)
{
/*
* The third-party imhangul module (and maybe others too) ignores
* gtk_im_context_reset() or at least doesn't reset the active state.
* Thus sending imactivatekey would turn it off if it was on before,
* which is clearly not what we want. Fortunately we can work around
* that for imhangul by sending GDK_Escape, but I don't know if it
* works with all IM modules that support an activation key :/
*
* An alternative approach would be to destroy the IM context and
* recreate it. But that means loading/unloading the IM module on
* every mode switch, which causes a quite noticeable delay even on
* my rather fast box...
* *
* Moreover, there are some XIM which cannot respond to
* im_synthesize_keypress(). we hope that they reset by
* xim_shutdown().
*/
if (im_activatekey_keyval != GDK_VoidSymbol && im_is_active)
im_synthesize_keypress(GDK_Escape, 0U);
gtk_im_context_reset(xic);
/*
* HACK for Ami: This sequence of function calls makes Ami handle
* the IM reset graciously, without breaking loads of other stuff.
* It seems to force English mode as well, which is exactly what we
* want because it makes the Ami status display work reliably.
*/
gtk_im_context_set_use_preedit(xic, FALSE);
if (p_imdisable)
im_shutdown();
else
{
gtk_im_context_set_use_preedit(xic, TRUE);
xim_set_focus(gui.in_focus);
if (im_activatekey_keyval != GDK_VoidSymbol)
if (p_imaf[0] != NUL)
{
char_u *argv[1];
if (im_is_active)
argv[0] = (char_u *)"1";
else
argv[0] = (char_u *)"0";
(void)call_func_retnr(p_imaf, 1, argv, FALSE);
}
else if (im_activatekey_keyval != GDK_VoidSymbol)
{
if (im_is_active)
{
@@ -5339,6 +5320,20 @@ xim_queue_key_press_event(GdkEventKey *event, int down)
int
im_get_status(void)
{
if (p_imsf[0] != NUL)
{
int is_active;
/* FIXME: Don't execute user function in unsafe situation. */
if (exiting || is_autocmd_blocked())
return FALSE;
/* FIXME: :py print 'xxx' is shown duplicate result.
* Use silent to avoid it. */
++msg_silent;
is_active = call_func_retnr(p_imsf, 0, NULL, FALSE);
--msg_silent;
return (is_active > 0);
}
return im_is_active;
}
# endif
+18
View File
@@ -1458,6 +1458,15 @@ static struct vimoption
{"ignorecase", "ic", P_BOOL|P_VI_DEF,
(char_u *)&p_ic, PV_NONE,
{(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
{"imactivatefunc","imaf",P_STRING|P_VI_DEF|P_SECURE,
# if defined(FEAT_EVAL) && defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
(char_u *)&p_imaf, PV_NONE,
{(char_u *)"", (char_u *)NULL}
# else
(char_u *)NULL, PV_NONE,
{(char_u *)NULL, (char_u *)0L}
# endif
SCRIPTID_INIT},
{"imactivatekey","imak",P_STRING|P_VI_DEF,
#if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
(char_u *)&p_imak, PV_NONE,
@@ -1500,6 +1509,15 @@ static struct vimoption
{(char_u *)B_IMODE_NONE, (char_u *)0L}
#endif
SCRIPTID_INIT},
{"imstatusfunc","imse",P_STRING|P_VI_DEF|P_SECURE,
# if defined(FEAT_EVAL) && defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
(char_u *)&p_imsf, PV_NONE,
{(char_u *)"", (char_u *)NULL}
# else
(char_u *)NULL, PV_NONE,
{(char_u *)NULL, (char_u *)0L}
# endif
SCRIPTID_INIT},
{"include", "inc", P_STRING|P_ALLOCED|P_VI_DEF,
#ifdef FEAT_FIND_ID
(char_u *)&p_inc, PV_INC,
+2
View File
@@ -570,6 +570,8 @@ EXTERN char_u *p_iconstring; /* 'iconstring' */
EXTERN int p_ic; /* 'ignorecase' */
#if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
EXTERN char_u *p_imak; /* 'imactivatekey' */
EXTERN char_u *p_imaf; /* 'imactivatefunc' */
EXTERN char_u *p_imsf; /* 'imstatusfunc' */
#endif
#ifdef USE_IM_CONTROL
EXTERN int p_imcmdline; /* 'imcmdline' */
+1 -2
View File
@@ -65,8 +65,7 @@ language.
make xx
This will extract all the strings from Vim and merge them in with the
existing translations. Requires the GNU gettext utilities. Also requires
unpacking the extra archive.
existing translations. Requires the GNU gettext utilities.
Your original xx.po file will be copied to xx.po.orig
-- After you do this, you MUST do the next three steps! --
+1
View File
@@ -49,6 +49,7 @@ int has_textchangedI __ARGS((void));
int has_insertcharpre __ARGS((void));
void block_autocmds __ARGS((void));
void unblock_autocmds __ARGS((void));
int is_autocmd_blocked __ARGS((void));
char_u *getnextac __ARGS((int c, void *cookie, int indent));
int has_autocmd __ARGS((event_T event, char_u *sfname, buf_T *buf));
char_u *get_augroup_name __ARGS((expand_T *xp, int idx));
+19 -12
View File
@@ -290,10 +290,11 @@ static void nfa_dump __ARGS((nfa_regprog_T *prog));
#endif
static int *re2post __ARGS((void));
static nfa_state_T *alloc_state __ARGS((int c, nfa_state_T *out, nfa_state_T *out1));
static void st_error __ARGS((int *postfix, int *end, int *p));
static int nfa_max_width __ARGS((nfa_state_T *startstate, int depth));
static nfa_state_T *post2nfa __ARGS((int *postfix, int *end, int nfa_calc_size));
static void nfa_postprocess __ARGS((nfa_regprog_T *prog));
static int check_char_class __ARGS((int class, int c));
static void st_error __ARGS((int *postfix, int *end, int *p));
static void nfa_save_listids __ARGS((nfa_regprog_T *prog, int *list));
static void nfa_restore_listids __ARGS((nfa_regprog_T *prog, int *list));
static int nfa_re_num_cmp __ARGS((long_u val, int op, long_u pos));
@@ -3469,6 +3470,7 @@ typedef struct
#ifdef ENABLE_LOG
static void log_subsexpr __ARGS((regsubs_T *subs));
static void log_subexpr __ARGS((regsub_T *sub));
static char *pim_info __ARGS((nfa_pim_T *pim));
static void
log_subsexpr(subs)
@@ -3508,7 +3510,8 @@ log_subexpr(sub)
}
static char *
pim_info(nfa_pim_T *pim)
pim_info(pim)
nfa_pim_T *pim;
{
static char buf[30];
@@ -3532,6 +3535,7 @@ static void clear_sub __ARGS((regsub_T *sub));
static void copy_sub __ARGS((regsub_T *to, regsub_T *from));
static void copy_sub_off __ARGS((regsub_T *to, regsub_T *from));
static int sub_equal __ARGS((regsub_T *sub1, regsub_T *sub2));
static int match_backref __ARGS((regsub_T *sub, int subidx, int *bytelen));
static int has_state_with_pos __ARGS((nfa_list_T *l, nfa_state_T *state, regsubs_T *subs));
static int state_in_list __ARGS((nfa_list_T *l, nfa_state_T *state, regsubs_T *subs));
static void addstate __ARGS((nfa_list_T *l, nfa_state_T *state, regsubs_T *subs, nfa_pim_T *pim, int off));
@@ -3638,14 +3642,14 @@ sub_equal(sub1, sub2)
if (i < sub1->in_use)
s1 = sub1->list.multi[i].start.lnum;
else
s1 = 0;
s1 = -1;
if (i < sub2->in_use)
s2 = sub2->list.multi[i].start.lnum;
else
s2 = 0;
s2 = -1;
if (s1 != s2)
return FALSE;
if (s1 != 0 && sub1->list.multi[i].start.col
if (s1 != -1 && sub1->list.multi[i].start.col
!= sub2->list.multi[i].start.col)
return FALSE;
}
@@ -3927,8 +3931,9 @@ addstate(l, state, subs, pim, off)
if (state->lastlist[nfa_ll_index] == l->id)
{
/* This state is already in the list, don't add it again,
* unless it is an MOPEN that is used for a backreference. */
if (!nfa_has_backref)
* unless it is an MOPEN that is used for a backreference or
* when there is a PIM. */
if (!nfa_has_backref && pim == NULL)
{
skip_add:
#ifdef ENABLE_LOG
@@ -3945,9 +3950,9 @@ skip_add:
goto skip_add;
}
/* When there are backreferences the number of states may be (a
* lot) bigger than anticipated. */
if (nfa_has_backref && l->n == l->len)
/* When there are backreferences or PIMs the number of states may
* be (a lot) bigger than anticipated. */
if (l->n == l->len)
{
int newlen = l->len * 3 / 2 + 50;
@@ -4319,8 +4324,6 @@ check_char_class(class, c)
return FAIL;
}
static int match_backref __ARGS((regsub_T *sub, int subidx, int *bytelen));
/*
* Check for a match with subexpression "subidx".
* Return TRUE if it matches.
@@ -5195,6 +5198,10 @@ nfa_regmatch(prog, start, submatch, m)
|| t->state->c == NFA_START_INVISIBLE_BEFORE_FIRST
|| t->state->c == NFA_START_INVISIBLE_BEFORE_NEG_FIRST)
{
/* Copy submatch info for the recursive call, so that
* \1 can be matched. */
copy_sub_off(&m->norm, &t->subs.norm);
/*
* First try matching the invisible match, then what
* follows.
+1
View File
@@ -0,0 +1 @@
raise NotImplementedError
+1
View File
@@ -0,0 +1 @@
raise ImportError
@@ -0,0 +1 @@
#
@@ -0,0 +1 @@
#
@@ -0,0 +1 @@
#
+1 -1
View File
@@ -85,7 +85,7 @@ ggO---:0put b
ggO---:0put a
ggO---:w >>test.out
:so small.vim
:set nocp
:set nocp viminfo+=nviminfo
:enew!
oa
:set ul=100
+4
View File
@@ -338,6 +338,7 @@ STARTTEST
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' bar foo '])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo bar '])
:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo xxx ', 'foo'])
:call add(tl, [2, '[ ]\@!\p\%([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:'])
:"
:"""" Combining different tests and features
:call add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab'])
@@ -380,6 +381,9 @@ STARTTEST
:call add(tl, [2, '\(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9', 'xabcddefghiabcddefghix', 'abcddefghiabcddefghi', 'a', 'b', 'c', 'dd', 'e', 'f', 'g', 'h', 'i'])
:call add(tl, [2, '\(\d*\)a \1b', ' a b ', 'a b', ''])
:call add(tl, [2, '^.\(.\).\_..\1.', "aaa\naaa\nb", "aaa\naaa", 'a'])
:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.com', 'foo.bat/foo.com', 'bat'])
:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.bat'])
:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<=$', 'foo.bat/foo.bat', 'foo.bat/foo.bat', 'bat', 'bat'])
:"
:"""" Look-behind with limit
:call add(tl, [2, '<\@<=span.', 'xxspanxx<spanyyy', 'spany'])
+12
View File
@@ -770,6 +770,9 @@ OK 2 - ^\%(.*bar\)\@!.*\zsfoo
OK 0 - ^\%(.*bar\)\@!.*\zsfoo
OK 1 - ^\%(.*bar\)\@!.*\zsfoo
OK 2 - ^\%(.*bar\)\@!.*\zsfoo
OK 0 - [ ]\@!\p\%([ ]\@!\p\)*:
OK 1 - [ ]\@!\p\%([ ]\@!\p\)*:
OK 2 - [ ]\@!\p\%([ ]\@!\p\)*:
OK 0 - [[:alpha:]]\{-2,6}
OK 1 - [[:alpha:]]\{-2,6}
OK 2 - [[:alpha:]]\{-2,6}
@@ -866,6 +869,15 @@ OK 2 - \(\d*\)a \1b
OK 0 - ^.\(.\).\_..\1.
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.
OK 0 - ^.*\.\(.*\)/.\+\(\1\)\@<!$
OK 1 - ^.*\.\(.*\)/.\+\(\1\)\@<!$
OK 2 - ^.*\.\(.*\)/.\+\(\1\)\@<!$
OK 0 - ^.*\.\(.*\)/.\+\(\1\)\@<!$
OK 1 - ^.*\.\(.*\)/.\+\(\1\)\@<!$
OK 2 - ^.*\.\(.*\)/.\+\(\1\)\@<!$
OK 0 - ^.*\.\(.*\)/.\+\(\1\)\@<=$
OK 1 - ^.*\.\(.*\)/.\+\(\1\)\@<=$
OK 2 - ^.*\.\(.*\)/.\+\(\1\)\@<=$
OK 0 - <\@<=span.
OK 1 - <\@<=span.
OK 2 - <\@<=span.
+95 -24
View File
@@ -216,6 +216,7 @@ EOF
:let messages=[]
:delfunction DictNew
py <<EOF
import sys
d=vim.bindeval('{}')
m=vim.bindeval('messages')
def em(expr, g=globals(), l=locals()):
@@ -297,7 +298,7 @@ EOF
:" threading
:let l = [0]
:py l=vim.bindeval('l')
:py <<EOF
py <<EOF
import threading
import time
@@ -327,7 +328,7 @@ EOF
:" settrace
:let l = []
:py l=vim.bindeval('l')
:py <<EOF
py <<EOF
import sys
def traceit(frame, event, arg):
@@ -342,9 +343,9 @@ def trace_main():
EOF
:py sys.settrace(traceit)
:py trace_main()
:py sys.settrace(None)
:py del traceit
:py del trace_main
:py sys.settrace(None)
:$put =string(l)
:"
:" Slice
@@ -880,10 +881,16 @@ def ee(expr, g=globals(), l=locals()):
if expr.find('None') > -1:
msg = msg.replace('TypeError:(\'iteration over non-sequence\',)',
'TypeError:("\'NoneType\' object is not iterable",)')
if expr.find('FailingNumber') > -1:
msg = msg.replace(', not \'FailingNumber\'', '').replace('"', '\'')
msg = msg.replace('TypeError:(\'iteration over non-sequence\',)',
'TypeError:("\'FailingNumber\' object is not iterable",)')
if msg.find('(\'\'') > -1 or msg.find('(\'can\'t') > -1:
msg = msg.replace('(\'', '("').replace('\',)', '",)')
if expr == 'fd(self=[])':
# HACK: PyMapping_Check changed meaning
msg = msg.replace('AttributeError:(\'keys\',)',
'TypeError:(\'unable to convert object to vim dictionary\',)')
'TypeError:(\'unable to convert list to vim dictionary\',)')
cb.append(expr + ':' + msg)
else:
cb.append(expr + ':NOT FAILED')
@@ -942,6 +949,7 @@ def convertfrompyobject_test(expr, recurse=True):
'{u"": 1}', # Same, but with unicode object
'FailingMapping()', #
'FailingMappingKey()', #
'FailingNumber()', #
))
def convertfrompymapping_test(expr):
@@ -956,66 +964,104 @@ def iter_test(expr):
'FailingIterNext()',
))
def number_test(expr, natural=False, unsigned=False):
if natural:
unsigned = True
return subexpr_test(expr, 'NumberToLong', (
'[]',
'None',
) + (unsigned and ('-1',) or ())
+ (natural and ('0',) or ()))
class FailingTrue(object):
def __nonzero__(self):
raise NotImplementedError
raise NotImplementedError('bool')
class FailingIter(object):
def __iter__(self):
raise NotImplementedError
raise NotImplementedError('iter')
class FailingIterNext(object):
def __iter__(self):
return self
def next(self):
raise NotImplementedError
raise NotImplementedError('next')
class FailingMappingKey(object):
def __getitem__(self, item):
raise NotImplementedError
raise NotImplementedError('getitem:mappingkey')
def keys(self):
return list("abcH")
class FailingMapping(object):
def __getitem__(self):
raise NotImplementedError
raise NotImplementedError('getitem:mapping')
def keys(self):
raise NotImplementedError
raise NotImplementedError('keys')
class FailingList(list):
def __getitem__(self, idx):
if i == 2:
raise NotImplementedError
raise NotImplementedError('getitem:list')
else:
return super(FailingList, self).__getitem__(idx)
class NoArgsCall(object):
def __call__(self):
pass
class FailingCall(object):
def __call__(self, path):
raise NotImplementedError('call')
class FailingNumber(object):
def __int__(self):
raise NotImplementedError('int')
cb.append("> Output")
cb.append(">> OutputSetattr")
ee('del sys.stdout.softspace')
ee('sys.stdout.softspace = []')
number_test('sys.stdout.softspace = %s', unsigned=True)
number_test('sys.stderr.softspace = %s', unsigned=True)
ee('sys.stdout.attr = None')
cb.append(">> OutputWrite")
ee('sys.stdout.write(None)')
cb.append(">> OutputWriteLines")
ee('sys.stdout.writelines(None)')
ee('sys.stdout.writelines([1])')
#iter_test('sys.stdout.writelines(%s)')
iter_test('sys.stdout.writelines(%s)')
cb.append("> VimCommand")
ee('vim.command(1)')
stringtochars_test('vim.command(%s)')
ee('vim.command("", 2)')
#! Not checked: vim->python exceptions translating: checked later
cb.append("> VimToPython")
#! Not checked: everything: needs errors in internal python functions
cb.append("> VimEval")
ee('vim.eval(1)')
stringtochars_test('vim.eval(%s)')
ee('vim.eval("", FailingTrue())')
#! Not checked: everything: needs errors in internal python functions
cb.append("> VimEvalPy")
ee('vim.bindeval(1)')
stringtochars_test('vim.bindeval(%s)')
ee('vim.eval("", 2)')
#! Not checked: vim->python exceptions translating: checked later
cb.append("> VimStrwidth")
ee('vim.strwidth(1)')
stringtochars_test('vim.strwidth(%s)')
cb.append("> VimForeachRTP")
ee('vim.foreach_rtp(None)')
ee('vim.foreach_rtp(NoArgsCall())')
ee('vim.foreach_rtp(FailingCall())')
ee('vim.foreach_rtp(int, 2)')
cb.append('> import')
old_rtp = vim.options['rtp']
vim.options['rtp'] = os.getcwd().replace(',', '\\,').replace('\\', '\\\\')
ee('import xxx_no_such_module_xxx')
ee('import failing_import')
ee('import failing')
vim.options['rtp'] = old_rtp
del old_rtp
cb.append("> Dictionary")
cb.append(">> DictionaryConstructor")
ee('vim.Dictionary("abcI")')
@@ -1043,7 +1089,7 @@ cb.append(">>> kwargs")
cb.append(">>> iter")
ee('d.update(FailingMapping())')
ee('d.update([FailingIterNext()])')
#iter_test('d.update(%s)')
iter_test('d.update(%s)')
convertfrompyobject_test('d.update(%s)')
stringtochars_test('d.update(((%s, 0),))')
convertfrompyobject_test('d.update((("a", %s),))')
@@ -1055,7 +1101,7 @@ cb.append("> List")
cb.append(">> ListConstructor")
ee('vim.List(1, 2)')
ee('vim.List(a=1)')
#iter_test('vim.List(%s)')
iter_test('vim.List(%s)')
convertfrompyobject_test('vim.List([%s])')
cb.append(">> ListItem")
ee('l[1000]')
@@ -1064,10 +1110,10 @@ ee('ll[1] = 2')
ee('l[1000] = 3')
cb.append(">> ListAssSlice")
ee('ll[1:100] = "abcJ"')
#iter_test('l[:] = %s')
iter_test('l[:] = %s')
convertfrompyobject_test('l[:] = [%s]')
cb.append(">> ListConcatInPlace")
#iter_test('l.extend(%s)')
iter_test('l.extend(%s)')
convertfrompyobject_test('l.extend([%s])')
cb.append(">> ListSetattr")
ee('del l.locked')
@@ -1094,14 +1140,15 @@ cb.append(">> WindowSetattr")
ee('vim.current.window.buffer = 0')
ee('vim.current.window.cursor = (100000000, 100000000)')
ee('vim.current.window.cursor = True')
ee('vim.current.window.height = "abcK"')
ee('vim.current.window.width = "abcL"')
number_test('vim.current.window.height = %s', unsigned=True)
number_test('vim.current.window.width = %s', unsigned=True)
ee('vim.current.window.xxxxxx = True')
cb.append("> WinList")
cb.append(">> WinListItem")
ee('vim.windows[1000]')
cb.append("> Buffer")
cb.append(">> StringToLine (indirect)")
ee('vim.current.buffer[0] = u"\\na"')
ee('vim.current.buffer[0] = "\\na"')
cb.append(">> SetBufferLine (indirect)")
ee('vim.current.buffer[0] = True')
@@ -1129,8 +1176,8 @@ cb.append(">> BufferRange")
ee('vim.current.buffer.range(1, 2, 3)')
cb.append("> BufMap")
cb.append(">> BufMapItem")
ee('vim.buffers[None]')
ee('vim.buffers[100000000]')
number_test('vim.buffers[%s]', natural=True)
cb.append("> Current")
cb.append(">> CurrentGetattr")
ee('vim.current.xxx')
@@ -1154,12 +1201,16 @@ del Mapping
del convertfrompyobject_test
del convertfrompymapping_test
del iter_test
del number_test
del FailingTrue
del FailingIter
del FailingIterNext
del FailingMapping
del FailingMappingKey
del FailingList
del NoArgsCall
del FailingCall
del FailingNumber
EOF
:delfunction F
:"
@@ -1168,6 +1219,16 @@ py << EOF
sys.path.insert(0, os.path.join(os.getcwd(), 'python_before'))
sys.path.append(os.path.join(os.getcwd(), 'python_after'))
vim.options['rtp'] = os.getcwd().replace(',', '\\,').replace('\\', '\\\\')
l = []
def callback(path):
l.append(path[-len('/testdir'):].replace(os.path.sep, '/'))
vim.foreach_rtp(callback)
cb.append(repr(l))
del l
def callback(path):
return path[-len('/testdir'):].replace(os.path.sep, '/')
cb.append(repr(vim.foreach_rtp(callback)))
del callback
from module import dir as d
from modulex import ddir
cb.append(d + ',' + ddir)
@@ -1175,10 +1236,19 @@ import before
cb.append(before.dir)
import after
cb.append(after.dir)
import topmodule as tm
import topmodule.submodule as tms
import topmodule.submodule.subsubmodule.subsubsubmodule as tmsss
cb.append(tm.__file__.replace('.pyc', '.py').replace(os.path.sep, '/')[-len('modulex/topmodule/__init__.py'):])
cb.append(tms.__file__.replace('.pyc', '.py').replace(os.path.sep, '/')[-len('modulex/topmodule/submodule/__init__.py'):])
cb.append(tmsss.__file__.replace('.pyc', '.py').replace(os.path.sep, '/')[-len('modulex/topmodule/submodule/subsubmodule/subsubsubmodule.py'):])
del before
del after
del d
del ddir
del tm
del tms
del tmsss
EOF
:"
:" Test exceptions
@@ -1232,6 +1302,7 @@ EOF
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:call getchar()
ENDTEST
+179 -79
View File
@@ -441,28 +441,69 @@ test86.in
> Output
>> OutputSetattr
del sys.stdout.softspace:AttributeError:("can't delete OutputObject attributes",)
>>> Testing NumberToLong using sys.stdout.softspace = %s
sys.stdout.softspace = []:TypeError:('expected int(), long() or something supporting coercing to long(), but got list',)
sys.stdout.softspace = None:TypeError:('expected int(), long() or something supporting coercing to long(), but got NoneType',)
sys.stdout.softspace = -1:ValueError:('number must be greater or equal to zero',)
<<< Finished
>>> Testing NumberToLong using sys.stderr.softspace = %s
sys.stderr.softspace = []:TypeError:('expected int(), long() or something supporting coercing to long(), but got list',)
sys.stderr.softspace = None:TypeError:('expected int(), long() or something supporting coercing to long(), but got NoneType',)
sys.stderr.softspace = -1:ValueError:('number must be greater or equal to zero',)
<<< Finished
sys.stdout.attr = None:AttributeError:('invalid attribute: attr',)
>> OutputWrite
sys.stdout.write(None):TypeError:('coercing to Unicode: need string or buffer, NoneType found',)
>> OutputWriteLines
sys.stdout.writelines(None):TypeError:("'NoneType' object is not iterable",)
sys.stdout.writelines([1]):TypeError:('coercing to Unicode: need string or buffer, int found',)
>>> Testing *Iter* using sys.stdout.writelines(%s)
sys.stdout.writelines(FailingIter()):NotImplementedError:('iter',)
sys.stdout.writelines(FailingIterNext()):NotImplementedError:('next',)
<<< Finished
> VimCommand
>>> Testing StringToChars using vim.command(%s)
vim.command(1):TypeError:('expected str() or unicode() instance, but got int',)
vim.command(u"\0"):TypeError:('expected string without null bytes',)
vim.command("\0"):TypeError:('expected string without null bytes',)
<<< Finished
vim.command("", 2):TypeError:('command() takes exactly one argument (2 given)',)
> VimToPython
> VimEval
>>> Testing StringToChars using vim.eval(%s)
vim.eval(1):TypeError:('expected str() or unicode() instance, but got int',)
vim.eval(u"\0"):TypeError:('expected string without null bytes',)
vim.eval("\0"):TypeError:('expected string without null bytes',)
<<< Finished
vim.eval("", FailingTrue()):TypeError:('function takes exactly 1 argument (2 given)',)
> VimEvalPy
>>> Testing StringToChars using vim.bindeval(%s)
vim.bindeval(1):TypeError:('expected str() or unicode() instance, but got int',)
vim.bindeval(u"\0"):TypeError:('expected string without null bytes',)
vim.bindeval("\0"):TypeError:('expected string without null bytes',)
<<< Finished
vim.eval("", 2):TypeError:('function takes exactly 1 argument (2 given)',)
> VimStrwidth
>>> Testing StringToChars using vim.strwidth(%s)
vim.strwidth(1):TypeError:('expected str() or unicode() instance, but got int',)
vim.strwidth(u"\0"):TypeError:('expected string without null bytes',)
vim.strwidth("\0"):TypeError:('expected string without null bytes',)
<<< Finished
> VimForeachRTP
vim.foreach_rtp(None):TypeError:("'NoneType' object is not callable",)
vim.foreach_rtp(NoArgsCall()):TypeError:('__call__() takes exactly 1 argument (2 given)',)
vim.foreach_rtp(FailingCall()):NotImplementedError:('call',)
vim.foreach_rtp(int, 2):TypeError:('foreach_rtp() takes exactly one argument (2 given)',)
> import
import xxx_no_such_module_xxx:ImportError:('No module named xxx_no_such_module_xxx',)
import failing_import:ImportError:('No module named failing_import',)
import failing:NotImplementedError:()
> Dictionary
>> DictionaryConstructor
vim.Dictionary("abcI"):ValueError:('expected sequence element of size 2, but got sequence of size 1',)
>> DictionarySetattr
del d.locked:AttributeError:('cannot delete vim.Dictionary attributes',)
d.locked = FailingTrue():NotImplementedError:()
d.locked = FailingTrue():NotImplementedError:('bool',)
vim.vvars.locked = False:TypeError:('cannot modify fixed dictionary',)
d.scope = True:AttributeError:('cannot set attribute scope',)
d.xxx = True:AttributeError:('cannot set attribute xxx',)
@@ -501,14 +542,15 @@ d["a"] = {"abcF" : Mapping({"\0" : 1})}:TypeError:('expected string without null
<<< Finished
>>> Testing *Iter* using d["a"] = {"abcF" : %s}
d["a"] = {"abcF" : FailingIter()}:TypeError:('unable to convert FailingIter to vim structure',)
d["a"] = {"abcF" : FailingIterNext()}:NotImplementedError:()
d["a"] = {"abcF" : FailingIterNext()}:NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using d["a"] = {"abcF" : %s}
d["a"] = {"abcF" : None}:TypeError:('unable to convert NoneType to vim structure',)
d["a"] = {"abcF" : {"": 1}}:ValueError:('empty keys are not allowed',)
d["a"] = {"abcF" : {u"": 1}}:ValueError:('empty keys are not allowed',)
d["a"] = {"abcF" : FailingMapping()}:NotImplementedError:()
d["a"] = {"abcF" : FailingMappingKey()}:NotImplementedError:()
d["a"] = {"abcF" : FailingMapping()}:NotImplementedError:('keys',)
d["a"] = {"abcF" : FailingMappingKey()}:NotImplementedError:('getitem:mappingkey',)
d["a"] = {"abcF" : FailingNumber()}:TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing StringToChars using d["a"] = Mapping({%s : 1})
d["a"] = Mapping({1 : 1}):TypeError:('expected str() or unicode() instance, but got int',)
@@ -527,31 +569,37 @@ d["a"] = Mapping({"abcG" : Mapping({"\0" : 1})}):TypeError:('expected string wit
<<< Finished
>>> Testing *Iter* using d["a"] = Mapping({"abcG" : %s})
d["a"] = Mapping({"abcG" : FailingIter()}):TypeError:('unable to convert FailingIter to vim structure',)
d["a"] = Mapping({"abcG" : FailingIterNext()}):NotImplementedError:()
d["a"] = Mapping({"abcG" : FailingIterNext()}):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using d["a"] = Mapping({"abcG" : %s})
d["a"] = Mapping({"abcG" : None}):TypeError:('unable to convert NoneType to vim structure',)
d["a"] = Mapping({"abcG" : {"": 1}}):ValueError:('empty keys are not allowed',)
d["a"] = Mapping({"abcG" : {u"": 1}}):ValueError:('empty keys are not allowed',)
d["a"] = Mapping({"abcG" : FailingMapping()}):NotImplementedError:()
d["a"] = Mapping({"abcG" : FailingMappingKey()}):NotImplementedError:()
d["a"] = Mapping({"abcG" : FailingMapping()}):NotImplementedError:('keys',)
d["a"] = Mapping({"abcG" : FailingMappingKey()}):NotImplementedError:('getitem:mappingkey',)
d["a"] = Mapping({"abcG" : FailingNumber()}):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing *Iter* using d["a"] = %s
d["a"] = FailingIter():TypeError:('unable to convert FailingIter to vim structure',)
d["a"] = FailingIterNext():NotImplementedError:()
d["a"] = FailingIterNext():NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using d["a"] = %s
d["a"] = None:TypeError:('unable to convert NoneType to vim structure',)
d["a"] = {"": 1}:ValueError:('empty keys are not allowed',)
d["a"] = {u"": 1}:ValueError:('empty keys are not allowed',)
d["a"] = FailingMapping():NotImplementedError:()
d["a"] = FailingMappingKey():NotImplementedError:()
d["a"] = FailingMapping():NotImplementedError:('keys',)
d["a"] = FailingMappingKey():NotImplementedError:('getitem:mappingkey',)
d["a"] = FailingNumber():TypeError:('long() argument must be a string or a number',)
<<< Finished
>> DictionaryUpdate
>>> kwargs
>>> iter
d.update(FailingMapping()):NotImplementedError:()
d.update([FailingIterNext()]):NotImplementedError:()
d.update(FailingMapping()):NotImplementedError:('keys',)
d.update([FailingIterNext()]):NotImplementedError:('next',)
>>> Testing *Iter* using d.update(%s)
d.update(FailingIter()):NotImplementedError:('iter',)
d.update(FailingIterNext()):NotImplementedError:('next',)
<<< Finished
>>> Testing StringToChars using d.update({%s : 1})
d.update({1 : 1}):TypeError:('expected str() or unicode() instance, but got int',)
d.update({u"\0" : 1}):TypeError:('expected string without null bytes',)
@@ -569,14 +617,15 @@ d.update({"abcF" : Mapping({"\0" : 1})}):TypeError:('expected string without nul
<<< Finished
>>> Testing *Iter* using d.update({"abcF" : %s})
d.update({"abcF" : FailingIter()}):TypeError:('unable to convert FailingIter to vim structure',)
d.update({"abcF" : FailingIterNext()}):NotImplementedError:()
d.update({"abcF" : FailingIterNext()}):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using d.update({"abcF" : %s})
d.update({"abcF" : None}):TypeError:('unable to convert NoneType to vim structure',)
d.update({"abcF" : {"": 1}}):ValueError:('empty keys are not allowed',)
d.update({"abcF" : {u"": 1}}):ValueError:('empty keys are not allowed',)
d.update({"abcF" : FailingMapping()}):NotImplementedError:()
d.update({"abcF" : FailingMappingKey()}):NotImplementedError:()
d.update({"abcF" : FailingMapping()}):NotImplementedError:('keys',)
d.update({"abcF" : FailingMappingKey()}):NotImplementedError:('getitem:mappingkey',)
d.update({"abcF" : FailingNumber()}):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing StringToChars using d.update(Mapping({%s : 1}))
d.update(Mapping({1 : 1})):TypeError:('expected str() or unicode() instance, but got int',)
@@ -595,25 +644,27 @@ d.update(Mapping({"abcG" : Mapping({"\0" : 1})})):TypeError:('expected string wi
<<< Finished
>>> Testing *Iter* using d.update(Mapping({"abcG" : %s}))
d.update(Mapping({"abcG" : FailingIter()})):TypeError:('unable to convert FailingIter to vim structure',)
d.update(Mapping({"abcG" : FailingIterNext()})):NotImplementedError:()
d.update(Mapping({"abcG" : FailingIterNext()})):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using d.update(Mapping({"abcG" : %s}))
d.update(Mapping({"abcG" : None})):TypeError:('unable to convert NoneType to vim structure',)
d.update(Mapping({"abcG" : {"": 1}})):ValueError:('empty keys are not allowed',)
d.update(Mapping({"abcG" : {u"": 1}})):ValueError:('empty keys are not allowed',)
d.update(Mapping({"abcG" : FailingMapping()})):NotImplementedError:()
d.update(Mapping({"abcG" : FailingMappingKey()})):NotImplementedError:()
d.update(Mapping({"abcG" : FailingMapping()})):NotImplementedError:('keys',)
d.update(Mapping({"abcG" : FailingMappingKey()})):NotImplementedError:('getitem:mappingkey',)
d.update(Mapping({"abcG" : FailingNumber()})):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing *Iter* using d.update(%s)
d.update(FailingIter()):NotImplementedError:()
d.update(FailingIterNext()):NotImplementedError:()
d.update(FailingIter()):NotImplementedError:('iter',)
d.update(FailingIterNext()):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using d.update(%s)
d.update(None):TypeError:("'NoneType' object is not iterable",)
d.update({"": 1}):ValueError:('empty keys are not allowed',)
d.update({u"": 1}):ValueError:('empty keys are not allowed',)
d.update(FailingMapping()):NotImplementedError:()
d.update(FailingMappingKey()):NotImplementedError:()
d.update(FailingMapping()):NotImplementedError:('keys',)
d.update(FailingMappingKey()):NotImplementedError:('getitem:mappingkey',)
d.update(FailingNumber()):TypeError:("'FailingNumber' object is not iterable",)
<<< Finished
>>> Testing StringToChars using d.update(((%s, 0),))
d.update(((1, 0),)):TypeError:('expected str() or unicode() instance, but got int',)
@@ -637,14 +688,15 @@ d.update((("a", {"abcF" : Mapping({"\0" : 1})}),)):TypeError:('expected string w
<<< Finished
>>> Testing *Iter* using d.update((("a", {"abcF" : %s}),))
d.update((("a", {"abcF" : FailingIter()}),)):TypeError:('unable to convert FailingIter to vim structure',)
d.update((("a", {"abcF" : FailingIterNext()}),)):NotImplementedError:()
d.update((("a", {"abcF" : FailingIterNext()}),)):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using d.update((("a", {"abcF" : %s}),))
d.update((("a", {"abcF" : None}),)):TypeError:('unable to convert NoneType to vim structure',)
d.update((("a", {"abcF" : {"": 1}}),)):ValueError:('empty keys are not allowed',)
d.update((("a", {"abcF" : {u"": 1}}),)):ValueError:('empty keys are not allowed',)
d.update((("a", {"abcF" : FailingMapping()}),)):NotImplementedError:()
d.update((("a", {"abcF" : FailingMappingKey()}),)):NotImplementedError:()
d.update((("a", {"abcF" : FailingMapping()}),)):NotImplementedError:('keys',)
d.update((("a", {"abcF" : FailingMappingKey()}),)):NotImplementedError:('getitem:mappingkey',)
d.update((("a", {"abcF" : FailingNumber()}),)):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing StringToChars using d.update((("a", Mapping({%s : 1})),))
d.update((("a", Mapping({1 : 1})),)):TypeError:('expected str() or unicode() instance, but got int',)
@@ -663,25 +715,27 @@ d.update((("a", Mapping({"abcG" : Mapping({"\0" : 1})})),)):TypeError:('expected
<<< Finished
>>> Testing *Iter* using d.update((("a", Mapping({"abcG" : %s})),))
d.update((("a", Mapping({"abcG" : FailingIter()})),)):TypeError:('unable to convert FailingIter to vim structure',)
d.update((("a", Mapping({"abcG" : FailingIterNext()})),)):NotImplementedError:()
d.update((("a", Mapping({"abcG" : FailingIterNext()})),)):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using d.update((("a", Mapping({"abcG" : %s})),))
d.update((("a", Mapping({"abcG" : None})),)):TypeError:('unable to convert NoneType to vim structure',)
d.update((("a", Mapping({"abcG" : {"": 1}})),)):ValueError:('empty keys are not allowed',)
d.update((("a", Mapping({"abcG" : {u"": 1}})),)):ValueError:('empty keys are not allowed',)
d.update((("a", Mapping({"abcG" : FailingMapping()})),)):NotImplementedError:()
d.update((("a", Mapping({"abcG" : FailingMappingKey()})),)):NotImplementedError:()
d.update((("a", Mapping({"abcG" : FailingMapping()})),)):NotImplementedError:('keys',)
d.update((("a", Mapping({"abcG" : FailingMappingKey()})),)):NotImplementedError:('getitem:mappingkey',)
d.update((("a", Mapping({"abcG" : FailingNumber()})),)):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing *Iter* using d.update((("a", %s),))
d.update((("a", FailingIter()),)):TypeError:('unable to convert FailingIter to vim structure',)
d.update((("a", FailingIterNext()),)):NotImplementedError:()
d.update((("a", FailingIterNext()),)):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using d.update((("a", %s),))
d.update((("a", None),)):TypeError:('unable to convert NoneType to vim structure',)
d.update((("a", {"": 1}),)):ValueError:('empty keys are not allowed',)
d.update((("a", {u"": 1}),)):ValueError:('empty keys are not allowed',)
d.update((("a", FailingMapping()),)):NotImplementedError:()
d.update((("a", FailingMappingKey()),)):NotImplementedError:()
d.update((("a", FailingMapping()),)):NotImplementedError:('keys',)
d.update((("a", FailingMappingKey()),)):NotImplementedError:('getitem:mappingkey',)
d.update((("a", FailingNumber()),)):TypeError:('long() argument must be a string or a number',)
<<< Finished
>> DictionaryPopItem
d.popitem(1, 2):TypeError:('popitem() takes no arguments (2 given)',)
@@ -691,6 +745,10 @@ d.has_key():TypeError:('has_key() takes exactly one argument (0 given)',)
>> ListConstructor
vim.List(1, 2):TypeError:('function takes at most 1 argument (2 given)',)
vim.List(a=1):TypeError:('list constructor does not accept keyword arguments',)
>>> Testing *Iter* using vim.List(%s)
vim.List(FailingIter()):NotImplementedError:('iter',)
vim.List(FailingIterNext()):NotImplementedError:('next',)
<<< Finished
>>> Testing StringToChars using vim.List([{%s : 1}])
vim.List([{1 : 1}]):TypeError:('expected str() or unicode() instance, but got int',)
vim.List([{u"\0" : 1}]):TypeError:('expected string without null bytes',)
@@ -708,14 +766,15 @@ vim.List([{"abcF" : Mapping({"\0" : 1})}]):TypeError:('expected string without n
<<< Finished
>>> Testing *Iter* using vim.List([{"abcF" : %s}])
vim.List([{"abcF" : FailingIter()}]):TypeError:('unable to convert FailingIter to vim structure',)
vim.List([{"abcF" : FailingIterNext()}]):NotImplementedError:()
vim.List([{"abcF" : FailingIterNext()}]):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using vim.List([{"abcF" : %s}])
vim.List([{"abcF" : None}]):TypeError:('unable to convert NoneType to vim structure',)
vim.List([{"abcF" : {"": 1}}]):ValueError:('empty keys are not allowed',)
vim.List([{"abcF" : {u"": 1}}]):ValueError:('empty keys are not allowed',)
vim.List([{"abcF" : FailingMapping()}]):NotImplementedError:()
vim.List([{"abcF" : FailingMappingKey()}]):NotImplementedError:()
vim.List([{"abcF" : FailingMapping()}]):NotImplementedError:('keys',)
vim.List([{"abcF" : FailingMappingKey()}]):NotImplementedError:('getitem:mappingkey',)
vim.List([{"abcF" : FailingNumber()}]):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing StringToChars using vim.List([Mapping({%s : 1})])
vim.List([Mapping({1 : 1})]):TypeError:('expected str() or unicode() instance, but got int',)
@@ -734,25 +793,27 @@ vim.List([Mapping({"abcG" : Mapping({"\0" : 1})})]):TypeError:('expected string
<<< Finished
>>> Testing *Iter* using vim.List([Mapping({"abcG" : %s})])
vim.List([Mapping({"abcG" : FailingIter()})]):TypeError:('unable to convert FailingIter to vim structure',)
vim.List([Mapping({"abcG" : FailingIterNext()})]):NotImplementedError:()
vim.List([Mapping({"abcG" : FailingIterNext()})]):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using vim.List([Mapping({"abcG" : %s})])
vim.List([Mapping({"abcG" : None})]):TypeError:('unable to convert NoneType to vim structure',)
vim.List([Mapping({"abcG" : {"": 1}})]):ValueError:('empty keys are not allowed',)
vim.List([Mapping({"abcG" : {u"": 1}})]):ValueError:('empty keys are not allowed',)
vim.List([Mapping({"abcG" : FailingMapping()})]):NotImplementedError:()
vim.List([Mapping({"abcG" : FailingMappingKey()})]):NotImplementedError:()
vim.List([Mapping({"abcG" : FailingMapping()})]):NotImplementedError:('keys',)
vim.List([Mapping({"abcG" : FailingMappingKey()})]):NotImplementedError:('getitem:mappingkey',)
vim.List([Mapping({"abcG" : FailingNumber()})]):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing *Iter* using vim.List([%s])
vim.List([FailingIter()]):TypeError:('unable to convert FailingIter to vim structure',)
vim.List([FailingIterNext()]):NotImplementedError:()
vim.List([FailingIterNext()]):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using vim.List([%s])
vim.List([None]):TypeError:('unable to convert NoneType to vim structure',)
vim.List([{"": 1}]):ValueError:('empty keys are not allowed',)
vim.List([{u"": 1}]):ValueError:('empty keys are not allowed',)
vim.List([FailingMapping()]):NotImplementedError:()
vim.List([FailingMappingKey()]):NotImplementedError:()
vim.List([FailingMapping()]):NotImplementedError:('keys',)
vim.List([FailingMappingKey()]):NotImplementedError:('getitem:mappingkey',)
vim.List([FailingNumber()]):TypeError:('long() argument must be a string or a number',)
<<< Finished
>> ListItem
l[1000]:IndexError:('list index out of range',)
@@ -761,6 +822,10 @@ ll[1] = 2:error:('list is locked',)
l[1000] = 3:IndexError:('list index out of range',)
>> ListAssSlice
ll[1:100] = "abcJ":error:('list is locked',)
>>> Testing *Iter* using l[:] = %s
l[:] = FailingIter():NotImplementedError:('iter',)
l[:] = FailingIterNext():NotImplementedError:('next',)
<<< Finished
>>> Testing StringToChars using l[:] = [{%s : 1}]
l[:] = [{1 : 1}]:TypeError:('expected str() or unicode() instance, but got int',)
l[:] = [{u"\0" : 1}]:TypeError:('expected string without null bytes',)
@@ -778,14 +843,15 @@ l[:] = [{"abcF" : Mapping({"\0" : 1})}]:TypeError:('expected string without null
<<< Finished
>>> Testing *Iter* using l[:] = [{"abcF" : %s}]
l[:] = [{"abcF" : FailingIter()}]:TypeError:('unable to convert FailingIter to vim structure',)
l[:] = [{"abcF" : FailingIterNext()}]:NotImplementedError:()
l[:] = [{"abcF" : FailingIterNext()}]:NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using l[:] = [{"abcF" : %s}]
l[:] = [{"abcF" : None}]:TypeError:('unable to convert NoneType to vim structure',)
l[:] = [{"abcF" : {"": 1}}]:ValueError:('empty keys are not allowed',)
l[:] = [{"abcF" : {u"": 1}}]:ValueError:('empty keys are not allowed',)
l[:] = [{"abcF" : FailingMapping()}]:NotImplementedError:()
l[:] = [{"abcF" : FailingMappingKey()}]:NotImplementedError:()
l[:] = [{"abcF" : FailingMapping()}]:NotImplementedError:('keys',)
l[:] = [{"abcF" : FailingMappingKey()}]:NotImplementedError:('getitem:mappingkey',)
l[:] = [{"abcF" : FailingNumber()}]:TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing StringToChars using l[:] = [Mapping({%s : 1})]
l[:] = [Mapping({1 : 1})]:TypeError:('expected str() or unicode() instance, but got int',)
@@ -804,27 +870,33 @@ l[:] = [Mapping({"abcG" : Mapping({"\0" : 1})})]:TypeError:('expected string wit
<<< Finished
>>> Testing *Iter* using l[:] = [Mapping({"abcG" : %s})]
l[:] = [Mapping({"abcG" : FailingIter()})]:TypeError:('unable to convert FailingIter to vim structure',)
l[:] = [Mapping({"abcG" : FailingIterNext()})]:NotImplementedError:()
l[:] = [Mapping({"abcG" : FailingIterNext()})]:NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using l[:] = [Mapping({"abcG" : %s})]
l[:] = [Mapping({"abcG" : None})]:TypeError:('unable to convert NoneType to vim structure',)
l[:] = [Mapping({"abcG" : {"": 1}})]:ValueError:('empty keys are not allowed',)
l[:] = [Mapping({"abcG" : {u"": 1}})]:ValueError:('empty keys are not allowed',)
l[:] = [Mapping({"abcG" : FailingMapping()})]:NotImplementedError:()
l[:] = [Mapping({"abcG" : FailingMappingKey()})]:NotImplementedError:()
l[:] = [Mapping({"abcG" : FailingMapping()})]:NotImplementedError:('keys',)
l[:] = [Mapping({"abcG" : FailingMappingKey()})]:NotImplementedError:('getitem:mappingkey',)
l[:] = [Mapping({"abcG" : FailingNumber()})]:TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing *Iter* using l[:] = [%s]
l[:] = [FailingIter()]:TypeError:('unable to convert FailingIter to vim structure',)
l[:] = [FailingIterNext()]:NotImplementedError:()
l[:] = [FailingIterNext()]:NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using l[:] = [%s]
l[:] = [None]:TypeError:('unable to convert NoneType to vim structure',)
l[:] = [{"": 1}]:ValueError:('empty keys are not allowed',)
l[:] = [{u"": 1}]:ValueError:('empty keys are not allowed',)
l[:] = [FailingMapping()]:NotImplementedError:()
l[:] = [FailingMappingKey()]:NotImplementedError:()
l[:] = [FailingMapping()]:NotImplementedError:('keys',)
l[:] = [FailingMappingKey()]:NotImplementedError:('getitem:mappingkey',)
l[:] = [FailingNumber()]:TypeError:('long() argument must be a string or a number',)
<<< Finished
>> ListConcatInPlace
>>> Testing *Iter* using l.extend(%s)
l.extend(FailingIter()):NotImplementedError:('iter',)
l.extend(FailingIterNext()):NotImplementedError:('next',)
<<< Finished
>>> Testing StringToChars using l.extend([{%s : 1}])
l.extend([{1 : 1}]):TypeError:('expected str() or unicode() instance, but got int',)
l.extend([{u"\0" : 1}]):TypeError:('expected string without null bytes',)
@@ -842,14 +914,15 @@ l.extend([{"abcF" : Mapping({"\0" : 1})}]):TypeError:('expected string without n
<<< Finished
>>> Testing *Iter* using l.extend([{"abcF" : %s}])
l.extend([{"abcF" : FailingIter()}]):TypeError:('unable to convert FailingIter to vim structure',)
l.extend([{"abcF" : FailingIterNext()}]):NotImplementedError:()
l.extend([{"abcF" : FailingIterNext()}]):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using l.extend([{"abcF" : %s}])
l.extend([{"abcF" : None}]):TypeError:('unable to convert NoneType to vim structure',)
l.extend([{"abcF" : {"": 1}}]):ValueError:('empty keys are not allowed',)
l.extend([{"abcF" : {u"": 1}}]):ValueError:('empty keys are not allowed',)
l.extend([{"abcF" : FailingMapping()}]):NotImplementedError:()
l.extend([{"abcF" : FailingMappingKey()}]):NotImplementedError:()
l.extend([{"abcF" : FailingMapping()}]):NotImplementedError:('keys',)
l.extend([{"abcF" : FailingMappingKey()}]):NotImplementedError:('getitem:mappingkey',)
l.extend([{"abcF" : FailingNumber()}]):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing StringToChars using l.extend([Mapping({%s : 1})])
l.extend([Mapping({1 : 1})]):TypeError:('expected str() or unicode() instance, but got int',)
@@ -868,29 +941,31 @@ l.extend([Mapping({"abcG" : Mapping({"\0" : 1})})]):TypeError:('expected string
<<< Finished
>>> Testing *Iter* using l.extend([Mapping({"abcG" : %s})])
l.extend([Mapping({"abcG" : FailingIter()})]):TypeError:('unable to convert FailingIter to vim structure',)
l.extend([Mapping({"abcG" : FailingIterNext()})]):NotImplementedError:()
l.extend([Mapping({"abcG" : FailingIterNext()})]):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using l.extend([Mapping({"abcG" : %s})])
l.extend([Mapping({"abcG" : None})]):TypeError:('unable to convert NoneType to vim structure',)
l.extend([Mapping({"abcG" : {"": 1}})]):ValueError:('empty keys are not allowed',)
l.extend([Mapping({"abcG" : {u"": 1}})]):ValueError:('empty keys are not allowed',)
l.extend([Mapping({"abcG" : FailingMapping()})]):NotImplementedError:()
l.extend([Mapping({"abcG" : FailingMappingKey()})]):NotImplementedError:()
l.extend([Mapping({"abcG" : FailingMapping()})]):NotImplementedError:('keys',)
l.extend([Mapping({"abcG" : FailingMappingKey()})]):NotImplementedError:('getitem:mappingkey',)
l.extend([Mapping({"abcG" : FailingNumber()})]):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing *Iter* using l.extend([%s])
l.extend([FailingIter()]):TypeError:('unable to convert FailingIter to vim structure',)
l.extend([FailingIterNext()]):NotImplementedError:()
l.extend([FailingIterNext()]):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using l.extend([%s])
l.extend([None]):TypeError:('unable to convert NoneType to vim structure',)
l.extend([{"": 1}]):ValueError:('empty keys are not allowed',)
l.extend([{u"": 1}]):ValueError:('empty keys are not allowed',)
l.extend([FailingMapping()]):NotImplementedError:()
l.extend([FailingMappingKey()]):NotImplementedError:()
l.extend([FailingMapping()]):NotImplementedError:('keys',)
l.extend([FailingMappingKey()]):NotImplementedError:('getitem:mappingkey',)
l.extend([FailingNumber()]):TypeError:('long() argument must be a string or a number',)
<<< Finished
>> ListSetattr
del l.locked:AttributeError:('cannot delete vim.List attributes',)
l.locked = FailingTrue():NotImplementedError:()
l.locked = FailingTrue():NotImplementedError:('bool',)
l.xxx = True:AttributeError:('cannot set attribute xxx',)
> Function
>> FunctionConstructor
@@ -915,14 +990,15 @@ f({"abcF" : Mapping({"\0" : 1})}):TypeError:('expected string without null bytes
<<< Finished
>>> Testing *Iter* using f({"abcF" : %s})
f({"abcF" : FailingIter()}):TypeError:('unable to convert FailingIter to vim structure',)
f({"abcF" : FailingIterNext()}):NotImplementedError:()
f({"abcF" : FailingIterNext()}):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using f({"abcF" : %s})
f({"abcF" : None}):TypeError:('unable to convert NoneType to vim structure',)
f({"abcF" : {"": 1}}):ValueError:('empty keys are not allowed',)
f({"abcF" : {u"": 1}}):ValueError:('empty keys are not allowed',)
f({"abcF" : FailingMapping()}):NotImplementedError:()
f({"abcF" : FailingMappingKey()}):NotImplementedError:()
f({"abcF" : FailingMapping()}):NotImplementedError:('keys',)
f({"abcF" : FailingMappingKey()}):NotImplementedError:('getitem:mappingkey',)
f({"abcF" : FailingNumber()}):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing StringToChars using f(Mapping({%s : 1}))
f(Mapping({1 : 1})):TypeError:('expected str() or unicode() instance, but got int',)
@@ -941,25 +1017,27 @@ f(Mapping({"abcG" : Mapping({"\0" : 1})})):TypeError:('expected string without n
<<< Finished
>>> Testing *Iter* using f(Mapping({"abcG" : %s}))
f(Mapping({"abcG" : FailingIter()})):TypeError:('unable to convert FailingIter to vim structure',)
f(Mapping({"abcG" : FailingIterNext()})):NotImplementedError:()
f(Mapping({"abcG" : FailingIterNext()})):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using f(Mapping({"abcG" : %s}))
f(Mapping({"abcG" : None})):TypeError:('unable to convert NoneType to vim structure',)
f(Mapping({"abcG" : {"": 1}})):ValueError:('empty keys are not allowed',)
f(Mapping({"abcG" : {u"": 1}})):ValueError:('empty keys are not allowed',)
f(Mapping({"abcG" : FailingMapping()})):NotImplementedError:()
f(Mapping({"abcG" : FailingMappingKey()})):NotImplementedError:()
f(Mapping({"abcG" : FailingMapping()})):NotImplementedError:('keys',)
f(Mapping({"abcG" : FailingMappingKey()})):NotImplementedError:('getitem:mappingkey',)
f(Mapping({"abcG" : FailingNumber()})):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing *Iter* using f(%s)
f(FailingIter()):TypeError:('unable to convert FailingIter to vim structure',)
f(FailingIterNext()):NotImplementedError:()
f(FailingIterNext()):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using f(%s)
f(None):TypeError:('unable to convert NoneType to vim structure',)
f({"": 1}):ValueError:('empty keys are not allowed',)
f({u"": 1}):ValueError:('empty keys are not allowed',)
f(FailingMapping()):NotImplementedError:()
f(FailingMappingKey()):NotImplementedError:()
f(FailingMapping()):NotImplementedError:('keys',)
f(FailingMappingKey()):NotImplementedError:('getitem:mappingkey',)
f(FailingNumber()):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing StringToChars using fd(self={%s : 1})
fd(self={1 : 1}):TypeError:('expected str() or unicode() instance, but got int',)
@@ -978,14 +1056,15 @@ fd(self={"abcF" : Mapping({"\0" : 1})}):TypeError:('expected string without null
<<< Finished
>>> Testing *Iter* using fd(self={"abcF" : %s})
fd(self={"abcF" : FailingIter()}):TypeError:('unable to convert FailingIter to vim structure',)
fd(self={"abcF" : FailingIterNext()}):NotImplementedError:()
fd(self={"abcF" : FailingIterNext()}):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using fd(self={"abcF" : %s})
fd(self={"abcF" : None}):TypeError:('unable to convert NoneType to vim structure',)
fd(self={"abcF" : {"": 1}}):ValueError:('empty keys are not allowed',)
fd(self={"abcF" : {u"": 1}}):ValueError:('empty keys are not allowed',)
fd(self={"abcF" : FailingMapping()}):NotImplementedError:()
fd(self={"abcF" : FailingMappingKey()}):NotImplementedError:()
fd(self={"abcF" : FailingMapping()}):NotImplementedError:('keys',)
fd(self={"abcF" : FailingMappingKey()}):NotImplementedError:('getitem:mappingkey',)
fd(self={"abcF" : FailingNumber()}):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing StringToChars using fd(self=Mapping({%s : 1}))
fd(self=Mapping({1 : 1})):TypeError:('expected str() or unicode() instance, but got int',)
@@ -1004,14 +1083,15 @@ fd(self=Mapping({"abcG" : Mapping({"\0" : 1})})):TypeError:('expected string wit
<<< Finished
>>> Testing *Iter* using fd(self=Mapping({"abcG" : %s}))
fd(self=Mapping({"abcG" : FailingIter()})):TypeError:('unable to convert FailingIter to vim structure',)
fd(self=Mapping({"abcG" : FailingIterNext()})):NotImplementedError:()
fd(self=Mapping({"abcG" : FailingIterNext()})):NotImplementedError:('next',)
<<< Finished
>>> Testing ConvertFromPyObject using fd(self=Mapping({"abcG" : %s}))
fd(self=Mapping({"abcG" : None})):TypeError:('unable to convert NoneType to vim structure',)
fd(self=Mapping({"abcG" : {"": 1}})):ValueError:('empty keys are not allowed',)
fd(self=Mapping({"abcG" : {u"": 1}})):ValueError:('empty keys are not allowed',)
fd(self=Mapping({"abcG" : FailingMapping()})):NotImplementedError:()
fd(self=Mapping({"abcG" : FailingMappingKey()})):NotImplementedError:()
fd(self=Mapping({"abcG" : FailingMapping()})):NotImplementedError:('keys',)
fd(self=Mapping({"abcG" : FailingMappingKey()})):NotImplementedError:('getitem:mappingkey',)
fd(self=Mapping({"abcG" : FailingNumber()})):TypeError:('long() argument must be a string or a number',)
<<< Finished
>>> Testing *Iter* using fd(self=%s)
fd(self=FailingIter()):TypeError:('unable to convert FailingIter to vim dictionary',)
@@ -1021,8 +1101,9 @@ fd(self=FailingIterNext()):TypeError:('unable to convert FailingIterNext to vim
fd(self=None):TypeError:('unable to convert NoneType to vim dictionary',)
fd(self={"": 1}):ValueError:('empty keys are not allowed',)
fd(self={u"": 1}):ValueError:('empty keys are not allowed',)
fd(self=FailingMapping()):NotImplementedError:()
fd(self=FailingMappingKey()):NotImplementedError:()
fd(self=FailingMapping()):NotImplementedError:('keys',)
fd(self=FailingMappingKey()):NotImplementedError:('getitem:mappingkey',)
fd(self=FailingNumber()):TypeError:('unable to convert FailingNumber to vim dictionary',)
<<< Finished
>>> Testing ConvertFromPyMapping using fd(self=%s)
fd(self=[]):TypeError:('unable to convert list to vim dictionary',)
@@ -1040,14 +1121,23 @@ vim.current.window.xxx:AttributeError:('xxx',)
vim.current.window.buffer = 0:TypeError:('readonly attribute: buffer',)
vim.current.window.cursor = (100000000, 100000000):error:('cursor position outside buffer',)
vim.current.window.cursor = True:TypeError:('argument must be 2-item sequence, not bool',)
vim.current.window.height = "abcK":TypeError:('expected int(), long() or something supporting coercing to long(), but got str',)
vim.current.window.width = "abcL":TypeError:('expected int(), long() or something supporting coercing to long(), but got str',)
>>> Testing NumberToLong using vim.current.window.height = %s
vim.current.window.height = []:TypeError:('expected int(), long() or something supporting coercing to long(), but got list',)
vim.current.window.height = None:TypeError:('expected int(), long() or something supporting coercing to long(), but got NoneType',)
vim.current.window.height = -1:ValueError:('number must be greater or equal to zero',)
<<< Finished
>>> Testing NumberToLong using vim.current.window.width = %s
vim.current.window.width = []:TypeError:('expected int(), long() or something supporting coercing to long(), but got list',)
vim.current.window.width = None:TypeError:('expected int(), long() or something supporting coercing to long(), but got NoneType',)
vim.current.window.width = -1:ValueError:('number must be greater or equal to zero',)
<<< Finished
vim.current.window.xxxxxx = True:AttributeError:('xxxxxx',)
> WinList
>> WinListItem
vim.windows[1000]:IndexError:('no such window',)
> Buffer
>> StringToLine (indirect)
vim.current.buffer[0] = u"\na":error:('string cannot contain newlines',)
vim.current.buffer[0] = "\na":error:('string cannot contain newlines',)
>> SetBufferLine (indirect)
vim.current.buffer[0] = True:TypeError:('bad argument type for built-in operation',)
@@ -1075,8 +1165,13 @@ vim.current.buffer.mark("!"):error:('invalid mark name',)
vim.current.buffer.range(1, 2, 3):TypeError:('function takes exactly 2 arguments (3 given)',)
> BufMap
>> BufMapItem
vim.buffers[None]:TypeError:('expected int(), long() or something supporting coercing to long(), but got NoneType',)
vim.buffers[100000000]:KeyError:(100000000,)
>>> Testing NumberToLong using vim.buffers[%s]
vim.buffers[[]]:TypeError:('expected int(), long() or something supporting coercing to long(), but got list',)
vim.buffers[None]:TypeError:('expected int(), long() or something supporting coercing to long(), but got NoneType',)
vim.buffers[-1]:ValueError:('number must be greater then zero',)
vim.buffers[0]:ValueError:('number must be greater then zero',)
<<< Finished
> Current
>> CurrentGetattr
vim.current.xxx:AttributeError:('xxx',)
@@ -1086,9 +1181,14 @@ vim.current.buffer = True:TypeError:('expected vim.Buffer object, but got bool',
vim.current.window = True:TypeError:('expected vim.Window object, but got bool',)
vim.current.tabpage = True:TypeError:('expected vim.TabPage object, but got bool',)
vim.current.xxx = True:AttributeError:('xxx',)
['/testdir']
'/testdir'
2,xx
before
after
pythonx/topmodule/__init__.py
pythonx/topmodule/submodule/__init__.py
pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py
vim.command("throw 'abcN'"):error:('abcN',)
Exe("throw 'def'"):error:('def',)
vim.eval("Exe('throw ''ghi''')"):error:('ghi',)
+82 -18
View File
@@ -290,7 +290,7 @@ EOF
:" threading
:let l = [0]
:py3 l=vim.bindeval('l')
:py3 <<EOF
py3 <<EOF
import threading
import time
@@ -320,7 +320,7 @@ EOF
:" settrace
:let l = []
:py3 l=vim.bindeval('l')
:py3 <<EOF
py3 <<EOF
import sys
def traceit(frame, event, arg):
@@ -335,9 +335,9 @@ def trace_main():
EOF
:py3 sys.settrace(traceit)
:py3 trace_main()
:py3 sys.settrace(None)
:py3 del traceit
:py3 del trace_main
:py3 sys.settrace(None)
:$put =string(l)
:"
:" Vars
@@ -898,6 +898,7 @@ def convertfrompyobject_test(expr, recurse=True):
'{"": 1}', # Same, but with unicode object
'FailingMapping()', #
'FailingMappingKey()', #
'FailingNumber()', #
))
def convertfrompymapping_test(expr):
@@ -912,46 +913,68 @@ def iter_test(expr):
'FailingIterNext()',
))
def number_test(expr, natural=False, unsigned=False):
if natural:
unsigned = True
return subexpr_test(expr, 'NumberToLong', (
'[]',
'None',
) + (('-1',) if unsigned else ())
+ (('0',) if natural else ()))
class FailingTrue(object):
def __bool__(self):
raise NotImplementedError
raise NotImplementedError('bool')
class FailingIter(object):
def __iter__(self):
raise NotImplementedError
raise NotImplementedError('iter')
class FailingIterNext(object):
def __iter__(self):
return self
def __next__(self):
raise NotImplementedError
raise NotImplementedError('next')
class FailingMappingKey(object):
def __getitem__(self, item):
raise NotImplementedError
raise NotImplementedError('getitem:mappingkey')
def keys(self):
return list("abcH")
class FailingMapping(object):
def __getitem__(self):
raise NotImplementedError
raise NotImplementedError('getitem:mapping')
def keys(self):
raise NotImplementedError
raise NotImplementedError('keys')
class FailingList(list):
def __getitem__(self, idx):
if i == 2:
raise NotImplementedError
raise NotImplementedError('getitem:list')
else:
return super(FailingList, self).__getitem__(idx)
class NoArgsCall(object):
def __call__(self):
pass
class FailingCall(object):
def __call__(self, path):
raise NotImplementedError('call')
class FailingNumber(object):
def __int__(self):
raise NotImplementedError('int')
cb.append("> Output")
cb.append(">> OutputSetattr")
ee('del sys.stdout.softspace')
ee('sys.stdout.softspace = []')
number_test('sys.stdout.softspace = %s', unsigned=True)
number_test('sys.stderr.softspace = %s', unsigned=True)
ee('sys.stdout.attr = None')
cb.append(">> OutputWrite")
ee('sys.stdout.write(None)')
@@ -960,18 +983,34 @@ ee('sys.stdout.writelines(None)')
ee('sys.stdout.writelines([1])')
iter_test('sys.stdout.writelines(%s)')
cb.append("> VimCommand")
ee('vim.command(1)')
stringtochars_test('vim.command(%s)')
ee('vim.command("", 2)')
#! Not checked: vim->python exceptions translating: checked later
cb.append("> VimToPython")
#! Not checked: everything: needs errors in internal python functions
cb.append("> VimEval")
ee('vim.eval(1)')
stringtochars_test('vim.eval(%s)')
ee('vim.eval("", FailingTrue())')
#! Not checked: everything: needs errors in internal python functions
cb.append("> VimEvalPy")
ee('vim.bindeval(1)')
stringtochars_test('vim.bindeval(%s)')
ee('vim.eval("", 2)')
#! Not checked: vim->python exceptions translating: checked later
cb.append("> VimStrwidth")
ee('vim.strwidth(1)')
stringtochars_test('vim.strwidth(%s)')
cb.append("> VimForeachRTP")
ee('vim.foreach_rtp(None)')
ee('vim.foreach_rtp(NoArgsCall())')
ee('vim.foreach_rtp(FailingCall())')
ee('vim.foreach_rtp(int, 2)')
cb.append('> import')
old_rtp = vim.options['rtp']
vim.options['rtp'] = os.getcwd().replace(',', '\\,').replace('\\', '\\\\')
ee('import xxx_no_such_module_xxx')
ee('import failing_import')
ee('import failing')
vim.options['rtp'] = old_rtp
del old_rtp
cb.append("> Dictionary")
cb.append(">> DictionaryConstructor")
ee('vim.Dictionary("abcI")')
@@ -1050,8 +1089,8 @@ cb.append(">> WindowSetattr")
ee('vim.current.window.buffer = 0')
ee('vim.current.window.cursor = (100000000, 100000000)')
ee('vim.current.window.cursor = True')
ee('vim.current.window.height = "abcK"')
ee('vim.current.window.width = "abcL"')
number_test('vim.current.window.height = %s', unsigned=True)
number_test('vim.current.window.width = %s', unsigned=True)
ee('vim.current.window.xxxxxx = True')
cb.append("> WinList")
cb.append(">> WinListItem")
@@ -1059,6 +1098,7 @@ ee('vim.windows[1000]')
cb.append("> Buffer")
cb.append(">> StringToLine (indirect)")
ee('vim.current.buffer[0] = "\\na"')
ee('vim.current.buffer[0] = b"\\na"')
cb.append(">> SetBufferLine (indirect)")
ee('vim.current.buffer[0] = True')
cb.append(">> SetBufferLineList (indirect)")
@@ -1085,8 +1125,8 @@ cb.append(">> BufferRange")
ee('vim.current.buffer.range(1, 2, 3)')
cb.append("> BufMap")
cb.append(">> BufMapItem")
ee('vim.buffers[None]')
ee('vim.buffers[100000000]')
number_test('vim.buffers[%s]', natural=True)
cb.append("> Current")
cb.append(">> CurrentGetattr")
ee('vim.current.xxx')
@@ -1110,12 +1150,16 @@ del Mapping
del convertfrompyobject_test
del convertfrompymapping_test
del iter_test
del number_test
del FailingTrue
del FailingIter
del FailingIterNext
del FailingMapping
del FailingMappingKey
del FailingList
del NoArgsCall
del FailingCall
del FailingNumber
EOF
:delfunction F
:"
@@ -1124,6 +1168,16 @@ py3 << EOF
sys.path.insert(0, os.path.join(os.getcwd(), 'python_before'))
sys.path.append(os.path.join(os.getcwd(), 'python_after'))
vim.options['rtp'] = os.getcwd().replace(',', '\\,').replace('\\', '\\\\')
l = []
def callback(path):
l.append(os.path.relpath(path))
vim.foreach_rtp(callback)
cb.append(repr(l))
del l
def callback(path):
return os.path.relpath(path)
cb.append(repr(vim.foreach_rtp(callback)))
del callback
from module import dir as d
from modulex import ddir
cb.append(d + ',' + ddir)
@@ -1131,10 +1185,19 @@ import before
cb.append(before.dir)
import after
cb.append(after.dir)
import topmodule as tm
import topmodule.submodule as tms
import topmodule.submodule.subsubmodule.subsubsubmodule as tmsss
cb.append(tm.__file__.replace(os.path.sep, '/')[-len('modulex/topmodule/__init__.py'):])
cb.append(tms.__file__.replace(os.path.sep, '/')[-len('modulex/topmodule/submodule/__init__.py'):])
cb.append(tmsss.__file__.replace(os.path.sep, '/')[-len('modulex/topmodule/submodule/subsubmodule/subsubsubmodule.py'):])
del before
del after
del d
del ddir
del tm
del tms
del tmsss
EOF
:"
:" Test exceptions
@@ -1188,6 +1251,7 @@ EOF
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:call getchar()
ENDTEST
+169 -89
View File
@@ -430,7 +430,16 @@ test87.in
> Output
>> OutputSetattr
del sys.stdout.softspace:(<class 'AttributeError'>, AttributeError("can't delete OutputObject attributes",))
>>> Testing NumberToLong using sys.stdout.softspace = %s
sys.stdout.softspace = []:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got list',))
sys.stdout.softspace = None:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got NoneType',))
sys.stdout.softspace = -1:(<class 'ValueError'>, ValueError('number must be greater or equal to zero',))
<<< Finished
>>> Testing NumberToLong using sys.stderr.softspace = %s
sys.stderr.softspace = []:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got list',))
sys.stderr.softspace = None:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got NoneType',))
sys.stderr.softspace = -1:(<class 'ValueError'>, ValueError('number must be greater or equal to zero',))
<<< Finished
sys.stdout.attr = None:(<class 'AttributeError'>, AttributeError('invalid attribute: attr',))
>> OutputWrite
sys.stdout.write(None):(<class 'TypeError'>, TypeError("Can't convert 'NoneType' object to str implicitly",))
@@ -438,24 +447,52 @@ sys.stdout.write(None):(<class 'TypeError'>, TypeError("Can't convert 'NoneType'
sys.stdout.writelines(None):(<class 'TypeError'>, TypeError("'NoneType' object is not iterable",))
sys.stdout.writelines([1]):(<class 'TypeError'>, TypeError("Can't convert 'int' object to str implicitly",))
>>> Testing *Iter* using sys.stdout.writelines(%s)
sys.stdout.writelines(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError())
sys.stdout.writelines(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError())
sys.stdout.writelines(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError('iter',))
sys.stdout.writelines(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
> VimCommand
>>> Testing StringToChars using vim.command(%s)
vim.command(1):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
vim.command(b"\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
vim.command("\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
<<< Finished
vim.command("", 2):(<class 'TypeError'>, TypeError('command() takes exactly one argument (2 given)',))
> VimToPython
> VimEval
>>> Testing StringToChars using vim.eval(%s)
vim.eval(1):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
vim.eval(b"\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
vim.eval("\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
<<< Finished
vim.eval("", FailingTrue()):(<class 'TypeError'>, TypeError('function takes exactly 1 argument (2 given)',))
> VimEvalPy
>>> Testing StringToChars using vim.bindeval(%s)
vim.bindeval(1):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
vim.bindeval(b"\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
vim.bindeval("\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
<<< Finished
vim.eval("", 2):(<class 'TypeError'>, TypeError('function takes exactly 1 argument (2 given)',))
> VimStrwidth
>>> Testing StringToChars using vim.strwidth(%s)
vim.strwidth(1):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
vim.strwidth(b"\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
vim.strwidth("\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
<<< Finished
> VimForeachRTP
vim.foreach_rtp(None):(<class 'TypeError'>, TypeError("'NoneType' object is not callable",))
vim.foreach_rtp(NoArgsCall()):(<class 'TypeError'>, TypeError('__call__() takes exactly 1 positional argument (2 given)',))
vim.foreach_rtp(FailingCall()):(<class 'NotImplementedError'>, NotImplementedError('call',))
vim.foreach_rtp(int, 2):(<class 'TypeError'>, TypeError('foreach_rtp() takes exactly one argument (2 given)',))
> import
import xxx_no_such_module_xxx:(<class 'ImportError'>, ImportError('No module named xxx_no_such_module_xxx',))
import failing_import:(<class 'ImportError'>, ImportError('No module named failing_import',))
import failing:(<class 'NotImplementedError'>, NotImplementedError())
> Dictionary
>> DictionaryConstructor
vim.Dictionary("abcI"):(<class 'ValueError'>, ValueError('expected sequence element of size 2, but got sequence of size 1',))
>> DictionarySetattr
del d.locked:(<class 'AttributeError'>, AttributeError('cannot delete vim.Dictionary attributes',))
d.locked = FailingTrue():(<class 'NotImplementedError'>, NotImplementedError())
d.locked = FailingTrue():(<class 'NotImplementedError'>, NotImplementedError('bool',))
vim.vvars.locked = False:(<class 'TypeError'>, TypeError('cannot modify fixed dictionary',))
d.scope = True:(<class 'AttributeError'>, AttributeError('cannot set attribute scope',))
d.xxx = True:(<class 'AttributeError'>, AttributeError('cannot set attribute xxx',))
@@ -494,14 +531,15 @@ d["a"] = {"abcF" : Mapping({"\0" : 1})}:(<class 'TypeError'>, TypeError('expecte
<<< Finished
>>> Testing *Iter* using d["a"] = {"abcF" : %s}
d["a"] = {"abcF" : FailingIter()}:(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
d["a"] = {"abcF" : FailingIterNext()}:(<class 'NotImplementedError'>, NotImplementedError())
d["a"] = {"abcF" : FailingIterNext()}:(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using d["a"] = {"abcF" : %s}
d["a"] = {"abcF" : None}:(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
d["a"] = {"abcF" : {b"": 1}}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d["a"] = {"abcF" : {"": 1}}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d["a"] = {"abcF" : FailingMapping()}:(<class 'NotImplementedError'>, NotImplementedError())
d["a"] = {"abcF" : FailingMappingKey()}:(<class 'NotImplementedError'>, NotImplementedError())
d["a"] = {"abcF" : FailingMapping()}:(<class 'NotImplementedError'>, NotImplementedError('keys',))
d["a"] = {"abcF" : FailingMappingKey()}:(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
d["a"] = {"abcF" : FailingNumber()}:(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing StringToChars using d["a"] = Mapping({%s : 1})
d["a"] = Mapping({1 : 1}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -520,34 +558,36 @@ d["a"] = Mapping({"abcG" : Mapping({"\0" : 1})}):(<class 'TypeError'>, TypeError
<<< Finished
>>> Testing *Iter* using d["a"] = Mapping({"abcG" : %s})
d["a"] = Mapping({"abcG" : FailingIter()}):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
d["a"] = Mapping({"abcG" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError())
d["a"] = Mapping({"abcG" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using d["a"] = Mapping({"abcG" : %s})
d["a"] = Mapping({"abcG" : None}):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
d["a"] = Mapping({"abcG" : {b"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d["a"] = Mapping({"abcG" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d["a"] = Mapping({"abcG" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError())
d["a"] = Mapping({"abcG" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError())
d["a"] = Mapping({"abcG" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError('keys',))
d["a"] = Mapping({"abcG" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
d["a"] = Mapping({"abcG" : FailingNumber()}):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing *Iter* using d["a"] = %s
d["a"] = FailingIter():(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
d["a"] = FailingIterNext():(<class 'NotImplementedError'>, NotImplementedError())
d["a"] = FailingIterNext():(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using d["a"] = %s
d["a"] = None:(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
d["a"] = {b"": 1}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d["a"] = {"": 1}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d["a"] = FailingMapping():(<class 'NotImplementedError'>, NotImplementedError())
d["a"] = FailingMappingKey():(<class 'NotImplementedError'>, NotImplementedError())
d["a"] = FailingMapping():(<class 'NotImplementedError'>, NotImplementedError('keys',))
d["a"] = FailingMappingKey():(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
d["a"] = FailingNumber():(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>> DictionaryUpdate
>>> kwargs
>>> iter
d.update(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError())
d.update([FailingIterNext()]):(<class 'NotImplementedError'>, NotImplementedError())
d.update(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError('keys',))
d.update([FailingIterNext()]):(<class 'NotImplementedError'>, NotImplementedError('next',))
>>> Testing *Iter* using d.update(%s)
d.update(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError())
d.update(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError())
d.update(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError('iter',))
d.update(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing StringToChars using d.update({%s : 1})
d.update({1 : 1}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -566,14 +606,15 @@ d.update({"abcF" : Mapping({"\0" : 1})}):(<class 'TypeError'>, TypeError('expect
<<< Finished
>>> Testing *Iter* using d.update({"abcF" : %s})
d.update({"abcF" : FailingIter()}):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
d.update({"abcF" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError())
d.update({"abcF" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using d.update({"abcF" : %s})
d.update({"abcF" : None}):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
d.update({"abcF" : {b"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d.update({"abcF" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d.update({"abcF" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError())
d.update({"abcF" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError())
d.update({"abcF" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError('keys',))
d.update({"abcF" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
d.update({"abcF" : FailingNumber()}):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing StringToChars using d.update(Mapping({%s : 1}))
d.update(Mapping({1 : 1})):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -592,25 +633,27 @@ d.update(Mapping({"abcG" : Mapping({"\0" : 1})})):(<class 'TypeError'>, TypeErro
<<< Finished
>>> Testing *Iter* using d.update(Mapping({"abcG" : %s}))
d.update(Mapping({"abcG" : FailingIter()})):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
d.update(Mapping({"abcG" : FailingIterNext()})):(<class 'NotImplementedError'>, NotImplementedError())
d.update(Mapping({"abcG" : FailingIterNext()})):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using d.update(Mapping({"abcG" : %s}))
d.update(Mapping({"abcG" : None})):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
d.update(Mapping({"abcG" : {b"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d.update(Mapping({"abcG" : {"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d.update(Mapping({"abcG" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError())
d.update(Mapping({"abcG" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError())
d.update(Mapping({"abcG" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError('keys',))
d.update(Mapping({"abcG" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
d.update(Mapping({"abcG" : FailingNumber()})):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing *Iter* using d.update(%s)
d.update(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError())
d.update(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError())
d.update(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError('iter',))
d.update(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using d.update(%s)
d.update(None):(<class 'TypeError'>, TypeError("'NoneType' object is not iterable",))
d.update({b"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d.update({"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d.update(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError())
d.update(FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError())
d.update(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError('keys',))
d.update(FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
d.update(FailingNumber()):(<class 'TypeError'>, TypeError("'FailingNumber' object is not iterable",))
<<< Finished
>>> Testing StringToChars using d.update(((%s, 0),))
d.update(((1, 0),)):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -634,14 +677,15 @@ d.update((("a", {"abcF" : Mapping({"\0" : 1})}),)):(<class 'TypeError'>, TypeErr
<<< Finished
>>> Testing *Iter* using d.update((("a", {"abcF" : %s}),))
d.update((("a", {"abcF" : FailingIter()}),)):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
d.update((("a", {"abcF" : FailingIterNext()}),)):(<class 'NotImplementedError'>, NotImplementedError())
d.update((("a", {"abcF" : FailingIterNext()}),)):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using d.update((("a", {"abcF" : %s}),))
d.update((("a", {"abcF" : None}),)):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
d.update((("a", {"abcF" : {b"": 1}}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d.update((("a", {"abcF" : {"": 1}}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d.update((("a", {"abcF" : FailingMapping()}),)):(<class 'NotImplementedError'>, NotImplementedError())
d.update((("a", {"abcF" : FailingMappingKey()}),)):(<class 'NotImplementedError'>, NotImplementedError())
d.update((("a", {"abcF" : FailingMapping()}),)):(<class 'NotImplementedError'>, NotImplementedError('keys',))
d.update((("a", {"abcF" : FailingMappingKey()}),)):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
d.update((("a", {"abcF" : FailingNumber()}),)):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing StringToChars using d.update((("a", Mapping({%s : 1})),))
d.update((("a", Mapping({1 : 1})),)):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -660,25 +704,27 @@ d.update((("a", Mapping({"abcG" : Mapping({"\0" : 1})})),)):(<class 'TypeError'>
<<< Finished
>>> Testing *Iter* using d.update((("a", Mapping({"abcG" : %s})),))
d.update((("a", Mapping({"abcG" : FailingIter()})),)):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
d.update((("a", Mapping({"abcG" : FailingIterNext()})),)):(<class 'NotImplementedError'>, NotImplementedError())
d.update((("a", Mapping({"abcG" : FailingIterNext()})),)):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using d.update((("a", Mapping({"abcG" : %s})),))
d.update((("a", Mapping({"abcG" : None})),)):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
d.update((("a", Mapping({"abcG" : {b"": 1}})),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d.update((("a", Mapping({"abcG" : {"": 1}})),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d.update((("a", Mapping({"abcG" : FailingMapping()})),)):(<class 'NotImplementedError'>, NotImplementedError())
d.update((("a", Mapping({"abcG" : FailingMappingKey()})),)):(<class 'NotImplementedError'>, NotImplementedError())
d.update((("a", Mapping({"abcG" : FailingMapping()})),)):(<class 'NotImplementedError'>, NotImplementedError('keys',))
d.update((("a", Mapping({"abcG" : FailingMappingKey()})),)):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
d.update((("a", Mapping({"abcG" : FailingNumber()})),)):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing *Iter* using d.update((("a", %s),))
d.update((("a", FailingIter()),)):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
d.update((("a", FailingIterNext()),)):(<class 'NotImplementedError'>, NotImplementedError())
d.update((("a", FailingIterNext()),)):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using d.update((("a", %s),))
d.update((("a", None),)):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
d.update((("a", {b"": 1}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d.update((("a", {"": 1}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
d.update((("a", FailingMapping()),)):(<class 'NotImplementedError'>, NotImplementedError())
d.update((("a", FailingMappingKey()),)):(<class 'NotImplementedError'>, NotImplementedError())
d.update((("a", FailingMapping()),)):(<class 'NotImplementedError'>, NotImplementedError('keys',))
d.update((("a", FailingMappingKey()),)):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
d.update((("a", FailingNumber()),)):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>> DictionaryPopItem
d.popitem(1, 2):(<class 'TypeError'>, TypeError('popitem() takes no arguments (2 given)',))
@@ -689,8 +735,8 @@ d.has_key():(<class 'TypeError'>, TypeError('has_key() takes exactly one argumen
vim.List(1, 2):(<class 'TypeError'>, TypeError('function takes at most 1 argument (2 given)',))
vim.List(a=1):(<class 'TypeError'>, TypeError('list constructor does not accept keyword arguments',))
>>> Testing *Iter* using vim.List(%s)
vim.List(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError())
vim.List(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError())
vim.List(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError('iter',))
vim.List(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing StringToChars using vim.List([{%s : 1}])
vim.List([{1 : 1}]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -709,14 +755,15 @@ vim.List([{"abcF" : Mapping({"\0" : 1})}]):(<class 'TypeError'>, TypeError('expe
<<< Finished
>>> Testing *Iter* using vim.List([{"abcF" : %s}])
vim.List([{"abcF" : FailingIter()}]):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
vim.List([{"abcF" : FailingIterNext()}]):(<class 'NotImplementedError'>, NotImplementedError())
vim.List([{"abcF" : FailingIterNext()}]):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using vim.List([{"abcF" : %s}])
vim.List([{"abcF" : None}]):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
vim.List([{"abcF" : {b"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
vim.List([{"abcF" : {"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
vim.List([{"abcF" : FailingMapping()}]):(<class 'NotImplementedError'>, NotImplementedError())
vim.List([{"abcF" : FailingMappingKey()}]):(<class 'NotImplementedError'>, NotImplementedError())
vim.List([{"abcF" : FailingMapping()}]):(<class 'NotImplementedError'>, NotImplementedError('keys',))
vim.List([{"abcF" : FailingMappingKey()}]):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
vim.List([{"abcF" : FailingNumber()}]):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing StringToChars using vim.List([Mapping({%s : 1})])
vim.List([Mapping({1 : 1})]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -735,25 +782,27 @@ vim.List([Mapping({"abcG" : Mapping({"\0" : 1})})]):(<class 'TypeError'>, TypeEr
<<< Finished
>>> Testing *Iter* using vim.List([Mapping({"abcG" : %s})])
vim.List([Mapping({"abcG" : FailingIter()})]):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
vim.List([Mapping({"abcG" : FailingIterNext()})]):(<class 'NotImplementedError'>, NotImplementedError())
vim.List([Mapping({"abcG" : FailingIterNext()})]):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using vim.List([Mapping({"abcG" : %s})])
vim.List([Mapping({"abcG" : None})]):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
vim.List([Mapping({"abcG" : {b"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
vim.List([Mapping({"abcG" : {"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
vim.List([Mapping({"abcG" : FailingMapping()})]):(<class 'NotImplementedError'>, NotImplementedError())
vim.List([Mapping({"abcG" : FailingMappingKey()})]):(<class 'NotImplementedError'>, NotImplementedError())
vim.List([Mapping({"abcG" : FailingMapping()})]):(<class 'NotImplementedError'>, NotImplementedError('keys',))
vim.List([Mapping({"abcG" : FailingMappingKey()})]):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
vim.List([Mapping({"abcG" : FailingNumber()})]):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing *Iter* using vim.List([%s])
vim.List([FailingIter()]):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
vim.List([FailingIterNext()]):(<class 'NotImplementedError'>, NotImplementedError())
vim.List([FailingIterNext()]):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using vim.List([%s])
vim.List([None]):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
vim.List([{b"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
vim.List([{"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
vim.List([FailingMapping()]):(<class 'NotImplementedError'>, NotImplementedError())
vim.List([FailingMappingKey()]):(<class 'NotImplementedError'>, NotImplementedError())
vim.List([FailingMapping()]):(<class 'NotImplementedError'>, NotImplementedError('keys',))
vim.List([FailingMappingKey()]):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
vim.List([FailingNumber()]):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>> ListItem
l[1000]:(<class 'IndexError'>, IndexError('list index out of range',))
@@ -763,8 +812,8 @@ l[1000] = 3:(<class 'IndexError'>, IndexError('list index out of range',))
>> ListAssSlice
ll[1:100] = "abcJ":(<class 'vim.error'>, error('list is locked',))
>>> Testing *Iter* using l[:] = %s
l[:] = FailingIter():(<class 'NotImplementedError'>, NotImplementedError())
l[:] = FailingIterNext()::(<class 'NotImplementedError'>, NotImplementedError())
l[:] = FailingIter():(<class 'NotImplementedError'>, NotImplementedError('iter',))
l[:] = FailingIterNext():(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing StringToChars using l[:] = [{%s : 1}]
l[:] = [{1 : 1}]:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -783,14 +832,15 @@ l[:] = [{"abcF" : Mapping({"\0" : 1})}]:(<class 'TypeError'>, TypeError('expecte
<<< Finished
>>> Testing *Iter* using l[:] = [{"abcF" : %s}]
l[:] = [{"abcF" : FailingIter()}]:(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
l[:] = [{"abcF" : FailingIterNext()}]:(<class 'NotImplementedError'>, NotImplementedError())
l[:] = [{"abcF" : FailingIterNext()}]:(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using l[:] = [{"abcF" : %s}]
l[:] = [{"abcF" : None}]:(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
l[:] = [{"abcF" : {b"": 1}}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
l[:] = [{"abcF" : {"": 1}}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
l[:] = [{"abcF" : FailingMapping()}]:(<class 'NotImplementedError'>, NotImplementedError())
l[:] = [{"abcF" : FailingMappingKey()}]:(<class 'NotImplementedError'>, NotImplementedError())
l[:] = [{"abcF" : FailingMapping()}]:(<class 'NotImplementedError'>, NotImplementedError('keys',))
l[:] = [{"abcF" : FailingMappingKey()}]:(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
l[:] = [{"abcF" : FailingNumber()}]:(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing StringToChars using l[:] = [Mapping({%s : 1})]
l[:] = [Mapping({1 : 1})]:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -809,30 +859,32 @@ l[:] = [Mapping({"abcG" : Mapping({"\0" : 1})})]:(<class 'TypeError'>, TypeError
<<< Finished
>>> Testing *Iter* using l[:] = [Mapping({"abcG" : %s})]
l[:] = [Mapping({"abcG" : FailingIter()})]:(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
l[:] = [Mapping({"abcG" : FailingIterNext()})]:(<class 'NotImplementedError'>, NotImplementedError())
l[:] = [Mapping({"abcG" : FailingIterNext()})]:(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using l[:] = [Mapping({"abcG" : %s})]
l[:] = [Mapping({"abcG" : None})]:(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
l[:] = [Mapping({"abcG" : {b"": 1}})]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
l[:] = [Mapping({"abcG" : {"": 1}})]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
l[:] = [Mapping({"abcG" : FailingMapping()})]:(<class 'NotImplementedError'>, NotImplementedError())
l[:] = [Mapping({"abcG" : FailingMappingKey()})]:(<class 'NotImplementedError'>, NotImplementedError())
l[:] = [Mapping({"abcG" : FailingMapping()})]:(<class 'NotImplementedError'>, NotImplementedError('keys',))
l[:] = [Mapping({"abcG" : FailingMappingKey()})]:(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
l[:] = [Mapping({"abcG" : FailingNumber()})]:(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing *Iter* using l[:] = [%s]
l[:] = [FailingIter()]:(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
l[:] = [FailingIterNext()]:(<class 'NotImplementedError'>, NotImplementedError())
l[:] = [FailingIterNext()]:(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using l[:] = [%s]
l[:] = [None]:(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
l[:] = [{b"": 1}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
l[:] = [{"": 1}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
l[:] = [FailingMapping()]:(<class 'NotImplementedError'>, NotImplementedError())
l[:] = [FailingMappingKey()]:(<class 'NotImplementedError'>, NotImplementedError())
l[:] = [FailingMapping()]:(<class 'NotImplementedError'>, NotImplementedError('keys',))
l[:] = [FailingMappingKey()]:(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
l[:] = [FailingNumber()]:(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>> ListConcatInPlace
>>> Testing *Iter* using l.extend(%s)
l.extend(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError())
l.extend(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError())
l.extend(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError('iter',))
l.extend(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing StringToChars using l.extend([{%s : 1}])
l.extend([{1 : 1}]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -851,14 +903,15 @@ l.extend([{"abcF" : Mapping({"\0" : 1})}]):(<class 'TypeError'>, TypeError('expe
<<< Finished
>>> Testing *Iter* using l.extend([{"abcF" : %s}])
l.extend([{"abcF" : FailingIter()}]):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
l.extend([{"abcF" : FailingIterNext()}]):(<class 'NotImplementedError'>, NotImplementedError())
l.extend([{"abcF" : FailingIterNext()}]):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using l.extend([{"abcF" : %s}])
l.extend([{"abcF" : None}]):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
l.extend([{"abcF" : {b"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
l.extend([{"abcF" : {"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
l.extend([{"abcF" : FailingMapping()}]):(<class 'NotImplementedError'>, NotImplementedError())
l.extend([{"abcF" : FailingMappingKey()}]):(<class 'NotImplementedError'>, NotImplementedError())
l.extend([{"abcF" : FailingMapping()}]):(<class 'NotImplementedError'>, NotImplementedError('keys',))
l.extend([{"abcF" : FailingMappingKey()}]):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
l.extend([{"abcF" : FailingNumber()}]):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing StringToChars using l.extend([Mapping({%s : 1})])
l.extend([Mapping({1 : 1})]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -877,29 +930,31 @@ l.extend([Mapping({"abcG" : Mapping({"\0" : 1})})]):(<class 'TypeError'>, TypeEr
<<< Finished
>>> Testing *Iter* using l.extend([Mapping({"abcG" : %s})])
l.extend([Mapping({"abcG" : FailingIter()})]):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
l.extend([Mapping({"abcG" : FailingIterNext()})]):(<class 'NotImplementedError'>, NotImplementedError())
l.extend([Mapping({"abcG" : FailingIterNext()})]):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using l.extend([Mapping({"abcG" : %s})])
l.extend([Mapping({"abcG" : None})]):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
l.extend([Mapping({"abcG" : {b"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
l.extend([Mapping({"abcG" : {"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
l.extend([Mapping({"abcG" : FailingMapping()})]):(<class 'NotImplementedError'>, NotImplementedError())
l.extend([Mapping({"abcG" : FailingMappingKey()})]):(<class 'NotImplementedError'>, NotImplementedError())
l.extend([Mapping({"abcG" : FailingMapping()})]):(<class 'NotImplementedError'>, NotImplementedError('keys',))
l.extend([Mapping({"abcG" : FailingMappingKey()})]):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
l.extend([Mapping({"abcG" : FailingNumber()})]):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing *Iter* using l.extend([%s])
l.extend([FailingIter()]):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
l.extend([FailingIterNext()]):(<class 'NotImplementedError'>, NotImplementedError())
l.extend([FailingIterNext()]):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using l.extend([%s])
l.extend([None]):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
l.extend([{b"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
l.extend([{"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
l.extend([FailingMapping()]):(<class 'NotImplementedError'>, NotImplementedError())
l.extend([FailingMappingKey()]):(<class 'NotImplementedError'>, NotImplementedError())
l.extend([FailingMapping()]):(<class 'NotImplementedError'>, NotImplementedError('keys',))
l.extend([FailingMappingKey()]):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
l.extend([FailingNumber()]):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>> ListSetattr
del l.locked:(<class 'AttributeError'>, AttributeError('cannot delete vim.List attributes',))
l.locked = FailingTrue():(<class 'NotImplementedError'>, NotImplementedError())
l.locked = FailingTrue():(<class 'NotImplementedError'>, NotImplementedError('bool',))
l.xxx = True:(<class 'AttributeError'>, AttributeError('cannot set attribute xxx',))
> Function
>> FunctionConstructor
@@ -924,14 +979,15 @@ f({"abcF" : Mapping({"\0" : 1})}):(<class 'TypeError'>, TypeError('expected byte
<<< Finished
>>> Testing *Iter* using f({"abcF" : %s})
f({"abcF" : FailingIter()}):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
f({"abcF" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError())
f({"abcF" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using f({"abcF" : %s})
f({"abcF" : None}):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
f({"abcF" : {b"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
f({"abcF" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
f({"abcF" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError())
f({"abcF" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError())
f({"abcF" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError('keys',))
f({"abcF" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
f({"abcF" : FailingNumber()}):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing StringToChars using f(Mapping({%s : 1}))
f(Mapping({1 : 1})):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -950,25 +1006,27 @@ f(Mapping({"abcG" : Mapping({"\0" : 1})})):(<class 'TypeError'>, TypeError('expe
<<< Finished
>>> Testing *Iter* using f(Mapping({"abcG" : %s}))
f(Mapping({"abcG" : FailingIter()})):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
f(Mapping({"abcG" : FailingIterNext()})):(<class 'NotImplementedError'>, NotImplementedError())
f(Mapping({"abcG" : FailingIterNext()})):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using f(Mapping({"abcG" : %s}))
f(Mapping({"abcG" : None})):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
f(Mapping({"abcG" : {b"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
f(Mapping({"abcG" : {"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
f(Mapping({"abcG" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError())
f(Mapping({"abcG" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError())
f(Mapping({"abcG" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError('keys',))
f(Mapping({"abcG" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
f(Mapping({"abcG" : FailingNumber()})):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing *Iter* using f(%s)
f(FailingIter()):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
f(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError())
f(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using f(%s)
f(None):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
f({b"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
f({"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
f(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError())
f(FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError())
f(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError('keys',))
f(FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
f(FailingNumber()):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing StringToChars using fd(self={%s : 1})
fd(self={1 : 1}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -987,14 +1045,15 @@ fd(self={"abcF" : Mapping({"\0" : 1})}):(<class 'TypeError'>, TypeError('expecte
<<< Finished
>>> Testing *Iter* using fd(self={"abcF" : %s})
fd(self={"abcF" : FailingIter()}):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
fd(self={"abcF" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError())
fd(self={"abcF" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using fd(self={"abcF" : %s})
fd(self={"abcF" : None}):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
fd(self={"abcF" : {b"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
fd(self={"abcF" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
fd(self={"abcF" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError())
fd(self={"abcF" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError())
fd(self={"abcF" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError('keys',))
fd(self={"abcF" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
fd(self={"abcF" : FailingNumber()}):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing StringToChars using fd(self=Mapping({%s : 1}))
fd(self=Mapping({1 : 1})):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
@@ -1013,14 +1072,15 @@ fd(self=Mapping({"abcG" : Mapping({"\0" : 1})})):(<class 'TypeError'>, TypeError
<<< Finished
>>> Testing *Iter* using fd(self=Mapping({"abcG" : %s}))
fd(self=Mapping({"abcG" : FailingIter()})):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
fd(self=Mapping({"abcG" : FailingIterNext()})):(<class 'NotImplementedError'>, NotImplementedError())
fd(self=Mapping({"abcG" : FailingIterNext()})):(<class 'NotImplementedError'>, NotImplementedError('next',))
<<< Finished
>>> Testing ConvertFromPyObject using fd(self=Mapping({"abcG" : %s}))
fd(self=Mapping({"abcG" : None})):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
fd(self=Mapping({"abcG" : {b"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
fd(self=Mapping({"abcG" : {"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
fd(self=Mapping({"abcG" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError())
fd(self=Mapping({"abcG" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError())
fd(self=Mapping({"abcG" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError('keys',))
fd(self=Mapping({"abcG" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
fd(self=Mapping({"abcG" : FailingNumber()})):(<class 'NotImplementedError'>, NotImplementedError('int',))
<<< Finished
>>> Testing *Iter* using fd(self=%s)
fd(self=FailingIter()):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim dictionary',))
@@ -1030,8 +1090,9 @@ fd(self=FailingIterNext()):(<class 'TypeError'>, TypeError('unable to convert Fa
fd(self=None):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim dictionary',))
fd(self={b"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
fd(self={"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
fd(self=FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError())
fd(self=FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError())
fd(self=FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError('keys',))
fd(self=FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
fd(self=FailingNumber()):(<class 'TypeError'>, TypeError('unable to convert FailingNumber to vim dictionary',))
<<< Finished
>>> Testing ConvertFromPyMapping using fd(self=%s)
fd(self=[]):(<class 'AttributeError'>, AttributeError('keys',))
@@ -1049,8 +1110,16 @@ vim.current.window.xxx:(<class 'AttributeError'>, AttributeError("'vim.window' o
vim.current.window.buffer = 0:(<class 'TypeError'>, TypeError('readonly attribute: buffer',))
vim.current.window.cursor = (100000000, 100000000):(<class 'vim.error'>, error('cursor position outside buffer',))
vim.current.window.cursor = True:(<class 'TypeError'>, TypeError('argument must be 2-item sequence, not bool',))
vim.current.window.height = "abcK":(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got str',))
vim.current.window.width = "abcL":(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got str',))
>>> Testing NumberToLong using vim.current.window.height = %s
vim.current.window.height = []:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got list',))
vim.current.window.height = None:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got NoneType',))
vim.current.window.height = -1:(<class 'ValueError'>, ValueError('number must be greater or equal to zero',))
<<< Finished
>>> Testing NumberToLong using vim.current.window.width = %s
vim.current.window.width = []:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got list',))
vim.current.window.width = None:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got NoneType',))
vim.current.window.width = -1:(<class 'ValueError'>, ValueError('number must be greater or equal to zero',))
<<< Finished
vim.current.window.xxxxxx = True:(<class 'AttributeError'>, AttributeError('xxxxxx',))
> WinList
>> WinListItem
@@ -1058,6 +1127,7 @@ vim.windows[1000]:(<class 'IndexError'>, IndexError('no such window',))
> Buffer
>> StringToLine (indirect)
vim.current.buffer[0] = "\na":(<class 'vim.error'>, error('string cannot contain newlines',))
vim.current.buffer[0] = b"\na":(<class 'vim.error'>, error('string cannot contain newlines',))
>> SetBufferLine (indirect)
vim.current.buffer[0] = True:(<class 'TypeError'>, TypeError('bad argument type for built-in operation',))
>> SetBufferLineList (indirect)
@@ -1084,8 +1154,13 @@ vim.current.buffer.mark("!"):(<class 'vim.error'>, error('invalid mark name',))
vim.current.buffer.range(1, 2, 3):(<class 'TypeError'>, TypeError('function takes exactly 2 arguments (3 given)',))
> BufMap
>> BufMapItem
vim.buffers[None]:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got NoneType',))
vim.buffers[100000000]:(<class 'KeyError'>, KeyError(100000000,))
>>> Testing NumberToLong using vim.buffers[%s]
vim.buffers[[]]:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got list',))
vim.buffers[None]:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got NoneType',))
vim.buffers[-1]:(<class 'ValueError'>, ValueError('number must be greater then zero',))
vim.buffers[0]:(<class 'ValueError'>, ValueError('number must be greater then zero',))
<<< Finished
> Current
>> CurrentGetattr
vim.current.xxx:(<class 'AttributeError'>, AttributeError("'vim.currentdata' object has no attribute 'xxx'",))
@@ -1095,9 +1170,14 @@ vim.current.buffer = True:(<class 'TypeError'>, TypeError('expected vim.Buffer o
vim.current.window = True:(<class 'TypeError'>, TypeError('expected vim.Window object, but got bool',))
vim.current.tabpage = True:(<class 'TypeError'>, TypeError('expected vim.TabPage object, but got bool',))
vim.current.xxx = True:(<class 'AttributeError'>, AttributeError('xxx',))
['.']
'.'
3,xx
before
after
pythonx/topmodule/__init__.py
pythonx/topmodule/submodule/__init__.py
pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py
vim.command("throw 'abcN'"):(<class 'vim.error'>, error('abcN',))
Exe("throw 'def'"):(<class 'vim.error'>, error('def',))
vim.eval("Exe('throw ''ghi''')"):(<class 'vim.error'>, error('ghi',))
+36
View File
@@ -743,6 +743,42 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1251,
/**/
1250,
/**/
1249,
/**/
1248,
/**/
1247,
/**/
1246,
/**/
1245,
/**/
1244,
/**/
1243,
/**/
1242,
/**/
1241,
/**/
1240,
/**/
1239,
/**/
1238,
/**/
1237,
/**/
1236,
/**/
1235,
/**/
1234,
/**/
1233,
/**/
+52 -2
View File
@@ -66,6 +66,11 @@ static void clear_snapshot_rec __ARGS((frame_T *fr));
static int check_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
static win_T *restore_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
static int frame_check_height __ARGS((frame_T *topfrp, int height));
#ifdef FEAT_VERTSPLIT
static int frame_check_width __ARGS((frame_T *topfrp, int width));
#endif
#endif /* FEAT_WINDOWS */
static win_T *win_alloc __ARGS((win_T *after, int hidden));
@@ -4754,7 +4759,7 @@ shell_new_rows()
/* First try setting the heights of windows with 'winfixheight'. If
* that doesn't result in the right height, forget about that option. */
frame_new_height(topframe, h, FALSE, TRUE);
if (topframe->fr_height != h)
if (!frame_check_height(topframe, h))
frame_new_height(topframe, h, FALSE, FALSE);
(void)win_comp_pos(); /* recompute w_winrow and w_wincol */
@@ -4788,7 +4793,7 @@ shell_new_columns()
/* First try setting the widths of windows with 'winfixwidth'. If that
* doesn't result in the right width, forget about that option. */
frame_new_width(topframe, (int)Columns, FALSE, TRUE);
if (topframe->fr_width != Columns)
if (!frame_check_width(topframe, Columns))
frame_new_width(topframe, (int)Columns, FALSE, FALSE);
(void)win_comp_pos(); /* recompute w_winrow and w_wincol */
@@ -6932,3 +6937,48 @@ get_tab_number(tabpage_T *tp UNUSED)
return i;
}
#endif
/*
* Return TRUE if "topfrp" and its children are at the right height.
*/
static int
frame_check_height(topfrp, height)
frame_T *topfrp;
int height;
{
frame_T *frp;
if (topfrp->fr_height != height)
return FALSE;
if (topfrp->fr_layout == FR_ROW)
for (frp = topfrp->fr_child; frp != NULL; frp = frp->fr_next)
if (frp->fr_height != height)
return FALSE;
return TRUE;
}
#ifdef FEAT_VERTSPLIT
/*
* Return TRUE if "topfrp" and its children are at the right width.
*/
static int
frame_check_width(topfrp, width)
frame_T *topfrp;
int width;
{
frame_T *frp;
if (topfrp->fr_width != width)
return FALSE;
if (topfrp->fr_layout == FR_COL)
for (frp = topfrp->fr_child; frp != NULL; frp = frp->fr_next)
if (frp->fr_width != width)
return FALSE;
return TRUE;
}
#endif