summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Brabandt <cb@256bit.org>2023-08-27 17:52:18 +0100
committerGitHub <noreply@github.com>2023-08-27 18:52:18 +0200
commite5e04306bf02aa4ad488558dd593cf5c3b72f9b7 (patch)
treec566e36fbe7ecac49940b12b83435caa0e7c851c
parent6dfdff3f273dcea29099d81e3eceb871ae089998 (diff)
runtime: Distribute the editorconfig with vim (#12902)
This is the editorconfig-vim plugin Commit e014708e917b457e8f6c57f357d55dd3826880d4 from https://github.com/editorconfig/editorconfig-vim closes: #2286 related: https://github.com/editorconfig/editorconfig-vim/issues/223 Signed-off-by: Christian Brabandt <cb@256bit.org>
-rw-r--r--runtime/pack/dist/opt/editorconfig/.appveyor.yml105
-rw-r--r--runtime/pack/dist/opt/editorconfig/.editorconfig27
-rw-r--r--runtime/pack/dist/opt/editorconfig/.gitignore8
-rw-r--r--runtime/pack/dist/opt/editorconfig/.gitmodules6
-rw-r--r--runtime/pack/dist/opt/editorconfig/.travis.yml30
-rw-r--r--runtime/pack/dist/opt/editorconfig/CONTRIBUTORS6
-rw-r--r--runtime/pack/dist/opt/editorconfig/LICENSE26
-rwxr-xr-xruntime/pack/dist/opt/editorconfig/LICENSE.PSF53
-rw-r--r--runtime/pack/dist/opt/editorconfig/README.md148
-rw-r--r--runtime/pack/dist/opt/editorconfig/autoload/editorconfig.vim60
-rw-r--r--runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core.vim147
-rw-r--r--runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/fnmatch.vim467
-rw-r--r--runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/handler.vim183
-rw-r--r--runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/ini.vim264
-rw-r--r--runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/util.vim84
-rw-r--r--runtime/pack/dist/opt/editorconfig/doc/editorconfig.txt233
-rw-r--r--runtime/pack/dist/opt/editorconfig/ftdetect/editorconfig.vim1
-rwxr-xr-xruntime/pack/dist/opt/editorconfig/mkzip.sh3
-rw-r--r--runtime/pack/dist/opt/editorconfig/plugin/editorconfig.vim614
-rw-r--r--runtime/pack/dist/opt/editorconfig/tests/core/CMakeLists.txt53
-rw-r--r--runtime/pack/dist/opt/editorconfig/tests/core/CTestCustom.cmake41
-rwxr-xr-xruntime/pack/dist/opt/editorconfig/tests/core/ecvbslib.vbs171
-rwxr-xr-xruntime/pack/dist/opt/editorconfig/tests/core/ecvimlib.ps1140
-rwxr-xr-xruntime/pack/dist/opt/editorconfig/tests/core/editorconfig219
-rwxr-xr-xruntime/pack/dist/opt/editorconfig/tests/core/editorconfig.bat11
-rwxr-xr-xruntime/pack/dist/opt/editorconfig/tests/core/editorconfig1.vbs39
-rwxr-xr-xruntime/pack/dist/opt/editorconfig/tests/core/editorconfig2.ps1218
-rwxr-xr-xruntime/pack/dist/opt/editorconfig/tests/fetch-vim.bat12
-rwxr-xr-xruntime/pack/dist/opt/editorconfig/tests/fetch-vim.sh41
-rw-r--r--runtime/pack/dist/opt/editorconfig/tests/plugin/.gitignore2
-rw-r--r--runtime/pack/dist/opt/editorconfig/tests/plugin/Gemfile5
-rw-r--r--runtime/pack/dist/opt/editorconfig/tests/plugin/Gemfile.lock27
-rw-r--r--runtime/pack/dist/opt/editorconfig/tests/plugin/Rakefile8
-rw-r--r--runtime/pack/dist/opt/editorconfig/tests/plugin/spec/.editorconfig4
-rw-r--r--runtime/pack/dist/opt/editorconfig/tests/plugin/spec/editorconfig_spec.rb169
-rwxr-xr-xruntime/pack/dist/opt/editorconfig/tests/travis-test.sh56
36 files changed, 3681 insertions, 0 deletions
diff --git a/runtime/pack/dist/opt/editorconfig/.appveyor.yml b/runtime/pack/dist/opt/editorconfig/.appveyor.yml
new file mode 100644
index 0000000000..2e253dfddc
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/.appveyor.yml
@@ -0,0 +1,105 @@
+# appveyor.yml for editorconfig-vim. Currently only tests the core.
+# Modified from https://github.com/ppalaga/ec4j/commit/1c849658fb189cd95bc41af95acd43b4f0d75a48
+#
+# Copyright (c) 2017--2019 Angelo Zerr and other contributors as
+# indicated by the @author tags.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# @author Chris White (cxw42) - Adapted to editorconfig-vim
+
+# === When to build ===
+# See https://www.appveyor.com/docs/how-to/filtering-commits/
+
+skip_commits:
+ message: /\[minor\]/
+ files:
+ - '**/*.md'
+
+# === Build matrix ===
+
+# Win is default; Ubuntu is override. See
+# https://www.appveyor.com/blog/2018/04/25/specialized-build-matrix-configuration-in-appveyor/
+image:
+ - Visual Studio 2013
+ - Ubuntu1604
+
+# === How to build ===
+
+cache:
+ - C:\vim -> .appveyor.yml, tests\fetch-vim.bat
+
+environment:
+ VIM_EXE: C:\vim\vim\vim80\vim.exe
+
+for:
+ # Don't run the Windows build if the commit message includes "[ci-linux]"
+ -
+ matrix:
+ only:
+ - image: Visual Studio 2013
+ skip_commits:
+ message: /\[ci-linux\]/
+
+ # Platform-specific configuration for Ubuntu
+ -
+ matrix:
+ only:
+ - image: Ubuntu1604
+ # $APPVEYOR_BUILD_FOLDER isn't expanded in the environment section
+ # here, so I can't set $VIM_EXE the way I want to. Instead,
+ # I set $VIM_EXE in the sh-specific install steps below.
+ environment:
+ VIM_EXE: UNDEFINED
+ cache:
+ - $APPVEYOR_BUILD_FOLDER/vim -> .appveyor.yml, tests/fetch-vim.sh
+
+ # Plus, don't run Ubuntu if the commit message includes [ci-win]
+ skip_commits:
+ message: /\[ci-win\]/
+
+install:
+ # Ubuntu-specific setup. These carry forward to the build_script.
+ - sh: export VIM_EXE="$APPVEYOR_BUILD_FOLDER/vim/bin/vim"
+ - sh: export PATH="$PATH":$APPVEYOR_BUILD_FOLDER/vim/bin
+ - sh: echo "$VIM_EXE , $PATH"
+
+ # Cross-platform - test the core
+ - cmake --version
+ - git submodule update --init --recursive
+ - cmd: tests\fetch-vim
+ - sh: tests/fetch-vim.sh
+
+build_script:
+ # Build the core tests
+ - cd tests
+ - cd core
+ - mkdir build
+ - cd build
+ - cmake ..
+
+# Note on multicore testing:
+# Two cores are available per https://help.appveyor.com/discussions/questions/11179-how-many-cores-and-threads-can-be-used-in-free-appveyor-build .
+# However, using -j2 seems to make each job take much longer.
+
+test_script:
+ # Run the core tests
+ - ctest . --output-on-failure -C Debug
+
+ # CTestCustom specifies skipping some tests on Windows.
+ - cmd: echo "Reminder - skipped some tests"
+
+on_failure:
+ - echo "failed"
+ - cmd: type tests\core\build\Testing\Temporary\LastTest.log
+ - sh: cat tests/core/build/Testing/Temporary/LastTest.log
diff --git a/runtime/pack/dist/opt/editorconfig/.editorconfig b/runtime/pack/dist/opt/editorconfig/.editorconfig
new file mode 100644
index 0000000000..7eed9e111d
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/.editorconfig
@@ -0,0 +1,27 @@
+root = true
+
+[*]
+end_of_line = lf
+charset = utf-8
+max_line_length = 80
+
+[*.{vim,sh}]
+indent_style = space
+indent_size = 4
+insert_final_newline = true
+trim_trailing_whitespace = true
+max_line_length = 80
+
+[*.rb]
+indent_style = space
+indent_size = 2
+insert_final_newline = true
+trim_trailing_whitespace = true
+max_line_length = 120
+
+[*.yml]
+indent_style = space
+indent_size = 2
+
+[*.{bat,vbs,ps1}]
+end_of_line = CRLF
diff --git a/runtime/pack/dist/opt/editorconfig/.gitignore b/runtime/pack/dist/opt/editorconfig/.gitignore
new file mode 100644
index 0000000000..1d86f15e1f
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/.gitignore
@@ -0,0 +1,8 @@
+tags
+tests/**/build
+tests/**/.bundle
+
+# Editor backup files
+*.swp
+*~
+~*
diff --git a/runtime/pack/dist/opt/editorconfig/.gitmodules b/runtime/pack/dist/opt/editorconfig/.gitmodules
new file mode 100644
index 0000000000..8cf01bc409
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "plugin_tests"]
+ path = tests/plugin/spec/plugin_tests
+ url = https://github.com/editorconfig/editorconfig-plugin-tests.git
+[submodule "core_tests"]
+ path = tests/core/tests
+ url = https://github.com/editorconfig/editorconfig-core-test.git
diff --git a/runtime/pack/dist/opt/editorconfig/.travis.yml b/runtime/pack/dist/opt/editorconfig/.travis.yml
new file mode 100644
index 0000000000..1eaad3b34b
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/.travis.yml
@@ -0,0 +1,30 @@
+# Make sure xvfb works - https://docs.travis-ci.com/user/gui-and-headless-browsers/#using-xvfb-directly
+dist: trusty
+
+matrix:
+ include:
+ - name: "plugin"
+ env: TEST_WHICH=plugin
+ language: ruby
+ rvm:
+ - 2.2.4
+ gemfile: tests/plugin/Gemfile
+ - name: "core"
+ env: TEST_WHICH=core
+
+addons:
+ apt:
+ packages:
+ - vim-gtk
+
+before_script:
+ - "export DISPLAY=:99.0"
+ - "sh -e /etc/init.d/xvfb start"
+
+script:
+ ./tests/travis-test.sh
+
+notifications:
+ email:
+ on_success: change
+ on_failure: always
diff --git a/runtime/pack/dist/opt/editorconfig/CONTRIBUTORS b/runtime/pack/dist/opt/editorconfig/CONTRIBUTORS
new file mode 100644
index 0000000000..b799668c87
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/CONTRIBUTORS
@@ -0,0 +1,6 @@
+Contributors to the EditorConfig Vim Plugin:
+
+Hong Xu
+Trey Hunner
+Kent Frazier
+Chris White
diff --git a/runtime/pack/dist/opt/editorconfig/LICENSE b/runtime/pack/dist/opt/editorconfig/LICENSE
new file mode 100644
index 0000000000..ed9286e0aa
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/LICENSE
@@ -0,0 +1,26 @@
+Unless otherwise stated, all files are distributed under the Simplified BSD
+license included below.
+
+Copyright (c) 2011-2019 EditorConfig Team
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/runtime/pack/dist/opt/editorconfig/LICENSE.PSF b/runtime/pack/dist/opt/editorconfig/LICENSE.PSF
new file mode 100755
index 0000000000..36eb8e0d3b
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/LICENSE.PSF
@@ -0,0 +1,53 @@
+Some code in editorconfig-vim is derived from code licensed under the
+PSF license. The following is the text of that license, retrieved 2019-05-05
+from https://docs.python.org/2.6/license.html#terms-and-conditions-for-accessing-or-otherwise-using-python
+
+PSF LICENSE AGREEMENT FOR PYTHON 2.6.9
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation
+(``PSF''), and the Individual or Organization (``Licensee'') accessing and
+otherwise using Python 2.6.9 software in source or binary form and its
+associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF
+hereby grants Licensee a nonexclusive, royalty-free, world-wide
+license to reproduce, analyze, test, perform and/or display publicly,
+prepare derivative works, distribute, and otherwise use Python 2.6.9
+alone or in any derivative version, provided, however, that PSF's
+License Agreement and PSF's notice of copyright, i.e., ``Copyright (c)
+2001-2010 Python Software Foundation; All Rights Reserved'' are
+retained in Python 2.6.9 alone or in any derivative version prepared
+by Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python 2.6.9 or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Python 2.6.9.
+
+4. PSF is making Python 2.6.9 available to Licensee on an ``AS IS''
+basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.
+BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY
+REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY
+PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 2.6.9 WILL NOT INFRINGE
+ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+2.6.9 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.6.9,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between PSF and
+Licensee. This License Agreement does not grant permission to use PSF
+trademarks or trade name in a trademark sense to endorse or promote
+products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Python 2.6.9, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+# vi: set ft=:
diff --git a/runtime/pack/dist/opt/editorconfig/README.md b/runtime/pack/dist/opt/editorconfig/README.md
new file mode 100644
index 0000000000..961c9ae2d2
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/README.md
@@ -0,0 +1,148 @@
+# EditorConfig Vim Plugin
+
+[![Travis Build Status](https://img.shields.io/travis/cxw42/editorconfig-vim.svg?logo=travis)](https://travis-ci.org/editorconfig/editorconfig-vim)
+[![Appveyor Build Status](https://img.shields.io/appveyor/ci/cxw42/editorconfig-vim.svg?logo=appveyor)](https://ci.appveyor.com/project/cxw42/editorconfig-vim)
+
+This is an [EditorConfig][] plugin for Vim. This plugin can be found on both
+[GitHub][] and [Vim online][].
+
+## Installation
+
+To install this plugin, you can use one of the following ways:
+
+### Install with the archive
+
+Download the [archive][] and extract it into your Vim runtime directory
+(`~/.vim` on UNIX/Linux and `$VIM_INSTALLATION_FOLDER\vimfiles` on windows).
+You should have 4 sub-directories in this runtime directory now: "autoload",
+"doc", "ftdetect" and "plugin".
+
+### Install as Vim8 plugin
+
+Install as a Vim 8 plugin. Note `local` can be any name, but some path
+element must be present. On Windows, instead of `~/.vim` use
+`$VIM_INSTALLATION_FOLDER\vimfiles`.
+```shell
+mkdir -p ~/.vim/pack/local/start
+cd ~/.vim/pack/local/start
+git clone https://github.com/editorconfig/editorconfig-vim.git
+```
+
+### Install with [pathogen][]
+
+Use pathogen (the git repository of this plugin is
+https://github.com/editorconfig/editorconfig-vim.git)
+
+### Install with [Vundle][]
+
+Use Vundle by adding to your `.vimrc` Vundle plugins section:
+
+```viml
+Plugin 'editorconfig/editorconfig-vim'
+```
+
+Then call `:PluginInstall`.
+
+### Install with [vim-plug][]
+
+Use vim-plug by adding to your `.vimrc` in your plugin section:
+
+```viml
+Plug 'editorconfig/editorconfig-vim'
+```
+
+Source your `.vimrc` by calling `:source $MYVIMRC`.
+
+Then call `:PlugInstall`.
+
+### No external editorconfig core library is required
+
+Previous versions of this plugin also required a Python "core".
+The core included the code to parse `.editorconfig` files.
+This plugin **includes** the core, so you don't need to download the
+core separately.
+
+## Supported properties
+
+The EditorConfig Vim plugin supports the following EditorConfig [properties][]:
+
+* `indent_style`
+* `indent_size`
+* `tab_width`
+* `end_of_line`
+* `charset`
+* `insert_final_newline` (Feature `+fixendofline`, available on Vim 7.4.785+,
+ or [PreserveNoEOL][] is required for this property)
+* `trim_trailing_whitespace`
+* `max_line_length`
+* `root` (only used by EditorConfig core)
+
+## Selected Options
+
+The supported options are documented in [editorconfig.txt][]
+and can be viewed by executing the following: `:help editorconfig`. You may
+need to execute `:helptags ALL` so that Vim is aware of editorconfig.txt.
+
+### Excluded patterns
+
+To ensure that this plugin works well with [Tim Pope's fugitive][], use the
+following patterns array:
+
+```viml
+let g:EditorConfig_exclude_patterns = ['fugitive://.*']
+```
+
+If you wanted to avoid loading EditorConfig for any remote files over ssh:
+
+```viml
+let g:EditorConfig_exclude_patterns = ['scp://.*']
+```
+
+Of course these two items could be combined into the following:
+
+```viml
+let g:EditorConfig_exclude_patterns = ['fugitive://.*', 'scp://.*']
+```
+
+### Disable for a specific filetype
+
+You can disable this plugin for a specific buffer by setting
+`b:EditorConfig_disable`. Therefore, you can disable the
+plugin for all buffers of a specific filetype. For example, to disable
+EditorConfig for all git commit messages (filetype `gitcommit`):
+
+```viml
+au FileType gitcommit let b:EditorConfig_disable = 1
+```
+
+### Disable rules
+
+In very rare cases,
+you might need to override some project-specific EditorConfig rules in global
+or local vimrc in some cases, e.g., to resolve conflicts of trailing whitespace
+trimming and buffer autosaving. This is not recommended, but you can:
+
+```viml
+let g:EditorConfig_disable_rules = ['trim_trailing_whitespace']
+```
+
+You are able to disable any supported EditorConfig properties.
+
+## Bugs and Feature Requests
+
+Feel free to submit bugs, feature requests, and other issues to the
+[issue tracker][]. Be sure you have read the [contribution guidelines][]!
+
+[EditorConfig]: http://editorconfig.org
+[GitHub]: https://github.com/editorconfig/editorconfig-vim
+[PreserveNoEOL]: http://www.vim.org/scripts/script.php?script_id=4550
+[Tim Pope's fugitive]: https://github.com/tpope/vim-fugitive
+[Vim online]: http://www.vim.org/scripts/script.php?script_id=3934
+[Vundle]: https://github.com/gmarik/Vundle.vim
+[archive]: https://github.com/editorconfig/editorconfig-vim/archive/master.zip
+[contribution guidelines]: https://github.com/editorconfig/editorconfig/blob/master/CONTRIBUTING.md#submitting-an-issue
+[issue tracker]: https://github.com/editorconfig/editorconfig-vim/issues
+[pathogen]: https://github.com/tpope/vim-pathogen
+[properties]: http://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties
+[editorconfig.txt]: https://github.com/editorconfig/editorconfig-vim/blob/master/doc/editorconfig.txt
+[vim-plug]: https://github.com/junegunn/vim-plug
diff --git a/runtime/pack/dist/opt/editorconfig/autoload/editorconfig.vim b/runtime/pack/dist/opt/editorconfig/autoload/editorconfig.vim
new file mode 100644
index 0000000000..1f61a3300c
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/autoload/editorconfig.vim
@@ -0,0 +1,60 @@
+" autoload/editorconfig.vim: EditorConfig native Vimscript plugin
+" Copyright (c) 2011-2019 EditorConfig Team
+" All rights reserved.
+"
+" Redistribution and use in source and binary forms, with or without
+" modification, are permitted provided that the following conditions are met:
+"
+" 1. Redistributions of source code must retain the above copyright notice,
+" this list of conditions and the following disclaimer.
+" 2. Redistributions in binary form must reproduce the above copyright notice,
+" this list of conditions and the following disclaimer in the documentation
+" and/or other materials provided with the distribution.
+"
+" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+" POSSIBILITY OF SUCH DAMAGE.
+"
+
+if v:version < 700
+ finish
+endif
+
+let s:saved_cpo = &cpo
+set cpo&vim
+
+" {{{1 variables
+let s:hook_list = []
+
+function! editorconfig#AddNewHook(func) " {{{1
+ " Add a new hook
+
+ call add(s:hook_list, a:func)
+endfunction
+
+function! editorconfig#ApplyHooks(config) abort " {{{1
+ " apply hooks
+
+ for Hook in s:hook_list
+ let l:hook_ret = Hook(a:config)
+
+ if type(l:hook_ret) != type(0) && l:hook_ret != 0
+ " TODO print some debug info here
+ endif
+ endfor
+endfunction
+
+" }}}
+
+let &cpo = s:saved_cpo
+unlet! s:saved_cpo
+
+" vim: fdm=marker fdc=3
diff --git a/runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core.vim b/runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core.vim
new file mode 100644
index 0000000000..6885e17cf0
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core.vim
@@ -0,0 +1,147 @@
+" autoload/editorconfig_core.vim: top-level functions for
+" editorconfig-core-vimscript and editorconfig-vim.
+
+" Copyright (c) 2018-2020 EditorConfig Team, including Chris White {{{1
+" All rights reserved.
+"
+" Redistribution and use in source and binary forms, with or without
+" modification, are permitted provided that the following conditions are met:
+"
+" 1. Redistributions of source code must retain the above copyright notice,
+" this list of conditions and the following disclaimer.
+" 2. Redistributions in binary form must reproduce the above copyright notice,
+" this list of conditions and the following disclaimer in the documentation
+" and/or other materials provided with the distribution.
+"
+" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+" POSSIBILITY OF SUCH DAMAGE. }}}1
+
+let s:saved_cpo = &cpo
+set cpo&vim
+
+" Variables {{{1
+
+" Note: we create this variable in every script that accesses it. Normally, I
+" would put this in plugin/editorconfig.vim. However, in some of my tests,
+" the command-line testing environment did not load plugin/* in the normal
+" way. Therefore, I do the check everywhere so I don't have to special-case
+" the command line.
+
+if !exists('g:editorconfig_core_vimscript_debug')
+ let g:editorconfig_core_vimscript_debug = 0
+endif
+" }}}1
+
+" The latest version of the specification that we support.
+" See discussion at https://github.com/editorconfig/editorconfig/issues/395
+function! editorconfig_core#version()
+ return [0,13,0]
+endfunction
+
+" === CLI =============================================================== {{{1
+
+" For use from the command line. Output settings for in_name to
+" the buffer named out_name. If an optional argument is provided, it is the
+" name of the config file to use (default '.editorconfig').
+" TODO support multiple files
+"
+" filename (if any)
+" @param names {Dictionary} The names of the files to use for this run
+" - output [required] Where the editorconfig settings should be written
+" - target [required] A string or list of strings to process. Each
+" must be a full path.
+" - dump [optional] If present, write debug info to this file
+" @param job {Dictionary} What to do - same format as the input of
+" editorconfig_core#handler#get_configurations(),
+" except without the target member.
+
+function! editorconfig_core#currbuf_cli(names, job) " out_name, in_name, ...
+ let l:output = []
+
+ " Preprocess the job
+ let l:job = deepcopy(a:job)
+
+ if has_key(l:job, 'version') " string to list
+ let l:ver = split(editorconfig_core#util#strip(l:job.version), '\v\.')
+ for l:idx in range(len(l:ver))
+ let l:ver[l:idx] = str2nr(l:ver[l:idx])
+ endfor
+
+ let l:job.version = l:ver
+ endif
+
+ " TODO provide version output from here instead of the shell script
+" if string(a:names) ==? 'version'
+" return
+" endif
+"
+ if type(a:names) != type({}) || type(a:job) != type({})
+ throw 'Need two Dictionary arguments'
+ endif
+
+ if has_key(a:names, 'dump')
+ execute 'redir! > ' . fnameescape(a:names.dump)
+ echom 'Names: ' . string(a:names)
+ echom 'Job: ' . string(l:job)
+ let g:editorconfig_core_vimscript_debug = 1
+ endif
+
+ if type(a:names['target']) == type([])
+ let l:targets = a:names.target
+ else
+ let l:targets = [a:names.target]
+ endif
+
+ for l:target in l:targets
+
+ " Pre-process quoting weirdness so we are more flexible in the face
+ " of CMake+CTest+BAT+Powershell quoting.
+
+ " Permit wrapping in double-quotes
+ let l:target = substitute(l:target, '\v^"(.*)"$', '\1', '')
+
+ " Permit empty ('') entries in l:targets
+ if strlen(l:target)<1
+ continue
+ endif
+
+ if has_key(a:names, 'dump')
+ echom 'Trying: ' . string(l:target)
+ endif
+
+ let l:job.target = l:target
+ let l:options = editorconfig_core#handler#get_configurations(l:job)
+
+ if has_key(a:names, 'dump')
+ echom 'editorconfig_core#currbuf_cli result: ' . string(l:options)
+ endif
+
+ if len(l:targets) > 1
+ let l:output += [ '[' . l:target . ']' ]
+ endif
+
+ for [ l:key, l:value ] in items(l:options)
+ let l:output += [ l:key . '=' . l:value ]
+ endfor
+
+ endfor "foreach target
+
+ " Write the output file
+ call writefile(l:output, a:names.output)
+endfunction "editorconfig_core#currbuf_cli
+
+" }}}1
+
+let &cpo = s:saved_cpo
+unlet! s:saved_cpo
+
+" vi: set fdm=marker fo-=ro:
diff --git a/runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/fnmatch.vim b/runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/fnmatch.vim
new file mode 100644
index 0000000000..ef9ced9fdc
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/fnmatch.vim
@@ -0,0 +1,467 @@
+" autoload/editorconfig_core/fnmatch.vim: Globbing for
+" editorconfig-vim. Ported from the Python core's fnmatch.py.
+
+" Copyright (c) 2012-2019 EditorConfig Team {{{1
+" All rights reserved.
+"
+" Redistribution and use in source and binary forms, with or without
+" modification, are permitted provided that the following conditions are met:
+"
+" 1. Redistributions of source code must retain the above copyright notice,
+" this list of conditions and the following disclaimer.
+" 2. Redistributions in binary form must reproduce the above copyright notice,
+" this list of conditions and the following disclaimer in the documentation
+" and/or other materials provided with the distribution.
+"
+" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+" POSSIBILITY OF SUCH DAMAGE. }}}1
+
+"Filename matching with shell patterns.
+"
+"fnmatch(FILENAME, PATH, PATTERN) matches according to the local convention.
+"fnmatchcase(FILENAME, PATH, PATTERN) always takes case in account.
+"
+"The functions operate by translating the pattern into a regular
+"expression. They cache the compiled regular expressions for speed.
+"