projects/guix·blob bootstrap-team · refs

1812 lines · 70.9 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Cyril Roelandt <[email protected]>
3;;; Copyright © 2016-2025 Efraim Flashner <[email protected]>
4;;; Copyright © 2016, 2017 Nikita <[email protected]>
5;;; Copyright © 2017 Ricardo Wurmus <[email protected]>
6;;; Copyright © 2017 Marius Bakke <[email protected]>
7;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <[email protected]>
8;;; Copyright © 2019 HiPhish <[email protected]>
9;;; Copyright © 2019 Julien Lepiller <[email protected]>
10;;; Copyright © 2019, 2020 Jakub Kądziołka <[email protected]>
11;;; Copyright © 2020, 2021 Jack Hill <[email protected]>
12;;; Copyright © 2021 Simon Tournier <[email protected]>
13;;; Copyright © 2021 Tissevert <[email protected]>
14;;; Copyright © 2021 Foo Chuan Wei <[email protected]>
15;;; Copyright © 2022, 2023 Luis Henrique Gomes Higino <[email protected]>
16;;; Copyright © 2023 Charles Jackson <[email protected]>
17;;; Copyright © 2023 Foundation Devices, Inc. <[email protected]>
18;;; Copyright © 2023, 2024 Nguyễn Gia Phong <[email protected]>
19;;;
20;;; This file is part of GNU Guix.
21;;;
22;;; GNU Guix is free software; you can redistribute it and/or modify it
23;;; under the terms of the GNU General Public License as published by
24;;; the Free Software Foundation; either version 3 of the License, or (at
25;;; your option) any later version.
26;;;
27;;; GNU Guix is distributed in the hope that it will be useful, but
28;;; WITHOUT ANY WARRANTY; without even the implied warranty of
29;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30;;; GNU General Public License for more details.
31;;;
32;;; You should have received a copy of the GNU General Public License
33;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
34
35(define-module (gnu packages vim)
36 #:use-module ((guix licenses) #:prefix license:)
37 #:use-module (guix packages)
38 #:use-module (guix gexp)
39 #:use-module (guix utils)
40 #:use-module (guix download)
41 #:use-module (guix git-download)
42 #:use-module (guix build-system cmake)
43 #:use-module (guix build-system copy)
44 #:use-module (guix build-system gnu)
45 #:use-module (guix build-system python)
46 #:use-module (guix build-system pyproject)
47 #:use-module (guix build-system vim)
48 #:use-module (gnu packages)
49 #:use-module (gnu packages acl)
50 #:use-module (gnu packages admin) ; For GNU hostname
51 #:use-module (gnu packages attr)
52 #:use-module (gnu packages autotools)
53 #:use-module (gnu packages base)
54 #:use-module (gnu packages check)
55 #:use-module (gnu packages code)
56 #:use-module (gnu packages coq)
57 #:use-module (gnu packages enlightenment)
58 #:use-module (gnu packages fontutils)
59 #:use-module (gnu packages gawk)
60 #:use-module (gnu packages gettext)
61 #:use-module (gnu packages glib)
62 #:use-module (gnu packages gperf)
63 #:use-module (gnu packages groff)
64 #:use-module (gnu packages gtk)
65 #:use-module (gnu packages image)
66 #:use-module (gnu packages jemalloc)
67 #:use-module (gnu packages libevent)
68 #:use-module (gnu packages linux)
69 #:use-module (gnu packages lisp-xyz)
70 #:use-module (gnu packages lua)
71 #:use-module (gnu packages ncurses)
72 #:use-module (gnu packages perl)
73 #:use-module (gnu packages pkg-config)
74 #:use-module (gnu packages python)
75 #:use-module (gnu packages python-build)
76 #:use-module (gnu packages python-xyz)
77 #:use-module (gnu packages ruby)
78 #:use-module (gnu packages serialization)
79 #:use-module (gnu packages shells)
80 #:use-module (gnu packages tcl)
81 #:use-module (gnu packages text-editors)
82 #:use-module (gnu packages textutils)
83 #:use-module (gnu packages terminals)
84 #:use-module (gnu packages tree-sitter)
85 #:use-module (gnu packages xdisorg)
86 #:use-module (gnu packages xorg))
87
88(define-public vim
89 (package
90 (name "vim")
91 (version "9.1.1525")
92 (source (origin
93 (method git-fetch)
94 (uri (git-reference
95 (url "https://github.com/vim/vim")
96 (commit (string-append "v" version))))
97 (file-name (git-file-name name version))
98 (sha256
99 (base32
100 "19qkf9hq4rd4y3592wxd2x7bw2wxq0p607wddv4p8cv8wsk5y7dv"))))
101 (build-system gnu-build-system)
102 (arguments
103 `(#:test-target "test"
104 #:parallel-tests? #f
105 #:phases
106 (modify-phases %standard-phases
107 (add-after 'configure 'patch-absolute-paths
108 (lambda* (#:key inputs #:allow-other-keys)
109 (substitute* '("src/testdir/Makefile"
110 "src/testdir/test_filetype.vim"
111 "src/testdir/test_normal.vim"
112 "src/testdir/test_popupwin.vim"
113 "src/testdir/test_prompt_buffer.vim"
114 "src/testdir/test_shell.vim"
115 "src/testdir/test_suspend.vim"
116 "src/testdir/test_terminal.vim"
117 "src/testdir/test_terminal2.vim")
118 (("/bin/sh") (which "sh")))
119 (substitute* "src/testdir/test_autocmd.vim"
120 (("/bin/kill") (which "kill")))
121 (substitute* '("runtime/syntax/sh.vim"
122 "src/if_cscope.c")
123 (("/bin/sh") (search-input-file inputs "/bin/sh")))))
124 (add-before 'check 'set-environment-variables
125 (lambda* (#:key inputs #:allow-other-keys)
126 ;; One of the tests tests timezone-dependent functions.
127 (setenv "TZDIR"
128 (search-input-directory inputs "share/zoneinfo"))
129
130 ;; Make sure the TERM environment variable is set for the tests.
131 (setenv "TERM" "xterm")
132
133 ;; Ignore failure of some flaky tests.
134 (setenv "TEST_MAY_FAIL"
135 (string-join
136 (list "Test_diff_overlapped_diff_blocks_will_be_merged"
137 "Test_linematch_diff_grouping")
138 ","))))
139 (add-before 'check 'skip-or-fix-failing-tests
140 (lambda _
141 ;; This test failure is shared between BSD and Guix.
142 (with-fluids ((%default-port-encoding #f))
143 (substitute* "src/testdir/test_writefile.vim"
144 (("!has\\('bsd'\\)") "0")))
145
146 ;; These tests crash the build environment.
147 (substitute* "src/testdir/Make_all.mak"
148 ((".*test_plugin_glvs.*") ""))
149
150 ;; These tests check how the terminal looks after executing some
151 ;; actions. The path of the bash binary is shown, which results in
152 ;; a difference being detected. Patching the expected result is
153 ;; non-trivial due to the special format used, so skip the test.
154 (substitute* "src/testdir/test_messages.vim"
155 ((".*Test_echo_verbose_system.*" line)
156 (string-append line "return\n")))
157 (substitute* "src/testdir/test_normal.vim"
158 ((".*Test_mouse_shape_after_cancelling_gr.*" line)
159 (string-append line "return\n")))
160 (substitute* "src/testdir/test_terminal.vim"
161 ((".*Test_open_term_from_cmd.*" line)
162 (string-append line "return\n"))
163 ((".*Test_terminal_postponed_scrollback.*" line)
164 (string-append line "return\n"))
165 ((".*Test_combining_double_width.*" line)
166 (string-append line "return\n")))
167 (substitute* "src/testdir/test_popupwin.vim"
168 ((".*Test_popup_drag_termwin.*" line)
169 (string-append line "return\n")))
170 (with-fluids ((%default-port-encoding #f))
171 (substitute* "src/testdir/test_writefile.vim"
172 ;; No setfattr in the build environment.
173 ((".*Test_write_with_xattr_support.*" line)
174 (string-append line "return\n"))))
175 ;; These depend on full bash.
176 (with-directory-excursion "runtime/syntax/testdir/input"
177 (for-each delete-file
178 (list "sh_11.sh"
179 "sh_12.sh"
180 "sh_14.sh"
181 "sh_sundrous.bash")))))
182 (add-before 'install 'fix-installman.sh
183 (lambda _
184 (substitute* "src/installman.sh"
185 (("/bin/sh")
186 (which "sh")))))
187 (add-after 'install 'install-guix.vim
188 (lambda* (#:key inputs outputs #:allow-other-keys)
189 (let ((vimdir (string-append (assoc-ref outputs "out") "/share/vim")))
190 (mkdir-p vimdir)
191 (copy-file (assoc-ref inputs "guix.vim")
192 (string-append vimdir "/vimrc"))))))))
193 (inputs
194 (list gawk ncurses perl tcsh)) ; For runtime/tools/vim32
195 (native-inputs
196 `(("libtool" ,libtool)
197 ("guix.vim" ,(search-auxiliary-file "guix.vim"))
198
199 ;; For tests.
200 ("tzdata" ,tzdata-for-tests)))
201 (home-page "https://www.vim.org/")
202 (synopsis "Text editor based on vi")
203 ;; The description shares language with the vim-full package. When making
204 ;; changes, check if the other description also needs to be updated.
205 (description
206 "Vim is a highly configurable text editor built to enable efficient text
207editing. It is an improved version of the vi editor distributed with most UNIX
208systems.
209
210Vim is often called a \"programmer's editor,\" and so useful for programming
211that many consider it an entire IDE. It's not just for programmers, though.
212Vim is perfect for all kinds of text editing, from composing email to editing
213configuration files.")
214 (license license:vim)))
215
216(define-public xxd
217 (package (inherit vim)
218 (name "xxd")
219 (arguments
220 (list
221 #:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
222 #:tests? #f ; there are none
223 #:phases
224 #~(modify-phases %standard-phases
225 (delete 'configure)
226 (add-after 'unpack 'chdir
227 (lambda _
228 (chdir "src/xxd")))
229 (replace 'install
230 (lambda* (#:key outputs #:allow-other-keys)
231 (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
232 (install-file "xxd" bin)))))))
233 (inputs `())
234 (native-inputs `())
235 (synopsis "Hexdump utility from vim")
236 (description "This package provides the Hexdump utility xxd that comes
237with the editor vim.")))
238
239(define-public vim-full
240 (package
241 (inherit vim)
242 (name "vim-full")
243 (arguments
244 `(#:configure-flags
245 (list (string-append "--with-lua-prefix="
246 (assoc-ref %build-inputs "lua"))
247 "--with-features=huge"
248 "--enable-python3interp=yes"
249 "--enable-perlinterp=yes"
250 "--enable-rubyinterp=yes"
251 "--enable-tclinterp=yes"
252 "--enable-luainterp=yes"
253 "--enable-cscope"
254 "--enable-sniff"
255 "--enable-multibyte"
256 "--enable-xim"
257 "--disable-selinux"
258 "--enable-gui")
259 ,@(substitute-keyword-arguments (package-arguments vim)
260 ((#:phases phases)
261 `(modify-phases ,phases
262 (add-before 'check 'skip-some-more-tests
263 (lambda _
264 ;; Fontconfig can't figure out its cache directory
265 (substitute* "src/testdir/test_startup.vim"
266 ((".*Test_progname.*" line)
267 (string-append line "return\n")))))
268 (add-before 'check 'start-xserver
269 (lambda* (#:key inputs #:allow-other-keys)
270 ;; Some tests require an X server, but does not start one.
271 (let ((xorg-server (assoc-ref inputs "xorg-server"))
272 (display ":1"))
273 (setenv "DISPLAY" display)
274 (zero? (system (string-append xorg-server "/bin/Xvfb "
275 display " &")))))))))))
276 (native-inputs
277 (modify-inputs (package-native-inputs vim)
278 (prepend pkg-config xorg-server-for-tests)))
279 (inputs
280 `(("acl" ,acl)
281 ("at-spi2-core" ,at-spi2-core)
282 ("attr" ,attr)
283 ("cairo" ,cairo)
284 ("fontconfig" ,fontconfig)
285 ("freetype" ,freetype)
286 ("gdk-pixbuf" ,gdk-pixbuf)
287 ("gettext" ,gettext-minimal)
288 ("glib" ,glib)
289 ("gpm" ,gpm)
290 ("gtk" ,gtk+-2)
291 ("harfbuzz" ,harfbuzz)
292 ("libice" ,libice)
293 ("libpng" ,libpng)
294 ("libsm" ,libsm)
295 ("libx11" ,libx11)
296 ("libxdmcp" ,libxdmcp)
297 ("libxt" ,libxt)
298 ("libxpm" ,libxpm)
299 ("lua" ,lua)
300 ("pango" ,pango)
301 ("pixman" ,pixman)
302 ("python-3" ,python)
303 ("ruby" ,ruby)
304 ("tcl" ,tcl)
305 ,@(package-inputs vim)))
306 ;; The description shares language with the vim package. When making
307 ;; changes, check if the other description also needs to be updated.
308 (description "Vim is a highly configurable text editor built to enable efficient text
309editing. It is an improved version of the vi editor distributed with most UNIX
310systems.
311
312Vim is often called a \"programmer's editor,\" and so useful for programming
313that many consider it an entire IDE. It's not just for programmers, though.
314Vim is perfect for all kinds of text editing, from composing email to editing
315configuration files.
316
317This package provides a version of Vim with many optional features enabled.
318It includes a graphical interface, @command{gvim}, and support for plugins
319written in the Python 3, Perl, Ruby, Tcl, and Lua programming languages.")))
320
321(define-public vim-neocomplete
322 (package
323 (name "vim-neocomplete")
324 (version "2.1")
325 (source
326 (origin
327 (method git-fetch)
328 (uri (git-reference
329 (url "https://github.com/Shougo/neocomplete.vim")
330 (commit (string-append "ver." version))))
331 (file-name (git-file-name name version))
332 (sha256
333 (base32
334 "1h6sci5mhdfg6sjsjpi8l5li02hg858zcayiwl60y9j2gqnd18lv"))))
335 (build-system vim-build-system)
336 (arguments
337 (list #:plugin-name "neocomplete"))
338 (synopsis "Next generation completion framework for Vim")
339 (description
340 "@code{neocomplete}, an abbreviation of 'neo-completion with cache',
341is a plugin for Vim.
342It provides keyword completion system by maintaining a cache of keywords in
343the current buffer. Neocomplete can be customized easily and has many more
344features than Vim's built-in completion.")
345 (home-page "https://github.com/Shougo/neocomplete.vim/")
346 (license license:expat)))
347
348;; There are no release tarballs.
349(define-public vim-neosnippet-snippets
350 (let ((commit "8e2b1c0cab9ed9a832b3743dbb65e9966a64331a")
351 (revision "1"))
352 (package
353 (name "vim-neosnippet-snippets")
354 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
355 (source
356 (origin
357 (method git-fetch)
358 (uri (git-reference
359 (url "https://github.com/Shougo/neosnippet-snippets")
360 (commit commit)))
361 (file-name (string-append name "-" version "-checkout"))
362 (sha256
363 (base32
364 "151wpvbj6jb9jdkbhj3b77f5sq7y328spvwfbqyj1y32rg4ifmc6"))))
365 (build-system vim-build-system)
366 (arguments
367 (list #:plugin-name "neosnippet")) ; Extends neosnippet
368 (synopsis "Snippets for neosnippet")
369 (description
370 "@code{neosnippet-snippets} provides standard snippets for the Vim plugin
371@code{neosnippet}. Snippets are small templates for commonly used code that
372you can fill in on the fly.")
373 (home-page "https://github.com/Shougo/neosnippet-snippets")
374 (license license:expat))))
375
376;; The released tarball is too old for our Vim.
377(define-public vim-neosnippet
378 (let ((commit "1bd7e23c79b73da16eb0c9469b25c376d3594583")
379 (revision "1"))
380 (package
381 (name "vim-neosnippet")
382 (version (string-append "4.2-" revision "." (string-take commit 7)))
383 (source
384 (origin
385 (method git-fetch)
386 (uri (git-reference
387 (url "https://github.com/Shougo/neosnippet.vim/")
388 (commit commit)))
389 (file-name (string-append name "-" version "-checkout"))
390 (sha256
391 (base32
392 "0k80syscmpnj38ks1fq02ds59g0r4jlg9ll7z4qc048mgi35alw5"))))
393 (build-system vim-build-system)
394 (arguments
395 (list #:plugin-name "neosnippet"))
396 (synopsis "Snippet support for Vim")
397 (description
398 "@code{neosnippet}, is a plugin for Vim which adds snippet support to Vim.
399Snippets are small templates for commonly used code that you can fill in on
400the fly. To use snippets can increase your productivity in Vim a lot.
401The functionality of this plug-in is quite similar to plug-ins like
402@code{snipMate.vim} or @code{snippetsEmu.vim}. But since you can choose
403snippets with the neocomplcache / neocomplete interface, you might have less
404trouble using them, because you do not have to remember each snippet name.")
405 (home-page "https://github.com/Shougo/neosnippet.vim/")
406 (license license:expat))))
407
408(define-public vim-scheme
409 (let ((commit "e22fc8e199ef52f2efacd08e71c3add90d83b375")
410 (revision "3"))
411 (package
412 (name "vim-scheme")
413 (version (git-version "0.0.0" revision commit))
414 (source
415 (origin
416 (method git-fetch)
417 (uri (git-reference
418 (url "https://git.foldling.org/vim-scheme.git")
419 (commit commit)))
420 (file-name (git-file-name name version))
421 (sha256
422 (base32
423 "04h946vr4f8wxap3wzqs69y2v8n50g2zbk22jsg2kxr4c01z5cbw"))))
424 (build-system vim-build-system)
425 (arguments
426 (list #:plugin-name "vim-scheme"))
427 (synopsis "Scheme syntax for Vim")
428 (description
429 "@code{vim-scheme} provides Scheme support for Vim (R7RS and CHICKEN).")
430 (home-page "https://foldling.org/git/vim-scheme.git/")
431 (license license:unlicense))))
432
433(define-public vim-luna
434 (let ((commit "633619953dcf8577168e255230f96b05f28d6371")
435 (revision "1"))
436 (package
437 (name "vim-luna")
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/notpratheek/vim-luna")
444 (commit commit)))
445 (file-name (string-append name "-" version "-checkout"))
446 (sha256
447 (base32
448 "0ka3qbhsh8lix1vyj4678j7dnchkd8khhirrnn3aylxxf8fpqyg8"))))
449 (build-system vim-build-system)
450 (arguments
451 (list #:plugin-name "luna"))
452 (synopsis "Dark color theme for Vim")
453 (description
454 "@code{vim-luna} is a dark color theme for Vim.")
455 (home-page "https://github.com/notpratheek/vim-luna")
456 (license license:expat))))
457
458;; There are no tarball releases.
459(define-public vim-context-filetype
460 (let ((commit "5e85f8cae26806f391aefe2661791a6de53bcea2")
461 (revision "1"))
462 (package
463 (name "vim-context-filetype")
464 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
465 (source
466 (origin
467 (method git-fetch)
468 (uri (git-reference
469 (url "https://github.com/Shougo/context_filetype.vim")
470 (commit commit)))
471 (file-name (string-append name "-" version "-checkout"))
472 (sha256
473 (base32
474 "0alvrfhmd91zkd9h83s8wvgyq4iakcf6rybsyjd369qbgpcqky89"))))
475 (build-system vim-build-system)
476 (arguments
477 (list #:plugin-name "context_filetype"))
478 (synopsis "Context filetype library for Vim")
479 (description
480 "@code{vim-context-filetype} is context filetype library for Vim script.")
481 (home-page "https://github.com/Shougo/context_filetype.vim")
482 (license license:expat)))) ; ??? check again
483
484(define-public vim-coqtail
485 (let ((commit "d77080e17787afe9ad0366d86327658da36febbb")
486 (revision "1"))
487 (package
488 (name "vim-coqtail")
489 (version (git-version "1.7.1" revision commit))
490 (source (origin
491 (method git-fetch)
492 (uri (git-reference
493 (url "https://github.com/whonore/Coqtail")
494 (commit commit)))
495 (file-name (git-file-name name version))
496 (sha256
497 (base32
498 "03qq50mas5dk3aj1rbv1f0x68rfa9b07cacj12sxp76sda9c0prz"))))
499 (build-system vim-build-system)
500 (arguments
501 `(#:plugin-name "coqtail"
502 #:vim ,vim-full ; Plugin needs Python 3.
503 #:phases
504 (modify-phases %standard-phases
505 (add-before 'install 'check
506 (lambda* (#:key inputs native-inputs tests? vim? neovim?
507 #:allow-other-keys)
508 (when tests?
509 (display "Running Python unit tests.\n")
510 (setenv "PYTHONPATH" (string-append (getcwd) "/python"))
511 (invoke "pytest" "-q" "tests/unit")
512
513 (display "Running Python Coq tests.\n")
514 (invoke "pytest" "-q" "tests/coq")
515
516 (display "Running Vim unit tests.\n")
517 (let* ((vim-vader (assoc-ref (or native-inputs inputs)
518 "vim-vader"))
519 (vader-path (string-append
520 vim-vader
521 (if vim?
522 "/share/vim/vimfiles"
523 "/share/nvim/site")
524 "/pack/guix/start/vader"))
525 (command `(,@(if vim? '("vim" "-E") '())
526 ,@(if neovim? '("nvim" "--headless") '())
527 "-Nu" "vimrc"
528 "-c" "Vader! *.vader")))
529 (with-directory-excursion "tests/vim"
530 (when neovim?
531 (setenv "HOME" (getcwd)))
532 (setenv "VADER_PATH" vader-path)
533 (apply invoke command)))
534
535 ;; Remove __pycache__ files generated during testing so that
536 ;; they don't get installed.
537 (delete-file-recursively "python/__pycache__")))))))
538 (native-inputs
539 (list coq-for-coqtail
540 python-pytest
541 vim-vader))
542 (propagated-inputs (list coq coq-ide-server))
543 (synopsis "Interactive Coq proofs in Vim")
544 (description "Coqtail enables interactive Coq proof development in Vim
545similar to CoqIDE or ProofGeneral.")
546 (home-page "https://github.com/whonore/Coqtail")
547 (license license:expat))))
548
549(define-public neovim-coqtail
550 (package
551 (inherit vim-coqtail)
552 (name "neovim-coqtail")
553 (synopsis "Interactive Coq proofs in Neovim")
554 (description "Coqtail enables interactive Coq proof development in Neovim
555similar to CoqIDE or ProofGeneral.")
556 (native-inputs
557 (modify-inputs (package-native-inputs vim-coqtail)
558 (replace "vim-vader" neovim-vader)
559 (append python-minimal)))))
560
561(define-public vim-fugitive
562 (package
563 (name "vim-fugitive")
564 (version "3.7")
565 (source
566 (origin
567 (method git-fetch)
568 (uri (git-reference
569 (url "https://github.com/tpope/vim-fugitive")
570 (commit (string-append "v" version))))
571 (file-name (git-file-name name version))
572 (sha256
573 (base32 "138290g2aph1jjhaza6biky5qi4ka6435s01bwxivllgb53g3irc"))))
574 (build-system vim-build-system)
575 (arguments
576 (list #:plugin-name "fugitive"))
577 (home-page "https://github.com/tpope/vim-fugitive")
578 (synopsis "Vim plugin to work with Git")
579 (description "Vim-fugitive is a wrapper for Vim that complements the
580command window, where you can stage and review your changes before the next
581commit or run any Git arbitrary command.")
582 (license license:vim))) ; distributed under the same license as vim
583
584(define-public vim-airline
585 (package
586 (name "vim-airline")
587 (version "0.11")
588 (source
589 (origin
590 (method git-fetch)
591 (uri (git-reference
592 (url "https://github.com/vim-airline/vim-airline")
593 (commit (string-append "v" version))))
594 (file-name (git-file-name name version))
595 (sha256
596 (base32
597 "1aksmr73648pvyc75pfdz28k2d4ky52rn7xiwcv7lz87q3vqld7k"))))
598 (build-system vim-build-system)
599 (arguments
600 (list #:plugin-name "airline"))
601 (synopsis "Statusline for Vim")
602 (description
603 "@code{vim-airline} is an extensible statusline for Vim.
604It can be extended and customized with themes, works with unicode fonts
605and powerline symbols, etc.")
606 (home-page "https://github.com/vim-airline/vim-airline")
607 (license license:expat)))
608
609;; There are no tarball releases.
610(define-public vim-airline-themes
611 (let ((commit "e6f233231b232b6027cde6aebeeb18d9138e5324")
612 (revision "2"))
613 (package
614 (name "vim-airline-themes")
615 (version (git-version "0.0.0" revision commit))
616 (source
617 (origin
618 (method git-fetch)
619 (uri (git-reference
620 (url "https://github.com/vim-airline/vim-airline-themes")
621 (commit commit)))
622 (file-name (git-file-name name version))
623 (sha256
624 (base32
625 "1sb7nb7j7bz0pv1c9bgdy0smhr0jk2b1vbdv9yzghg5lrknpsbr6"))))
626 (build-system vim-build-system)
627 (arguments
628 (list #:plugin-name "airline-themes"))
629 (synopsis "Collection of themes for Vim-airline")
630 (description
631 "@code{vim-airline-themes} is a collection of themes for @code{vim-airline}.")
632 (home-page "https://github.com/vim-airline/vim-airline-themes")
633 (license license:expat))))
634
635(define-public vim-syntastic
636 (package
637 (name "vim-syntastic")
638 (version "3.10.0")
639 (source
640 (origin
641 (method git-fetch)
642 (uri (git-reference
643 (url "https://github.com/vim-syntastic/syntastic")
644 (commit version)))
645 (file-name (git-file-name name version))
646 (sha256
647 (base32 "0j91f72jaz1s6aw1hpjiz30vk2ds2aqd9gisk91grsldy6nz6hhz"))))
648 (build-system vim-build-system)
649 (arguments
650 (list #:plugin-name "syntastic"))
651 (synopsis "Syntax checking plugin for Vim")
652 (description
653 "Vim-syntastic is a syntax checking plugin for Vim. It runs files through
654external syntax checkers and displays any resulting errors to the user. This
655can be done on demand, or automatically as files are saved. If syntax errors
656are detected, the user is notified.")
657 (home-page "https://github.com/vim-syntastic/syntastic")
658 (license license:wtfpl2)))
659
660(define-public neovim-syntastic
661 (package
662 (inherit vim-syntastic)
663 (name "neovim-syntastic")
664 (synopsis "Syntax checking plugin for Neovim")
665 (description
666 "Vim-syntastic is a syntax checking plugin for Neovim. It runs files through
667external syntax checkers and displays any resulting errors to the user. This
668can be done on demand, or automatically as files are saved. If syntax errors
669are detected, the user is notified.")))
670
671(define-public vim-solarized
672 (let ((commit "62f656a02f93c5190a8753159e34b385588d5ff3")
673 (revision "1"))
674 (package
675 (name "vim-solarized")
676 (version (git-version "1.0.0beta1" revision commit))
677 (source
678 (origin
679 (method git-fetch)
680 (uri (git-reference
681 (url "https://github.com/altercation/solarized")
682 (commit commit)))
683 (file-name (git-file-name name version))
684 (sha256
685 (base32 "0001mz5v3a8zvi3gzmxhi3yrsb6hs7qf6i497arsngnvj2cwn61d"))))
686 (build-system vim-build-system)
687 (arguments
688 (list
689 #:plugin-name "solarized"
690 #:phases
691 #~(modify-phases %standard-phases
692 (add-after 'unpack 'chdir
693 (lambda _
694 (chdir "vim-colors-solarized"))))))
695 (home-page "https://github.com/altercation/vim-colors-solarized")
696 (synopsis "Solarized color scheme for Vim")
697 (description
698 "This package provides the Solarized theme as a Vim color scheme.
699
700Solarized is a 16-color palette comprising 8 monotones and 8 accent
701colors. It was designed for use with both terminal and GUI applications, and
702has a dark and a light mode.
703
704Based on CIELAB lightness relationships between colors, this theme reduces
705brightness contrast but retains contrasting hues based on colorwheel relations
706for syntax highlighting readability.
707
708It keeps the same selective contrast relationships and overall feel when
709switching between the light and dark background modes.")
710 (license license:expat))))
711
712(define-public vim-rainbow
713 (package
714 (name "vim-rainbow")
715 (version "5c8094b56568aeaeda9cc09b3ebc6d2ed95e1ad8")
716 (source
717 (origin
718 (method git-fetch)
719 (uri (git-reference
720 (url "https://github.com/mason1920/rainbow")
721 (commit version)))
722 (file-name (git-file-name name version))
723 (sha256
724 (base32 "1jya8wwlkmgs89hndrq6gsaskhk9g0fh62wdib8v9vz2x5g3738z"))))
725 (build-system vim-build-system)
726 (arguments
727 (list
728 #:plugin-name "rainbow"
729 #:mode "opt"
730 #:phases
731 #~(modify-phases %standard-phases
732 (add-after 'unpack 'chdir
733 (lambda _
734 (chdir "opt/rainbow"))))))
735 (home-page "https://github.com/mason1920/rainbow")
736 (synopsis "Rainbow Parentheses Improved")
737 (description
738 "As everyone knows, the most complex codes were composed of a mass of different
739kinds of parentheses (typically: lisp). This plugin will help you read these
740codes by showing different levels of parentheses in different colors.")
741 (license license:asl2.0)))
742
743(define-public editorconfig-vim
744 (package
745 (name "editorconfig-vim")
746 (version "1.1.1")
747 (source
748 (origin
749 (method git-fetch)
750 (uri (git-reference
751 (url "https://github.com/editorconfig/editorconfig-vim")
752 (commit (string-append "v" version))))
753 (file-name (git-file-name name version))
754 (sha256
755 (base32
756 "0mp80bi2m56bb93szw87vy6q5s85yk9g91sl4pr51316rgdv5kkv"))))
757 (build-system vim-build-system)
758 (arguments
759 (list
760 #:plugin-name "editorconfig"
761 #:vim? #t))
762 (home-page "https://editorconfig.org/")
763 (synopsis "EditorConfig plugin for Vim")
764 (description "EditorConfig makes it easy to maintain the correct coding
765style when switching between different text editors and between different
766projects. The EditorConfig project maintains a file format and plugins for
767various text editors which allow this file format to be read and used by those
768editors.")
769 (license license:bsd-2)))
770
771(define-public neovim-packer
772 (let ((commit "3a9f9801f683946b9f1047d8f4bf9946c29e927d")
773 (revision "0"))
774 (package
775 (name "neovim-packer")
776 (version (git-version "0.0.0" revision commit))
777 (source (origin
778 (method git-fetch)
779 (uri (git-reference
780 (url "https://github.com/wbthomason/packer.nvim")
781 (commit commit)))
782 (file-name (git-file-name name version))
783 (sha256
784 (base32
785 "1xn08z3a21mgfvp5i1nv57jnldwxwnl5nkryiff3zc99b1mizigp"))))
786 (build-system vim-build-system)
787 (arguments
788 (list #:plugin-name "packer.nvim"))
789 (home-page "https://github.com/wbthomason/packer.nvim")
790 (synopsis "Plugin manager for Neovim")
791 (description
792 "This package provides a plugin manager for Neovim, inspired by Emacs's
793@code{use-package}. It's written in Lua, supports Luarocks dependencies, and
794is based on Vim's builtin plugin support.")
795 (license license:expat))))
796
797(define-public neovim
798 (package
799 (name "neovim")
800 (version "0.11.5")
801 (source (origin
802 (method git-fetch)
803 (uri (git-reference
804 (url "https://github.com/neovim/neovim")
805 (commit (string-append "v" version))))
806 (file-name (git-file-name name version))
807 (sha256
808 (base32
809 "1b524vi44gkcsyy8w4jggvprwdsgy0gjprgxpyhh0dmqm47c0c48"))))
810 (build-system cmake-build-system)
811 (arguments
812 (list #:tests? #f
813 #:modules
814 '((srfi srfi-26) (guix build cmake-build-system)
815 (guix build utils))
816 #:configure-flags
817 #~(list #$@(if (member (if (%current-target-system)
818 (gnu-triplet->nix-system (%current-target-system))
819 (%current-system))
820 (package-supported-systems luajit))
821 '()
822 '("-DPREFER_LUA:BOOL=YES")))
823 #:phases
824 #~(modify-phases %standard-phases
825 (add-after 'unpack 'set-lua-paths
826 (lambda* _
827 (let* ((lua-version "5.1")
828 (lua-cpath-spec (lambda (prefix)
829 (let ((path (string-append
830 prefix
831 "/lib/lua/"
832 lua-version)))
833 (string-append
834 path
835 "/?.so;"
836 path
837 "/?/?.so"))))
838 (lua-path-spec (lambda (prefix)
839 (let ((path (string-append prefix
840 "/share/lua/"
841 lua-version)))
842 (string-append path "/?.lua;"
843 path "/?/?.lua"))))
844 (lua-inputs (list (or #$(this-package-input "lua")
845 #$(this-package-input "luajit"))
846 #$lua5.1-luv
847 #$lua5.1-lpeg
848 #$lua5.1-bitop
849 #$lua5.1-libmpack)))
850 (setenv "LUA_PATH"
851 (string-join (map lua-path-spec lua-inputs) ";"))
852 (setenv "LUA_CPATH"
853 (string-join (map lua-cpath-spec lua-inputs) ";"))
854 #t)))
855 (add-after 'unpack 'prevent-embedding-gcc-store-path
856 (lambda _
857 ;; nvim remembers its build options, including the compiler with
858 ;; its complete path. This adds gcc to the closure of nvim, which
859 ;; doubles its size. We remove the reference here.
860 (substitute* "cmake.config/versiondef.h.in"
861 (("\\$\\{CMAKE_C_COMPILER\\}") "/gnu/store/.../bin/gcc"))
862 #t))
863 (add-after 'install 'install-guix-nvim.vim
864 (lambda* (#:key outputs #:allow-other-keys)
865 (let ((nvimdir (string-append (assoc-ref outputs "out")
866 "/share/nvim")))
867 (mkdir-p nvimdir)
868 (copy-file
869 #$(local-file (search-auxiliary-file "guix-nvim.vim"))
870 (string-append nvimdir "/sysinit.vim"))))))))
871 (inputs (list libuv-for-luv
872 msgpack-c
873 libtermkey
874 libvterm
875 unibilium
876 utf8proc
877 jemalloc
878 (if (member (if (%current-target-system)
879 (gnu-triplet->nix-system (%current-target-system))
880 (%current-system))
881 (package-supported-systems luajit))
882 luajit
883 lua-5.1)
884 lua5.1-luv
885 lua5.1-lpeg
886 lua5.1-bitop
887 lua5.1-libmpack
888 tree-sitter))
889 (native-inputs (list pkg-config gettext-minimal gperf))
890 (home-page "https://neovim.io")
891 (synopsis "Fork of vim focused on extensibility and agility")
892 (description
893 "Neovim is a project that seeks to aggressively
894refactor Vim in order to:
895
896@itemize
897@item Simplify maintenance and encourage contributions
898@item Split the work between multiple developers
899@item Enable advanced external UIs without modifications to the core
900@item Improve extensibility with a new plugin architecture
901@end itemize
902")
903 ;; Neovim is licensed under the terms of the Apache 2.0 license,
904 ;; except for parts that were contributed under the Vim license.
905 (license (list license:asl2.0 license:vim))))
906
907(define-public eovim
908 (package
909 (name "eovim")
910 (version "0.2.0")
911 (source
912 (origin
913 (method git-fetch)
914 (uri (git-reference
915 (url "https://github.com/jeanguyomarch/eovim/")
916 (commit (string-append "v" version))))
917 (file-name (git-file-name name version))
918 (sha256
919 (base32 "06b7crmz3wvvq15ncl0jk20s8j1pmna2jin0k5y5n5qxpafbgp3k"))))
920 (build-system cmake-build-system)
921 (arguments
922 '(#:tests? #false ;no tests
923 #:phases
924 (modify-phases %standard-phases
925 (add-after 'unpack 'help-cmake-find-msgpack-c
926 (lambda _
927 ;; Patch the build system so that it can find the modern
928 ;; 'msgpack-c' named pkg-config file (see:
929 ;; https://github.com/jeanguyomarch/eovim/issues/73).
930 (substitute* "cmake/Modules/FindMsgPack.cmake"
931 (("MSGPACK QUIET msgpack")
932 "MSGPACK QUIET msgpack-c msgpack"))))
933 (add-after 'configure 'reference-nvim
934 (lambda* (#:key inputs #:allow-other-keys)
935 (let ((nvim (search-input-file inputs "/bin/nvim")))
936 ;; This substitution should change one line, and replaces the default
937 ;; value in the struct of options with an absolute store reference.
938 (substitute* "../source/src/main.c"
939 (("(^[[:blank:]]+\\.nvim = \")nvim" _ start)
940 (string-append start nvim))))))
941 (add-before 'build 'set-home
942 (lambda _ (setenv "HOME" "/tmp"))))))
943 (native-inputs (list pkg-config))
944 (inputs (list efl msgpack-c neovim))
945 (home-page "https://github.com/jeanguyomarch/eovim/")
946 (synopsis "EFL GUI for Neovim")
947 (description "Graphical Neovim interface based on the @acronym{EFL, Enlightenment
948Foundation Libraries} toolkit. Its features include customizable appearance
949and support for fonts with ligatures.")
950 (license license:expat)))
951
952(define-public vifm
953 (package
954 (name "vifm")
955 (version "0.14.3")
956 (source
957 (origin
958 (method url-fetch)
959 (uri (list
960 (string-append "https://github.com/vifm/vifm/releases/download/v"
961 version "/vifm-" version ".tar.bz2")
962 (string-append "https://sourceforge.net/projects/vifm/files/vifm/"
963 "vifm-" version ".tar.bz2")))
964 (sha256
965 (base32
966 "03j4ygdrywr0kdjp755y3sj9nlay6xb74zwlkyga19fn108vxa8n"))))
967 (build-system gnu-build-system)
968 (arguments
969 '(#:configure-flags '("--disable-build-timestamp")
970 #:phases
971 (modify-phases %standard-phases
972 (add-after 'patch-source-shebangs 'patch-test-shebangs
973 (lambda _
974 (substitute* (cons* "data/vim/plugin/vifm.vim"
975 "src/cfg/config.c"
976 (find-files "tests" "\\.c$"))
977 (("/bin/sh") (which "sh"))
978 (("/bin/bash") (which "bash")))
979 ;; This test segfaults
980 (substitute* "tests/Makefile"
981 ((" menus misc") ""))))
982 (add-after 'install 'install-vim-plugin-files
983 (lambda* (#:key outputs #:allow-other-keys)
984 (let* ((out (assoc-ref outputs "out"))
985 (vifm (string-append out "/share/vifm"))
986 (vimfiles (string-append
987 out "/share/vim/vimfiles/pack/guix/start/vifm")))
988 (copy-recursively (string-append vifm "/colors")
989 (string-append vimfiles "/colors"))
990 (copy-recursively (string-append vifm "/vim")
991 vimfiles)
992 (delete-file-recursively (string-append vifm "/vim"))))))))
993 (native-inputs
994 (list groff)) ; for the documentation
995 (inputs
996 (list libx11 ncurses perl))
997 (home-page "https://vifm.info/")
998 (synopsis "Flexible vi-like file manager using ncurses")
999 (description "Vifm is a file manager providing a @command{vi}-like usage
1000experience. It has similar keybindings and modes (e.g. normal, command line,
1001visual). The interface uses ncurses, thus vifm can be used in text-only
1002environments. It supports a wide range of features, some of which are known
1003from the @command{vi}-editor:
1004@enumerate
1005@item utf8 support
1006@item user mappings (almost like in @code{vi})
1007@item ranges in command
1008@item line commands
1009@item user defined commands (with support for ranges)
1010@item registers
1011@item operation undoing/redoing
1012@item fuse file systems support
1013@item trash
1014@item multiple files renaming
1015@item support of filename modifiers
1016@item colorschemes support
1017@item file name color according to file type
1018@item path specific colorscheme customization
1019@item bookmarks
1020@item operation backgrounding
1021@item customizable file viewers
1022@item handy @code{less}-like preview mode
1023@item filtering out and searching for files using regular expressions
1024@item one or two panes view
1025@end enumerate
1026With the package comes a plugin to use vifm as a vim file selector.")
1027 (license license:gpl2+)))
1028
1029(define-public python-pynvim
1030 (package
1031 (name "python-pynvim")
1032 (version "0.6.0")
1033 (source
1034 (origin
1035 (method git-fetch)
1036 (uri (git-reference
1037 (url "https://github.com/neovim/pynvim")
1038 (commit version)))
1039 (file-name (git-file-name name version))
1040 (sha256
1041 (base32 "0k98c0i14z3adx6l4ncf2zmzk9aykqkdnws6qw4m0yj5z61zh6av"))))
1042 (build-system pyproject-build-system)
1043 (native-inputs
1044 (list neovim
1045 python-pytest
1046 python-pytest-timeout
1047 python-setuptools))
1048 (propagated-inputs (list python-greenlet python-msgpack))
1049 (home-page "https://github.com/neovim/pynvim")
1050 (synopsis "Python client and plugin host for neovim")
1051 (description
1052 "Pynvim implements support for python plugins in neovim. It also works
1053as a library for connecting to and scripting neovim processes through its
1054msgpack-rpc API.")
1055 (license license:asl2.0)))
1056
1057(define-public vim-guix-vim
1058 (package
1059 (name "vim-guix-vim")
1060 (version "0.4.1")
1061 (source (origin
1062 (method git-fetch)
1063 (uri (git-reference
1064 (url "https://git.sr.ht/~efraim/guix.vim")
1065 (commit version)))
1066 (file-name (git-file-name name version))
1067 (sha256
1068 (base32
1069 "0ii2v94wdh8wn1qrgbn91cxzk3gi09awgxydf2bb6z7b302absh8"))))
1070 (build-system vim-build-system)
1071 (arguments
1072 (list #:plugin-name "guix"))
1073 (home-page "https://git.sr.ht/~efraim/guix.vim")
1074 (synopsis "Guix integration in Vim")
1075 (description "This package provides support for GNU Guix in Vim.")
1076 (license license:vim)))
1077
1078(define-public vim-asyncrun
1079 (package
1080 (name "vim-asyncrun")
1081 (version "2.12.4")
1082 (source (origin
1083 (method git-fetch)
1084 (uri (git-reference
1085 (url "https://github.com/skywind3000/asyncrun.vim")
1086 (commit version)))
1087 (file-name (git-file-name name version))
1088 (sha256
1089 (base32
1090 "0hyz3bgbwmg85534ab71w2sr6fj94mz498ayn9bvhn4g7y6c951n"))))
1091 (build-system vim-build-system)
1092 (arguments
1093 (list
1094 #:plugin-name "asyncrun"))
1095 (home-page "https://github.com/skywind3000/asyncrun.vim")
1096 (synopsis "Run Async Shell Commands in Vim")
1097 (description "This plugin takes the advantage of new APIs in Vim 8 (and
1098NeoVim) to enable you to run shell commands in background and read output in the
1099quickfix window in realtime.")
1100 (license license:expat)))
1101
1102(define-public neovim-asyncrun
1103 (package
1104 (inherit vim-asyncrun)
1105 (name "neovim-asyncrun")))
1106
1107(define-public vim-dispatch
1108 ;; Last release was in June 2019.
1109 (let ((commit "4c695bc052cad2ae6b980aebbe48d046466e27ae")
1110 (revision "1"))
1111 (package
1112 (name "vim-dispatch")
1113 (version (git-version "1.8" revision commit))
1114 (source
1115 (origin
1116 (method git-fetch)
1117 (uri (git-reference
1118 (url "https://github.com/tpope/vim-dispatch")
1119 (commit commit)))
1120 (file-name (git-file-name name version))
1121 (sha256
1122 (base32
1123 "13c63n7gylny2s84k05cpl4cjn070d3qk6yagxny23yanz29hc15"))))
1124 (build-system vim-build-system)
1125 (arguments
1126 (list #:plugin-name "dispatch"))
1127 (home-page "https://github.com/tpope/vim-dispatch")
1128 (synopsis "Asynchronous build and test dispatcher")
1129 (description "Leverage the power of Vim's compiler plugins without being
1130bound by synchronicity. Kick off builds and test suites using one of several
1131asynchronous adapters (including tmux, screen, and a headless mode), and when
1132the job completes, errors will be loaded and parsed automatically.")
1133 (license license:vim))))
1134
1135(define-public neovim-dispatch
1136 (package
1137 (inherit vim-dispatch)
1138 (name "neovim-dispatch")))
1139
1140(define-public vim-gemini-vim
1141 ;; No releases have been tagged.
1142 (let ((commit "f300c54174fc0db8fb68f1bc04307b58612e9630")
1143 (revision "1"))
1144 (package
1145 (name "vim-gemini-vim")
1146 (version (git-version "0.0.0" revision commit))
1147 (source
1148 (origin
1149 (method git-fetch)
1150 (uri (git-reference
1151 (url "https://git.sr.ht/~torresjrjr/gemini.vim")
1152 (commit commit)))
1153 (file-name (git-file-name name version))
1154 (sha256
1155 (base32 "05ffhhfahjqwxyrqmsinsahrs15wknzl2qbj8mznyv319mn2civ2"))))
1156 (build-system vim-build-system)
1157 (arguments
1158 (list #:plugin-name "gemini"))
1159 (home-page "https://git.sr.ht/~torresjrjr/gemini.vim")
1160 (synopsis "Vim syntax highlighting plugin for Gemini")
1161 (description "This Vim plugin provides a Vim syntax highlighting plugin
1162for Gemini Text, the text/gemini media type, as defined in the Gemini protocol
1163specification.")
1164 (license license:gpl3))))
1165
1166(define-public vim-eunuch
1167 (let ((commit "33e875b31c8b811a0a47908884a5e2339106bbe8")
1168 (revision "1"))
1169 (package
1170 (name "vim-eunuch")
1171 (version (git-version "1.2" revision commit))
1172 (source
1173 (origin
1174 (method git-fetch)
1175 (uri (git-reference
1176 (url "https://github.com/tpope/vim-eunuch")
1177 (commit commit)))
1178 (file-name (git-file-name name version))
1179 (sha256
1180 (base32
1181 "1xadb22kd40swmww0qxmmkcpcq6viy8l167pjck5q32hfngll5d3"))))
1182 (build-system vim-build-system)
1183 (arguments
1184 (list #:plugin-name "eunuch"))
1185 (home-page "https://github.com/tpope/vim-eunuch")
1186 (synopsis "Vim sugar for the UNIX shell commands")
1187 (description "Vim sugar for the UNIX shell commands that need it the most.
1188This package includes commands such as @code{SudoWrite} and @code{SudoEdit} and
1189help working on Vim buffers and the files they reference with one command.")
1190 (license license:vim))))
1191
1192(define-public vim-slime
1193 ;; No tagged releases.
1194 (let ((commit "a522fed677e50175f52efc5848cc35209af33216")
1195 (revision "1"))
1196 (package
1197 (name "vim-slime")
1198 (version (git-version "0.0.0" revision commit))
1199 (source
1200 (origin
1201 (method git-fetch)
1202 (uri (git-reference
1203 (url "https://github.com/jpalardy/vim-slime")
1204 (commit commit)))
1205 (file-name (git-file-name name version))
1206 (sha256
1207 (base32 "0k4b629jn6xlxyjxdl3cgm06v9dmx967rqnslv5m82c9kscwpyh4"))))
1208 (build-system vim-build-system)
1209 (arguments
1210 (list #:plugin-name "vim-slime"))
1211 (home-page "https://technotales.wordpress.com/2007/10/03/like-slime-for-vim/")
1212 (synopsis "Vim plugin to give you some slime")
1213 (description "SLIME is an Emacs plugin to turn Emacs into a Lisp IDE. You
1214can type text in a file, send it to a live REPL, and avoid having to reload all
1215your code every time you make a change. @code{Vim-slime} is an attempt at
1216getting some of these features into Vim. It works with any REPL and isn't tied
1217to Lisp.")
1218 (license license:expat))))
1219
1220(define-public vim-vlime
1221 ;; The last tag is very outdated.
1222 (let ((commit "c1ac16c1a50bec4c30da87cd4ce2af12e26fb022")
1223 (revision "1"))
1224 (package
1225 (name "vim-vlime")
1226 (version (git-version "0.4.0" revision commit))
1227 (source
1228 (origin
1229 (method git-fetch)
1230 (uri (git-reference
1231 (url "https://github.com/vlime/vlime")
1232 (commit commit)))
1233 (sha256
1234 (base32 "1dfc1wyjsgkckrklkzvk4whaz3ahaka59rvm7rc724mabmk83pmp"))
1235 (file-name (git-file-name name version))))
1236 (build-system vim-build-system)
1237 (arguments
1238 '(#:plugin-name "vlime"
1239 #:phases
1240 (modify-phases %standard-phases
1241 (add-after 'install 'symlink-files
1242 (lambda* (#:key outputs plugin-name mode #:allow-other-keys)
1243 (with-directory-excursion
1244 (string-append (assoc-ref outputs "out")
1245 "/share/vim/vimfiles/pack/guix/" mode "/" plugin-name)
1246 (for-each (lambda (dir)
1247 (symlink (string-append "./vim/" dir) dir))
1248 (list "after" "autoload" "doc" "ftplugin" "syntax")))))
1249 (add-after 'symlink-files 'install-lisp-files
1250 (lambda* (#:key outputs #:allow-other-keys)
1251 (let* ((out (assoc-ref outputs "out"))
1252 (common-lisp (string-append out "/share/common-lisp")))
1253 ;; Create a symbolic link to the .asd file so that
1254 ;; (asdf:load-system "vlime") finds the system.
1255 (copy-recursively "lisp" (string-append common-lisp "/source/vlime"))
1256 (mkdir-p (string-append common-lisp "/systems/"))
1257 (symlink (string-append common-lisp "/source/vlime/vlime.asd")
1258 (string-append common-lisp "/systems/vlime.asd"))))))))
1259 (propagated-inputs
1260 (list cl-alexandria
1261 cl-slime-swank
1262 cl-usocket
1263 cl-vom
1264 cl-yason))
1265 (home-page "https://github.com/vlime/vlime")
1266 (synopsis "Common Lisp dev environment for Vim (and Neovim)")
1267 (description "Vlime is similar to SLIME for Emacs and SLIMV for Vim. It
1268provides REPL integration, as well as omni-completions, cross reference
1269utilities, a nice inspector, debugger support, and many other great facilities
1270to aid you in your glorious Common Lisp hacking quest.")
1271 (license license:expat))))
1272
1273(define-public vim-paredit
1274 ;; The last tagged version is from August 2013.
1275 (let ((commit "97d51d099523b37bb35cbcf3564cbfb46e66e4ec")
1276 (revision "1"))
1277 (package
1278 (name "vim-paredit")
1279 (version (git-version "0.9.11" revision commit))
1280 (source
1281 (origin
1282 (method git-fetch)
1283 (uri (git-reference
1284 (url "https://github.com/kovisoft/paredit")
1285 (commit commit)))
1286 (file-name (git-file-name name version))
1287 (sha256
1288 (base32 "07d5s20r0ssd7rir45vy0fqlci44gha1a81rcilgar227f3nw328"))))
1289 (build-system vim-build-system)
1290 (arguments
1291 (list #:plugin-name "paredit"))
1292 (home-page "https://github.com/kovisoft/paredit")
1293 (synopsis "Vim plugin for structured editing of Lisp S-expressions")
1294 (description
1295 "Paredit performs structured editing of Lisp S-expressions in Vim.
1296@code{Paredit.vim} is similar to @code{paredit.el} for Emacs.")
1297 ;; License listed in plugin/paredit.vim.
1298 (license license:public-domain))))
1299
1300(define-public vim-surround
1301 (package
1302 (name "vim-surround")
1303 (version "2.2")
1304 (source
1305 (origin
1306 (method git-fetch)
1307 (uri (git-reference
1308 (url "https://github.com/tpope/vim-surround")
1309 (commit (string-append "v" version))))
1310 (file-name (git-file-name name version))
1311 (sha256
1312 (base32 "1b0bd5m5lv1p4d299mrwjfs2gk0zqwyaqdaid9hs9yqlxnr8s5nf"))))
1313 (build-system vim-build-system)
1314 (arguments
1315 (list #:plugin-name "surround"))
1316 (home-page "https://github.com/tpope/vim-surround")
1317 (synopsis "Vim plugin for easy quoting and parenthesizing")
1318 (description
1319 "Surround.vim is all about \"surroundings\": parentheses, brackets,
1320quotes, XML tags, and more. The plugin provides mappings to easily delete,
1321change and add such surroundings in pairs.")
1322 (license license:vim)))
1323
1324(define-public vim-gnupg
1325 (package
1326 (name "vim-gnupg")
1327 (version "2.7.1")
1328 (source
1329 (origin
1330 (method url-fetch)
1331 (uri (string-append "https://github.com/jamessan/vim-gnupg/releases/"
1332 "download/v" version
1333 "/vim-gnupg-v" version ".tar.gz"))
1334 (sha256
1335 (base32 "02w8lgyyh7wgxysvmmcf9ja5c06vrbyh3alzvv97x8cfhrp0skn7"))))
1336 (build-system vim-build-system)
1337 (arguments
1338 (list #:plugin-name "vim-gnupg"))
1339 (home-page "https://www.vim.org/scripts/script.php?script_id=3645")
1340 (synopsis "Vim plugin for transparent editing of gpg encrypted files")
1341 (description
1342 "This script implements transparent editing of gpg encrypted files. The
1343filename must have a @code{.gpg}, @code{.pgp} or @code{.asc} suffix. When
1344opening such a file the content is decrypted, and the content will be encrypted
1345to all recipients before it is written. This script turns off viminfo,
1346swapfile, and undofile when editing encrypted files to increase security.")
1347 (properties
1348 '((release-monitoring-url . "https://github.com/jamessan/vim-gnupg/releases")))
1349 (license license:gpl2+)))
1350
1351(define-public vim-ctrlp
1352 (package
1353 (name "vim-ctrlp")
1354 (version "1.81")
1355 (source
1356 (origin
1357 (method git-fetch)
1358 (uri (git-reference
1359 (url "https://github.com/ctrlpvim/ctrlp.vim")
1360 (commit version)))
1361 (file-name (git-file-name name version))
1362 (sha256
1363 (base32 "0n68hg59h4rjn0ziqbsh5pr03l3kr98zk54659ny6vq107af1w96"))))
1364 (build-system vim-build-system)
1365 (arguments
1366 (list #:plugin-name "ctrlp.vim"))
1367 (home-page "https://ctrlpvim.github.io/ctrlp.vim/")
1368 (synopsis "Fuzzy file, buffer, mru, tag, etc. finder for Vim")
1369 (description
1370 "CtrlP features:
1371@itemize
1372@item Written in pure Vimscript for MacVim, gVim and Vim 7.0+.
1373@item Full support for Vim's regexp as search patterns.
1374@item Built-in @acronym{Most Recently Used, MRU} files monitoring and search.
1375@item Built-in project's root finder.
1376@item Open multiple files at once.
1377@item Create new files and directories.
1378@item Execute Ex commands on an opening file (jump to a line, to a string or do
1379anything).
1380@item Optional cross-session caching and history allow for fast initialization.
1381@item Mappings and usage conform to Vim's conventions.
1382@end itemize")
1383 (license license:vim)))
1384
1385(define-public vim-mucomplete
1386 (package
1387 (name "vim-mucomplete")
1388 (version "1.5.0")
1389 (source
1390 (origin
1391 (method git-fetch)
1392 (uri (git-reference
1393 (url "https://github.com/lifepillar/vim-mucomplete")
1394 (commit (string-append "v" version))))
1395 (file-name (git-file-name name version))
1396 (sha256
1397 (base32 "054g80n09mmxxlh8xaic29bn8bgn3clvv732rymljdyvbj1mlhwd"))))
1398 (build-system vim-build-system)
1399 (arguments
1400 (list #:plugin-name "MUcomplete"))
1401 (home-page "https://github.com/lifepillar/vim-mucomplete")
1402 (synopsis "MUcomplete is a minimalist autocompletion plugin for Vim")
1403 (description
1404 "MUcomplete is an implementation of chained (fallback) completion,
1405whereby several completion methods are attempted one after another until a
1406result is returned.")
1407 (license license:expat)))
1408
1409(define-public vim-gitgutter
1410 (let ((commit "256702dd1432894b3607d3de6cd660863b331818")
1411 (revision "1"))
1412 (package
1413 (name "vim-gitgutter")
1414 (version (git-version "0.0.0" revision commit))
1415 (source
1416 (origin
1417 (method git-fetch)
1418 (uri (git-reference
1419 (url "https://github.com/airblade/vim-gitgutter")
1420 (commit commit)))
1421 (file-name (git-file-name name version))
1422 (sha256
1423 (base32 "0zpa7cs59a8sq0k3frlf9flpf30jcn239yrpmv40r7nqvxzglbpl"))))
1424 (build-system vim-build-system)
1425 (arguments
1426 (list #:plugin-name "gitgutter"))
1427 (synopsis "Vim plugin which shows a git diff in the sign column")
1428 (description
1429 "A Vim plugin which shows a git diff in the sign column. It shows which
1430lines have been added, modified, or removed. You can also preview, stage, and
1431undo individual hunks; and stage partial hunks. The plugin also provides a hunk
1432text object. The signs are always up to date and the plugin never saves your
1433buffer.")
1434 (home-page "https://github.com/airblade/vim-gitgutter")
1435 (license license:expat))))
1436
1437(define-public vim-characterize
1438 (package
1439 (name "vim-characterize")
1440 (version "1.1")
1441 (source
1442 (origin
1443 (method git-fetch)
1444 (uri (git-reference
1445 (url "https://github.com/tpope/vim-characterize")
1446 (commit (string-append "v" version))))
1447 (file-name (git-file-name name version))
1448 (sha256
1449 (base32 "0ppsbsd696ih40d9f76mdl9sd9y7p2pvm65qmvq4b2zhkv4xbpxz"))))
1450 (build-system vim-build-system)
1451 (arguments
1452 (list #:plugin-name "characterize"))
1453 (home-page "https://github.com/tpope/vim-characterize")
1454 (synopsis "Vim plugin for showing Unicode character metadata")
1455 (description
1456 "In Vim, pressing @code{ga} on a character reveals its representation in
1457decimal, octal, and hex. Characterize.vim modernizes this with the following
1458additions:
1459@itemize
1460@item Unicode character names: @code{U+00A9 COPYRIGHT SYMBOL}
1461@item Vim digraphs (type after @code{<C-K>} to insert the character):
1462@code{Co}, @code{cO}
1463@item Emoji codes: @code{:copyright:}
1464@item HTML entities: @code{&copy;}
1465@end itemize")
1466 (license license:vim)))
1467
1468(define-public vim-tagbar
1469 (package
1470 (name "vim-tagbar")
1471 (version "3.0.0")
1472 (source
1473 (origin
1474 (method git-fetch)
1475 (uri (git-reference
1476 (url "https://github.com/preservim/tagbar")
1477 (commit (string-append "v" version))))
1478 (file-name (git-file-name name version))
1479 (sha256
1480 (base32 "1fqfs8msmr6d4kpvxqp14sdjvp5fj52q5w5kz71myzcd4kqzmirp"))))
1481 (build-system vim-build-system)
1482 (arguments
1483 '(#:plugin-name "tagbar"
1484 #:phases
1485 (modify-phases %standard-phases
1486 (add-after 'unpack 'link-universal-ctags
1487 (lambda* (#:key inputs #:allow-other-keys)
1488 (let ((ctags (assoc-ref inputs "universal-ctags")))
1489 (substitute* "autoload/tagbar.vim"
1490 (("(.*)universal-ctags']" all leader)
1491 (string-append all "\n"
1492 leader ctags "/bin/ctags']")))))))))
1493 (inputs
1494 (list universal-ctags))
1495 (home-page "https://github.com/preservim/tagbar")
1496 (synopsis "Vim plugin that displays tags in a window, ordered by scope")
1497 (description
1498 "Tagbar is a Vim plugin that provides an easy way to browse the tags of
1499the current file and get an overview of its structure. It does this by creating
1500a sidebar that displays the ctags-generated tags of the current file, ordered
1501by their scope. This means that for example methods in C++ are displayed under
1502the class they are defined in.")
1503 (license license:vim)))
1504
1505(define-public vim-nerdtree
1506 (package
1507 (name "vim-nerdtree")
1508 (version "6.10.16")
1509 (source
1510 (origin
1511 (method git-fetch)
1512 (uri (git-reference
1513 (url "https://github.com/preservim/nerdtree")
1514 (commit version)))
1515 (file-name (git-file-name name version))
1516 (sha256
1517 (base32 "1si8qla86ng8cffbmfrk9gss0i3912yw0f1ph4bsiq0kk837lccp"))))
1518 (build-system vim-build-system)
1519 (arguments
1520 (list #:plugin-name "nerdtree"))
1521 (home-page "https://github.com/preservim/nerdtree")
1522 (synopsis "Tree explorer plugin for Vim")
1523 (description
1524 "The NERDTree is a file system explorer for the Vim editor. Using this
1525plugin, users can visually browse complex directory hierarchies, quickly open
1526files for reading or editing, and perform basic file system operations.")
1527 (license license:wtfpl2)))
1528
1529(define-public vim-nerdcommenter
1530 (package
1531 (name "vim-nerdcommenter")
1532 (version "2.6.0")
1533 (source
1534 (origin
1535 (method git-fetch)
1536 (uri (git-reference
1537 (url "https://github.com/preservim/nerdcommenter")
1538 (commit version)))
1539 (file-name (git-file-name name version))
1540 (sha256
1541 (base32 "1ka2rqn7rby55aps3iblh1dcqxm7m7qx72mpkz6y2aaj8mkj0zyd"))))
1542 (build-system vim-build-system)
1543 (arguments
1544 (list #:plugin-name "nerdcommenter"))
1545 (home-page "https://github.com/preservim/nerdcommenter")
1546 (synopsis "Vim plugin for easy commenting of code")
1547 (description
1548 "NERD commenter is a Vim plugin that provides many different commenting
1549operations and styles which are invoked via key mappings and a menu. These
1550operations are available for most filetypes.")
1551 (license license:cc0)))
1552
1553(define-public vim-vader
1554 (let ((revision "1")
1555 (commit "429b669e6158be3a9fc110799607c232e6ed8e29"))
1556 (package
1557 (name "vim-vader")
1558 (version (git-version "0.4.0" revision commit))
1559 (source (origin
1560 (method git-fetch)
1561 (uri (git-reference
1562 (url "https://github.com/junegunn/vader.vim")
1563 (commit commit)))
1564 (file-name (git-file-name name version))
1565 (sha256
1566 (base32
1567 "0jf4gshr31c1i64f6qykqq17nsasfaljrqz41kzqcxw8fvra8y4c"))))
1568 (build-system vim-build-system)
1569 (arguments
1570 '(#:plugin-name "vader"
1571 #:phases
1572 (modify-phases %standard-phases
1573 (add-before 'install 'check
1574 (lambda* (#:key tests? vim? neovim? #:allow-other-keys)
1575 (when tests?
1576 ;; FIXME: suite1.vader, suite2.vader and
1577 ;; highlight-after-comment.vader fail with unknown reasons,
1578 ;; lang-if.vader requires Python and Ruby.
1579 (substitute* "test/vader.vader"
1580 (("Include.*feature/suite1.vader.*$") "")
1581 (("Include.*feature/suite2.vader.*$") "")
1582 (("Include.*feature/lang-if.vader.*$") "")
1583 (("Include.*regression/highlight-after-comment.vader.*$") ""))
1584
1585 (display "Running Vim tests\n")
1586 (with-directory-excursion "test"
1587 (when vim?
1588 (setenv "VADER_TEST_VIM" "vim -E"))
1589 (when neovim?
1590 (setenv "VADER_TEST_VIM" "nvim --headless"))
1591 (invoke "bash" "./run-tests.sh"))))))))
1592 (home-page "https://github.com/junegunn/vader.vim")
1593 (synopsis "Test framework for Vimscript")
1594 (description "Vader is a test framework for Vimscript designed to
1595simplify the process of writing and running unit tests. Vader.vim provides an
1596intuitive test syntax for defining test cases and expectations, it also can
1597be integrated with @acronym{CI, Continuous Integration} pipelines to
1598automate testing and is compatible with Vim and Neovim.")
1599 (license license:expat)))) ;; Specified in README.md.
1600
1601(define-public neovim-vader
1602 (package
1603 (inherit vim-vader)
1604 (name "neovim-vader")))
1605
1606(define-public vim-jedi-vim
1607 (package
1608 (name "vim-jedi-vim")
1609 (version "0.11.2")
1610 (source
1611 (origin
1612 (method git-fetch)
1613 (uri (git-reference
1614 (url "https://github.com/davidhalter/jedi-vim")
1615 (commit (string-append "v" version))))
1616 (file-name (git-file-name name version))
1617 (sha256
1618 (base32 "03fj7f5cpchrdmz9szal6fdg05wdwb0j6260nnyp37nmpcpn13yc"))))
1619 (build-system vim-build-system)
1620 (arguments (list #:plugin-name "jedi-vim"))
1621 (propagated-inputs (list python-jedi))
1622 (home-page "https://github.com/davidhalter/jedi-vim")
1623 (synopsis "Jedi autocompletion library for Vim")
1624 (description
1625 "@code{jedi-vim} is a VIM binding to the autocompletion library Jedi.")
1626 (license license:expat)))
1627
1628(define-public vim-srcery-vim
1629 (package
1630 (name "vim-srcery-vim")
1631 (version "2.0.0")
1632 (source
1633 (origin
1634 (method git-fetch)
1635 (uri (git-reference
1636 (url "https://github.com/srcery-colors/srcery-vim")
1637 (commit (string-append "v" version))))
1638 (file-name (git-file-name name version))
1639 (sha256
1640 (base32 "0nwk81y9j5ljjm3k19kf1zmscdxiis4mwan026wv7cqp7f9qhxlr"))))
1641 (build-system vim-build-system)
1642 (arguments
1643 (list #:plugin-name "srcery"
1644 #:mode "opt"))
1645 (home-page "https://srcery.sh")
1646 (synopsis "Dark colorscheme for gvim and vim")
1647 (description
1648 "Srcery is a color scheme with clearly defined contrasting colors
1649and a slightly earthy tone.")
1650 (license license:expat)))
1651
1652(define-public vim-commentary
1653 (let ((commit "e87cd90dc09c2a203e13af9704bd0ef79303d755")
1654 (revision "1"))
1655 (package
1656 (name "vim-commentary")
1657 (version (git-version "1.3" revision commit))
1658 (source
1659 (origin
1660 (method git-fetch)
1661 (uri (git-reference
1662 (url "https://github.com/tpope/vim-commentary")
1663 (commit commit)))
1664 (file-name (string-append name "-" version "-checkout"))
1665 (sha256
1666 (base32 "09kzc89iwkgsi4wvjxk56fis462kkz5chcl9sl4hdbmpa1f41wy0"))))
1667 (build-system vim-build-system)
1668 (arguments
1669 (list
1670 #:plugin-name "commentary.vim"))
1671 (synopsis "Vim plugin for commenting out code")
1672 (description
1673 "Comment stuff out. Use gcc to comment out a line (takes a count), gc to
1674comment out the target of a motion (for example, gcap to comment out a
1675paragraph), gc in visual mode to comment out the selection, and gc in operator
1676pending mode to target a comment. You can also use it as a command, either with
1677a range like :7,17Commentary, or as part of a :global invocation like with
1678:g/TODO/Commentary.")
1679 (home-page "https://www.vim.org/scripts/script.php?script_id=3695")
1680 (license license:vim))))
1681
1682(define-public vim-guile
1683 (let ((commit "f76959a9dbdc69cde018901de82ac5a3d443843c")
1684 (revision "1"))
1685 (package
1686 (name "vim-guile")
1687 (version (git-version "0.0.0" revision commit))
1688 (source
1689 (origin
1690 (method git-fetch)
1691 (uri (git-reference
1692 (url "https://github.com/HiPhish/guile.vim")
1693 (commit commit)))
1694 (file-name (string-append name "-" version "-checkout"))
1695 (sha256
1696 (base32 "1pqlhssdnpd8ngjc5bssma7ddjhffvh8hj67gchmyyxr5jfxwdq9"))))
1697 (build-system vim-build-system)
1698 (arguments
1699 (list
1700 #:plugin-name "guile.vim"))
1701 (synopsis "Syntax highlighting for GNU Guile")
1702 (description
1703 "This plugin extends Vim's Scheme support to include the additions to
1704the language provided by the GNU Guile implementation. The plugin automatically
1705detects whether a Scheme file is a Guile file and adds syntax highlighting for
1706Guile's special forms.")
1707 (home-page "https://github.com/HiPhish/guile.vim")
1708 (license license:expat))))
1709
1710(define-public vim-dhall-vim
1711 (let ((commit "68500ef46ff3706f46c99db3be7a0c8abcf6a3ae")
1712 (revision "1"))
1713 (package
1714 (name "vim-dhall-vim")
1715 (version (git-version "0.0.0" revision commit))
1716 (source
1717 (origin
1718 (method git-fetch)
1719 (uri (git-reference
1720 (url "https://github.com/vmchale/dhall-vim")
1721 (commit commit)))
1722 (file-name (string-append name "-" version "-checkout"))
1723 (sha256
1724 (base32 "0lwna4kcq7davfvh3535n8wl9jxkjm7cg6jgpisd17kvagihh8qw"))))
1725 (build-system vim-build-system)
1726 (arguments
1727 (list
1728 #:plugin-name "dhall-vim"))
1729 (synopsis "Vim configuration for Dhall")
1730 (description
1731 "A vim plugin to provide support and syntax hightlighting for the Dhall
1732programming language")
1733 (home-page "https://github.com/vmchale/dhall-vim")
1734 (license license:bsd-3))))
1735
1736(define-public vim-mundo
1737 (let ((commit "b53d35fb5ca9923302b9ef29e618ab2db4cc675e")
1738 (revision "1"))
1739 (package
1740 (name "vim-mundo")
1741 (version (git-version "3.1.0" revision commit))
1742 (source
1743 (origin
1744 (method git-fetch)
1745 (uri (git-reference
1746 (url "https://github.com/simnalamburt/vim-mundo")
1747 (commit commit)))
1748 (file-name (string-append name "-" version "-checkout"))
1749 (sha256
1750 (base32 "1dwrarcxrh8in78igm036lpvyww60c93vmmlk8h054i3v2p8vv59"))))
1751 (build-system vim-build-system)
1752 (arguments
1753 (list
1754 #:plugin-name "Mundo"))
1755 (synopsis "Vim undo tree visualizer")
1756 (description "A Vim plugin to visualize the Vim undo tree")
1757 (home-page "https://simnalamburt.github.io/vim-mundo/")
1758 (license license:gpl2))))
1759
1760(define-public vim-zig
1761 (let ((commit "54c216e5306a5c3878a60596aacb94dca8652ab9")
1762 (revision "1"))
1763 (package
1764 (name "vim-zig")
1765 (version (git-version "0.0.0" revision commit))
1766 (source
1767 (origin
1768 (method git-fetch)
1769 (uri (git-reference
1770 (url "https://github.com/ziglang/zig.vim")
1771 (commit commit)))
1772 (file-name (string-append name "-" version "-checkout"))
1773 (sha256
1774 (base32 "1nxwjyn3ps3c2abffai5cql3czl4kah4cin0g30damy1k99ypncb"))))
1775 (build-system vim-build-system)
1776 (arguments
1777 (list
1778 #:plugin-name "zig.vim"))
1779 (synopsis "Vim configuration for Zig")
1780 (description
1781 "File detection and syntax highlighting for the zig programming
1782language.")
1783 (home-page "https://github.com/ziglang/zig.vim")
1784 (license license:expat))))
1785
1786(define-public vim-plantuml-syntax
1787 (let ((commit "845abb56dcd3f12afa6eb47684ef5ba3055802b8")
1788 (revision "1"))
1789 (package
1790 (name "vim-plantuml-syntax")
1791 (version (git-version "0.0.0" revision commit))
1792 (source
1793 (origin
1794 (method git-fetch)
1795 (uri (git-reference
1796 (url "https://github.com/aklt/plantuml-syntax")
1797 (commit commit)))
1798 (file-name (string-append name "-" version "-checkout"))
1799 (sha256
1800 (base32 "0d2frv6knkj4bjavq2c2kx8qdnmcq0d8l04a5z7bpqwkmrrhd31f"))))
1801 (build-system vim-build-system)
1802 (arguments
1803 (list
1804 #:plugin-name "plantuml-syntax"))
1805 (synopsis "Syntax highlighting for PlantUML")
1806 (description
1807 "This is a vim syntax file for PlantUML. The filetype will be set to
1808plantuml for *.pu, *.uml, *.puml, *.iuml or *.plantuml files or if the first
1809line of a file contains @@startuml. Additionally the makeprg is set to plantuml
1810assuming you have this executable in your path.")
1811 (home-page "https://github.com/aklt/plantuml-syntax")
1812 (license license:vim))))