]> granicus.if.org Git - vim/commitdiff
Updated runtime files.
authorBram Moolenaar <Bram@vim.org>
Tue, 11 Oct 2016 06:57:33 +0000 (08:57 +0200)
committerBram Moolenaar <Bram@vim.org>
Tue, 11 Oct 2016 06:57:33 +0000 (08:57 +0200)
runtime/autoload/phpcomplete.vim
runtime/colors/evening.vim
runtime/doc/options.txt
runtime/doc/syntax.txt
runtime/doc/tags
runtime/doc/todo.txt
runtime/ftplugin/mf.vim
runtime/ftplugin/mp.vim
runtime/ftplugin/python.vim
runtime/indent/mp.vim
runtime/syntax/avra.vim

index 0d01bc8bf1b70dc5120a5a074cfd72229afed3fd..8e38867a77718da7212a5a736303582ae4753ac4 100644 (file)
@@ -3,7 +3,7 @@
 " Maintainer:  Dávid Szabó ( complex857 AT gmail DOT com )
 " Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
 " URL: https://github.com/shawncplus/phpcomplete.vim
-" Last Change:  2015 Jul 13
+" Last Change:  2016 Oct 10
 "
 "      OPTIONS:
 "
@@ -195,6 +195,8 @@ function! phpcomplete#CompletePHP(findstart, base) " {{{
                        " }}}
                elseif context =~? 'implements'
                        return phpcomplete#CompleteClassName(a:base, ['i'], current_namespace, imports)
+               elseif context =~? 'instanceof'
+                       return phpcomplete#CompleteClassName(a:base, ['c', 'n'], current_namespace, imports)
                elseif context =~? 'extends\s\+.\+$' && a:base == ''
                        return ['implements']
                elseif context =~? 'extends'
@@ -787,6 +789,8 @@ function! phpcomplete#CompleteClassName(base, kinds, current_namespace, imports)
 
        if kinds == ['c', 'i']
                let filterstr = 'v:val =~? "\\(class\\|interface\\)\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*"'
+       elseif kinds == ['c', 'n']
+               let filterstr = 'v:val =~? "\\(class\\|namespace\\)\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*"'
        elseif kinds == ['c']
                let filterstr = 'v:val =~? "class\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*"'
        elseif kinds == ['i']
@@ -996,7 +1000,7 @@ function! phpcomplete#CompleteUserClass(context, base, sccontent, visibility) "
                let required_modifiers += ['static']
        endif
        let all_variable = filter(deepcopy(a:sccontent),
-                                       \ 'v:val =~ "^\\s*\\(var\\s\\+\\|public\\s\\+\\|protected\\s\\+\\|private\\s\\+\\|final\\s\\+\\|abstract\\s\\+\\|static\\s\\+\\)\\+\\$"')
+                                       \ 'v:val =~ "\\(^\\s*\\(var\\s\\+\\|public\\s\\+\\|protected\\s\\+\\|private\\s\\+\\|final\\s\\+\\|abstract\\s\\+\\|static\\s\\+\\)\\+\\$\\|^\\s*\\(\\/\\|\\*\\)*\\s*@property\\s\\+\\S\\+\\s\\S\\{-}\\s*$\\)"')
 
        let variables = []
        for i in all_variable
@@ -1160,6 +1164,14 @@ function! phpcomplete#GetTaglist(pattern) " {{{
        endif
 
        let tags = taglist(a:pattern)
+       for tag in tags
+               for prop in keys(tag)
+                       if prop == 'cmd' || prop == 'static' || prop == 'kind' || prop == 'builtin'
+                               continue
+                       endif
+                       let tag[prop] = substitute(tag[prop], '\\\\', '\\', 'g')
+               endfor
+       endfor
        let s:cache_tags[a:pattern] = tags
        let has_key = has_key(s:cache_tags, a:pattern)
        let s:cache_tags_checksum = cache_checksum
@@ -1379,7 +1391,7 @@ function! phpcomplete#GetCallChainReturnType(classname_candidate, class_candidat
                        " Get Structured information of all classes and subclasses including namespace and includes
                        " try to find the method's return type in docblock comment
                        for classstructure in classcontents
-                               let docblock_target_pattern = 'function\s\+&\?'.method.'\|\(public\|private\|protected\|var\).\+\$'.method
+                               let docblock_target_pattern = 'function\s\+&\?'.method.'\>\|\(public\|private\|protected\|var\).\+\$'.method.'\>\|@property.\+\$'.method.'\>'
                                let doc_str = phpcomplete#GetDocBlock(split(classstructure.content, '\n'), docblock_target_pattern)
                                if doc_str != ''
                                        break
@@ -1387,8 +1399,17 @@ function! phpcomplete#GetCallChainReturnType(classname_candidate, class_candidat
                        endfor
                        if doc_str != ''
                                let docblock = phpcomplete#ParseDocBlock(doc_str)
