gnu: emacspeak: Fix Tclx and espeak server loading.
[jackhill/guix/guix.git] / gnu / packages / vim.scm
index d9ee202..231fae9 100644 (file)
@@ -1,14 +1,15 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 HiPhish <hiphish@posteo.de>
 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2019, 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,6 +33,7 @@
   #: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 (gnu packages)
@@ -69,7 +71,7 @@
 (define-public vim
   (package
     (name "vim")
-    (version "8.2.0332")
+    (version "8.2.2689")
     (source (origin
              (method git-fetch)
              (uri (git-reference
              (file-name (git-file-name name version))
              (sha256
               (base32
-               "0icgykml4wxq554h7r9rcxpxipg0yri651b9fijvv364ycywsq8c"))))
+               "0l0hkr8cw7fdsfc5zzcxx3q1wmv9k3hrgalvffq0l69lviqdgh0p"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
        #:parallel-tests? #f
+       ;; Fix test_signals.vim. https://github.com/vim/vim/issues/7402
+       #:make-flags (list "CFLAGS=-D_REENTRANT")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'configure 'patch-config-files
+         (add-after 'configure 'patch-absolute-paths
            (lambda _
              (substitute* "runtime/tools/mve.awk"
                (("/usr/bin/nawk") (which "gawk")))
              (substitute* '("src/testdir/Makefile"
                             "src/testdir/test_normal.vim"
-                            "src/testdir/test_terminal.vim")
+                            "src/testdir/test_popupwin.vim"
+                            "src/testdir/test_system.vim"
+                            "src/testdir/test_terminal.vim"
+                            "src/testdir/test_terminal2.vim")
                (("/bin/sh") (which "sh")))
+             (substitute* "src/testdir/test_autocmd.vim"
+               (("/bin/kill") (which "kill")))
              #t))
-         (add-before 'check 'set-TZDIR
+         (add-before 'check 'set-environment-variables
            (lambda* (#:key inputs #:allow-other-keys)
              ;; One of the tests tests timezone-dependent functions.
              (setenv "TZDIR"
                      (string-append (assoc-ref inputs "tzdata")
                                     "/share/zoneinfo"))
+
+             ;; Make sure the TERM environment variable is set for the tests
+             (setenv "TERM" "xterm")
              #t))
-         (add-before 'check 'skip-failing-tests
+         (add-before 'check 'skip-or-fix-failing-tests
            (lambda _
              ;; This test assumes that PID 1 is run as root and that the user
              ;; running the test suite does not have permission to kill(1, 0)
              (substitute* "src/testdir/test_swap.vim"
                (("if !IsRoot\\(\\)") "if 0"))
 
-             ;; This test checks how the terminal looks after executing some
+             ;; These tests check how the terminal looks after executing some
              ;; actions.  The path of the bash binary is shown, which results in
              ;; a difference being detected.  Patching the expected result is
              ;; non-trivial due to the special format used, so skip the test.
              (substitute* "src/testdir/test_terminal.vim"
+               ((".*Test_open_term_from_cmd.*" line)
+                (string-append line "return\n"))
                ((".*Test_terminal_postponed_scrollback.*" line)
+                (string-append line "return\n"))
+               ((".*Test_combining_double_width.*" line)
                 (string-append line "return\n")))
-             #t)))))
+             (substitute* "src/testdir/test_popupwin.vim"
+               ((".*Test_popup_drag_termwin.*" line)
+                (string-append line "return\n")))
+             #t))
+         (add-after 'install 'install-guix.vim
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((vimdir (string-append (assoc-ref outputs "out") "/share/vim")))
+               (mkdir-p vimdir)
+               (copy-file (assoc-ref inputs "guix.vim")
+                          (string-append vimdir "/vimrc"))
+               #t))))))
     (inputs
      `(("gawk" ,gawk)
        ("ncurses" ,ncurses)
        ("tcsh" ,tcsh)))                 ; For runtime/tools/vim32
     (native-inputs
      `(("libtool" ,libtool)
+       ("guix.vim" ,(search-auxiliary-file "guix.vim"))
 
        ;; For tests.
        ("tzdata" ,tzdata-for-tests)))
@@ -149,7 +176,7 @@ configuration files.")
   (package (inherit vim)
     (name "xxd")
     (arguments
-     `(#:make-flags '("CC=gcc")
+     `(#:make-flags (list ,(string-append "CC=" (cc-for-target)))
        #:tests? #f ; there are none
        #:phases
        (modify-phases %standard-phases
@@ -192,33 +219,16 @@ with the editor vim.")))
              "--enable-xim"
              "--disable-selinux"
              "--enable-gui")
-       ;; This flag fixes the following error:
-       ;; .../libpython3.7m.a(pyexpat.o): undefined reference to symbol 'XML_FreeContentModel'
-       ;; .../libexpat.so.1: error adding symbols: DSO missing from command line
-       #:make-flags '("LDFLAGS=-lexpat")
        ,@(substitute-keyword-arguments (package-arguments vim)
+           ;; This flag fixes the following error:
+           ;; .../libpython3.7m.a(pyexpat.o): undefined reference to symbol 'XML_FreeContentModel'
+           ;; .../libexpat.so.1: error adding symbols: DSO missing from command line
+           ((#:make-flags flags)
+            `(append
+              (list "LDFLAGS=-lexpat")
+              (delete "CFLAGS=-D_REENTRANT" ,flags)))
            ((#:phases phases)
             `(modify-phases ,phases
-               (add-before 'check 'skip-previewpopup
-                 ;; This test fails when the path to the source is long. See:
-                 ;; https://github.com/vim/vim/issues/5615
-                 (lambda _
-                   (substitute* "src/testdir/test_popupwin.vim"
-                     ((".*Test_previewpopup.*" line)
-                      (string-append line "return\n")))))
-               (add-before 'check 'skip-test87
-                 ;; This test fails for unknown reasons after switching
-                 ;; to a git checkout.
-                 (lambda _
-                   (delete-file "src/testdir/test87.ok")
-                   (delete-file "src/testdir/test87.in")
-                   (substitute* '("src/Makefile"
-                                  "src/testdir/Make_vms.mms")
-                     (("test87") ""))
-                   (substitute* "src/testdir/Make_all.mak"
-                     (("test86.out \\\\") "test86")
-                     (("test87.out") ""))
-                   #t))
                (add-before 'check 'start-xserver
                  (lambda* (#:key inputs #:allow-other-keys)
                    ;; Some tests require an X server, but does not start one.
@@ -287,24 +297,12 @@ written in the Python 3, Perl, Ruby, Tcl, and Lua programming languages.")))
        (sha256
         (base32
          "1h6sci5mhdfg6sjsjpi8l5li02hg858zcayiwl60y9j2gqnd18lv"))))
-    (build-system gnu-build-system)
+    (build-system copy-build-system)
     (arguments
-     `(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (vimfiles (string-append out "/share/vim/vimfiles"))
-                    (autoload (string-append vimfiles "/autoload"))
-                    (doc (string-append vimfiles "/doc"))
-                    (plugin (string-append vimfiles "/plugin")))
-               (copy-recursively "autoload" autoload)
-               (copy-recursively "doc" doc)
-               (copy-recursively "plugin" plugin)
-               #t))))))
+     '(#:install-plan
+       '(("autoload" "share/vim/vimfiles/")
+         ("doc" "share/vim/vimfiles/")
+         ("plugin" "share/vim/vimfiles/"))))
     (synopsis "Next generation completion framework for Vim")
     (description
      "@code{neocomplete}, an abbreviation of 'neo-completion with cache',
@@ -332,20 +330,10 @@ features than Vim's built-in completion.")
          (sha256
           (base32
            "151wpvbj6jb9jdkbhj3b77f5sq7y328spvwfbqyj1y32rg4ifmc6"))))
-      (build-system gnu-build-system)
+      (build-system copy-build-system)
       (arguments
-       `(#:tests? #f
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (delete 'build)
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (vimfiles (string-append out "/share/vim/vimfiles")))
-                 (copy-recursively "neosnippets"
-                                   (string-append vimfiles "/neosnippets"))
-               #t))))))
+       '(#:install-plan
+         '(("neosnippets" "share/vim/vimfiles/"))))
     (synopsis "Snippets for neosnippet")
     (description
      "@code{neosnippet-snippets} provides standard snippets for the Vim plugin
@@ -371,34 +359,17 @@ you can fill in on the fly.")
        (sha256
         (base32
          "0k80syscmpnj38ks1fq02ds59g0r4jlg9ll7z4qc048mgi35alw5"))))
-    (build-system gnu-build-system)
+    (build-system copy-build-system)
     (arguments
-     `(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (vimfiles (string-append out "/share/vim/vimfiles"))
-                    (autoload (string-append vimfiles "/autoload"))
-                    (doc (string-append vimfiles "/doc"))
-                    (ftdetect (string-append vimfiles "/ftdetect"))
-                    (ftplugin (string-append vimfiles "/ftplugin"))
-                    (indent (string-append vimfiles "/indent"))
-                    (plugin (string-append vimfiles "/plugin"))
-                    (rplugin (string-append vimfiles "/rplugin"))
-                    (syntax (string-append vimfiles "/syntax")))
-               (copy-recursively "autoload" autoload)
-               (copy-recursively "doc" doc)
-               (copy-recursively "ftdetect" ftdetect)
-               (copy-recursively "ftplugin" ftplugin)
-               (copy-recursively "indent" indent)
-               (copy-recursively "plugin" plugin)
-               (copy-recursively "rplugin" rplugin)
-               (copy-recursively "syntax" syntax)
-               #t))))))
+     '(#: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/"))))
     (synopsis "Snippet support for Vim")
     (description
      "@code{neosnippet}, is a plugin for Vim which adds snippet support to Vim.
@@ -427,28 +398,16 @@ trouble using them, because you do not have to remember each snippet name.")
          (sha256
           (base32
            "1ynjr1109dxgj0lz261gmzz3wf5ap1m6j6hnvl3lcyv66a4y8pjv"))))
-      (build-system gnu-build-system)
+      (build-system copy-build-system)
       (arguments
-       `(#:tests? #f
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (delete 'build)
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (vimfiles (string-append out "/share/vim/vimfiles"))
-                      (after (string-append vimfiles "/after"))
-                      (syntax (string-append vimfiles "/syntax"))
-                      (ftplugin (string-append vimfiles "/ftplugin")))
-                 (copy-recursively "after" after)
-                 (copy-recursively "ftplugin" ftplugin)
-                 (copy-recursively "syntax" syntax)
-                 #t))))))
+       '(#:install-plan
+         '(("after" "share/vim/vimfiles/")
+           ("ftplugin" "share/vim/vimfiles/")
+           ("syntax" "share/vim/vimfiles/"))))
       (synopsis "Scheme syntax for Vim")
       (description
        "@code{vim-scheme} provides Scheme support for Vim (R7RS and CHICKEN).")
-      (home-page "http://foldling.org/git/vim-scheme.git/")
+      (home-page "https://foldling.org/git/vim-scheme.git/")
       (license license:public-domain))))
 
 (define-public vim-luna
@@ -467,20 +426,10 @@ trouble using them, because you do not have to remember each snippet name.")
          (sha256
           (base32
            "0ka3qbhsh8lix1vyj4678j7dnchkd8khhirrnn3aylxxf8fpqyg8"))))
-      (build-system gnu-build-system)
+      (build-system copy-build-system)
       (arguments
-       `(#:tests? #f
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (delete 'build)
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (vimfiles (string-append out "/share/vim/vimfiles"))
-                      (colors (string-append vimfiles "/colors")))
-                 (copy-recursively "colors" colors)
-                 #t))))))
+       '(#:install-plan
+         '(("colors" "share/vim/vimfiles/"))))
       (synopsis "Dark color theme for Vim")
       (description
        "@code{vim-luna} is a dark color theme for Vim.")
@@ -504,22 +453,11 @@ trouble using them, because you do not have to remember each snippet name.")
          (sha256
           (base32
            "0alvrfhmd91zkd9h83s8wvgyq4iakcf6rybsyjd369qbgpcqky89"))))
-      (build-system gnu-build-system)
+      (build-system copy-build-system)
       (arguments
-       `(#:tests? #f
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (delete 'build)
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (vimfiles (string-append out "/share/vim/vimfiles"))
-                      (doc (string-append vimfiles "/doc"))
-                      (autoload (string-append vimfiles "/autoload")))
-                 (copy-recursively "doc" doc)
-                 (copy-recursively "autoload" autoload)
-                 #t))))))
+       '(#:install-plan
+         '(("doc" "share/vim/vimfiles/")
+           ("autoload" "share/vim/vimfiles/"))))
       (synopsis "Context filetype library for Vim")
       (description
        "@code{vim-context-filetype} is context filetype library for Vim script.")
@@ -534,34 +472,20 @@ trouble using them, because you do not have to remember each snippet name.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/tpope/vim-fugitive.git")
+               (url "https://github.com/tpope/vim-fugitive")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
          (base32
           "1jbn5jxadccmcz01j94d0i1bp74cixr0fpxxf1h0aqdf1ljk3d7n"))))
-    (build-system gnu-build-system)
+    (build-system copy-build-system)
     (arguments
-     '(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (vimfiles (string-append out "/share/vim/vimfiles"))
-                    (autoload (string-append vimfiles "/autoload"))
-                    (doc      (string-append vimfiles "/doc"))
-                    (ftdetect (string-append vimfiles "/ftdetect"))
-                    (plugin   (string-append vimfiles "/plugin"))
-                    (syntax   (string-append vimfiles "/syntax")))
-               (copy-recursively "autoload" autoload)
-               (copy-recursively "doc" doc)
-               (copy-recursively "ftdetect" ftdetect)
-               (copy-recursively "plugin" plugin)
-               (copy-recursively "syntax" syntax)
-               #t))))))
+     '(#:install-plan
+       '(("autoload" "share/vim/vimfiles/")
+         ("doc" "share/vim/vimfiles/")
+         ("ftdetect" "share/vim/vimfiles/")
+         ("plugin" "share/vim/vimfiles/")
+         ("syntax" "share/vim/vimfiles/"))))
     (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
@@ -583,26 +507,12 @@ commit or run any Git arbitrary command.")
        (sha256
         (base32
          "1aksmr73648pvyc75pfdz28k2d4ky52rn7xiwcv7lz87q3vqld7k"))))
-    (build-system gnu-build-system)
+    (build-system copy-build-system)
     (arguments
-     `(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (vimfiles (string-append out "/share/vim/vimfiles"))
-                    (autoload (string-append vimfiles "/autoload"))
-                    (doc (string-append vimfiles "/doc"))
-                    (t (string-append vimfiles "/t"))
-                    (plugin (string-append vimfiles "/plugin")))
-               (copy-recursively "autoload" autoload)
-               (copy-recursively "doc" doc)
-               (copy-recursively "plugin" plugin)
-               (copy-recursively "t" t)
-               #t))))))
+     '(#:install-plan
+       '(("autoload" "share/vim/vimfiles/")
+         ("doc" "share/vim/vimfiles/")
+         ("plugin" "share/vim/vimfiles/"))))
     (synopsis "Statusline for Vim")
     (description
      "@code{vim-airline} is an extensible statusline for Vim.
@@ -628,24 +538,12 @@ and powerline symbols, etc.")
          (sha256
           (base32
            "1sb7nb7j7bz0pv1c9bgdy0smhr0jk2b1vbdv9yzghg5lrknpsbr6"))))
-      (build-system gnu-build-system)
+      (build-system copy-build-system)
       (arguments
-       `(#:tests? #f
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (delete 'build)
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (vimfiles (string-append out "/share/vim/vimfiles"))
-                      (doc (string-append vimfiles "/doc"))
-                      (plugin (string-append vimfiles "/plugin"))
-                      (autoload (string-append vimfiles "/autoload")))
-                 (copy-recursively "doc" doc)
-                 (copy-recursively "autoload" autoload)
-                 (copy-recursively "plugin" plugin)
-                 #t))))))
+       '(#:install-plan
+         '(("autoload" "share/vim/vimfiles/")
+           ("doc" "share/vim/vimfiles/")
+           ("plugin" "share/vim/vimfiles/"))))
       (synopsis "Collection of themes for Vim-airline")
       (description
        "@code{vim-airline-themes} is a collection of themes for @code{vim-airline}.")
@@ -665,26 +563,13 @@ and powerline symbols, etc.")
        (file-name (git-file-name name version))
        (sha256
         (base32 "0j91f72jaz1s6aw1hpjiz30vk2ds2aqd9gisk91grsldy6nz6hhz"))))
-    (build-system gnu-build-system)
+    (build-system copy-build-system)
     (arguments
-     `(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (vimfiles (string-append out "/share/vim/vimfiles"))
-                    (doc (string-append vimfiles "/doc"))
-                    (plugin (string-append vimfiles "/plugin"))
-                    (autoload (string-append vimfiles "/autoload"))
-                    (syntax-checkers (string-append vimfiles "/syntax_checkers")))
-               (copy-recursively "doc" doc)
-               (copy-recursively "autoload" autoload)
-               (copy-recursively "plugin" plugin)
-               (copy-recursively "syntax_checkers" syntax-checkers)
-               #t))))))
+     '(#:install-plan
+       '(("autoload" "share/vim/vimfiles/")
+         ("doc" "share/vim/vimfiles/")
+         ("plugin" "share/vim/vimfiles/")
+         ("syntax_checkers" "share/vim/vimfiles/"))))
     (synopsis "Syntax checking plugin for Vim")
     (description
      "Vim-syntastic is a syntax checking plugin for Vim.  It runs files through
@@ -697,47 +582,23 @@ are detected, the user is notified.")
 (define-public editorconfig-vim
   (package
     (name "editorconfig-vim")
-    (version "0.3.3")
+    (version "1.1.1")
     (source
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/editorconfig/editorconfig-vim.git")
+               (url "https://github.com/editorconfig/editorconfig-vim")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
          (base32
-          "0vssfl1wjq0mv0p30c3dszwrh4yy90vwxmmdgqaxf5rykik7bdfd"))
-        (modules '((guix build utils)))
-        (snippet
-         '(begin
-            (delete-file-recursively "plugin/editorconfig-core-py") #t))))
-    (build-system gnu-build-system)
+          "0mp80bi2m56bb93szw87vy6q5s85yk9g91sl4pr51316rgdv5kkv"))))
+    (build-system copy-build-system)
     (arguments
-     '(#:tests? #f ; tests require ruby and plugin-test repository
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build)
-         (add-after 'unpack 'patch-editorconfig-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((editorconfig (assoc-ref inputs "editorconfig-core")))
-               (substitute* "plugin/editorconfig.vim"
-                 (("/opt") editorconfig))
-               #t)))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (vimfiles (string-append out "/share/vim/vimfiles"))
-                    (doc (string-append vimfiles "/doc"))
-                    (plugin (string-append vimfiles "/plugin"))
-                    (autoload (string-append vimfiles "/autoload")))
-               (copy-recursively "doc" doc)
-               (copy-recursively "autoload" autoload)
-               (copy-recursively "plugin" plugin)
-               #t))))))
-    (inputs
-     `(("editorconfig-core" ,editorconfig-core-c)))
+     '(#:install-plan
+       '(("autoload" "share/vim/vimfiles/")
+         ("doc" "share/vim/vimfiles/")
+         ("plugin" "share/vim/vimfiles/"))))
     (home-page "https://editorconfig.org/")
     (synopsis "EditorConfig plugin for Vim")
     (description "EditorConfig makes it easy to maintain the correct coding
@@ -752,24 +613,11 @@ editors.")
     (inherit vim-syntastic)
     (name "neovim-syntastic")
     (arguments
-     `(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (vimfiles (string-append out "/share/nvim/site"))
-                    (doc (string-append vimfiles "/doc"))
-                    (plugin (string-append vimfiles "/plugin"))
-                    (autoload (string-append vimfiles "/autoload"))
-                    (syntax-checkers (string-append vimfiles "/syntax_checkers")))
-               (copy-recursively "doc" doc)
-               (copy-recursively "autoload" autoload)
-               (copy-recursively "plugin" plugin)
-               (copy-recursively "syntax_checkers" syntax-checkers)
-               #t))))))
+     '(#: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
@@ -780,7 +628,7 @@ are detected, the user is notified.")))
 (define-public neovim
   (package
     (name "neovim")
-    (version "0.4.3")
+    (version "0.4.4")
     (source
      (origin
        (method git-fetch)
@@ -789,7 +637,7 @@ are detected, the user is notified.")))
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "03p7pic7hw9yxxv7fbgls1f42apx3lik2k6mpaz1a109ngyc5kaj"))))
+        (base32 "11zyj6jvkwas3n6w1ckj3pk6jf81z1g7ngg4smmwm7c27y2a6f2m"))))
     (build-system cmake-build-system)
     (arguments
      `(#:modules ((srfi srfi-26)
@@ -863,7 +711,7 @@ refactor Vim in order to:
 (define-public vifm
   (package
     (name "vifm")
-    (version "0.10.1")
+    (version "0.11")
     (source
       (origin
         (method url-fetch)
@@ -874,7 +722,7 @@ refactor Vim in order to:
                               "vifm-" version ".tar.bz2")))
         (sha256
          (base32
-          "0fyhxh7ndjn8fyjhj14ymkr3pjcs3k1xbs43g7xvvq85vdb6y04r"))))
+          "0rqyd424y0g5b5basw2ybb60r9gar4f40d1xgzr3c2dsy4jpwvyh"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-build-timestamp")
@@ -944,13 +792,13 @@ With the package comes a plugin to use vifm as a vim file selector.")
 (define-public python-pynvim
   (package
     (name "python-pynvim")
-    (version "0.3.2")
+    (version "0.4.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "pynvim" version))
               (sha256
                (base32
-                "01dybk4vs452pljn1q3il5z2sd313ki0lgiglc0xmjc6wp290r6g"))))
+                "13qgwkqbx012j5spis1aw8rb120rw0zphgjy1j58irax8r6j1ikb"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-greenlet" ,python-greenlet)
@@ -964,13 +812,10 @@ also works as a library for connecting to and scripting neovim processes
 through its msgpack-rpc API.")
     (license license:asl2.0)))
 
-(define-public python2-pynvim
-  (package-with-python2 python-pynvim))
-
 (define-public vim-guix-vim
   (package
     (name "vim-guix-vim")
-    (version "0.1")
+    (version "0.1.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -979,24 +824,98 @@ through its msgpack-rpc API.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1f8h8m96fqh3f9hy87spgh9kdqzyxl11n9s3rywvyq5xhn489bnk"))))
-    (build-system gnu-build-system)
+                "10bfy0dgwizxr56b4272b7sqajpr6lnz332pzx055dis2zzjap8z"))))
+    (build-system copy-build-system)
     (arguments
-     '(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (vimfiles (string-append out "/share/vim/vimfiles")))
-               (for-each
-                 (lambda (dir)
-                   (copy-recursively dir (string-append vimfiles "/" dir)))
-                 '("compiler" "doc" "indent" "ftdetect" "ftplugin" "syntax"))
-               #t))))))
+     '(#:install-plan
+       '(("compiler" "share/vim/vimfiles/")
+         ("doc" "share/vim/vimfiles/")
+         ("indent" "share/vim/vimfiles/")
+         ("ftdetect" "share/vim/vimfiles/")
+         ("ftplugin" "share/vim/vimfiles/")
+         ("syntax" "share/vim/vimfiles/"))))
     (home-page "https://gitlab.com/Efraim/guix.vim")
     (synopsis "Guix integration in Vim")
     (description "This package provides support for GNU Guix in Vim.")
     (license license:vim)))
