gnu: Add emacs-clj-refactor.
[jackhill/guix/guix.git] / gnu / packages / emacs-xyz.scm
index 3c5443a..6a916be 100644 (file)
@@ -4594,6 +4594,27 @@ which is restored where possible when the file is loaded again.")
 strings.")
     (license license:gpl3+)))
 
+(define-public emacs-inflections
+  (package
+    (name "emacs-inflections")
+    (version "2.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/eschulte/jump.el")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (snippet #~(begin (delete-file "jump.el")))
+       (sha256
+        (base32 "03fh7i6blnbc0zbmp83fk095hr3q4fdvrvfxad74zghcbc2nk7b7"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/eschulte/jump.el")
+    (synopsis "Convert english words between singular and plural")
+    (description "This package provides an Emacs library for converting
+english words between singular and plural.")
+    (license license:gpl3+)))
+
 (define-public emacs-blight
   (let ((commit "6bf9c6192d2bf979eebbfae1963401ef3ff4ef5d")
         (revision "0"))
@@ -4862,34 +4883,36 @@ representation.")
       (license license:gpl2+))))
 
 (define-public emacs-git-gutter
-  (package
-    (name "emacs-git-gutter")
-    (version "0.92")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/syohex/emacs-git-gutter")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "1fkp6iyisb3g5afyjkxz4yj4ws5f8n7whklck4jdf3014vs01b3c"))))
-    (build-system emacs-build-system)
-    (home-page "https://github.com/syohex/emacs-git-gutter")
-    (synopsis "See and manage hunks of text in a version control system")
-    (description
-     "This package is an Emacs minor mode for displaying and interacting with
+  (let ((commit "ec28e85d237065cb3c28db4b66d129da6d309f9c")
+        (revision "0"))
+    (package
+      (name "emacs-git-gutter")
+      (version (git-version "0.92" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/syohex/emacs-git-gutter")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1fx3jp65ibcsv8akd8g4k701cs8yq0sg1bd2qszzfh6lvc4pblmi"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/syohex/emacs-git-gutter")
+      (synopsis "See and manage hunks of text in a version control system")
+      (description
+       "This package is an Emacs minor mode for displaying and interacting with
 hunks of text managed in a version control system.  Added modified and deleted
 areas can be indicated with symbols on the edge of the buffer, and commands
 can be used to move between and perform actions on these hunks.
 
 Git, Mercurial, Subversion and Bazaar are supported, and many parts of the
 display and behaviour is easily customisable.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-git-gutter-fringe
-  (let ((commit "16226caab44174301f1659f7bf8cc67a76153445")
-        (revision "1"))
+  (let ((commit "648cb5b57faec55711803cdc9434e55a733c3eba")
+        (revision "2"))
     (package
       (name "emacs-git-gutter-fringe")
       (version (git-version "0.23" revision commit))
@@ -4901,7 +4924,7 @@ display and behaviour is easily customisable.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1y77gjl0yznamdj0f55d418zb75k22izisjg7ikvrfsl2yfqf3pm"))))
+          (base32 "13bqq5r8ys2mmw1ffsm6hn6fji0vq3nx3slw98c9dgbvlprkaiip"))))
       (build-system emacs-build-system)
       (propagated-inputs
        (list emacs-git-gutter emacs-fringe-helper))
@@ -6981,14 +7004,14 @@ user.")
 (define-public emacs-subed
   (package
     (name "emacs-subed")
-    (version "1.0.10")
+    (version "1.0.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.nongnu.org/nongnu/subed-"
                                   version ".tar"))
               (sha256
                (base32
-                "08vw9sv2g76yj8sfnx53dd28zkj4s0842i7qi92jam993v9s8h0z"))))
+                "175bvnya6sbf4ikvcv4knb7mkn42wzp0jhnz9dns7y0s2f6d8fhd"))))
     (arguments
      (list
       #:tests? #t
@@ -7160,7 +7183,7 @@ Tracker as well as bug identifiers prepared for @code{bug-reference-mode}.")
            emacs-transient))
     (home-page "https://docs.kyleam.com/piem")
     (synopsis "Glue for working with public-inbox archives")
-    (description "This packages provides a collection of Emacs libraries for
+    (description "This package provides a collection of Emacs libraries for
 working with public-inbox archives.  As much of the hard work here is already
 done by other Emacs libraries—things like mail clients, news readers, Git
 interfaces, and even web browsers—piem is mostly about bridging some of these
@@ -8277,7 +8300,7 @@ and popup menus.")
       (propagated-inputs (list emacs-pos-tip emacs-popup))
       (home-page "https://github.com/waymondo/popup-kill-ring")
       (synopsis "Interactively insert item from kill-ring")
-      (description "This Emacs packages manages your Emacs kill-ring in an
+      (description "This Emacs package manages your Emacs kill-ring in an
 autocomplete style popup menu.")
       (license license:gpl3+))))
 
@@ -10929,6 +10952,29 @@ refactoring for the @uref{http://clojure.org, Clojure programming language}.
 It is recommended to use @code{clojure-mode} with Paredit or Smartparens.")
     (license license:gpl3+)))
 
+(define-public emacs-clj-refactor
+  (package
+    (name "emacs-clj-refactor")
+    (version "3.6.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/clojure-emacs/clj-refactor.el")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "15ya7hp5d2kwh1ig55d75vlghm1vsq99jh44i8q8v25vfmzjp7gp"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     (list emacs-yasnippet emacs-paredit emacs-multiple-cursors emacs-cider
+           emacs-clojure-mode emacs-parseedn emacs-hydra emacs-inflections))
+    (home-page "https://github.com/clojure-emacs/clj-refactor.el")
+    (synopsis "Powerful refactoring functionality for Clojure projects")
+    (description "This Emacs package complements the refactoring functionality
+you'd find in clojure-mode and CIDER.")
+    (license license:gpl3+)))
+
 (define-public emacs-clojure-snippets
   ;; Use latest commit (2018) since latest tagged release is too old and is
   ;; missing important changes.
@@ -11426,7 +11472,7 @@ strings, and code folding.")
         (base32 "1qin0hclm3ly62nl5ddiim64bcd2k74b1yqsqqc61cf9k2q8k287"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/redguardtoo/js-comint")
-    (synopsis "Interacting with a JavaScript interpeter")
+    (synopsis "Interacting with a JavaScript interpreter")
     (description
      "This program is a comint mode for Emacs which allows you to run a
 compatible JavaScript REPL, such as node, SpiderMonkey or Rhino.
@@ -11623,7 +11669,7 @@ like @code{org-edit-src-code} but for arbitrary regions.")
 (define-public emacs-projectile
   (package
     (name "emacs-projectile")
-    (version "2.5.0")
+    (version "2.6.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://raw.githubusercontent.com/bbatsov"
@@ -11631,7 +11677,7 @@ like @code{org-edit-src-code} but for arbitrary regions.")
               (file-name (string-append "projectile-" version ".el"))
               (sha256
                (base32
-                "1wy2kpli90z7p4dqr4b7f1fv99g6lfxi1kzy2bfl0p8qi40rpmyv"))))
+                "12crymgri4sg7fvnh692f96cm0krmmcnz6x3ypxgq8da84rl34p4"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-dash emacs-pkg-info))
@@ -17152,7 +17198,7 @@ which avoids some of the issues with using Emacs’s built-in Url library.")
 (define-public emacs-ement
   (package
     (name "emacs-ement")
-    (version "0.3.1")
+    (version "0.4")
     (source
      (origin
        (method git-fetch)
@@ -17161,7 +17207,7 @@ which avoids some of the issues with using Emacs’s built-in Url library.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ap4zxn2ba8bvmzm77aa4bnxgb1hnz5cymcim9jzy7b67bgapmy7"))))
+        (base32 "0pcszmcbq2lwjzpz3jd378sdqb7jh0v0c0ak49nmc5gciljjlzcg"))))
     (build-system emacs-build-system)
     (arguments
      `(#:emacs ,emacs))               ;need libxml support
@@ -17763,7 +17809,7 @@ included by default, and more can be readily added.")
 (define-public emacs-pubmed
   (package
     (name "emacs-pubmed")
-    (version "0.6.1")
+    (version "0.6.2")
     (source
      (origin
        (method git-fetch)
@@ -17773,7 +17819,7 @@ included by default, and more can be readily added.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1f884r3fs9nybf5y9dwp8f9m8azssxjy55z7bd0nl9pjll9rhsz2"))))
+         "05j4nhn2bgacc54pvmkhwgdsmzxzkcfn49a12k43wckrrf3izbqf"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-deferred emacs-esxml emacs-s emacs-unidecode))
@@ -20039,7 +20085,7 @@ citations.")
     (build-system emacs-build-system)
     (propagated-inputs (list emacs-org-roam emacs-citar))
     (home-page "https://github.com/emacs-citar/citar-org-roam")
-    (synopsis "Emacs pacakge to provide tighter Citar and Org-Roam integration")
+    (synopsis "Emacs package to provide tighter Citar and Org-Roam integration")
     (description "\
 Out-of-box, Citar provides default support for file-per-note bibliographic
 notes that are compatible with Org-Roam v2.  This package integrates directly
@@ -24395,6 +24441,43 @@ stories.  The default feed is top stories, which corresponds to the Hacker
 News homepage.")
     (license license:gpl3)))
 
+(define-public emacs-tokei
+  (package
+    (name "emacs-tokei")
+    (version "0.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nagy/tokei.el")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0gcjlcfxd4bg123gjf7d0vfvfd6zpd0da8svynglca1qhp77jkx1"))))
+    (build-system emacs-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'configure
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; .el is read-only in git.
+              (make-file-writable "tokei.el")
+              ;; Specify the absolute file name of tokei so that everything
+              ;; works out-of-the-box.
+              (emacs-substitute-variables "tokei.el"
+                ("tokei-program"
+                 (search-input-file inputs "/bin/tokei"))))))))
+    (inputs (list tokei))
+    (propagated-inputs (list emacs-magit))
+    (home-page "https://github.com/nagy/tokei.el")
+    (synopsis "Display codebase statistics in Emacs")
+    (description
+     "@code{emacs-tokei} is a major-mode for Emacs, that displays codebase
+statistics with the help of @code{tokei}.")
+    (license license:gpl3+)))
+
 (define-public emacs-youtube-dl
   (let ((commit "af877b5bc4f01c04fccfa7d47a2c328926f20ef4")
         (revision "2"))
@@ -24642,7 +24725,7 @@ backends, including the @command{wordnet} offline backend.")
 (define-public emacs-editorconfig
   (package
     (name "emacs-editorconfig")
-    (version "0.8.2")
+    (version "0.9.0")
     (source
      (origin
        (method git-fetch)
@@ -24652,7 +24735,7 @@ backends, including the @command{wordnet} offline backend.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1lqxgc24gr67yhi64i9v4w2dcjhpx99jg1kr25gr2byqkkdldkz0"))))
+         "0k1dnws3xz0xynplaar0f5dwpvdmsnqi0bnavjmvcm98jrczmk8y"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/editorconfig/editorconfig-emacs")
     (synopsis "Define and maintain consistent coding styles between different
@@ -31936,38 +32019,40 @@ arbitrary Emacs Lisp objects.")
     (license license:gpl3+)))
 
 (define-public emacs-csound-mode
-  (package
-    (name "emacs-csound-mode")
-    (version "0.2.1")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/hlolli/csound-mode")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "1c88ak0jaj51fwiqniqxd7xyk23wjl9m57znzm8j267ld8g12znp"))))
-    (build-system emacs-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'disable-breaking-compilation
-           (lambda _
-             (for-each (lambda (file)
-                         (chmod file #o600) ; needed to write changes.
-                         (emacs-batch-disable-compilation file))
-                       '("csound-font-lock.el"))
-             #t)))))
-    (inputs
-     (list emacs-highlight emacs-multi emacs-shut-up))
-    (home-page "https://github.com/hlolli/csound-mode")
-    (synopsis "Emacs major mode for coding in CSound")
-    (description "Provides both a basic major mode for editing
-CSound files, as well as a REPL for fast feedback when composing
-and sound-designing.")
-    (license license:gpl3+)))
+  ;; XXX: Upstream did not tag last release.  Using the commit matching
+  ;; version bump.
+  (let ((commit "44c49e5a9262ede4b4477bafb13b42b1ba047b9c"))
+    (package
+      (name "emacs-csound-mode")
+      (version "0.2.3")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/hlolli/csound-mode")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0kfhca1n0iv1400jf4ggjbarg7ry8ccd5bs7cf2brjdiqp74cvwb"))))
+      (build-system emacs-build-system)
+      (arguments
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'disable-breaking-compilation
+              (lambda _
+                (let ((file "csound-font-lock.el"))
+                  (make-file-writable file)
+                  (emacs-batch-disable-compilation file)))))))
+      (propagated-inputs
+       (list emacs-dash emacs-highlight emacs-multi emacs-shut-up))
+      (home-page "https://github.com/hlolli/csound-mode")
+      (synopsis "Emacs major mode for coding in CSound")
+      (description "This package provides both a basic major mode for editing
+CSound files, as well as a REPL for fast feedback when composing and
+sound-designing using CSound.")
+      (license license:gpl3+))))
 
 (define-public emacs-multi
   (package
@@ -31994,11 +32079,11 @@ the expectations of each branch to define which one to invoke.")
     (license license:expat)))
 
 (define-public emacs-highlight
-  (let ((commit "9258a2b8362d737115cbd87618f947eadb140411")
-        (revision "1"))
+  (let ((commit "24366dfd5062a6902a13a03d724fc099db3121b8")
+        (revision "2"))
     (package
       (name "emacs-highlight")
-      (version "0.0.0")
+      (version (git-version "0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -32008,7 +32093,7 @@ the expectations of each branch to define which one to invoke.")
          (file-name (git-file-name name commit))
          (sha256
           (base32
-           "0pbqzgbfkm8smi23j94hirxh2r1yc0ipyjbbv1y906br6bx5c1a8"))))
+           "17r7f4y6b05nq2pzaq8pwww0s6j64vd6fikyv7pliv1n74sljj0d"))))
       (build-system emacs-build-system)
       (home-page "https://github.com/emacsmirror/highlight")
       (synopsis "Highlighting commands for GNU Emacs")
@@ -32439,7 +32524,7 @@ s-expression.")
 (define-public emacs-map
   (package
     (name "emacs-map")
-    (version "3.2.1")
+    (version "3.3.1")
     (source
      (origin
        (method url-fetch)
@@ -32447,7 +32532,7 @@ s-expression.")
                            version ".tar"))
        (sha256
         (base32
-         "1vy231m2fm5cgz5nib14ib7ifprajhnbmzf6x4id48h2491m1n24"))))
+         "1gvywhdfg27nx6pyq7yfwq9x6j96jama59i5s9rp41pvg2dlmvm0"))))
     (build-system emacs-build-system)
     (home-page "http://elpa.gnu.org/packages/map.html")
     (synopsis "Map manipulation functions")
@@ -33410,6 +33495,31 @@ workspace diagnostics, symbols, and file symbols from @{emacs-lsp-mode}
 by leveraging @code{emacs-consult} APIs.")
     (license license:expat)))
 
+(define-public emacs-purs-mode
+  ;; XXX: Upstream set no tag nor any Version keyword.  Using 0 as the base
+  ;; version.
+  (let ((commit "d29f1021787a90d0fd3eb0af625958abb7f7506b")
+        (revision "0"))
+    (package
+      (name "emacs-purs-mode")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url "https://github.com/PureFunctor/purs-mode")
+           (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0r7219ysf3hsjnan30hidf8jamcqsz36pkcmnhknff0c6dpwbnpx"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/PureFunctor/purs-mode/")
+      (synopsis "PureScript major mode for Emacs")
+      (description
+       "Purs mode provides a PureScript major mode for Emacs.")
+      (license license:gpl3+))))
+
 (define-public emacs-pdb-capf
   (let ((commit "31602ccab53aa7dcf26a1af222c7da2bcc1390ed")
         (revision "0"))
@@ -33477,6 +33587,47 @@ tree to go back to previous buffer states.  To use vundo, type @kbd{M-x vundo RE
 the buffer you want to undo.  An undo tree buffer should pop up.")
     (license license:gpl3+)))
 
+(define-public emacs-org-cliplink
+  (let ((commit "13e0940b65d22bec34e2de4bc8cba1412a7abfbc")
+        (revision "0"))
+    (package
+      (name "emacs-org-cliplink")
+      (version (git-version "0.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url "https://github.com/rexim/org-cliplink")
+           (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1avyiw8vlv4n1r7zqvc6wjlsz7jl2pqaprzpm782gzp0c999pssl"))))
+      (build-system emacs-build-system)
+      (arguments
+       (list
+        #:tests? #t
+        #:test-command #~(list "ert-runner")
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'patch-curl-executable
+              (lambda* (#:key inputs #:allow-other-keys)
+                (substitute* "org-cliplink-transport.el"
+                  (("\\(executable-find \"curl\"\\)")
+                   (let ((curl (search-input-file inputs "/bin/curl")))
+                     (string-append "\"" curl "\"")))))))))
+      (native-inputs
+       (list emacs-el-mock emacs-ert-runner emacs-undercover))
+      (inputs
+       (list curl))
+      (home-page "https://github.com/rexim/org-cliplink/")
+      (synopsis "Insert Org mode links from the clipboard")
+      (description
+       "Org Cliplink provides a simple command that takes a URL from the
+clipboard and inserts an Org mode link with a title of a page found by the URL
+into the current buffer.")
+      (license license:expat))))
+
 (define-public emacs-project-x
   ;; There is no proper release.
   ;; The base version is extracted from the README.org.