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