-                               if has_key(docblock.return, 'type') || has_key(docblock.var, 'type')
-                                       let type = has_key(docblock.return, 'type') ? docblock.return.type : docblock.var.type
+                               if has_key(docblock.return, 'type') || has_key(docblock.var, 'type') || len(docblock.properties) > 0
+                                       let type = has_key(docblock.return, 'type') ? docblock.return.type : has_key(docblock.var, 'type') ? docblock.var.type : ''
+
+                                       if type == ''
+                                               for property in docblock.properties
+                                                       if property.description =~? method
+                                                               let type = property.type
+                                                               break
+                                                       endif
+                                               endfor
+                                       endif
 
                                        " there's a namespace in the type, threat the type as FQCN
                                        if type =~ '\\'
@@ -1554,6 +1575,9 @@ function! phpcomplete#GetClassName(start_line, context, current_namespace, impor
        elseif get(methodstack, 0) =~# function_invocation_pattern
                let function_name = matchstr(methodstack[0], '^\s*\zs'.function_name_pattern)
                let function_file = phpcomplete#GetFunctionLocation(function_name, a:current_namespace)
+               if function_file == ''
+                       let function_file = phpcomplete#GetFunctionLocation(function_name, '\')
+               endif
 
                if function_file == 'VIMPHP_BUILTINFUNCTION'
                        " built in function, grab the return type from the info string
@@ -1569,7 +1593,7 @@ function! phpcomplete#GetClassName(start_line, context, current_namespace, impor
                                let [class_candidate_namespace, function_imports] = phpcomplete#GetCurrentNameSpace(file_lines)
                                " try to expand the classname of the returned type with the context got from the function's source file
 
-                               let [classname_candidate, unused] = phpcomplete#ExpandClassName(classname_candidate, class_candidate_namespace, function_imports)
+                               let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, class_candidate_namespace, function_imports)
                        endif
                endif
                if classname_candidate != ''
@@ -1650,9 +1674,10 @@ function! phpcomplete#GetClassName(start_line, context, current_namespace, impor
                                        let sub_methodstack = phpcomplete#GetMethodStack(matchstr(line, '^\s*'.object.'\s*=&\?\s*\s\+\zs.*'))
                                        let [classname_candidate, class_candidate_namespace] = phpcomplete#GetCallChainReturnType(
                                                \ classname,
-                                               \ a:current_namespace,
+                                               \ namespace_for_class,
                                                \ a:imports,
                                                \ sub_methodstack)
+
                                        return (class_candidate_namespace == '\' || class_candidate_namespace == '') ? classname_candidate : class_candidate_namespace.'\'.classname_candidate
                                endif
                        endif
@@ -1783,6 +1808,9 @@ function! phpcomplete#GetClassName(start_line, context, current_namespace, impor
                                let [function_name, function_namespace] = phpcomplete#ExpandClassName(function_name, a:current_namespace, a:imports)
 
                                let function_file = phpcomplete#GetFunctionLocation(function_name, function_namespace)
+                               if function_file == ''
+                                       let function_file = phpcomplete#GetFunctionLocation(function_name, '\')
+                               endif
 
                                if function_file == 'VIMPHP_BUILTINFUNCTION'
                                        " built in function, grab the return type from the info string
@@ -1798,7 +1826,7 @@ function! phpcomplete#GetClassName(start_line, context, current_namespace, impor
                                                let classname_candidate = docblock.return.type
                                                let [class_candidate_namespace, function_imports] = phpcomplete#GetCurrentNameSpace(file_lines)
                                                " try to expand the classname of the returned type with the context got from the function's source file
-                                               let [classname_candidate, unused] = phpcomplete#ExpandClassName(classname_candidate, class_candidate_namespace, function_imports)
+                                               let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, class_candidate_namespace, function_imports)
                                                break
                                        endif
                                endif
@@ -1861,6 +1889,8 @@ function! phpcomplete#GetClassName(start_line, context, current_namespace, impor
                                for tag in tags
                                        if tag.kind ==? 'v' && tag.cmd =~? '=\s*new\s\+\zs'.class_name_pattern.'\ze'
                                                let classname = matchstr(tag.cmd, '=\s*new\s\+\zs'.class_name_pattern.'\ze')
+                                               " unescape the classname, it would have "\" doubled since it is an ex command
+                                               let classname = substitute(classname, '\\\(\_.\)', '\1', 'g')
                                                return classname
                                        endif
                                endfor
@@ -2077,6 +2107,19 @@ function! phpcomplete#GetClassContentsStructure(file_path, file_lines, class_nam
        endif
        call searchpair('{', '', '}', 'W')
        let class_closing_bracket_line = line('.')
