summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim@guixotic.coop>2025-06-18 09:58:24 +0900
committerjgart <jgart@dismail.de>2025-06-23 20:06:59 -0400
commit256cbc134773c27c6c0bde443d9932390f44ac96 (patch)
treea739d08a31f8fe9e18245bd99b804b7c59d6c852
parent3f91b6221eb1062be9b0e8c8f65e8421d7edbd9e (diff)
gnu: Add pls.
* gnu/packages/perl.scm (pls): New variable. Change-Id: I76938567bbaedf355a49fb84e4d5964cea253d09 Signed-off-by: jgart <jgart@dismail.de>
-rw-r--r--gnu/packages/perl.scm61
1 files changed, 61 insertions, 0 deletions
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 68c135a377..779b93ccdc 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -9978,6 +9978,67 @@ to the other justmodern languages that have a normal regular expression engine
available.")
(license (package-license perl))))
+(define-public pls
+ (package
+ (name "pls")
+ (version "0.905")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://cpan/authors/id/M/MR/MREISNER/PLS-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "0a9f612wlz8x5zjpyk116jyfp81cl0g30ppyrg1iar61k4kvama5"))))
+ (build-system perl-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'wrap-pls
+ (lambda _
+ ;; This is to avoid having to propagate inputs.
+ (wrap-program (string-append #$output "/bin/pls")
+ `("PERL5LIB" ":" prefix
+ (,(getenv "PERL5LIB")
+ ,(string-append #$output "/lib/perl5/site_perl")))))))))
+ (inputs
+ (list bash-minimal ;for wrap-program
+ perl-critic
+ perl-future
+ perl-future-queue
+ perl-io-async
+ perl-json-xs
+ perl-path-tiny
+ perl-pod-markdown
+ perl-ppi
+ perl-ppr
+ perl-tidy
+ perl-uri))
+ (home-page "https://metacpan.org/release/PLS")
+ (synopsis "Perl language server")
+ (description "PLS is a Perl language server that implements a subset of
+the Language Server Protocol for the Perl language. Features currently
+implemented are:
+@itemize
+@item Go to definition (for packages, subroutines, and variables)
+@item Listing all symbols in a document
+@item Hovering to show documentation
+@item Signature help (showing parameters for a function as you type)
+@item Formatting
+@item Range formatting
+@item Auto-completion
+@item Syntax checking
+@item Linting (using perlcritic)
+@item Sorting imports
+@end itemize
+
+To use this language with Emacs, you can configure Eglot like so:
+@lisp
+(add-hook 'perl-mode-hook 'eglot-ensure)
+(setq eglot-server-programs '((perl-mode . (\"pls\"))))
+@end lisp")
+ (license license:perl-license)))
+
(define-public perl-pod-coverage
(package
(name "perl-pod-coverage")