From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 3DF30139694 for ; Wed, 31 May 2017 19:32:41 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id A311EE0F1F; Wed, 31 May 2017 19:32:31 +0000 (UTC) Received: from forward19h.cmail.yandex.net (forward19h.cmail.yandex.net [87.250.230.161]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 1045FE0EB7 for ; Wed, 31 May 2017 19:32:30 +0000 (UTC) Received: from smtp3j.mail.yandex.net (smtp3j.mail.yandex.net [IPv6:2a02:6b8:0:801:1::12]) by forward19h.cmail.yandex.net (Yandex) with ESMTP id 1126D222BE; Wed, 31 May 2017 22:32:28 +0300 (MSK) Received: from smtp3j.mail.yandex.net (localhost.localdomain [127.0.0.1]) by smtp3j.mail.yandex.net (Yandex) with ESMTP id 6A3F262410FB; Wed, 31 May 2017 22:32:25 +0300 (MSK) Received: by smtp3j.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id tJtpFLTVVl-WPjqaJnn; Wed, 31 May 2017 22:32:25 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client certificate not present) X-Yandex-Suid-Status: 1 0,1 0 From: "Vadim A. Misbakh-Soloviov" To: gentoo-dev@lists.gentoo.org Cc: vim@gentoo.org Subject: [gentoo-dev] [RFC] NeoVim and vim-syntax Date: Thu, 01 Jun 2017 02:32:24 +0700 Message-ID: <15162118.1WtZIBpG5a@note> Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="UTF-8" X-Archives-Salt: 9057a593-9d6d-4762-9dc6-927dd5c631bb X-Archives-Hash: d044488c6219baed71ef52284cc44835 Currently, we have a situation, that there are two Vim's: "old" one (vim8) and NeoVim (for those who do not know: a fork of Vim with much and much more clean code, many neat features and so on). Unfortunately, both of them have different runtimedirs: XDG ones for NeoVim and the ones you know for Vim8, while NeoVim is fully compatible with Vim's plugins, and epecially with vimscripts (like syntax definitions and ftdetect scripts). On the other side, we have a bunch of packages in the portage tree, that have "vim syntax" support (use-flags, or direct vim-syntax packages), or even vim- plugins. All of them goes to `/usr/share/vim/vimfiles`, while correct path for NeoVim would be `/usr/share/nvim/site` (does not exist at the moment, but nvim checks for it). So, that situation leads to impossibility to get all of that syntax definitions and plugins when user uses NeoVim. As I said above, NeoVim supports Vim's plugins/scripts very well (although I didn't find any evidence of the opposite), so it is possible to fix that situation by many of "kludge" ways, including: - implementing "nvim-syntax" (and `app-nvim/*`?) and duplicate all the installed files - patching NeoVim source to include Vim's runtimedirs (incl. "after" dir), // NeoVim upstream highly disagree with such way, if any - patching VIMRUNTIME environment variable, - making a wrapper, - rewrite all the existing ebuilds to take nvim into account and force all newcomers to also take it, - symlinking a directory, // mostly bad way, since opposite plugin compatibility is not garanteed and users can install nvim-only plugins in the future - making postinst hook to regenerate content of NeoVim's site-directory (maybe, by symlinking installed vim modules there) or even: - making eselect module for user to rule that. Although, talking on eselect module, I've two visions of the situation: a) it can be something like bashcomp module, where users can select which of installed vim modules they want to "enable" in NeoVim or (better, imo) way: b) it can be something like php module, where portage installs all the stuff in the location neither available to Vim nor NeoVim, and users selects which modules they enable for either implementation. Module can be called something like "eselect-vim" or "eselect-vim-modules" (?), if any. For now, I have preview of neither of eselect module variants, nor even patches for another "ways". I'd very like to discuss the situation and find a better of possible solution first. Maybe, when (if?) we found such a solution, I'd contribute a PR with it on GH. -- wbr, mva