summaryrefslogtreecommitdiff
path: root/eclass/vim-plugin.eclass
diff options
context:
space:
mode:
Diffstat (limited to 'eclass/vim-plugin.eclass')
-rw-r--r--eclass/vim-plugin.eclass32
1 files changed, 31 insertions, 1 deletions
diff --git a/eclass/vim-plugin.eclass b/eclass/vim-plugin.eclass
index 0c323e0d09e7..9d300ad4826b 100644
--- a/eclass/vim-plugin.eclass
+++ b/eclass/vim-plugin.eclass
@@ -13,7 +13,8 @@
# documentation, for which we make a special case via vim-doc.eclass.
case ${EAPI} in
- 6|7|8) ;;
+ 6|7) ;;
+ 8) _DEFINE_VIM_PLUGIN_SRC_PREPARE=true ;;
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac
@@ -32,6 +33,29 @@ if [[ ${PV} != 9999* ]] ; then
fi
SLOT="0"
+if [[ ${_DEFINE_VIM_PLUGIN_SRC_PREPARE} ]]; then
+# @FUNCTION: vim-plugin_src_prepare
+# @USAGE:
+# @DESCRIPTION:
+# Moves "after/syntax" plugins to directories to avoid file collisions with
+# other packages.
+# Note that this function is only defined and exported in EAPIs >= 8.
+vim-plugin_src_prepare() {
+ default_src_prepare
+
+ # return if there's nothing to do
+ [[ -d after/syntax ]] || return
+
+ pushd after/syntax >/dev/null || die
+ for file in *.vim; do
+ [[ -f "${file}" ]] || continue
+ mkdir "${file%.vim}" || die
+ mv "${file}" "${file%.vim}/${PN}.vim" || die
+ done
+ popd >/dev/null || die
+}
+fi
+
# @ECLASS_VARIABLE: _VIM_PLUGIN_ALLOWED_DIRS
# @INTERNAL
# @DESCRIPTION:
@@ -190,3 +214,9 @@ _VIM_PLUGIN_ECLASS=1
fi
EXPORT_FUNCTIONS src_install pkg_postinst pkg_postrm
+
+# src_prepare is only exported in EAPI >= 8
+case ${EAPI} in
+ 6|7) ;;
+ *) EXPORT_FUNCTIONS src_prepare ;;
+esac