+
+       " Include class docblock
+       let doc_line = cfline - 1
+       if getline(doc_line) =~? '^\s*\*/'
+               while doc_line != 0
+                       if getline(doc_line) =~? '^\s*/\*\*'
+                               let cfline = doc_line
+                               break
+                       endif
+                       let doc_line -= 1
+               endwhile
+       endif
+
        let classcontent = join(getline(cfline, class_closing_bracket_line), "\n")
 
        let used_traits = []
@@ -2241,8 +2284,19 @@ function! phpcomplete#GetDocBlock(sccontent, search) " {{{
                let line = a:sccontent[i]
                " search for a function declaration
                if line =~? a:search
-                       let l = i - 1
-                       " start backward serch for the comment block
+                       if line =~? '@property'
+                               let doc_line = i
+                               while doc_line != sccontent_len - 1
+                                       if a:sccontent[doc_line] =~? '^\s*\*/'
+                                               let l = doc_line
+                                               break
+                                       endif
+                                       let doc_line += 1
+                               endwhile
+                       else
+                               let l = i - 1
+                       endif
+                       " start backward search for the comment block
                        while l != 0
                                let line = a:sccontent[l]
                                " if it's a one line docblock like comment and we can just return it right away
@@ -2263,7 +2317,7 @@ function! phpcomplete#GetDocBlock(sccontent, search) " {{{
                                return ''
                        end
 
-                       while l != 0
+                       while l >= 0
                                let line = a:sccontent[l]
                                if line =~? '^\s*/\*\*'
                                        let comment_start = l
@@ -2297,9 +2351,10 @@ function! phpcomplete#ParseDocBlock(docblock) " {{{
                \ 'return': {},
                \ 'throws': [],
                \ 'var': {},
+               \ 'properties': [],
                \ }
 
-       let res.description = substitute(matchstr(a:docblock, '\zs\_.\{-}\ze\(@var\|@param\|@return\|$\)'), '\(^\_s*\|\_s*$\)', '', 'g')
+       let res.description = substitute(matchstr(a:docblock, '\zs\_.\{-}\ze\(@type\|@var\|@param\|@return\|$\)'), '\(^\_s*\|\_s*$\)', '', 'g')
        let docblock_lines = split(a:docblock, "\n")
 
        let param_lines = filter(copy(docblock_lines), 'v:val =~? "^@param"')
@@ -2334,15 +2389,26 @@ function! phpcomplete#ParseDocBlock(docblock) " {{{
                endif
        endfor
 
-       let var_line = filter(copy(docblock_lines), 'v:val =~? "^@var"')
+       let var_line = filter(copy(docblock_lines), 'v:val =~? "^\\(@var\\|@type\\)"')
        if len(var_line) > 0
-               let var_parts = matchlist(var_line[0], '@var\s\+\(\S\+\)\s*\(.*\)')
+               let var_parts = matchlist(var_line[0], '\(@var\|@type\)\s\+\(\S\+\)\s*\(.*\)')
                let res['var'] = {
                                        \ 'line': var_parts[0],
-                                       \ 'type': phpcomplete#GetTypeFromDocBlockParam(get(var_parts, 1, '')),
-                                       \ 'description': get(var_parts, 2, '')}
+                                       \ 'type': phpcomplete#GetTypeFromDocBlockParam(get(var_parts, 2, '')),
+                                       \ 'description': get(var_parts, 3, '')}
        endif
 
+       let property_lines = filter(copy(docblock_lines), 'v:val =~? "^@property"')
+       for property_line in property_lines
+               let parts = matchlist(property_line, '\(@property\)\s\+\(\S\+\)\s*\(.*\)')
+               if len(parts) > 0
+                       call add(res.properties, {
+                                               \ 'line': parts[0],
+                                               \ 'type': phpcomplete#GetTypeFromDocBlockParam(get(parts, 2, '')),
+                                               \ 'description': get(parts, 3, '')})
+               endif
+       endfor
+
        return res
 endfunction
 " }}}
@@ -2498,6 +2564,7 @@ function! phpcomplete#GetCurrentNameSpace(file_lines) " {{{
                                                let     name = matchstr(name, '\\\zs[^\\]\+\ze$')
                                        endif
                                endif
+
                                " leading slash is not required use imports are always absolute
                                let imports[name] = {'name': object, 'kind': ''}
                        endfor
@@ -2533,6 +2600,7 @@ function! phpcomplete#GetCurrentNameSpace(file_lines) " {{{
                                                                elseif !exists('no_namespace_candidate')
                                                                        " save the first namespacless match to be used if no better
                                                                        " candidate found later on
+                                                                       let tag.namespace = namespace_for_classes
                                                                        let no_namespace_candidate = tag
                                                                endif
                                                        endif