+
+(define-public vim-asyncrun
+  (package
+    (name "vim-asyncrun")
+    (version "2.8.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/skywind3000/asyncrun.vim")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0mxsmjv497h6w8dxw0zvqginlx0yvrvrx4z3jhq2x3y2dfvpcm41"))))
+    (build-system copy-build-system)
+    (arguments
+     '(#: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
+NeoVim) to enable you to run shell commands in background and read output in the
+quickfix window in realtime.")
+    (license license:expat)))
+
+(define-public vim-dispatch
+  (package
+    (name "vim-dispatch")
+    (version "1.8")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/tpope/vim-dispatch")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1m8b5mn2zqlphzs6xfwykwmghf6p0wabrhpjmh7vav35jgcxc4wl"))))
+    (build-system copy-build-system)
+    (arguments
+     '(#:install-plan
+       '(("autoload" "share/vim/vimfiles/")
+         ("doc" "share/vim/vimfiles/")
+         ("plugin" "share/vim/vimfiles/"))))
+    (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
+bound by synchronicity.  Kick off builds and test suites using one of several
+asynchronous adapters (including tmux, screen, and a headless mode), and when
+the job completes, errors will be loaded and parsed automatically.")
+    (license license:vim)))
+
+(define-public vim-eunuch
+  (let ((commit "33e875b31c8b811a0a47908884a5e2339106bbe8")
+        (revision "1"))
+    (package
+      (name "vim-eunuch")
+      (version (git-version "1.2" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/tpope/vim-eunuch")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "1xadb22kd40swmww0qxmmkcpcq6viy8l167pjck5q32hfngll5d3"))))
+      (build-system copy-build-system)
+      (arguments
+       '(#:install-plan
+         '(("doc" "share/vim/vimfiles/")
+           ("plugin" "share/vim/vimfiles/"))))
+      (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.
+This package includes commands such as @code{SudoWrite} and @code{SudoEdit} and
+help working on Vim buffers and the files they reference with one command.")
+      (license license:vim))))