289 lines
		
	
	
	
		
			10 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
			
		
		
	
	
			289 lines
		
	
	
	
		
			10 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
| ;;; GNU Guix --- Functional package management for GNU
 | |
| ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 | |
| ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | |
| ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
 | |
| ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 | |
| ;;;
 | |
| ;;; 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 <http://www.gnu.org/licenses/>.
 | |
| 
 | |
| (define-module (gnu packages vim)
 | |
|   #:use-module ((guix licenses) #:prefix license:)
 | |
|   #:use-module (guix packages)
 | |
|   #:use-module (guix download)
 | |
|   #:use-module (guix build-system cmake)
 | |
|   #:use-module (guix build-system gnu)
 | |
|   #: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 base)
 | |
|   #:use-module (gnu packages fontutils)
 | |
|   #:use-module (gnu packages gawk)
 | |
|   #:use-module (gnu packages gettext)
 | |
|   #:use-module (gnu packages glib)
 | |
|   #:use-module (gnu packages gperf)
 | |
|   #:use-module (gnu packages groff)
 | |
|   #:use-module (gnu packages gtk)
 | |
|   #:use-module (gnu packages image)
 | |
|   #:use-module (gnu packages jemalloc)
 | |
|   #:use-module (gnu packages libevent)
 | |
|   #:use-module (gnu packages linux)
 | |
|   #:use-module (gnu packages lua)
 | |
|   #:use-module (gnu packages ncurses)
 | |
|   #:use-module (gnu packages perl)
 | |
|   #:use-module (gnu packages pkg-config)
 | |
|   #:use-module (gnu packages python)
 | |
|   #:use-module (gnu packages ruby)
 | |
|   #:use-module (gnu packages serialization)
 | |
|   #:use-module (gnu packages shells)
 | |
|   #:use-module (gnu packages tcl)
 | |
|   #:use-module (gnu packages terminals)
 | |
|   #:use-module (gnu packages xdisorg)
 | |
|   #:use-module (gnu packages xorg))
 | |
| 
 | |
| (define-public vim
 | |
|   (package
 | |
|     (name "vim")
 | |
|     (version "8.0.0300")
 | |
|     (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"))
 | |
|              (sha256
 | |
|               (base32
 | |
|                "04samk2bakyixbxyc3p0g6ypls45105sikibg0wc6lmak9bqjs85"))))
 | |
|     (build-system gnu-build-system)
 | |
|     (arguments
 | |
|      `(#:test-target "test"
 | |
|        #:parallel-tests? #f
 | |
|        #:phases
 | |
|        (modify-phases %standard-phases
 | |
|          (add-after 'unpack 'make-bit-reproducable
 | |
|            (lambda _
 | |
|              (substitute* "src/version.c"
 | |
|                ((" VIM_VERSION_LONG_DATE") " VIM_VERSION_LONG")
 | |
|                ((" __DATE__") "")
 | |
|                ((" __TIME__") ""))
 | |
|              #t))
 | |
|          (add-after 'configure 'patch-config-files
 | |
|            (lambda _
 | |
|              (substitute* "runtime/tools/mve.awk"
 | |
|                (("/usr/bin/nawk") (which "gawk")))
 | |
|              (substitute* '("src/testdir/Makefile"
 | |
|                             "src/testdir/test_normal.vim")
 | |
|                (("/bin/sh") (which "sh")))
 | |
|              #t)))))
 | |
|     (inputs
 | |
|      `(("gawk" ,gawk)
 | |
|        ("inetutils" ,inetutils)
 | |
|        ("ncurses" ,ncurses)
 | |
|        ("perl" ,perl)
 | |
|        ("tcsh" ,tcsh))) ; For runtime/tools/vim32
 | |
|     (home-page "http://www.vim.org/")
 | |
|     (synopsis "Text editor based on vi")
 | |
|     (description
 | |
|      "Vim is a highly configurable text editor built to enable efficient text
 | |
| editing.  It is an improved version of the vi editor distributed with most UNIX
 | |
| systems.
 | |
| 
 | |
| Vim is often called a \"programmer's editor,\" and so useful for programming
 | |
| that many consider it an entire IDE.  It's not just for programmers, though.
 | |
| Vim is perfect for all kinds of text editing, from composing email to editing
 | |
| configuration files.")
 | |
|     (license license:vim)))
 | |
| 
 | |
| (define-public vim-full
 | |
|   (package
 | |
|     (inherit vim)
 | |
|     (name "vim-full")
 | |
|     (arguments
 | |
|      `(#:configure-flags
 | |
|        (list (string-append "--with-lua-prefix="
 | |
|                             (assoc-ref %build-inputs "lua"))
 | |
|              "--with-features=huge"
 | |
|              "--enable-python3interp=yes"
 | |
|              "--enable-perlinterp=yes"
 | |
|              "--enable-rubyinterp=yes"
 | |
|              "--enable-tclinterp=yes"
 | |
|              "--enable-luainterp=yes"
 | |
|              "--enable-cscope"
 | |
|              "--enable-sniff"
 | |
|              "--enable-multibyte"
 | |
|              "--enable-xim"
 | |
|              "--disable-selinux"
 | |
|              "--enable-gui")
 | |
|        ,@(package-arguments vim)))
 | |
|     (native-inputs
 | |
|      `(("pkg-config" ,pkg-config)))
 | |
|     (inputs
 | |
|      `(("acl" ,acl)
 | |
|        ("atk" ,atk)
 | |
|        ("attr" ,attr)
 | |
|        ("cairo" ,cairo)
 | |
|        ("fontconfig" ,fontconfig)
 | |
|        ("freetype" ,freetype)
 | |
|        ("gdk-pixbuf" ,gdk-pixbuf)
 | |
|        ("gettext" ,gettext-minimal)
 | |
|        ("glib" ,glib)
 | |
|        ("gpm" ,gpm)
 | |
|        ("gtk" ,gtk+-2)
 | |
|        ("harfbuzz" ,harfbuzz)
 | |
|        ("libice" ,libice)
 | |
|        ("libpng" ,libpng)
 | |
|        ("libsm" ,libsm)
 | |
|        ("libx11" ,libx11)
 | |
|        ("libxdmcp" ,libxdmcp)
 | |
|        ("libxt" ,libxt)
 | |
|        ("libxpm" ,libxpm)
 | |
|        ("lua" ,lua)
 | |
|        ("pango" ,pango)
 | |
|        ("pixman" ,pixman)
 | |
|        ("python-3" ,python)
 | |
|        ("ruby" ,ruby)
 | |
|        ("tcl" ,tcl)
 | |
|        ,@(package-inputs vim)))))
 | |
| 
 | |
| (define-public neovim
 | |
|   (package
 | |
|     (name "neovim")
 | |
|     (version "0.1.7")
 | |
|     (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"))
 | |
|        (sha256
 | |
|         (base32
 | |
|          "0zjbpc4rhv5bcr353xqnbrc36zjvn7qvh8xf6s7n1bdi3788by6q"))))
 | |
|     (build-system cmake-build-system)
 | |
|     (arguments
 | |
|      `(#:modules ((srfi srfi-26)
 | |
|                   (guix build cmake-build-system)
 | |
|                   (guix build utils))
 | |
|        #:phases
 | |
|        (modify-phases %standard-phases
 | |
|          (add-after 'unpack 'set-lua-paths
 | |
|            (lambda* (#:key inputs #:allow-other-keys)
 | |
|              (let* ((lua-version "5.2")
 | |
|                     (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 %build-inputs <>)
 | |
|                                      '("lua"
 | |
|                                        "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))))))
 | |
|     (inputs
 | |
|      `(("libuv" ,libuv)
 | |
|        ("msgpack" ,msgpack)
 | |
|        ("libtermkey" ,libtermkey)
 | |
|        ("libvterm" ,libvterm)
 | |
|        ("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)))
 | |
|     (native-inputs
 | |
|      `(("pkg-config" ,pkg-config)
 | |
|        ("gettext" ,gettext-minimal)
 | |
|        ("gperf" ,gperf)))
 | |
|     (home-page "http://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:
 | |
| 
 | |
| @itemize
 | |
| @item Simplify maintenance and encourage contributions
 | |
| @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")
 | |
|     ;; 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))))
 | |
| 
 | |
| (define-public vifm
 | |
|   (package
 | |
|     (name "vifm")
 | |
|     (version "0.8.2")
 | |
|     (source
 | |
|       (origin
 | |
|         (method url-fetch)
 | |
|         (uri (string-append "mirror://sourceforge/vifm/vifm/vifm-"
 | |
|                             version ".tar.bz2"))
 | |
|         (sha256
 | |
|          (base32
 | |
|           "07r15kq7kjl3a41sd11ncpsii866xxps4f90zh3lv8jqcrv6silb"))))
 | |
|     (build-system gnu-build-system)
 | |
|     (arguments
 | |
|     '(#:phases
 | |
|       (modify-phases %standard-phases
 | |
|         (add-after 'patch-source-shebangs 'patch-test-shebangs
 | |
|           (lambda _
 | |
|             (substitute* (find-files "tests" "\\.c$")
 | |
|               (("/bin/sh") (which "sh")))
 | |
|             #t)))))
 | |
|     (native-inputs
 | |
|      `(("groff" ,groff) ; for the documentation
 | |
|        ("perl" ,perl)))
 | |
|     (inputs
 | |
|      `(("libx11" ,libx11)
 | |
|        ("ncurses" ,ncurses)))
 | |
|     (home-page "http://vifm.info/")
 | |
|     (synopsis "Flexible vi-like file manager using ncurses")
 | |
|     (description "Vifm is a file manager providing a @command{vi}-like usage
 | |
| experience.  It has similar keybindings and modes (e.g. normal, command line,
 | |
| visual).  The interface uses ncurses, thus vifm can be used in text-only
 | |
| environments.  It supports a wide range of features, some of which are known
 | |
| from the @command{vi}-editor:
 | |
| @enumerate
 | |
| @item utf8 support
 | |
| @item user mappings (almost like in @code{vi})
 | |
| @item ranges in command
 | |
| @item line commands
 | |
| @item user defined commands (with support for ranges)
 | |
| @item registers
 | |
| @item operation undoing/redoing
 | |
| @item fuse file systems support
 | |
| @item trash
 | |
| @item multiple files renaming
 | |
| @item support of filename modifiers
 | |
| @item colorschemes support
 | |
| @item file name color according to file type
 | |
| @item path specific colorscheme customization
 | |
| @item bookmarks
 | |
| @item operation backgrounding
 | |
| @item customizable file viewers
 | |
| @item handy @code{less}-like preview mode
 | |
| @item filtering out and searching for files using regular expressions
 | |
| @item one or two panes view
 | |
| @end enumerate
 | |
| With the package comes a plugin to use vifm as a vim file selector.")
 | |
|     (license license:gpl2+)))
 |