index 298fd2481163b7dd404c6060bb1ae11dc6302923..2e8c52b93cbfc60030d3932e3b34099eedd0bfee 100644 (file)
@@ -1,6 +1,6 @@
 " Vim color file
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2006 Apr 14
+" Last Change: 2016 Oct 10
 
 " This color scheme uses a dark grey background.
 
@@ -46,8 +46,8 @@ hi CursorColumn term=reverse ctermbg=Black guibg=grey40
 hi CursorLine term=underline cterm=underline guibg=grey40
 
 " Groups for syntax highlighting
-hi Constant term=underline ctermfg=Magenta guifg=#ffa0a0 guibg=grey5
-hi Special term=bold ctermfg=LightRed guifg=Orange guibg=grey5
+hi Constant term=underline ctermfg=Magenta guifg=#ffa0a0
+hi Special term=bold ctermfg=LightRed guifg=Orange
 if &t_Co > 8
   hi Statement term=bold cterm=bold ctermfg=Yellow guifg=#ffff60 gui=bold
 endif
index eeea3aaf3ee3fc0f9b5ac0e71fc312733e05d1ff..fad643de38f4cb2dc9a4e745bd27102b9f5d8ff4 100644 (file)
@@ -4327,8 +4327,8 @@ A jump table for the options with a short description can be found at |Q_op|.
        original position when no match is found and when pressing <Esc>.  You
        still need to finish the search command with <Enter> to move the
        cursor to the match.
-       You can use the CTRL-N and CTRL-P keys to move to the next and
-       previous match. |c_CTRL-N| |c_CTRL-P|
+       You can use the CTRL-G and CTRL-T keys to move to the next and
+       previous match. |c_CTRL-G| |c_CTRL-T|
        When compiled with the |+reltime| feature Vim only searches for about
        half a second.  With a complicated pattern and/or a lot of text the
        match may not be found.  This is to avoid that Vim hangs while you
index ba739425b919b68a203cac117c42e7d9984b7a51..ae80a44eb3d033307c65333b7303019b1eee9f06 100644 (file)
@@ -2863,9 +2863,11 @@ vimrc file: >
 (Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>)
 
 
-SH             *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax*
+               *ft-posix-synax* *ft-dash-syntax*
+SH             *sh.vim*  *ft-sh-syntax*  *ft-bash-syntax*  *ft-ksh-syntax*
 
-This covers the "normal" Unix (Bourne) sh, bash and the Korn shell.
+This covers syntax highlighting for the older Unix (Bourne) sh, and newer
+shells such as bash, dash, posix, and the Korn shells.
 
 Vim attempts to determine which shell type is in use by specifying that
 various filenames are of specific types: >
@@ -2874,28 +2876,31 @@ various filenames are of specific types: >
     bash: .bashrc* bashrc bash.bashrc .bash_profile* *.bash
 <
 If none of these cases pertain, then the first line of the file is examined
-(ex. /bin/sh  /bin/ksh /bin/bash).  If the first line specifies a shelltype,
-then that shelltype is used.  However some files (ex. .profile) are known to
-be shell files but the type is not apparent.  Furthermore, on many systems
-sh is symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh" (Posix).
+(ex. looking for /bin/sh  /bin/ksh  /bin/bash).  If the first line specifies a
+shelltype, then that shelltype is used.  However some files (ex. .profile) are
+known to be shell files but the type is not apparent.  Furthermore, on many
+systems sh is symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh"
+(Posix).
 
-One may specify a global default by instantiating one of the following three
+One may specify a global default by instantiating one of the following
 variables in your <.vimrc>:
 
-    ksh: >
+   ksh: >
        let g:is_kornshell = 1
-<   posix: (using this is the same as setting is_kornshell to 1) >
+<   posix:  (using this is the nearly the same as setting g:is_kornshell to 1) >
        let g:is_posix     = 1
 <   bash: >
        let g:is_bash      = 1
 <   sh: (default) Bourne shell >
        let g:is_sh        = 1
 
+<   (dash users should use posix)
+
 If there's no "#! ..." line, and the user hasn't availed himself/herself of a
 default sh.vim syntax setting as just shown, then syntax/sh.vim will assume
 the Bourne shell syntax.  No need to quote RFCs or market penetration
 statistics in error reports, please -- just select the default version of the
-sh your system uses in your <.vimrc>.
+sh your system uses and install the associated "let..." in your <.vimrc>.
 
 The syntax/sh.vim file provides several levels of syntax-based folding: >
 
@@ -2904,7 +2909,7 @@ The syntax/sh.vim file provides several levels of syntax-based folding: >
        let g:sh_fold_enabled= 2     (enable heredoc folding)
        let g:sh_fold_enabled= 4     (enable if/do/for folding)
 >
