diff options
Diffstat (limited to 'gnu/packages/emacs-xyz.scm')
-rw-r--r-- | gnu/packages/emacs-xyz.scm | 477 |
1 files changed, 368 insertions, 109 deletions
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 802cf1ccaa..c4de0e1d1f 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -132,6 +132,9 @@ ;;; Copyright © 2023 Fabio Natali <me@fabionatali.com> ;;; Copyright © 2023 Arnaud Lechevallier <arnaud.lechevallier@free.fr> ;;; Copyright © 2023 Ahmad Draidi <a.r.draidi@redscript.org> +;;; Copyright © 2023 Sergiu Ivanov <sivanov@colimite.fr> +;;; Copyright © 2023 Camilo Q.S. (Distopico) <distopico@riseup.net> +;;; Copyright © 2023 Thanos Apollo <public@thanosapollo.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -179,6 +182,7 @@ #:use-module (gnu packages djvu) #:use-module (gnu packages ebook) #:use-module (gnu packages emacs) + #:use-module (gnu packages enchant) #:use-module (gnu packages fonts) #:use-module (gnu packages freedesktop) #:use-module (gnu packages games) @@ -491,6 +495,25 @@ just one-off queries and multiple independent sessions. It requires an OpenAI API key.") (license license:gpl3+))) +(define-public emacs-chatgpt-shell + (package + (name "emacs-chatgpt-shell") + (version "0.74.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/xenodium/chatgpt-shell") + (commit "1de7bfa6a34f20cca813006282d9a8f2ef291f95"))) + (sha256 + (base32 + "1rabpp70qlmc47lmp2v7ckvfjhy6wkk881fxpbv2dchzhn77qk5r")))) + (build-system emacs-build-system) + (home-page "https://github.com/xenodium/chatgpt-shell") + (synopsis "ChatGPT and DALL-E Emacs shells + Org Babel") + (description + "chatgpt-shell is a comint-based ChatGPT shell for Emacs.") + (license license:gpl3+))) + (define-public emacs-geiser-guile (package (name "emacs-geiser-guile") @@ -1441,8 +1464,10 @@ libgit2 bindings for Emacs, intended to boost the performance of Magit.") (license license:gpl2+)))) (define-public emacs-magit - (let ((commit "a760dd107843a8fb632e647f6ba9ed34d7c2dd45") - (revision "4")) + ;; Use this unreleased commit to benefit from a recent improvements with + ;; regard to adding git trailers such as "Reviewed-by". + (let ((commit "7a1d50347086678217cf90a32dda277b76ea3081") + (revision "6")) (package (name "emacs-magit") (version (git-version "3.3.0" revision commit)) @@ -1454,7 +1479,7 @@ libgit2 bindings for Emacs, intended to boost the performance of Magit.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0pqw171xi9vrlm0jkz53bhl18z2vnycn2bynb7lh6g5zgppkzdy0")))) + (base32 "1yn3v24w0sx6r8jqw8blfvyjdjfz5xa7c3x8p6xw1lj7b81l8i0l")))) (build-system emacs-build-system) (arguments (list @@ -2534,6 +2559,29 @@ and help selectively enable or disable diagnostic functions based on major modes.") (license license:expat))) +(define-public emacs-flymake-guile + (package + (name "emacs-flymake-guile") + (version "0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url + "https://framagit.org/flymake-backends/flymake-guile.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0cb2wcn34bzj93y7s1g2b2sxv79vqihb3a5n0rhxbrddfila95hh")))) + (build-system emacs-build-system) + (home-page "https://framagit.org/flymake-backends/flymake-guile") + (synopsis "GNU Guile support for Flymake") + (description + "This package provides a Flymake backend for GNU Guile using @code{guild +compile}.") + (license license:gpl3+))) + (define-public emacs-flymake-popon (package (name "emacs-flymake-popon") @@ -4104,6 +4152,42 @@ writing input files for TeX, LaTeX, ConTeXt, Texinfo, and docTeX using Emacs or XEmacs.") (license license:gpl3+))) +(define-public emacs-latex-extra + (let ((commit "a81e7588448f85c5fcc3f3fc71cf957d0928a656") + (revision "0")) + (package + (name "emacs-latex-extra") + (version (git-version "1.14" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Malabarba/latex-extra") + (commit commit))) + (sha256 + (base32 + "0sajg5vmygnkcnmkrpf8r7c4b8v95hgsv1y6pz868jpznmldnxkb")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (arguments + (list + #:tests? #true + #:test-command + #~(list "emacs" "-Q" "--batch" + "--eval=(cd \"tests/\")" + "-l" "latex-extra-test.el" + "-f" "ert-run-tests-batch-and-exit") + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'set-home + (lambda _ (setenv "HOME" (getcwd))))))) + (propagated-inputs (list emacs-auctex)) + (home-page "https://github.com/Malabarba/latex-extra") + (synopsis "Usability improvements for LaTeX mode") + (description + "Latex-extra defines extra commands and keys for LaTeX mode, as well +as brings user experience improvements.") + (license license:gpl3+)))) + (define-public emacs-autothemer (let ((commit "8f72afc6dba5ad7cc3a201a084fd20571f945d2e")) ;version bump (package @@ -10267,6 +10351,66 @@ insertion mode. When enabled all keys are implicitly prefixed with sgml/html integration, and indentation (working with sgml).") (license license:gpl3+))) +(define-public emacs-jinx + (package + (name "emacs-jinx") + (version "0.8") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/minad/jinx") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1y097rnf9zg26jf4vh74a0laddfp4x6pp1fjqs3xqgwc0cmdq59w")))) + (build-system emacs-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'expand-load-path 'build-jinx-mod + (lambda* _ + (invoke + "emacs" "--batch" "-L" "." + "-l" "jinx.el" + "-f" "jinx--load-module"))) + (add-after 'expand-load-path 'build-info + (lambda _ + (invoke "emacs" "--batch" + "--eval=(require 'ox-texinfo)" + "--eval=(find-file \"README.org\")" + "--eval=(org-texinfo-export-to-info)"))) + (add-after 'build-jinx-mod 'patch-path-to-jinx-mod + (lambda _ + (let ((file "jinx.el")) + (make-file-writable file) + (emacs-substitute-sexps file + ("\"Compile and load dynamic module.\"" + `(module-load + ,(string-append #$output + "/lib/emacs/jinx-mod.so"))))))) + (add-after 'install 'install-jinx-mod + (lambda _ + (install-file "jinx-mod.so" + (string-append #$output "/lib/emacs")))) + (add-after 'install 'install-info + (lambda _ + (install-file "jinx.info" + (string-append #$output "/share/info"))))))) + (inputs (list enchant)) + (propagated-inputs (list emacs-compat)) + (native-inputs (list emacs-compat enchant pkg-config texinfo)) + (home-page "https://github.com/minad/jinx") + (synopsis "Emacs Enchanted Spell Checker") + (description "Jinx is a just-in-time spell-checker for Emacs +based on the enchant library. It lazily highlights misspelled words in the +text of the visible portion of the buffer by honouring window boundaries as +well as text folding, if any.") + (license license:gpl3+))) + (define-public emacs-jit-spell (package (name "emacs-jit-spell") @@ -10435,6 +10579,31 @@ org-mode elements depending on cursor position. Hidden fragment parts appear when the cursor enters a fragment and disappear when it leaves.") (license license:expat))) +(define-public emacs-org-dailies + ;; No tags or versions. + (let ((commit "64477d5c5cd92df72ba1375eeb149889d42371d7") + (revision "0")) + (package + (name "emacs-org-dailies") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~ngraves/org-dailies") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1lxm2xr743c2a5wj82qpprcdfsspcw33ijyq5wfbhcv2kngm4yql")))) + (build-system emacs-build-system) + (propagated-inputs (list emacs-dash)) + (home-page "https://git.sr.ht/~ngraves/org-dailies") + (synopsis "Bare-bones daily journaling with Emacs") + (description + "This package provides daily journaling helpers. It is a bare-bones +copy of the org-roam-dailies extension without org-roam.") + (license license:gpl3+)))) + (define-public emacs-org-drill (package (name "emacs-org-drill") @@ -11467,8 +11636,8 @@ and present results either as single emails or full trees.") (license license:gpl3+))) (define-public emacs-consult-org-roam - (let* ((commit "9572c5bc194a583dc9e86ea7d2751959d86b5c78") - (revision "0")) + (let* ((commit "2ca42a1c1641a29f1447d35be01bd1fda368a9e2") + (revision "1")) (package (name "emacs-consult-org-roam") (version (git-version "0.1" revision commit)) @@ -11481,7 +11650,7 @@ and present results either as single emails or full trees.") (file-name (git-file-name name version)) (sha256 (base32 - "0c2hjd2gw77h77487fzdqfybg0ricsvlnwwfxai9baawz37bcn7q")))) + "142fra7wap6dfwd4c82j7z3nk1yw78slrwhjx6vkiql8ylbiw5fi")))) (build-system emacs-build-system) (propagated-inputs (list emacs-consult emacs-org-roam)) (home-page "https://github.com/jgru/consult-org-roam") @@ -11493,25 +11662,28 @@ versions utilizing Consult's internal API.") (license license:gpl3+)))) (define-public emacs-consult-eglot - (package - (name "emacs-consult-eglot") - (version "0.2.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/mohkale/consult-eglot") - (commit (string-append "v" version)))) - (sha256 - (base32 "1qxk1npxbf8m3g9spikgdxcf6mzjx6cwy3f5vn6zz5ksh14xw3sd")) - (file-name (git-file-name name version)))) - (build-system emacs-build-system) - (propagated-inputs (list emacs-consult emacs-eglot)) - (home-page "https://github.com/mohkale/consult-eglot") - (synopsis "Consulting-read interface for eglot") - (description "This package acts as a parallel of consult-lsp for eglot and + (let ((revision "0") + (commit "db9d41c9812a5a8a7b9a22fa7f3c314e37584d41")) + (package + (name "emacs-consult-eglot") + (version (git-version "0.2.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mohkale/consult-eglot") + (commit commit))) + (sha256 + (base32 + "1xcv9lj4r9s584gfkbqi9dmi045a3phb2x63fzfd7vpdy15xg47n")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (propagated-inputs (list emacs-consult emacs-eglot)) + (home-page "https://github.com/mohkale/consult-eglot") + (synopsis "Consulting-read interface for eglot") + (description "This package acts as a parallel of consult-lsp for eglot and provides a front-end interface for the workspace/symbols LSP procedure call.") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public emacs-consult-flycheck ;; This particular commit introduces bug fixes above latest release. @@ -12268,30 +12440,27 @@ The following completions are currently available: (license license:gpl3+))) (define-public emacs-sway - ;; Commit from Nicola's fork (dash free version with various improvments) - (let ((commit "838ef531a30fe616f0141adbdabc132d4edfd374") - (revision "0")) - (package - (name "emacs-sway") - (version (git-version "0.6.1" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/thblt/sway.el") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0ddaz8my3z4ca2z81kf1h8773pyx8h0l0ra3ssqd1rq5j0041wdh")))) - (build-system emacs-build-system) - (home-page "https://github.com/thblt/sway.el") - (synopsis "Communication with the Sway window manager") - (description - "This is a basic library to control the Sway window manager from Emacs. + (package + (name "emacs-sway") + (version "0.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/thblt/sway.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1w29dkl7s835zgwnc4jx1cp84s6mmwbvlil8z2c31psy0rlajc6i")))) + (build-system emacs-build-system) + (home-page "https://github.com/thblt/sway.el") + (synopsis "Communication with the Sway window manager") + (description + "This is a basic library to control the Sway window manager from Emacs. Its main use case is in combination with popup managers like Shackle, to use frames instead of windows while still giving focus to existing frames instead of duplicating them.") - (license license:gpl3+)))) + (license license:gpl3+))) (define-public emacs-sweet-theme (let ((commit "78f741806ecebe01224bf54d09ad80e306652508") @@ -18132,11 +18301,12 @@ in Emacs.") (package (name "emacs-php-mode") (version "1.25.0") + (home-page "https://github.com/emacs-php/php-mode") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/ejmr/php-mode") + (url home-page) (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -18159,7 +18329,6 @@ in Emacs.") (lambda _ (chdir "lisp")))))) (propagated-inputs (list emacs-projectile)) - (home-page "https://github.com/ejmr/php-mode") (synopsis "Major mode for editing PHP code") (description "PHP mode is a major mode for editing PHP source code. It's an extension @@ -27725,6 +27894,33 @@ as playing them in some video player, or downloading them.") and comments.") (license license:gpl3+)))) +(define-public emacs-yeetube + (package + (name "emacs-yeetube") + (version "1.4.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~thanosapollo/yeetube.el") + (commit version))) + (sha256 + (base32 + "0vfap6sri6qnswrjsp6qvmrp98bvrfh58gwdqbjiakq1fzvcrm03")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (inputs + (list mpv yt-dlp)) + (home-page "https://sr.ht/~thanosapollo/yeetube.el") + (synopsis "Youtube & Invidious front-end for Emacs") + (description + "This package offers an Emacs interface that allows you to search YouTube +or an Invidious instance for a specific query. The search results are shown as +links in an org-mode buffer. The videos can be opened to a user-defined video +player(by default mpv) or downloaded using yt-dlp. This package also includes +a yt-dlp front-end.") + (license license:gpl3+))) + (define-public emacs-org-web-tools (package (name "emacs-org-web-tools") @@ -30103,6 +30299,27 @@ displays as you type thanks to Helm, though @command{notmuch-search} does the real search.") (license license:gpl3+))) +(define-public emacs-notmuch-indicator + (package + (name "emacs-notmuch-indicator") + (version "1.0.1") + (home-page "https://git.sr.ht/~protesilaos/notmuch-indicator") + (source (origin + (method url-fetch) + (uri (string-append + "https://elpa.gnu.org/packages/notmuch-indicator-" version + ".tar")) + (sha256 + (base32 + "1n5k2ikk93mdwqqysf6l7gd8i6iazk8yvbqpf8xnz5zny248cc2x")))) + (build-system emacs-build-system) + (synopsis "Display a mode line indicator with @code{notmuch-count} output") + (description "This package renders an indicator with an email count of the +@code{notmuch} index on the Emacs mode line. The underlying mechanism is that of +@code{notmuch-count}, which is used to find the number of items that match the +given search terms.") + (license license:gpl3+))) + (define-public emacs-notmuch-maildir (package (name "emacs-notmuch-maildir") @@ -30150,43 +30367,47 @@ as Emacs Lisp.") (license license:gpl3+))) (define-public emacs-transient - (package - (name "emacs-transient") - (version "0.4.3") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/magit/transient") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "03qs1bj7dxgdppzcnhzmldpdam1h8kzd0ps2bk82slypm7d63nay")))) - (build-system emacs-build-system) - (arguments - `(#:tests? #f ;no test suite - #:phases (modify-phases %standard-phases - (add-after 'unpack 'build-info-manual - (lambda _ - (invoke "make" "info") - ;; Move the info file to lisp so that it gets - ;; installed by the emacs-build-system. - (rename-file "docs/transient.info" - "lisp/transient.info"))) - (add-after 'build-info-manual 'enter-lisp-directory - (lambda _ - (chdir "lisp")))))) - (native-inputs (list texinfo)) - (propagated-inputs (list emacs-compat)) - (home-page "https://magit.vc/manual/transient") - (synopsis "Transient commands in Emacs") - (description - "Taking inspiration from prefix keys and prefix arguments + ;; Use this unreleased commit to support a recent Magit change needed to add + ;; Reviewed-by: tags for any contributor. + (let ((commit "cc0fa80530b02493f73b870032bfcdd1435286cd") + (revision "0")) + (package + (name "emacs-transient") + (version (git-version "0.4.3" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magit/transient") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "10yaanpz3krh3f9vzyafg6n85yp8sk58gj9vrpsqg926x4m0w1p1")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #f ;no test suite + #:phases (modify-phases %standard-phases + (add-after 'unpack 'build-info-manual + (lambda _ + (invoke "make" "info") + ;; Move the info file to lisp so that it gets + ;; installed by the emacs-build-system. + (rename-file "docs/transient.info" + "lisp/transient.info"))) + (add-after 'build-info-manual 'enter-lisp-directory + (lambda _ + (chdir "lisp")))))) + (native-inputs (list texinfo)) + (propagated-inputs (list emacs-compat)) + (home-page "https://magit.vc/manual/transient") + (synopsis "Transient commands in Emacs") + (description + "Taking inspiration from prefix keys and prefix arguments in Emacs, Transient implements a similar abstraction involving a prefix command, infix arguments and suffix commands. We could call this abstraction a \"transient command\", but because it always involves at least two commands (a prefix and a suffix) we prefer to call it just a \"transient\".") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public emacs-forge (package @@ -31081,6 +31302,41 @@ current subtree. The cards are inserted under a new ``Cards'' heading in the current tree.") (license license:gpl3+)))) +(define-public emacs-org-dynamic-agenda + (package + (name "emacs-org-dynamic-agenda") + (version "0.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~ngraves/org-dynamic-agenda") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1yw5ns7ar5mbj8yfhd6m5kigssb3csxjhwvmjggksq1557w1ypmx")))) + (build-system emacs-build-system) + (arguments + (list #:include + #~(list "org-dynamic-agenda\\.el" "README\\.org"))) + (home-page "https://git.sr.ht/~ngraves/org-dynamic-agenda") + (synopsis "Dynamically generate org-agenda-files") + (description + "This package dynamically generates org-agenda-files.") + (license license:gpl3+))) + +(define-public emacs-org-ql-dynamic-agenda + (package + (inherit emacs-org-dynamic-agenda) + (name "emacs-org-ql-dynamic-agenda") + (arguments + (list #:include + #~(list "org-ql-dynamic-agenda\\.el" "README\\.org"))) + (propagated-inputs (list emacs-org-ql)) + (description + "This package dynamically generates org-agenda-files, and take advantage +of the org-ql cache."))) + (define-public emacs-dash-docs (let ((commit "dafc8fc9f1ddb2e4e39e0b8d066c42d5d7ce8d06") (revision "2")) @@ -32535,37 +32791,40 @@ time.") (license license:gpl3+))) (define-public emacs-mastodon - (package - (name "emacs-mastodon") - (version "1.0.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://codeberg.org/martianh/mastodon.el") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "13swcbvwhjl8ksrgzvmfafkgd3iz8znk49bs1n48w3g9qvh097w7")))) - (build-system emacs-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - ;; Move the source files to the top level, which is included in - ;; the EMACSLOADPATH. - (add-after 'unpack 'move-source-files - (lambda _ - (let ((el-files (find-files "./lisp" ".*\\.el$"))) - (for-each (lambda (f) - (rename-file f (basename f))) - el-files))))))) - (propagated-inputs - (list emacs-request)) - (home-page "https://codeberg.org/martianh/mastodon.el") - (synopsis "Emacs client for Mastodon") - (description "@code{mastodon.el} is an Emacs client for Mastodon, the + ;; No release in ~1 year, hence this snapshot. + (let ((commit "20dec8871c9bb5f5e418bfc197e7533b5e3065e3") + (revision "1")) + (package + (name "emacs-mastodon") + (version (git-version "1.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://codeberg.org/martianh/mastodon.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "15cfjny99yw5frdp8nlyazlwgscvfvbinsj0fbdfprxf50k2zjs6")))) + (build-system emacs-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + ;; Move the source files to the top level, which is included in + ;; the EMACSLOADPATH. + (add-after 'unpack 'move-source-files + (lambda _ + (let ((el-files (find-files "./lisp" ".*\\.el$"))) + (for-each (lambda (f) + (rename-file f (basename f))) + el-files))))))) + (propagated-inputs + (list emacs-request emacs-ts emacs-persist)) + (home-page "https://codeberg.org/martianh/mastodon.el") + (synopsis "Emacs client for Mastodon") + (description "@code{mastodon.el} is an Emacs client for Mastodon, the federated microblogging social network.") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public emacs-ebdb (package |