gnu: neovim: Update to 0.6.1.
[jackhill/guix/guix.git] / gnu / packages / vim.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
3 ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
4 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
5 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
6 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
7 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
8 ;;; Copyright © 2019 HiPhish <hiphish@posteo.de>
9 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
10 ;;; Copyright © 2019, 2020 Jakub Kądziołka <kuba@kadziolka.net>
11 ;;; Copyright © 2020, 2021 Jack Hill <jackhill@jackhill.us>
12 ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
13 ;;; Copyright © 2021 Tissevert <tissevert+guix@marvid.fr>
14 ;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
15 ;;; Copyright © 2022 Luis Henrique Gomes Higino <luishenriquegh2701@gmail.com>
16 ;;;
17 ;;; This file is part of GNU Guix.
18 ;;;
19 ;;; GNU Guix is free software; you can redistribute it and/or modify it
20 ;;; under the terms of the GNU General Public License as published by
21 ;;; the Free Software Foundation; either version 3 of the License, or (at
22 ;;; your option) any later version.
23 ;;;
24 ;;; GNU Guix is distributed in the hope that it will be useful, but
25 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
26 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 ;;; GNU General Public License for more details.
28 ;;;
29 ;;; You should have received a copy of the GNU General Public License
30 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
31
32 (define-module (gnu packages vim)
33 #:use-module ((guix licenses) #:prefix license:)
34 #:use-module (guix packages)
35 #:use-module (guix gexp)
36 #:use-module (guix utils)
37 #:use-module (guix download)
38 #:use-module (guix git-download)
39 #:use-module (guix build-system cmake)
40 #:use-module (guix build-system copy)
41 #:use-module (guix build-system gnu)
42 #:use-module (guix build-system python)
43 #:use-module (gnu packages)
44 #:use-module (gnu packages acl)
45 #:use-module (gnu packages admin) ; For GNU hostname
46 #:use-module (gnu packages attr)
47 #:use-module (gnu packages autotools)
48 #:use-module (gnu packages base)
49 #:use-module (gnu packages code)
50 #:use-module (gnu packages enlightenment)
51 #:use-module (gnu packages fontutils)
52 #:use-module (gnu packages gawk)
53 #:use-module (gnu packages gettext)
54 #:use-module (gnu packages glib)
55 #:use-module (gnu packages gperf)
56 #:use-module (gnu packages groff)
57 #:use-module (gnu packages gtk)
58 #:use-module (gnu packages image)
59 #:use-module (gnu packages jemalloc)
60 #:use-module (gnu packages libevent)
61 #:use-module (gnu packages linux)
62 #:use-module (gnu packages lua)
63 #:use-module (gnu packages ncurses)
64 #:use-module (gnu packages perl)
65 #:use-module (gnu packages pkg-config)
66 #:use-module (gnu packages python)
67 #:use-module (gnu packages python-xyz)
68 #:use-module (gnu packages ruby)
69 #:use-module (gnu packages serialization)
70 #:use-module (gnu packages shells)
71 #:use-module (gnu packages tcl)
72 #:use-module (gnu packages text-editors)
73 #:use-module (gnu packages terminals)
74 #:use-module (gnu packages xdisorg)
75 #:use-module (gnu packages xorg))
76
77 (define-public vim
78 (package
79 (name "vim")
80 (version "8.2.4564")
81 (source (origin
82 (method git-fetch)
83 (uri (git-reference
84 (url "https://github.com/vim/vim")
85 (commit (string-append "v" version))))
86 (file-name (git-file-name name version))
87 (sha256
88 (base32
89 "1ggvmvd6xsj9xvknjcvpj52na2km2wxvxfj8l29mqp03g4wwyzrr"))))
90 (build-system gnu-build-system)
91 (arguments
92 `(#:test-target "test"
93 #:parallel-tests? #f
94 #:phases
95 (modify-phases %standard-phases
96 (add-after 'configure 'patch-absolute-paths
97 (lambda _
98 (substitute* "runtime/tools/mve.awk"
99 (("/usr/bin/nawk") (which "gawk")))
100 (substitute* '("src/testdir/Makefile"
101 "src/testdir/test_filetype.vim"
102 "src/testdir/test_normal.vim"
103 "src/testdir/test_popupwin.vim"
104 "src/testdir/test_shell.vim"
105 "src/testdir/test_suspend.vim"
106 "src/testdir/test_terminal.vim"
107 "src/testdir/test_terminal2.vim")
108 (("/bin/sh") (which "sh")))
109 (substitute* "src/testdir/test_autocmd.vim"
110 (("/bin/kill") (which "kill")))))
111 (add-before 'check 'set-environment-variables
112 (lambda* (#:key inputs #:allow-other-keys)
113 ;; One of the tests tests timezone-dependent functions.
114 (setenv "TZDIR"
115 (search-input-directory inputs "share/zoneinfo"))
116
117 ;; Make sure the TERM environment variable is set for the tests
118 (setenv "TERM" "xterm")))
119 (add-before 'check 'skip-or-fix-failing-tests
120 (lambda _
121 ;; This test assumes that PID 1 is run as root and that the user
122 ;; running the test suite does not have permission to kill(1, 0)
123 ;; it. This is not true in the build container, where both PID 1
124 ;; and the test suite are run as the same user. Skip the test.
125 ;; An alternative fix would be to patch the PID used to a random
126 ;; 32-bit value and hope it never shows up in the test environment.
127 (substitute* "src/testdir/test_swap.vim"
128 (("if !IsRoot\\(\\)") "if 0"))
129
130 ;; These tests check how the terminal looks after executing some
131 ;; actions. The path of the bash binary is shown, which results in
132 ;; a difference being detected. Patching the expected result is
133 ;; non-trivial due to the special format used, so skip the test.
134 (substitute* "src/testdir/test_terminal.vim"
135 ((".*Test_open_term_from_cmd.*" line)
136 (string-append line "return\n"))
137 ((".*Test_terminal_postponed_scrollback.*" line)
138 (string-append line "return\n"))
139 ((".*Test_combining_double_width.*" line)
140 (string-append line "return\n")))
141 (substitute* "src/testdir/test_popupwin.vim"
142 ((".*Test_popup_drag_termwin.*" line)
143 (string-append line "return\n")))))
144 (add-before 'install 'fix-installman.sh
145 (lambda _
146 (substitute* "src/installman.sh"
147 (("/bin/sh")
148 (which "sh")))))
149 (add-after 'install 'install-guix.vim
150 (lambda* (#:key inputs outputs #:allow-other-keys)
151 (let ((vimdir (string-append (assoc-ref outputs "out") "/share/vim")))
152 (mkdir-p vimdir)
153 (copy-file (assoc-ref inputs "guix.vim")
154 (string-append vimdir "/vimrc"))))))))
155 (inputs
156 (list gawk ncurses perl tcsh)) ; For runtime/tools/vim32
157 (native-inputs
158 `(("libtool" ,libtool)
159 ("guix.vim" ,(search-auxiliary-file "guix.vim"))
160
161 ;; For tests.
162 ("tzdata" ,tzdata-for-tests)))
163 (home-page "https://www.vim.org/")
164 (synopsis "Text editor based on vi")
165 ;; The description shares language with the vim-full package. When making
166 ;; changes, check if the other description also needs to be updated.
167 (description
168 "Vim is a highly configurable text editor built to enable efficient text
169 editing. It is an improved version of the vi editor distributed with most UNIX
170 systems.
171
172 Vim is often called a \"programmer's editor,\" and so useful for programming
173 that many consider it an entire IDE. It's not just for programmers, though.
174 Vim is perfect for all kinds of text editing, from composing email to editing
175 configuration files.")
176 (license license:vim)))
177
178 (define-public xxd
179 (package (inherit vim)
180 (name "xxd")
181 (arguments
182 (list
183 #:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
184 #:tests? #f ; there are none
185 #:phases
186 #~(modify-phases %standard-phases
187 (delete 'configure)
188 (add-after 'unpack 'chdir
189 (lambda _
190 (chdir "src/xxd")))
191 (replace 'install
192 (lambda* (#:key outputs #:allow-other-keys)
193 (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
194 (install-file "xxd" bin)))))))
195 (inputs `())
196 (native-inputs `())
197 (synopsis "Hexdump utility from vim")
198 (description "This package provides the Hexdump utility xxd that comes
199 with the editor vim.")))
200
201 (define-public vim-full
202 (package
203 (inherit vim)
204 (name "vim-full")
205 (arguments
206 `(#:configure-flags
207 (list (string-append "--with-lua-prefix="
208 (assoc-ref %build-inputs "lua"))
209 "--with-features=huge"
210 "--enable-python3interp=yes"
211 "--enable-perlinterp=yes"
212 "--enable-rubyinterp=yes"
213 "--enable-tclinterp=yes"
214 "--enable-luainterp=yes"
215 "--enable-cscope"
216 "--enable-sniff"
217 "--enable-multibyte"
218 "--enable-xim"
219 "--disable-selinux"
220 "--enable-gui")
221 ,@(substitute-keyword-arguments (package-arguments vim)
222 ;; This flag fixes the following error:
223 ;; .../libpython3.7m.a(pyexpat.o): undefined reference to symbol 'XML_FreeContentModel'
224 ;; .../libexpat.so.1: error adding symbols: DSO missing from command line
225 ((#:make-flags flags)
226 `(append
227 (list "LDFLAGS=-lexpat")
228 ,flags))
229 ((#:phases phases)
230 `(modify-phases ,phases
231 (add-before 'check 'start-xserver
232 (lambda* (#:key inputs #:allow-other-keys)
233 ;; Some tests require an X server, but does not start one.
234 (let ((xorg-server (assoc-ref inputs "xorg-server"))
235 (display ":1"))
236 (setenv "DISPLAY" display)
237 (zero? (system (string-append xorg-server "/bin/Xvfb "
238 display " &")))))))))))
239 (native-inputs
240 (modify-inputs (package-native-inputs vim)
241 (prepend pkg-config xorg-server-for-tests)))
242 (inputs
243 `(("acl" ,acl)
244 ("atk" ,atk)
245 ("attr" ,attr)
246 ("cairo" ,cairo)
247 ("fontconfig" ,fontconfig)
248 ("freetype" ,freetype)
249 ("gdk-pixbuf" ,gdk-pixbuf)
250 ("gettext" ,gettext-minimal)
251 ("glib" ,glib)
252 ("gpm" ,gpm)
253 ("gtk" ,gtk+-2)
254 ("harfbuzz" ,harfbuzz)
255 ("libice" ,libice)
256 ("libpng" ,libpng)
257 ("libsm" ,libsm)
258 ("libx11" ,libx11)
259 ("libxdmcp" ,libxdmcp)
260 ("libxt" ,libxt)
261 ("libxpm" ,libxpm)
262 ("lua" ,lua)
263 ("pango" ,pango)
264 ("pixman" ,pixman)
265 ("python-3" ,python)
266 ("ruby" ,ruby)
267 ("tcl" ,tcl)
268 ,@(package-inputs vim)))
269 ;; The description shares language with the vim package. When making
270 ;; changes, check if the other description also needs to be updated.
271 (description "Vim is a highly configurable text editor built to enable efficient text
272 editing. It is an improved version of the vi editor distributed with most UNIX
273 systems.
274
275 Vim is often called a \"programmer's editor,\" and so useful for programming
276 that many consider it an entire IDE. It's not just for programmers, though.
277 Vim is perfect for all kinds of text editing, from composing email to editing
278 configuration files.
279
280 This package provides a version of Vim with many optional features enabled.
281 It includes a graphical interface, @command{gvim}, and support for plugins
282 written in the Python 3, Perl, Ruby, Tcl, and Lua programming languages.")))
283
284 (define-public vim-neocomplete
285 (package
286 (name "vim-neocomplete")
287 (version "2.1")
288 (source
289 (origin
290 (method git-fetch)
291 (uri (git-reference
292 (url "https://github.com/Shougo/neocomplete.vim")
293 (commit (string-append "ver." version))))
294 (file-name (git-file-name name version))
295 (sha256
296 (base32
297 "1h6sci5mhdfg6sjsjpi8l5li02hg858zcayiwl60y9j2gqnd18lv"))))
298 (build-system copy-build-system)
299 (arguments
300 '(#:install-plan
301 '(("autoload" "share/vim/vimfiles/")
302 ("doc" "share/vim/vimfiles/")
303 ("plugin" "share/vim/vimfiles/"))))
304 (synopsis "Next generation completion framework for Vim")
305 (description
306 "@code{neocomplete}, an abbreviation of 'neo-completion with cache',
307 is a plugin for Vim.
308 It provides keyword completion system by maintaining a cache of keywords in
309 the current buffer. Neocomplete can be customized easily and has many more
310 features than Vim's built-in completion.")
311 (home-page "https://github.com/Shougo/neocomplete.vim/")
312 (license license:expat)))
313
314 ;; There are no release tarballs.
315 (define-public vim-neosnippet-snippets
316 (let ((commit "8e2b1c0cab9ed9a832b3743dbb65e9966a64331a")
317 (revision "1"))
318 (package
319 (name "vim-neosnippet-snippets")
320 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
321 (source
322 (origin
323 (method git-fetch)
324 (uri (git-reference
325 (url "https://github.com/Shougo/neosnippet-snippets")
326 (commit commit)))
327 (file-name (string-append name "-" version "-checkout"))
328 (sha256
329 (base32
330 "151wpvbj6jb9jdkbhj3b77f5sq7y328spvwfbqyj1y32rg4ifmc6"))))
331 (build-system copy-build-system)
332 (arguments
333 '(#:install-plan
334 '(("neosnippets" "share/vim/vimfiles/"))))
335 (synopsis "Snippets for neosnippet")
336 (description
337 "@code{neosnippet-snippets} provides standard snippets for the Vim plugin
338 @code{neosnippet}. Snippets are small templates for commonly used code that
339 you can fill in on the fly.")
340 (home-page "https://github.com/Shougo/neosnippet-snippets")
341 (license license:expat))))
342
343 ;; The released tarball is too old for our Vim.
344 (define-public vim-neosnippet
345 (let ((commit "1bd7e23c79b73da16eb0c9469b25c376d3594583")
346 (revision "1"))
347 (package
348 (name "vim-neosnippet")
349 (version (string-append "4.2-" revision "." (string-take commit 7)))
350 (source
351 (origin
352 (method git-fetch)
353 (uri (git-reference
354 (url "https://github.com/Shougo/neosnippet.vim/")
355 (commit commit)))
356 (file-name (string-append name "-" version "-checkout"))
357 (sha256
358 (base32
359 "0k80syscmpnj38ks1fq02ds59g0r4jlg9ll7z4qc048mgi35alw5"))))
360 (build-system copy-build-system)
361 (arguments
362 '(#:install-plan
363 '(("autoload" "share/vim/vimfiles/")
364 ("doc" "share/vim/vimfiles/")
365 ("ftdetect" "share/vim/vimfiles/")
366 ("ftplugin" "share/vim/vimfiles/")
367 ("indent" "share/vim/vimfiles/")
368 ("plugin" "share/vim/vimfiles/")
369 ("rplugin" "share/vim/vimfiles/")
370 ("syntax" "share/vim/vimfiles/"))))
371 (synopsis "Snippet support for Vim")
372 (description
373 "@code{neosnippet}, is a plugin for Vim which adds snippet support to Vim.
374 Snippets are small templates for commonly used code that you can fill in on
375 the fly. To use snippets can increase your productivity in Vim a lot.
376 The functionality of this plug-in is quite similar to plug-ins like
377 @code{snipMate.vim} or @code{snippetsEmu.vim}. But since you can choose
378 snippets with the neocomplcache / neocomplete interface, you might have less
379 trouble using them, because you do not have to remember each snippet name.")
380 (home-page "https://github.com/Shougo/neosnippet.vim/")
381 (license license:expat))))
382
383 (define-public vim-scheme
384 (let ((commit "e22fc8e199ef52f2efacd08e71c3add90d83b375")
385 (revision "3"))
386 (package
387 (name "vim-scheme")
388 (version (git-version "0.0.0" revision commit))
389 (source
390 (origin
391 (method git-fetch)
392 (uri (git-reference
393 (url "https://git.foldling.org/vim-scheme.git")
394 (commit commit)))
395 (file-name (git-file-name name version))
396 (sha256
397 (base32
398 "04h946vr4f8wxap3wzqs69y2v8n50g2zbk22jsg2kxr4c01z5cbw"))))
399 (build-system copy-build-system)
400 (arguments
401 '(#:install-plan
402 '(("ftplugin" "share/vim/vimfiles/")
403 ("indent" "share/vim/vimfiles/")
404 ("syntax" "share/vim/vimfiles/"))))
405 (synopsis "Scheme syntax for Vim")
406 (description
407 "@code{vim-scheme} provides Scheme support for Vim (R7RS and CHICKEN).")
408 (home-page "https://foldling.org/git/vim-scheme.git/")
409 (license license:unlicense))))
410
411 (define-public vim-luna
412 (let ((commit "633619953dcf8577168e255230f96b05f28d6371")
413 (revision "1"))
414 (package
415 (name "vim-luna")
416 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
417 (source
418 (origin
419 (method git-fetch)
420 (uri (git-reference
421 (url "https://github.com/notpratheek/vim-luna")
422 (commit commit)))
423 (file-name (string-append name "-" version "-checkout"))
424 (sha256
425 (base32
426 "0ka3qbhsh8lix1vyj4678j7dnchkd8khhirrnn3aylxxf8fpqyg8"))))
427 (build-system copy-build-system)
428 (arguments
429 '(#:install-plan
430 '(("colors" "share/vim/vimfiles/"))))
431 (synopsis "Dark color theme for Vim")
432 (description
433 "@code{vim-luna} is a dark color theme for Vim.")
434 (home-page "https://github.com/notpratheek/vim-luna")
435 (license license:expat))))
436
437 ;; There are no tarball releases.
438 (define-public vim-context-filetype
439 (let ((commit "5e85f8cae26806f391aefe2661791a6de53bcea2")
440 (revision "1"))
441 (package
442 (name "vim-context-filetype")
443 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
444 (source
445 (origin
446 (method git-fetch)
447 (uri (git-reference
448 (url "https://github.com/Shougo/context_filetype.vim")
449 (commit commit)))
450 (file-name (string-append name "-" version "-checkout"))
451 (sha256
452 (base32
453 "0alvrfhmd91zkd9h83s8wvgyq4iakcf6rybsyjd369qbgpcqky89"))))
454 (build-system copy-build-system)
455 (arguments
456 '(#:install-plan
457 '(("doc" "share/vim/vimfiles/")
458 ("autoload" "share/vim/vimfiles/"))))
459 (synopsis "Context filetype library for Vim")
460 (description
461 "@code{vim-context-filetype} is context filetype library for Vim script.")
462 (home-page "https://github.com/Shougo/context_filetype.vim")
463 (license license:expat)))) ; ??? check again
464
465 (define-public vim-fugitive
466 (package
467 (name "vim-fugitive")
468 (version "3.6")
469 (source
470 (origin
471 (method git-fetch)
472 (uri (git-reference
473 (url "https://github.com/tpope/vim-fugitive")
474 (commit (string-append "v" version))))
475 (file-name (git-file-name name version))
476 (sha256
477 (base32 "17c3wzqkbzbf0nmlxpgk90yyv3d09209fqxqysand8bzb1cbfwzn"))))
478 (build-system copy-build-system)
479 (arguments
480 '(#:install-plan
481 '(("autoload" "share/vim/vimfiles/")
482 ("doc" "share/vim/vimfiles/")
483 ("ftdetect" "share/vim/vimfiles/")
484 ("ftplugin" "share/vim/vimfiles/")
485 ("plugin" "share/vim/vimfiles/")
486 ("syntax" "share/vim/vimfiles/"))))
487 (home-page "https://github.com/tpope/vim-fugitive")
488 (synopsis "Vim plugin to work with Git")
489 (description "Vim-fugitive is a wrapper for Vim that complements the
490 command window, where you can stage and review your changes before the next
491 commit or run any Git arbitrary command.")
492 (license license:vim))) ; distributed under the same license as vim
493
494 (define-public vim-airline
495 (package
496 (name "vim-airline")
497 (version "0.11")
498 (source
499 (origin
500 (method git-fetch)
501 (uri (git-reference
502 (url "https://github.com/vim-airline/vim-airline")
503 (commit (string-append "v" version))))
504 (file-name (git-file-name name version))
505 (sha256
506 (base32
507 "1aksmr73648pvyc75pfdz28k2d4ky52rn7xiwcv7lz87q3vqld7k"))))
508 (build-system copy-build-system)
509 (arguments
510 '(#:install-plan
511 '(("autoload" "share/vim/vimfiles/")
512 ("doc" "share/vim/vimfiles/")
513 ("plugin" "share/vim/vimfiles/"))))
514 (synopsis "Statusline for Vim")
515 (description
516 "@code{vim-airline} is an extensible statusline for Vim.
517 It can be extended and costumized with themes, works with unicode fonts
518 and powerline symbols, etc.")
519 (home-page "https://github.com/vim-airline/vim-airline")
520 (license license:expat)))
521
522 ;; There are no tarball releases.
523 (define-public vim-airline-themes
524 (let ((commit "e6f233231b232b6027cde6aebeeb18d9138e5324")
525 (revision "2"))
526 (package
527 (name "vim-airline-themes")
528 (version (git-version "0.0.0" revision commit))
529 (source
530 (origin
531 (method git-fetch)
532 (uri (git-reference
533 (url "https://github.com/vim-airline/vim-airline-themes")
534 (commit commit)))
535 (file-name (git-file-name name version))
536 (sha256
537 (base32
538 "1sb7nb7j7bz0pv1c9bgdy0smhr0jk2b1vbdv9yzghg5lrknpsbr6"))))
539 (build-system copy-build-system)
540 (arguments
541 '(#:install-plan
542 '(("autoload" "share/vim/vimfiles/")
543 ("doc" "share/vim/vimfiles/")
544 ("plugin" "share/vim/vimfiles/"))))
545 (synopsis "Collection of themes for Vim-airline")
546 (description
547 "@code{vim-airline-themes} is a collection of themes for @code{vim-airline}.")
548 (home-page "https://github.com/vim-airline/vim-airline-themes")
549 (license license:expat))))
550
551 (define-public vim-syntastic
552 (package
553 (name "vim-syntastic")
554 (version "3.10.0")
555 (source
556 (origin
557 (method git-fetch)
558 (uri (git-reference
559 (url "https://github.com/vim-syntastic/syntastic")
560 (commit version)))
561 (file-name (git-file-name name version))
562 (sha256
563 (base32 "0j91f72jaz1s6aw1hpjiz30vk2ds2aqd9gisk91grsldy6nz6hhz"))))
564 (build-system copy-build-system)
565 (arguments
566 '(#:install-plan
567 '(("autoload" "share/vim/vimfiles/")
568 ("doc" "share/vim/vimfiles/")
569 ("plugin" "share/vim/vimfiles/")
570 ("syntax_checkers" "share/vim/vimfiles/"))))
571 (synopsis "Syntax checking plugin for Vim")
572 (description
573 "Vim-syntastic is a syntax checking plugin for Vim. It runs files through
574 external syntax checkers and displays any resulting errors to the user. This
575 can be done on demand, or automatically as files are saved. If syntax errors
576 are detected, the user is notified.")
577 (home-page "https://github.com/vim-syntastic/syntastic")
578 (license license:wtfpl2)))
579
580 (define-public vim-solarized
581 (let ((commit "62f656a02f93c5190a8753159e34b385588d5ff3")
582 (revision "1"))
583 (package
584 (name "vim-solarized")
585 (version (git-version "1.0.0beta1" revision commit))
586 (source
587 (origin
588 (method git-fetch)
589 (uri (git-reference
590 (url "https://github.com/altercation/solarized")
591 (commit commit)))
592 (file-name (git-file-name name version))
593 (sha256
594 (base32 "0001mz5v3a8zvi3gzmxhi3yrsb6hs7qf6i497arsngnvj2cwn61d"))))
595 (build-system copy-build-system)
596 (arguments
597 '(#:install-plan
598 '(("vim-colors-solarized/colors" "share/vim/vimfiles/")
599 ("vim-colors-solarized/doc" "share/vim/vimfiles/"))))
600 (home-page "https://github.com/altercation/vim-colors-solarized")
601 (synopsis "Solarized color scheme for Vim")
602 (description
603 "This package provides the Solarized theme as a Vim color scheme.
604
605 Solarized is a 16-color palette comprising 8 monotones and 8 accent
606 colors. It was designed for use with both terminal and GUI applications, and
607 has a dark and a light mode.
608
609 Based on CIELAB lightness relationships between colors, this theme reduces
610 brightness contrast but retains contrasting hues based on colorwheel relations
611 for syntax highlighting readability.
612
613 It keeps the same selective contrast relationships and overall feel when
614 switching between the light and dark background modes.")
615 (license license:expat))))
616
617 (define-public editorconfig-vim
618 (package
619 (name "editorconfig-vim")
620 (version "1.1.1")
621 (source
622 (origin
623 (method git-fetch)
624 (uri (git-reference
625 (url "https://github.com/editorconfig/editorconfig-vim")
626 (commit (string-append "v" version))))
627 (file-name (git-file-name name version))
628 (sha256
629 (base32
630 "0mp80bi2m56bb93szw87vy6q5s85yk9g91sl4pr51316rgdv5kkv"))))
631 (build-system copy-build-system)
632 (arguments
633 '(#:install-plan
634 '(("autoload" "share/vim/vimfiles/")
635 ("doc" "share/vim/vimfiles/")
636 ("plugin" "share/vim/vimfiles/"))))
637 (home-page "https://editorconfig.org/")
638 (synopsis "EditorConfig plugin for Vim")
639 (description "EditorConfig makes it easy to maintain the correct coding
640 style when switching between different text editors and between different
641 projects. The EditorConfig project maintains a file format and plugins for
642 various text editors which allow this file format to be read and used by those
643 editors.")
644 (license license:bsd-2)))
645
646 (define-public neovim-syntastic
647 (package
648 (inherit vim-syntastic)
649 (name "neovim-syntastic")
650 (arguments
651 '(#:install-plan
652 '(("autoload" "share/nvim/site/")
653 ("doc" "share/nvim/site/")
654 ("plugin" "share/nvim/site/")
655 ("syntax_checkers" "share/nvim/site/"))))
656 (synopsis "Syntax checking plugin for Neovim")
657 (description
658 "Vim-syntastic is a syntax checking plugin for Neovim. It runs files through
659 external syntax checkers and displays any resulting errors to the user. This
660 can be done on demand, or automatically as files are saved. If syntax errors
661 are detected, the user is notified.")))
662
663 (define-public neovim
664 (package
665 (name "neovim")
666 (version "0.6.1")
667 (source
668 (origin
669 (method git-fetch)
670 (uri (git-reference
671 (url "https://github.com/neovim/neovim")
672 (commit (string-append "v" version))))
673 (file-name (git-file-name name version))
674 (sha256
675 (base32 "10p6lg5yv9n6wcwdprwvvi56dfcm4wsj54nm0invyx3mhf7374lx"))))
676 (build-system cmake-build-system)
677 (arguments
678 `(#:modules ((srfi srfi-26)
679 (guix build cmake-build-system)
680 (guix build utils))
681 #:configure-flags
682 (list ,@(if (member (if (%current-target-system)
683 (gnu-triplet->nix-system (%current-target-system))
684 (%current-system))
685 (package-supported-systems luajit))
686 '()
687 '("-DPREFER_LUA:BOOL=YES")))
688 #:phases
689 (modify-phases %standard-phases
690 (add-after 'unpack 'set-lua-paths
691 (lambda* (#:key inputs #:allow-other-keys)
692 (let* ((lua-version "5.1")
693 (lua-cpath-spec
694 (lambda (prefix)
695 (let ((path (string-append prefix "/lib/lua/" lua-version)))
696 (string-append path "/?.so;" path "/?/?.so"))))
697 (lua-path-spec
698 (lambda (prefix)
699 (let ((path (string-append prefix "/share/lua/" lua-version)))
700 (string-append path "/?.lua;" path "/?/?.lua"))))
701 (lua-inputs (map (cute assoc-ref inputs <>)
702 '("lua"
703 "lua-luv"
704 "lua-lpeg"
705 "lua-bitop"
706 "lua-libmpack"))))
707 (setenv "LUA_PATH"
708 (string-join (map lua-path-spec lua-inputs) ";"))
709 (setenv "LUA_CPATH"
710 (string-join (map lua-cpath-spec lua-inputs) ";"))
711 #t)))
712 (add-after 'unpack 'prevent-embedding-gcc-store-path
713 (lambda _
714 ;; nvim remembers its build options, including the compiler with
715 ;; its complete path. This adds gcc to the closure of nvim, which
716 ;; doubles its size. We remove the refirence here.
717 (substitute* "cmake/GetCompileFlags.cmake"
718 (("\\$\\{CMAKE_C_COMPILER\\}") "/gnu/store/.../bin/gcc"))
719 #t)))))
720 (inputs
721 `(("libuv" ,libuv)
722 ("msgpack" ,msgpack)
723 ("libtermkey" ,libtermkey)
724 ("libvterm" ,libvterm)
725 ("unibilium" ,unibilium)
726 ("jemalloc" ,jemalloc)
727 ("lua" ,(if (member (if (%current-target-system)
728 (gnu-triplet->nix-system (%current-target-system))
729 (%current-system))
730 (package-supported-systems luajit))
731 luajit
732 lua-5.1))
733 ("lua-luv" ,lua5.1-luv)
734 ("lua-lpeg" ,lua5.1-lpeg)
735 ("lua-bitop" ,lua5.1-bitop)
736 ("lua-libmpack" ,lua5.1-libmpack)
737 ("tree-sitter" ,tree-sitter)))
738 (native-inputs
739 `(("pkg-config" ,pkg-config)
740 ("gettext" ,gettext-minimal)
741 ("gperf" ,gperf)))
742 (home-page "https://neovim.io")
743 (synopsis "Fork of vim focused on extensibility and agility")
744 (description "Neovim is a project that seeks to aggressively
745 refactor Vim in order to:
746
747 @itemize
748 @item Simplify maintenance and encourage contributions
749 @item Split the work between multiple developers
750 @item Enable advanced external UIs without modifications to the core
751 @item Improve extensibility with a new plugin architecture
752 @end itemize\n")
753 ;; Neovim is licensed under the terms of the Apache 2.0 license,
754 ;; except for parts that were contributed under the Vim license.
755 (license (list license:asl2.0 license:vim))))
756
757 (define-public eovim
758 (package
759 (name "eovim")
760 (version "0.2.0")
761 (source
762 (origin
763 (method git-fetch)
764 (uri (git-reference
765 (url "https://github.com/jeanguyomarch/eovim/")
766 (commit (string-append "v" version))))
767 (file-name (git-file-name name version))
768 (sha256
769 (base32 "06b7crmz3wvvq15ncl0jk20s8j1pmna2jin0k5y5n5qxpafbgp3k"))))
770 (build-system cmake-build-system)
771 (arguments
772 '(#:tests? #false ;no tests
773 #:phases
774 (modify-phases %standard-phases
775 (add-after 'configure 'reference-nvim
776 (lambda* (#:key inputs #:allow-other-keys)
777 (let ((nvim (search-input-file inputs "/bin/nvim")))
778 ;; This substitution should change one line, and replaces the default
779 ;; value in the struct of options with an absolute store reference.
780 (substitute* "../source/src/main.c"
781 (("(^[[:blank:]]+\\.nvim = \")nvim" _ start)
782 (string-append start nvim))))))
783 (add-before 'build 'set-home
784 (lambda _ (setenv "HOME" "/tmp"))))))
785 (native-inputs
786 (list pkg-config))
787 (inputs
788 (list efl msgpack neovim))
789 (home-page "https://github.com/jeanguyomarch/eovim/")
790 (synopsis "EFL GUI for Neovim")
791 (description "Graphical Neovim interface based on the @acronym{EFL, Enlightenment
792 Foundation Libraries} toolkit. Its features include customizable appearance
793 and support for fonts with ligatures.")
794 (license license:expat)))
795
796 (define-public vifm
797 (package
798 (name "vifm")
799 (version "0.12")
800 (source
801 (origin
802 (method url-fetch)
803 (uri (list
804 (string-append "https://github.com/vifm/vifm/releases/download/v"
805 version "/vifm-" version ".tar.bz2")
806 (string-append "https://sourceforge.net/projects/vifm/files/vifm/"
807 "vifm-" version ".tar.bz2")))
808 (sha256
809 (base32
810 "1h5j4y704nciyzg3aaav8sl3r5h9mpwq8f28cj65nnxk6a7n3a9k"))))
811 (build-system gnu-build-system)
812 (arguments
813 '(#:configure-flags '("--disable-build-timestamp")
814 #:phases
815 (modify-phases %standard-phases
816 (add-after 'patch-source-shebangs 'patch-test-shebangs
817 (lambda _
818 (substitute* (cons* "src/background.c"
819 "src/cfg/config.c"
820 (find-files "tests" "\\.c$"))
821 (("/bin/sh") (which "sh"))
822 (("/bin/bash") (which "bash")))
823 ;; This test segfaults
824 (substitute* "tests/Makefile"
825 (("misc") ""))
826 #t))
827 (add-after 'install 'install-vim-plugin-files
828 (lambda* (#:key outputs #:allow-other-keys)
829 (let* ((out (assoc-ref outputs "out"))
830 (vifm (string-append out "/share/vifm"))
831 (vimfiles (string-append out "/share/vim/vimfiles")))
832 (copy-recursively (string-append vifm "/colors")
833 (string-append vimfiles "/colors"))
834 (copy-recursively (string-append vifm "/vim")
835 vimfiles)
836 (delete-file-recursively (string-append vifm "/colors"))
837 (delete-file-recursively (string-append vifm "/vim")))
838 #t)))))
839 (native-inputs
840 (list groff)) ; for the documentation
841 (inputs
842 (list libx11 ncurses perl))
843 (home-page "https://vifm.info/")
844 (synopsis "Flexible vi-like file manager using ncurses")
845 (description "Vifm is a file manager providing a @command{vi}-like usage
846 experience. It has similar keybindings and modes (e.g. normal, command line,
847 visual). The interface uses ncurses, thus vifm can be used in text-only
848 environments. It supports a wide range of features, some of which are known
849 from the @command{vi}-editor:
850 @enumerate
851 @item utf8 support
852 @item user mappings (almost like in @code{vi})
853 @item ranges in command
854 @item line commands
855 @item user defined commands (with support for ranges)
856 @item registers
857 @item operation undoing/redoing
858 @item fuse file systems support
859 @item trash
860 @item multiple files renaming
861 @item support of filename modifiers
862 @item colorschemes support
863 @item file name color according to file type
864 @item path specific colorscheme customization
865 @item bookmarks
866 @item operation backgrounding
867 @item customizable file viewers
868 @item handy @code{less}-like preview mode
869 @item filtering out and searching for files using regular expressions
870 @item one or two panes view
871 @end enumerate
872 With the package comes a plugin to use vifm as a vim file selector.")
873 (license license:gpl2+)))
874
875 (define-public python-pynvim
876 (package
877 (name "python-pynvim")
878 (version "0.4.2")
879 (source (origin
880 (method url-fetch)
881 (uri (pypi-uri "pynvim" version))
882 (sha256
883 (base32
884 "13qgwkqbx012j5spis1aw8rb120rw0zphgjy1j58irax8r6j1ikb"))))
885 (build-system python-build-system)
886 (propagated-inputs
887 (list python-greenlet python-msgpack))
888 (arguments
889 `(#:tests? #f))
890 (home-page "https://github.com/neovim/pynvim")
891 (synopsis "Python client and plugin host for neovim")
892 (description "Pynvim implements support for python plugins in neovim. It
893 also works as a library for connecting to and scripting neovim processes
894 through its msgpack-rpc API.")
895 (license license:asl2.0)))
896
897 (define-public vim-guix-vim
898 (package
899 (name "vim-guix-vim")
900 (version "0.3.1")
901 (source (origin
902 (method git-fetch)
903 (uri (git-reference
904 (url "https://gitlab.com/Efraim/guix.vim")
905 (commit version)))
906 (file-name (git-file-name name version))
907 (sha256
908 (base32
909 "080ni4z23qdr8rkrswjqfqfrrcnpn7qdgrg14glwji46wzvwxqyx"))))
910 (build-system copy-build-system)
911 (arguments
912 '(#:install-plan
913 '(("autoload" "share/vim/vimfiles/")
914 ("compiler" "share/vim/vimfiles/")
915 ("doc" "share/vim/vimfiles/")
916 ("indent" "share/vim/vimfiles/")
917 ("ftdetect" "share/vim/vimfiles/")
918 ("ftplugin" "share/vim/vimfiles/")
919 ("plugin" "share/vim/vimfiles/")
920 ("syntax" "share/vim/vimfiles/"))))
921 (home-page "https://gitlab.com/Efraim/guix.vim")
922 (synopsis "Guix integration in Vim")
923 (description "This package provides support for GNU Guix in Vim.")
924 (license license:vim)))
925
926 (define-public vim-asyncrun
927 (package
928 (name "vim-asyncrun")
929 (version "2.8.6")
930 (source (origin
931 (method git-fetch)
932 (uri (git-reference
933 (url "https://github.com/skywind3000/asyncrun.vim")
934 (commit version)))
935 (file-name (git-file-name name version))
936 (sha256
937 (base32
938 "11zcw0sll6qg6ha0rr6n1cw5v73azvf7ycwn9lgiwa5cj7rrqjf4"))))
939 (build-system copy-build-system)
940 (arguments
941 '(#:install-plan
942 '(("plugin" "share/vim/vimfiles/")
943 ("doc/" "share/vim/vimfiles/doc" #:include ("asyncrun.txt")))))
944 (home-page "https://github.com/skywind3000/asyncrun.vim")
945 (synopsis "Run Async Shell Commands in Vim")
946 (description "This plugin takes the advantage of new APIs in Vim 8 (and
947 NeoVim) to enable you to run shell commands in background and read output in the
948 quickfix window in realtime.")
949 (license license:expat)))
950
951 (define-public vim-dispatch
952 (package
953 (name "vim-dispatch")
954 (version "1.8")
955 (source
956 (origin
957 (method git-fetch)
958 (uri (git-reference
959 (url "https://github.com/tpope/vim-dispatch")
960 (commit (string-append "v" version))))
961 (file-name (git-file-name name version))
962 (sha256
963 (base32
964 "1m8b5mn2zqlphzs6xfwykwmghf6p0wabrhpjmh7vav35jgcxc4wl"))))
965 (build-system copy-build-system)
966 (arguments
967 '(#:install-plan
968 '(("autoload" "share/vim/vimfiles/")
969 ("doc" "share/vim/vimfiles/")
970 ("plugin" "share/vim/vimfiles/"))))
971 (home-page "https://github.com/tpope/vim-dispatch")
972 (synopsis "Asynchronous build and test dispatcher")
973 (description "Leverage the power of Vim's compiler plugins without being
974 bound by synchronicity. Kick off builds and test suites using one of several
975 asynchronous adapters (including tmux, screen, and a headless mode), and when
976 the job completes, errors will be loaded and parsed automatically.")
977 (license license:vim)))
978
979 (define-public vim-gemini-vim
980 ;; No releases have been tagged.
981 (let ((commit "f300c54174fc0db8fb68f1bc04307b58612e9630")
982 (revision "1"))
983 (package
984 (name "vim-gemini-vim")
985 (version (git-version "0.0.0" revision commit))
986 (source
987 (origin
988 (method git-fetch)
989 (uri (git-reference
990 (url "https://git.sr.ht/~torresjrjr/gemini.vim")
991 (commit commit)))
992 (file-name (git-file-name name version))
993 (sha256
994 (base32 "05ffhhfahjqwxyrqmsinsahrs15wknzl2qbj8mznyv319mn2civ2"))))
995 (build-system copy-build-system)
996 (arguments
997 `(#:install-plan
998 '(("ftdetect" "share/vim/vimfiles/")
999 ("syntax" "share/vim/vimfiles/"))))
1000 (home-page "https://git.sr.ht/~torresjrjr/gemini.vim")
1001 (synopsis "Vim syntax highlighting plugin for Gemini")
1002 (description "This Vim plugin provides a Vim syntax highlighting plugin
1003 for Gemini Text, the text/gemini media type, as defined in the Gemini protocol
1004 specification.")
1005 (license license:gpl3))))
1006
1007 (define-public vim-eunuch
1008 (let ((commit "33e875b31c8b811a0a47908884a5e2339106bbe8")
1009 (revision "1"))
1010 (package
1011 (name "vim-eunuch")
1012 (version (git-version "1.2" revision commit))
1013 (source
1014 (origin
1015 (method git-fetch)
1016 (uri (git-reference
1017 (url "https://github.com/tpope/vim-eunuch")
1018 (commit commit)))
1019 (file-name (git-file-name name version))
1020 (sha256
1021 (base32
1022 "1xadb22kd40swmww0qxmmkcpcq6viy8l167pjck5q32hfngll5d3"))))
1023 (build-system copy-build-system)
1024 (arguments
1025 '(#:install-plan
1026 '(("doc" "share/vim/vimfiles/")
1027 ("plugin" "share/vim/vimfiles/"))))
1028 (home-page "https://github.com/tpope/vim-eunuch")
1029 (synopsis "Vim sugar for the UNIX shell commands")
1030 (description "Vim sugar for the UNIX shell commands that need it the most.
1031 This package includes commands such as @code{SudoWrite} and @code{SudoEdit} and
1032 help working on Vim buffers and the files they reference with one command.")
1033 (license license:vim))))
1034
1035 (define-public vim-slime
1036 ;; No tagged releases.
1037 (let ((commit "a522fed677e50175f52efc5848cc35209af33216")
1038 (revision "1"))
1039 (package
1040 (name "vim-slime")
1041 (version (git-version "0.0.0" revision commit))
1042 (source
1043 (origin
1044 (method git-fetch)
1045 (uri (git-reference
1046 (url "https://github.com/jpalardy/vim-slime")
1047 (commit commit)))
1048 (file-name (git-file-name name version))
1049 (sha256
1050 (base32 "0k4b629jn6xlxyjxdl3cgm06v9dmx967rqnslv5m82c9kscwpyh4"))))
1051 (build-system copy-build-system)
1052 (arguments
1053 `(#:install-plan
1054 '(("autoload" "share/vim/vimfiles/")
1055 ("doc" "share/vim/vimfiles/")
1056 ("ftplugin" "share/vim/vimfiles/")
1057 ("plugin" "share/vim/vimfiles/"))))
1058 (home-page "https://technotales.wordpress.com/2007/10/03/like-slime-for-vim/")
1059 (synopsis "Vim plugin to give you some slime")
1060 (description "SLIME is an Emacs plugin to turn Emacs into a Lisp IDE. You
1061 can type text in a file, send it to a live REPL, and avoid having to reload all
1062 your code every time you make a change. @code{Vim-slime} is an attempt at
1063 getting some of these features into Vim. It works with any REPL and isn't tied
1064 to Lisp.")
1065 (license license:expat))))
1066
1067 (define-public vim-paredit
1068 ;; The last tagged version is from August 2013.
1069 (let ((commit "97d51d099523b37bb35cbcf3564cbfb46e66e4ec")
1070 (revision "1"))
1071 (package
1072 (name "vim-paredit")
1073 (version (git-version "0.9.11" revision commit))
1074 (source
1075 (origin
1076 (method git-fetch)
1077 (uri (git-reference
1078 (url "https://github.com/kovisoft/paredit")
1079 (commit commit)))
1080 (file-name (git-file-name name version))
1081 (sha256
1082 (base32 "07d5s20r0ssd7rir45vy0fqlci44gha1a81rcilgar227f3nw328"))))
1083 (build-system copy-build-system)
1084 (arguments
1085 '(#:install-plan
1086 '(("doc" "share/vim/vimfiles/")
1087 ("plugin" "share/vim/vimfiles/"))))
1088 (home-page "https://github.com/kovisoft/paredit")
1089 (synopsis "Vim plugin for structured editing of Lisp S-expressions")
1090 (description
1091 "Paredit performs structured editing of Lisp S-expressions in Vim.
1092 @code{Paredit.vim} is similar to @code{paredit.el} for Emacs.")
1093 ;; License listed in plugin/paredit.vim.
1094 (license license:public-domain))))
1095
1096 (define-public vim-surround
1097 (package
1098 (name "vim-surround")
1099 (version "2.2")
1100 (source
1101 (origin
1102 (method git-fetch)
1103 (uri (git-reference
1104 (url "https://github.com/tpope/vim-surround")
1105 (commit (string-append "v" version))))
1106 (file-name (git-file-name name version))
1107 (sha256
1108 (base32 "1b0bd5m5lv1p4d299mrwjfs2gk0zqwyaqdaid9hs9yqlxnr8s5nf"))))
1109 (build-system copy-build-system)
1110 (arguments
1111 '(#:install-plan
1112 '(("doc" "share/vim/vimfiles/")
1113 ("plugin" "share/vim/vimfiles/"))))
1114 (home-page "https://github.com/tpope/vim-surround")
1115 (synopsis "Vim plugin for easy quoting and parenthesizing")
1116 (description
1117 "Surround.vim is all about \"surroundings\": parentheses, brackets,
1118 quotes, XML tags, and more. The plugin provides mappings to easily delete,
1119 change and add such surroundings in pairs.")
1120 (license license:vim)))
1121
1122 (define-public vim-gnupg
1123 (package
1124 (name "vim-gnupg")
1125 (version "2.7.1")
1126 (source
1127 (origin
1128 (method url-fetch)
1129 (uri (string-append "https://github.com/jamessan/vim-gnupg/releases/"
1130 "download/v" version
1131 "/vim-gnupg-v" version ".tar.gz"))
1132 (sha256
1133 (base32 "02w8lgyyh7wgxysvmmcf9ja5c06vrbyh3alzvv97x8cfhrp0skn7"))))
1134 (build-system copy-build-system)
1135 (arguments
1136 '(#:install-plan
1137 '(("autoload" "share/vim/vimfiles/")
1138 ("doc" "share/vim/vimfiles/")
1139 ("plugin" "share/vim/vimfiles/"))))
1140 (home-page "https://www.vim.org/scripts/script.php?script_id=3645")
1141 (synopsis "Vim plugin for transparent editing of gpg encrypted files")
1142 (description
1143 "This script implements transparent editing of gpg encrypted files. The
1144 filename must have a @code{.gpg}, @code{.pgp} or @code{.asc} suffix. When
1145 opening such a file the content is decrypted, and the content will be encrypted
1146 to all recipients before it is written. This script turns off viminfo,
1147 swapfile, and undofile when editing encrypted files to increase security.")
1148 (properties
1149 '((release-monitoring-url . "https://github.com/jamessan/vim-gnupg/releases")))
1150 (license license:gpl2+)))
1151
1152 (define-public vim-ctrlp
1153 (package
1154 (name "vim-ctrlp")
1155 (version "1.81")
1156 (source
1157 (origin
1158 (method git-fetch)
1159 (uri (git-reference
1160 (url "https://github.com/ctrlpvim/ctrlp.vim")
1161 (commit version)))
1162 (file-name (git-file-name name version))
1163 (sha256
1164 (base32 "0n68hg59h4rjn0ziqbsh5pr03l3kr98zk54659ny6vq107af1w96"))))
1165 (build-system copy-build-system)
1166 (arguments
1167 '(#:install-plan
1168 '(("autoload" "share/vim/vimfiles/")
1169 ("doc" "share/vim/vimfiles/")
1170 ("plugin" "share/vim/vimfiles/"))))
1171 (home-page "https://ctrlpvim.github.io/ctrlp.vim/")
1172 (synopsis "Fuzzy file, buffer, mru, tag, etc. finder for Vim")
1173 (description
1174 "CtrlP features:
1175 @itemize
1176 @item Written in pure Vimscript for MacVim, gVim and Vim 7.0+.
1177 @item Full support for Vim's regexp as search patterns.
1178 @item Built-in @acronym{Most Recently Used, MRU} files monitoring and search.
1179 @item Built-in project's root finder.
1180 @item Open multiple files at once.
1181 @item Create new files and directories.
1182 @item Execute Ex commands on an opening file (jump to a line, to a string or do
1183 anything).
1184 @item Optional cross-session caching and history allow for fast initialization.
1185 @item Mappings and usage conform to Vim's conventions.
1186 @end itemize")
1187 (license license:vim)))
1188
1189 (define-public vim-mucomplete
1190 (package
1191 (name "vim-mucomplete")
1192 (version "1.5.0")
1193 (source
1194 (origin
1195 (method git-fetch)
1196 (uri (git-reference
1197 (url "https://github.com/lifepillar/vim-mucomplete")
1198 (commit (string-append "v" version))))
1199 (file-name (git-file-name name version))
1200 (sha256
1201 (base32 "054g80n09mmxxlh8xaic29bn8bgn3clvv732rymljdyvbj1mlhwd"))))
1202 (build-system copy-build-system)
1203 (arguments
1204 '(#:install-plan
1205 '(("autoload" "share/vim/vimfiles/")
1206 ("doc" "share/vim/vimfiles/")
1207 ("plugin" "share/vim/vimfiles/"))))
1208 (home-page "https://github.com/lifepillar/vim-mucomplete")
1209 (synopsis "MUcomplete is a minimalist autocompletion plugin for Vim")
1210 (description
1211 "MUcomplete is an implementation of chained (fallback) completion,
1212 whereby several completion methods are attempted one after another until a
1213 result is returned.")
1214 (license license:expat)))
1215
1216 (define-public vim-gitgutter
1217 (let ((commit "256702dd1432894b3607d3de6cd660863b331818")
1218 (revision "1"))
1219 (package
1220 (name "vim-gitgutter")
1221 (version (git-version "0.0.0" revision commit))
1222 (source
1223 (origin
1224 (method git-fetch)
1225 (uri (git-reference
1226 (url "https://github.com/airblade/vim-gitgutter")
1227 (commit commit)))
1228 (file-name (git-file-name name version))
1229 (sha256
1230 (base32 "0zpa7cs59a8sq0k3frlf9flpf30jcn239yrpmv40r7nqvxzglbpl"))))
1231 (build-system copy-build-system)
1232 (arguments
1233 '(#:install-plan
1234 '(("autoload" "share/vim/vimfiles/")
1235 ("doc" "share/vim/vimfiles/")
1236 ("plugin" "share/vim/vimfiles/"))))
1237 (synopsis "Vim plugin which shows a git diff in the sign column")
1238 (description
1239 "A Vim plugin which shows a git diff in the sign column. It shows which
1240 lines have been added, modified, or removed. You can also preview, stage, and
1241 undo individual hunks; and stage partial hunks. The plugin also provides a hunk
1242 text object. The signs are always up to date and the plugin never saves your
1243 buffer.")
1244 (home-page "https://github.com/airblade/vim-gitgutter")
1245 (license license:expat))))
1246
1247 (define-public vim-characterize
1248 (package
1249 (name "vim-characterize")
1250 (version "1.1")
1251 (source
1252 (origin
1253 (method git-fetch)
1254 (uri (git-reference
1255 (url "https://github.com/tpope/vim-characterize")
1256 (commit (string-append "v" version))))
1257 (file-name (git-file-name name version))
1258 (sha256
1259 (base32 "0ppsbsd696ih40d9f76mdl9sd9y7p2pvm65qmvq4b2zhkv4xbpxz"))))
1260 (build-system copy-build-system)
1261 (arguments
1262 '(#:install-plan
1263 '(("autoload" "share/vim/vimfiles/")
1264 ("doc" "share/vim/vimfiles/")
1265 ("plugin" "share/vim/vimfiles/"))))
1266 (home-page "https://github.com/tpope/vim-characterize")
1267 (synopsis "Vim plugin for showing Unicode character metadata")
1268 (description
1269 "In Vim, pressing @code{ga} on a character reveals its representation in
1270 decimal, octal, and hex. Characterize.vim modernizes this with the following
1271 additions:
1272 @itemize
1273 @item Unicode character names: @code{U+00A9 COPYRIGHT SYMBOL}
1274 @item Vim digraphs (type after @code{<C-K>} to insert the character):
1275 @code{Co}, @code{cO}
1276 @item Emoji codes: @code{:copyright:}
1277 @item HTML entities: @code{&copy;}
1278 @end itemize")
1279 (license license:vim)))
1280
1281 (define-public vim-tagbar
1282 (package
1283 (name "vim-tagbar")
1284 (version "3.0.0")
1285 (source
1286 (origin
1287 (method git-fetch)
1288 (uri (git-reference
1289 (url "https://github.com/preservim/tagbar")
1290 (commit (string-append "v" version))))
1291 (file-name (git-file-name name version))
1292 (sha256
1293 (base32 "1fqfs8msmr6d4kpvxqp14sdjvp5fj52q5w5kz71myzcd4kqzmirp"))))
1294 (build-system copy-build-system)
1295 (arguments
1296 '(#:install-plan
1297 '(("autoload" "share/vim/vimfiles/")
1298 ("doc" "share/vim/vimfiles/")
1299 ("plugin" "share/vim/vimfiles/")
1300 ("syntax" "share/vim/vimfiles/"))
1301 #:phases
1302 (modify-phases %standard-phases
1303 (add-after 'unpack 'link-universal-ctags
1304 (lambda* (#:key inputs #:allow-other-keys)
1305 (let ((ctags (assoc-ref inputs "universal-ctags")))
1306 (substitute* "autoload/tagbar.vim"
1307 (("(.*)universal-ctags']" all leader)
1308 (string-append all "\n"
1309 leader ctags "/bin/ctags']")))))))))
1310 (inputs
1311 (list universal-ctags))
1312 (home-page "https://github.com/preservim/tagbar")
1313 (synopsis "Vim plugin that displays tags in a window, ordered by scope")
1314 (description
1315 "Tagbar is a Vim plugin that provides an easy way to browse the tags of
1316 the current file and get an overview of its structure. It does this by creating
1317 a sidebar that displays the ctags-generated tags of the current file, ordered
1318 by their scope. This means that for example methods in C++ are displayed under
1319 the class they are defined in.")
1320 (license license:vim)))
1321
1322 (define-public vim-nerdtree
1323 (package
1324 (name "vim-nerdtree")
1325 (version "6.10.16")
1326 (source
1327 (origin
1328 (method git-fetch)
1329 (uri (git-reference
1330 (url "https://github.com/preservim/nerdtree")
1331 (commit version)))
1332 (file-name (git-file-name name version))
1333 (sha256
1334 (base32 "1si8qla86ng8cffbmfrk9gss0i3912yw0f1ph4bsiq0kk837lccp"))))
1335 (build-system copy-build-system)
1336 (arguments
1337 '(#:install-plan
1338 '(("autoload" "share/vim/vimfiles/")
1339 ("doc" "share/vim/vimfiles/")
1340 ("lib" "share/vim/vimfiles/")
1341 ("nerdtree_plugin" "share/vim/vimfiles/")
1342 ("plugin" "share/vim/vimfiles/")
1343 ("syntax" "share/vim/vimfiles/"))))
1344 (home-page "https://github.com/preservim/nerdtree")
1345 (synopsis "Tree explorer plugin for Vim")
1346 (description
1347 "The NERDTree is a file system explorer for the Vim editor. Using this
1348 plugin, users can visually browse complex directory hierarchies, quickly open
1349 files for reading or editing, and perform basic file system operations.")
1350 (license license:wtfpl2)))
1351
1352 (define-public vim-nerdcommenter
1353 (let ((commit "a65465d321f2f8a74b2ffa540b9b87563f7e12e8")
1354 (revision "1"))
1355 (package
1356 (name "vim-nerdcommenter")
1357 (version (git-version "2.5.2" revision commit))
1358 (source
1359 (origin
1360 (method git-fetch)
1361 (uri (git-reference
1362 (url "https://github.com/preservim/nerdcommenter")
1363 (commit commit)))
1364 (file-name (git-file-name name version))
1365 (sha256
1366 (base32 "00ir65iv8jfbgzjmj7332fmydh0qhabbhx8zbvd3j6pgfxqpaafw"))))
1367 (build-system copy-build-system)
1368 (arguments
1369 '(#:install-plan
1370 '(("autoload" "share/vim/vimfiles/")
1371 ("doc" "share/vim/vimfiles/")
1372 ("plugin" "share/vim/vimfiles/"))))
1373 (home-page "https://github.com/preservim/nerdcommenter")
1374 (synopsis "Vim plugin for easy commenting of code")
1375 (description
1376 "NERD commenter is a Vim plugin that provides many different commenting
1377 operations and styles which are invoked via key mappings and a menu. These
1378 operations are available for most filetypes.")
1379 (license license:cc0))))