-then various syntax items (HereDocuments and function bodies) become
+then various syntax items (ie. HereDocuments and function bodies) become
 syntax-foldable (see |:syn-fold|).  You also may add these together
 to get multiple types of folding: >
 
@@ -2928,14 +2933,7 @@ reduce this, the "sh_maxlines" internal variable can be set.  Example: >
 The default is to use the twice sh_minlines.  Set it to a smaller number to
 speed up displaying.  The disadvantage is that highlight errors may appear.
 
-                                               *g:sh_isk* *g:sh_noisk*
-The shell languages appear to let "." be part of words, commands, etc;
-consequently it should be in the isk for sh.vim.  As of v116 of syntax/sh.vim,
-syntax/sh.vim will append the "." to |'iskeyword'| by default; you may control
-this behavior with: >
-       let g:sh_isk  = '..whatever characters you want as part of iskeyword'
-       let g:sh_noisk= 1  " otherwise, if this exists, the isk will NOT chg
-<
+
                                                *sh-embed*  *sh-awk*
  Sh: EMBEDDING LANGUAGES~
 
index 5414fcc4fe27ac3d50c148a91ef2cf36e94abb1d..72d48012650347c3a3bb837e35796af0c0475120 100644 (file)
@@ -6027,6 +6027,7 @@ ft-csh-syntax     syntax.txt      /*ft-csh-syntax*
 ft-css-omni    insert.txt      /*ft-css-omni*
 ft-cweb-syntax syntax.txt      /*ft-cweb-syntax*
 ft-cynlib-syntax       syntax.txt      /*ft-cynlib-syntax*
+ft-dash-syntax syntax.txt      /*ft-dash-syntax*
 ft-desktop-syntax      syntax.txt      /*ft-desktop-syntax*
 ft-dircolors-syntax    syntax.txt      /*ft-dircolors-syntax*
 ft-docbk-syntax        syntax.txt      /*ft-docbk-syntax*
@@ -6087,6 +6088,7 @@ ft-php-syntax     syntax.txt      /*ft-php-syntax*
 ft-php3-syntax syntax.txt      /*ft-php3-syntax*
 ft-phtml-syntax        syntax.txt      /*ft-phtml-syntax*
 ft-plaintex-syntax     syntax.txt      /*ft-plaintex-syntax*
+ft-posix-synax syntax.txt      /*ft-posix-synax*
 ft-postscr-syntax      syntax.txt      /*ft-postscr-syntax*
 ft-ppwiz-syntax        syntax.txt      /*ft-ppwiz-syntax*
 ft-printcap-syntax     syntax.txt      /*ft-printcap-syntax*
@@ -6340,8 +6342,6 @@ g:netrw_win95ftp  pi_netrw.txt    /*g:netrw_win95ftp*
 g:netrw_winsize        pi_netrw.txt    /*g:netrw_winsize*
 g:netrw_wiw    pi_netrw.txt    /*g:netrw_wiw*
 g:netrw_xstrlen        pi_netrw.txt    /*g:netrw_xstrlen*
-g:sh_isk       syntax.txt      /*g:sh_isk*
-g:sh_noisk     syntax.txt      /*g:sh_noisk*
 g:syntax_on    syntax.txt      /*g:syntax_on*
 g:tar_browseoptions    pi_tar.txt      /*g:tar_browseoptions*
 g:tar_cmd      pi_tar.txt      /*g:tar_cmd*
index 7fbc3b6c1e786a961cfc410a3908f266ef79f8bc..694545cf4b1b853ceade49023666873be9571aeb 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.0.  Last change: 2016 Oct 01
+*todo.txt*      For Vim version 8.0.  Last change: 2016 Oct 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -62,9 +62,6 @@ Regexp problems:
   (Manuel Ortega, 2016 Apr 24)
   Test fails on Mac.  Avoid using isalpha(), isalnum(), etc?  Depends on
   LC_CTYPE
-- The regexp engines are not reentrant, causing havoc when interrupted by a
-  remote expression or something else.  Move global variables onto the stack
-  or into an allocated struct.
 - The old engine does not find a match for "/\%#=1\(\)\{80}", the new engine
   matches everywhere.
 - Using win_linetabsize() can still be slow. Cache the result, store col and
@@ -80,6 +77,7 @@ Regexp problems:
 - NFA regexp doesn't handle \%<v correctly. (Ingo Karkat, 2014 May 12)
 - Does not work with NFA regexp engine:
   \%u, \%x, \%o, \%d followed by a composing character
+- Search for \%d0\+ may fail with E363. (Christian Brabandt, 2016 Oct 4)
 - \%'[ does not work.  '%'] does work.  (Masaaki Nakamura, 2016 Apr 4)
 - Bug relating to back references. (Ingo Karkat, 2014 Jul 24)
 - New RE does not give an error for empty group: "\(\)\{2}" (Dominique Pelle,
@@ -112,6 +110,8 @@ Error in test_startup_utf8 on Solaris. (Danek Duvall, 2016 Aug 17)
 
 Patch to recognize tmux. (Michael Henry, 2016 Sep 29)
 
+Patch to fix escaping of job arguments. (Yasuhiro Matsumoto, 2016 Oct 5)
+
 Once .exe with updated installer is available: Add remark to download page
 about /S and /D options (Ken Takata, 2016 Apr 13)
 Or point to nightly builds: https://github.com/vim/vim-win32-installer/releases
@@ -140,17 +140,24 @@ Patch to make it possible to extend a list with itself.
 min() and max() spawn lots of error messages if sorted list/dictionary
 contains invalid data (Nikolay Pavlov, 2016 Sep 4, #1039)
 
+Should :vmap in matchit.vim be :xmap?  (Tony Mechelynck)
+
 Problem with whitespace in errorformat. (Gerd Wachsmuth, 2016 May 15, #807)
 
 Undo problem: "g-" doesn't go back, gets stuck. (Björn Linse, 2016 Jul 18)
 
+Add "unicode true" to NSIS installer.  Doesn't work with Windows 95, which we
+no longer support.
+
 sort() is not stable when using numeric/float sort (Nikolay Pavlov, 2016 Sep
 4#1038)
 
 Patch to add "cmdline" completion to getcompletion(). (Shougo, Oct 1, #1140)
 
 Patch for systemlist(), add empty item. (thinca, Sep 30, #1135)
-Adjust the documentation instead?  Do include the test.
+Add an argument to choose binary or non-binary (like readfile()), when omitted
+use the current behavior.
+Include the test.
 
 Idea from Sven: record sequence of keys.  Useful to show others what they are
 doing (look over the shoulder), and also to see what happened.
@@ -158,6 +165,9 @@ Probably list of keystrokes, with some annotations for mode changes.
 Could store in logfile to be able to analyise it with an external command.
 E.g. to see when's the last time a plugin command was used.
 
+execute() cannot be used with command completeion. (Daniel Hahler, 2016 Oct 1,
+#1141)
+
 cmap using execute() has side effects. (Killthemule, 2016 Aug 17, #983)
 
 Patch to change order of compiler flags. (Yousong Zhou, 2016 Sep 19, #1100)
@@ -182,6 +192,9 @@ Cannot delete a file with square brackets with delete(). (#696)
 Completion for input() does not expand environment variables. (chdiza, 2016
 Jul 25, #948)
 
+Patch to fix wrong encoding of error message on Cygwin/MSYS terminal.
+(Ken Takata, 2016 Oct 4)
+
 'hlsearch' interferes with a Conceal match. (Rom Grk, 2016 Aug 9)
 
 Patch to add context information to quickfix/location list. (Yegappan
@@ -228,9 +241,6 @@ the last change in any buffer?  Can we use ', (, is next to .)?
 
 Ramel Eshed: system() is much slower than job_start(), why? (Aug 26)
 
-Patch to make gd and gD work better for non-K&R code and with comments.
-(Anton Lindqvist, 2016 Aug 29)
-
 When generating the Unicode tables with runtime/tools/unicode.vim the
 emoji_width table has only one entry.
 
index fa567368eab83e9747f6e36d41fa1a5df5720b1e..7c9a8a12833fd1c29f13a9bc20d0956ee26553a9 100644 (file)
@@ -2,7 +2,7 @@
 " Language:           METAFONT
 " Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com>
 " Former Maintainers: Nikolai Weibull <now@bitwi.se>
-" Latest Revision:    2016 Oct 1
+" Latest Revision:    2016 Oct 2
 
 if exists("b:did_ftplugin")
   finish
@@ -25,7 +25,7 @@ let g:omni_syntax_group_exclude_mf = 'mfTodoComment'
 
 let s:mp_regex = {
       \ 'beginsection' : '^\s*\%(\%(\|var\|primary\|secondary\|tertiary\)def\|beginchar\|beginlogochar\)\>',
-      \ 'endsection'   : '^\s*\%(enddef\|endchar\|endlogochar\)\>',
+      \ 'endsection'   : '^\s*\%(enddef\|endchar\)\>',
       \ 'beginblock'   : '^\s*\%(begingroup\|if\|for\%(\|suffixes\|ever\)\)\>',
       \ 'endblock'     : '^\s*\%(endgroup\|fi\|endfor\)\>'
       \ }
@@ -35,9 +35,7 @@ function! s:move_around(count, what, flags, visual)
     exe "normal! gv"
   endif
   call search(s:mp_regex[a:what], a:flags.'s') " 's' sets previous context mark
-  for i in range(2, a:count)
-    call search(s:mp_regex[a:what], a:flags)
-  endfor
+  call map(range(2, a:count), 'search(s:mp_regex[a:what], a:flags)')
 endfunction
 
 
@@ -62,8 +60,7 @@ if exists("loaded_matchit")
         \ '\<for\%(\|suffixes\|ever\)\>:\<exit\%(if\|unless\)\>:\<endfor\>,' .
         \ '\<\%(\|var\|primary\|secondary\|tertiary\)def\>:\<enddef\>,' .
         \ '\<begingroup\>:\<endgroup\>,' .
-        \ '\<beginchar\>:\<endchar\>' .
-        \ '\<beginlogochar\>:\<endlogochar\>'
+        \ '\<begin\%(logo\)\?char\>:\<endchar\>'
   " Ignore comments and strings
   let b:match_skip = 'synIDattr(synID(line("."), col("."), 1), "name")
         \ =~# "mf\\(Comment\\|String\\)$"'
index a3c9af342b03714961c57e8c4fb93f29f8e98935..3a0a3d029881e37c6b9eee1c36da5debe351da59 100644 (file)
@@ -2,7 +2,7 @@
 " Language:           MetaPost
 " Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com>
 " Former Maintainers: Nikolai Weibull <now@bitwi.se>
-" Latest Revision:    2016 Oct 1
+" Latest Revision:    2016 Oct 2
 
 if exists("b:did_ftplugin")
   finish
@@ -34,7 +34,7 @@ endif
 
 let s:mp_regex = {
       \ 'beginsection' : '^\s*\%(\%(\|var\|primary\|secondary\|tertiary\)def\|begin\%(fig\|char\|logochar\|glyph\|graph\)\)\>',
-      \ 'endsection'   : '^\s*\%(enddef\|end\%(fig\|char\|logochar\|glyph\|graph\)\)\>',
+      \ 'endsection'   : '^\s*\%(enddef\|end\%(fig\|char\|glyph\|graph\)\)\>',
       \ 'beginblock'   : '^\s*\%(begingroup\|if\|for\%(\|suffixes\|ever\)\)\>',
       \ 'endblock'     : '^\s*\%(endgroup\|fi\|endfor\)\>'
       \ }
@@ -44,9 +44,7 @@ function! s:move_around(count, what, flags, visual)
     exe "normal! gv"
   endif
   call search(s:mp_regex[a:what], a:flags.'s') " 's' sets previous context mark
-  for i in range(2, a:count)
-    call search(s:mp_regex[a:what], a:flags)
-  endfor
+  call map(range(2, a:count), 'search(s:mp_regex[a:what], a:flags)')
 endfunction
 
 
@@ -72,9 +70,8 @@ if exists("loaded_matchit")
         \ '\<\%(\|var\|primary\|secondary\|tertiary\)def\>:\<enddef\>,' .
         \ '\<beginfig\>:\<endfig\>,' .
         \ '\<begingroup\>:\<endgroup\>,' .
-        \ '\<beginchar\>:\<endchar\>' .
-        \ '\<beginlogochar\>:\<endlogochar\>' .
-        \ '\<beginglyph\>:\<endglyph\>' .
+        \ '\<begin\%(logo\)\?char\>:\<endchar\>,' .
+        \ '\<beginglyph\>:\<endglyph\>,' .
         \ '\<begingraph\>:\<endgraph\>'
   " Ignore comments and strings
   let b:match_skip = 'synIDattr(synID(line("."), col("."), 1), "name")
index d5f70b6ab4cabc9f0a888661572b1bd871e8ae37..546e3bd560a370f5f791224181a17fa7a8da250d 100644 (file)
@@ -2,7 +2,7 @@
 " Language:    python
 " Maintainer:  James Sully <sullyj3@gmail.com>
 " Previous Maintainer: Johannes Zellner <johannes@zellner.org>
-" Last Change: Tue, 06 September 2016
+" Last Change: Tue, 09 October 2016
 " https://github.com/sullyj3/vim-ftplugin-python
 
 if exists("b:did_ftplugin") | finish | endif
@@ -22,10 +22,10 @@ setlocal omnifunc=pythoncomplete#Complete
 
 set wildignore+=*.pyc
 
-let b:next_toplevel='\v%$\|^(class\|def)>'
-let b:prev_toplevel='\v^(class\|def)>'
-let b:next='\v%$\|^\s*(class\|def)>'
-let b:prev='\v^\s*(class\|def)>'
+let b:next_toplevel='\v%$\|^(class\|def\|async def)>'
+let b:prev_toplevel='\v^(class\|def\|async def)>'
+let b:next='\v%$\|^\s*(class\|def\|async def)>'
+let b:prev='\v^\s*(class\|def\|async def)>'
 
 execute "nnoremap <silent> <buffer> ]] :call <SID>Python_jump('n', '". b:next_toplevel."', 'W')<cr>"
 execute "nnoremap <silent> <buffer> [[ :call <SID>Python_jump('n', '". b:prev_toplevel."', 'Wb')<cr>"
index c9639efed3267d5f08dde54f68b7ec721e480005..86fa2539c12209c821f8c036151d009673e2e034 100644 (file)
@@ -2,7 +2,7 @@
 " Language:           MetaPost
 " Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com>
 " Former Maintainers: Eugene Minkovskii <emin@mccme.ru>
-" Last Change:        2016 Oct 01
+" Last Change:        2016 Oct 2, 4:13pm
 " Version: 0.2
 
 if exists("b:did_indent")
@@ -57,7 +57,7 @@ let g:mp_open_tag = ''
 let g:mp_close_tag = ''
       \ . '\<fi\>'
       \ . '\|\<else\%[if]\>'
-      \ . '\|\<end\%(\|for\|group\|def\|fig\|char\|logochar\|glyph\|graph\)\>'
+      \ . '\|\<end\%(\|for\|group\|def\|fig\|char\|glyph\|graph\)\>'
       \ . '\|[)\]}]'
 
 " Statements that may span multiple lines and are ended by a semicolon. To
@@ -118,12 +118,10 @@ function! s:CommentOrString(line, pos)
   return in_string || (c >= 0 && c <= a:pos)
 endfunction
 
-" Find the first non-comment non-blank line before the current line. Skip also
-" verbatimtex/btex... etex blocks.
+" Find the first non-comment non-blank line before the current line.
 function! s:PrevNonBlankNonComment(lnum)
   let l:lnum = prevnonblank(a:lnum - 1)
-  while getline(l:lnum) =~# '^\s*%' ||
-        \ synIDattr(synID(a:lnum, 1, 1), "name") =~# '^mpTeXinsert$\|^tex\|^Delimiter'
+  while getline(l:lnum) =~# '^\s*%'
     let l:lnum = prevnonblank(l:lnum - 1)
   endwhile
   return l:lnum
@@ -220,25 +218,32 @@ endfunction
 "
 " Example:
 "
-"    shiftwidth=4
 "    def foo =
-"        makepen(subpath(T-n,t) of r %>
-"            shifted .5down %>
-"                --subpath(t,T) of r shifted .5up -- cycle) %<<
+"        makepen(
+"            subpath(T-n,t) of r  %>
+"                shifted .5down   %>
+"                    --subpath(t,T) of r shifted .5up -- cycle   %<<<
+"        )
 "        withcolor black
 "    enddef
 "
 " The default indentation of the previous example would be:
 "
 "    def foo =
-"        makepen(subpath(T-n,t) of r
-"        shifted .5down
-"        --subpath(t,T) of r shifted .5up -- cycle)
+"        makepen(
+"            subpath(T-n,t) of r
+"            shifted .5down
+"            --subpath(t,T) of r shifted .5up -- cycle
+"        )
 "        withcolor black
 "    enddef
 "
 " Personally, I prefer the latter, but anyway...
 function! GetMetaPostIndentIntern()
+  " Do not touch indentation inside verbatimtex/btex.. etex blocks.
+  if synIDattr(synID(v:lnum, 1, 1), "name") =~# '^mpTeXinsert$\|^tex\|^Delimiter'
+    return -1
+  endif
 
   " This is the reference line relative to which the current line is indented
   " (but see below).
@@ -327,8 +332,8 @@ function! GetMetaPostIndentIntern()
   "
   "    for i = 1 upto 3:  % <-- Current line: this gets the same indent as `draw ...`
   "
-  " NOTE: we get here if and only if L does not contain a statement (among
-  " those listed in g:mp_statement).
+  " NOTE: we get here only if L does not contain a statement (among those
+  " listed in g:mp_statement).
   if s:ValidMatchEnd(prev_text, ';'.s:eol, 0) >= 0 " L ends with a semicolon
     let stm_lnum = s:PrevNonBlankNonComment(lnum)
     while stm_lnum > 0
index ebf0aaff115cb2fcec49de155b84ba1fb43fb7a7..0e02bd83979dce8b874cc2096dfc9210ef5535cb 100644 (file)
@@ -2,14 +2,12 @@
 " Language:     AVR Assembler (AVRA)
 " AVRA Home:    http://avra.sourceforge.net/index.html
 " AVRA Version: 1.3.0
+" Last Update: 2016 Oct 7
 " Maintainer:    Marius Ghita <mhitza@gmail.com>
 
 let s:cpo_save = &cpo
 set cpo&vim
 
-setlocal iskeyword=a-z,A-Z,48-57,.,_
-" 'isident' is a global option, better not set it
-" setlocal isident=a-z,A-Z,48-57,.,_
 syn case ignore
 
 syn keyword avraRegister r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14