mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-04-06 21:20:33 +02:00
gnu: Add lua-language-server.
* gnu/packages/lua.scm (lua-language-server): New variable. Change-Id: I2e110acf855b81f3d9e7b3228fc5fbf0827cb884
This commit is contained in:
@@ -531,6 +531,106 @@ such as:
|
|||||||
build system that uses the standard Lua command-line interpreter.")
|
build system that uses the standard Lua command-line interpreter.")
|
||||||
(license license:expat)))
|
(license license:expat)))
|
||||||
|
|
||||||
|
(define-public lua-language-server
|
||||||
|
(package
|
||||||
|
(name "lua-language-server")
|
||||||
|
(version "3.16.4")
|
||||||
|
(source (origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://github.com/LuaLS/lua-language-server")
|
||||||
|
(commit version)
|
||||||
|
;; There are quite a few bundled Lua libraries under the
|
||||||
|
;; '3rd' and 'meta/3rd' directories; most are currently
|
||||||
|
;; not packaged in Guix, and they all track exact
|
||||||
|
;; commits, so it would be annoying to maintain them as
|
||||||
|
;; separate origins (on top of having to patch the build
|
||||||
|
;; system to unbundle them).
|
||||||
|
(recursive? #t)))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"0kbbwz9cjw9b8sii2hki51s968n551r8z46h9gp9bd2m3g3l1l75"))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(arguments
|
||||||
|
(list
|
||||||
|
;; The test suite currently fails with luamake apparently attempting to
|
||||||
|
;; find the bee.so shared object (see:
|
||||||
|
;; <https://github.com/LuaLS/lua-language-server/issues/3325>).
|
||||||
|
#:tests? #f
|
||||||
|
#:phases
|
||||||
|
#~(modify-phases %standard-phases
|
||||||
|
(delete 'configure)
|
||||||
|
(replace 'build
|
||||||
|
(lambda* (#:key parallel-build? #:allow-other-keys)
|
||||||
|
(invoke "luamake"
|
||||||
|
"-notest"
|
||||||
|
"-j" (if parallel-build?
|
||||||
|
(number->string (parallel-job-count))
|
||||||
|
"1")
|
||||||
|
"-v")))
|
||||||
|
(replace 'check
|
||||||
|
(lambda* (#:key parallel-tests? tests? #:allow-other-keys)
|
||||||
|
(when tests?
|
||||||
|
(invoke "luamake"
|
||||||
|
"-j" (if parallel-tests?
|
||||||
|
(number->string (parallel-job-count))
|
||||||
|
"1")
|
||||||
|
"test" "-v"))))
|
||||||
|
(replace 'install
|
||||||
|
;; This is inspired by the package definition in Slackware.
|
||||||
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
|
(let* ((bin (string-append #$output "/bin"))
|
||||||
|
(lib (string-append #$output
|
||||||
|
"/libexec/lua-language-server"))
|
||||||
|
(lib/bin (string-append lib "/bin")))
|
||||||
|
;; XXX: The binary expects some odd layout to find its resources,
|
||||||
|
;; hence the bin subdirectory under libexec.
|
||||||
|
(mkdir-p lib)
|
||||||
|
(for-each (lambda (x)
|
||||||
|
(copy-recursively x (string-append lib "/" x)))
|
||||||
|
(list "bin"
|
||||||
|
"debugger.lua"
|
||||||
|
"locale"
|
||||||
|
"main.lua"
|
||||||
|
"meta"
|
||||||
|
"script"))
|
||||||
|
;; Create a custom wrapper, adjusted to log elsewhere than in
|
||||||
|
;; its read-only location under the store.
|
||||||
|
(mkdir bin)
|
||||||
|
(call-with-output-file (string-append bin "/lua-language-server")
|
||||||
|
(lambda (p)
|
||||||
|
(format p "#!~a
|
||||||
|
exec ~a --logpath=\"/tmp/runtime-$USER/lua-language-server/log\" \
|
||||||
|
--metapath=\"/tmp/runtime-$USER/lua-language-server/meta\" \"$@\""
|
||||||
|
(search-input-file inputs "bin/sh")
|
||||||
|
(string-append lib/bin
|
||||||
|
"/lua-language-server"))))
|
||||||
|
(chmod (string-append bin "/lua-language-server") #o755)))))))
|
||||||
|
(native-inputs (list luamake))
|
||||||
|
(inputs (list bash-minimal)) ;for the wrapper
|
||||||
|
(home-page "https://github.com/LuaLS/lua-language-server")
|
||||||
|
(synopsis "Lua language server")
|
||||||
|
(description "The Lua language server provides various language
|
||||||
|
features for Lua to make development easier and faster, including:
|
||||||
|
@itemize
|
||||||
|
@item Support for all recent versions of Lua, including LuaJIT
|
||||||
|
@item Jump to definition
|
||||||
|
@item Dynamic type checking
|
||||||
|
@item Find references
|
||||||
|
@item Diagnostics/Warnings
|
||||||
|
@item Syntax checking
|
||||||
|
@item Element renaming
|
||||||
|
@item Hover to view details on variables, functions, and more
|
||||||
|
@item Auto-completion
|
||||||
|
@item Support for libraries
|
||||||
|
@item Code formatting
|
||||||
|
@item Spell checking
|
||||||
|
@item Custom plugins
|
||||||
|
@item Documentation generation
|
||||||
|
@end itemize")
|
||||||
|
(license license:expat)))
|
||||||
|
|
||||||
(define (make-lua-ossl name lua)
|
(define (make-lua-ossl name lua)
|
||||||
(package
|
(package
|
||||||
(name name)
|
(name name)
|
||||||
|
|||||||
Reference in New Issue
Block a user