# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=4

inherit vim-plugin eutils fdo-mime

DESCRIPTION="An easy-to-use configuration of the GVim text editor"
HOMEPAGE="http://cream.sourceforge.net"

DICT_EN="eng_2.0.2"
DICT_FR="fre_2.1"
DICT_ES="spa_3.0"
DICT_DE="ger_2.0.1"

SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz
	l10n_de? ( http://cream.sourceforge.net/cream-spell-dict-${DICT_DE}.zip )
	l10n_en? ( http://cream.sourceforge.net/cream-spell-dict-${DICT_EN}.zip )
	l10n_es? ( http://cream.sourceforge.net/cream-spell-dict-${DICT_ES}.zip )
	l10n_fr? ( http://cream.sourceforge.net/cream-spell-dict-${DICT_FR}.zip )"

IUSE="l10n_de l10n_en l10n_fr l10n_es"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 ia64 ~mips ppc sparc x86"

DEPEND="
	>=app-editors/gvim-7.0
	app-arch/unzip"
RDEPEND="
	>=app-editors/gvim-7.0
	dev-util/ctags"

VIM_PLUGIN_HELPTEXT=\
"Cream is completely independent from the rest of your Vim/GVim setup.
To launch GVim in Cream mode, use this wrapper script:
\    % cream [filename...]

Cream's documentation has been installed in ${ROOT}usr/share/doc/${PF}
In particular, you may want to read:

\ - the Cream features list:
file://${ROOT}usr/share/doc/${PF}/html/features.html

\ - the Cream shortcuts list:
file://${ROOT}usr/share/doc/${PF}/html/keyboardshortcuts.html

\ - the Cream FAQ:
file://${ROOT}usr/share/doc/${PF}/html/faq.html"

# Utility function to rename a Vim help file and its links/anchors:
#   prefix_help_file prefix file [pattern ...]
prefix_help_file() {
	local prefix="${1}" ; shift
	local helpfile="${1}" ; shift
	while [[ -n "${1}" ]] ; do
		sed -i "s:\([*|]\)\(${1}[*|]\):\1${prefix}-\2:g" "${helpfile}" \
			|| die "Failed to sed \"${1}\" on \"${helpfile}\""
		shift
	done
	mv "${helpfile}" "${helpfile%/*}/${prefix}-${helpfile##*/}" \
		|| die "Failed to rename \"${helpfile}\""
}

pkg_setup() {
	elog "Cream comes with several dictionaries for spell checking. In"
	elog "all cases, at least a small English dictionary will be installed."
	elog
	elog "To specify which optional dictionaries are installed, set the"
	elog "L10N variable in /etc/portage/make.conf. For example, to install full"
	elog "English and French dictionaries, use:"
	elog "    L10N=\"en fr\""
	elog
	elog "Available dictionaries are:"
	for dict in "English en" "French fr" "German de" "Spanish es" ; do
		elog "    ${dict% *} \t(${dict#* }) $(usex l10n_${dict#* } \
			"(Will be installed)" "(Will not be installed)")"
	done
	elog
}

src_unpack() {
	mkdir -p "${S}"/spelldicts

	# install spell dictionaries into ${S}/spelldicts
	local my_a
	for my_a in ${A} ; do
		if [ -z ${my_a/*spell-dict*/} ] ; then
			cd "${S}"/spelldicts
			unpack ${my_a}
		else
			cd "${WORKDIR}"
			unpack ${my_a}
		fi
	done
}

src_prepare() {
	# change installation path + fix the wrapper command (disable plugins)
	cat > cream <<-EOF
	#!/bin/sh
	gvim --servername CREAM --noplugin -U NONE -u "\\\$VIM/cream/creamrc" "\$@"
	EOF

	sed -i "/let \$CREAM/s:VIMRUNTIME:VIM:" creamrc || die

	# make taglist ebuild aware, bug #66052
	epatch "${FILESDIR}"/${PN}-0.30-ebuilds.patch

	# more filetypes for EnhancedCommentify, including the Gentoo ones
	epatch "${FILESDIR}"/enhancedcommentify-2.1-gentooisms.patch
	epatch "${FILESDIR}"/enhancedcommentify-2.1-extra-ft-support.patch

	# rename vim help files to avoid conflicts with other vim packages
	prefix_help_file cream help/EnhancedCommentify.txt \
		'EnhancedCommentify' 'EnhComm-[a-zA-Z]\+'

}

src_install() {
	# install launcher and menu entry
	dobin cream
	domenu cream.desktop
	doicon cream.svg cream.png

	# install shared vim files
	insinto /usr/share/vim/cream
	doins *.vim creamrc
	local dir
	for dir in addons bitmaps filetypes lang ; do
		insinto /usr/share/vim/cream/${dir}
		doins ${dir}/*
	done

	if [[ -n ${L10N} ]] ; then
		insinto /usr/share/vim/cream/spelldicts
		doins spelldicts/*
	fi

	insinto /usr/share/vim/vimfiles/doc
	doins help/*.txt

	# install docs
	dodoc docs/{CHANGELOG,DEVELOPER,KEYBOARD,PressRelease,README,RELEASE}.txt
	dohtml docs-html/*
	# html doc may be opened from Cream GUI
	dosym ../../doc/${PF}/html /usr/share/vim/cream/docs-html
}

pkg_postinst() {
	fdo-mime_desktop_database_update
	vim-plugin_pkg_postinst
}

pkg_postrm() {
	fdo-mime_desktop_database_update
	vim-plugin_pkg_postrm
}
