summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--devel/Makefile1
-rw-r--r--devel/janet-lsp/Makefile55
-rw-r--r--devel/janet-lsp/distinfo11
-rw-r--r--devel/janet-lsp/files/patch-project.janet29
-rw-r--r--devel/janet-lsp/files/patch-src_main.janet19
-rw-r--r--devel/janet-lsp/pkg-descr8
6 files changed, 123 insertions, 0 deletions
diff --git a/devel/Makefile b/devel/Makefile
index c165c9779084..f32153b3d24b 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -1070,6 +1070,7 @@
SUBDIR += ittapi
SUBDIR += ivykis
SUBDIR += jam
+ SUBDIR += janet-lsp
SUBDIR += jansson
SUBDIR += java-findbugs
SUBDIR += jclassinfo
diff --git a/devel/janet-lsp/Makefile b/devel/janet-lsp/Makefile
new file mode 100644
index 000000000000..4e6d46e92a30
--- /dev/null
+++ b/devel/janet-lsp/Makefile
@@ -0,0 +1,55 @@
+PORTNAME= janet-lsp
+PORTVERSION= 0.0.11
+DISTVERSIONPREFIX= v
+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
+
+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
+
+PLIST_FILES= bin/janet-lsp
+
+# `jpm install` does not actually install anyway. This does a build (with no
+# dependency checking, which is why order matters) and install to the work
+# "jpm_tree". Which is where all the dependencies and the project expect to find
+# any of their build dependencies.
+#
+# 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 build
+
+do-install:
+ ${MKDIR} ${STAGEDIR}/bin
+ ${INSTALL_PROGRAM} ${WRKSRC}/build/janet-lsp \
+ ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+
+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/patch-project.janet b/devel/janet-lsp/files/patch-project.janet
new file mode 100644
index 000000000000..90c646d2579e
--- /dev/null
+++ b/devel/janet-lsp/files/patch-project.janet
@@ -0,0 +1,29 @@
+--- project.janet.orig 2025-09-05 00:00:02 UTC
++++ project.janet
+@@ -7,16 +7,17 @@
+ "https://github.com/ianthehenry/judge.git"
+ "https://github.com/CFiggers/cmd.git"])
+
+-# (def cflags
+-# (case (os/which)
+-# :windows []
+-# ["-s"]))
++(def cflags
++ (case (os/which)
++ :windows []
++ :freebsd []
++ ["-s"]))
+
+-# (declare-executable
+-# :name "janet-lsp"
+-# :entry "src/main.janet"
+-# :cflags cflags
+-# :install true)
++(declare-executable
++ :name "janet-lsp"
++ :entry "src/main.janet"
++ :cflags cflags
++ :install true)
+
+ (declare-archive
+ :name "janet-lsp"
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