;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
-;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 HiPhish <hiphish@posteo.de>
+;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages acl)
#:use-module (gnu packages admin) ; For GNU hostname
#:use-module (gnu packages attr)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gawk)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-xyz)
#:use-module (gnu packages ruby)
#:use-module (gnu packages serialization)
#:use-module (gnu packages shells)
#:use-module (gnu packages tcl)
+ #:use-module (gnu packages text-editors)
#:use-module (gnu packages terminals)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg))
(define-public vim
(package
(name "vim")
- (version "8.1.0026")
+ (version "8.1.0644")
(source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/vim/vim/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/vim/vim")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "14q99dn113czp522j34p71za6g1mkriy04xxwcbm3axnrrpv1y52"))))
+ "1xksb2v8rw1zgrd5fwqvrh44lf277k85sad2y4ia1z17y7i8j2fl"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
"src/testdir/test_terminal.vim")
(("/bin/sh") (which "sh")))
#t))
- (add-before 'check 'patch-failing-test
+ (add-before 'check 'patch-failing-tests
(lambda _
;; XXX A single test fails with “Can't create file /dev/stdout” (at
;; Test_writefile_sync_dev_stdout line 5) while /dev/stdout exists.
(substitute* "src/testdir/test_writefile.vim"
(("/dev/stdout") "a-regular-file"))
+
+ ;; XXX: This test fails when run in the build container:
+ ;; <https://github.com/vim/vim/issues/3348>.
+ (substitute* "src/testdir/test_search.vim"
+ ((".*'Test_incsearch_substitute_03'.*" all)
+ (string-append "\"" all "\n")))
#t)))))
(inputs
`(("gawk" ,gawk)
("ncurses" ,ncurses)
("perl" ,perl)
("tcsh" ,tcsh))) ; For runtime/tools/vim32
- (home-page "http://www.vim.org/")
+ (native-inputs
+ `(("libtool" ,libtool)))
+ (home-page "https://www.vim.org/")
(synopsis "Text editor based on vi")
(description
"Vim is a highly configurable text editor built to enable efficient text
(let ((bin (string-append (assoc-ref outputs "out") "/bin")))
(install-file "xxd" bin)
#t))))))
+ (inputs `())
+ (native-inputs `())
(synopsis "Hexdump utility from vim")
(description "This package provides the Hexdump utility xxd that comes
with the editor vim.")))
,@(substitute-keyword-arguments (package-arguments vim)
((#:phases phases)
`(modify-phases ,phases
+ (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.
display " &")))))))))))
(native-inputs
`(("pkg-config" ,pkg-config)
- ("xorg-server" ,xorg-server)))
+ ("xorg-server" ,xorg-server-for-tests)
+ ,@(package-native-inputs vim)))
(inputs
`(("acl" ,acl)
("atk" ,atk)
(version "2.1")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://github.com/Shougo/neocomplete.vim/"
- "archive/ver." version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Shougo/neocomplete.vim")
+ (commit (string-append "ver." version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1307gbrdwam2akq9w2lpijc41740i4layk2qkd9sjkqxfch5lni2"))))
+ "1h6sci5mhdfg6sjsjpi8l5li02hg858zcayiwl60y9j2gqnd18lv"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f
(home-page "https://github.com/Shougo/context_filetype.vim")
(license license:expat)))) ; ??? check again
-;; The 2.2 release was in 2015, no new releases planned.
(define-public vim-fugitive
- (let ((commit "de6c05720cdf74c0218218d7207f700232a5b6dc")
- (revision "1"))
- (package
- (name "vim-fugitive")
- (version (string-append "2.2-" revision "." (string-take commit 7)))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/tpope/vim-fugitive.git")
- (commit commit)))
- (file-name (string-append name "-" version "-checkout"))
- (sha256
- (base32
- "0zg9vv7hirnx45vc2mwgg0xijmwwz55bssyd6cpdz71wbhrcpxxb"))))
- (build-system gnu-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")))
- (copy-recursively "doc" doc)
- (copy-recursively "plugin" plugin)
- #t))))))
- (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
+ (package
+ (name "vim-fugitive")
+ (version "3.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tpope/vim-fugitive.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0d9jhmidmy5c60iy9x47gqr675n5wp9wrzln83r8ima1fz7vvbgs"))))
+ (build-system gnu-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))))))
+ (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
command window, where you can stage and review your changes before the next
commit or run any Git arbitrary command.")
- (license license:vim)))) ; distributed under the same license as vim
+ (license license:vim))) ; distributed under the same license as vim
(define-public vim-airline
(package
(name "vim-airline")
- (version "0.8")
+ (version "0.10")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://github.com/vim-airline/vim-airline/"
- "archive/v" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/vim-airline/vim-airline")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "053sfq3jmgdc5y7zbg6jrk7r2hp0raj3y3mxa2h1c1bnkb6wvcaz"))))
+ "0k3c6p3xy6514n1n347ci4q9xjm9wwqirpdysam6f7r39crgmfhd"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f
;; There are no tarball releases.
(define-public vim-airline-themes
- (let ((commit "6026eb78bf362cb3aa875aff8487f65728d0f7d8")
- (revision "1"))
+ (let ((commit "e6f233231b232b6027cde6aebeeb18d9138e5324")
+ (revision "2"))
(package
(name "vim-airline-themes")
- (version (string-append "0.0.0-" revision "." (string-take commit 7)))
+ (version (git-version "0.0.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/vim-airline/vim-airline-themes")
(commit commit)))
- (file-name (string-append name "-" version "-checkout"))
+ (file-name (git-file-name name version))
(sha256
(base32
- "13ijkavh1r0935cn2rjsfbdd1q3ka8bi26kw0bdkrqlrqxwvpss8"))))
+ "1sb7nb7j7bz0pv1c9bgdy0smhr0jk2b1vbdv9yzghg5lrknpsbr6"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f
(define-public vim-syntastic
(package
(name "vim-syntastic")
- (version "3.8.0")
+ (version "3.10.0")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://github.com/vim-syntastic/syntastic/archive/"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/vim-syntastic/syntastic")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "0wsnd9bsp5x6yiw96h1bnd1vyxdkh130hb82kyyxydgsplx92ima"))))
+ (base32 "0j91f72jaz1s6aw1hpjiz30vk2ds2aqd9gisk91grsldy6nz6hhz"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f
(home-page "https://github.com/vim-syntastic/syntastic")
(license license:wtfpl2)))
+(define-public editorconfig-vim
+ (package
+ (name "editorconfig-vim")
+ (version "0.3.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/editorconfig/editorconfig-vim.git")
+ (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)
+ (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)))
+ (home-page "https://editorconfig.org/")
+ (synopsis "EditorConfig plugin for Vim")
+ (description "EditorConfig makes it easy to maintain the correct coding
+style when switching between different text editors and between different
+projects. The EditorConfig project maintains a file format and plugins for
+various text editors which allow this file format to be read and used by those
+editors.")
+ (license license:bsd-2)))
+
(define-public neovim-syntastic
(package
(inherit vim-syntastic)
(define-public neovim
(package
(name "neovim")
- (version "0.2.0")
+ (version "0.4.3")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://github.com/neovim/neovim/"
- "archive/v" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/neovim/neovim")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "1db27zm6cldm1aw0570vii1bxc16a34x8lissl1h9rizsbwn7qkj"))))
+ (base32 "03p7pic7hw9yxxv7fbgls1f42apx3lik2k6mpaz1a109ngyc5kaj"))))
(build-system cmake-build-system)
(arguments
`(#:modules ((srfi srfi-26)
(guix build cmake-build-system)
(guix build utils))
+ #:configure-flags '("-DPREFER_LUA:BOOL=YES")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-lua-paths
(lambda* (#:key inputs #:allow-other-keys)
- (let* ((lua-version "5.2")
+ (let* ((lua-version "5.1")
(lua-cpath-spec
(lambda (prefix)
(let ((path (string-append prefix "/lib/lua/" lua-version)))
(string-append path "/?.lua;" path "/?/?.lua"))))
(lua-inputs (map (cute assoc-ref %build-inputs <>)
'("lua"
+ "lua-luv"
"lua-lpeg"
"lua-bitop"
"lua-libmpack"))))
(string-join (map lua-path-spec lua-inputs) ";"))
(setenv "LUA_CPATH"
(string-join (map lua-cpath-spec lua-inputs) ";"))
- #t))))))
+ #t)))
+ (add-after 'unpack 'prevent-embedding-gcc-store-path
+ (lambda _
+ ;; nvim remembers its build options, including the compiler with
+ ;; its complete path. This adds gcc to the closure of nvim, which
+ ;; doubles its size. We remove the refirence here.
+ (substitute* "cmake/GetCompileFlags.cmake"
+ (("\\$\\{CMAKE_C_COMPILER\\}") "/gnu/store/.../bin/gcc"))
+ #t)))))
(inputs
`(("libuv" ,libuv)
("msgpack" ,msgpack)
("unibilium" ,unibilium)
("jemalloc" ,jemalloc)
("libiconv" ,libiconv)
- ("lua" ,lua-5.2)
- ("lua-lpeg" ,lua5.2-lpeg)
- ("lua-bitop" ,lua5.2-bitop)
- ("lua-libmpack" ,lua5.2-libmpack)))
+ ("lua" ,lua-5.1)
+ ("lua-luv" ,lua5.1-luv)
+ ("lua-lpeg" ,lua5.1-lpeg)
+ ("lua-bitop" ,lua5.1-bitop)
+ ("lua-libmpack" ,lua5.1-libmpack)))
(native-inputs
`(("pkg-config" ,pkg-config)
("gettext" ,gettext-minimal)
("gperf" ,gperf)))
- (home-page "http://neovim.io")
+ (home-page "https://neovim.io")
(synopsis "Fork of vim focused on extensibility and agility")
(description "Neovim is a project that seeks to aggressively
refactor Vim in order to:
(define-public vifm
(package
(name "vifm")
- (version "0.9.1")
+ (version "0.10.1")
(source
(origin
(method url-fetch)
"vifm-" version ".tar.bz2")))
(sha256
(base32
- "1cz7vjjmghgdxd1lvsdwv85gvx4kz8idq14qijpwkpfrf2va9f98"))))
+ "0fyhxh7ndjn8fyjhj14ymkr3pjcs3k1xbs43g7xvvq85vdb6y04r"))))
(build-system gnu-build-system)
(arguments
- '(#:configure-flags '("--disable-build-timestamp")
- #:phases
- (modify-phases %standard-phases
- (add-after 'patch-source-shebangs 'patch-test-shebangs
- (lambda _
- (substitute* (cons* "src/background.c"
- "src/cfg/config.c"
- (find-files "tests" "\\.c$"))
- (("/bin/sh") (which "sh"))
- (("/bin/bash") (which "bash")))
- ;; This test segfaults
- (substitute* "tests/Makefile"
- (("misc") ""))
- #t))
- (add-after 'install 'install-vim-plugin-files
- (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")))
- (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")))
- #t)))))
+ '(#:configure-flags '("--disable-build-timestamp")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'patch-source-shebangs 'patch-test-shebangs
+ (lambda _
+ (substitute* (cons* "src/background.c"
+ "src/cfg/config.c"
+ (find-files "tests" "\\.c$"))
+ (("/bin/sh") (which "sh"))
+ (("/bin/bash") (which "bash")))
+ ;; This test segfaults
+ (substitute* "tests/Makefile"
+ (("misc") ""))
+ #t))
+ (add-after 'install 'install-vim-plugin-files
+ (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")))
+ (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")))
+ #t)))))
(native-inputs
`(("groff" ,groff))) ; for the documentation
(inputs
@end enumerate
With the package comes a plugin to use vifm as a vim file selector.")
(license license:gpl2+)))
+
+(define-public python-pynvim
+ (package
+ (name "python-pynvim")
+ (version "0.3.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pynvim" version))
+ (sha256
+ (base32
+ "01dybk4vs452pljn1q3il5z2sd313ki0lgiglc0xmjc6wp290r6g"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-greenlet" ,python-greenlet)
+ ("python-msgpack" ,python-msgpack)))
+ (arguments
+ `(#:tests? #f))
+ (home-page "https://github.com/neovim/pynvim")
+ (synopsis "Python client and plugin host for neovim")
+ (description "Pynvim implements support for python plugins in neovim. It
+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))