From patchwork Mon Oct 16 09:15:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Efraim Flashner X-Patchwork-Id: 54864 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 6119827BBEA; Mon, 16 Oct 2023 10:18:54 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SPF_HELO_PASS autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id A92AA27BBE9 for ; Mon, 16 Oct 2023 10:18:53 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qsJkK-0005mM-V5; Mon, 16 Oct 2023 05:18:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qsJkG-0005g7-E3 for guix-patches@gnu.org; Mon, 16 Oct 2023 05:18:41 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qsJkE-0006Wg-Gr for guix-patches@gnu.org; Mon, 16 Oct 2023 05:18:39 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qsJkc-0007A6-OQ for guix-patches@gnu.org; Mon, 16 Oct 2023 05:19:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#60029] [PATCH v3 1/3] gnu: vim: Add vim packages to 'package-path' instead of 'runtime-path'. Resent-From: Efraim Flashner Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 16 Oct 2023 09:19:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60029 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 60029@debbugs.gnu.org Cc: paren@disroot.org, me@jonscoresby.com, Efraim Flashner Received: via spool by 60029-submit@debbugs.gnu.org id=B60029.169744789327442 (code B ref 60029); Mon, 16 Oct 2023 09:19:02 +0000 Received: (at 60029) by debbugs.gnu.org; 16 Oct 2023 09:18:13 +0000 Received: from localhost ([127.0.0.1]:55233 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qsJjo-00078S-8K for submit@debbugs.gnu.org; Mon, 16 Oct 2023 05:18:12 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:43227) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qsJjk-00077x-Mi for 60029@debbugs.gnu.org; Mon, 16 Oct 2023 05:18:10 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-405505b07dfso32635895e9.0 for <60029@debbugs.gnu.org>; Mon, 16 Oct 2023 02:17:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697447858; x=1698052658; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=rerW/ocfr2cEHI1JFetmfiECdDCymukJpQww1fGSoFo=; b=WU/10Q6BZY2uCtEJaTTeuTIJBf5zM9nM3htX+jYd26UD4AdWBcPNcxYXFOVlBGJBfB C+aD19AgzQlfWodkwN5oM0elgHym5u/jb523Bh+E8vdybGiVfqit5tOD14j0/aCrqce+ a7+xJDESXK+6fBRCXx2/yGy+1baO9ipZxuX22nyZhq5TDOUNgghpkT7Lu5WJAtKZj2zj NOtxVPfnJgr3/Y8EPoW5x2pjrE5ZLAjksQW/IdPvrgTXp0P/jkyKMG7acScXsOxdssd/ in1TD8kMbaoylCt2CaVaaJXGMBKEp0Zb4zkIHi6Thp0wS2Amsw6xjW8I4oCq0DkEBqju kOOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697447858; x=1698052658; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=rerW/ocfr2cEHI1JFetmfiECdDCymukJpQww1fGSoFo=; b=ESUpq0r3USh7dOLYpte43wEYiIa0TXESBBHMkm7lMc64euhsxqyGEjc/8qjbTYUyD/ 69AmpFsHTsHcsp/SOJxjDyJkNCbLvGLCkXKjEcaQS4LbD4SQGL5PDTZPkx5P5SvZMC0n p8Snn3HGzZuMTW+LdPSFg2GBPKse8l/E40THOIcWwPoS/oQ0o/vp5g/mNuF4tCt+7Wz1 pQ1MUaUqGyF/SDq4fLkYZq9FNbaXWQ1v017CmuYROt4lupqTGHTL/1TZph2ge3U2tu1s +M9Nf8DYKriPXzIjuLZNsiY09hBukk2T3w4Vm0bPS6XRa8TsV6VaVXfJM4GhVNmml5hB NSLA== X-Gm-Message-State: AOJu0Yy5Ctk74R5WZWbcgITBzY6no6QbY09mFJtuI90p9E0OtkSkhVrK 6r+Kzoqn4ZKvVp04Tf2UE7PNWwda2lnRpg== X-Google-Smtp-Source: AGHT+IGbSxY4oezAzirMyebndunhBrJ1wtZTgqv3IOJQhdHpwUegpEheBVDESpR6iZbSrvWglwktKw== X-Received: by 2002:adf:f249:0:b0:324:8353:5247 with SMTP id b9-20020adff249000000b0032483535247mr4743793wrp.16.1697447857974; Mon, 16 Oct 2023 02:17:37 -0700 (PDT) Received: from localhost ([31.210.180.106]) by smtp.gmail.com with ESMTPSA id bv2-20020a0560001f0200b0032d09f7a713sm16094788wrb.18.2023.10.16.02.17.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 02:17:37 -0700 (PDT) From: Efraim Flashner Date: Mon, 16 Oct 2023 12:15:11 +0300 Message-ID: <3f91d5d543a57335eb10f146a1dd55fc2dab003c.1697446927.git.efraim@flashner.co.il> X-Mailer: git-send-email 2.41.0 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches From: Jonathan Scoresby This is neccesary because vim's built-in plugin manager looks for directories under 'package-path' instead of 'runtime-path.' Once we have told vim the package-path, it adds all the packages to the runtime-path automatically for us. * gnu/packages/aux-files/guix.vim: Add paths to packagepath instead of runtimepath. Remove code to adjust runtimepath after adding paths. Signed-off-by: Efraim Flashner --- gnu/packages/aux-files/guix.vim | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/gnu/packages/aux-files/guix.vim b/gnu/packages/aux-files/guix.vim index 9397c53701..24a6b941a8 100644 --- a/gnu/packages/aux-files/guix.vim +++ b/gnu/packages/aux-files/guix.vim @@ -1,13 +1,8 @@ -" This appends all of the vim plugins to the end of Vim's runtimepath. +" This appends all applicable vim paths to the end of packagepath. Once we +" have told vim the packagepath vim will add it to the runtimepath for us. for directory in ["/run/current-system/profile", $HOME . "/.guix-profile", $HOME ."/.guix-home/profile", $GUIX_PROFILE, $GUIX_ENVIRONMENT] let vimplugins = directory . "/share/vim/vimfiles" if isdirectory(vimplugins) - let &rtp = join([&rtp,vimplugins], ',') + let &pp = join([&pp,vimplugins], ',') endif endfor -" Unconditionally add */after directories last, as intended by upstream -" TODO: Remove duplicate */after directories -for directory in [$VIM . "/vimfiles", $HOME ."/.vim"] - let vimplugins = directory . "/after" - let &rtp = join([&rtp,vimplugins], ',') -endfor From patchwork Mon Oct 16 09:15:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Efraim Flashner X-Patchwork-Id: 54866 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 516BC27BBE9; Mon, 16 Oct 2023 10:19:19 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SPF_HELO_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id BBCD927BBE2 for ; Mon, 16 Oct 2023 10:19:16 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qsJkL-0005nC-70; Mon, 16 Oct 2023 05:18:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qsJkG-0005g8-Bz for guix-patches@gnu.org; Mon, 16 Oct 2023 05:18:40 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qsJkE-0006Wh-Ge for guix-patches@gnu.org; Mon, 16 Oct 2023 05:18:39 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qsJkd-0007AE-5O for guix-patches@gnu.org; Mon, 16 Oct 2023 05:19:03 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#60029] [PATCH v3 2/3] build-system: Add vim-build-system. Resent-From: Efraim Flashner Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 16 Oct 2023 09:19:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60029 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 60029@debbugs.gnu.org Cc: paren@disroot.org, me@jonscoresby.com, Efraim Flashner Received: via spool by 60029-submit@debbugs.gnu.org id=B60029.169744789527451 (code B ref 60029); Mon, 16 Oct 2023 09:19:03 +0000 Received: (at 60029) by debbugs.gnu.org; 16 Oct 2023 09:18:15 +0000 Received: from localhost ([127.0.0.1]:55236 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qsJjq-00078g-Pi for submit@debbugs.gnu.org; Mon, 16 Oct 2023 05:18:15 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]:58521) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qsJjm-000780-MB for 60029@debbugs.gnu.org; Mon, 16 Oct 2023 05:18:12 -0400 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-307d58b3efbso3516768f8f.0 for <60029@debbugs.gnu.org>; Mon, 16 Oct 2023 02:17:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697447860; x=1698052660; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=YJLKrD+jeNax+RzDRBq3JMokmONCNX5laTvtRnMEgP0=; b=d6f66jXn2GmGZ8tR4msJTiRy9jMZIHihA4wRYZMgBkintGCkmbf/uj3TYE7d/UYMwx 4/ROHbxDJo4qAlDQFy7giWkLV88IzJTqm5xGEWoiNc69fx7ZGD9cy9ox31VM04GAmak2 EOKIHE0R6ENA10wGDAKwuxGnV7QqCcCAy4I6omU38GQSOHAz0uIKlKP1ZgFCHbmc3lng f3LFNnZe312xGMZIeMsaLiqQQ6yYyeuUtiu1/4LOxkOk+QVBGYAV694trJsty+66jByG jgbxYKaidJMil0qZiaZIgS53NpWLGa1DRRqYBOC5eOhi2zr8/WPn8rieZYMDffHEMFyl f9+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697447860; x=1698052660; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YJLKrD+jeNax+RzDRBq3JMokmONCNX5laTvtRnMEgP0=; b=X2mPUKTvAZq+7kIiinfa7NPdM024rrQIYaP6cNJVkFV6IeQnIHx/tl9GsIHbTtTdhA FTwYd5ykEFQI8DoF3bzEOM5XUm+RLzfef8CNQwjn1Q9oos7YRAX1i4eGA/e9iTVSgZhk lTkeyF9WU4KyJMsfrM/dEi0vY66eC1oI0ZEEDGMQDLGPWbqL7fzcUN8HpCy01zRhtnoK 0NZpXhhp/4hDajLlseqybf3u0Zt83esPuYNYug0rd50g1XZZvUvbvS2RdSBMe05+j+Z3 ismCN+HL9M33a+bwYF64WMSovpds71xlTdRyPJZBQ+mVCVlq2tZ6WvGohH9uRAtvOIJ/ YQoA== X-Gm-Message-State: AOJu0YyBiVOzddkA3y38q1lZRNLVBtEBEfKDpiet2R6kR+J4dC3+OcNv +D7697qjz04LpCF+f64kxO1dn3SiEMO+9w== X-Google-Smtp-Source: AGHT+IG4LL15w6sVWsFlYnd+5O7LtjwL3iWkBjCJ4dU/xEmJmXH9LxeLFxJptCbVOPf9UZ0PIFKUHw== X-Received: by 2002:a5d:58e4:0:b0:32d:8e54:29f7 with SMTP id f4-20020a5d58e4000000b0032d8e5429f7mr8461441wrd.64.1697447859928; Mon, 16 Oct 2023 02:17:39 -0700 (PDT) Received: from localhost ([31.210.180.106]) by smtp.gmail.com with ESMTPSA id d7-20020adfa347000000b0032d72f48555sm11498660wrb.36.2023.10.16.02.17.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 02:17:39 -0700 (PDT) From: Efraim Flashner Date: Mon, 16 Oct 2023 12:15:12 +0300 Message-ID: X-Mailer: git-send-email 2.41.0 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches From: Jonathan Scoresby * guix/build-system/vim.scm, * guix/build/vim-build-system.scm: New modules. * Makefile.am (MODULES): Register new files. * doc/guix.texi: Document it. Co-authored-by: Efraim Flashner Signed-off-by: Efraim Flashner --- Makefile.am | 4 +- doc/guix.texi | 33 +++++++ guix/build-system/vim.scm | 157 ++++++++++++++++++++++++++++++++ guix/build/vim-build-system.scm | 117 ++++++++++++++++++++++++ 4 files changed, 310 insertions(+), 1 deletion(-) create mode 100644 guix/build-system/vim.scm create mode 100644 guix/build/vim-build-system.scm diff --git a/Makefile.am b/Makefile.am index 310a231259..9fd77c6f43 100644 --- a/Makefile.am +++ b/Makefile.am @@ -13,7 +13,7 @@ # Copyright © 2018 Julien Lepiller # Copyright © 2018 Oleg Pykhalov # Copyright © 2018 Alex Vong -# Copyright © 2019 Efraim Flashner +# Copyright © 2019, 2023 Efraim Flashner # Copyright © 2020, 2021, 2023 Maxim Cournoyer # Copyright © 2021 Chris Marusich # Copyright © 2021 Andrew Tropin @@ -184,6 +184,7 @@ MODULES = \ guix/build-system/texlive.scm \ guix/build-system/tree-sitter.scm \ guix/build-system/trivial.scm \ + guix/build-system/vim.scm \ guix/ftp-client.scm \ guix/http-client.scm \ guix/gnupg.scm \ @@ -241,6 +242,7 @@ MODULES = \ guix/build/scons-build-system.scm \ guix/build/texlive-build-system.scm \ guix/build/tree-sitter-build-system.scm \ + guix/build/vim-build-system.scm \ guix/build/waf-build-system.scm \ guix/build/haskell-build-system.scm \ guix/build/julia-build-system.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index 3517c95251..89db688132 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -9482,6 +9482,39 @@ Build Systems @end itemize @end defvar +@defvar vim-build-system +This variable is exported by @code{(guix build-system vim)}. It is an +extension of the @pref{Copy Build System, @code{copy-build-system}}, installing +vim and neovim plugins into locations where these two text editors know to find +their plugins, using their packpaths. + +Packages which are prefixed with @code{vim-} will be installed in vim's +packpath, while those prefixed with @code{neovim-} will be installed in +neovim's packpath. If there is a @code{doc} directory with the plugin then +helptags will be generated automatically. + +There are a couple of keywords added with the @code{vim-build-system}: +@itemize +@item With @code{plugin-name} it is possible to set the name of the plugin. By +default this is set to the name and version of the package, it is often more +helpful to set this to name which the upstream author calls their plugin. +@item With @code{install-plan} it is possible to augment the built-in +install-plan of the @code{vim-build-system}. This is particularly helpful if +you have files which should be installed in other locations. For more +information about using the @code{install-plan}, take a look at the @pref{Copy +Build System, @code{copy-build-system}}. +@item With @code{#:vim} it is possible to add this package to vim's packpath, +in addition to if it is added automatically because of the @code{vim-} prefix. +@item With @code{#:neovim} it is possible to add this package to neovim's +packpath, in addition to if it is added automatically because of the +@code{neovim-} prefix. +@item With @code{#:mode} it is possible to adjust the path which the plugin is +installed into. By default the plugin is installed into @code{start} and other +options are available, including @code{opt}. Adding a plugin into @code{opt} +will mean you will need to run, for example, @command{:packadd foo} to load the +@code{foo} plugin from inside of vim. +@end itemize +@end defvar @cindex Clojure (programming language) @cindex simple Clojure build system diff --git a/guix/build-system/vim.scm b/guix/build-system/vim.scm new file mode 100644 index 0000000000..81f08ff436 --- /dev/null +++ b/guix/build-system/vim.scm @@ -0,0 +1,157 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2022 Jonathan Scoresby +;;; Copyright © 2023 Efraim Flashner +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix 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. +;;; +;;; GNU Guix 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 GNU Guix. If not, see . + +(define-module (guix build-system vim) + #:use-module (guix store) + #:use-module (guix utils) + #:use-module (guix gexp) + #:use-module (guix monads) + #:use-module (guix packages) + #:use-module (guix search-paths) + #:use-module (guix build-system) + #:use-module (guix build-system copy) + #:use-module (guix build-system gnu) + #:export (%vim-build-system-modules vim-build vim-build-system)) + +;; Commentary: +;; +;; Standard package installer for vim and neovim plugins. +;; This is implemented as an extension of `copy-build-system' +;; and takes advantage of vim and neovim's built-in package manager. +;; It extends the installation procedure from the copy-build-system +;; to put files in the correct place and then generates help tags. +;; +;; Code: + +(define %vim-build-system-modules + ;; Build-side modules imported by default. + `((guix build vim-build-system) + ,@%copy-build-system-modules)) + +(define (default-vim) + "Return the default Vim package." + ;; Lazily resolve the binding to avoid a circular dependency. + (let ((vim (resolve-interface '(gnu packages vim)))) + (module-ref vim 'vim))) + +(define (default-neovim) + "Return the default Neovim package." + (let ((vim (resolve-interface '(gnu packages vim)))) + (module-ref vim 'neovim))) + +(define* (lower name + #:key source + inputs + native-inputs + outputs + system + target + (vim? #f) + (neovim? #f) + (plugin-name name) + (vim (default-vim)) + (neovim (default-neovim)) + #:allow-other-keys #:rest arguments) + "Return a bag for NAME." + (let* ((private-keywords '(#:target #:vim #:neovim #:inputs #:native-inputs)) + (vim? (or (string-prefix? "vim" name) + vim?)) + (neovim? (or (string-prefix? "neovim" name) + neovim?)) + (vim-inputs (append (if vim? + `(("vim" ,vim)) + '()) + (if neovim? + `(("neovim" ,neovim)) + '()))) + (vim-arguments (append arguments + `(#:vim? ,vim? + #:neovim? ,neovim?)))) + (bag (name name) + (system system) + (host-inputs `(,@(if source + `(("source" ,source)) + '()) ,@inputs + + ;; Keep the standard inputs of 'gnu-build-system'. + ,@(standard-packages))) + (build-inputs `(,@vim-inputs ,@native-inputs)) + (outputs outputs) + (build vim-build) + (arguments (strip-keyword-arguments private-keywords vim-arguments))))) + +(define* (vim-build name inputs + #:key guile + source + (vim? #f) + (neovim? #f) + (mode "start") + (plugin-name name) + (install-plan ''()) + (phases '(@ (guix build vim-build-system) %standard-phases)) + (outputs '("out")) + (search-paths '()) + (system (%current-system)) + (substitutable? #t) + (imported-modules %vim-build-system-modules) + (modules '((guix build vim-build-system) + (guix build utils)))) + + (define build + (with-imported-modules imported-modules + #~(begin + (use-modules #$@modules) + #$(with-build-variables inputs outputs + #~(vim-build #:name #$name + #:vim? #$vim? + #:neovim? #$neovim? + #:mode #$mode + #:plugin-name #$plugin-name + #:install-plan #$(if (pair? install-plan) + (sexp->gexp install-plan) + install-plan) + #:source #+source + #:system #$system + #:phases #$(if (pair? phases) + (sexp->gexp phases) + phases) + #:outputs %outputs + #:search-paths '#$(sexp->gexp + (map search-path-specification->sexp + search-paths)) + #:inputs + %build-inputs))))) + + (mlet %store-monad + ((guile (package->derivation (or guile (default-guile)) + system #:graft? #f))) + (gexp->derivation name + build + #:system system + #:target #f + #:graft? #f + #:substitutable? substitutable? + #:guile-for-build guile))) + +(define vim-build-system + (build-system (name 'vim) + (description "The standard Vim build system") + (lower lower))) + +;;; vim.scm ends here diff --git a/guix/build/vim-build-system.scm b/guix/build/vim-build-system.scm new file mode 100644 index 0000000000..28c0f8f83f --- /dev/null +++ b/guix/build/vim-build-system.scm @@ -0,0 +1,117 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2022 Jonathan Scoresby +;;; Copyright © 2023 Efraim Flashner +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix 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. +;;; +;;; GNU Guix 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 GNU Guix. If not, see . + +(define-module (guix build vim-build-system) + #:use-module ((guix build copy-build-system) + #:prefix copy:) + #:use-module (guix build utils) + #:use-module (ice-9 match) + #:use-module (ice-9 ftw) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:export (%standard-phases vim-build)) + +;; Commentary: +;; +;; System for installing vim and neovim plugins. It downloads +;; the source and copies the appropriate files to vim and nvim +;; packpaths. It then generates helptags. +;; +;; Code: + +(define copy:install + (assoc-ref copy:%standard-phases 'install)) + +(define vim-path + "/share/vim/vimfiles/pack/guix/") +(define nvim-path + "/share/nvim/site/pack/guix/") + +(define* (install #:key plugin-name + install-plan + neovim? + vim? + mode + outputs + #:allow-other-keys) + + (let* ((include-regexp '(".*\\/.*\\/.*")) + (exclude-regexp '("^scripts/.*" + "tests?/.*" "^t/.*" + "assets/.*" + ".*\\/\\..*")) + (vim-install (if vim? + `(("." ,(string-append vim-path mode "/" plugin-name "/") + #:include-regexp ,include-regexp + #:exclude-regexp ,exclude-regexp)) + '())) + (neovim-install (if neovim? + `(("." ,(string-append nvim-path mode "/" plugin-name "/") + #:include-regexp ,include-regexp + #:exclude-regexp ,exclude-regexp)) + '()))) + (copy:install #:outputs outputs + #:install-plan (append vim-install + neovim-install + install-plan)))) + +(define* (generate-helptags #:key plugin-name + neovim? + vim? + mode + outputs + #:allow-other-keys) + + (define (vim-generate output) + (invoke "vim" "--clean" "-en" "--cmd" + (string-append "helptags " + output vim-path mode "/" plugin-name "/doc") + "--cmd" "q")) + + (define (neovim-generate output) + (invoke "nvim" "--clean" "--headless" "-en" "--cmd" + (string-append "helptags " + output nvim-path mode "/" plugin-name "/doc") + "--cmd" "q")) + + (when (scandir "./doc") + (let ((out (assoc-ref outputs "out"))) + (when vim? + (vim-generate out)) + (when neovim? + (neovim-generate out))))) + +(define %standard-phases + ;; Everything is as with the Copy Build System except for + ;; the addition of the generate-helptags phase and a few + ;; custom actions are added to the install phase + (modify-phases copy:%standard-phases + (replace 'install install) + (add-after 'install 'generate-helptags generate-helptags))) + +(define* (vim-build #:key inputs + (phases %standard-phases) + #:allow-other-keys #:rest args) + "Build the given package, applying all of PHASES in order." + (apply copy:copy-build + #:inputs inputs + #:phases phases + args)) + +;;; vim-build-system.scm ends here From patchwork Mon Oct 16 09:15:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Efraim Flashner X-Patchwork-Id: 54865 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id C435A27BBE9; Mon, 16 Oct 2023 10:19:08 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SPF_HELO_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id E1C8527BBE2 for ; Mon, 16 Oct 2023 10:19:04 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qsJkL-0005oR-Di; Mon, 16 Oct 2023 05:18:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qsJkH-0005hu-7O for guix-patches@gnu.org; Mon, 16 Oct 2023 05:18:42 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qsJkG-0006X5-LS for guix-patches@gnu.org; Mon, 16 Oct 2023 05:18:40 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qsJkd-0007AL-MU; Mon, 16 Oct 2023 05:19:03 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#60029] [PATCH v3 3/3] gnu: Have vim packages use vim-build-system. Resent-From: Efraim Flashner Original-Sender: "Debbugs-submit" Resent-CC: efraim@flashner.co.il, glv@posteo.net, cox.katherine.e+guix@gmail.com, me@bonfacemunyoki.com, jgart@dismail.de, guix-patches@gnu.org Resent-Date: Mon, 16 Oct 2023 09:19:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60029 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 60029@debbugs.gnu.org Cc: paren@disroot.org, me@jonscoresby.com, Efraim Flashner , Efraim Flashner , Guillaume Le Vaillant , Katherine Cox-Buday , Munyoki Kilyungi , jgart X-Debbugs-Original-Xcc: Efraim Flashner , Guillaume Le Vaillant , Katherine Cox-Buday , Munyoki Kilyungi , jgart Received: via spool by 60029-submit@debbugs.gnu.org id=B60029.169744790327473 (code B ref 60029); Mon, 16 Oct 2023 09:19:03 +0000 Received: (at 60029) by debbugs.gnu.org; 16 Oct 2023 09:18:23 +0000 Received: from localhost ([127.0.0.1]:55238 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qsJjx-000792-R9 for submit@debbugs.gnu.org; Mon, 16 Oct 2023 05:18:23 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]:55618) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qsJjo-00078G-Jj for 60029@debbugs.gnu.org; Mon, 16 Oct 2023 05:18:20 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-406650da82bso39387455e9.3 for <60029@debbugs.gnu.org>; Mon, 16 Oct 2023 02:17:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697447862; x=1698052662; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=HCWrpTbgNberJlppsBlhgohRSFXTtVQhXnXTLS4lFLk=; b=ej9j1AwFYEQTNRo0vPztHHMcLD8QtAuAbzSMkmG8nf9ytsoXrTAHeFa4SpYsEiIvBW R1RtFrYH6/FlWiBnQIf1/d35L6ZssraVSdfHDAuSYw9I7vDEgqDHtGa8spRC9VpUW2nC OIFEFBpmflgjgbbILgeo4aud8CMcOevIX4d9nVB8ULYy2a8VZseZchOlKnw2zIbVOS/l 0Iexr5keY/AUElYBa4Sdp025/sxe8vlviPXWegM12aSCWoFPAGwiTb9/u1VTTB09S5Nj eBQ1L+J76UXcZqP1+PgkxG3EKCoVbugVuKJFUV8tG7B3vXRWmoP5LCILWWg5Q3GWkvJB 306w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697447862; x=1698052662; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=HCWrpTbgNberJlppsBlhgohRSFXTtVQhXnXTLS4lFLk=; b=fvADCu7Os0Cjh4BzrJl5QSyl3TzLmj8QawYBndknNTzQ++uQGudBGvUiKgf9gZ4PU1 7fri7GACoVYbIkyfW9Jipw77YBDQVynX+bvLdjC28cm8cuS7fNajf/ZsLfViKFRVbpbr McdZIX1hP6pRQcXgymA8ocui9eLHpmsAJfySqBkFzfSjQakqH7a5KJQ5lMz2s8WFfxTi jGAG7W674Kbpmp3wCGVi94p9IK0vu3PJuxymCJvI40TeXvVj4kHYUZa3uhgiilxnyDJB QBZ98XvMn32fXL9tMj9TbIDymvYhyQTnpJwRDOylNMVzKgT9jBPUpvGRjisRBYmBsql4 23LQ== X-Gm-Message-State: AOJu0YwUErsYTtNlSDGAglcgBD2M8JSen+5lYMnTtxAv1/6RnkiQJ/E0 FBPog0AAp0xLMyV2kOnleMbuWw3y3EixEg== X-Google-Smtp-Source: AGHT+IHQTpvyyfKJb3Ngs5ZHtCxwt8doU/1fSL2mPoA1zMUVOdL+i/+GMnuROQvJxcJQP6EXiZSDoQ== X-Received: by 2002:a05:6000:4e1:b0:31f:fdd8:7d56 with SMTP id cr1-20020a05600004e100b0031ffdd87d56mr26162400wrb.12.1697447861929; Mon, 16 Oct 2023 02:17:41 -0700 (PDT) Received: from localhost ([31.210.180.106]) by smtp.gmail.com with ESMTPSA id q14-20020adfcb8e000000b003296b488961sm26017551wrh.31.2023.10.16.02.17.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 02:17:41 -0700 (PDT) From: Efraim Flashner Date: Mon, 16 Oct 2023 12:15:13 +0300 Message-ID: X-Mailer: git-send-email 2.41.0 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches From: Jonathan Scoresby * gnu/packages/vim.scm (vim-neocomplete, vim-neocomplete-snippets, vim-neosnippet, vim-scheme, vim-luna, vim-fugitive, vim-airline, vim-airline-themes, vim-syntastic, neovim-syntastic, vim-solarized, vim-rainbow, editorconfig-vim, neovim-packer, vim-guix-vim, vim-asyncrun, vim-dispatch, vim-gemini-vim, vim-eunuch, vim-slime, vim-vlime, vim-paredit, vim-surround, vim-gnupg, vim-ctrlp, vim-mucomplete, vim-gitgutter, vim-characterize, vim-tagbar, vim-nerdtree, vim-nerdcommander): [build-system]: Switch to vim-build-system. [arguments]: Adjust accordingly. * gnu/packages/code.scm (global)[arguments]: Move vim files to their new location. * gnu/packages/lisp.scm (txr), * gnu/packages/mail.scm (msmtp), * gnu/packages/rust-apps.scm (skim), * gnu/packages/vim.scm (vifm), * gnu/packages/wm.scm (fluxbox): Same. Co-authored-by: Efraim Flashner Signed-off-by: Efraim Flashner --- gnu/packages/code.scm | 5 +- gnu/packages/lisp.scm | 5 +- gnu/packages/mail.scm | 3 +- gnu/packages/rust-apps.scm | 3 +- gnu/packages/vim.scm | 306 ++++++++++++++----------------------- gnu/packages/wm.scm | 3 +- 6 files changed, 124 insertions(+), 201 deletions(-) diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index 21a9f10a11..f53f7dc9e3 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -237,8 +237,9 @@ (define-public global ; a global variable (lambda _ ;; Install the plugin files in the right place. (let* ((data (string-append #$output "/share/gtags")) - (vim (string-append #$output - "/share/vim/vimfiles/plugin")) + (vim (string-append + #$output + "/share/vim/vimfiles/pack/guix/start/global/plugin")) (lisp (string-append #$output "/share/emacs/site-lisp/" #$(package-name this-package) "-" #$(package-version this-package)))) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index c54a9b4b3a..e421ccc092 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -1061,8 +1061,9 @@ (define-public txr '("txr-manpage.html" "txr-manpage.pdf"))))) (add-after 'install 'install-vim-files (lambda _ - (let ((syntax (string-append #$output - "/share/vim/vimfiles/syntax"))) + (let ((syntax (string-append + #$output + "/share/vim/vimfiles/pack/guix/start/txr/syntax"))) (install-file "tl.vim" syntax) (install-file "txr.vim" syntax))))))) (native-inputs diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index be458a2d92..e736c07e63 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -1865,7 +1865,8 @@ (define-public msmtp (doc (string-append out "/share/doc/msmtp")) (msmtpq "scripts/msmtpq") (msmtpqueue "scripts/msmtpqueue") - (vimfiles (string-append out "/share/vim/vimfiles/syntax"))) + (vimfiles (string-append + out "/share/vim/vimfiles/pack/start/msmtp/syntax"))) (install-file (string-append msmtpq "/msmtpq") bin) (install-file (string-append msmtpq "/msmtp-queue") bin) (install-file (string-append msmtpqueue "/msmtp-enqueue.sh") bin) diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm index 2f41ca4849..68b2122406 100644 --- a/gnu/packages/rust-apps.scm +++ b/gnu/packages/rust-apps.scm @@ -2151,7 +2151,8 @@ (define-public skim (bin (string-append out "/bin")) (share (string-append out "/share")) (man (string-append out "/share/man")) - (vimfiles (string-append share "/vim/vimfiles/plugin")) + (vimfiles (string-append + share "/vim/vimfiles/pack/guix/start/skim/plugin")) (bash-completion (string-append share "/bash-completions/completions")) (zsh-site (string-append share "/zsh/site-functions")) diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index d2ea9b7ae1..c8eb2522c6 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -31,17 +31,17 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages vim) - #:use-module ((guix licenses) #:prefix license:) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix gexp) #:use-module (guix utils) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system cmake) - #:use-module (guix build-system copy) #:use-module (guix build-system gnu) #:use-module (guix build-system python) #:use-module (guix build-system pyproject) + #:use-module (guix build-system vim) #:use-module (gnu packages) #:use-module (gnu packages acl) #:use-module (gnu packages admin) ; For GNU hostname @@ -299,12 +299,9 @@ (define-public vim-neocomplete (sha256 (base32 "1h6sci5mhdfg6sjsjpi8l5li02hg858zcayiwl60y9j2gqnd18lv")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "neocomplete")) (synopsis "Next generation completion framework for Vim") (description "@code{neocomplete}, an abbreviation of 'neo-completion with cache', @@ -332,10 +329,9 @@ (define-public vim-neosnippet-snippets (sha256 (base32 "151wpvbj6jb9jdkbhj3b77f5sq7y328spvwfbqyj1y32rg4ifmc6")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("neosnippets" "share/vim/vimfiles/")))) + (list #:plugin-name "neosnippet-snippets")) (synopsis "Snippets for neosnippet") (description "@code{neosnippet-snippets} provides standard snippets for the Vim plugin @@ -361,17 +357,9 @@ (define-public vim-neosnippet (sha256 (base32 "0k80syscmpnj38ks1fq02ds59g0r4jlg9ll7z4qc048mgi35alw5")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("ftdetect" "share/vim/vimfiles/") - ("ftplugin" "share/vim/vimfiles/") - ("indent" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/") - ("rplugin" "share/vim/vimfiles/") - ("syntax" "share/vim/vimfiles/")))) + (list #:plugin-name "neosnippet")) (synopsis "Snippet support for Vim") (description "@code{neosnippet}, is a plugin for Vim which adds snippet support to Vim. @@ -400,12 +388,9 @@ (define-public vim-scheme (sha256 (base32 "04h946vr4f8wxap3wzqs69y2v8n50g2zbk22jsg2kxr4c01z5cbw")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("ftplugin" "share/vim/vimfiles/") - ("indent" "share/vim/vimfiles/") - ("syntax" "share/vim/vimfiles/")))) + (list #:plugin-name "vim-scheme")) (synopsis "Scheme syntax for Vim") (description "@code{vim-scheme} provides Scheme support for Vim (R7RS and CHICKEN).") @@ -428,10 +413,9 @@ (define-public vim-luna (sha256 (base32 "0ka3qbhsh8lix1vyj4678j7dnchkd8khhirrnn3aylxxf8fpqyg8")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("colors" "share/vim/vimfiles/")))) + (list #:plugin-name "luna")) (synopsis "Dark color theme for Vim") (description "@code{vim-luna} is a dark color theme for Vim.") @@ -455,11 +439,9 @@ (define-public vim-context-filetype (sha256 (base32 "0alvrfhmd91zkd9h83s8wvgyq4iakcf6rybsyjd369qbgpcqky89")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("doc" "share/vim/vimfiles/") - ("autoload" "share/vim/vimfiles/")))) + (list #:plugin-name "context_filetype")) (synopsis "Context filetype library for Vim") (description "@code{vim-context-filetype} is context filetype library for Vim script.") @@ -479,15 +461,9 @@ (define-public vim-fugitive (file-name (git-file-name name version)) (sha256 (base32 "138290g2aph1jjhaza6biky5qi4ka6435s01bwxivllgb53g3irc")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("ftdetect" "share/vim/vimfiles/") - ("ftplugin" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/") - ("syntax" "share/vim/vimfiles/")))) + (list #:plugin-name "fugitive")) (home-page "https://github.com/tpope/vim-fugitive") (synopsis "Vim plugin to work with Git") (description "Vim-fugitive is a wrapper for Vim that complements the @@ -509,12 +485,9 @@ (define-public vim-airline (sha256 (base32 "1aksmr73648pvyc75pfdz28k2d4ky52rn7xiwcv7lz87q3vqld7k")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "airline")) (synopsis "Statusline for Vim") (description "@code{vim-airline} is an extensible statusline for Vim. @@ -540,12 +513,9 @@ (define-public vim-airline-themes (sha256 (base32 "1sb7nb7j7bz0pv1c9bgdy0smhr0jk2b1vbdv9yzghg5lrknpsbr6")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "airline-themes")) (synopsis "Collection of themes for Vim-airline") (description "@code{vim-airline-themes} is a collection of themes for @code{vim-airline}.") @@ -565,13 +535,9 @@ (define-public vim-syntastic (file-name (git-file-name name version)) (sha256 (base32 "0j91f72jaz1s6aw1hpjiz30vk2ds2aqd9gisk91grsldy6nz6hhz")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/") - ("syntax_checkers" "share/vim/vimfiles/")))) + (list #:plugin-name "syntastic")) (synopsis "Syntax checking plugin for Vim") (description "Vim-syntastic is a syntax checking plugin for Vim. It runs files through @@ -581,6 +547,17 @@ (define-public vim-syntastic (home-page "https://github.com/vim-syntastic/syntastic") (license license:wtfpl2))) +(define-public neovim-syntastic + (package + (inherit vim-syntastic) + (name "neovim-syntastic") + (synopsis "Syntax checking plugin for Neovim") + (description + "Vim-syntastic is a syntax checking plugin for Neovim. It runs files through +external syntax checkers and displays any resulting errors to the user. This +can be done on demand, or automatically as files are saved. If syntax errors +are detected, the user is notified."))) + (define-public vim-solarized (let ((commit "62f656a02f93c5190a8753159e34b385588d5ff3") (revision "1")) @@ -596,11 +573,15 @@ (define-public vim-solarized (file-name (git-file-name name version)) (sha256 (base32 "0001mz5v3a8zvi3gzmxhi3yrsb6hs7qf6i497arsngnvj2cwn61d")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("vim-colors-solarized/colors" "share/vim/vimfiles/") - ("vim-colors-solarized/doc" "share/vim/vimfiles/")))) + (list + #:plugin-name "solarized" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "vim-colors-solarized")))))) (home-page "https://github.com/altercation/vim-colors-solarized") (synopsis "Solarized color scheme for Vim") (description @@ -631,9 +612,15 @@ (define-public vim-rainbow (file-name (git-file-name name version)) (sha256 (base32 "1jya8wwlkmgs89hndrq6gsaskhk9g0fh62wdib8v9vz2x5g3738z")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan '(("opt" "share/vim/vimfiles/pack/rainbow/")))) + (list + #:plugin-name "rainbow" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "opt/rainbow")))))) (home-page "https://github.com/mason1920/rainbow") (synopsis "Rainbow Parentheses Improved") (description @@ -656,12 +643,11 @@ (define-public editorconfig-vim (sha256 (base32 "0mp80bi2m56bb93szw87vy6q5s85yk9g91sl4pr51316rgdv5kkv")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list + #:plugin-name "editorconfig" + #:vim? #t)) (home-page "https://editorconfig.org/") (synopsis "EditorConfig plugin for Vim") (description "EditorConfig makes it easy to maintain the correct coding @@ -686,11 +672,9 @@ (define-public neovim-packer (sha256 (base32 "1xn08z3a21mgfvp5i1nv57jnldwxwnl5nkryiff3zc99b1mizigp")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - (list #:install-plan - #~'(("lua" "share/nvim/site/pack/guix/start/packer.nvim/") - ("doc" "share/nvim/site/pack/guix/start/packer.nvim/")))) + (list #:plugin-name "packer.nvim")) (home-page "https://github.com/wbthomason/packer.nvim") (synopsis "Plugin manager for Neovim") (description @@ -699,23 +683,6 @@ (define-public neovim-packer is based on Vim's builtin plugin support.") (license license:expat)))) -(define-public neovim-syntastic - (package - (inherit vim-syntastic) - (name "neovim-syntastic") - (arguments - '(#:install-plan - '(("autoload" "share/nvim/site/") - ("doc" "share/nvim/site/") - ("plugin" "share/nvim/site/") - ("syntax_checkers" "share/nvim/site/")))) - (synopsis "Syntax checking plugin for Neovim") - (description - "Vim-syntastic is a syntax checking plugin for Neovim. It runs files through -external syntax checkers and displays any resulting errors to the user. This -can be done on demand, or automatically as files are saved. If syntax errors -are detected, the user is notified."))) - (define-public neovim (package (name "neovim") @@ -889,12 +856,12 @@ (define-public vifm (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (vifm (string-append out "/share/vifm")) - (vimfiles (string-append out "/share/vim/vimfiles"))) + (vimfiles (string-append + out "/share/vim/vimfiles/pack/guix/start/vifm"))) (copy-recursively (string-append vifm "/colors") (string-append vimfiles "/colors")) (copy-recursively (string-append vifm "/vim") vimfiles) - (delete-file-recursively (string-append vifm "/colors")) (delete-file-recursively (string-append vifm "/vim")))))))) (native-inputs (list groff)) ; for the documentation @@ -986,17 +953,9 @@ (define-public vim-guix-vim (sha256 (base32 "013yn2n2nsspk12bldkc9xn4z4kjx9rvracbllc8i1nngldckxd0")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("compiler" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("indent" "share/vim/vimfiles/") - ("ftdetect" "share/vim/vimfiles/") - ("ftplugin" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/") - ("syntax" "share/vim/vimfiles/")))) + (list #:plugin-name "guix")) (home-page "https://git.sr.ht/~efraim/guix.vim") (synopsis "Guix integration in Vim") (description "This package provides support for GNU Guix in Vim.") @@ -1015,11 +974,13 @@ (define-public vim-asyncrun (sha256 (base32 "11zcw0sll6qg6ha0rr6n1cw5v73azvf7ycwn9lgiwa5cj7rrqjf4")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("plugin" "share/vim/vimfiles/") - ("doc/" "share/vim/vimfiles/doc" #:include ("asyncrun.txt"))))) + (list + #:plugin-name "asyncrun" + #:install-plan + #~'(("plugin" "share/vim/vimfiles/") + ("doc/" "share/vim/vimfiles/doc" #:include ("asyncrun.txt"))))) (home-page "https://github.com/skywind3000/asyncrun.vim") (synopsis "Run Async Shell Commands in Vim") (description "This plugin takes the advantage of new APIs in Vim 8 (and @@ -1041,12 +1002,9 @@ (define-public vim-dispatch (sha256 (base32 "1m8b5mn2zqlphzs6xfwykwmghf6p0wabrhpjmh7vav35jgcxc4wl")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "dispatch")) (home-page "https://github.com/tpope/vim-dispatch") (synopsis "Asynchronous build and test dispatcher") (description "Leverage the power of Vim's compiler plugins without being @@ -1071,11 +1029,9 @@ (define-public vim-gemini-vim (file-name (git-file-name name version)) (sha256 (base32 "05ffhhfahjqwxyrqmsinsahrs15wknzl2qbj8mznyv319mn2civ2")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - `(#:install-plan - '(("ftdetect" "share/vim/vimfiles/") - ("syntax" "share/vim/vimfiles/")))) + (list #:plugin-name "gemini")) (home-page "https://git.sr.ht/~torresjrjr/gemini.vim") (synopsis "Vim syntax highlighting plugin for Gemini") (description "This Vim plugin provides a Vim syntax highlighting plugin @@ -1099,11 +1055,9 @@ (define-public vim-eunuch (sha256 (base32 "1xadb22kd40swmww0qxmmkcpcq6viy8l167pjck5q32hfngll5d3")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "eunuch")) (home-page "https://github.com/tpope/vim-eunuch") (synopsis "Vim sugar for the UNIX shell commands") (description "Vim sugar for the UNIX shell commands that need it the most. @@ -1127,13 +1081,9 @@ (define-public vim-slime (file-name (git-file-name name version)) (sha256 (base32 "0k4b629jn6xlxyjxdl3cgm06v9dmx967rqnslv5m82c9kscwpyh4")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - `(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("ftplugin" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "vim-slime")) (home-page "https://technotales.wordpress.com/2007/10/03/like-slime-for-vim/") (synopsis "Vim plugin to give you some slime") (description "SLIME is an Emacs plugin to turn Emacs into a Lisp IDE. You @@ -1159,28 +1109,29 @@ (define-public vim-vlime (sha256 (base32 "1dfc1wyjsgkckrklkzvk4whaz3ahaka59rvm7rc724mabmk83pmp")) (file-name (git-file-name name version)))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("vim/autoload" "share/vim/vimfiles/") - ("vim/doc" "share/vim/vimfiles/") - ("vim/ftplugin" "share/vim/vimfiles/") - ("vim/syntax" "share/vim/vimfiles/") - ("vim/test" "share/vim/vimfiles/") - ;; This is so the Vimscript part of Vlime can find the lisp files. - ("lisp" "share/vim/") - ;; This is so lisp can load Vlime without the Vim part. - ("lisp" "share/common-lisp/source/vlime")) + '(#:plugin-name "vlime" #:phases (modify-phases %standard-phases - ;; Create a symbolic link to the .asd file so that - ;; (asdf:load-system "vlime") finds the system. - (add-after 'install 'link-asd + (add-after 'symlink-files 'install-lisp-files (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (mkdir-p (string-append out "/share/common-lisp/systems/")) - (symlink (string-append out "/share/common-lisp/source/vlime/vlime.asd") - (string-append out "/share/common-lisp/systems/vlime.asd")))))))) + (let* ((out (assoc-ref outputs "out")) + (common-lisp (string-append out "/share/common-lisp"))) + ;; Create a symbolic link to the .asd file so that + ;; (asdf:load-system "vlime") finds the system. + (copy-recursively "lisp" (string-append common-lisp "/source/vlime")) + (mkdir-p (string-append common-lisp "/systems/")) + (symlink (string-append common-lisp "/source/vlime/vlime.asd") + (string-append common-lisp "/systems/vlime.asd"))))) + (add-after 'install 'symlink-files + (lambda* (#:key outputs plugin-name #:allow-other-keys) + (with-directory-excursion + (string-append (assoc-ref outputs "out") + "/share/vim/vimfiles/pack/guix/start/" plugin-name) + (for-each (lambda (dir) + (symlink (string-append "./vim/" dir) dir)) + (list "after" "autoload" "doc" "ftplugin" "syntax")))))))) (propagated-inputs (list cl-alexandria cl-slime-swank @@ -1211,11 +1162,9 @@ (define-public vim-paredit (file-name (git-file-name name version)) (sha256 (base32 "07d5s20r0ssd7rir45vy0fqlci44gha1a81rcilgar227f3nw328")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "paredit")) (home-page "https://github.com/kovisoft/paredit") (synopsis "Vim plugin for structured editing of Lisp S-expressions") (description @@ -1237,11 +1186,9 @@ (define-public vim-surround (file-name (git-file-name name version)) (sha256 (base32 "1b0bd5m5lv1p4d299mrwjfs2gk0zqwyaqdaid9hs9yqlxnr8s5nf")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "surround")) (home-page "https://github.com/tpope/vim-surround") (synopsis "Vim plugin for easy quoting and parenthesizing") (description @@ -1262,12 +1209,9 @@ (define-public vim-gnupg "/vim-gnupg-v" version ".tar.gz")) (sha256 (base32 "02w8lgyyh7wgxysvmmcf9ja5c06vrbyh3alzvv97x8cfhrp0skn7")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "vim-gnupg")) (home-page "https://www.vim.org/scripts/script.php?script_id=3645") (synopsis "Vim plugin for transparent editing of gpg encrypted files") (description @@ -1293,12 +1237,9 @@ (define-public vim-ctrlp (file-name (git-file-name name version)) (sha256 (base32 "0n68hg59h4rjn0ziqbsh5pr03l3kr98zk54659ny6vq107af1w96")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "ctrlp.vim")) (home-page "https://ctrlpvim.github.io/ctrlp.vim/") (synopsis "Fuzzy file, buffer, mru, tag, etc. finder for Vim") (description @@ -1330,12 +1271,9 @@ (define-public vim-mucomplete (file-name (git-file-name name version)) (sha256 (base32 "054g80n09mmxxlh8xaic29bn8bgn3clvv732rymljdyvbj1mlhwd")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "MUcomplete")) (home-page "https://github.com/lifepillar/vim-mucomplete") (synopsis "MUcomplete is a minimalist autocompletion plugin for Vim") (description @@ -1359,12 +1297,9 @@ (define-public vim-gitgutter (file-name (git-file-name name version)) (sha256 (base32 "0zpa7cs59a8sq0k3frlf9flpf30jcn239yrpmv40r7nqvxzglbpl")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "gitgutter")) (synopsis "Vim plugin which shows a git diff in the sign column") (description "A Vim plugin which shows a git diff in the sign column. It shows which @@ -1388,12 +1323,9 @@ (define-public vim-characterize (file-name (git-file-name name version)) (sha256 (base32 "0ppsbsd696ih40d9f76mdl9sd9y7p2pvm65qmvq4b2zhkv4xbpxz")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "characterize")) (home-page "https://github.com/tpope/vim-characterize") (synopsis "Vim plugin for showing Unicode character metadata") (description @@ -1422,13 +1354,9 @@ (define-public vim-tagbar (file-name (git-file-name name version)) (sha256 (base32 "1fqfs8msmr6d4kpvxqp14sdjvp5fj52q5w5kz71myzcd4kqzmirp")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/") - ("syntax" "share/vim/vimfiles/")) + '(#:plugin-name "tagbar" #:phases (modify-phases %standard-phases (add-after 'unpack 'link-universal-ctags @@ -1463,15 +1391,9 @@ (define-public vim-nerdtree (file-name (git-file-name name version)) (sha256 (base32 "1si8qla86ng8cffbmfrk9gss0i3912yw0f1ph4bsiq0kk837lccp")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - '(#:install-plan - '(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("lib" "share/vim/vimfiles/") - ("nerdtree_plugin" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/") - ("syntax" "share/vim/vimfiles/")))) + (list #:plugin-name "nerdtree")) (home-page "https://github.com/preservim/nerdtree") (synopsis "Tree explorer plugin for Vim") (description @@ -1493,13 +1415,9 @@ (define-public vim-nerdcommenter (file-name (git-file-name name version)) (sha256 (base32 "1ka2rqn7rby55aps3iblh1dcqxm7m7qx72mpkz6y2aaj8mkj0zyd")))) - (build-system copy-build-system) + (build-system vim-build-system) (arguments - (list - #:install-plan - #~`(("autoload" "share/vim/vimfiles/") - ("doc" "share/vim/vimfiles/") - ("plugin" "share/vim/vimfiles/")))) + (list #:plugin-name "nerdcommenter")) (home-page "https://github.com/preservim/nerdcommenter") (synopsis "Vim plugin for easy commenting of code") (description diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 8576d0297d..f3ad1a5635 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -1083,7 +1083,8 @@ (define-public fluxbox (add-after 'install 'install-vim-files (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) - (syntax (string-append out "/share/vim/vimfiles/syntax"))) + (syntax (string-append + out "/share/vim/vimfiles/pack/guix/start/fluxbox/syntax"))) (copy-recursively "3rd/vim/vim/syntax" syntax) #t))) (add-after 'install 'install-xsession