rekahsoft-guix/rekahsoft-gnu/packages/emacs-xyz.scm

590 lines
20 KiB
Scheme

;;; Copyright © 2020 Collin J. Doering <collin@rekahsoft.ca>
;;;
;;; This file is part of the GNU Guix channel rekahsoft-guix
;;;
;;; The rekahsoft-guix channel for GNU Guix is free software; you can
;;; redistribute it and/or modify it under the terms of the GNU General Public
;;; License as published by the Free Software Foundation; either version 3 of
;;; the License, or (at your option) any later version.
;;;
;;; The rekahsoft-guix channel for GNU Guix is distributed in the hope that it
;;; will be useful, but WITHOUT ANY WARRANTY; without even the implied
;;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License along
;;; with the rekahsoft-guix channel for GNU Guix. If not, see
;;; <http://www.gnu.org/licenses/>.
(define-module (rekahsoft-gnu packages emacs-xyz)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system emacs)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages emacs)
#:use-module (gnu packages emacs-xyz)
#:use-module (gnu packages curl)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match))
;;;
;;; Emacs hacking.
;;;
(define-public emacs-treemacs-20201225
(package
(inherit emacs-treemacs)
(version "6b045fd585421ab3c9e1185c2508d34af700490b")
(name "emacs-treemacs-20201225")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/Alexander-Miller/treemacs")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0sifzkhyd4k2ffvf2gn6frg7qd28my8w7wy2cqqa4i9gxhbflbsj"))))
(arguments (substitute-keyword-arguments (package-arguments emacs-treemacs)
((#:phases phases)
`(alist-delete 'check ,phases))))))
(define-public emacs-treemacs-extra-20201225
(package
(inherit emacs-treemacs-20201225)
(name "emacs-treemacs-extra-20201225")
(propagated-inputs
`(,@(package-propagated-inputs emacs-treemacs-20201225)
("emacs-evil" ,emacs-evil)
("emacs-magit" ,emacs-magit)
("emacs-projectile" ,emacs-projectile)
("emacs-persp-mode" ,emacs-persp-mode)
("emacs-all-the-icons" ,emacs-all-the-icons-20201225)
("emacs-perspective" ,emacs-perspective)))
(arguments
(substitute-keyword-arguments
(package-arguments emacs-treemacs-20201225)
((#:phases phases)
`(modify-phases ,phases
(add-after 'chdir-elisp 'copy-extra
(lambda _
(copy-recursively "../extra" ".")))))))))
(define-public emacs-all-the-icons-20201225
(package
(inherit emacs-all-the-icons)
(version "6917b08f64dd8487e23769433d6cb9ba11f4152f")
(name "emacs-all-the-icons-20201225")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/domtronn/all-the-icons.el")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0jzpil1k5brg4dvy0fxibbwwb2hkni5fkxng4n0wfv6099b2zc68"))))))
(define-public emacs-doom-themes-20201225
(package
(inherit emacs-doom-themes)
(version "3761dfce75144e49789b6576e187acd82e2731ee")
(name "emacs-doom-themes-20201225")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/hlissner/emacs-doom-themes")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0a0lz9kkaaxj2r8xkcgyczz9pxq5hb4kd8mivqxmcj9572xs6v1r"))))
(arguments
(substitute-keyword-arguments
(package-arguments emacs-doom-themes)
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'remove-broken-themes
(lambda _
(delete-file "themes/doom-plain-theme.el")))))))))
(define-public emacs-helm-tramp
(package
(name "emacs-helm-tramp")
(version "1.3.9")
(source
(origin
(method url-fetch)
(uri (string-append
"https://stable.melpa.org/packages/helm-tramp-"
version
".el"))
(sha256
(base32
"1nhlfq113ngcb74n76z8c2wnki14vls18mml36iwi8y9k63flkcd"))))
(build-system emacs-build-system)
(propagated-inputs `(("emacs-helm" ,emacs-helm)))
(home-page
"https://github.com/masasam/emacs-helm-tramp")
(synopsis
"Tramp helm interface for ssh, docker, vagrant")
(description
"Provides interfaces of Tramp.
You can also use tramp with helm interface as root
If you use it with docker-tramp, you can also use docker with helm interface
If you use it with vagrant-tramp, you can also use vagrant with helm interface
")
(license license:gpl3)))
(define-public emacs-rebox2
(package
(name "emacs-rebox2")
(version "20121113.1300")
(source
(origin
(method url-fetch)
(uri (string-append
"https://melpa.org/packages/rebox2-"
version
".el"))
(sha256
(base32
"0ji5x2hnjklz9y4jd11hcfncbcfzgq1dg8r3s7dkrf696y4ziwwy"))))
(build-system emacs-build-system)
(home-page "https://github.com/lewang/rebox2")
(synopsis
"Inserting and modification of comment boxes in various styles")
(description
"Rebox2 provides major and minor modes for inserting and modification of
comment box is various text styles.")
(license #f)))
;; TODO: ./rekahsoft-gnu/packages/emacs-xyz.scm:172:6: emacs-ibuffer-vc@20181225.2227: URI https://melpa.org/packages/ibuffer-vc-20181225.2227.el not reachable: 404 ("Not Found")
(define-public emacs-ibuffer-vc
(package
(name "emacs-ibuffer-vc")
(version "20181225.2227")
(source
(origin
(method url-fetch)
(uri (string-append
"https://melpa.org/packages/ibuffer-vc-"
version
".el"))
(sha256
(base32
"16nry1631g4draqh09r2rq92xpv5vsyxx9yd7r5i2m6kblqh4y3f"))))
(build-system emacs-build-system)
(home-page
"https://github.com/purcell/ibuffer-vc")
(synopsis
"Group ibuffer's list by VC project, or show VC status")
(description
"Adds functionality to ibuffer for grouping buffers by their parent
vc root directory, and for displaying and/or sorting by the vc
status of listed files.
")
(license license:gpl3)))
;; TODO: ./rekahsoft-gnu/packages/emacs-xyz.scm:198:6: emacs-highlight-indent-guides@20190108.3: URI https://melpa.org/packages/highlight-indent-guides-20190108.3.el not reachable: 404 ("Not Found")
(define-public emacs-highlight-indent-guides
(package
(name "emacs-highlight-indent-guides")
(version "20190108.3")
(source
(origin
(method url-fetch)
(uri (string-append
"https://melpa.org/packages/highlight-indent-guides-"
version
".el"))
(sha256
(base32
"02imngb4y6f9vp4jxiwdbdcjxllvjwaa2rlh61zy49n2wivrlwh0"))))
(build-system emacs-build-system)
(home-page
"https://github.com/DarthFennec/highlight-indent-guides")
(synopsis "Minor mode to highlight indentation")
(description
"This minor mode highlights indentation levels via font-lock. Indent widths
are dynamically discovered, which means this correctly highlights in any
mode, regardless of indent width, even in languages with non-uniform
indentation such as Haskell. This mode works properly around hard tabs and
mixed indentation, and it behaves well in large buffers.")
(license #f)))
(define-public emacs-intel-hex-mode
(package
(name "emacs-intel-hex-mode")
(version "20180423.31")
(source
(origin
(method url-fetch)
(uri (string-append
"https://melpa.org/packages/intel-hex-mode-"
version
".el"))
(sha256
(base32
"1nvwjk686wna96srk3y9xniixas729x6m1rcjnc8lz1zkap9z9bv"))))
(build-system emacs-build-system)
(home-page
"https://github.com/mschuldt/intel-hex-mode")
(synopsis "Mode for Intel Hex files")
(description
"Use this mode for editing files in the intel hex format. The
intel-hex-mode will do font locking, and calculate checksums.")
(license license:gpl2)))
(define-public emacs-highlight-parentheses
(package
(name "emacs-highlight-parentheses")
(version "20180704.1102")
(source
(origin
(method url-fetch)
(uri (string-append
"https://melpa.org/packages/highlight-parentheses-"
version
".el"))
(sha256
(base32
"0dxnw7d966pm44a54rmd40vrrps56jaayrc8wwj7wxl2imdzqzbl"))))
(build-system emacs-build-system)
(home-page
"https://github.com/tsdh/highlight-parentheses.el")
(synopsis "Highlight surrounding parentheses")
(description
"Enable the mode using M-x highlight-parentheses-mode or by adding it to
a hook.")
(license license:gpl2)))
(define-public emacs-quack
(package
(name "emacs-quack")
(version "20181106.1301")
(source
(origin
(method url-fetch)
(uri (string-append
"https://melpa.org/packages/quack-"
version
".el"))
(sha256
(base32
"0ph6zh91kasgbvi425a5m1hz94pxk6qa3srpy4khifsbn7cwiyga"))))
(build-system emacs-build-system)
(home-page "https://www.neilvandyke.org/quack/")
(synopsis
"Enhanced support for editing and running Scheme code")
(description
"Quack enhances Emacs support for Scheme programming. The name
Quack was a play on DrScheme.")
(license license:gpl2)))
(define-public emacs-hamlet-mode
(package
(name "emacs-hamlet-mode")
(version "20131208.724")
(source
(origin
(method url-fetch)
(uri (string-append
"https://melpa.org/packages/hamlet-mode-"
version
".el"))
(sha256
(base32
"1r6nxi3d6bmnxrjjsam79vsprfwlnbhpag98vb1hj05yqp13l55v"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-dash" ,emacs-dash)
("emacs-s" ,emacs-s)))
(home-page
"https://github.com/lightquake/hamlet-mode")
(synopsis "Hamlet editing mode")
(description
"An Emacs major mode for editing files written in Hamlet, a
Haskell compile-time HTML templating engine. Currently it only provides
syntax highlighting.
Functions and variables with // in their name are private and may change or
go away at any time.")
(license #f)))
;; TODO: ./rekahsoft-gnu/packages/emacs-xyz.scm:323:6: emacs-mu4e-maildirs-extension@20180606.812: URI https://melpa.org/packages/mu4e-maildirs-extension-20180606.812.el not reachable: 404 ("Not Found")
(define-public emacs-mu4e-maildirs-extension
(package
(name "emacs-mu4e-maildirs-extension")
(version "20180606.812")
(source
(origin
(method url-fetch)
(uri (string-append
"https://melpa.org/packages/mu4e-maildirs-extension-"
version
".el"))
(sha256
(base32
"0rcn8mkabhn3w010hchr3xg72z7815j8fshfrcgxxcf9kygsg85b"))))
(build-system emacs-build-system)
(propagated-inputs `(("emacs-dash" ,emacs-dash)))
(arguments
'(#:phases
(modify-phases %standard-phases
(replace 'build
(lambda* (#:key outputs #:allow-other-keys)
(invoke "emacs" "-batch"
"--eval" "(provide 'mu4e)"
"--eval" "(defvar mu4e~main-buffer-name \"tests\")"
"--eval" "(defvar mu4e-mu-binary \"mu\")"
"--eval" "(require 'cl)"
"-l" "dash.el"
"-l" "mu4e-maildirs-extension.el"
"--eval" "(byte-compile-file \"mu4e-maildirs-extension.el\")"))))))
(home-page
"https://github.com/agpchil/mu4e-maildirs-extension")
(synopsis
"Show mu4e maildirs summary in mu4e-main-view")
(description "Runs a mu command (async) in a shell process for each
maildir to count unread and total mails.")
(license license:gpl3)))
(define-public emacs-helm-unicode
(package
(name "emacs-helm-unicode")
(version "20180608.1407")
(source
(origin
(method url-fetch)
(uri (string-append
"https://melpa.org/packages/helm-unicode-"
version
".el"))
(sha256
(base32
"0w0wvh9kwa4rj98ldi9ppsprw74926a1niih36dp7hbb61xmm7ny"))))
(build-system emacs-build-system)
(propagated-inputs `(("emacs-helm" ,emacs-helm)))
(home-page "https://github.com/bomgar/helm-unicode")
(synopsis "Helm command for unicode characters.")
(description
"A helm command for looking up unicode characters by name.")
(license #f)))
(define-public emacs-vimish-fold
(package
(name "emacs-vimish-fold")
(version "20200524.1729")
(source
(origin
(method url-fetch)
(uri (string-append
"https://melpa.org/packages/vimish-fold-"
version
".el"))
(sha256
(base32
"08p826zn4ris9b46r1d5z9v9jdj4lyr6kdmw4yhmnm9sk41z4bm4"))))
(build-system emacs-build-system)
(propagated-inputs `(("emacs-f" ,emacs-f)))
(home-page
"https://github.com/matsievskiysv/vimish-fold")
(synopsis "Fold text like in Vim")
(description
"This is a package to perform text folding like in Vim. It has the
following features:
* folding of active regions;
* good visual feedback: it's obvious which part of text is folded;
* persistence by default: when you kill a buffer your folds don't
disappear;
* persistence scales well, you can work on hundreds of files with lots of
folds without adverse effects;
* it does not break indentation;
* folds can be toggled from folded state to unfolded and back very
easily;
* quick navigation between existing folds;
* you can use mouse to unfold folds (good for beginners and not only for
them);
* for fans of code@{avy package}: you can use code@{avy} to fold text with minimal
number of key strokes!")
(license #f)))
(define-public emacs-grapnel
(package
(name "emacs-grapnel")
(version "20131001.1534")
(source
(origin
(method url-fetch)
(uri (string-append
"https://melpa.org/packages/grapnel-"
version
".el"))
(sha256
(base32
"1vnd025v7am19bamp0y50lq9abf2rzrbjslppvbk1ybb3lvw8n7q"))))
(build-system emacs-build-system)
(home-page
"https://www.github.com/leathekd/grapnel")
(synopsis
"HTTP request lib with flexible callback dispatch")
(description
"Grapnel is an HTTP request library that uses a curl subprocess and
offers flexible callback dispatch. Not only can you pass in an
alist of request outcomes to callback functions (see below) but you
can also override the dispatch function itself if the default one
doesn't suit your needs. Further, grapnel will build the query
string, request data (i.e., POST body), and headers from alists
that are passed in.
An example:
(grapnel-retrieve-url
\"www.google.com\"
'((success . (lambda (res hdrs) (message \"%s\" res)))
(failure . (lambda (res hdrs) (message \"Fail: %s\" res)))
(error . (lambda (res err) (message \"Err: %s\" err))))
\"GET\"
'((q . \"ASIN B001EN71CW\")))")
(license license:gpl3)))
(define-public emacs-ix
(package
(name "emacs-ix")
(version "20131027.1629")
(source
(origin
(method url-fetch)
(uri (string-append
"https://melpa.org/packages/ix-"
version
".el"))
(sha256
(base32
"165nr8cz2y0mpcav0bkc8kak5zji4fayrs9v9wdzn0nksq6wdbls"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-grapnel" ,emacs-grapnel)
("curl" ,curl)))
(home-page
"https://www.github.com/theanalyst/ix.el")
(synopsis
"Emacs client for http://ix.io pastebin")
(description
"ix.el is a simple emacs client to http://ix.io cmdline pastebin. At
the moment using the code@{ix} command on a selection sends the
selection to ix.io, entire buffer is sent if selection is inactive,
on success the url is notified in the minibuffer as well as saved
in the kill ring.
It is recommended to set a user name and token so that you can
later delete or replace a paste. Set this via the variables
code@{ix-user} and code@{ix-token} via M-x customize-group RET ix
Posts (if posted with user and token) can be deleted by code@{ix-delete} command
which prompts for post id (the string after http://ix.io/)
curl is used as the backend via grapnel http request library.")
(license #f)))
(define-public persp-projectile
(package
(name "emacs-persp-projectile")
(version "20180616.1944")
(source
(origin
(method url-fetch)
(uri (string-append
"https://melpa.org/packages/persp-projectile-"
version
".el"))
(sha256
(base32
"1pc1v6rc44wl7sq0qchgc4lxiy8lr7zvp0hygcp95c1x0dkqs8jl"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-perspective" ,emacs-perspective)
("emacs-projectile" ,emacs-projectile)))
(home-page "https://github.com/bbatsov/persp-projectile")
(synopsis
"Perspective integration with Projectile")
(description
"This library bridges perspective mode to the awesome library
Projectile. The idea is to create a separate perspective when
switching project. A perspective is an independent workspace for
Emacs, similar to multiple desktops in Gnome and MacOS. I often
work on many projects at the same time, and using perspective and
projectile together allows me to easily know which project I'm
current in, and focus on files that only belong to current project
when switching buffer.
To use this library, put this file in your Emacs load path, and
call (require 'persp-projectile)
See perspective.el on github: https://github.com/nex3/perspective-el
")
(license license:gpl3+)))
(define-public emacs-helm-rg
(package
(name "emacs-helm-rg")
(version "ee0a3c09da0c843715344919400ab0a0190cc9dc")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/cosmicexplorer/helm-rg")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0m4l894345n0zkbgl0ar4c93v8pyrhblk9zbrjrdr9cfz40bx2kd"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
((guix build emacs-build-system) #:prefix emacs:)
(guix build utils)
(srfi srfi-1))
#:imported-modules (,@%gnu-build-system-modules
(guix build emacs-build-system)
(guix build emacs-utils))
#:phases
(modify-phases %standard-phases
(delete 'configure)
(replace 'build
(lambda _
(invoke "make" "compile-all")
#t))
(replace 'check
(lambda _
(invoke "make" "test-noninteractive")
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(target (string-append out "/share/emacs/site-lisp")))
(mkdir-p target)
(for-each
(lambda (f) (install-file f target))
(filter (lambda (f)
(not (or (string-contains f "test")
(string-contains f "checkdoc"))))
(find-files "." "\\.elc?$"))))))
(add-after 'install 'make-autoloads
(assoc-ref emacs:%standard-phases 'make-autoloads))
(delete 'strip))))
(native-inputs
`(("emacs" ,emacs-minimal)))
(propagated-inputs
`(("emacs-dash" ,emacs-dash)
("emacs-helm" ,emacs-helm)))
(home-page
"https://github.com/cosmicexplorer/helm-rg")
(synopsis "A helm interface to ripgrep")
(description
"Helm interface for ripgrep.")
(license license:gpl3+)))