summaryrefslogtreecommitdiff
path: root/devel/janet-lsp
diff options
context:
space:
mode:
Diffstat (limited to 'devel/janet-lsp')
-rw-r--r--devel/janet-lsp/Makefile60
-rw-r--r--devel/janet-lsp/distinfo11
-rw-r--r--devel/janet-lsp/files/janet-lsp.in11
-rw-r--r--devel/janet-lsp/files/patch-src_main.janet19
-rw-r--r--devel/janet-lsp/pkg-descr8
5 files changed, 109 insertions, 0 deletions
diff --git a/devel/janet-lsp/Makefile b/devel/janet-lsp/Makefile
new file mode 100644
index 000000000000..89feef4d797b
--- /dev/null
+++ b/devel/janet-lsp/Makefile
@@ -0,0 +1,60 @@
+PORTNAME= janet-lsp
+PORTVERSION= 0.0.11
+DISTVERSIONPREFIX= v
+PORTREVISION= 1
+CATEGORIES= devel
+
+MAINTAINER= dave@freedave.net
+COMMENT= LSP for lang/janet
+WWW= https://github.com/CFiggers/janet-lsp
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+# Technically jpm should depend on janet.
+BUILD_DEPENDS= janet>=1.17.2:lang/janet \
+ jpm>=1.1.0:lang/jpm
+RUN_DEPENDS= janet>=1.17.2:lang/janet
+
+USE_GITHUB= yes
+GH_ACCOUNT= CFiggers
+
+# These are a little more recent than latest releases. But there is no lockfile
+# so by default jpm(1) would use HEAD. There is also a conflict for cmd and the
+# CFiggers version is more recent (and required by janet-lsp).
+# Alphabetical order by project works but is coincidental and only because the
+# sole depenedency is 'judge' on 'cmd'.
+#
+# This ordering is respected in do-build.
+GH_TUPLE= CFiggers:cmd:b0a34d6:cmd \
+ CFiggers:jayson:4f54041:jayson \
+ ianthehenry:judge:3b92185:judge \
+ janet-lang:spork:7b780cc:spork
+
+SUB_FILES= janet-lsp
+
+PLIST_FILES= bin/janet-lsp \
+ lib/janet/janet-lsp.jimage \
+ lib/janet/.manifests/janet-lsp.jdn
+
+# Use GH_TUPLE project-hash as directory to avoid an unnecessary copy.
+do-build:
+.for dep in ${GH_TUPLE:C@^([^:]*):([^:]*):([^:]*):([^:]*)@\2-\3@}
+ cd ${WRKDIR}/${dep} && \
+ ${LOCALBASE}/bin/jpm --tree=${WRKSRC}/jpm_tree "install"
+.endfor
+ cd ${WRKSRC} && ${LOCALBASE}/bin/jpm --tree=${WRKSRC}/jpm_tree "install"
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${PREFIX}/lib/janet/.manifests
+ ${INSTALL_SCRIPT} ${WRKDIR}/janet-lsp \
+ ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+ ${INSTALL_DATA} ${WRKSRC}/jpm_tree/lib/janet-lsp.jimage \
+ ${STAGEDIR}${PREFIX}/lib/janet/janet-lsp.jimage
+ ${INSTALL_DATA} ${WRKSRC}/jpm_tree/lib/.manifests/janet-lsp.jdn \
+ ${STAGEDIR}${PREFIX}/lib/janet/.manifests/janet-lsp.jdn
+
+do-test:
+ cd ${WRKSRC} && jpm test -l
+
+.include <bsd.port.mk>
diff --git a/devel/janet-lsp/distinfo b/devel/janet-lsp/distinfo
new file mode 100644
index 000000000000..aea5462c51fe
--- /dev/null
+++ b/devel/janet-lsp/distinfo
@@ -0,0 +1,11 @@
+TIMESTAMP = 1765654720
+SHA256 (CFiggers-janet-lsp-v0.0.11_GH0.tar.gz) = 6dec1d75547cb99097415822605dc9d4bccd897bb1e206264b1280f38bbe824f
+SIZE (CFiggers-janet-lsp-v0.0.11_GH0.tar.gz) = 33575
+SHA256 (CFiggers-cmd-b0a34d6_GH0.tar.gz) = e5ed4f760d2d0beb607e554ed928232d908643bf5d1051a3d8e12fe9160e561c
+SIZE (CFiggers-cmd-b0a34d6_GH0.tar.gz) = 22306
+SHA256 (CFiggers-jayson-4f54041_GH0.tar.gz) = 2f88178be3f8cb44dad5cda8f140c85f010acb28820400998208ea3d292883c8
+SIZE (CFiggers-jayson-4f54041_GH0.tar.gz) = 3864843
+SHA256 (ianthehenry-judge-3b92185_GH0.tar.gz) = 904208053f675844d3e7cc18d21d893ecef356603df4ce1bdf6cd0933090163b
+SIZE (ianthehenry-judge-3b92185_GH0.tar.gz) = 31792
+SHA256 (janet-lang-spork-7b780cc_GH0.tar.gz) = 34cb553a153fa328b8e792435a2194700c822935baf184e9864d4fdabf50c37a
+SIZE (janet-lang-spork-7b780cc_GH0.tar.gz) = 267805
diff --git a/devel/janet-lsp/files/janet-lsp.in b/devel/janet-lsp/files/janet-lsp.in
new file mode 100644
index 000000000000..69eea77d05c3
--- /dev/null
+++ b/devel/janet-lsp/files/janet-lsp.in
@@ -0,0 +1,11 @@
+@comment | This file is normally created by `jpm install`. The problem is that
+@comment | it uses the path from --tree for janet and the full path to that tree
+@comment | for the image. Both wrong.
+@comment | See work/janet-lsp-*/jpm_tree/bin/janet-lsp for the version with the
+@comment | wrong paths that this replaces. It is this small.
+#!%%LOCALBASE%%/bin/janet
+(import janet-lsp)
+(put root-env :syspath "%%LOCALBASE%%/lib")
+
+(defn main [& args]
+ (janet-lsp/main ;args))
diff --git a/devel/janet-lsp/files/patch-src_main.janet b/devel/janet-lsp/files/patch-src_main.janet
new file mode 100644
index 000000000000..fd9ea4e1dfd2
--- /dev/null
+++ b/devel/janet-lsp/files/patch-src_main.janet
@@ -0,0 +1,19 @@
+--- src/main.janet.orig 2025-12-15 16:13:59 UTC
++++ src/main.janet
+@@ -16,12 +16,10 @@
+ (use judge)
+
+ (def version "0.0.11")
+-(def commit
+- (with [proc (os/spawn ["git" "rev-parse" "--short" "HEAD"] :xp {:out :pipe})]
+- (let [[out] (ev/gather
+- (ev/read (proc :out) :all)
+- (os/proc-wait proc))]
+- (if out (string/trimr out) ""))))
++
++# `git rev-parse --short HEAD` is going to find the revision of the ports tree.
++# The tag should be enough so just supply a string for commit.
++(def commit "FreeBSD")
+
+ (def jpm-defs (require "../libs/jpm-defs"))
+
diff --git a/devel/janet-lsp/pkg-descr b/devel/janet-lsp/pkg-descr
new file mode 100644
index 000000000000..b5ade15bab58
--- /dev/null
+++ b/devel/janet-lsp/pkg-descr
@@ -0,0 +1,8 @@
+This is an LSP server for the Janet language, supporting:
+
+Current features:
+* Auto-completion based on symbols in the Janet Standard Library and defined in
+ user code
+* On-hover definition of symbols as returned by (doc ,symbol)
+* Inline compiler errors
+* Pop-up signature help