# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 PortSystem 1.0 PortGroup github 1.0 PortGroup cmake 1.1 name neovim categories editors platforms {darwin >= 15} maintainers {l2dy @l2dy} \ {judaew @judaew} \ openmaintainer license Apache-2 Vim GPL-2+ description Neovim is a aggressively refactored fork of Vim long_description \ Neovim is a project that seeks to aggressively refactor Vim. It already adds \ a new plugin architecture, job control, and a remote API. homepage https://neovim.io depends_build-append port:pkgconfig depends_lib port:gettext \ port:libuv \ port:unibilium \ path:lib/libluajit-5.1.2.dylib:luajit \ port:lua51-lpeg \ port:luv-luajit \ port:libiconv \ port:libutf8proc \ port:tree-sitter cmake.build_type Release configure.args-append -DLUA_PRG=${prefix}/bin/luajit patch.pre_args-replace -p0 -p1 # Building parsers is normally an extra step, see https://github.com/neovim/neovim/issues/29042 patchfiles 0001-build-and-install-tree-sitter-parsers.patch \ 0002-include-lua51-headers-to-build-properly.patch post-patch { reinplace "s|@PREFIX@|${prefix}|g" ${worksrcpath}/CMakeLists.txt # workaround for https://github.com/neovim/neovim/pull/30749 reinplace "s|lpeg.so lpeg\${CMAKE_SHARED_LIBRARY_SUFFIX}|lpeg\${CMAKE_SHARED_LIBRARY_SUFFIX} lpeg.so|g" ${worksrcpath}/cmake/FindLpeg.cmake } notes { If you would like to re-use your existing Vim configuration with Neovim, follow the advice in `:help nvim-from-vim`: nvim -c 'tab h nvim-from-vim' For a full list of differences with Vim, read `:help vim-differences`. } subport neovim-devel {} if {${subport} eq ${name}} { # stable github.setup neovim neovim 0.11.4 v github.tarball_from archive revision 0 conflicts neovim-devel # cat cmake.deps/deps.txt \ # | perl -n -e '/(TREESITTER_.*)_URL https:\/\/github.com\/([^\/]*)\/([^\/]*)\/archive\/([^\d]*)((?:\d+\.){2}\d+)([^\d\.]*)/ && print join(" ", $2, $3, $5, $4 || "\"\"", $6 || "\"\"", lc($1), "\n")' \ # | column -t set deps { tree-sitter tree-sitter-c 0.24.1 v "" treesitter_c tree-sitter-grammars tree-sitter-lua 0.4.0 v "" treesitter_lua tree-sitter-grammars tree-sitter-vim 0.7.0 v "" treesitter_vim neovim tree-sitter-vimdoc 4.0.0 v "" treesitter_vimdoc tree-sitter-grammars tree-sitter-query 0.6.2 v "" treesitter_query tree-sitter-grammars tree-sitter-markdown 0.5.0 v "" treesitter_markdown } checksums neovim-0.11.4.tar.gz \ rmd160 1d183e760f8be125f8ddf78187112a10b06a9f08 \ sha256 83cf9543bedab8bec8c11cd50ccd9a4bf1570420a914b9a28f83ad100ca6d524 \ size 12961606 \ tree-sitter-c-0.24.1.tar.gz \ rmd160 12c732f8ccc097fd1ef4f171c19a89d06cfb85cd \ sha256 25dd4bb3dec770769a407e0fc803f424ce02c494a56ce95fedc525316dcf9b48 \ size 379147 \ tree-sitter-lua-0.4.0.tar.gz \ rmd160 2d738c83f4a1ec560fdbaae2ac7e156f93b96a22 \ sha256 b0977aced4a63bb75f26725787e047b8f5f4a092712c840ea7070765d4049559 \ size 63999 \ tree-sitter-vim-0.7.0.tar.gz \ rmd160 e0b265437742feaa02279a32b4064bcb9f76d4a6 \ sha256 44eabc31127c4feacda19f2a05a5788272128ff561ce01093a8b7a53aadcc7b2 \ size 364666 \ tree-sitter-vimdoc-4.0.0.tar.gz \ rmd160 60712382cbd18f39b06cbca4ca7da78d74b2b18d \ sha256 8096794c0f090b2d74b7bff94548ac1be3285b929ec74f839bd9b3ff4f4c6a0b \ size 58862 \ tree-sitter-query-0.6.2.tar.gz \ rmd160 88297accb6c01db114779d3cb584e916d756513d \ sha256 90682e128d048fbf2a2a17edca947db71e326fa0b3dba4136e041e096538b4eb \ size 43386 \ tree-sitter-markdown-0.5.0.tar.gz \ rmd160 8582b36c12a8a825d2873e9ec25b2c2572a80253 \ sha256 14c2c948ccf0e9b606eec39b09286c59dddf28307849f71b7ce2b1d1ef06937e \ size 419516 } else { # devel github.setup neovim neovim 3c601d02dc030fde5fc11a1b1cba01728add2197 github.tarball_from archive version 20250901-[string range ${github.version} 0 6] revision 0 conflicts neovim github.livecheck.branch \ nightly # see stable's version of `deps` for how to regenerate set deps { tree-sitter tree-sitter-c 0.24.1 v "" treesitter_c tree-sitter-grammars tree-sitter-lua 0.4.0 v "" treesitter_lua tree-sitter-grammars tree-sitter-vim 0.7.0 v "" treesitter_vim neovim tree-sitter-vimdoc 4.0.0 v "" treesitter_vimdoc tree-sitter-grammars tree-sitter-query 0.6.2 v "" treesitter_query tree-sitter-grammars tree-sitter-markdown 0.5.0 v "" treesitter_markdown } checksums neovim-3c601d02dc030fde5fc11a1b1cba01728add2197.tar.gz \ rmd160 a0c90cc79df7572dbfde8e69fe20028b7023a223 \ sha256 64455f79b52d7d89cd29ed60d9fd80d3340d155f5555b642d0399b6cd8a02657 \ size 13328140 \ tree-sitter-c-0.24.1.tar.gz \ rmd160 12c732f8ccc097fd1ef4f171c19a89d06cfb85cd \ sha256 25dd4bb3dec770769a407e0fc803f424ce02c494a56ce95fedc525316dcf9b48 \ size 379147 \ tree-sitter-lua-0.4.0.tar.gz \ rmd160 2d738c83f4a1ec560fdbaae2ac7e156f93b96a22 \ sha256 b0977aced4a63bb75f26725787e047b8f5f4a092712c840ea7070765d4049559 \ size 63999 \ tree-sitter-vim-0.7.0.tar.gz \ rmd160 e0b265437742feaa02279a32b4064bcb9f76d4a6 \ sha256 44eabc31127c4feacda19f2a05a5788272128ff561ce01093a8b7a53aadcc7b2 \ size 364666 \ tree-sitter-vimdoc-4.0.0.tar.gz \ rmd160 60712382cbd18f39b06cbca4ca7da78d74b2b18d \ sha256 8096794c0f090b2d74b7bff94548ac1be3285b929ec74f839bd9b3ff4f4c6a0b \ size 58862 \ tree-sitter-query-0.6.2.tar.gz \ rmd160 88297accb6c01db114779d3cb584e916d756513d \ sha256 90682e128d048fbf2a2a17edca947db71e326fa0b3dba4136e041e096538b4eb \ size 43386 \ tree-sitter-markdown-0.5.0.tar.gz \ rmd160 8582b36c12a8a825d2873e9ec25b2c2572a80253 \ sha256 14c2c948ccf0e9b606eec39b09286c59dddf28307849f71b7ce2b1d1ef06937e \ size 419516 } # Add each dependency's master_site, tag it and associate it back to the distfile # e.g.: master_sites-append https://github.com/tree-sitter/tree-sitter-c/archive/v0.23.4:treesitter_c # distfiles-append tree-sitter-c-0.23.4.tar.gz:treesitter_c foreach {gh_author gh_project gh_version gh_tag_prefix gh_tag_suffix dirname} ${deps} { master_sites-append https://github.com/${gh_author}/${gh_project}/archive/[join ${gh_tag_prefix}]${gh_version}[join ${gh_tag_suffix}]:${dirname} distfiles-append ${gh_project}-${gh_version}${extract.suffix}:${dirname} } # Only extract Neovim's source and not its dependencies extract.only ${distname}${extract.suffix} post-extract { # Create the file structure where the build job expects the dependencies # e.g. file mkdir ${workpath}/build/build/downloads/treesitter_c # file copy \ # ${distpath}/tree-sitter-c-0.23.4.tar.gz \ # ${workpath}/build/build/downloads/treesitter_c/v0.23.4.tar.gz foreach {_ gh_project gh_version gh_tag_prefix gh_tag_suffix dirname} ${deps} { file mkdir ${workpath}/build/build/downloads/${dirname} file copy \ ${distpath}/${gh_project}-${gh_version}${extract.suffix} \ ${workpath}/build/build/downloads/${dirname}/[join ${gh_tag_prefix}]${gh_version}[join ${gh_tag_suffix}]${extract.suffix} } }