X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/d711b72f14adff571c6fa2321617ac6e6f10f757..f928abac369f699f425ddee925d0d0c2dc0a635d:/gnu/packages/vim.scm diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index 59ae6ff04a..ed24c39be2 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Cyril Roelandt -;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner +;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner ;;; Copyright © 2016, 2017 Nikita ;;; Copyright © 2017 Ricardo Wurmus ;;; Copyright © 2017 Marius Bakke @@ -12,6 +12,7 @@ ;;; Copyright © 2021 Simon Tournier ;;; Copyright © 2021 Tissevert ;;; Copyright © 2021 Foo Chuan Wei +;;; Copyright © 2022 Luis Henrique Gomes Higino ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,6 +32,7 @@ (define-module (gnu packages vim) #: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) @@ -75,7 +77,7 @@ (define-public vim (package (name "vim") - (version "8.2.3487") + (version "9.0.0719") (source (origin (method git-fetch) (uri (git-reference @@ -84,55 +86,49 @@ (file-name (git-file-name name version)) (sha256 (base32 - "1s09jvr1vv9zjk352vbfidfy5fidbf83kz2vk0kk6zv24j1yck24")))) + "1fmy2yf83w9429dp3hyx2l24mffjqmaxqcabdyyjcvmgx7zp3bii")))) (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-absolute-paths (lambda _ - (substitute* "runtime/tools/mve.awk" - (("/usr/bin/nawk") (which "gawk"))) (substitute* '("src/testdir/Makefile" + "src/testdir/test_filetype.vim" "src/testdir/test_normal.vim" "src/testdir/test_popupwin.vim" + "src/testdir/test_prompt_buffer.vim" "src/testdir/test_shell.vim" - "src/testdir/test_system.vim" + "src/testdir/test_suspend.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)) + (("/bin/kill") (which "kill"))))) (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")) + (search-input-directory inputs "share/zoneinfo")) ;; Make sure the TERM environment variable is set for the tests - (setenv "TERM" "xterm") - #t)) + (setenv "TERM" "xterm"))) (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) - ;; it. This is not true in the build container, where both PID 1 - ;; and the test suite are run as the same user. Skip the test. - ;; An alternative fix would be to patch the PID used to a random - ;; 32-bit value and hope it never shows up in the test environment. - (substitute* "src/testdir/test_swap.vim" - (("if !IsRoot\\(\\)") "if 0")) + ;; This test failure is shared between BSD and Guix. + (with-fluids ((%default-port-encoding #f)) + (substitute* "src/testdir/test_writefile.vim" + (("!has\\('bsd'\\)") "0"))) ;; 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_messages.vim" + ((".*Test_echo_verbose_system.*" line) + (string-append line "return\n"))) (substitute* "src/testdir/test_terminal.vim" ((".*Test_open_term_from_cmd.*" line) (string-append line "return\n")) @@ -142,8 +138,7 @@ (string-append line "return\n"))) (substitute* "src/testdir/test_popupwin.vim" ((".*Test_popup_drag_termwin.*" line) - (string-append line "return\n"))) - #t)) + (string-append line "return\n"))))) (add-before 'install 'fix-installman.sh (lambda _ (substitute* "src/installman.sh" @@ -154,13 +149,9 @@ (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)))))) + (string-append vimdir "/vimrc")))))))) (inputs - `(("gawk" ,gawk) - ("ncurses" ,ncurses) - ("perl" ,perl) - ("tcsh" ,tcsh))) ; For runtime/tools/vim32 + (list gawk ncurses perl tcsh)) ; For runtime/tools/vim32 (native-inputs `(("libtool" ,libtool) ("guix.vim" ,(search-auxiliary-file "guix.vim")) @@ -186,20 +177,19 @@ configuration files.") (package (inherit vim) (name "xxd") (arguments - `(#:make-flags (list ,(string-append "CC=" (cc-for-target))) + (list + #:make-flags #~(list (string-append "CC=" #$(cc-for-target))) #:tests? #f ; there are none #:phases - (modify-phases %standard-phases - (delete 'configure) - (add-after 'unpack 'chdir - (lambda _ - (chdir "src/xxd") - #t)) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) - (install-file "xxd" bin) - #t)))))) + #~(modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'chdir + (lambda _ + (chdir "src/xxd"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) + (install-file "xxd" bin))))))) (inputs `()) (native-inputs `()) (synopsis "Hexdump utility from vim") @@ -208,9 +198,6 @@ with the editor vim."))) (define-public vim-full (package - ;; This package should share its source with Vim, but it doesn't - ;; build reliably, and we want to keep Vim up to date due to the - ;; frequency of important bug fixes. (inherit vim) (name "vim-full") (arguments @@ -236,7 +223,7 @@ with the editor vim."))) ((#:make-flags flags) `(append (list "LDFLAGS=-lexpat") - (delete "CFLAGS=-D_REENTRANT" ,flags))) + ,flags)) ((#:phases phases) `(modify-phases ,phases (add-before 'check 'start-xserver @@ -248,9 +235,8 @@ with the editor vim."))) (zero? (system (string-append xorg-server "/bin/Xvfb " display " &"))))))))))) (native-inputs - `(("pkg-config" ,pkg-config) - ("xorg-server" ,xorg-server-for-tests) - ,@(package-native-inputs vim))) + (modify-inputs (package-native-inputs vim) + (prepend pkg-config xorg-server-for-tests))) (inputs `(("acl" ,acl) ("atk" ,atk) @@ -477,7 +463,7 @@ trouble using them, because you do not have to remember each snippet name.") (define-public vim-fugitive (package (name "vim-fugitive") - (version "3.6") + (version "3.7") (source (origin (method git-fetch) @@ -486,7 +472,7 @@ trouble using them, because you do not have to remember each snippet name.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "17c3wzqkbzbf0nmlxpgk90yyv3d09209fqxqysand8bzb1cbfwzn")))) + (base32 "138290g2aph1jjhaza6biky5qi4ka6435s01bwxivllgb53g3irc")))) (build-system copy-build-system) (arguments '(#:install-plan @@ -655,6 +641,34 @@ various text editors which allow this file format to be read and used by those editors.") (license license:bsd-2))) +(define-public neovim-packer + (let ((commit "3a9f9801f683946b9f1047d8f4bf9946c29e927d") + (revision "0")) + (package + (name "neovim-packer") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wbthomason/packer.nvim") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1xn08z3a21mgfvp5i1nv57jnldwxwnl5nkryiff3zc99b1mizigp")))) + (build-system copy-build-system) + (arguments + (list #:install-plan + #~'(("lua" "share/nvim/site/pack/guix/start/packer.nvim/") + ("doc" "share/nvim/site/pack/guix/start/packer.nvim/")))) + (home-page "https://github.com/wbthomason/packer.nvim") + (synopsis "Plugin manager for Neovim") + (description + "This package provides a plugin manager for Neovim, inspired by Emacs's +@code{use-package}. It's written in Lua, supports Luarocks dependencies, and +is based on Vim's builtin plugin support.") + (license license:expat)))) + (define-public neovim-syntastic (package (inherit vim-syntastic) @@ -675,74 +689,90 @@ are detected, the user is notified."))) (define-public neovim (package (name "neovim") - (version "0.4.4") - (source - (origin - (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 "11zyj6jvkwas3n6w1ckj3pk6jf81z1g7ngg4smmwm7c27y2a6f2m")))) + (version "0.8.0") + (source (origin + (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 + "0hkd49wkxfi6k1xa92hdd4b9z356r32hbpr78z1cigcln1wr0z7j")))) (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.1") - (lua-cpath-spec - (lambda (prefix) - (let ((path (string-append prefix "/lib/lua/" lua-version))) - (string-append path "/?.so;" path "/?/?.so")))) - (lua-path-spec - (lambda (prefix) - (let ((path (string-append prefix "/share/lua/" lua-version))) - (string-append path "/?.lua;" path "/?/?.lua")))) - (lua-inputs (map (cute assoc-ref inputs <>) - '("lua" - "lua-luv" - "lua-lpeg" - "lua-bitop" - "lua-libmpack")))) - (setenv "LUA_PATH" - (string-join (map lua-path-spec lua-inputs) ";")) - (setenv "LUA_CPATH" - (string-join (map lua-cpath-spec lua-inputs) ";")) - #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) - ("libtermkey" ,libtermkey) - ("libvterm" ,libvterm) - ("unibilium" ,unibilium) - ("jemalloc" ,jemalloc) - ("libiconv" ,libiconv) - ("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))) + (list #:modules + '((srfi srfi-26) (guix build cmake-build-system) + (guix build utils)) + #:configure-flags + #~(list #$@(if (member (if (%current-target-system) + (gnu-triplet->nix-system (%current-target-system)) + (%current-system)) + (package-supported-systems luajit)) + '() + '("-DPREFER_LUA:BOOL=YES"))) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'set-lua-paths + (lambda* _ + (let* ((lua-version "5.1") + (lua-cpath-spec (lambda (prefix) + (let ((path (string-append + prefix + "/lib/lua/" + lua-version))) + (string-append + path + "/?.so;" + path + "/?/?.so")))) + (lua-path-spec (lambda (prefix) + (let ((path (string-append prefix + "/share/lua/" + lua-version))) + (string-append path "/?.lua;" + path "/?/?.lua")))) + (lua-inputs (list (or #$(this-package-input "lua") + #$(this-package-input "luajit")) + #$lua5.1-luv + #$lua5.1-lpeg + #$lua5.1-bitop + #$lua5.1-libmpack))) + (setenv "LUA_PATH" + (string-join (map lua-path-spec lua-inputs) ";")) + (setenv "LUA_CPATH" + (string-join (map lua-cpath-spec lua-inputs) ";")) + #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 (list libuv-for-luv + msgpack + libtermkey + libvterm + unibilium + jemalloc + (if (member (if (%current-target-system) + (gnu-triplet->nix-system (%current-target-system)) + (%current-system)) + (package-supported-systems luajit)) + luajit + lua-5.1) + lua5.1-luv + lua5.1-lpeg + lua5.1-bitop + lua5.1-libmpack + tree-sitter)) + (native-inputs (list pkg-config gettext-minimal gperf)) (home-page "https://neovim.io") (synopsis "Fork of vim focused on extensibility and agility") - (description "Neovim is a project that seeks to aggressively + (description + "Neovim is a project that seeks to aggressively refactor Vim in order to: @itemize @@ -750,7 +780,8 @@ refactor Vim in order to: @item Split the work between multiple developers @item Enable advanced external UIs without modifications to the core @item Improve extensibility with a new plugin architecture -@end itemize\n") +@end itemize +") ;; Neovim is licensed under the terms of the Apache 2.0 license, ;; except for parts that were contributed under the Vim license. (license (list license:asl2.0 license:vim)))) @@ -775,8 +806,7 @@ refactor Vim in order to: (modify-phases %standard-phases (add-after 'configure 'reference-nvim (lambda* (#:key inputs #:allow-other-keys) - (let ((nvim (string-append (assoc-ref inputs "neovim") - "/bin/nvim"))) + (let ((nvim (search-input-file inputs "/bin/nvim"))) ;; This substitution should change one line, and replaces the default ;; value in the struct of options with an absolute store reference. (substitute* "../source/src/main.c" @@ -785,11 +815,9 @@ refactor Vim in order to: (add-before 'build 'set-home (lambda _ (setenv "HOME" "/tmp")))))) (native-inputs - `(("pkg-config" ,pkg-config))) + (list pkg-config)) (inputs - `(("efl" ,efl) - ("msgpack" ,msgpack) - ("neovim" ,neovim))) + (list efl msgpack neovim)) (home-page "https://github.com/jeanguyomarch/eovim/") (synopsis "EFL GUI for Neovim") (description "Graphical Neovim interface based on the @acronym{EFL, Enlightenment @@ -800,7 +828,7 @@ and support for fonts with ligatures.") (define-public vifm (package (name "vifm") - (version "0.12") + (version "0.12.1") (source (origin (method url-fetch) @@ -811,7 +839,7 @@ and support for fonts with ligatures.") "vifm-" version ".tar.bz2"))) (sha256 (base32 - "1h5j4y704nciyzg3aaav8sl3r5h9mpwq8f28cj65nnxk6a7n3a9k")))) + "122ncp319xisxjxcy33bshjib6905bb0aaz0xjdfkkycplz83qlg")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--disable-build-timestamp") @@ -826,8 +854,7 @@ and support for fonts with ligatures.") (("/bin/bash") (which "bash"))) ;; This test segfaults (substitute* "tests/Makefile" - (("misc") "")) - #t)) + (("misc") "")))) (add-after 'install 'install-vim-plugin-files (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -838,14 +865,11 @@ and support for fonts with ligatures.") (copy-recursively (string-append vifm "/vim") vimfiles) (delete-file-recursively (string-append vifm "/colors")) - (delete-file-recursively (string-append vifm "/vim"))) - #t))))) + (delete-file-recursively (string-append vifm "/vim")))))))) (native-inputs - `(("groff" ,groff))) ; for the documentation + (list groff)) ; for the documentation (inputs - `(("libx11" ,libx11) - ("ncurses" ,ncurses) - ("perl" ,perl))) + (list libx11 ncurses perl)) (home-page "https://vifm.info/") (synopsis "Flexible vi-like file manager using ncurses") (description "Vifm is a file manager providing a @command{vi}-like usage @@ -890,8 +914,7 @@ With the package comes a plugin to use vifm as a vim file selector.") "13qgwkqbx012j5spis1aw8rb120rw0zphgjy1j58irax8r6j1ikb")))) (build-system python-build-system) (propagated-inputs - `(("python-greenlet" ,python-greenlet) - ("python-msgpack" ,python-msgpack))) + (list python-greenlet python-msgpack)) (arguments `(#:tests? #f)) (home-page "https://github.com/neovim/pynvim") @@ -904,16 +927,16 @@ through its msgpack-rpc API.") (define-public vim-guix-vim (package (name "vim-guix-vim") - (version "0.3.0") + (version "0.3.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://gitlab.com/Efraim/guix.vim.git/") + (url "https://gitlab.com/Efraim/guix.vim") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "0bk2mnvbv1rfr0zzx4m8jjdw98wbbmdffx1h9svrjpg25lcvqv1b")))) + "080ni4z23qdr8rkrswjqfqfrrcnpn7qdgrg14glwji46wzvwxqyx")))) (build-system copy-build-system) (arguments '(#:install-plan @@ -1126,6 +1149,36 @@ quotes, XML tags, and more. The plugin provides mappings to easily delete, change and add such surroundings in pairs.") (license license:vim))) +(define-public vim-gnupg + (package + (name "vim-gnupg") + (version "2.7.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/jamessan/vim-gnupg/releases/" + "download/v" version + "/vim-gnupg-v" version ".tar.gz")) + (sha256 + (base32 "02w8lgyyh7wgxysvmmcf9ja5c06vrbyh3alzvv97x8cfhrp0skn7")))) + (build-system copy-build-system) + (arguments + '(#:install-plan + '(("autoload" "share/vim/vimfiles/") + ("doc" "share/vim/vimfiles/") + ("plugin" "share/vim/vimfiles/")))) + (home-page "https://www.vim.org/scripts/script.php?script_id=3645") + (synopsis "Vim plugin for transparent editing of gpg encrypted files") + (description + "This script implements transparent editing of gpg encrypted files. The +filename must have a @code{.gpg}, @code{.pgp} or @code{.asc} suffix. When +opening such a file the content is decrypted, and the content will be encrypted +to all recipients before it is written. This script turns off viminfo, +swapfile, and undofile when editing encrypted files to increase security.") + (properties + '((release-monitoring-url . "https://github.com/jamessan/vim-gnupg/releases"))) + (license license:gpl2+))) + (define-public vim-ctrlp (package (name "vim-ctrlp") @@ -1277,7 +1330,7 @@ additions: ("syntax" "share/vim/vimfiles/")) #:phases (modify-phases %standard-phases - (add-after 'unpack 'link-univerisal-ctags + (add-after 'unpack 'link-universal-ctags (lambda* (#:key inputs #:allow-other-keys) (let ((ctags (assoc-ref inputs "universal-ctags"))) (substitute* "autoload/tagbar.vim" @@ -1285,7 +1338,7 @@ additions: (string-append all "\n" leader ctags "/bin/ctags']"))))))))) (inputs - `(("universal-ctags" ,universal-ctags))) + (list universal-ctags)) (home-page "https://github.com/preservim/tagbar") (synopsis "Vim plugin that displays tags in a window, ordered by scope") (description @@ -1296,31 +1349,60 @@ by their scope. This means that for example methods in C++ are displayed under the class they are defined in.") (license license:vim))) +(define-public vim-nerdtree + (package + (name "vim-nerdtree") + (version "6.10.16") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/preservim/nerdtree") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1si8qla86ng8cffbmfrk9gss0i3912yw0f1ph4bsiq0kk837lccp")))) + (build-system copy-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/")))) + (home-page "https://github.com/preservim/nerdtree") + (synopsis "Tree explorer plugin for Vim") + (description + "The NERDTree is a file system explorer for the Vim editor. Using this +plugin, users can visually browse complex directory hierarchies, quickly open +files for reading or editing, and perform basic file system operations.") + (license license:wtfpl2))) + (define-public vim-nerdcommenter - (let ((commit "a65465d321f2f8a74b2ffa540b9b87563f7e12e8") - (revision "1")) - (package - (name "vim-nerdcommenter") - (version (git-version "2.5.2" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/preservim/nerdcommenter") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "00ir65iv8jfbgzjmj7332fmydh0qhabbhx8zbvd3j6pgfxqpaafw")))) - (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/preservim/nerdcommenter") - (synopsis "Vim plugin for easy commenting of code") - (description - "NERD commenter is a Vim plugin that provides many different commenting + (package + (name "vim-nerdcommenter") + (version "2.6.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/preservim/nerdcommenter") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ka2rqn7rby55aps3iblh1dcqxm7m7qx72mpkz6y2aaj8mkj0zyd")))) + (build-system copy-build-system) + (arguments + (list + #:install-plan + #~`(("autoload" "share/vim/vimfiles/") + ("doc" "share/vim/vimfiles/") + ("plugin" "share/vim/vimfiles/")))) + (home-page "https://github.com/preservim/nerdcommenter") + (synopsis "Vim plugin for easy commenting of code") + (description + "NERD commenter is a Vim plugin that provides many different commenting operations and styles which are invoked via key mappings and a menu. These operations are available for most filetypes.") - (license license:cc0)))) + (license license:cc0)))