aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/autoload/zip.vim70
-rw-r--r--runtime/doc/options.txt6
-rw-r--r--runtime/doc/pi_zip.txt28
-rw-r--r--runtime/doc/syntax.txt4
-rw-r--r--runtime/filetype.vim5
-rw-r--r--runtime/plugin/zipPlugin.vim8
-rw-r--r--runtime/syntax/python.vim34
7 files changed, 120 insertions, 35 deletions
diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim
index 687500ebe3..824af01fe8 100644
--- a/runtime/autoload/zip.vim
+++ b/runtime/autoload/zip.vim
@@ -1,7 +1,7 @@
" zip.vim: Handles browsing zipfiles
" AUTOLOAD PORTION
-" Date: Jul 02, 2013
-" Version: 27
+" Date: Sep 13, 2016
+" Version: 28
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005-2013 Charles E. Campbell {{{1
@@ -20,10 +20,10 @@
if &cp || exists("g:loaded_zip")
finish
endif
-let g:loaded_zip= "v27"
+let g:loaded_zip= "v28"
if v:version < 702
echohl WarningMsg
- echo "***warning*** this version of zip needs vim 7.2"
+ echo "***warning*** this version of zip needs vim 7.2 or later"
echohl Normal
finish
endif
@@ -53,6 +53,9 @@ endif
if !exists("g:zip_unzipcmd")
let g:zip_unzipcmd= "unzip"
endif
+if !exists("g:zip_extractcmd")
+ let g:zip_extractcmd= g:zip_unzipcmd
+endif
" ----------------
" Functions: {{{1
@@ -136,8 +139,10 @@ fun! zip#Browse(zipfile)
return
endif
+ " Maps associated with zip plugin
setlocal noma nomod ro
- noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
+ noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
+ noremap <silent> <buffer> x :call zip#Extract()<cr>
let &report= repkeep
" call Dret("zip#Browse")
@@ -204,6 +209,15 @@ fun! zip#Read(fname,mode)
endif
" call Decho("zipfile<".zipfile.">")
" call Decho("fname <".fname.">")
+ " sanity check
+ if !executable(substitute(g:zip_unzipcmd,'\s\+.*$','',''))
+ redraw!
+ echohl Error | echo "***error*** (zip#Read) sorry, your system doesn't appear to have the ".g:zip_unzipcmd." program" | echohl None
+" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+ let &report= repkeep
+" call Dret("zip#Write")
+ return
+ endif
" the following code does much the same thing as
" exe "keepj sil! r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fnameescape(fname),1)
@@ -236,9 +250,9 @@ fun! zip#Write(fname)
set report=10
" sanity checks
- if !executable(g:zip_zipcmd)
+ if !executable(substitute(g:zip_zipcmd,'\s\+.*$','',''))
redraw!
- echohl Error | echo "***error*** (zip#Write) sorry, your system doesn't appear to have the zip pgm" | echohl None
+ echohl Error | echo "***error*** (zip#Write) sorry, your system doesn't appear to have the ".g:zip_zipcmd." program" | echohl None
" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep
" call Dret("zip#Write")
@@ -345,6 +359,48 @@ fun! zip#Write(fname)
endfun
" ---------------------------------------------------------------------
+" zip#Extract: extract a file from a zip archive {{{2
+fun! zip#Extract()
+" call Dfunc("zip#Extract()")
+
+ let repkeep= &report
+ set report=10
+ let fname= getline(".")
+" call Decho("fname<".fname.">")
+
+ " sanity check
+ if fname =~ '^"'
+ let &report= repkeep
+" call Dret("zip#Extract")
+ return
+ endif
+ if fname =~ '/$'
+ redraw!
+ echohl Error | echo "***error*** (zip#Extract) Please specify a file, not a directory" | echohl None
+ let &report= repkeep
+" call Dret("zip#Extract")
+ return
+ endif
+
+ " extract the file mentioned under the cursor
+" call Decho("system(".g:zip_extractcmd." ".shellescape(b:zipfile)." ".shellescape(shell).")")
+ call system(g:zip_extractcmd." ".shellescape(b:zipfile)." ".shellescape(shell))
+" call Decho("zipfile<".b:zipfile.">")
+ if v:shell_error != 0
+ echohl Error | echo "***error*** ".g:zip_extractcmd." ".b:zipfile." ".fname.": failed!" | echohl NONE
+ elseif !filereadable(fname)
+ echohl Error | echo "***error*** attempted to extract ".fname." but it doesn't appear to be present!"
+ else
+ echo "***note*** successfully extracted ".fname
+ endif
+
+ " restore option
+ let &report= repkeep
+
+" call Dret("zip#Extract")
+endfun
+
+" ---------------------------------------------------------------------
" s:Escape: {{{2
fun! s:Escape(fname,isfilt)
" call Dfunc("QuoteFileDir(fname<".a:fname."> isfilt=".a:isfilt.")")
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index cef01eb27b..266ceb9136 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -2092,7 +2092,7 @@ A jump table for the options with a short description can be found at |Q_op|.
uhex Show unprintable characters hexadecimal as <xx>
instead of using ^C and ~C.
- When neither "lastline" or "truncate" is included, a last line that
+ When neither "lastline" nor "truncate" is included, a last line that
doesn't fit is replaced with "@" lines.
*'eadirection'* *'ead'*
@@ -4889,7 +4889,9 @@ A jump table for the options with a short description can be found at |Q_op|.
ordering. This is for preferences to overrule or add to the
distributed defaults or system-wide settings (rarely needed).
- More entries are added when using |packages|.
+ More entries are added when using |packages|. If it gets very long
+ then `:set rtp` will be truncated, use `:echo &rtp` to see the full
+ string.
Note that, unlike 'path', no wildcards like "**" are allowed. Normal
wildcards are allowed, but can significantly slow down searching for
diff --git a/runtime/doc/pi_zip.txt b/runtime/doc/pi_zip.txt
index 64f0be1a08..c20bda1fa1 100644
--- a/runtime/doc/pi_zip.txt
+++ b/runtime/doc/pi_zip.txt
@@ -6,7 +6,7 @@
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
-Copyright: Copyright (C) 2005-2012 Charles E Campbell *zip-copyright*
+Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
The VIM LICENSE (see |copyright|) applies to the files in this
package, including zipPlugin.vim, zip.vim, and pi_zip.vim. except use
"zip.vim" instead of "VIM". Like anything else that's free, zip.vim
@@ -33,6 +33,9 @@ Copyright: Copyright (C) 2005-2012 Charles E Campbell *zip-copyright*
also write to the file. Currently, one may not make a new file in
zip archives via the plugin.
+ *zip-x*
+ x : may extract a listed file when the cursor is atop it
+
OPTIONS
*g:zip_nomax*
@@ -61,6 +64,11 @@ Copyright: Copyright (C) 2005-2012 Charles E Campbell *zip-copyright*
file; by default: >
let g:zip_zipcmd= "zip"
<
+ *g:zip_extractcmd*
+ This option specifies the program (and any options needed) used to
+ extract a file from a zip archive. By default, >
+ let g:zip_extractcmd= g:zip_unzipcmd
+<
PREVENTING LOADING~
If for some reason you do not wish to use vim to examine zipped files,
@@ -83,8 +91,26 @@ Copyright: Copyright (C) 2005-2012 Charles E Campbell *zip-copyright*
One can simply extend this line to accommodate additional extensions that
should be treated as zip files.
+ Alternatively, one may change *g:zipPlugin_ext* in one's .vimrc.
+ Currently (11/30/15) it holds: >
+
+ let g:zipPlugin_ext= '*.zip,*.jar,*.xpi,*.ja,*.war,*.ear,*.celzip,
+ \ *.oxt,*.kmz,*.wsz,*.xap,*.docx,*.docm,*.dotx,*.dotm,*.potx,*.potm,
+ \ *.ppsx,*.ppsm,*.pptx,*.pptm,*.ppam,*.sldx,*.thmx,*.xlam,*.xlsx,*.xlsm,
+ \ *.xlsb,*.xltx,*.xltm,*.xlam,*.crtx,*.vdw,*.glox,*.gcsx,*.gqsx,*.epub'
+
==============================================================================
4. History *zip-history* {{{1
+ v28 Oct 08, 2014 * changed the sanity checks for executables to reflect
+ the command actually to be attempted in zip#Read()
+ and zip#Write()
+ * added the extraction of a file capability
+ Nov 30, 2015 * added *.epub to the |g:zipPlugin_ext| list
+ Sep 13, 2016 * added *.apk to the |g:zipPlugin_ext| list and
+ sorted the suffices.
+ v27 Jul 02, 2013 * sanity check: zipfile must have "PK" as its first
+ two bytes.
+ * modified to allow zipfile: entries in quickfix lists
v26 Nov 15, 2012 * (Jason Spiro) provided a lot of new extensions that
are synonyms for .zip
v25 Jun 27, 2011 * using keepj with unzip -Z
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 123ae0cc72..e3da736489 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -3496,8 +3496,8 @@ SYNTAX ISKEYWORD SETTING *:syn-iskeyword*
and also determines where |:syn-keyword| will be checked for a new
match.
- It is recommended when writing syntax files, to use this command
- to the correct value for the specific syntax language and not change
+ It is recommended when writing syntax files, to use this command to
+ set the correct value for the specific syntax language and not change
the 'iskeyword' option.
DEFINING KEYWORDS *:syn-keyword*
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 43155aa27e..d2b770d3af 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2016 Aug 26
+" Last Change: 2016 Sep 15
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -672,6 +672,9 @@ au BufNewFile,BufRead *.dts,*.dtsi setf dts
" EDIF (*.edf,*.edif,*.edn,*.edo)
au BufNewFile,BufRead *.ed\(f\|if\|n\|o\) setf edif
+" EditorConfig (close enough to dosini)
+au BufNewFile,BufRead .editorconfig setf dosini
+
" Embedix Component Description
au BufNewFile,BufRead *.ecd setf ecd
diff --git a/runtime/plugin/zipPlugin.vim b/runtime/plugin/zipPlugin.vim
index e9bd0dc4bd..c04d5344b1 100644
--- a/runtime/plugin/zipPlugin.vim
+++ b/runtime/plugin/zipPlugin.vim
@@ -1,9 +1,9 @@
" zipPlugin.vim: Handles browsing zipfiles
" PLUGIN PORTION
-" Date: Jun 07, 2013
+" Date: Sep 13, 2016
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" License: Vim License (see vim's :help license)
-" Copyright: Copyright (C) 2005-2013 Charles E. Campbell {{{1
+" Copyright: Copyright (C) 2005-2016 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@@ -20,14 +20,14 @@
if &cp || exists("g:loaded_zipPlugin")
finish
endif
-let g:loaded_zipPlugin = "v27"
+let g:loaded_zipPlugin = "v28"
let s:keepcpo = &cpo
set cpo&vim
" ---------------------------------------------------------------------
" Options: {{{1
if !exists("g:zipPlugin_ext")
- let g:zipPlugin_ext= '*.zip,*.jar,*.xpi,*.ja,*.war,*.ear,*.celzip,*.oxt,*.kmz,*.wsz,*.xap,*.docx,*.docm,*.dotx,*.dotm,*.potx,*.potm,*.ppsx,*.ppsm,*.pptx,*.pptm,*.ppam,*.sldx,*.thmx,*.xlam,*.xlsx,*.xlsm,*.xlsb,*.xltx,*.xltm,*.xlam,*.crtx,*.vdw,*.glox,*.gcsx,*.gqsx'
+ let g:zipPlugin_ext='*.apk,*.celzip,*.crtx,*.docm,*.docx,*.dotm,*.dotx,*.ear,*.epub,*.gcsx,*.glox,*.gqsx,*.ja,*.jar,*.kmz,*.oxt,*.potm,*.potx,*.ppam,*.ppsm,*.ppsx,*.pptm,*.pptx,*.sldx,*.thmx,*.vdw,*.war,*.wsz,*.xap,*.xlam,*.xlam,*.xlsb,*.xlsm,*.xlsx,*.xltm,*.xltx,*.xpi,*.zip'
endif
" ---------------------------------------------------------------------
diff --git a/runtime/syntax/python.vim b/runtime/syntax/python.vim
index 38bea3eefe..f258184b52 100644
--- a/runtime/syntax/python.vim
+++ b/runtime/syntax/python.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Python
" Maintainer: Zvezdan Petkovic <zpetkovic@acm.org>
-" Last Change: 2016 Aug 14
+" Last Change: 2016 Sep 14
" Credits: Neil Schemenauer <nas@python.ca>
" Dmitry Vasiliev
"
@@ -88,14 +88,14 @@ syn keyword pythonAsync async await
" followed by decorator name, optional parenthesized list of arguments,
" and the next line with either def, class, or another decorator.
syn match pythonDecorator
- \ "\%(\%(^\s*\)\%(\%(>>>\|\.\.\.\)\s\+\)\=\)\zs@\%(\s*\h\%(\w\|\.\)*\%(([^)]*)\)\=\s*\n\s*\%(\.\.\.\s\+\)\=\%(@\s*\h\|\%(def\|class\)\s\+\)\)\@="
+ \ "\%(\%(^\s*\)\%(\%(>>>\|\.\.\.\)\s\+\)\=\)\zs@\%(\s*\h\%(\w\|\.\)*\s*\%((\_\s\{-}[^)]\_.\{-})\s*\)\=\%(#.*\)\=\n\s*\%(\.\.\.\s\+\)\=\%(@\s*\h\|\%(def\|class\)\s\+\)\)\@="
\ display nextgroup=pythonDecoratorName skipwhite
" A dot must be allowed because of @MyClass.myfunc decorators.
" It must be preceded by a decorator symbol and on a separate line from
" a function/class it decorates.
syn match pythonDecoratorName
- \ "\%(@\s*\)\@<=\h\%(\w\|\.\)*\%(\%(([^)]*)\)\=\s*\n\)\@="
+ \ "\%(@\s*\)\@<=\h\%(\w\|\.\)*\%(\s*\%((\_\s\{-}[^)]\_.\{-})\s*\)\=\%(#.*\)\=\n\)\@="
\ contained display nextgroup=pythonFunction skipnl
" The zero-length non-grouping match of def or class before the function
@@ -289,43 +289,41 @@ endif
" Sync at the beginning of class, function, or method definition.
syn sync match pythonSync grouphere NONE "^\s*\%(def\|class\)\s\+\h\w*\s*("
-
" The default highlight links. Can be overridden later.
-hi def link pythonStatement Statement
-hi def link pythonConditional Conditional
+hi def link pythonStatement Statement
+hi def link pythonConditional Conditional
hi def link pythonRepeat Repeat
hi def link pythonOperator Operator
-hi def link pythonException Exception
+hi def link pythonException Exception
hi def link pythonInclude Include
-hi def link pythonAsync Statement
-hi def link pythonDecorator Define
-hi def link pythonDecoratorName Function
+hi def link pythonAsync Statement
+hi def link pythonDecorator Define
+hi def link pythonDecoratorName Function
hi def link pythonFunction Function
hi def link pythonComment Comment
-hi def link pythonTodo Todo
+hi def link pythonTodo Todo
hi def link pythonString String
-hi def link pythonRawString String
+hi def link pythonRawString String
hi def link pythonQuotes String
-hi def link pythonTripleQuotes pythonQuotes
+hi def link pythonTripleQuotes pythonQuotes
hi def link pythonEscape Special
if !exists("python_no_number_highlight")
hi def link pythonNumber Number
endif
if !exists("python_no_builtin_highlight")
- hi def link pythonBuiltin Function
+ hi def link pythonBuiltin Function
endif
if !exists("python_no_exception_highlight")
- hi def link pythonExceptions Structure
+ hi def link pythonExceptions Structure
endif
if exists("python_space_error_highlight")
- hi def link pythonSpaceError Error
+ hi def link pythonSpaceError Error
endif
if !exists("python_no_doctest_highlight")
- hi def link pythonDoctest Special
+ hi def link pythonDoctest Special
hi def link pythonDoctestValue Define
endif
-
let b:current_syntax = "python"
let &cpo = s:cpo_save