vim.scm 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
  3. ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 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. ;;;
  15. ;;; This file is part of GNU Guix.
  16. ;;;
  17. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  18. ;;; under the terms of the GNU General Public License as published by
  19. ;;; the Free Software Foundation; either version 3 of the License, or (at
  20. ;;; your option) any later version.
  21. ;;;
  22. ;;; GNU Guix is distributed in the hope that it will be useful, but
  23. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  24. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  25. ;;; GNU General Public License for more details.
  26. ;;;
  27. ;;; You should have received a copy of the GNU General Public License
  28. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  29. (define-module (gnu packages vim)
  30. #:use-module ((guix licenses) #:prefix license:)
  31. #:use-module (guix packages)
  32. #:use-module (guix utils)
  33. #:use-module (guix download)
  34. #:use-module (guix git-download)
  35. #:use-module (guix build-system cmake)
  36. #:use-module (guix build-system copy)
  37. #:use-module (guix build-system gnu)
  38. #:use-module (guix build-system python)
  39. #:use-module (gnu packages)
  40. #:use-module (gnu packages acl)
  41. #:use-module (gnu packages admin) ; For GNU hostname
  42. #:use-module (gnu packages attr)
  43. #:use-module (gnu packages autotools)
  44. #:use-module (gnu packages base)
  45. #:use-module (gnu packages enlightenment)
  46. #:use-module (gnu packages fontutils)
  47. #:use-module (gnu packages gawk)
  48. #:use-module (gnu packages gettext)
  49. #:use-module (gnu packages glib)
  50. #:use-module (gnu packages gperf)
  51. #:use-module (gnu packages groff)
  52. #:use-module (gnu packages gtk)
  53. #:use-module (gnu packages image)
  54. #:use-module (gnu packages jemalloc)
  55. #:use-module (gnu packages libevent)
  56. #:use-module (gnu packages linux)
  57. #:use-module (gnu packages lua)
  58. #:use-module (gnu packages ncurses)
  59. #:use-module (gnu packages perl)
  60. #:use-module (gnu packages pkg-config)
  61. #:use-module (gnu packages python)
  62. #:use-module (gnu packages python-xyz)
  63. #:use-module (gnu packages ruby)
  64. #:use-module (gnu packages serialization)
  65. #:use-module (gnu packages shells)
  66. #:use-module (gnu packages tcl)
  67. #:use-module (gnu packages text-editors)
  68. #:use-module (gnu packages terminals)
  69. #:use-module (gnu packages xdisorg)
  70. #:use-module (gnu packages xorg))
  71. (define-public vim
  72. (package
  73. (name "vim")
  74. (version "8.2.3487")
  75. (source (origin
  76. (method git-fetch)
  77. (uri (git-reference
  78. (url "https://github.com/vim/vim")
  79. (commit (string-append "v" version))))
  80. (file-name (git-file-name name version))
  81. (sha256
  82. (base32
  83. "1s09jvr1vv9zjk352vbfidfy5fidbf83kz2vk0kk6zv24j1yck24"))))
  84. (build-system gnu-build-system)
  85. (arguments
  86. `(#:test-target "test"
  87. #:parallel-tests? #f
  88. ;; Fix test_signals.vim. https://github.com/vim/vim/issues/7402
  89. #:make-flags (list "CFLAGS=-D_REENTRANT")
  90. #:phases
  91. (modify-phases %standard-phases
  92. (add-after 'configure 'patch-absolute-paths
  93. (lambda _
  94. (substitute* "runtime/tools/mve.awk"
  95. (("/usr/bin/nawk") (which "gawk")))
  96. (substitute* '("src/testdir/Makefile"
  97. "src/testdir/test_normal.vim"
  98. "src/testdir/test_popupwin.vim"
  99. "src/testdir/test_shell.vim"
  100. "src/testdir/test_system.vim"
  101. "src/testdir/test_terminal.vim"
  102. "src/testdir/test_terminal2.vim")
  103. (("/bin/sh") (which "sh")))
  104. (substitute* "src/testdir/test_autocmd.vim"
  105. (("/bin/kill") (which "kill")))
  106. #t))
  107. (add-before 'check 'set-environment-variables
  108. (lambda* (#:key inputs #:allow-other-keys)
  109. ;; One of the tests tests timezone-dependent functions.
  110. (setenv "TZDIR"
  111. (search-input-directory inputs "share/zoneinfo"))
  112. ;; Make sure the TERM environment variable is set for the tests
  113. (setenv "TERM" "xterm")
  114. #t))
  115. (add-before 'check 'skip-or-fix-failing-tests
  116. (lambda _
  117. ;; This test assumes that PID 1 is run as root and that the user
  118. ;; running the test suite does not have permission to kill(1, 0)
  119. ;; it. This is not true in the build container, where both PID 1
  120. ;; and the test suite are run as the same user. Skip the test.
  121. ;; An alternative fix would be to patch the PID used to a random
  122. ;; 32-bit value and hope it never shows up in the test environment.
  123. (substitute* "src/testdir/test_swap.vim"
  124. (("if !IsRoot\\(\\)") "if 0"))
  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. #t))
  140. (add-before 'install 'fix-installman.sh
  141. (lambda _
  142. (substitute* "src/installman.sh"
  143. (("/bin/sh")
  144. (which "sh")))))
  145. (add-after 'install 'install-guix.vim
  146. (lambda* (#:key inputs outputs #:allow-other-keys)
  147. (let ((vimdir (string-append (assoc-ref outputs "out") "/share/vim")))
  148. (mkdir-p vimdir)
  149. (copy-file (assoc-ref inputs "guix.vim")
  150. (string-append vimdir "/vimrc"))
  151. #t))))))
  152. (inputs
  153. `(("gawk" ,gawk)
  154. ("ncurses" ,ncurses)
  155. ("perl" ,perl)
  156. ("tcsh" ,tcsh))) ; For runtime/tools/vim32
  157. (native-inputs
  158. `(("libtool" ,libtool)
  159. ("guix.vim" ,(search-auxiliary-file "guix.vim"))
  160. ;; For tests.
  161. ("tzdata" ,tzdata-for-tests)))
  162. (home-page "https://www.vim.org/")
  163. (synopsis "Text editor based on vi")
  164. ;; The description shares language with the vim-full package. When making
  165. ;; changes, check if the other description also needs to be updated.
  166. (description
  167. "Vim is a highly configurable text editor built to enable efficient text
  168. editing. It is an improved version of the vi editor distributed with most UNIX
  169. systems.
  170. Vim is often called a \"programmer's editor,\" and so useful for programming
  171. that many consider it an entire IDE. It's not just for programmers, though.
  172. Vim is perfect for all kinds of text editing, from composing email to editing
  173. configuration files.")
  174. (license license:vim)))
  175. (define-public xxd
  176. (package (inherit vim)
  177. (name "xxd")
  178. (arguments
  179. `(#:make-flags (list ,(string-append "CC=" (cc-for-target)))
  180. #:tests? #f ; there are none
  181. #:phases
  182. (modify-phases %standard-phases
  183. (delete 'configure)
  184. (add-after 'unpack 'chdir
  185. (lambda _
  186. (chdir "src/xxd")
  187. #t))
  188. (replace 'install
  189. (lambda* (#:key outputs #:allow-other-keys)
  190. (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
  191. (install-file "xxd" bin)
  192. #t))))))
  193. (inputs `())
  194. (native-inputs `())
  195. (synopsis "Hexdump utility from vim")
  196. (description "This package provides the Hexdump utility xxd that comes
  197. with the editor vim.")))
  198. (define-public vim-full
  199. (package
  200. ;; This package should share its source with Vim, but it doesn't
  201. ;; build reliably, and we want to keep Vim up to date due to the
  202. ;; frequency of important bug fixes.
  203. (inherit vim)
  204. (name "vim-full")
  205. (arguments
  206. `(#:configure-flags
  207. (list (string-append "--with-lua-prefix="
  208. (assoc-ref %build-inputs "lua"))
  209. "--with-features=huge"
  210. "--enable-python3interp=yes"
  211. "--enable-perlinterp=yes"
  212. "--enable-rubyinterp=yes"
  213. "--enable-tclinterp=yes"
  214. "--enable-luainterp=yes"
  215. "--enable-cscope"
  216. "--enable-sniff"
  217. "--enable-multibyte"
  218. "--enable-xim"
  219. "--disable-selinux"
  220. "--enable-gui")
  221. ,@(substitute-keyword-arguments (package-arguments vim)
  222. ;; This flag fixes the following error:
  223. ;; .../libpython3.7m.a(pyexpat.o): undefined reference to symbol 'XML_FreeContentModel'
  224. ;; .../libexpat.so.1: error adding symbols: DSO missing from command line
  225. ((#:make-flags flags)
  226. `(append
  227. (list "LDFLAGS=-lexpat")
  228. (delete "CFLAGS=-D_REENTRANT" ,flags)))
  229. ((#:phases phases)
  230. `(modify-phases ,phases
  231. (add-before 'check 'start-xserver
  232. (lambda* (#:key inputs #:allow-other-keys)
  233. ;; Some tests require an X server, but does not start one.
  234. (let ((xorg-server (assoc-ref inputs "xorg-server"))
  235. (display ":1"))
  236. (setenv "DISPLAY" display)
  237. (zero? (system (string-append xorg-server "/bin/Xvfb "
  238. display " &")))))))))))
  239. (native-inputs
  240. `(("pkg-config" ,pkg-config)
  241. ("xorg-server" ,xorg-server-for-tests)
  242. ,@(package-native-inputs vim)))
  243. (inputs
  244. `(("acl" ,acl)
  245. ("atk" ,atk)
  246. ("attr" ,attr)
  247. ("cairo" ,cairo)
  248. ("fontconfig" ,fontconfig)
  249. ("freetype" ,freetype)
  250. ("gdk-pixbuf" ,gdk-pixbuf)
  251. ("gettext" ,gettext-minimal)
  252. ("glib" ,glib)
  253. ("gpm" ,gpm)
  254. ("gtk" ,gtk+-2)
  255. ("harfbuzz" ,harfbuzz)
  256. ("libice" ,libice)
  257. ("libpng" ,libpng)
  258. ("libsm" ,libsm)
  259. ("libx11" ,libx11)
  260. ("libxdmcp" ,libxdmcp)
  261. ("libxt" ,libxt)
  262. ("libxpm" ,libxpm)
  263. ("lua" ,lua)
  264. ("pango" ,pango)
  265. ("pixman" ,pixman)
  266. ("python-3" ,python)
  267. ("ruby" ,ruby)
  268. ("tcl" ,tcl)
  269. ,@(package-inputs vim)))
  270. ;; The description shares language with the vim package. When making
  271. ;; changes, check if the other description also needs to be updated.
  272. (description "Vim is a highly configurable text editor built to enable efficient text
  273. editing. It is an improved version of the vi editor distributed with most UNIX
  274. systems.
  275. Vim is often called a \"programmer's editor,\" and so useful for programming
  276. that many consider it an entire IDE. It's not just for programmers, though.
  277. Vim is perfect for all kinds of text editing, from composing email to editing
  278. configuration files.
  279. This package provides a version of Vim with many optional features enabled.
  280. It includes a graphical interface, @command{gvim}, and support for plugins
  281. written in the Python 3, Perl, Ruby, Tcl, and Lua programming languages.")))
  282. (define-public vim-neocomplete
  283. (package
  284. (name "vim-neocomplete")
  285. (version "2.1")
  286. (source
  287. (origin
  288. (method git-fetch)
  289. (uri (git-reference
  290. (url "https://github.com/Shougo/neocomplete.vim")
  291. (commit (string-append "ver." version))))
  292. (file-name (git-file-name name version))
  293. (sha256
  294. (base32
  295. "1h6sci5mhdfg6sjsjpi8l5li02hg858zcayiwl60y9j2gqnd18lv"))))
  296. (build-system copy-build-system)
  297. (arguments
  298. '(#:install-plan
  299. '(("autoload" "share/vim/vimfiles/")
  300. ("doc" "share/vim/vimfiles/")
  301. ("plugin" "share/vim/vimfiles/"))))
  302. (synopsis "Next generation completion framework for Vim")
  303. (description
  304. "@code{neocomplete}, an abbreviation of 'neo-completion with cache',
  305. is a plugin for Vim.
  306. It provides keyword completion system by maintaining a cache of keywords in
  307. the current buffer. Neocomplete can be customized easily and has many more
  308. features than Vim's built-in completion.")
  309. (home-page "https://github.com/Shougo/neocomplete.vim/")
  310. (license license:expat)))
  311. ;; There are no release tarballs.
  312. (define-public vim-neosnippet-snippets
  313. (let ((commit "8e2b1c0cab9ed9a832b3743dbb65e9966a64331a")
  314. (revision "1"))
  315. (package
  316. (name "vim-neosnippet-snippets")
  317. (version (string-append "0.0.0-" revision "." (string-take commit 7)))
  318. (source
  319. (origin
  320. (method git-fetch)
  321. (uri (git-reference
  322. (url "https://github.com/Shougo/neosnippet-snippets")
  323. (commit commit)))
  324. (file-name (string-append name "-" version "-checkout"))
  325. (sha256
  326. (base32
  327. "151wpvbj6jb9jdkbhj3b77f5sq7y328spvwfbqyj1y32rg4ifmc6"))))
  328. (build-system copy-build-system)
  329. (arguments
  330. '(#:install-plan
  331. '(("neosnippets" "share/vim/vimfiles/"))))
  332. (synopsis "Snippets for neosnippet")
  333. (description
  334. "@code{neosnippet-snippets} provides standard snippets for the Vim plugin
  335. @code{neosnippet}. Snippets are small templates for commonly used code that
  336. you can fill in on the fly.")
  337. (home-page "https://github.com/Shougo/neosnippet-snippets")
  338. (license license:expat))))
  339. ;; The released tarball is too old for our Vim.
  340. (define-public vim-neosnippet
  341. (let ((commit "1bd7e23c79b73da16eb0c9469b25c376d3594583")
  342. (revision "1"))
  343. (package
  344. (name "vim-neosnippet")
  345. (version (string-append "4.2-" revision "." (string-take commit 7)))
  346. (source
  347. (origin
  348. (method git-fetch)
  349. (uri (git-reference
  350. (url "https://github.com/Shougo/neosnippet.vim/")
  351. (commit commit)))
  352. (file-name (string-append name "-" version "-checkout"))
  353. (sha256
  354. (base32
  355. "0k80syscmpnj38ks1fq02ds59g0r4jlg9ll7z4qc048mgi35alw5"))))
  356. (build-system copy-build-system)
  357. (arguments
  358. '(#:install-plan
  359. '(("autoload" "share/vim/vimfiles/")
  360. ("doc" "share/vim/vimfiles/")
  361. ("ftdetect" "share/vim/vimfiles/")
  362. ("ftplugin" "share/vim/vimfiles/")
  363. ("indent" "share/vim/vimfiles/")
  364. ("plugin" "share/vim/vimfiles/")
  365. ("rplugin" "share/vim/vimfiles/")
  366. ("syntax" "share/vim/vimfiles/"))))
  367. (synopsis "Snippet support for Vim")
  368. (description
  369. "@code{neosnippet}, is a plugin for Vim which adds snippet support to Vim.
  370. Snippets are small templates for commonly used code that you can fill in on
  371. the fly. To use snippets can increase your productivity in Vim a lot.
  372. The functionality of this plug-in is quite similar to plug-ins like
  373. @code{snipMate.vim} or @code{snippetsEmu.vim}. But since you can choose
  374. snippets with the neocomplcache / neocomplete interface, you might have less
  375. trouble using them, because you do not have to remember each snippet name.")
  376. (home-page "https://github.com/Shougo/neosnippet.vim/")
  377. (license license:expat))))
  378. (define-public vim-scheme
  379. (let ((commit "99af6befee8bc7d289a523064336474ae063cee3")
  380. (revision "2"))
  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 "http://git.foldling.org/vim-scheme.git")
  389. (commit commit)))
  390. (file-name (git-file-name name version))
  391. (sha256
  392. (base32
  393. "0w9hnsxg92f1wd83rra0ss07zla7p2r44whr9rqs70hc0xm8ygd6"))))
  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:public-domain))))
  405. (define-public vim-luna
  406. (let ((commit "633619953dcf8577168e255230f96b05f28d6371")
  407. (revision "1"))
  408. (package
  409. (name "vim-luna")
  410. (version (string-append "0.0.0-" revision "." (string-take commit 7)))
  411. (source
  412. (origin
  413. (method git-fetch)
  414. (uri (git-reference
  415. (url "https://github.com/notpratheek/vim-luna")
  416. (commit commit)))
  417. (file-name (string-append name "-" version "-checkout"))
  418. (sha256
  419. (base32
  420. "0ka3qbhsh8lix1vyj4678j7dnchkd8khhirrnn3aylxxf8fpqyg8"))))
  421. (build-system copy-build-system)
  422. (arguments
  423. '(#:install-plan
  424. '(("colors" "share/vim/vimfiles/"))))
  425. (synopsis "Dark color theme for Vim")
  426. (description
  427. "@code{vim-luna} is a dark color theme for Vim.")
  428. (home-page "https://github.com/notpratheek/vim-luna")
  429. (license license:expat))))
  430. ;; There are no tarball releases.
  431. (define-public vim-context-filetype
  432. (let ((commit "5e85f8cae26806f391aefe2661791a6de53bcea2")
  433. (revision "1"))
  434. (package
  435. (name "vim-context-filetype")
  436. (version (string-append "0.0.0-" revision "." (string-take commit 7)))
  437. (source
  438. (origin
  439. (method git-fetch)
  440. (uri (git-reference
  441. (url "https://github.com/Shougo/context_filetype.vim")
  442. (commit commit)))
  443. (file-name (string-append name "-" version "-checkout"))
  444. (sha256
  445. (base32
  446. "0alvrfhmd91zkd9h83s8wvgyq4iakcf6rybsyjd369qbgpcqky89"))))
  447. (build-system copy-build-system)
  448. (arguments
  449. '(#:install-plan
  450. '(("doc" "share/vim/vimfiles/")
  451. ("autoload" "share/vim/vimfiles/"))))
  452. (synopsis "Context filetype library for Vim")
  453. (description
  454. "@code{vim-context-filetype} is context filetype library for Vim script.")
  455. (home-page "https://github.com/Shougo/context_filetype.vim")
  456. (license license:expat)))) ; ??? check again
  457. (define-public vim-fugitive
  458. (package
  459. (name "vim-fugitive")
  460. (version "3.4")
  461. (source
  462. (origin
  463. (method git-fetch)
  464. (uri (git-reference
  465. (url "https://github.com/tpope/vim-fugitive")
  466. (commit (string-append "v" version))))
  467. (file-name (git-file-name name version))
  468. (sha256
  469. (base32
  470. "0vgyp0rabrxjy9mpdnf221vjk3q38pls7az884gvnjjzdly18xmp"))))
  471. (build-system copy-build-system)
  472. (arguments
  473. '(#:install-plan
  474. '(("autoload" "share/vim/vimfiles/")
  475. ("doc" "share/vim/vimfiles/")
  476. ("ftdetect" "share/vim/vimfiles/")
  477. ("ftplugin" "share/vim/vimfiles/")
  478. ("plugin" "share/vim/vimfiles/")
  479. ("syntax" "share/vim/vimfiles/"))))
  480. (home-page "https://github.com/tpope/vim-fugitive")
  481. (synopsis "Vim plugin to work with Git")
  482. (description "Vim-fugitive is a wrapper for Vim that complements the
  483. command window, where you can stage and review your changes before the next
  484. commit or run any Git arbitrary command.")
  485. (license license:vim))) ; distributed under the same license as vim
  486. (define-public vim-airline
  487. (package
  488. (name "vim-airline")
  489. (version "0.11")
  490. (source
  491. (origin
  492. (method git-fetch)
  493. (uri (git-reference
  494. (url "https://github.com/vim-airline/vim-airline")
  495. (commit (string-append "v" version))))
  496. (file-name (git-file-name name version))
  497. (sha256
  498. (base32
  499. "1aksmr73648pvyc75pfdz28k2d4ky52rn7xiwcv7lz87q3vqld7k"))))
  500. (build-system copy-build-system)
  501. (arguments
  502. '(#:install-plan
  503. '(("autoload" "share/vim/vimfiles/")
  504. ("doc" "share/vim/vimfiles/")
  505. ("plugin" "share/vim/vimfiles/"))))
  506. (synopsis "Statusline for Vim")
  507. (description
  508. "@code{vim-airline} is an extensible statusline for Vim.
  509. It can be extended and costumized with themes, works with unicode fonts
  510. and powerline symbols, etc.")
  511. (home-page "https://github.com/vim-airline/vim-airline")
  512. (license license:expat)))
  513. ;; There are no tarball releases.
  514. (define-public vim-airline-themes
  515. (let ((commit "e6f233231b232b6027cde6aebeeb18d9138e5324")
  516. (revision "2"))
  517. (package
  518. (name "vim-airline-themes")
  519. (version (git-version "0.0.0" revision commit))
  520. (source
  521. (origin
  522. (method git-fetch)
  523. (uri (git-reference
  524. (url "https://github.com/vim-airline/vim-airline-themes")
  525. (commit commit)))
  526. (file-name (git-file-name name version))
  527. (sha256
  528. (base32
  529. "1sb7nb7j7bz0pv1c9bgdy0smhr0jk2b1vbdv9yzghg5lrknpsbr6"))))
  530. (build-system copy-build-system)
  531. (arguments
  532. '(#:install-plan
  533. '(("autoload" "share/vim/vimfiles/")
  534. ("doc" "share/vim/vimfiles/")
  535. ("plugin" "share/vim/vimfiles/"))))
  536. (synopsis "Collection of themes for Vim-airline")
  537. (description
  538. "@code{vim-airline-themes} is a collection of themes for @code{vim-airline}.")
  539. (home-page "https://github.com/vim-airline/vim-airline-themes")
  540. (license license:expat))))
  541. (define-public vim-syntastic
  542. (package
  543. (name "vim-syntastic")
  544. (version "3.10.0")
  545. (source
  546. (origin
  547. (method git-fetch)
  548. (uri (git-reference
  549. (url "https://github.com/vim-syntastic/syntastic")
  550. (commit version)))
  551. (file-name (git-file-name name version))
  552. (sha256
  553. (base32 "0j91f72jaz1s6aw1hpjiz30vk2ds2aqd9gisk91grsldy6nz6hhz"))))
  554. (build-system copy-build-system)
  555. (arguments
  556. '(#:install-plan
  557. '(("autoload" "share/vim/vimfiles/")
  558. ("doc" "share/vim/vimfiles/")
  559. ("plugin" "share/vim/vimfiles/")
  560. ("syntax_checkers" "share/vim/vimfiles/"))))
  561. (synopsis "Syntax checking plugin for Vim")
  562. (description
  563. "Vim-syntastic is a syntax checking plugin for Vim. It runs files through
  564. external syntax checkers and displays any resulting errors to the user. This
  565. can be done on demand, or automatically as files are saved. If syntax errors
  566. are detected, the user is notified.")
  567. (home-page "https://github.com/vim-syntastic/syntastic")
  568. (license license:wtfpl2)))
  569. (define-public vim-solarized
  570. (let ((commit "62f656a02f93c5190a8753159e34b385588d5ff3")
  571. (revision "1"))
  572. (package
  573. (name "vim-solarized")
  574. (version (git-version "1.0.0beta1" revision commit))
  575. (source
  576. (origin
  577. (method git-fetch)
  578. (uri (git-reference
  579. (url "https://github.com/altercation/solarized")
  580. (commit commit)))
  581. (file-name (git-file-name name version))
  582. (sha256
  583. (base32 "0001mz5v3a8zvi3gzmxhi3yrsb6hs7qf6i497arsngnvj2cwn61d"))))
  584. (build-system copy-build-system)
  585. (arguments
  586. '(#:install-plan
  587. '(("vim-colors-solarized/colors" "share/vim/vimfiles/")
  588. ("vim-colors-solarized/doc" "share/vim/vimfiles/"))))
  589. (home-page "https://github.com/altercation/vim-colors-solarized")
  590. (synopsis "Solarized color scheme for Vim")
  591. (description
  592. "This package provides the Solarized theme as a Vim color scheme.
  593. Solarized is a 16-color palette comprising 8 monotones and 8 accent
  594. colors. It was designed for use with both terminal and GUI applications, and
  595. has a dark and a light mode.
  596. Based on CIELAB lightness relationships between colors, this theme reduces
  597. brightness contrast but retains contrasting hues based on colorwheel relations
  598. for syntax highlighting readability.
  599. It keeps the same selective contrast relationships and overall feel when
  600. switching between the light and dark background modes.")
  601. (license license:expat))))
  602. (define-public editorconfig-vim
  603. (package
  604. (name "editorconfig-vim")
  605. (version "1.1.1")
  606. (source
  607. (origin
  608. (method git-fetch)
  609. (uri (git-reference
  610. (url "https://github.com/editorconfig/editorconfig-vim")
  611. (commit (string-append "v" version))))
  612. (file-name (git-file-name name version))
  613. (sha256
  614. (base32
  615. "0mp80bi2m56bb93szw87vy6q5s85yk9g91sl4pr51316rgdv5kkv"))))
  616. (build-system copy-build-system)
  617. (arguments
  618. '(#:install-plan
  619. '(("autoload" "share/vim/vimfiles/")
  620. ("doc" "share/vim/vimfiles/")
  621. ("plugin" "share/vim/vimfiles/"))))
  622. (home-page "https://editorconfig.org/")
  623. (synopsis "EditorConfig plugin for Vim")
  624. (description "EditorConfig makes it easy to maintain the correct coding
  625. style when switching between different text editors and between different
  626. projects. The EditorConfig project maintains a file format and plugins for
  627. various text editors which allow this file format to be read and used by those
  628. editors.")
  629. (license license:bsd-2)))
  630. (define-public neovim-syntastic
  631. (package
  632. (inherit vim-syntastic)
  633. (name "neovim-syntastic")
  634. (arguments
  635. '(#:install-plan
  636. '(("autoload" "share/nvim/site/")
  637. ("doc" "share/nvim/site/")
  638. ("plugin" "share/nvim/site/")
  639. ("syntax_checkers" "share/nvim/site/"))))
  640. (synopsis "Syntax checking plugin for Neovim")
  641. (description
  642. "Vim-syntastic is a syntax checking plugin for Neovim. It runs files through
  643. external syntax checkers and displays any resulting errors to the user. This
  644. can be done on demand, or automatically as files are saved. If syntax errors
  645. are detected, the user is notified.")))
  646. (define-public neovim
  647. (package
  648. (name "neovim")
  649. (version "0.4.4")
  650. (source
  651. (origin
  652. (method git-fetch)
  653. (uri (git-reference
  654. (url "https://github.com/neovim/neovim")
  655. (commit (string-append "v" version))))
  656. (file-name (git-file-name name version))
  657. (sha256
  658. (base32 "11zyj6jvkwas3n6w1ckj3pk6jf81z1g7ngg4smmwm7c27y2a6f2m"))))
  659. (build-system cmake-build-system)
  660. (arguments
  661. `(#:modules ((srfi srfi-26)
  662. (guix build cmake-build-system)
  663. (guix build utils))
  664. #:configure-flags '("-DPREFER_LUA:BOOL=YES")
  665. #:phases
  666. (modify-phases %standard-phases
  667. (add-after 'unpack 'set-lua-paths
  668. (lambda* (#:key inputs #:allow-other-keys)
  669. (let* ((lua-version "5.1")
  670. (lua-cpath-spec
  671. (lambda (prefix)
  672. (let ((path (string-append prefix "/lib/lua/" lua-version)))
  673. (string-append path "/?.so;" path "/?/?.so"))))
  674. (lua-path-spec
  675. (lambda (prefix)
  676. (let ((path (string-append prefix "/share/lua/" lua-version)))
  677. (string-append path "/?.lua;" path "/?/?.lua"))))
  678. (lua-inputs (map (cute assoc-ref inputs <>)
  679. '("lua"
  680. "lua-luv"
  681. "lua-lpeg"
  682. "lua-bitop"
  683. "lua-libmpack"))))
  684. (setenv "LUA_PATH"
  685. (string-join (map lua-path-spec lua-inputs) ";"))
  686. (setenv "LUA_CPATH"
  687. (string-join (map lua-cpath-spec lua-inputs) ";"))
  688. #t)))
  689. (add-after 'unpack 'prevent-embedding-gcc-store-path
  690. (lambda _
  691. ;; nvim remembers its build options, including the compiler with
  692. ;; its complete path. This adds gcc to the closure of nvim, which
  693. ;; doubles its size. We remove the refirence here.
  694. (substitute* "cmake/GetCompileFlags.cmake"
  695. (("\\$\\{CMAKE_C_COMPILER\\}") "/gnu/store/.../bin/gcc"))
  696. #t)))))
  697. (inputs
  698. `(("libuv" ,libuv)
  699. ("msgpack" ,msgpack)
  700. ("libtermkey" ,libtermkey)
  701. ("libvterm" ,libvterm)
  702. ("unibilium" ,unibilium)
  703. ("jemalloc" ,jemalloc)
  704. ("libiconv" ,libiconv)
  705. ("lua" ,lua-5.1)
  706. ("lua-luv" ,lua5.1-luv)
  707. ("lua-lpeg" ,lua5.1-lpeg)
  708. ("lua-bitop" ,lua5.1-bitop)
  709. ("lua-libmpack" ,lua5.1-libmpack)))
  710. (native-inputs
  711. `(("pkg-config" ,pkg-config)
  712. ("gettext" ,gettext-minimal)
  713. ("gperf" ,gperf)))
  714. (home-page "https://neovim.io")
  715. (synopsis "Fork of vim focused on extensibility and agility")
  716. (description "Neovim is a project that seeks to aggressively
  717. refactor Vim in order to:
  718. @itemize
  719. @item Simplify maintenance and encourage contributions
  720. @item Split the work between multiple developers
  721. @item Enable advanced external UIs without modifications to the core
  722. @item Improve extensibility with a new plugin architecture
  723. @end itemize\n")
  724. ;; Neovim is licensed under the terms of the Apache 2.0 license,
  725. ;; except for parts that were contributed under the Vim license.
  726. (license (list license:asl2.0 license:vim))))
  727. (define-public eovim
  728. (package
  729. (name "eovim")
  730. (version "0.2.0")
  731. (source
  732. (origin
  733. (method git-fetch)
  734. (uri (git-reference
  735. (url "https://github.com/jeanguyomarch/eovim/")
  736. (commit (string-append "v" version))))
  737. (file-name (git-file-name name version))
  738. (sha256
  739. (base32 "06b7crmz3wvvq15ncl0jk20s8j1pmna2jin0k5y5n5qxpafbgp3k"))))
  740. (build-system cmake-build-system)
  741. (arguments
  742. '(#:tests? #false ;no tests
  743. #:phases
  744. (modify-phases %standard-phases
  745. (add-after 'configure 'reference-nvim
  746. (lambda* (#:key inputs #:allow-other-keys)
  747. (let ((nvim (search-input-file inputs "/bin/nvim")))
  748. ;; This substitution should change one line, and replaces the default
  749. ;; value in the struct of options with an absolute store reference.
  750. (substitute* "../source/src/main.c"
  751. (("(^[[:blank:]]+\\.nvim = \")nvim" _ start)
  752. (string-append start nvim))))))
  753. (add-before 'build 'set-home
  754. (lambda _ (setenv "HOME" "/tmp"))))))
  755. (native-inputs
  756. `(("pkg-config" ,pkg-config)))
  757. (inputs
  758. `(("efl" ,efl)
  759. ("msgpack" ,msgpack)
  760. ("neovim" ,neovim)))
  761. (home-page "https://github.com/jeanguyomarch/eovim/")
  762. (synopsis "EFL GUI for Neovim")
  763. (description "Graphical Neovim interface based on the @acronym{EFL, Enlightenment
  764. Foundation Libraries} toolkit. Its features include customizable appearance
  765. and support for fonts with ligatures.")
  766. (license license:expat)))
  767. (define-public vifm
  768. (package
  769. (name "vifm")
  770. (version "0.12")
  771. (source
  772. (origin
  773. (method url-fetch)
  774. (uri (list
  775. (string-append "https://github.com/vifm/vifm/releases/download/v"
  776. version "/vifm-" version ".tar.bz2")
  777. (string-append "https://sourceforge.net/projects/vifm/files/vifm/"
  778. "vifm-" version ".tar.bz2")))
  779. (sha256
  780. (base32
  781. "1h5j4y704nciyzg3aaav8sl3r5h9mpwq8f28cj65nnxk6a7n3a9k"))))
  782. (build-system gnu-build-system)
  783. (arguments
  784. '(#:configure-flags '("--disable-build-timestamp")
  785. #:phases
  786. (modify-phases %standard-phases
  787. (add-after 'patch-source-shebangs 'patch-test-shebangs
  788. (lambda _
  789. (substitute* (cons* "src/background.c"
  790. "src/cfg/config.c"
  791. (find-files "tests" "\\.c$"))
  792. (("/bin/sh") (which "sh"))
  793. (("/bin/bash") (which "bash")))
  794. ;; This test segfaults
  795. (substitute* "tests/Makefile"
  796. (("misc") ""))
  797. #t))
  798. (add-after 'install 'install-vim-plugin-files
  799. (lambda* (#:key outputs #:allow-other-keys)
  800. (let* ((out (assoc-ref outputs "out"))
  801. (vifm (string-append out "/share/vifm"))
  802. (vimfiles (string-append out "/share/vim/vimfiles")))
  803. (copy-recursively (string-append vifm "/colors")
  804. (string-append vimfiles "/colors"))
  805. (copy-recursively (string-append vifm "/vim")
  806. vimfiles)
  807. (delete-file-recursively (string-append vifm "/colors"))
  808. (delete-file-recursively (string-append vifm "/vim")))
  809. #t)))))
  810. (native-inputs
  811. `(("groff" ,groff))) ; for the documentation
  812. (inputs
  813. `(("libx11" ,libx11)
  814. ("ncurses" ,ncurses)
  815. ("perl" ,perl)))
  816. (home-page "https://vifm.info/")
  817. (synopsis "Flexible vi-like file manager using ncurses")
  818. (description "Vifm is a file manager providing a @command{vi}-like usage
  819. experience. It has similar keybindings and modes (e.g. normal, command line,
  820. visual). The interface uses ncurses, thus vifm can be used in text-only
  821. environments. It supports a wide range of features, some of which are known
  822. from the @command{vi}-editor:
  823. @enumerate
  824. @item utf8 support
  825. @item user mappings (almost like in @code{vi})
  826. @item ranges in command
  827. @item line commands
  828. @item user defined commands (with support for ranges)
  829. @item registers
  830. @item operation undoing/redoing
  831. @item fuse file systems support
  832. @item trash
  833. @item multiple files renaming
  834. @item support of filename modifiers
  835. @item colorschemes support
  836. @item file name color according to file type
  837. @item path specific colorscheme customization
  838. @item bookmarks
  839. @item operation backgrounding
  840. @item customizable file viewers
  841. @item handy @code{less}-like preview mode
  842. @item filtering out and searching for files using regular expressions
  843. @item one or two panes view
  844. @end enumerate
  845. With the package comes a plugin to use vifm as a vim file selector.")
  846. (license license:gpl2+)))
  847. (define-public python-pynvim
  848. (package
  849. (name "python-pynvim")
  850. (version "0.4.2")
  851. (source (origin
  852. (method url-fetch)
  853. (uri (pypi-uri "pynvim" version))
  854. (sha256
  855. (base32
  856. "13qgwkqbx012j5spis1aw8rb120rw0zphgjy1j58irax8r6j1ikb"))))
  857. (build-system python-build-system)
  858. (propagated-inputs
  859. `(("python-greenlet" ,python-greenlet)
  860. ("python-msgpack" ,python-msgpack)))
  861. (arguments
  862. `(#:tests? #f))
  863. (home-page "https://github.com/neovim/pynvim")
  864. (synopsis "Python client and plugin host for neovim")
  865. (description "Pynvim implements support for python plugins in neovim. It
  866. also works as a library for connecting to and scripting neovim processes
  867. through its msgpack-rpc API.")
  868. (license license:asl2.0)))
  869. (define-public vim-guix-vim
  870. (package
  871. (name "vim-guix-vim")
  872. (version "0.3.0")
  873. (source (origin
  874. (method git-fetch)
  875. (uri (git-reference
  876. (url "https://gitlab.com/Efraim/guix.vim.git/")
  877. (commit version)))
  878. (file-name (git-file-name name version))
  879. (sha256
  880. (base32
  881. "0bk2mnvbv1rfr0zzx4m8jjdw98wbbmdffx1h9svrjpg25lcvqv1b"))))
  882. (build-system copy-build-system)
  883. (arguments
  884. '(#:install-plan
  885. '(("autoload" "share/vim/vimfiles/")
  886. ("compiler" "share/vim/vimfiles/")
  887. ("doc" "share/vim/vimfiles/")
  888. ("indent" "share/vim/vimfiles/")
  889. ("ftdetect" "share/vim/vimfiles/")
  890. ("ftplugin" "share/vim/vimfiles/")
  891. ("plugin" "share/vim/vimfiles/")
  892. ("syntax" "share/vim/vimfiles/"))))
  893. (home-page "https://gitlab.com/Efraim/guix.vim")
  894. (synopsis "Guix integration in Vim")
  895. (description "This package provides support for GNU Guix in Vim.")
  896. (license license:vim)))
  897. (define-public vim-asyncrun
  898. (package
  899. (name "vim-asyncrun")
  900. (version "2.8.6")
  901. (source (origin
  902. (method git-fetch)
  903. (uri (git-reference
  904. (url "https://github.com/skywind3000/asyncrun.vim")
  905. (commit version)))
  906. (file-name (git-file-name name version))
  907. (sha256
  908. (base32
  909. "11zcw0sll6qg6ha0rr6n1cw5v73azvf7ycwn9lgiwa5cj7rrqjf4"))))
  910. (build-system copy-build-system)
  911. (arguments
  912. '(#:install-plan
  913. '(("plugin" "share/vim/vimfiles/")
  914. ("doc/" "share/vim/vimfiles/doc" #:include ("asyncrun.txt")))))
  915. (home-page "https://github.com/skywind3000/asyncrun.vim")
  916. (synopsis "Run Async Shell Commands in Vim")
  917. (description "This plugin takes the advantage of new APIs in Vim 8 (and
  918. NeoVim) to enable you to run shell commands in background and read output in the
  919. quickfix window in realtime.")
  920. (license license:expat)))
  921. (define-public vim-dispatch
  922. (package
  923. (name "vim-dispatch")
  924. (version "1.8")
  925. (source
  926. (origin
  927. (method git-fetch)
  928. (uri (git-reference
  929. (url "https://github.com/tpope/vim-dispatch")
  930. (commit (string-append "v" version))))
  931. (file-name (git-file-name name version))
  932. (sha256
  933. (base32
  934. "1m8b5mn2zqlphzs6xfwykwmghf6p0wabrhpjmh7vav35jgcxc4wl"))))
  935. (build-system copy-build-system)
  936. (arguments
  937. '(#:install-plan
  938. '(("autoload" "share/vim/vimfiles/")
  939. ("doc" "share/vim/vimfiles/")
  940. ("plugin" "share/vim/vimfiles/"))))
  941. (home-page "https://github.com/tpope/vim-dispatch")
  942. (synopsis "Asynchronous build and test dispatcher")
  943. (description "Leverage the power of Vim's compiler plugins without being
  944. bound by synchronicity. Kick off builds and test suites using one of several
  945. asynchronous adapters (including tmux, screen, and a headless mode), and when
  946. the job completes, errors will be loaded and parsed automatically.")
  947. (license license:vim)))
  948. (define-public vim-gemini-vim
  949. ;; No releases have been tagged.
  950. (let ((commit "f300c54174fc0db8fb68f1bc04307b58612e9630")
  951. (revision "1"))
  952. (package
  953. (name "vim-gemini-vim")
  954. (version (git-version "0.0.0" revision commit))
  955. (source
  956. (origin
  957. (method git-fetch)
  958. (uri (git-reference
  959. (url "https://git.sr.ht/~torresjrjr/gemini.vim")
  960. (commit commit)))
  961. (file-name (git-file-name name version))
  962. (sha256
  963. (base32 "05ffhhfahjqwxyrqmsinsahrs15wknzl2qbj8mznyv319mn2civ2"))))
  964. (build-system copy-build-system)
  965. (arguments
  966. `(#:install-plan
  967. '(("ftdetect" "share/vim/vimfiles/")
  968. ("syntax" "share/vim/vimfiles/"))))
  969. (home-page "https://git.sr.ht/~torresjrjr/gemini.vim")
  970. (synopsis "Vim syntax highlighting plugin for Gemini")
  971. (description "This Vim plugin provides a Vim syntax highlighting plugin
  972. for Gemini Text, the text/gemini media type, as defined in the Gemini protocol
  973. specification.")
  974. (license license:gpl3))))
  975. (define-public vim-eunuch
  976. (let ((commit "33e875b31c8b811a0a47908884a5e2339106bbe8")
  977. (revision "1"))
  978. (package
  979. (name "vim-eunuch")
  980. (version (git-version "1.2" revision commit))
  981. (source
  982. (origin
  983. (method git-fetch)
  984. (uri (git-reference
  985. (url "https://github.com/tpope/vim-eunuch")
  986. (commit commit)))
  987. (file-name (git-file-name name version))
  988. (sha256
  989. (base32
  990. "1xadb22kd40swmww0qxmmkcpcq6viy8l167pjck5q32hfngll5d3"))))
  991. (build-system copy-build-system)
  992. (arguments
  993. '(#:install-plan
  994. '(("doc" "share/vim/vimfiles/")
  995. ("plugin" "share/vim/vimfiles/"))))
  996. (home-page "https://github.com/tpope/vim-eunuch")
  997. (synopsis "Vim sugar for the UNIX shell commands")
  998. (description "Vim sugar for the UNIX shell commands that need it the most.
  999. This package includes commands such as @code{SudoWrite} and @code{SudoEdit} and
  1000. help working on Vim buffers and the files they reference with one command.")
  1001. (license license:vim))))
  1002. (define-public vim-slime
  1003. ;; No tagged releases.
  1004. (let ((commit "a522fed677e50175f52efc5848cc35209af33216")
  1005. (revision "1"))
  1006. (package
  1007. (name "vim-slime")
  1008. (version (git-version "0.0.0" revision commit))
  1009. (source
  1010. (origin
  1011. (method git-fetch)
  1012. (uri (git-reference
  1013. (url "https://github.com/jpalardy/vim-slime")
  1014. (commit commit)))
  1015. (file-name (git-file-name name version))
  1016. (sha256
  1017. (base32 "0k4b629jn6xlxyjxdl3cgm06v9dmx967rqnslv5m82c9kscwpyh4"))))
  1018. (build-system copy-build-system)
  1019. (arguments
  1020. `(#:install-plan
  1021. '(("autoload" "share/vim/vimfiles/")
  1022. ("doc" "share/vim/vimfiles/")
  1023. ("ftplugin" "share/vim/vimfiles/")
  1024. ("plugin" "share/vim/vimfiles/"))))
  1025. (home-page "https://technotales.wordpress.com/2007/10/03/like-slime-for-vim/")
  1026. (synopsis "Vim plugin to give you some slime")
  1027. (description "SLIME is an Emacs plugin to turn Emacs into a Lisp IDE. You
  1028. can type text in a file, send it to a live REPL, and avoid having to reload all
  1029. your code every time you make a change. @code{Vim-slime} is an attempt at
  1030. getting some of these features into Vim. It works with any REPL and isn't tied
  1031. to Lisp.")
  1032. (license license:expat))))
  1033. (define-public vim-paredit
  1034. ;; The last tagged version is from August 2013.
  1035. (let ((commit "97d51d099523b37bb35cbcf3564cbfb46e66e4ec")
  1036. (revision "1"))
  1037. (package
  1038. (name "vim-paredit")
  1039. (version (git-version "0.9.11" revision commit))
  1040. (source
  1041. (origin
  1042. (method git-fetch)
  1043. (uri (git-reference
  1044. (url "https://github.com/kovisoft/paredit")
  1045. (commit commit)))
  1046. (file-name (git-file-name name version))
  1047. (sha256
  1048. (base32 "07d5s20r0ssd7rir45vy0fqlci44gha1a81rcilgar227f3nw328"))))
  1049. (build-system copy-build-system)
  1050. (arguments
  1051. '(#:install-plan
  1052. '(("doc" "share/vim/vimfiles/")
  1053. ("plugin" "share/vim/vimfiles/"))))
  1054. (home-page "https://github.com/kovisoft/paredit")
  1055. (synopsis "Vim plugin for structured editing of Lisp S-expressions")
  1056. (description
  1057. "Paredit performs structured editing of Lisp S-expressions in Vim.
  1058. @code{Paredit.vim} is similar to @code{paredit.el} for Emacs.")
  1059. ;; License listed in plugin/paredit.vim.
  1060. (license license:public-domain))))
  1061. (define-public vim-surround
  1062. (package
  1063. (name "vim-surround")
  1064. (version "2.2")
  1065. (source
  1066. (origin
  1067. (method git-fetch)
  1068. (uri (git-reference
  1069. (url "https://github.com/tpope/vim-surround")
  1070. (commit (string-append "v" version))))
  1071. (file-name (git-file-name name version))
  1072. (sha256
  1073. (base32 "1b0bd5m5lv1p4d299mrwjfs2gk0zqwyaqdaid9hs9yqlxnr8s5nf"))))
  1074. (build-system copy-build-system)
  1075. (arguments
  1076. '(#:install-plan
  1077. '(("doc" "share/vim/vimfiles/")
  1078. ("plugin" "share/vim/vimfiles/"))))
  1079. (home-page "https://github.com/tpope/vim-surround")
  1080. (synopsis "Vim plugin for easy quoting and parenthesizing")
  1081. (description
  1082. "Surround.vim is all about \"surroundings\": parentheses, brackets,
  1083. quotes, XML tags, and more. The plugin provides mappings to easily delete,
  1084. change and add such surroundings in pairs.")
  1085. (license license:vim)))
  1086. (define-public vim-ctrlp
  1087. (package
  1088. (name "vim-ctrlp")
  1089. (version "1.81")
  1090. (source
  1091. (origin
  1092. (method git-fetch)
  1093. (uri (git-reference
  1094. (url "https://github.com/ctrlpvim/ctrlp.vim")
  1095. (commit version)))
  1096. (file-name (git-file-name name version))
  1097. (sha256
  1098. (base32 "0n68hg59h4rjn0ziqbsh5pr03l3kr98zk54659ny6vq107af1w96"))))
  1099. (build-system copy-build-system)
  1100. (arguments
  1101. '(#:install-plan
  1102. '(("autoload" "share/vim/vimfiles/")
  1103. ("doc" "share/vim/vimfiles/")
  1104. ("plugin" "share/vim/vimfiles/"))))
  1105. (home-page "https://ctrlpvim.github.io/ctrlp.vim/")
  1106. (synopsis "Fuzzy file, buffer, mru, tag, etc. finder for Vim")
  1107. (description
  1108. "CtrlP features:
  1109. @itemize
  1110. @item Written in pure Vimscript for MacVim, gVim and Vim 7.0+.
  1111. @item Full support for Vim's regexp as search patterns.
  1112. @item Built-in @acronym{Most Recently Used, MRU} files monitoring and search.
  1113. @item Built-in project's root finder.
  1114. @item Open multiple files at once.
  1115. @item Create new files and directories.
  1116. @item Execute Ex commands on an opening file (jump to a line, to a string or do
  1117. anything).
  1118. @item Optional cross-session caching and history allow for fast initialization.
  1119. @item Mappings and usage conform to Vim's conventions.
  1120. @end itemize")
  1121. (license license:vim)))