diff --git a/PKGBUILD b/PKGBUILD index a853fa0..8a2b005 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: Jef Roosens pkgname=vieter-vls -pkgver=latest.r1.g5fbfe67 +pkgver=latest.r0.g5fbfe67 pkgrel=1 pkgdesc="Language server for the V programming language; synced with the vieter-v compiler." arch=("x86_64" "aarch64") @@ -9,7 +9,7 @@ arch=("x86_64" "aarch64") url="https://github.com/vlang/vls" license=("MIT") -depends=("glibc" "vieter-v") +depends=("glibc" "vieter-v" "gc") makedepends=("git" "gcc") source=("$pkgname::git+https://github.com/vlang/vls") @@ -22,12 +22,36 @@ pkgver() { build() { cd "$pkgname" + msg "Building vls..." v run build.vsh gcc + + msg "Building treesitter grammar..." + # Patch the language server files & build the shared library + # Neovim wants all functions in the grammar library to correctly use the + # filetype, which in this case is vlang. However, the standard codebase + # uses v as the name. + mv tree_sitter_v tree_sitter_vlang + + find tree_sitter_vlang \ + -\( -iname '*.v' -or -iname '*.c' -or -iname '*.h' -\) \ + -exec sed -i 's/tree_sitter_v/tree_sitter_vlang/' "{}" \; + + # Building with -prod is required because otherwise, the binary contains + # tcc symbols which isn't usually installed on the user's system. + v -shared -prod tree_sitter_vlang } package() { + # Install vls install -dm755 "$pkgdir/usr/bin" - install -Dm755 "$pkgname/bin/vls" "$pkgdir/usr/bin/vls" install -Dm644 "$pkgname/LICENSE" -t "$pkgdir/usr/share/licenses/$pkgname" + + # Install treesitter grammar + # This package installs the parser & queries for Neovim in its runtimepath + install -dm755 "$pkgdir/usr/share/nvim/runtime/parser" + install -dm755 "$pkgdir/usr/share/nvim/runtime/queries/vlang" + install -Dm755 "$pkgname/tree_sitter_vlang/tree_sitter_vlang.so" "$pkgdir/usr/share/nvim/runtime/parser/vlang.so" + install -m644 "$pkgname/tree_sitter_vlang/queries"/* "$pkgdir/usr/share/nvim/runtime/queries/vlang" + }