Added not added new plugin files
This commit is contained in:
parent
e9aac9794b
commit
99a31080d1
42 changed files with 6063 additions and 0 deletions
|
@ -0,0 +1,44 @@
|
|||
" =============================================================================
|
||||
" Filename: autoload/lightline/colorscheme/OldHope.vim
|
||||
" Author: tomb0y
|
||||
" License: MIT License
|
||||
" Last Change: 2017/10/15 06:20:54.
|
||||
" =============================================================================
|
||||
|
||||
let s:yellow = [ '#e5cd52' , 221 ]
|
||||
let s:blue = [ '#4fb4d8' , 39 ]
|
||||
let s:red = [ '#f92672' , 161 ]
|
||||
let s:green = [ '#78bd65' , 41 ]
|
||||
let s:orange = [ '#ef7c2a' , 202 ]
|
||||
let s:white = [ '#ffffff' , 15 ]
|
||||
let s:lightGray = [ '#848794' , 245 ]
|
||||
let s:gray = [ '#686b78' , 242 ]
|
||||
let s:darkGray = [ '#45474f' , 238 ]
|
||||
let s:veryDarkGray = [ '#1c1d21' , 234 ]
|
||||
|
||||
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
|
||||
|
||||
let s:p.normal.left = [ [ s:white, s:blue ], [ s:white, s:gray ] ]
|
||||
let s:p.insert.left = [ [ s:white, s:green ], [ s:white, s:gray ] ]
|
||||
let s:p.visual.left = [ [ s:white, s:orange ], [ s:white, s:gray ] ]
|
||||
let s:p.replace.left = [ [ s:white, s:red ], [ s:white, s:gray ] ]
|
||||
|
||||
let s:p.inactive.right = [ [ s:darkGray, s:gray ], [ s:darkGray, s:gray ] ]
|
||||
let s:p.inactive.left = [ [ s:lightGray, s:darkGray ], [ s:white, s:darkGray ] ]
|
||||
let s:p.inactive.middle = [ [ s:white, s:darkGray ] ]
|
||||
|
||||
let s:p.normal.middle = [ [ s:white, s:darkGray ] ]
|
||||
let s:p.normal.error = [ [ s:red, s:darkGray ] ]
|
||||
let s:p.normal.warning = [ [ s:orange, s:darkGray ] ]
|
||||
|
||||
let s:p.tabline.left = [ [ s:lightGray, s:darkGray ] ]
|
||||
let s:p.tabline.tabsel = [ [ s:darkGray, s:yellow ] ]
|
||||
let s:p.tabline.middle = [ [ s:yellow, s:veryDarkGray ] ]
|
||||
|
||||
let s:p.normal.right = copy(s:p.normal.left)
|
||||
let s:p.insert.right = copy(s:p.insert.left)
|
||||
let s:p.visual.right = copy(s:p.visual.left)
|
||||
let s:p.replace.right = copy(s:p.replace.left)
|
||||
let s:p.tabline.right = copy(s:p.tabline.left)
|
||||
|
||||
let g:lightline#colorscheme#OldHope#palette = lightline#colorscheme#flatten(s:p)
|
|
@ -0,0 +1,63 @@
|
|||
" =============================================================================
|
||||
" Filename: autoload/lightline/colorscheme/materia.vim
|
||||
" Author: Lokesh Krishna
|
||||
" License: MIT License
|
||||
" Last Change: 2017/10/21 11:32:27.
|
||||
" =============================================================================
|
||||
|
||||
" Common colors
|
||||
let s:fg = '#d5dbe5'
|
||||
let s:blue = '#89ddff'
|
||||
let s:green = '#8bd649'
|
||||
let s:purple = '#82aaff'
|
||||
let s:red1 = '#ec5f67'
|
||||
let s:red2 = '#ec5f67'
|
||||
let s:yellow = '#ffcc00'
|
||||
|
||||
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
|
||||
|
||||
if &background ==# 'light'
|
||||
" Light variant
|
||||
let s:bg = '#ffffff'
|
||||
let s:gray1 = '#2c393f'
|
||||
let s:gray2 = '#d5dbe5'
|
||||
let s:gray3 = '#707880'
|
||||
|
||||
let s:p.normal.left = [ [ s:bg, s:green, 'bold' ], [ s:gray1, s:gray3 ] ]
|
||||
let s:p.normal.middle = [ [ s:gray1, s:gray2 ] ]
|
||||
let s:p.inactive.left = [ [ s:bg, s:gray3 ], [ s:bg, s:gray3 ] ]
|
||||
let s:p.inactive.middle = [ [ s:gray3, s:gray2 ] ]
|
||||
let s:p.inactive.right = [ [ s:bg, s:gray3 ], [ s:bg, s:gray3 ] ]
|
||||
let s:p.insert.left = [ [ s:bg, s:blue, 'bold' ], [ s:gray1, s:gray3 ] ]
|
||||
let s:p.replace.left = [ [ s:bg, s:red1, 'bold' ], [ s:gray1, s:gray3 ] ]
|
||||
let s:p.visual.left = [ [ s:bg, s:purple, 'bold' ], [ s:gray1, s:gray3 ] ]
|
||||
else
|
||||
" Dark variant
|
||||
let s:bg = '#263238'
|
||||
let s:gray1 = '#37474f'
|
||||
let s:gray2 = '#2c393f'
|
||||
let s:gray3 = '#37474f'
|
||||
|
||||
let s:p.normal.left = [ [ s:bg, s:green, 'bold' ], [ s:fg, s:gray3 ] ]
|
||||
let s:p.normal.middle = [ [ s:fg, s:gray2 ] ]
|
||||
let s:p.inactive.left = [ [ s:gray1, s:bg ], [ s:gray1, s:bg ] ]
|
||||
let s:p.inactive.middle = [ [ s:gray1, s:gray2 ] ]
|
||||
let s:p.inactive.right = [ [ s:gray1, s:bg ], [ s:gray1, s:bg ] ]
|
||||
let s:p.insert.left = [ [ s:bg, s:blue, 'bold' ], [ s:fg, s:gray3 ] ]
|
||||
let s:p.replace.left = [ [ s:bg, s:red1, 'bold' ], [ s:fg, s:gray3 ] ]
|
||||
let s:p.visual.left = [ [ s:bg, s:purple, 'bold' ], [ s:fg, s:gray3 ] ]
|
||||
endif
|
||||
|
||||
" Common
|
||||
let s:p.normal.right = [ [ s:bg, s:green, 'bold' ], [ s:bg, s:green, 'bold' ] ]
|
||||
let s:p.normal.error = [ [ s:red2, s:bg ] ]
|
||||
let s:p.normal.warning = [ [ s:yellow, s:bg ] ]
|
||||
let s:p.insert.right = [ [ s:bg, s:blue, 'bold' ], [ s:bg, s:blue, 'bold' ] ]
|
||||
let s:p.replace.right = [ [ s:bg, s:red1, 'bold' ], [ s:bg, s:red1, 'bold' ] ]
|
||||
let s:p.visual.right = [ [ s:bg, s:purple, 'bold' ], [ s:bg, s:purple, 'bold' ] ]
|
||||
let s:p.tabline.left = [ [ s:bg, s:gray3 ] ]
|
||||
let s:p.tabline.tabsel = [ [ s:bg, s:purple, 'bold' ] ]
|
||||
let s:p.tabline.middle = [ [ s:gray3, s:gray2 ] ]
|
||||
let s:p.tabline.right = copy(s:p.normal.right)
|
||||
|
||||
let g:lightline#colorscheme#materia#palette = lightline#colorscheme#fill(s:p)
|
|
@ -0,0 +1,63 @@
|
|||
" =============================================================================
|
||||
" Filename: autoload/lightline/colorscheme/material.vim
|
||||
" Author: Lokesh Krishna
|
||||
" License: MIT License
|
||||
" Last Change: 2017/10/30 16:35:27.
|
||||
" =============================================================================
|
||||
|
||||
" Common colors
|
||||
let s:fg = '#eeffff'
|
||||
let s:blue = '#82aaff'
|
||||
let s:green = '#c3e88d'
|
||||
let s:purple = '#c792ea'
|
||||
let s:red1 = '#f07178'
|
||||
let s:red2 = '#ff5370'
|
||||
let s:yellow = '#ffcb6b'
|
||||
|
||||
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
|
||||
|
||||
if &background ==# 'light'
|
||||
" Light variant
|
||||
let s:bg = '#ffffff'
|
||||
let s:gray1 = '#2e3c43'
|
||||
let s:gray2 = '#eeffff'
|
||||
let s:gray3 = '#546e7a'
|
||||
|
||||
let s:p.normal.left = [ [ s:bg, s:blue, 'bold' ], [ s:gray1, s:gray3 ] ]
|
||||
let s:p.normal.middle = [ [ s:gray1, s:gray2 ] ]
|
||||
let s:p.inactive.left = [ [ s:bg, s:gray3 ], [ s:bg, s:gray3 ] ]
|
||||
let s:p.inactive.middle = [ [ s:gray3, s:gray2 ] ]
|
||||
let s:p.inactive.right = [ [ s:bg, s:gray3 ], [ s:bg, s:gray3 ] ]
|
||||
let s:p.insert.left = [ [ s:bg, s:green, 'bold' ], [ s:gray1, s:gray3 ] ]
|
||||
let s:p.replace.left = [ [ s:bg, s:red1, 'bold' ], [ s:gray1, s:gray3 ] ]
|
||||
let s:p.visual.left = [ [ s:bg, s:purple, 'bold' ], [ s:gray1, s:gray3 ] ]
|
||||
else
|
||||
" Dark variant
|
||||
let s:bg = '#263238'
|
||||
let s:gray1 = '#314549'
|
||||
let s:gray2 = '#2E3C43'
|
||||
let s:gray3 = '#314549'
|
||||
|
||||
let s:p.normal.left = [ [ s:bg, s:blue, 'bold' ], [ s:fg, s:gray3 ] ]
|
||||
let s:p.normal.middle = [ [ s:fg, s:gray2 ] ]
|
||||
let s:p.inactive.left = [ [ s:gray1, s:bg ], [ s:gray1, s:bg ] ]
|
||||
let s:p.inactive.middle = [ [ s:gray1, s:gray2 ] ]
|
||||
let s:p.inactive.right = [ [ s:gray1, s:bg ], [ s:gray1, s:bg ] ]
|
||||
let s:p.insert.left = [ [ s:bg, s:green, 'bold' ], [ s:fg, s:gray3 ] ]
|
||||
let s:p.replace.left = [ [ s:bg, s:red1, 'bold' ], [ s:fg, s:gray3 ] ]
|
||||
let s:p.visual.left = [ [ s:bg, s:purple, 'bold' ], [ s:fg, s:gray3 ] ]
|
||||
endif
|
||||
|
||||
" Common
|
||||
let s:p.normal.right = [ [ s:bg, s:blue, 'bold' ], [ s:bg, s:blue, 'bold' ] ]
|
||||
let s:p.normal.error = [ [ s:red2, s:bg ] ]
|
||||
let s:p.normal.warning = [ [ s:yellow, s:bg ] ]
|
||||
let s:p.insert.right = [ [ s:bg, s:green, 'bold' ], [ s:bg, s:green, 'bold' ] ]
|
||||
let s:p.replace.right = [ [ s:bg, s:red1, 'bold' ], [ s:bg, s:red1, 'bold' ] ]
|
||||
let s:p.visual.right = [ [ s:bg, s:purple, 'bold' ], [ s:bg, s:purple, 'bold' ] ]
|
||||
let s:p.tabline.left = [ [ s:fg, s:gray3 ] ]
|
||||
let s:p.tabline.tabsel = [ [ s:bg, s:purple, 'bold' ] ]
|
||||
let s:p.tabline.middle = [ [ s:gray3, s:gray2 ] ]
|
||||
let s:p.tabline.right = [ [ s:bg, s:red1, 'bold' ] ]
|
||||
|
||||
let g:lightline#colorscheme#material#palette = lightline#colorscheme#fill(s:p)
|
|
@ -0,0 +1,46 @@
|
|||
" =============================================================================
|
||||
" Filename: autoload/lightline/colorscheme/nord.vim
|
||||
" Author: arcticicestudio
|
||||
" License: MIT
|
||||
" Last Change: 2017/11/12 20:27:51
|
||||
" =============================================================================
|
||||
|
||||
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
|
||||
|
||||
let s:nord0 = ["#2E3440", "NONE"]
|
||||
let s:nord1 = ["#3B4252", 0]
|
||||
let s:nord2 = ["#434C5E", "NONE"]
|
||||
let s:nord3 = ["#4C566A", 8]
|
||||
let s:nord4 = ["#D8DEE9", "NONE"]
|
||||
let s:nord5 = ["#E5E9F0", 7]
|
||||
let s:nord6 = ["#ECEFF4", 15]
|
||||
let s:nord7 = ["#8FBCBB", 14]
|
||||
let s:nord8 = ["#88C0D0", 6]
|
||||
let s:nord9 = ["#81A1C1", 4]
|
||||
let s:nord10 = ["#5E81AC", 12]
|
||||
let s:nord11 = ["#BF616A", 1]
|
||||
let s:nord12 = ["#D08770", 11]
|
||||
let s:nord13 = ["#EBCB8B", 3]
|
||||
let s:nord14 = ["#A3BE8C", 2]
|
||||
let s:nord15 = ["#B48EAD", 5]
|
||||
|
||||
let s:p.normal.left = [ [ s:nord1, s:nord8 ], [ s:nord5, s:nord1 ] ]
|
||||
let s:p.normal.middle = [ [ s:nord5, s:nord3 ] ]
|
||||
let s:p.normal.right = [ [ s:nord5, s:nord1 ], [ s:nord5, s:nord1 ] ]
|
||||
let s:p.normal.warning = [ [ s:nord1, s:nord13 ] ]
|
||||
let s:p.normal.error = [ [ s:nord1, s:nord11 ] ]
|
||||
|
||||
let s:p.inactive.left = [ [ s:nord1, s:nord8 ], [ s:nord5, s:nord1 ] ]
|
||||
let s:p.inactive.middle = [ [ s:nord5, s:nord0 ] ]
|
||||
let s:p.inactive.right = [ [ s:nord5, s:nord1 ], [ s:nord5, s:nord1 ] ]
|
||||
|
||||
let s:p.insert.left = [ [ s:nord1, s:nord6 ], [ s:nord5, s:nord1 ] ]
|
||||
let s:p.replace.left = [ [ s:nord1, s:nord13 ], [ s:nord5, s:nord1 ] ]
|
||||
let s:p.visual.left = [ [ s:nord1, s:nord7 ], [ s:nord5, s:nord1 ] ]
|
||||
|
||||
let s:p.tabline.left = [ [ s:nord5, s:nord3 ] ]
|
||||
let s:p.tabline.middle = [ [ s:nord5, s:nord3 ] ]
|
||||
let s:p.tabline.right = [ [ s:nord5, s:nord3 ] ]
|
||||
let s:p.tabline.tabsel = [ [ s:nord1, s:nord8 ] ]
|
||||
|
||||
let g:lightline#colorscheme#nord#palette = lightline#colorscheme#flatten(s:p)
|
19
sources_non_forked/nginx.vim/CHANGELOG.md
Normal file
19
sources_non_forked/nginx.vim/CHANGELOG.md
Normal file
|
@ -0,0 +1,19 @@
|
|||
nginx.vim CHANGELOG
|
||||
=====================
|
||||
|
||||
This file is used to list changes made in each version of the [nginx](https://github.com/chr4/nginx.vim) plugin for the [Vim](http://www.vim.org/) editor.
|
||||
|
||||
1.1.0
|
||||
-----
|
||||
|
||||
- Do not highlight `SHA` ciphers, as usage as HMAC is still considered secure
|
||||
|
||||
1.0.1
|
||||
-----
|
||||
|
||||
- Highlight `gzip on` as insecure (as it might be vulnerable to BREACH/ CRIME)
|
||||
|
||||
1.0.0
|
||||
-----
|
||||
|
||||
- Initial release
|
675
sources_non_forked/nginx.vim/LICENSE
Normal file
675
sources_non_forked/nginx.vim/LICENSE
Normal file
|
@ -0,0 +1,675 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
Vim plugin that highlights insecure SSL/TLS cipher suites and protocols.
|
||||
Copyright (C) 2017 Chris Aumann
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
nginx.vim Copyright (C) 2017 Chris Aumann
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
92
sources_non_forked/nginx.vim/README.md
Normal file
92
sources_non_forked/nginx.vim/README.md
Normal file
|
@ -0,0 +1,92 @@
|
|||
# nginx.vim
|
||||
|
||||
## Description
|
||||
[Vim](http://www.vim.org/) plugin for [Nginx](http://www.nginx.org)
|
||||
|
||||
## Features
|
||||
The plugin is based on the recent vim-plugin distributed with `nginx-1.12.0` and additionally features the following syntax improvements:
|
||||
|
||||
- Highlight IPv4 and IPv6 addresses
|
||||
- Mark insecure `ssl_protocols` as errors
|
||||
- Inline template syntax highlight for **ERB** and **Jinja**
|
||||
- Inline syntax highlight for **LUA**
|
||||
- Improve integer matching
|
||||
- Syntax highlighting for `proxy_next_upstream` options
|
||||
- Syntax highlighting for `sticky` options
|
||||
- Syntax highlighting for `upstream` `server` options
|
||||
- More to come!
|
||||
|
||||
Furthermore:
|
||||
|
||||
- Remove annoying delimiters, resulting in strange word-boundaries
|
||||
|
||||
*Note: Also check out [sslsecure.vim](https://github.com/chr4/sslsecure.vim): it supports highlighting insecure SSL/TLS cipher suites and protocols in all your files!*
|
||||
|
||||
|
||||
## Screenshots
|
||||
A `server` block with highlighting of insecure `ssl_protocol` options:
|
||||
![nginx server block with SSL configuration](https://chr4.org/images/nginx_ssl.png)
|
||||
|
||||
An `upstream` block with highlighted options:
|
||||
![nginx upstream configuration](https://chr4.org/images/nginx_upstream.png)
|
||||
|
||||
Embedded highlighting for ERB and Jinja templates:
|
||||
![Embedded highlighting for ERB and Jinja templates](https://chr4.org/images/nginx_templating.png)
|
||||
|
||||
Embedded LUA syntax highlighting:
|
||||
![Embedded LUA syntax highlighting](https://chr4.org/images/nginx_lua.png)
|
||||
|
||||
|
||||
## Snippets
|
||||
The plugin comes with useful snippets which can be accessed using e.g. [vim-snipmate](https://github.com/garbas/vim-snipmate).
|
||||
|
||||
Select a decent cipher for your requirements (all of them can provide [SSLLabs A+ ratings](https://www.ssllabs.com/ssltest/analyze.html))
|
||||
|
||||
- `ciphers-paranoid<tab>`: Even-more-secure ciphers (elliptic curves, no GCM), not compatible with IE < 11, OpenSSL-0.9.8, Safari < 7, Android != 4.4
|
||||
- **`ciphers-modern<tab>`: High-security ciphers (elliptic curves), not compatible with IE < 11, OpenSSL-0.9.8, Safari < 7, Android < 4.4 (recommended)**
|
||||
- `ciphers-compat<tab>`: Medium-security ciphers with good compatibility (No IE on WinXP) but TLSv1 and SHA required
|
||||
- `ciphers-old<tab>`: Low-security ciphers (using weak DES and SHA ciphers, TLSv1), but compatible with everything but IE6 and Java6
|
||||
- `ssl-options<tab>`: Bootstrap secure SSL options
|
||||
|
||||
Example:
|
||||
```nginx
|
||||
# High-security ciphers (elliptic curves), less compatibility
|
||||
# No IE < 10, OpenSSL-0.9.8, Safari < 7, Android < 4.4
|
||||
ssl_protocols TLSv1.1 TLSv1.2;
|
||||
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
|
||||
```
|
||||
|
||||
Or add a robots.txt file with `robots.txt<tab>`:
|
||||
```nginx
|
||||
# Tell bots to not index this site
|
||||
location /robots.txt {
|
||||
default_type text/plain;
|
||||
return 200 'User-agent: *\nDisallow: /\n';
|
||||
}
|
||||
```
|
||||
|
||||
It also has auto-completion for location and server blocks with `location<tab>` resp. `server<tab>`, and [many more](https://github.com/chr4/nginx.vim/blob/master/snippets/nginx.snippets)!
|
||||
|
||||
- Add useful [snippets](https://github.com/chr4/nginx.vim/blob/master/snippets/nginx.snippets)
|
||||
|
||||
## References
|
||||
- Based on the original `nginx-1.12.0/contrib/vim`
|
||||
- IPv4 and IPv6 address highlighting, based on expressions found in [this forum post](http://vim.1045645.n5.nabble.com/IPv6-support-for-quot-dns-quot-zonefile-syntax-highlighting-td1197292.html)
|
||||
- [Blog post](https://chr4.org/blog/2017/04/14/better-syntax-highlighting-and-snippets-for-nginx-in-vim/) introducing this plugin including some more examples
|
||||
|
||||
## Installation
|
||||
|
||||
Just plug it into your favorite Vim package manager:
|
||||
|
||||
```vim
|
||||
" Plug
|
||||
Plug 'chr4/nginx.vim'
|
||||
|
||||
" Dein.vim
|
||||
call dein#add('chr4/nginx.vim')
|
||||
|
||||
" Vundle
|
||||
Plugin 'chr4/nginx.vim'
|
||||
```
|
||||
|
||||
Optionally, if you like [Jinja](http://jinja.pocoo.org/) template syntax highlighting, install `lepture/vim-jinja`, too.
|
5
sources_non_forked/nginx.vim/ftdetect/nginx.vim
Normal file
5
sources_non_forked/nginx.vim/ftdetect/nginx.vim
Normal file
|
@ -0,0 +1,5 @@
|
|||
au BufRead,BufNewFile *.nginx set ft=nginx
|
||||
au BufRead,BufNewFile nginx*.conf set ft=nginx
|
||||
au BufRead,BufNewFile *nginx.conf set ft=nginx
|
||||
au BufRead,BufNewFile */etc/nginx/* set ft=nginx
|
||||
au BufRead,BufNewFile */usr/local/nginx/conf/* set ft=nginx
|
1
sources_non_forked/nginx.vim/ftplugin/nginx.vim
Normal file
1
sources_non_forked/nginx.vim/ftplugin/nginx.vim
Normal file
|
@ -0,0 +1 @@
|
|||
setlocal commentstring=#\ %s
|
11
sources_non_forked/nginx.vim/indent/nginx.vim
Normal file
11
sources_non_forked/nginx.vim/indent/nginx.vim
Normal file
|
@ -0,0 +1,11 @@
|
|||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal indentexpr=
|
||||
|
||||
" cindent actually works for nginx' simple file structure
|
||||
setlocal cindent
|
||||
" Just make sure that the comments are not reset as defs would be.
|
||||
setlocal cinkeys-=0#
|
166
sources_non_forked/nginx.vim/snippets/nginx.snippets
Normal file
166
sources_non_forked/nginx.vim/snippets/nginx.snippets
Normal file
|
@ -0,0 +1,166 @@
|
|||
# vim: ft=nginx
|
||||
snippet l80
|
||||
listen [::]:80 ipv6only=off;
|
||||
$0
|
||||
|
||||
# Listen statements when using multiple http server blocks
|
||||
snippet l80-multi
|
||||
listen [::]:80 default_server;
|
||||
listen 80 default_server;
|
||||
$0
|
||||
|
||||
snippet l443
|
||||
listen [::]:443 ipv6only=off ssl http2 default_server;
|
||||
$0
|
||||
|
||||
# Listen statements when using multiple ssl server blocks
|
||||
snippet l443-multi
|
||||
listen [::]:443 ssl http2 default_server;
|
||||
listen 443 ssl http2 default_server;
|
||||
$0
|
||||
|
||||
# Cipher suites are taken and adapted from Mozilla's recommendations
|
||||
# https://wiki.mozilla.org/Security/Server_Side_TLS
|
||||
#
|
||||
# Paranoid mode
|
||||
snippet ciphers-paranoid
|
||||
# Paranoid ciphers, 256bit minimum, prefer ChaCha20/ Poly1305, bad compatibility
|
||||
# No Android 5+6 (4.4 works), Chrome < 51, Firefox < 49, IE < 11, Java 6-8, GoogleBot
|
||||
ssl_protocols TLSv1.2;
|
||||
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
|
||||
$0
|
||||
|
||||
# Mozilla modern
|
||||
snippet ciphers-modern
|
||||
# High-security ciphers (elliptic curves), less compatibility
|
||||
# No IE < 10, OpenSSL-0.9.8, Safari < 7, Android < 4.4
|
||||
ssl_protocols TLSv1.1 TLSv1.2;
|
||||
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
|
||||
$0
|
||||
|
||||
# Mozilla intermediate (Removed DES for more security)
|
||||
snippet ciphers-compat
|
||||
# Medium-security ciphers with good compatibility (Weak: SHA)
|
||||
# No IE on WinXP
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:!DSS';
|
||||
$0
|
||||
|
||||
# Mozilla old (Removed DSS, HIGH, SEED for more security)
|
||||
snippet ciphers-low
|
||||
# Low-security ciphers (Weak: DES, SHA)
|
||||
# No IE6, Java6
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:DES-CBC3-SHA:!SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!KRB5-DES-CBC3-SHA:!SRP:!DSS';
|
||||
$0
|
||||
|
||||
snippet ssl-options
|
||||
# SSL certificate
|
||||
ssl_certificate /etc/nginx/certs/${4:www.example.com}.crt;
|
||||
ssl_certificate_key /etc/nginx/certs/${5:www.example.com}.key;
|
||||
# ssl_dhparam /etc/nginx/certs/dhparam.pem;
|
||||
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_stapling off;
|
||||
ssl_stapling_verify off;
|
||||
ssl_session_cache 'shared:SSL:10m';
|
||||
ssl_session_tickets off;
|
||||
|
||||
# Enable HSTS (1 year) and some security options
|
||||
add_header Strict-Transport-Security 'max-age=31536000 includeSubDomains; preload;';
|
||||
$0
|
||||
|
||||
snippet security-headers
|
||||
add_header X-Frame-Options 'DENY';
|
||||
add_header X-Content-Type-Options 'nosniff';
|
||||
add_header X-Frame-Options 'SAMEORIGIN';
|
||||
add_header X-XSS-Protection '1; mode=block';
|
||||
add_header X-Robots-Tag 'none';
|
||||
add_header X-Download-Options 'noopen';
|
||||
add_header X-Permitted-Cross-Domain-Policies 'none';
|
||||
$0
|
||||
|
||||
snippet robots.txt
|
||||
# Tell bots to not index this site
|
||||
location /robots.txt {
|
||||
default_type text/plain;
|
||||
return 200 'User-agent: *\nDisallow: /\n';
|
||||
}
|
||||
$0
|
||||
|
||||
snippet basic-auth
|
||||
auth_basic 'Restricted';
|
||||
auth_basic_user_file ${1:/etc/nginx/htpasswd};
|
||||
$0
|
||||
|
||||
snippet proxy_pass
|
||||
proxy_pass_header Date;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_pass http://${1:backend};
|
||||
$0
|
||||
|
||||
snippet php-fpm
|
||||
location ~ \.php$ {
|
||||
include fastcgi_params;
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_intercept_errors on;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_pass ${1:127.0.0.1:9000};
|
||||
}
|
||||
$0
|
||||
|
||||
snippet php-uwsgi
|
||||
location ~ \.php$ {
|
||||
include uwsgi_params;
|
||||
uwsgi_max_temp_file_size 4096m;
|
||||
uwsgi_modifier1 14;
|
||||
uwsgi_read_timeout 900;
|
||||
uwsgi_send_timeout 900;
|
||||
uwsgi_pass ${1:unix:///run/uwsgi/php.sock};
|
||||
}
|
||||
$0
|
||||
|
||||
snippet redirect-ssl
|
||||
location / {
|
||||
return 301 https://$http_host$request_uri;
|
||||
}
|
||||
$0
|
||||
|
||||
snippet redirect-other
|
||||
# Redirect other requested hosts
|
||||
if ($host != '${1:DOMAIN}') {
|
||||
return 301 https://${2:DOMAIN}$request_uri;
|
||||
}
|
||||
$0
|
||||
|
||||
snippet letsencrypt
|
||||
listen [::]:80 ipv6only=off;
|
||||
|
||||
# Serve well-known path for letsencrypt
|
||||
location /.well-known/acme-challenge {
|
||||
root /etc/nginx/certs/acme;
|
||||
default_type text/plain;
|
||||
}
|
||||
|
||||
location / {
|
||||
return 301 https://$http_host$request_uri;
|
||||
}
|
||||
$0
|
||||
|
||||
snippet cut-trailing-slash
|
||||
rewrite ^/(.*)/$ $scheme://$http_host:$server_port/$1 permanent;
|
||||
$0
|
||||
|
||||
snippet location
|
||||
location ${1:/} {
|
||||
${0:${VISUAL}}
|
||||
}
|
||||
|
||||
snippet server
|
||||
server {
|
||||
${0:${VISUAL}}
|
||||
}
|
2304
sources_non_forked/nginx.vim/syntax/nginx.vim
Normal file
2304
sources_non_forked/nginx.vim/syntax/nginx.vim
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,25 @@
|
|||
"============================================================================
|
||||
"File: stylelint.vim
|
||||
"Description: Syntax checking plugin for syntastic using `stylelint`
|
||||
" (https://github.com/stylelint/stylelint).
|
||||
"Maintainer: Tim Carry <tim at pixelastic dot com>
|
||||
"License: This program is free software. It comes without any warranty,
|
||||
" to the extent permitted by applicable law. You can redistribute
|
||||
" it and/or modify it under the terms of the Do What The Fuck You
|
||||
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
"
|
||||
"============================================================================
|
||||
|
||||
if exists('g:loaded_syntastic_html_stylelint_checker')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_syntastic_html_stylelint_checker = 1
|
||||
|
||||
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||
\ 'filetype': 'html',
|
||||
\ 'name': 'stylelint',
|
||||
\ 'redirect': 'css/stylelint'})
|
||||
|
||||
|
||||
" vim: set sw=4 sts=4 et fdm=marker:
|
|
@ -0,0 +1,23 @@
|
|||
"============================================================================
|
||||
"File: stylelint.vim
|
||||
"Description: Syntax checking plugin for syntastic
|
||||
"Maintainer: LCD 47 <lcd047 at gmail dot com>
|
||||
"License: This program is free software. It comes without any warranty,
|
||||
" to the extent permitted by applicable law. You can redistribute
|
||||
" it and/or modify it under the terms of the Do What The Fuck You
|
||||
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
"
|
||||
"============================================================================
|
||||
|
||||
if exists('g:loaded_syntastic_less_stylelint_checker')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_syntastic_less_stylelint_checker = 1
|
||||
|
||||
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||
\ 'filetype': 'less',
|
||||
\ 'name': 'stylelint',
|
||||
\ 'redirect': 'css/stylelint'})
|
||||
|
||||
" vim: set sw=4 sts=4 et fdm=marker:
|
106
sources_non_forked/syntastic/syntax_checkers/perl6/perl6.vim
Normal file
106
sources_non_forked/syntastic/syntax_checkers/perl6/perl6.vim
Normal file
|
@ -0,0 +1,106 @@
|
|||
"============================================================================
|
||||
"File: perl6.vim
|
||||
"Description: Syntax checking plugin for syntastic
|
||||
"Maintainer: Claudio Ramirez <pub.claudio at gmail dot com>
|
||||
"License: This program is free software. It comes without any warranty,
|
||||
" to the extent permitted by applicable law. You can redistribute
|
||||
" it and/or modify it under the terms of the Do What The Fuck You
|
||||
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
"
|
||||
"============================================================================
|
||||
"
|
||||
" Security:
|
||||
"
|
||||
" This checker runs 'perl6 -c' against your file, which in turn executes
|
||||
" any BEGIN and CHECK blocks in your file. This is probably fine if you
|
||||
" wrote the file yourself, but it can be a problem if you're trying to
|
||||
" check third party files. If you are 100% willing to let Vim run the code
|
||||
" in your file, set g:syntastic_enable_perl6_checker to 1 in your vimrc
|
||||
" to enable this
|
||||
" checker:
|
||||
"
|
||||
" let g:syntastic_enable_perl6_checker = 1
|
||||
"
|
||||
" Reference:
|
||||
"
|
||||
" - https://docs.perl6.org/programs/00-running
|
||||
|
||||
if exists('g:loaded_syntastic_perl6_perl6_checker')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_syntastic_perl6_perl6_checker = 1
|
||||
|
||||
if !exists('g:syntastic_perl6_lib_path')
|
||||
let g:syntastic_perl6_lib_path = []
|
||||
endif
|
||||
|
||||
if !exists('g:syntastic_perl6_perl6_sort')
|
||||
let g:syntastic_perl6_perl6_sort = 1
|
||||
endif
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_perl6_perl6_IsAvailable() dict " {{{1
|
||||
" don't call executable() here, to allow things like
|
||||
" let g:syntastic_perl6_perl6_exec = '/usr/bin/env perl6'
|
||||
silent! call syntastic#util#system(self.getExecEscaped() . ' -e ' . syntastic#util#shescape('exit(0)'))
|
||||
return (v:shell_error == 0) && syntastic#util#versionIsAtLeast(self.getVersion(), [2017, 1])
|
||||
endfunction " }}}1
|
||||
|
||||
function! SyntaxCheckers_perl6_perl6_GetHighlightRegex(item) " {{{1
|
||||
let term = matchstr(a:item['text'], '\m''\zs.\{-}\ze''')
|
||||
if term !=# ''
|
||||
return '\V' . escape(term, '\')
|
||||
endif
|
||||
let term = matchstr(a:item['text'], '\m^Undeclared .\+:\W\zs\S\+\ze')
|
||||
if term !=# ''
|
||||
return '\V' . escape(term, '\')
|
||||
endif
|
||||
let term = matchstr(a:item['text'], '\mCould not find \zs.\{-}\ze at')
|
||||
if term !=# ''
|
||||
return '\V' . escape(term, '\')
|
||||
endif
|
||||
let term = matchstr(a:item['text'], '\mCould not find \zs\S\+$')
|
||||
return term !=# '' ? '\V' . escape(term, '\') : ''
|
||||
endfunction " }}}1
|
||||
|
||||
function! SyntaxCheckers_perl6_perl6_GetLocList() dict " {{{1
|
||||
if type(g:syntastic_perl6_lib_path) == type('')
|
||||
call syntastic#log#oneTimeWarn('variable g:syntastic_perl6_lib_path should be a list')
|
||||
let includes = split(g:syntastic_perl6_lib_path, ',')
|
||||
else
|
||||
let includes = copy(syntastic#util#var('perl6_lib_path', []))
|
||||
endif
|
||||
" support for PERL6LIB environment variable
|
||||
if $PERL6LIB !=# ''
|
||||
let includes += split($PERL6LIB, ':')
|
||||
endif
|
||||
call map(includes, '"-I" . v:val')
|
||||
|
||||
let errorformat =
|
||||
\ '%f:%l:%c:%m,' .
|
||||
\ ':%l:%c:%m'
|
||||
|
||||
let makeprg = self.makeprgBuild({ 'args_before': ['-c'] + includes })
|
||||
|
||||
return SyntasticMake({
|
||||
\ 'makeprg': makeprg,
|
||||
\ 'errorformat': errorformat,
|
||||
\ 'env': { 'RAKUDO_EXCEPTIONS_HANDLER': 'JSON' },
|
||||
\ 'defaults': { 'bufnr': bufnr(''), 'type': 'E' },
|
||||
\ 'returns': [0, 1],
|
||||
\ 'preprocess': 'perl6',
|
||||
\ 'postprocess': ['guards', 'iconv'] })
|
||||
endfunction " }}}1
|
||||
|
||||
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||
\ 'filetype': 'perl6',
|
||||
\ 'name': 'perl6',
|
||||
\ 'enable': 'enable_perl6_checker'})
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
" vim: set sw=4 sts=4 et fdm=marker:
|
|
@ -0,0 +1,43 @@
|
|||
"============================================================================
|
||||
"File: solhint.vim
|
||||
"Description: Solidity syntax checker - using solhint
|
||||
"Maintainer: Brett Sun <qisheng.brett.sun@gmail.com>
|
||||
"License: This program is free software. It comes without any warranty,
|
||||
" to the extent permitted by applicable law. You can redistribute
|
||||
" it and/or modify it under the terms of the Do What The Fuck You
|
||||
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
"
|
||||
"============================================================================
|
||||
|
||||
if exists('g:loaded_syntastic_solidity_solhint_checker')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_syntastic_solidity_solhint_checker = 1
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_solidity_solhint_GetLocList() dict
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'args_after': '-f compact' })
|
||||
|
||||
let errorformat =
|
||||
\ '%E%f: line %l\, col %c\, Error - %m,' .
|
||||
\ '%W%f: line %l\, col %c\, Warning - %m'
|
||||
|
||||
return SyntasticMake({
|
||||
\ 'makeprg': makeprg,
|
||||
\ 'errorformat': errorformat,
|
||||
\ 'subtype': 'Style',
|
||||
\ 'returns': [0, 1] })
|
||||
endfunction
|
||||
|
||||
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||
\ 'filetype': 'solidity',
|
||||
\ 'name': 'solhint'})
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
" vim: set sw=4 sts=4 et fdm=marker:
|
|
@ -0,0 +1,43 @@
|
|||
"============================================================================
|
||||
"File: tsqllint.vim
|
||||
"Description: Syntax checking plugin for syntastic
|
||||
"Maintainer: Daniel Walker <dwalker@fifo99.com>
|
||||
"License: This program is free software. It comes without any warranty,
|
||||
" to the extent permitted by applicable law. You can redistribute
|
||||
" it and/or modify it under the terms of the Do What The Fuck You
|
||||
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
"
|
||||
"============================================================================
|
||||
|
||||
if exists('g:loaded_syntastic_sql_tsqllint_checker')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_syntastic_sql_tsqllint_checker = 1
|
||||
|
||||
if exists('g:syntastic_sql_tsqllint_sort')
|
||||
let g:syntastic_sql_tsqllint_sort = 1
|
||||
endif
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_sql_tsqllint_GetLocList() dict
|
||||
let makeprg = self.makeprgBuild({})
|
||||
|
||||
let errorformat = '%f(%l\,%c): %m'
|
||||
|
||||
return SyntasticMake({
|
||||
\ 'makeprg': makeprg,
|
||||
\ 'errorformat': errorformat })
|
||||
endfunction
|
||||
|
||||
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||
\ 'filetype': 'sql',
|
||||
\ 'name': 'tsqllint'})
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
" vim: set sw=4 sts=4 et fdm=marker:
|
1
sources_non_forked/vim-abolish/.gitignore
vendored
Normal file
1
sources_non_forked/vim-abolish/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/doc/tags
|
1
sources_non_forked/vim-abolish/CONTRIBUTING.markdown
Normal file
1
sources_non_forked/vim-abolish/CONTRIBUTING.markdown
Normal file
|
@ -0,0 +1 @@
|
|||
See the [contribution guidelines for pathogen.vim](https://github.com/tpope/vim-pathogen/blob/master/CONTRIBUTING.markdown).
|
150
sources_non_forked/vim-abolish/README.markdown
Normal file
150
sources_non_forked/vim-abolish/README.markdown
Normal file
|
@ -0,0 +1,150 @@
|
|||
# abolish.vim
|
||||
|
||||
I sat on this plugin for 3 years before releasing it, primarily
|
||||
because it's so gosh darn hard to explain. It's three superficially
|
||||
unrelated plugins in one that share a common theme: working with
|
||||
variants of a word.
|
||||
|
||||
## Abbreviation
|
||||
|
||||
I know how to spell "separate". I know how to spell "desperate". My
|
||||
fingers, however, have trouble distinguishing between the two, and I
|
||||
invariably have a 50 percent chance of typing "seperate" or "desparate"
|
||||
each time one of these comes up. At first, I tried abbreviations:
|
||||
|
||||
:iabbrev seperate separate
|
||||
:iabbrev desparate desperate
|
||||
|
||||
But this falls short at the beginning of a sentence.
|
||||
|
||||
:iabbrev Seperate Separate
|
||||
:iabbrev Desparate Desperate
|
||||
|
||||
To be really thorough, we need uppercase too!
|
||||
|
||||
:iabbrev SEPERATE SEPARATE
|
||||
:iabbrev DESPARATE DESPERATE
|
||||
|
||||
Oh, but consider the noun form, and the adverb form!
|
||||
|
||||
:iabbrev seperation separation
|
||||
:iabbrev desparation desperation
|
||||
:iabbrev seperately separately
|
||||
:iabbrev desparately desperately
|
||||
:iabbrev Seperation separation
|
||||
:iabbrev Desparation Desperation
|
||||
:iabbrev Seperately Separately
|
||||
:iabbrev Desparately Desperately
|
||||
:iabbrev SEPERATION SEPARATION
|
||||
:iabbrev DESPARATION DESPERATION
|
||||
:iabbrev SEPERATELY SEPARATELY
|
||||
:iabbrev DESPARATELY DESPERATELY
|
||||
|
||||
Wait, there's also "separates", "separated", "separating",
|
||||
"separations", "separator"...
|
||||
|
||||
Abolish.vim provides a simpler way. The following one command produces
|
||||
48 abbreviations including all of the above.
|
||||
|
||||
:Abolish {despa,sepe}rat{e,es,ed,ing,ely,ion,ions,or} {despe,sepa}rat{}
|
||||
|
||||
My current configuration has 25 Abolish commands that create hundreds of
|
||||
corrections my fingers refuse to learn.
|
||||
|
||||
## Substitution
|
||||
|
||||
One time I had an application with a domain model called
|
||||
"facility" that needed to be renamed to "building". So, a simple
|
||||
search and replace, right?
|
||||
|
||||
:%s/facility/building/g
|
||||
|
||||
Oh, but the case variants!
|
||||
|
||||
:%s/Facility/Building/g
|
||||
:%s/FACILITY/BUILDING/g
|
||||
|
||||
Wait, the plural is more than "s" so we need to get that too!
|
||||
|
||||
:%s/facilities/buildings/g
|
||||
:%s/Facilities/Buildings/g
|
||||
:%s/FACILITIES/BUILDINGS/g
|
||||
|
||||
Abolish.vim has your back. One command to do all six, and you can
|
||||
repeat it with `&` too!
|
||||
|
||||
:%Subvert/facilit{y,ies}/building{,s}/g
|
||||
|
||||
From a conceptual level, one way to think about how this substitution
|
||||
works is to imagine that in the braces you are declaring the
|
||||
requirements for turning that word from singular to plural. In
|
||||
the facility example, the same base letters in both the singular
|
||||
and plural form of the word are `facilit` To turn "facility" to a
|
||||
plural word you must change the `y` to `ies` so you specify
|
||||
`{y,ies}` in the braces.
|
||||
|
||||
To convert the word "building" from singular to plural, again
|
||||
look at the common letters between the singular and plural forms:
|
||||
`building`. In this case you do not need to remove any letter
|
||||
from building to turn it into plural form and you need to
|
||||
add an `s` so the braces should be `{,s}`.
|
||||
|
||||
A few more examples:
|
||||
|
||||
Address to Reference
|
||||
|
||||
:Subvert/address{,es}/reference{,s}/g
|
||||
|
||||
Blog to Post (you can just do this with a regular :s also)
|
||||
|
||||
:Subvert/blog{,s}/post{,s}/g
|
||||
|
||||
Child to Adult
|
||||
|
||||
:Subvert/child{,ren}/adult{,s}/g
|
||||
|
||||
Be amazed as it correctly turns the word children into the word adults!
|
||||
|
||||
Die to Spinner
|
||||
|
||||
:Subvert/di{e,ce}/spinner{,s}/g
|
||||
|
||||
You can abbreviate it as `:S`, and it accepts the full range of flags
|
||||
including things like `c` (confirm).
|
||||
|
||||
There's also a variant for searching and a variant for grepping.
|
||||
|
||||
## Coercion
|
||||
|
||||
Want to turn `fooBar` into `foo_bar`? Press `crs` (coerce to
|
||||
snake\_case). MixedCase (`crm`), camelCase (`crc`), snake\_case
|
||||
(`crs`), UPPER\_CASE (`cru`), dash-case (`cr-`), dot.case (`cr.`),
|
||||
space case (`cr<space>`), and Title Case (`crt`) are all just 3
|
||||
keystrokes away. These commands support
|
||||
[repeat.vim](https://github.com/tpope/vim-repeat).
|
||||
|
||||
## Installation
|
||||
|
||||
If you don't have a preferred installation method, I recommend
|
||||
installing [pathogen.vim](https://github.com/tpope/vim-pathogen), and
|
||||
then simply copy and paste:
|
||||
|
||||
cd ~/.vim/bundle
|
||||
git clone git://github.com/tpope/vim-abolish.git
|
||||
|
||||
Once help tags have been generated, you can view the manual with
|
||||
`:help abolish`.
|
||||
|
||||
## Self-Promotion
|
||||
|
||||
Like abolish.vim? Follow the repository on
|
||||
[GitHub](https://github.com/tpope/vim-abolish) and vote for it on
|
||||
[vim.org](http://www.vim.org/scripts/script.php?script_id=1545). And if
|
||||
you're feeling especially charitable, follow [tpope](http://tpo.pe/) on
|
||||
[Twitter](http://twitter.com/tpope) and
|
||||
[GitHub](https://github.com/tpope).
|
||||
|
||||
## License
|
||||
|
||||
Copyright (c) Tim Pope. Distributed under the same terms as Vim itself.
|
||||
See `:help license`.
|
181
sources_non_forked/vim-abolish/doc/abolish.txt
Normal file
181
sources_non_forked/vim-abolish/doc/abolish.txt
Normal file
|
@ -0,0 +1,181 @@
|
|||
*abolish.txt* Language friendly searches, substitutions, and abbreviations
|
||||
|
||||
Author: Tim Pope <http://tpo.pe/>
|
||||
License: Same terms as Vim itself (see |license|)
|
||||
|
||||
This plugin is only available if 'compatible' is not set.
|
||||
|
||||
INTRODUCTION *abolish* *:Abolish* *:Subvert*
|
||||
|
||||
Abolish lets you quickly find, substitute, and abbreviate several variations
|
||||
of a word at once. By default, three case variants (foo, Foo, and FOO) are
|
||||
operated on by every command.
|
||||
|
||||
Two commands are provided. :Abolish is the most general interface.
|
||||
:Subvert provides an alternative, more concise syntax for searching and
|
||||
substituting.
|
||||
>
|
||||
:Abolish [options] {abbreviation} {replacement}
|
||||
:Abolish -delete [options] {abbreviation}
|
||||
|
||||
:Abolish -search [options] {pattern}
|
||||
:Subvert/{pattern}[/flags]
|
||||
:Abolish!-search [options] {pattern}
|
||||
:Subvert?{pattern}[?flags]
|
||||
|
||||
:Abolish -search [options] {pattern} {grep-arguments}
|
||||
:Subvert /{pattern}/[flags] {grep-options}
|
||||
:Abolish!-search [options] {pattern} {grep-arguments}
|
||||
:Subvert!/{pattern}/[flags] {grep-options}
|
||||
|
||||
:[range]Abolish -substitute [options] {pattern} {replacement}
|
||||
:[range]Subvert/{pattern}/{replacement}[/flags]
|
||||
<
|
||||
*:S*
|
||||
In addition to the :Subvert command, a :S synonym is provided if not
|
||||
already defined. This will be used in examples below.
|
||||
|
||||
PATTERNS *abolish-patterns*
|
||||
|
||||
Patterns can include brace pairs that contain comma separated alternatives:
|
||||
|
||||
box{,es} => box, boxes, Box, Boxes, BOX, BOXES
|
||||
|
||||
For commands with a replacement, corresponding brace pairs are used in both
|
||||
halves. If the replacement should be identical to the pattern, an empty
|
||||
brace pair may be used. If fewer replacements are given than were given in
|
||||
the pattern, they are looped. That is, {a,b} on the replacement side is the
|
||||
same as {a,b,a,b,a,b,...} repeated indefinitely.
|
||||
|
||||
The following replaces several different misspellings of "necessary":
|
||||
>
|
||||
:%S/{,un}nec{ce,ces,e}sar{y,ily}/{}nec{es}sar{}/g
|
||||
<
|
||||
ABBREVIATING *abolish-abbrev*
|
||||
|
||||
By default :Abolish creates abbreviations, which replace words automatically
|
||||
as you type. This is good for words you frequently misspell, or as
|
||||
shortcuts for longer words. Since these are just Vim abbreviations, only
|
||||
whole words will match.
|
||||
>
|
||||
:Abolish anomol{y,ies} anomal{}
|
||||
:Abolish {,in}consistant{,ly} {}consistent{}
|
||||
:Abolish Tqbf The quick, brown fox jumps over the lazy dog
|
||||
<
|
||||
Accepts the following options:
|
||||
|
||||
-buffer: buffer local
|
||||
-cmdline: work in command line in addition to insert mode
|
||||
|
||||
A good place to define abbreviations is "after/plugin/abolish.vim",
|
||||
relative to ~\vimfiles on Windows and ~/.vim everywhere else.
|
||||
|
||||
With a bang (:Abolish!) the abbreviation is also appended to the file in
|
||||
g:abolish_save_file. The default is "after/plugin/abolish.vim", relative
|
||||
to the install directory.
|
||||
|
||||
Abbreviations can be removed with :Abolish -delete:
|
||||
>
|
||||
Abolish -delete -buffer -cmdline anomol{y,ies}
|
||||
<
|
||||
SEARCHING *abolish-search*
|
||||
|
||||
The -search command does a search in a manner similar to / key.
|
||||
search. After searching, you can use |n| and |N| as you would with a normal
|
||||
search.
|
||||
|
||||
The following will search for box, Box, and BOX:
|
||||
>
|
||||
:Abolish -search box
|
||||
<
|
||||
When given a single word to operate on, :Subvert defaults to doing a
|
||||
search as well:
|
||||
>
|
||||
:S/box/
|
||||
<
|
||||
This one searches for box, boxes, boxed, boxing, Box, Boxes, Boxed, Boxing,
|
||||
BOX, BOXES, BOXED, and BOXING:
|
||||
>
|
||||
:S/box{,es,ed,ing}/
|
||||
<
|
||||
The following syntaxes search in reverse.
|
||||
>
|
||||
:Abolish! -search box
|
||||
:S?box?
|
||||
<
|
||||
Flags can be given with the -flags= option to :Abolish, or by appending them
|
||||
after the separator to :Subvert. The flags trigger the following behaviors:
|
||||
|
||||
I: Disable case variations (box, Box, BOX)
|
||||
v: Match inside variable names (match my_box, myBox, but not mybox)
|
||||
w: Match whole words (like surrounding with \< and \>)
|
||||
|
||||
A |search-offset| may follow the flags.
|
||||
>
|
||||
:Abolish -search -flags=avs+1 box
|
||||
:S?box{,es,ed,ing}?we
|
||||
<
|
||||
GREPPING *abolish-grep*
|
||||
|
||||
Grepping works similar to searching, and is invoked when additional options
|
||||
are given. These options are passed directly to the :grep command.
|
||||
>
|
||||
:Abolish -search box{,es}
|
||||
:S /box{,es}/ *
|
||||
:S /box/aw *.txt *.html
|
||||
<
|
||||
The slash delimiters must both be present if used with :Subvert. They may
|
||||
both be omitted if no flags are used.
|
||||
|
||||
Both an external grepprg and vimgrep (via grepprg=internal) are supported.
|
||||
With an external grep, the "v" flag behaves less intelligently, due to the
|
||||
lack of look ahead and look behind support in grep regexps.
|
||||
|
||||
SUBSTITUTING *abolish-substitute*
|
||||
|
||||
Giving a range switches :Subvert into substitute mode. This command will
|
||||
change box -> bag, boxes -> bags, Box -> Bag, Boxes -> Bags, BOX -> BAG,
|
||||
BOXES -> BAGS across the entire document:
|
||||
>
|
||||
:%Abolish -substitute -flags=g box{,es} bag{,s}
|
||||
:%S/box{,es}/bag{,s}/g
|
||||
<
|
||||
The "c", "e", "g", and "n" flags can be used from the substitute command
|
||||
|:s_flags|, along with the "a", "I", "v", and "w" flags from searching.
|
||||
|
||||
COERCION *abolish-coercion* *cr*
|
||||
|
||||
Abolish's case mutating algorithms can be applied to the word under the cursor
|
||||
using the cr mapping (mnemonic: CoeRce) followed by one of the following
|
||||
characters:
|
||||
|
||||
c: camelCase
|
||||
m: MixedCase
|
||||
_: snake_case
|
||||
s: snake_case
|
||||
u: SNAKE_UPPERCASE
|
||||
U: SNAKE_UPPERCASE
|
||||
-: dash-case (not usually reversible; see |abolish-coercion-reversible|)
|
||||
k: kebab-case (not usually reversible; see |abolish-coercion-reversible|)
|
||||
.: dot.case (not usually reversible; see |abolish-coercion-reversible|)
|
||||
<space>: space case (not usually reversible; see |abolish-coercion-reversible|)
|
||||
t: Title Case (not usually reversible; see |abolish-coercion-reversible|)
|
||||
|
||||
For example, cru on a lowercase word is a slightly easier to type equivalent
|
||||
to gUiw.
|
||||
|
||||
COERCION REVERSIBILITY *abolish-coercion-reversible*
|
||||
|
||||
Some separators, such as "-" and ".", are listed as "not usually reversible".
|
||||
The reason is that these are not "keyword characters", so vim (and
|
||||
abolish.vim) will treat them as breaking a word.
|
||||
|
||||
For example: "key_word" is a single keyword. The dash-case version,
|
||||
"key-word", is treated as two keywords, "key" and "word".
|
||||
|
||||
This behaviour is governed by the 'iskeyword' option. If a separator appears
|
||||
in 'iskeyword', the corresponding coercion will be reversible. For instance,
|
||||
dash-case is reversible in 'lisp' files, and dot-case is reversible in R
|
||||
files.
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
631
sources_non_forked/vim-abolish/plugin/abolish.vim
Normal file
631
sources_non_forked/vim-abolish/plugin/abolish.vim
Normal file
|
@ -0,0 +1,631 @@
|
|||
" abolish.vim - Language friendly searches, substitutions, and abbreviations
|
||||
" Maintainer: Tim Pope <http://tpo.pe/>
|
||||
" Version: 1.1
|
||||
" GetLatestVimScripts: 1545 1 :AutoInstall: abolish.vim
|
||||
|
||||
" Initialization {{{1
|
||||
|
||||
if exists("g:loaded_abolish") || &cp || v:version < 700
|
||||
finish
|
||||
endif
|
||||
let g:loaded_abolish = 1
|
||||
|
||||
if !exists("g:abolish_save_file")
|
||||
if isdirectory(expand("~/.vim"))
|
||||
let g:abolish_save_file = expand("~/.vim/after/plugin/abolish.vim")
|
||||
elseif isdirectory(expand("~/vimfiles")) || has("win32")
|
||||
let g:abolish_save_file = expand("~/vimfiles/after/plugin/abolish.vim")
|
||||
else
|
||||
let g:abolish_save_file = expand("~/.vim/after/plugin/abolish.vim")
|
||||
endif
|
||||
endif
|
||||
|
||||
" }}}1
|
||||
" Utility functions {{{1
|
||||
|
||||
function! s:function(name)
|
||||
return function(substitute(a:name,'^s:',matchstr(expand('<sfile>'), '<SNR>\d\+_'),''))
|
||||
endfunction
|
||||
|
||||
function! s:send(self,func,...)
|
||||
if type(a:func) == type('') || type(a:func) == type(0)
|
||||
let Func = get(a:self,a:func,'')
|
||||
else
|
||||
let Func = a:func
|
||||
endif
|
||||
let s = type(a:self) == type({}) ? a:self : {}
|
||||
if type(Func) == type(function('tr'))
|
||||
return call(Func,a:000,s)
|
||||
elseif type(Func) == type({}) && has_key(Func,'apply')
|
||||
return call(Func.apply,a:000,Func)
|
||||
elseif type(Func) == type({}) && has_key(Func,'call')
|
||||
return call(Func.call,a:000,s)
|
||||
elseif type(Func) == type('') && Func == '' && has_key(s,'function missing')
|
||||
return call('s:send',[s,'function missing',a:func] + a:000)
|
||||
else
|
||||
return Func
|
||||
endif
|
||||
endfunction
|
||||
|
||||
let s:object = {}
|
||||
function! s:object.clone(...)
|
||||
let sub = deepcopy(self)
|
||||
return a:0 ? extend(sub,a:1) : sub
|
||||
endfunction
|
||||
|
||||
if !exists("g:Abolish")
|
||||
let Abolish = {}
|
||||
endif
|
||||
call extend(Abolish, s:object, 'force')
|
||||
call extend(Abolish, {'Coercions': {}}, 'keep')
|
||||
|
||||
function! s:throw(msg)
|
||||
let v:errmsg = a:msg
|
||||
throw "Abolish: ".a:msg
|
||||
endfunction
|
||||
|
||||
function! s:words()
|
||||
let words = []
|
||||
let lnum = line('w0')
|
||||
while lnum <= line('w$')
|
||||
let line = getline(lnum)
|
||||
let col = 0
|
||||
while match(line,'\<\k\k\+\>',col) != -1
|
||||
let words += [matchstr(line,'\<\k\k\+\>',col)]
|
||||
let col = matchend(line,'\<\k\k\+\>',col)
|
||||
endwhile
|
||||
let lnum += 1
|
||||
endwhile
|
||||
return words
|
||||
endfunction
|
||||
|
||||
function! s:extractopts(list,opts)
|
||||
let i = 0
|
||||
while i < len(a:list)
|
||||
if a:list[i] =~ '^-[^=]' && has_key(a:opts,matchstr(a:list[i],'-\zs[^=]*'))
|
||||
let key = matchstr(a:list[i],'-\zs[^=]*')
|
||||
let value = matchstr(a:list[i],'=\zs.*')
|
||||
if type(get(a:opts,key)) == type([])
|
||||
let a:opts[key] += [value]
|
||||
elseif type(get(a:opts,key)) == type(0)
|
||||
let a:opts[key] = 1
|
||||
else
|
||||
let a:opts[key] = value
|
||||
endif
|
||||
else
|
||||
let i += 1
|
||||
continue
|
||||
endif
|
||||
call remove(a:list,i)
|
||||
endwhile
|
||||
return a:opts
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
" Dictionary creation {{{1
|
||||
|
||||
function! s:mixedcase(word)
|
||||
return substitute(s:camelcase(a:word),'^.','\u&','')
|
||||
endfunction
|
||||
|
||||
function! s:camelcase(word)
|
||||
let word = substitute(a:word, '-', '_', 'g')
|
||||
if word !~# '_' && word =~# '\l'
|
||||
return substitute(word,'^.','\l&','')
|
||||
else
|
||||
return substitute(word,'\C\(_\)\=\(.\)','\=submatch(1)==""?tolower(submatch(2)) : toupper(submatch(2))','g')
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:snakecase(word)
|
||||
let word = substitute(a:word,'::','/','g')
|
||||
let word = substitute(word,'\(\u\+\)\(\u\l\)','\1_\2','g')
|
||||
let word = substitute(word,'\(\l\|\d\)\(\u\)','\1_\2','g')
|
||||
let word = substitute(word,'[.-]','_','g')
|
||||
let word = tolower(word)
|
||||
return word
|
||||
endfunction
|
||||
|
||||
function! s:uppercase(word)
|
||||
return toupper(s:snakecase(a:word))
|
||||
endfunction
|
||||
|
||||
function! s:dashcase(word)
|
||||
return substitute(s:snakecase(a:word),'_','-','g')
|
||||
endfunction
|
||||
|
||||
function! s:spacecase(word)
|
||||
return substitute(s:snakecase(a:word),'_',' ','g')
|
||||
endfunction
|
||||
|
||||
function! s:dotcase(word)
|
||||
return substitute(s:snakecase(a:word),'_','.','g')
|
||||
endfunction
|
||||
|
||||
function! s:titlecase(word)
|
||||
return substitute(s:spacecase(a:word), '\(\<\w\)','\=toupper(submatch(1))','g')
|
||||
endfunction
|
||||
|
||||
call extend(Abolish, {
|
||||
\ 'camelcase': s:function('s:camelcase'),
|
||||
\ 'mixedcase': s:function('s:mixedcase'),
|
||||
\ 'snakecase': s:function('s:snakecase'),
|
||||
\ 'uppercase': s:function('s:uppercase'),
|
||||
\ 'dashcase': s:function('s:dashcase'),
|
||||
\ 'dotcase': s:function('s:dotcase'),
|
||||
\ 'spacecase': s:function('s:spacecase'),
|
||||
\ 'titlecase': s:function('s:titlecase')
|
||||
\ }, 'keep')
|
||||
|
||||
function! s:create_dictionary(lhs,rhs,opts)
|
||||
let dictionary = {}
|
||||
let i = 0
|
||||
let expanded = s:expand_braces({a:lhs : a:rhs})
|
||||
for [lhs,rhs] in items(expanded)
|
||||
if get(a:opts,'case',1)
|
||||
let dictionary[s:mixedcase(lhs)] = s:mixedcase(rhs)
|
||||
let dictionary[tolower(lhs)] = tolower(rhs)
|
||||
let dictionary[toupper(lhs)] = toupper(rhs)
|
||||
endif
|
||||
let dictionary[lhs] = rhs
|
||||
endfor
|
||||
let i += 1
|
||||
return dictionary
|
||||
endfunction
|
||||
|
||||
function! s:expand_braces(dict)
|
||||
let new_dict = {}
|
||||
for [key,val] in items(a:dict)
|
||||
if key =~ '{.*}'
|
||||
let redo = 1
|
||||
let [all,kbefore,kmiddle,kafter;crap] = matchlist(key,'\(.\{-\}\){\(.\{-\}\)}\(.*\)')
|
||||
let [all,vbefore,vmiddle,vafter;crap] = matchlist(val,'\(.\{-\}\){\(.\{-\}\)}\(.*\)') + ["","","",""]
|
||||
if all == ""
|
||||
let [vbefore,vmiddle,vafter] = [val, ",", ""]
|
||||
endif
|
||||
let targets = split(kmiddle,',',1)
|
||||
let replacements = split(vmiddle,',',1)
|
||||
if replacements == [""]
|
||||
let replacements = targets
|
||||
endif
|
||||
for i in range(0,len(targets)-1)
|
||||
let new_dict[kbefore.targets[i].kafter] = vbefore.replacements[i%len(replacements)].vafter
|
||||
endfor
|
||||
else
|
||||
let new_dict[key] = val
|
||||
endif
|
||||
endfor
|
||||
if exists("redo")
|
||||
return s:expand_braces(new_dict)
|
||||
else
|
||||
return new_dict
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
" Abolish Dispatcher {{{1
|
||||
|
||||
function! s:SubComplete(A,L,P)
|
||||
if a:A =~ '^[/?]\k\+$'
|
||||
let char = strpart(a:A,0,1)
|
||||
return join(map(s:words(),'char . v:val'),"\n")
|
||||
elseif a:A =~# '^\k\+$'
|
||||
return join(s:words(),"\n")
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:Complete(A,L,P)
|
||||
let g:L = a:L
|
||||
" Vim bug: :Abolish -<Tab> calls this function with a:A equal to 0
|
||||
if a:A =~# '^[^/?-]' && type(a:A) != type(0)
|
||||
return join(s:words(),"\n")
|
||||
elseif a:L =~# '^\w\+\s\+\%(-\w*\)\=$'
|
||||
return "-search\n-substitute\n-delete\n-buffer\n-cmdline\n"
|
||||
elseif a:L =~# ' -\%(search\|substitute\)\>'
|
||||
return "-flags="
|
||||
else
|
||||
return "-buffer\n-cmdline"
|
||||
endif
|
||||
endfunction
|
||||
|
||||
let s:commands = {}
|
||||
let s:commands.abstract = s:object.clone()
|
||||
|
||||
function! s:commands.abstract.dispatch(bang,line1,line2,count,args)
|
||||
return self.clone().go(a:bang,a:line1,a:line2,a:count,a:args)
|
||||
endfunction
|
||||
|
||||
function! s:commands.abstract.go(bang,line1,line2,count,args)
|
||||
let self.bang = a:bang
|
||||
let self.line1 = a:line1
|
||||
let self.line2 = a:line2
|
||||
let self.count = a:count
|
||||
return self.process(a:bang,a:line1,a:line2,a:count,a:args)
|
||||
endfunction
|
||||
|
||||
function! s:dispatcher(bang,line1,line2,count,args)
|
||||
let i = 0
|
||||
let args = copy(a:args)
|
||||
let command = s:commands.abbrev
|
||||
while i < len(args)
|
||||
if args[i] =~# '^-\w\+$' && has_key(s:commands,matchstr(args[i],'-\zs.*'))
|
||||
let command = s:commands[matchstr(args[i],'-\zs.*')]
|
||||
call remove(args,i)
|
||||
break
|
||||
endif
|
||||
let i += 1
|
||||
endwhile
|
||||
try
|
||||
return command.dispatch(a:bang,a:line1,a:line2,a:count,args)
|
||||
catch /^Abolish: /
|
||||
echohl ErrorMsg
|
||||
echo v:errmsg
|
||||
echohl NONE
|
||||
return ""
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
" Subvert Dispatcher {{{1
|
||||
|
||||
function! s:subvert_dispatcher(bang,line1,line2,count,args)
|
||||
try
|
||||
return s:parse_subvert(a:bang,a:line1,a:line2,a:count,a:args)
|
||||
catch /^Subvert: /
|
||||
echohl ErrorMsg
|
||||
echo v:errmsg
|
||||
echohl NONE
|
||||
return ""
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
function! s:parse_subvert(bang,line1,line2,count,args)
|
||||
if a:args =~ '^\%(\w\|$\)'
|
||||
let args = (a:bang ? "!" : "").a:args
|
||||
else
|
||||
let args = a:args
|
||||
endif
|
||||
let separator = matchstr(args,'^.')
|
||||
let split = split(args,separator,1)[1:]
|
||||
if a:count || split == [""]
|
||||
return s:parse_substitute(a:bang,a:line1,a:line2,a:count,split)
|
||||
elseif len(split) == 1
|
||||
return s:find_command(separator,"",split[0])
|
||||
elseif len(split) == 2 && split[1] =~# '^[A-Za-z]*n[A-Za-z]*$'
|
||||
return s:parse_substitute(a:bang,a:line1,a:line2,a:count,[split[0],"",split[1]])
|
||||
elseif len(split) == 2 && split[1] =~# '^[A-Za-z]*\%([+-]\d\+\)\=$'
|
||||
return s:find_command(separator,split[1],split[0])
|
||||
elseif len(split) >= 2 && split[1] =~# '^[A-Za-z]* '
|
||||
let flags = matchstr(split[1],'^[A-Za-z]*')
|
||||
let rest = matchstr(join(split[1:],separator),' \zs.*')
|
||||
return s:grep_command(rest,a:bang,flags,split[0])
|
||||
elseif len(split) >= 2 && separator == ' '
|
||||
return s:grep_command(join(split[1:],' '),a:bang,"",split[0])
|
||||
else
|
||||
return s:parse_substitute(a:bang,a:line1,a:line2,a:count,split)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:normalize_options(flags)
|
||||
if type(a:flags) == type({})
|
||||
let opts = a:flags
|
||||
let flags = get(a:flags,"flags","")
|
||||
else
|
||||
let opts = {}
|
||||
let flags = a:flags
|
||||
endif
|
||||
let g:op1 = copy(opts)
|
||||
if flags =~# 'w'
|
||||
let opts.boundaries = 2
|
||||
elseif flags =~# 'v'
|
||||
let opts.boundaries = 1
|
||||
elseif !has_key(opts,'boundaries')
|
||||
let opts.boundaries = 0
|
||||
endif
|
||||
let opts.case = (flags !~# 'I' ? get(opts,'case',1) : 0)
|
||||
let opts.flags = substitute(flags,'\C[avIiw]','','g')
|
||||
let g:op2 = copy(opts)
|
||||
return opts
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
" Searching {{{1
|
||||
|
||||
function! s:subesc(pattern)
|
||||
return substitute(a:pattern,'[][\\/.*+?~%()&]','\\&','g')
|
||||
endfunction
|
||||
|
||||
function! s:sort(a,b)
|
||||
if a:a ==? a:b
|
||||
return a:a == a:b ? 0 : a:a > a:b ? 1 : -1
|
||||
elseif strlen(a:a) == strlen(a:b)
|
||||
return a:a >? a:b ? 1 : -1
|
||||
else
|
||||
return strlen(a:a) < strlen(a:b) ? 1 : -1
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:pattern(dict,boundaries)
|
||||
if a:boundaries == 2
|
||||
let a = '<'
|
||||
let b = '>'
|
||||
elseif a:boundaries
|
||||
let a = '%(<|_@<=|[[:lower:]]@<=[[:upper:]]@=)'
|
||||
let b = '%(>|_@=|[[:lower:]]@<=[[:upper:]]@=)'
|
||||
else
|
||||
let a = ''
|
||||
let b = ''
|
||||
endif
|
||||
return '\v\C'.a.'%('.join(map(sort(keys(a:dict),function('s:sort')),'s:subesc(v:val)'),'|').')'.b
|
||||
endfunction
|
||||
|
||||
function! s:egrep_pattern(dict,boundaries)
|
||||
if a:boundaries == 2
|
||||
let a = '\<'
|
||||
let b = '\>'
|
||||
elseif a:boundaries
|
||||
let a = '(\<\|_)'
|
||||
let b = '(\>\|_\|[[:upper:]][[:lower:]])'
|
||||
else
|
||||
let a = ''
|
||||
let b = ''
|
||||
endif
|
||||
return a.'('.join(map(sort(keys(a:dict),function('s:sort')),'s:subesc(v:val)'),'\|').')'.b
|
||||
endfunction
|
||||
|
||||
function! s:c()
|
||||
call histdel('search',-1)
|
||||
return ""
|
||||
endfunction
|
||||
|
||||
function! s:find_command(cmd,flags,word)
|
||||
let opts = s:normalize_options(a:flags)
|
||||
let dict = s:create_dictionary(a:word,"",opts)
|
||||
" This is tricky. If we use :/pattern, the search drops us at the
|
||||
" beginning of the line, and we can't use position flags (e.g., /foo/e).
|
||||
" If we use :norm /pattern, we leave ourselves vulnerable to "press enter"
|
||||
" prompts (even with :silent).
|
||||
let cmd = (a:cmd =~ '[?!]' ? '?' : '/')
|
||||
let @/ = s:pattern(dict,opts.boundaries)
|
||||
if opts.flags == "" || !search(@/,'n')
|
||||
return "norm! ".cmd."\<CR>"
|
||||
elseif opts.flags =~ ';[/?]\@!'
|
||||
call s:throw("E386: Expected '?' or '/' after ';'")
|
||||
else
|
||||
return "exe 'norm! ".cmd.cmd.opts.flags."\<CR>'|call histdel('search',-1)"
|
||||
return ""
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:grep_command(args,bang,flags,word)
|
||||
let opts = s:normalize_options(a:flags)
|
||||
let dict = s:create_dictionary(a:word,"",opts)
|
||||
if &grepprg == "internal"
|
||||
let lhs = "'".s:pattern(dict,opts.boundaries)."'"
|
||||
else
|
||||
let lhs = "-E '".s:egrep_pattern(dict,opts.boundaries)."'"
|
||||
endif
|
||||
return "grep".(a:bang ? "!" : "")." ".lhs." ".a:args
|
||||
endfunction
|
||||
|
||||
let s:commands.search = s:commands.abstract.clone()
|
||||
let s:commands.search.options = {"word": 0, "variable": 0, "flags": ""}
|
||||
|
||||
function! s:commands.search.process(bang,line1,line2,count,args)
|
||||
call s:extractopts(a:args,self.options)
|
||||
if self.options.word
|
||||
let self.options.flags .= "w"
|
||||
elseif self.options.variable
|
||||
let self.options.flags .= "v"
|
||||
endif
|
||||
let opts = s:normalize_options(self.options)
|
||||
if len(a:args) > 1
|
||||
return s:grep_command(join(a:args[1:]," "),a:bang,opts,a:args[0])
|
||||
elseif len(a:args) == 1
|
||||
return s:find_command(a:bang ? "!" : " ",opts,a:args[0])
|
||||
else
|
||||
call s:throw("E471: Argument required")
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
" Substitution {{{1
|
||||
|
||||
function! Abolished()
|
||||
return get(g:abolish_last_dict,submatch(0),submatch(0))
|
||||
endfunction
|
||||
|
||||
function! s:substitute_command(cmd,bad,good,flags)
|
||||
let opts = s:normalize_options(a:flags)
|
||||
let dict = s:create_dictionary(a:bad,a:good,opts)
|
||||
let lhs = s:pattern(dict,opts.boundaries)
|
||||
let g:abolish_last_dict = dict
|
||||
return a:cmd.'/'.lhs.'/\=Abolished()'."/".opts.flags
|
||||
endfunction
|
||||
|
||||
function! s:parse_substitute(bang,line1,line2,count,args)
|
||||
if get(a:args,0,'') =~ '^[/?'']'
|
||||
let separator = matchstr(a:args[0],'^.')
|
||||
let args = split(join(a:args,' '),separator,1)
|
||||
call remove(args,0)
|
||||
else
|
||||
let args = a:args
|
||||
endif
|
||||
if len(args) < 2
|
||||
call s:throw("E471: Argument required")
|
||||
elseif len(args) > 3
|
||||
call s:throw("E488: Trailing characters")
|
||||
endif
|
||||
let [bad,good,flags] = (args + [""])[0:2]
|
||||
if a:count == 0
|
||||
let cmd = "substitute"
|
||||
else
|
||||
let cmd = a:line1.",".a:line2."substitute"
|
||||
endif
|
||||
return s:substitute_command(cmd,bad,good,flags)
|
||||
endfunction
|
||||
|
||||
let s:commands.substitute = s:commands.abstract.clone()
|
||||
let s:commands.substitute.options = {"word": 0, "variable": 0, "flags": "g"}
|
||||
|
||||
function! s:commands.substitute.process(bang,line1,line2,count,args)
|
||||
call s:extractopts(a:args,self.options)
|
||||
if self.options.word
|
||||
let self.options.flags .= "w"
|
||||
elseif self.options.variable
|
||||
let self.options.flags .= "v"
|
||||
endif
|
||||
let opts = s:normalize_options(self.options)
|
||||
if len(a:args) <= 1
|
||||
call s:throw("E471: Argument required")
|
||||
else
|
||||
let good = join(a:args[1:],"")
|
||||
let cmd = a:bang ? "." : "%"
|
||||
return s:substitute_command(cmd,a:args[0],good,self.options)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
" Abbreviations {{{1
|
||||
|
||||
function! s:badgood(args)
|
||||
let words = filter(copy(a:args),'v:val !~ "^-"')
|
||||
call filter(a:args,'v:val =~ "^-"')
|
||||
if empty(words)
|
||||
call s:throw("E471: Argument required")
|
||||
elseif !empty(a:args)
|
||||
call s:throw("Unknown argument: ".a:args[0])
|
||||
endif
|
||||
let [bad; words] = words
|
||||
return [bad, join(words," ")]
|
||||
endfunction
|
||||
|
||||
function! s:abbreviate_from_dict(cmd,dict)
|
||||
for [lhs,rhs] in items(a:dict)
|
||||
exe a:cmd lhs rhs
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
let s:commands.abbrev = s:commands.abstract.clone()
|
||||
let s:commands.abbrev.options = {"buffer":0,"cmdline":0,"delete":0}
|
||||
function! s:commands.abbrev.process(bang,line1,line2,count,args)
|
||||
let args = copy(a:args)
|
||||
call s:extractopts(a:args,self.options)
|
||||
if self.options.delete
|
||||
let cmd = "unabbrev"
|
||||
let good = ""
|
||||
else
|
||||
let cmd = "noreabbrev"
|
||||
endif
|
||||
if !self.options.cmdline
|
||||
let cmd = "i" . cmd
|
||||
endif
|
||||
if self.options.delete
|
||||
let cmd = "silent! ".cmd
|
||||
endif
|
||||
if self.options.buffer
|
||||
let cmd = cmd . " <buffer>"
|
||||
endif
|
||||
let [bad, good] = s:badgood(a:args)
|
||||
if substitute(bad,'{.\{-\}.}','','g') !~ '^\k\+$'
|
||||
call s:throw("E474: Invalid argument (not a keyword: ".string(bad).")")
|
||||
endif
|
||||
if !self.options.delete && good == ""
|
||||
call s:throw("E471: Argument required".a:args[0])
|
||||
endif
|
||||
let dict = s:create_dictionary(bad,good,self.options)
|
||||
call s:abbreviate_from_dict(cmd,dict)
|
||||
if a:bang
|
||||
let i = 0
|
||||
let str = "Abolish ".join(args," ")
|
||||
let file = g:abolish_save_file
|
||||
if !isdirectory(fnamemodify(file,':h'))
|
||||
call mkdir(fnamemodify(file,':h'),'p')
|
||||
endif
|
||||
|
||||
if filereadable(file)
|
||||
let old = readfile(file)
|
||||
else
|
||||
let old = ["\" Exit if :Abolish isn't available.","if !exists(':Abolish')"," finish","endif",""]
|
||||
endif
|
||||
call writefile(old + [str],file)
|
||||
endif
|
||||
return ""
|
||||
endfunction
|
||||
|
||||
let s:commands.delete = s:commands.abbrev.clone()
|
||||
let s:commands.delete.options.delete = 1
|
||||
|
||||
" }}}1
|
||||
" Maps {{{1
|
||||
|
||||
function! s:unknown_coercion(letter,word)
|
||||
return a:word
|
||||
endfunction
|
||||
|
||||
call extend(Abolish.Coercions, {
|
||||
\ 'c': Abolish.camelcase,
|
||||
\ 'm': Abolish.mixedcase,
|
||||
\ 's': Abolish.snakecase,
|
||||
\ '_': Abolish.snakecase,
|
||||
\ 'u': Abolish.uppercase,
|
||||
\ 'U': Abolish.uppercase,
|
||||
\ '-': Abolish.dashcase,
|
||||
\ 'k': Abolish.dashcase,
|
||||
\ '.': Abolish.dotcase,
|
||||
\ ' ': Abolish.spacecase,
|
||||
\ 't': Abolish.titlecase,
|
||||
\ "function missing": s:function("s:unknown_coercion")
|
||||
\}, "keep")
|
||||
|
||||
function! s:coerce(transformation)
|
||||
let clipboard = &clipboard
|
||||
try
|
||||
set clipboard=
|
||||
let regbody = getreg('"')
|
||||
let regtype = getregtype('"')
|
||||
let c = v:count1
|
||||
while c > 0
|
||||
let c -= 1
|
||||
norm! yiw
|
||||
let word = @@
|
||||
let @@ = s:send(g:Abolish.Coercions,a:transformation,word)
|
||||
if !exists('begin')
|
||||
let begin = getpos("'[")
|
||||
endif
|
||||
if word !=# @@
|
||||
let changed = 1
|
||||
norm! viwpw
|
||||
else
|
||||
norm! w
|
||||
endif
|
||||
endwhile
|
||||
call setreg('"',regbody,regtype)
|
||||
call setpos("'[",begin)
|
||||
call setpos(".",begin)
|
||||
if exists("changed")
|
||||
silent! call repeat#set("\<Plug>Coerce".a:transformation)
|
||||
endif
|
||||
finally
|
||||
let &clipboard = clipboard
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
nnoremap <silent> <Plug>Coerce :<C-U>call <SID>coerce(nr2char(getchar()))<CR>
|
||||
|
||||
" }}}1
|
||||
|
||||
if !exists("g:abolish_no_mappings") || ! g:abolish_no_mappings
|
||||
nmap cr <Plug>Coerce
|
||||
endif
|
||||
|
||||
command! -nargs=+ -bang -bar -range=0 -complete=custom,s:Complete Abolish
|
||||
\ :exec s:dispatcher(<bang>0,<line1>,<line2>,<count>,[<f-args>])
|
||||
command! -nargs=1 -bang -bar -range=0 -complete=custom,s:SubComplete Subvert
|
||||
\ :exec s:subvert_dispatcher(<bang>0,<line1>,<line2>,<count>,<q-args>)
|
||||
if exists(':S') != 2
|
||||
command -nargs=1 -bang -bar -range=0 -complete=custom,s:SubComplete S
|
||||
\ :exec s:subvert_dispatcher(<bang>0,<line1>,<line2>,<count>,<q-args>)
|
||||
endif
|
||||
|
||||
" vim:set ft=vim sw=2 sts=2:
|
1
sources_non_forked/vim-go/.dockerignore
Normal file
1
sources_non_forked/vim-go/.dockerignore
Normal file
|
@ -0,0 +1 @@
|
|||
.git/
|
17
sources_non_forked/vim-go/.editorconfig
Normal file
17
sources_non_forked/vim-go/.editorconfig
Normal file
|
@ -0,0 +1,17 @@
|
|||
# http://EditorConfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.go]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
[Makefile]
|
||||
indent_style = tab
|
||||
indent_size = 8
|
7
sources_non_forked/vim-go/.vintrc.yaml
Normal file
7
sources_non_forked/vim-go/.vintrc.yaml
Normal file
|
@ -0,0 +1,7 @@
|
|||
policies:
|
||||
ProhibitUnnecessaryDoubleQuote:
|
||||
enabled: false
|
||||
ProhibitEqualTildeOperator:
|
||||
enabled: false
|
||||
ProhibitNoAbortFunction:
|
||||
enabled: false
|
19
sources_non_forked/vim-go/Dockerfile
Normal file
19
sources_non_forked/vim-go/Dockerfile
Normal file
|
@ -0,0 +1,19 @@
|
|||
FROM golang:1.9.1
|
||||
|
||||
RUN apt-get update -y && \
|
||||
apt-get install -y build-essential curl git libncurses5-dev python3-pip && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
RUN useradd -ms /bin/bash -d /vim-go vim-go
|
||||
USER vim-go
|
||||
|
||||
COPY . /vim-go/
|
||||
WORKDIR /vim-go
|
||||
|
||||
RUN scripts/install-vim vim-7.4
|
||||
RUN scripts/install-vim vim-8.0
|
||||
RUN scripts/install-vim nvim
|
||||
RUN pip3 install vim-vint
|
||||
|
||||
ENTRYPOINT ["make"]
|
150
sources_non_forked/vim-go/autoload/fzf/decls.vim
Normal file
150
sources_non_forked/vim-go/autoload/fzf/decls.vim
Normal file
|
@ -0,0 +1,150 @@
|
|||
function! s:code(group, attr) abort
|
||||
let code = synIDattr(synIDtrans(hlID(a:group)), a:attr, "cterm")
|
||||
if code =~ '^[0-9]\+$'
|
||||
return code
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:color(str, group) abort
|
||||
let fg = s:code(a:group, "fg")
|
||||
let bg = s:code(a:group, "bg")
|
||||
let bold = s:code(a:group, "bold")
|
||||
let italic = s:code(a:group, "italic")
|
||||
let reverse = s:code(a:group, "reverse")
|
||||
let underline = s:code(a:group, "underline")
|
||||
let color = (empty(fg) ? "" : ("38;5;".fg)) .
|
||||
\ (empty(bg) ? "" : (";48;5;".bg)) .
|
||||
\ (empty(bold) ? "" : ";1") .
|
||||
\ (empty(italic) ? "" : ";3") .
|
||||
\ (empty(reverse) ? "" : ";7") .
|
||||
\ (empty(underline) ? "" : ";4")
|
||||
return printf("\x1b[%sm%s\x1b[m", color, a:str)
|
||||
endfunction
|
||||
|
||||
function! s:sink(str) abort
|
||||
if len(a:str) < 2
|
||||
return
|
||||
endif
|
||||
let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '
|
||||
let dir = getcwd()
|
||||
try
|
||||
" we jump to the file directory so we can get the fullpath via fnamemodify
|
||||
" below
|
||||
execute cd . fnameescape(s:current_dir)
|
||||
|
||||
let vals = matchlist(a:str[1], '|\(.\{-}\):\(\d\+\):\(\d\+\)\s*\(.*\)|')
|
||||
|
||||
" i.e: main.go
|
||||
let filename = vals[1]
|
||||
let line = vals[2]
|
||||
let col = vals[3]
|
||||
|
||||
" i.e: /Users/fatih/vim-go/main.go
|
||||
let filepath = fnamemodify(filename, ":p")
|
||||
|
||||
let cmd = get({'ctrl-x': 'split',
|
||||
\ 'ctrl-v': 'vertical split',
|
||||
\ 'ctrl-t': 'tabe'}, a:str[0], 'e')
|
||||
execute cmd fnameescape(filepath)
|
||||
call cursor(line, col)
|
||||
silent! norm! zvzz
|
||||
finally
|
||||
"jump back to old dir
|
||||
execute cd . fnameescape(dir)
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
function! s:source(mode,...) abort
|
||||
let s:current_dir = expand('%:p:h')
|
||||
let ret_decls = []
|
||||
|
||||
let bin_path = go#path#CheckBinPath('motion')
|
||||
if empty(bin_path)
|
||||
return
|
||||
endif
|
||||
let command = printf("%s -format vim -mode decls", bin_path)
|
||||
let command .= " -include ". get(g:, "go_decls_includes", "func,type")
|
||||
|
||||
call go#cmd#autowrite()
|
||||
|
||||
if a:mode == 0
|
||||
" current file mode
|
||||
let fname = expand("%:p")
|
||||
if a:0 && !empty(a:1)
|
||||
let fname = a:1
|
||||
endif
|
||||
|
||||
let command .= printf(" -file %s", shellescape(fname))
|
||||
else
|
||||
" all functions mode
|
||||
if a:0 && !empty(a:1)
|
||||
let s:current_dir = a:1
|
||||
endif
|
||||
|
||||
let command .= printf(" -dir %s", shellescape(s:current_dir))
|
||||
endif
|
||||
|
||||
let out = go#util#System(command)
|
||||
if go#util#ShellError() != 0
|
||||
call go#util#EchoError(out)
|
||||
return
|
||||
endif
|
||||
|
||||
let result = eval(out)
|
||||
if type(result) != 4 || !has_key(result, 'decls')
|
||||
return ret_decls
|
||||
endif
|
||||
|
||||
let decls = result.decls
|
||||
|
||||
" find the maximum function name
|
||||
let max_len = 0
|
||||
for decl in decls
|
||||
if len(decl.ident)> max_len
|
||||
let max_len = len(decl.ident)
|
||||
endif
|
||||
endfor
|
||||
|
||||
for decl in decls
|
||||
" paddings
|
||||
let space = " "
|
||||
for i in range(max_len - len(decl.ident))
|
||||
let space .= " "
|
||||
endfor
|
||||
|
||||
let pos = printf("|%s:%s:%s|",
|
||||
\ fnamemodify(decl.filename, ":t"),
|
||||
\ decl.line,
|
||||
\ decl.col
|
||||
\)
|
||||
call add(ret_decls, printf("%s\t%s %s\t%s",
|
||||
\ s:color(decl.ident . space, "Function"),
|
||||
\ s:color(decl.keyword, "Keyword"),
|
||||
\ s:color(pos, "SpecialComment"),
|
||||
\ s:color(decl.full, "Comment"),
|
||||
\))
|
||||
endfor
|
||||
|
||||
return ret_decls
|
||||
endfunc
|
||||
|
||||
function! fzf#decls#cmd(...) abort
|
||||
let normal_fg = s:code("Normal", "fg")
|
||||
let normal_bg = s:code("Normal", "bg")
|
||||
let cursor_fg = s:code("CursorLine", "fg")
|
||||
let cursor_bg = s:code("CursorLine", "bg")
|
||||
let colors = printf(" --color %s%s%s%s%s",
|
||||
\ &background,
|
||||
\ empty(normal_fg) ? "" : (",fg:".normal_fg),
|
||||
\ empty(normal_bg) ? "" : (",bg:".normal_bg),
|
||||
\ empty(cursor_fg) ? "" : (",fg+:".cursor_fg),
|
||||
\ empty(cursor_bg) ? "" : (",bg+:".cursor_bg),
|
||||
\)
|
||||
call fzf#run(fzf#wrap('GoDecls', {
|
||||
\ 'source': call('<sid>source', a:000),
|
||||
\ 'options': '-n 1 --ansi --prompt "GoDecls> " --expect=ctrl-t,ctrl-v,ctrl-x'.colors,
|
||||
\ 'sink*': function('s:sink')
|
||||
\ }))
|
||||
endfunction
|
||||
|
||||
" vim: sw=2 ts=2 et
|
21
sources_non_forked/vim-go/autoload/go/decls.vim
Normal file
21
sources_non_forked/vim-go/autoload/go/decls.vim
Normal file
|
@ -0,0 +1,21 @@
|
|||
if !exists('g:go_decls_mode')
|
||||
let g:go_decls_mode = ''
|
||||
endif
|
||||
|
||||
function! go#decls#Decls(mode, ...) abort
|
||||
if g:go_decls_mode == 'ctrlp'
|
||||
call ctrlp#init(call("ctrlp#decls#cmd", [a:mode] + a:000))
|
||||
elseif g:go_decls_mode == 'fzf'
|
||||
call call("fzf#decls#cmd", [a:mode] + a:000)
|
||||
else
|
||||
if globpath(&rtp, 'plugin/ctrlp.vim') != ""
|
||||
call ctrlp#init(call("ctrlp#decls#cmd", [a:mode] + a:000))
|
||||
elseif globpath(&rtp, 'plugin/fzf.vim') != ""
|
||||
call call("fzf#decls#cmd", [a:mode] + a:000)
|
||||
else
|
||||
call go#util#EchoError("neither ctrlp.vim nor fzf.vim are installed. Please install either one")
|
||||
end
|
||||
end
|
||||
endfunction
|
||||
|
||||
" vim: sw=2 ts=2 et
|
52
sources_non_forked/vim-go/autoload/go/fillstruct.vim
Normal file
52
sources_non_forked/vim-go/autoload/go/fillstruct.vim
Normal file
|
@ -0,0 +1,52 @@
|
|||
function! go#fillstruct#FillStruct() abort
|
||||
let l:cmd = ['fillstruct',
|
||||
\ '-file', bufname(''),
|
||||
\ '-offset', go#util#OffsetCursor()]
|
||||
|
||||
" Read from stdin if modified.
|
||||
if &modified
|
||||
call add(l:cmd, '-modified')
|
||||
let [l:out, l:err] = go#util#Exec(l:cmd, go#util#archive())
|
||||
else
|
||||
let [l:out, l:err] = go#util#Exec(l:cmd)
|
||||
endif
|
||||
|
||||
if l:err
|
||||
call go#util#EchoError(l:out)
|
||||
return
|
||||
endif
|
||||
|
||||
try
|
||||
let l:json = json_decode(l:out)
|
||||
catch
|
||||
call go#util#EchoError(l:out)
|
||||
return
|
||||
endtry
|
||||
|
||||
let l:code = split(l:json['code'], "\n")
|
||||
let l:pos = getpos('.')
|
||||
|
||||
try
|
||||
" Add any code before/after the struct.
|
||||
exe l:json['start'] . 'go'
|
||||
let l:code[0] = getline('.')[:col('.')-1] . l:code[0]
|
||||
exe l:json['end'] . 'go'
|
||||
let l:code[len(l:code)-1] .= getline('.')[col('.'):]
|
||||
|
||||
" Indent every line except the first one; makes it look nice.
|
||||
let l:indent = repeat("\t", indent('.') / &ts)
|
||||
for i in range(1, len(l:code)-1)
|
||||
let l:code[l:i] = l:indent . l:code[i]
|
||||
endfor
|
||||
|
||||
" Out with the old ...
|
||||
exe 'normal! ' . l:json['start'] . 'gov' . l:json['end'] . 'gox'
|
||||
" ... in with the new.
|
||||
call setline('.', l:code[0])
|
||||
call append('.', l:code[1:])
|
||||
finally
|
||||
call setpos('.', l:pos)
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" vim: sw=2 ts=2 et
|
19
sources_non_forked/vim-go/autoload/go/fillstruct_test.vim
Normal file
19
sources_non_forked/vim-go/autoload/go/fillstruct_test.vim
Normal file
|
@ -0,0 +1,19 @@
|
|||
func! Test_fillstruct() abort
|
||||
try
|
||||
let l:tmp = gotest#write_file('a/a.go', [
|
||||
\ 'package a',
|
||||
\ 'import "net/mail"',
|
||||
\ 'var addr = mail.Address{}'])
|
||||
|
||||
call go#fillstruct#FillStruct()
|
||||
call gotest#assert_buffer(1, [
|
||||
\ 'var addr = mail.Address{',
|
||||
\ '\tName: "",',
|
||||
\ '\tAddress: "",',
|
||||
\ '}'])
|
||||
finally
|
||||
call delete(l:tmp, 'rf')
|
||||
endtry
|
||||
endfunc
|
||||
|
||||
" vim: sw=2 ts=2 et
|
23
sources_non_forked/vim-go/autoload/go/tool_test.vim
Normal file
23
sources_non_forked/vim-go/autoload/go/tool_test.vim
Normal file
|
@ -0,0 +1,23 @@
|
|||
func! Test_ExecuteInDir() abort
|
||||
let l:tmp = gotest#write_file('a/a.go', ['package a'])
|
||||
try
|
||||
let l:out = go#tool#ExecuteInDir("pwd")
|
||||
call assert_equal(l:tmp . "/src/a\n", l:out)
|
||||
finally
|
||||
call delete(l:tmp, 'rf')
|
||||
endtry
|
||||
endfunc
|
||||
|
||||
func! Test_ExecuteInDir_nodir() abort
|
||||
let l:tmp = go#util#tempdir("executeindir")
|
||||
exe ':e ' . l:tmp . '/new-dir/a'
|
||||
|
||||
try
|
||||
let l:out = go#tool#ExecuteInDir("pwd")
|
||||
call assert_equal('', l:out)
|
||||
finally
|
||||
call delete(l:tmp, 'rf')
|
||||
endtry
|
||||
endfunc
|
||||
|
||||
" vim: sw=2 ts=2 et
|
106
sources_non_forked/vim-go/autoload/gotest.vim
Normal file
106
sources_non_forked/vim-go/autoload/gotest.vim
Normal file
|
@ -0,0 +1,106 @@
|
|||
" Write a Go file to a temporary directory and append this directory to $GOPATH.
|
||||
"
|
||||
" The file will written to a:path, which is relative to the temporary directory,
|
||||
" and this file will be loaded as the current buffer.
|
||||
"
|
||||
" The cursor will be placed on the character before any 0x1f byte.
|
||||
"
|
||||
" The full path to the created directory is returned, it is the caller's
|
||||
" responsibility to clean that up!
|
||||
fun! gotest#write_file(path, contents) abort
|
||||
let l:dir = go#util#tempdir("vim-go-test/testrun/")
|
||||
let $GOPATH .= ':' . l:dir
|
||||
let l:full_path = l:dir . '/src/' . a:path
|
||||
|
||||
call mkdir(fnamemodify(l:full_path, ':h'), 'p')
|
||||
call writefile(a:contents, l:full_path)
|
||||
exe 'cd ' . l:dir . '/src'
|
||||
silent exe 'e ' . a:path
|
||||
|
||||
" Set cursor.
|
||||
let l:lnum = 1
|
||||
for l:line in a:contents
|
||||
let l:m = match(l:line, '')
|
||||
if l:m > -1
|
||||
call setpos('.', [0, l:lnum, l:m, 0])
|
||||
call setline('.', substitute(getline('.'), '', '', ''))
|
||||
break
|
||||
endif
|
||||
|
||||
let l:lnum += 1
|
||||
endfor
|
||||
|
||||
return l:dir
|
||||
endfun
|
||||
|
||||
" Load a fixture file from test-fixtures.
|
||||
"
|
||||
" The file will be copied to a new GOPATH-compliant temporary directory and
|
||||
" loaded as the current buffer.
|
||||
fun! gotest#load_fixture(path) abort
|
||||
let l:dir = go#util#tempdir("vim-go-test/testrun/")
|
||||
let $GOPATH .= ':' . l:dir
|
||||
let l:full_path = l:dir . '/src/' . a:path
|
||||
|
||||
call mkdir(fnamemodify(l:full_path, ':h'), 'p')
|
||||
exe 'cd ' . l:dir . '/src'
|
||||
silent exe 'noautocmd e ' . a:path
|
||||
silent exe printf('read %s/test-fixtures/%s', g:vim_go_root, a:path)
|
||||
silent noautocmd w!
|
||||
|
||||
return l:dir
|
||||
endfun
|
||||
|
||||
" Diff the contents of the current buffer to a:want, which should be a list.
|
||||
" If a:skipHeader is true we won't bother with the package and import
|
||||
" declarations; so e.g.:
|
||||
"
|
||||
" let l:diff = s:diff_buffer(1, ['_ = mail.Address{}'])
|
||||
"
|
||||
" will pass, whereas otherwise you'd have to:
|
||||
"
|
||||
" let l:diff = s:diff_buffer(0, ['package main', 'import "net/mail", '_ = mail.Address{}'])
|
||||
fun! gotest#assert_buffer(skipHeader, want) abort
|
||||
let l:buffer = go#util#GetLines()
|
||||
|
||||
if a:skipHeader
|
||||
for l:lnum in range(0, len(l:buffer) - 1)
|
||||
" Bit rudimentary, but works reasonably well.
|
||||
if match(l:buffer[l:lnum], '^\v(func|var|const|import \(|\))') > -1
|
||||
" vint bug: https://github.com/Kuniwak/vint/issues/179
|
||||
" vint: -ProhibitUsingUndeclaredVariable
|
||||
let l:buffer = l:buffer[l:lnum:len(l:buffer)]
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
" Using ' is often easier so we don't have to escape ".
|
||||
let l:want = map(a:want, 'substitute(v:val, "\\\\t", "\t", "")')
|
||||
|
||||
let l:tmp = go#util#tempdir('assert_buffer')
|
||||
try
|
||||
call writefile(l:buffer, l:tmp . '/have')
|
||||
call writefile(l:want, l:tmp . '/want')
|
||||
call go#fmt#run('gofmt', l:tmp . '/have', l:tmp . '/have')
|
||||
call go#fmt#run('gofmt', l:tmp . '/want', l:tmp . '/want')
|
||||
let [l:out, l:err] = go#util#Exec(["diff", "-u", l:tmp . '/have', l:tmp . '/want'])
|
||||
finally
|
||||
call delete(l:tmp . '/have')
|
||||
call delete(l:tmp . '/want')
|
||||
call delete(l:tmp, 'd')
|
||||
endtry
|
||||
|
||||
if l:err || l:out != ''
|
||||
let v:errors = extend(v:errors, split(l:out, "\n"))
|
||||
endif
|
||||
endfun
|
||||
|
||||
" Diff the contents of the current buffer to the fixture file in a:path.
|
||||
fun! gotest#assert_fixture(path) abort
|
||||
let l:want = readfile(printf('%s/test-fixtures/%s', g:vim_go_root, a:path))
|
||||
call gotest#assert_buffer(0, l:want)
|
||||
endfun
|
||||
|
||||
|
||||
" vim: sw=2 ts=2 et
|
70
sources_non_forked/vim-go/autoload/unite/sources/decls.vim
Normal file
70
sources_non_forked/vim-go/autoload/unite/sources/decls.vim
Normal file
|
@ -0,0 +1,70 @@
|
|||
let s:save_cpo = &cpoptions
|
||||
set cpoptions&vim
|
||||
|
||||
let s:source = {
|
||||
\ 'name': 'decls',
|
||||
\ 'description': 'GoDecls implementation for unite',
|
||||
\ 'syntax': 'uniteSource__Decls',
|
||||
\ 'action_table': {},
|
||||
\ 'hooks': {},
|
||||
\ }
|
||||
|
||||
function! unite#sources#decls#define()
|
||||
return s:source
|
||||
endfunction
|
||||
|
||||
function! s:source.gather_candidates(args, context) abort
|
||||
let l:bin_path = go#path#CheckBinPath('motion')
|
||||
if empty(l:bin_path)
|
||||
return []
|
||||
endif
|
||||
|
||||
let l:path = expand(get(a:args, 0, '%:p:h'))
|
||||
if isdirectory(l:path)
|
||||
let l:mode = 'dir'
|
||||
elseif filereadable(l:path)
|
||||
let l:mode = 'file'
|
||||
else
|
||||
return []
|
||||
endif
|
||||
|
||||
let l:include = get(g:, 'go_decls_includes', 'func,type')
|
||||
let l:command = printf('%s -format vim -mode decls -include %s -%s %s', l:bin_path, l:include, l:mode, shellescape(l:path))
|
||||
let l:candidates = []
|
||||
try
|
||||
let l:result = eval(unite#util#system(l:command))
|
||||
let l:candidates = get(l:result, 'decls', [])
|
||||
catch
|
||||
call unite#print_source_error(['command returned invalid response.', v:exception], s:source.name)
|
||||
endtry
|
||||
|
||||
return map(l:candidates, "{
|
||||
\ 'word': printf('%s :%d :%s', fnamemodify(v:val.filename, ':~:.'), v:val.line, v:val.full),
|
||||
\ 'kind': 'jump_list',
|
||||
\ 'action__path': v:val.filename,
|
||||
\ 'action__line': v:val.line,
|
||||
\ 'action__col': v:val.col,
|
||||
\ }")
|
||||
endfunction
|
||||
|
||||
function! s:source.hooks.on_syntax(args, context) abort
|
||||
syntax match uniteSource__Decls_Filepath /[^:]*\ze:/ contained containedin=uniteSource__Decls
|
||||
syntax match uniteSource__Decls_Line /\d\+\ze :/ contained containedin=uniteSource__Decls
|
||||
syntax match uniteSource__Decls_WholeFunction /\vfunc %(\([^)]+\) )?[^(]+/ contained containedin=uniteSource__Decls
|
||||
syntax match uniteSource__Decls_Function /\S\+\ze(/ contained containedin=uniteSource__Decls_WholeFunction
|
||||
syntax match uniteSource__Decls_WholeType /type \S\+/ contained containedin=uniteSource__Decls
|
||||
syntax match uniteSource__Decls_Type /\v( )@<=\S+/ contained containedin=uniteSource__Decls_WholeType
|
||||
highlight default link uniteSource__Decls_Filepath Comment
|
||||
highlight default link uniteSource__Decls_Line LineNr
|
||||
highlight default link uniteSource__Decls_Function Function
|
||||
highlight default link uniteSource__Decls_Type Type
|
||||
|
||||
syntax match uniteSource__Decls_Separator /:/ contained containedin=uniteSource__Decls conceal
|
||||
syntax match uniteSource__Decls_SeparatorFunction /func / contained containedin=uniteSource__Decls_WholeFunction conceal
|
||||
syntax match uniteSource__Decls_SeparatorType /type / contained containedin=uniteSource__Decls_WholeType conceal
|
||||
endfunction
|
||||
|
||||
let &cpoptions = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
" vim: sw=2 ts=2 et
|
13
sources_non_forked/vim-go/scripts/docker-test
Normal file
13
sources_non_forked/vim-go/scripts/docker-test
Normal file
|
@ -0,0 +1,13 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Run all tests inside a Docker container
|
||||
#
|
||||
|
||||
set -euC
|
||||
vimgodir=$(cd -P "$(dirname "$0")/.." > /dev/null && pwd)
|
||||
cd "$vimgodir"
|
||||
|
||||
docker build --tag vim-go-test .
|
||||
docker run --rm vim-go-test
|
||||
|
||||
# vim:ts=2:sts=2:sw=2:et
|
112
sources_non_forked/vim-go/scripts/install-vim
Normal file
112
sources_non_forked/vim-go/scripts/install-vim
Normal file
|
@ -0,0 +1,112 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Install and setup a Vim or Neovim for running tests.
|
||||
# This should work on both Travis and people's desktop computers, and be 100%
|
||||
# independent from any system installed Vim.
|
||||
#
|
||||
# It will echo the full path to a Vim binary, e.g.:
|
||||
# /some/path/src/vim
|
||||
|
||||
set -euC
|
||||
|
||||
vimgodir=$(cd -P "$(dirname "$0")/.." > /dev/null && pwd)
|
||||
cd "$vimgodir"
|
||||
|
||||
vim=${1:-}
|
||||
|
||||
case "$vim" in
|
||||
"vim-7.4")
|
||||
# This is what the most recent Ubuntu LTS (16.04) ships with.
|
||||
tag="v7.4.1689"
|
||||
giturl="https://github.com/vim/vim"
|
||||
;;
|
||||
|
||||
"vim-8.0")
|
||||
# This follows the version in Arch Linux. Vim's master branch isn't always
|
||||
# stable, and we don't want to have the build fail because Vim introduced a
|
||||
# bug.
|
||||
tag="v8.0.1176"
|
||||
giturl="https://github.com/vim/vim"
|
||||
;;
|
||||
|
||||
"nvim")
|
||||
# Use latest stable version.
|
||||
tag="v0.2.0"
|
||||
giturl="https://github.com/neovim/neovim"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "unknown version: '${1:-}'"
|
||||
echo "First argument must be 'vim-7.4', 'vim-8.0', or 'nvim'."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
srcdir="/tmp/vim-go-test/$1-src"
|
||||
installdir="/tmp/vim-go-test/$1-install"
|
||||
|
||||
# Use cached installdir.
|
||||
if [ -d "$installdir" ]; then
|
||||
echo "$installdir exists; skipping build."
|
||||
|
||||
# The ./scripts/test script relies on this.
|
||||
echo "installed to: $installdir"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mkdir -p "$srcdir"
|
||||
cd "$srcdir"
|
||||
|
||||
# Neovim build requires more deps than Vim and is annoying, so we use the
|
||||
# binary.
|
||||
# 0.2.0 doesn't have a binary build for Linux, so we use 0.2.1-dev for now.
|
||||
if [ "$1" = "nvim" ]; then
|
||||
|
||||
# TODO: Use macOS binaries on macOS
|
||||
curl -Ls https://github.com/neovim/neovim/releases/download/nightly/nvim-linux64.tar.gz |
|
||||
tar xzf - -C /tmp/vim-go-test/
|
||||
mv /tmp/vim-go-test/nvim-linux64 /tmp/vim-go-test/nvim-install
|
||||
mkdir -p "$installdir/share/nvim/runtime/pack/vim-go/start"
|
||||
ln -s "$vimgodir" "$installdir/share/nvim/runtime/pack/vim-go/start/vim-go"
|
||||
|
||||
# Consistent paths makes calling things easier.
|
||||
mv "$installdir/bin/nvim" "$installdir/bin/vim"
|
||||
mkdir -p "$installdir/share/vim/vimgo/pack"
|
||||
ln -s "$installdir/share/nvim/runtime/pack/vim-go" "$installdir/share/vim/vimgo/pack/vim-go"
|
||||
|
||||
# Build Vim from source.
|
||||
else
|
||||
if [ -d "$srcdir/.git" ]; then
|
||||
echo "Skipping clone as $srcdir/.git exists"
|
||||
else
|
||||
echo "Cloning $tag from $giturl"
|
||||
git clone --branch "$tag" --depth 1 "$giturl" "$srcdir"
|
||||
fi
|
||||
|
||||
./configure --prefix="$installdir" --with-features=huge --disable-gui
|
||||
make install
|
||||
mkdir -p "$installdir/share/vim/vimgo/pack/vim-go/start"
|
||||
ln -s "$vimgodir" "$installdir/share/vim/vimgo/pack/vim-go/start/vim-go"
|
||||
fi
|
||||
|
||||
# Make sure all Go tools and other dependencies are installed.
|
||||
echo "Installing Go binaries"
|
||||
export GOPATH=$installdir
|
||||
export PATH=${GOPATH}/bin:$PATH
|
||||
"$vimgodir/scripts/run-vim" $vim +':silent :GoUpdateBinaries' +':qa'
|
||||
|
||||
echo "Installing lint tools"
|
||||
(
|
||||
mkdir -p "$installdir/share/vim/vimgo/pack/vim-go/start/"
|
||||
cd "$installdir/share/vim/vimgo/pack/vim-go/start/"
|
||||
[ -d "vim-vimhelplint" ] || git clone --depth 1 --quiet https://github.com/machakann/vim-vimhelplint
|
||||
[ -d "vim-vimlparser" ] || git clone --depth 1 --quiet https://github.com/ynkdir/vim-vimlparser
|
||||
[ -d "vim-vimlint" ] || git clone --depth 1 --quiet https://github.com/syngan/vim-vimlint
|
||||
)
|
||||
|
||||
# Don't really need source after successful install.
|
||||
rm -rf "$srcdir"
|
||||
|
||||
echo "installed to: $installdir"
|
||||
|
||||
# vim:ts=2:sts=2:sw=2:et
|
88
sources_non_forked/vim-go/scripts/lint
Normal file
88
sources_non_forked/vim-go/scripts/lint
Normal file
|
@ -0,0 +1,88 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Run all linting tools.
|
||||
#
|
||||
|
||||
set -euC
|
||||
vimgodir=$(cd -P "$(dirname "$0")/.." > /dev/null && pwd)
|
||||
cd "$vimgodir"
|
||||
|
||||
### Setup Vim and other dependencies.
|
||||
#####################################
|
||||
if [ -z "${1:-}" ]; then
|
||||
echo "unknown version: '${1:-}'"
|
||||
echo "First argument must be 'vim-7.4', 'vim-8.0', or 'nvim'."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
vim=$1
|
||||
vimdir="/tmp/vim-go-test/$vim-install"
|
||||
export GOPATH=$vimdir
|
||||
export PATH=${GOPATH}/bin:$PATH
|
||||
|
||||
if [ ! -f "$vimdir/bin/vim" ]; then
|
||||
echo "$vimdir/bin/vim doesn't exist; did you install it with the install-vim script?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
### Run vint
|
||||
############
|
||||
failed=0
|
||||
printf "Running vint ... "
|
||||
if [ -x "$(command -v vint)" ]; then
|
||||
lint=$(vint "$vimgodir" 2>&1 ||:)
|
||||
if [ -n "$lint" ]; then
|
||||
echo "FAILED"
|
||||
echo "$lint"
|
||||
echo
|
||||
failed=6
|
||||
else
|
||||
echo "PASSED"
|
||||
fi
|
||||
else
|
||||
echo "SKIPPED"
|
||||
echo "'vint' binary not found; use 'pip install vim-vint' to install it."
|
||||
fi
|
||||
|
||||
### Run vim-vimlint
|
||||
###################
|
||||
printf "Running vim-vimlint ... "
|
||||
lint=$(sh "$vimdir/share/vim/vimgo/pack/vim-go/start/vim-vimlint/bin/vimlint.sh" \
|
||||
-p "$vimdir/share/vim/vimgo/pack/vim-go/start/vim-vimlparser" \
|
||||
-l "$vimdir/share/vim/vimgo/pack/vim-go/start/vim-vimlint" \
|
||||
-u \
|
||||
-c func_abort=1 \
|
||||
-e EVL110=1 -e EVL103=1 -e EVL104=1 -e EVL102=1 \
|
||||
"$vimgodir" \
|
||||
2>&1 ||:)
|
||||
if [ -n "$lint" ]; then
|
||||
echo "FAILED"
|
||||
echo "$lint"
|
||||
echo
|
||||
failed=6
|
||||
else
|
||||
echo "PASSED"
|
||||
fi
|
||||
|
||||
### Run vimhelplint.
|
||||
####################
|
||||
printf "Running vimhelplint ... "
|
||||
|
||||
# set modeline explicitly so that the modeline will be respected when run as root.
|
||||
lint=$($vimdir/bin/vim -esNR \
|
||||
--cmd "set rtp+=$vimdir/share/vim/vimgo/pack/vim-go/start/vim-vimhelplint/" \
|
||||
--cmd 'set modeline' \
|
||||
+'filetype plugin on' \
|
||||
+"e $vimgodir/doc/vim-go.txt" \
|
||||
+'verbose VimhelpLintEcho' \
|
||||
+q \
|
||||
2>&1 ||:)
|
||||
if [ "$lint" ]; then
|
||||
echo "FAILED"
|
||||
echo "$lint"
|
||||
failed=6
|
||||
else
|
||||
echo "PASSED"
|
||||
fi
|
||||
|
||||
exit "$failed"
|
33
sources_non_forked/vim-go/scripts/run-vim
Normal file
33
sources_non_forked/vim-go/scripts/run-vim
Normal file
|
@ -0,0 +1,33 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Run a "bare" Vim with just vim-go and ignoring ~/.vim
|
||||
#
|
||||
|
||||
set -euC
|
||||
vimgodir=$(cd -P "$(dirname "$0")/.." > /dev/null && pwd)
|
||||
cd "$vimgodir"
|
||||
|
||||
if [ -z "${1:-}" ]; then
|
||||
echo "unknown version: '${1:-}'"
|
||||
echo "First argument must be 'vim-7.4', 'vim-8.0', or 'nvim'."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dir="/tmp/vim-go-test/$1-install"
|
||||
export GOPATH=$dir
|
||||
export PATH=${GOPATH}/bin:$PATH
|
||||
shift
|
||||
|
||||
if [ ! -f "$dir/bin/vim" ]; then
|
||||
echo "$dir/bin/vim doesn't exist; did you install it with the install-vim script?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
$dir/bin/vim --noplugin -u NONE -N \
|
||||
+"set shm+=WAFI rtp=$dir/share/vim/vimgo packpath=$dir/share/vim/vimgo,$vimgodir" \
|
||||
+'filetype plugin indent on' \
|
||||
+'packloadall!' \
|
||||
"$@"
|
||||
|
||||
|
||||
# vim:ts=2:sts=2:sw=2:et
|
51
sources_non_forked/vim-go/scripts/test
Normal file
51
sources_non_forked/vim-go/scripts/test
Normal file
|
@ -0,0 +1,51 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Run all tests.
|
||||
#
|
||||
|
||||
set -euC
|
||||
vimgodir=$(cd -P "$(dirname "$0")/.." > /dev/null && pwd)
|
||||
cd "$vimgodir"
|
||||
|
||||
### Setup Vim and other dependencies.
|
||||
#####################################
|
||||
if [ -z "${1:-}" ]; then
|
||||
echo "unknown version: '${1:-}'"
|
||||
echo "First argument must be 'vim-7.4', 'vim-8.0', or 'nvim'."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
vim=$1
|
||||
vimdir="/tmp/vim-go-test/$vim-install"
|
||||
export GOPATH=$vimdir
|
||||
export PATH=${GOPATH}/bin:$PATH
|
||||
|
||||
if [ ! -f "$vimdir/bin/vim" ]; then
|
||||
echo "$vimdir/bin/vim doesn't exist; did you install it with the install-vim script?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
### Run tests.
|
||||
##############
|
||||
# Clean stale log file.
|
||||
[ -f '/tmp/vim-go-test/test.log' ] && rm '/tmp/vim-go-test/test.log'
|
||||
[ -f '/tmp/vim-go-test/FAILED' ] && rm '/tmp/vim-go-test/FAILED'
|
||||
|
||||
# Run the actual tests.
|
||||
fail=0
|
||||
for test_file in "$vimgodir"/autoload/go/*_test.vim; do
|
||||
"$vimgodir/scripts/run-vim" $vim -e +"silent e $test_file" -S ./scripts/runtest.vim
|
||||
|
||||
# Append logs
|
||||
cat '/tmp/vim-go-test/test.tmp' | tee '/tmp/vim-go-test/test.log'
|
||||
rm '/tmp/vim-go-test/test.tmp'
|
||||
done
|
||||
|
||||
echo
|
||||
if [ -f "/tmp/vim-go-test/FAILED" ]; then
|
||||
echo 2>&1 "Some tests FAILED"
|
||||
exit 1
|
||||
fi
|
||||
echo 2>&1 "All tests PASSED"
|
||||
|
||||
# vim:ts=2:sts=2:sw=2:et
|
|
@ -0,0 +1,5 @@
|
|||
priority -50
|
||||
|
||||
snippet impq "Qualified import"
|
||||
import qualified ${1:Data.Text} as ${0:`!p snip.rv = t[1].split(".")[-1]`}
|
||||
endsnippet
|
340
sources_non_forked/vim-snippets/UltiSnips/robot.snippets
Normal file
340
sources_non_forked/vim-snippets/UltiSnips/robot.snippets
Normal file
|
@ -0,0 +1,340 @@
|
|||
##############################################################################
|
||||
# Robot Framework Snippets for UltiSnips #
|
||||
##############################################################################
|
||||
|
||||
priority -50
|
||||
|
||||
######################
|
||||
# Built In library #
|
||||
######################
|
||||
snippet cat "Catenate"
|
||||
Catenate SEPARATOR=${1:---} ${2:Hello} ${3:world}
|
||||
endsnippet
|
||||
|
||||
snippet eval "Evaluate"
|
||||
\${${1:val}}= Evaluate ${2:${x} - 10}
|
||||
endsnippet
|
||||
|
||||
snippet for "FOR loop" b
|
||||
:FOR ${${1:element}} IN ${2:@{ELEMENTS}}
|
||||
\ ${0:${VISUAL:Start Element}} ${$1}
|
||||
endsnippet
|
||||
|
||||
snippet nop "No Operation"
|
||||
No Operation
|
||||
endsnippet
|
||||
|
||||
snippet rfk "Return From Keyword"
|
||||
Return From Keyword ${1:${optional return value}}
|
||||
endsnippet
|
||||
|
||||
snippet rfki "Return From Keyword If"
|
||||
Return From Keyword If ${1:${condition}} ${2:${optional return value}}
|
||||
endsnippet
|
||||
|
||||
snippet rk "Run Keyword"
|
||||
Run Keyword ${1:${kw}} ${2:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rkacof "Run Keyword And Continue On Failure"
|
||||
Run Keyword And Continue On Failure ${1:${kw}} ${2:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rkaee "Run Keyword And Expect Error"
|
||||
Run Keyword And Expect Error ${1:My error} ${2:${kw}} ${3:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rkaie "Run Keyword And Ignore Error"
|
||||
Run Keyword And Ignore Error ${1:${kw}} ${2:${args}}
|
||||
\${${3:result}} \${${4:return_value}}= Run Keyword And Ignore Error ${1:${kw}} ${2:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rkar "Run Keyword And Return"
|
||||
Run Keyword And Return ${1:${kw}} ${2:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rkari "Run Keyword And Return If"
|
||||
Run Keyword And Return If ${1:{condition}} ${2:${kw}} ${3:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rkars "Run Keyword And Return Status"
|
||||
\${${3:result}}= Run Keyword And Return Status ${1:${kw}} ${2:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rki "Run Keyword If"
|
||||
Run Keyword If ${1:${rc} < 0} ${2:${VISUAL:Some keyword returning a value}}
|
||||
... ELSE IF ${3:'${str}' == 'abc'} ${4:Another keyword}
|
||||
... ELSE ${5:Final keyword}
|
||||
endsnippet
|
||||
|
||||
snippet rkiactf "Run Keyword If Any Critical Tests Failed"
|
||||
Run Keyword If Any Critical Tests Failed ${1:${kw}} ${2:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rkiactp "Run Keyword If All Critical Tests Passed"
|
||||
Run Keyword If All Critical Tests Passed ${1:${kw}} ${2:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rkiatf "Run Keyword If Any Tests Failed"
|
||||
Run Keyword If Any Tests Failed ${1:${kw}} ${2:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rkiatp "Run Keyword If All Tests Passed"
|
||||
Run Keyword If All Tests Passed ${1:${kw}} ${2:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rkitf "Run Keyword If Test Failed"
|
||||
Run Keyword If Test Failed ${1:${kw}} ${2:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rkitp "Run Keyword If Test Passed"
|
||||
Run Keyword If Test Passed ${1:${kw}} ${2:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rkito "Run Keyword If Timeout Occurred"
|
||||
Run Keyword If Timeout Occurred ${1:${kw}} ${2:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet rks "Run Keywords"
|
||||
Run Keywords
|
||||
... ${1:${VISUAL:Initialize database $\{DB NAME\}}} AND
|
||||
... ${2:Clear logs}
|
||||
endsnippet
|
||||
|
||||
snippet rku "Run Keyword Unless"
|
||||
Run Keyword Unless ${1:${condition}} ${2:${kw}} ${3:${args}}
|
||||
endsnippet
|
||||
|
||||
snippet sgv "Set Global Variable"
|
||||
Set Global Variable \${${1:name}} ${2:${value}}
|
||||
endsnippet
|
||||
|
||||
snippet sleep "Sleep"
|
||||
Sleep ${1:2 minutes 10 seconds}
|
||||
endsnippet
|
||||
|
||||
snippet ssv "Set Suite Variable"
|
||||
Set Suite Variable \${${1:name}} ${2:${value}}
|
||||
endsnippet
|
||||
|
||||
snippet stv "Set Test Variable"
|
||||
Set Test Variable \${${1:name}} ${2:${value}}
|
||||
endsnippet
|
||||
|
||||
snippet sv "Set Variable"
|
||||
\${${1:name}}= Set Variable ${2:${value}}
|
||||
endsnippet
|
||||
|
||||
snippet svi "Set Variable If"
|
||||
\${${1:var}}= Set Variable If ${2:${condition}} ${3:${value true}} ${4:${value false}}
|
||||
endsnippet
|
||||
|
||||
snippet wuks "Wait Until Keyword Succeeds"
|
||||
Wait Until Keyword Succeeds ${1:10x} ${2:2s} ${3:${VISUAL:Some Keyword}}
|
||||
endsnippet
|
||||
|
||||
|
||||
#####################
|
||||
# Dialogs library #
|
||||
#####################
|
||||
snippet pause "Pause test execution"
|
||||
Import library Dialogs
|
||||
Pause execution
|
||||
endsnippet
|
||||
|
||||
|
||||
##############################
|
||||
# Selenium2Library library #
|
||||
##############################
|
||||
snippet cps "Capture Page Screenshot"
|
||||
Capture Page Screenshot ${1:${optional filename}}
|
||||
endsnippet
|
||||
|
||||
snippet esbd "Element Should Be Disabled"
|
||||
Element Should Be Disabled \${${1:locator}}
|
||||
endsnippet
|
||||
|
||||
snippet esbe "Element Should Be Enabled"
|
||||
Element Should Be Enabled ${${1:locator}}
|
||||
endsnippet
|
||||
|
||||
snippet esbf "Element Should Be Focused"
|
||||
Element Should Be Focused ${${1:locator}}
|
||||
endsnippet
|
||||
|
||||
snippet esbv "Element Should Be Visible"
|
||||
Element Should Be Visible ${${1:locator}} ${2:${optional message}}
|
||||
endsnippet
|
||||
|
||||
snippet esc "Element Should Contain"
|
||||
Element Should Contain ${${1:locator}} ${2:${expected}} ${3:${optional message}}
|
||||
endsnippet
|
||||
|
||||
snippet esnbv "Element Should Not Be Visible"
|
||||
Element Should Not Be Visible ${${1:locator}} ${2:${optional message}}
|
||||
endsnippet
|
||||
|
||||
snippet esnc "Element Should Not Contain"
|
||||
Element Should Not Contain ${${1:locator}} ${2:${expected}} ${3:${optional message}}
|
||||
endsnippet
|
||||
|
||||
snippet etsb "Element Text Should Be"
|
||||
Element Text Should Be ${${1:locator}} ${2:${expected}} ${3:${optional message}}
|
||||
endsnippet
|
||||
|
||||
snippet eaj "Execute Async Javascript"
|
||||
Execute Async Javascript ${1:${code line 1}} ${2:${code line 2}}
|
||||
endsnippet
|
||||
|
||||
snippet ej "Execute Javascript"
|
||||
Execute Javascript ${1:${code line 1}} ${2:${code line 2}}
|
||||
endsnippet
|
||||
|
||||
snippet gwp "Get Window Position"
|
||||
\${${1:x}} \${${2:y}}= Get Window Position
|
||||
endsnippet
|
||||
|
||||
snippet gws "Get Window Size"
|
||||
\${${1:width}} \${${2:height}}= Get Window Size
|
||||
endsnippet
|
||||
|
||||
snippet mbw "Maximize Browser Window"
|
||||
Maximize Browser Window
|
||||
endsnippet
|
||||
|
||||
snippet md "Mouse Down"
|
||||
Mouse Down ${${1:locator}}
|
||||
endsnippet
|
||||
|
||||
snippet mdoi "Mouse Down On Image"
|
||||
Mouse Down On Image ${1:${locator}}
|
||||
endsnippet
|
||||
|
||||
snippet mdol "Mouse Down On Link"
|
||||
Mouse Down On Link ${1:${locator}}
|
||||
endsnippet
|
||||
|
||||
snippet mout "Mouse Out"
|
||||
Mouse Out ${1:${locator}}
|
||||
endsnippet
|
||||
|
||||
snippet mover "Mouse Over"
|
||||
Mouse Over ${1:${locator}}
|
||||
endsnippet
|
||||
|
||||
snippet mu "Mouse Up"
|
||||
Mouse Up ${1:${locator}}
|
||||
endsnippet
|
||||
|
||||
snippet ob "Open Browser"
|
||||
Open Browser ${1:${url}} ${2:${browser=firefox}} ${3:${alias=None}} ${4:${remote_url=False}} ${5:${desired_capabilities=None}} ${6:${ff_profile_dir=None}}
|
||||
endsnippet
|
||||
|
||||
snippet ocm "Open Context Menu"
|
||||
Open Context Menu ${1:${locator}}
|
||||
endsnippet
|
||||
|
||||
snippet psc "Page Should Contain"
|
||||
Page Should Contain ${1:${text}} ${2:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet pscb "Page Should Contain Button"
|
||||
Page Should Contain Button ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet pscc "Page Should Contain Checkbox"
|
||||
Page Should Contain Checkbox ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet psce "Page Should Contain Element"
|
||||
Page Should Contain Element ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet psci "Page Should Contain Image"
|
||||
Page Should Contain Image ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet pscl "Page Should Contain Link"
|
||||
Page Should Contain Link ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet pscrb "Page Should Contain Radio Button"
|
||||
Page Should Contain Radio Button ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet psct "Page Should Contain Textfield"
|
||||
Page Should Contain Textfield ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet psnc "Page Should Not Contain"
|
||||
Page Should Not Contain ${1:${text}} ${2:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet psncb "Page Should Not Contain Button"
|
||||
Page Should Not Contain Button ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet psncc "Page Should Not Contain Checkbox"
|
||||
Page Should Not Contain Checkbox ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet psnce "Page Should Not Contain Element"
|
||||
Page Should Not Contain Element ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet psnci "Page Should Not Contain Image"
|
||||
Page Should Not Contain Image ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet psncl "Page Should Not Contain Link"
|
||||
Page Should Not Contain Link ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet psncrb "Page Should Not Contain Radio Button"
|
||||
Page Should Not Contain Radio Button ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet psnct "Page Should Not Contain Textfield"
|
||||
Page Should Not Contain Textfield ${1:${locator}} ${2:${message=}} ${3:loglevel=INFO}
|
||||
endsnippet
|
||||
|
||||
snippet rktrof "Register Keyword To Run On Failure"
|
||||
Register Keyword To Run On Failure ${1:${kw}}
|
||||
endsnippet
|
||||
|
||||
snippet wuec "Wait Until Element Contains"
|
||||
Wait Until Element Contains ${1:${locator}} ${2:${text}} ${3:${timeout=None}} ${4:${error=None}}
|
||||
endsnippet
|
||||
|
||||
snippet wuednc "Wait Until Element Does Not Contain"
|
||||
Wait Until Element Does Not Contain ${1:${locator}} ${2:${text}} ${3:${timeout=None}} ${4:${error=None}}
|
||||
endsnippet
|
||||
|
||||
snippet wueie "Wait Until Element Is Enabled"
|
||||
Wait Until Element Is Enabled ${1:${locator}} ${2:${timeout=None}} ${3:${error=None}}
|
||||
endsnippet
|
||||
|
||||
snippet wueinv "Wait Until Element Is Not Visible"
|
||||
Wait Until Element Is Not Visible ${1:${locator}} ${2:${timeout=None}} ${3:${error=None}}
|
||||
endsnippet
|
||||
|
||||
snippet wueiv "Wait Until Element Is Visible"
|
||||
Wait Until Element Is Visible ${1:${locator}} ${2:${timeout=None}} ${3:${error=None}}
|
||||
endsnippet
|
||||
|
||||
snippet wupc "Wait Until Page Contains"
|
||||
Wait Until Page Contains ${1:${text}} ${2:${timeout=None}} ${3:${error=None}}
|
||||
endsnippet
|
||||
|
||||
snippet wupce "Wait Until Page Contains Element"
|
||||
Wait Until Page Contains Element ${1:${locator}} ${2:${timeout=None}} ${3:${error=None}}
|
||||
endsnippet
|
||||
|
||||
snippet wupdnc "Wait Until Page Does Not Contain"
|
||||
Wait Until Page Does Not Contain ${1:${text}} ${2:${timeout=None}} ${3:${error=None}}
|
||||
endsnippet
|
||||
|
||||
snippet wupdnce "Wait Until Page Does Not Contain Element"
|
||||
Wait Until Page Does Not Contain Element ${1:${locator}} ${2:${timeout=None}} ${3:${error=None}}
|
||||
endsnippet
|
||||
|
|
@ -0,0 +1,205 @@
|
|||
snippet sapmlabel
|
||||
var $1 = new sap.m.Label({
|
||||
design : $2,
|
||||
text : $3,
|
||||
visible : $4,
|
||||
textAlign : $5,
|
||||
textDirection : $6,
|
||||
width : $7,
|
||||
required : $7
|
||||
});
|
||||
|
||||
snippet sapmtext
|
||||
var $1 = new sap.m.Text({
|
||||
text :$2,
|
||||
textDirection :$3,
|
||||
visible :$4,
|
||||
wrapping : $5,
|
||||
textAlign : $6,
|
||||
width :$7,
|
||||
maxLines :$8
|
||||
});
|
||||
|
||||
snippet sapmbutton
|
||||
var $1 = new sap.m.Button({
|
||||
text : $2,
|
||||
type : $3,
|
||||
width : $4,
|
||||
enabled :$5,
|
||||
visible :$6,
|
||||
icon : $7,
|
||||
iconFirst : $8,
|
||||
activeIcon :$9,
|
||||
iconDensityAware : $10,
|
||||
});
|
||||
snippet sapmflexbox
|
||||
var $1 = new sap.m.FlexBox({
|
||||
visible : $2,
|
||||
height : $3,
|
||||
width : $4,
|
||||
displayInline :$5,
|
||||
direction :$6,
|
||||
fitContainer : $7,
|
||||
renderType : $8,
|
||||
justifyContent :$9,
|
||||
alignItems : $10,
|
||||
items:[]
|
||||
});
|
||||
snippet sapmhbox
|
||||
var $1 = new sap.m.HBox({
|
||||
visible : $2,
|
||||
height : $3,
|
||||
width : $4,
|
||||
displayInline :$5,
|
||||
direction :$6,
|
||||
fitContainer : $7,
|
||||
renderType : $8,
|
||||
justifyContent :$9,
|
||||
alignItems : $10,
|
||||
items:[]
|
||||
});
|
||||
|
||||
snippet sapmvbox
|
||||
var $1 = new sap.m.VBox({
|
||||
visible : $2,
|
||||
height : $3,
|
||||
width : $4,
|
||||
displayInline :$5,
|
||||
direction :$6,
|
||||
fitContainer : $7,
|
||||
renderType : $8,
|
||||
justifyContent :$9,
|
||||
alignItems : $10,
|
||||
items:[]
|
||||
});
|
||||
|
||||
snippet sapcomponent
|
||||
sap.ui.controller("$1", {
|
||||
onInit: function(){
|
||||
},
|
||||
onAfterRendering: function() {
|
||||
},
|
||||
onAfterRendering: function() {
|
||||
},
|
||||
onExit: function() {
|
||||
},
|
||||
});
|
||||
|
||||
snippet sapminput
|
||||
var $1 = new sap.m.Input({
|
||||
value :$2,
|
||||
width : $3,
|
||||
enabled :$4,
|
||||
visible :$5,
|
||||
valueState :$6,
|
||||
name : $7,
|
||||
placeholder : $8,
|
||||
editable : $9,
|
||||
type : $10,
|
||||
maxLength :$11,
|
||||
valueStateText :$12,
|
||||
showValueStateMessage :$13,
|
||||
dateFormat :$14,
|
||||
showValueHelp :$15,
|
||||
showSuggestion :$16,
|
||||
valueHelpOnly :$17,
|
||||
filterSuggests :$18,
|
||||
maxSuggestionWidth :$19,
|
||||
startSuggestion : $20,
|
||||
showTableSuggestionValueHelp : $21,
|
||||
description : $22,
|
||||
fieldWidth : $23,
|
||||
valueLiveUpdate :$24,
|
||||
suggestionItems :[$25],
|
||||
suggestionColumns : [$26],
|
||||
suggestionRows : [$27],
|
||||
liveChange : $28,
|
||||
valueHelpRequest :$29,
|
||||
suggest : $30,
|
||||
suggestionItemSelected : $31
|
||||
});
|
||||
snippet _sthis
|
||||
var _self = this;
|
||||
|
||||
snippet sapmresponsivepopup
|
||||
var $1 = new sap.m.ResponsivePopover({
|
||||
placement :$2 ,//sap.m.PlacementType (default: sap.m.PlacementType.Right)
|
||||
showHeader :$3 ,//boolean (default: true)
|
||||
title : $4,//string
|
||||
icon :$5 ,//sap.ui.core.URI
|
||||
modal :$6 ,// boolean
|
||||
offsetX :$7, //int
|
||||
offsetY :$8, //int
|
||||
contentWidth : $9,//sap.ui.core.CSSSize
|
||||
contentHeight :$10, //sap.ui.core.CSSSize
|
||||
horizontalScrolling :$11, //boolean
|
||||
verticalScrolling :$12, //boolean
|
||||
showCloseButton :$13, //boolean (default: true)
|
||||
//Aggregations
|
||||
content :$14, //sap.ui.core.Control[]
|
||||
customHeader :$15, //sap.m.IBar
|
||||
subHeader : $16, //sap.m.IBar
|
||||
beginButton :$17, //sap.m.Button
|
||||
endButton : $18, //sap.m.Button
|
||||
//Associations
|
||||
initialFocus : $19, //string | sap.ui.core.Control
|
||||
//Events
|
||||
beforeOpen :$20, //fnListenerFunction or [fnListenerFunction, oListenerObject] or [oData, fnListenerFunction, oListenerObject]
|
||||
afterOpen : $21, //fnListenerFunction or [fnListenerFunction, oListenerObject] or [oData, fnListenerFunction, oListenerObject]
|
||||
beforeClose : $22, //fnListenerFunction or [fnListenerFunction, oListenerObject] or [oData, fnListenerFunction, oListenerObject]
|
||||
afterClose : $23 //fnList
|
||||
});
|
||||
|
||||
snippet sapicon
|
||||
var $1 = new sap.ui.core.Icon({
|
||||
src :$2 , //sap.ui.core.URI
|
||||
size :$3 , //sap.ui.core.CSSSize
|
||||
color :$4 , //sap.ui.core.CSSColor
|
||||
hoverColor : $5 , // sap.ui.core.CSSColor
|
||||
activeColor :$6 , //sap.ui.core.CSSColor
|
||||
width :$7 , //sap.ui.core.CSSSize
|
||||
height : $8 ,//sap.ui.core.CSSSize
|
||||
backgroundColor :$8 , //sap.ui.core.CSSColor
|
||||
hoverBackgroundColor :$9 , //sap.ui.core.CSSColor
|
||||
activeBackgroundColor :$10 , //sap.ui.core.CSSColor
|
||||
visible :$11 , //boolean (default: true)
|
||||
decorative : $12 ,//boolean (default: true)
|
||||
});
|
||||
snippet extendVerticalL
|
||||
sap.ui.layout.VerticalLayout.extend("$1", {
|
||||
metadata: {
|
||||
properties: {
|
||||
$2
|
||||
},
|
||||
aggregations: {
|
||||
$3
|
||||
},
|
||||
events: {
|
||||
$4
|
||||
}
|
||||
},
|
||||
init: function(){
|
||||
$5
|
||||
},
|
||||
|
||||
renderer: "$6"
|
||||
});
|
||||
snippet extendHorizontalL
|
||||
sap.ui.layout.HorizontalLayout.extend("$1", {
|
||||
metadata: {
|
||||
properties: {
|
||||
$2
|
||||
},
|
||||
aggregations: {
|
||||
$3
|
||||
},
|
||||
events: {
|
||||
$4
|
||||
}
|
||||
},
|
||||
init: function(){
|
||||
$5
|
||||
},
|
||||
|
||||
renderer: "$6"
|
||||
});
|
38
sources_non_forked/vim-snippets/snippets/reason.snippets
Normal file
38
sources_non_forked/vim-snippets/snippets/reason.snippets
Normal file
|
@ -0,0 +1,38 @@
|
|||
snippet doc
|
||||
/*
|
||||
${0}
|
||||
*/
|
||||
snippet let
|
||||
let ${1} = ${0};
|
||||
snippet fn
|
||||
let ${1} => {
|
||||
${0}
|
||||
};
|
||||
snippet fn0
|
||||
let ${1} () => {
|
||||
${0}
|
||||
};
|
||||
snippet fun
|
||||
fun ${1} => ${0}
|
||||
snippet ty
|
||||
type ${1} = ${1};
|
||||
snippet mod
|
||||
module ${1} = {
|
||||
${0}
|
||||
};
|
||||
snippet modty
|
||||
module type ${1} = {
|
||||
${0}
|
||||
};
|
||||
snippet sw
|
||||
switch ${1} {
|
||||
| ${2} => ${0}
|
||||
}
|
||||
snippet |
|
||||
| ${1} => ${0}
|
||||
snippet if
|
||||
if (${1}) {
|
||||
${2}
|
||||
} else {
|
||||
${0}
|
||||
}
|
Loading…
Reference in a new issue