aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/moe.scm
blob: 23df938ae7ce53197f61265fe107aaf6d37e8f6f (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2017 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
;;; 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.
;;;
;;; 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 GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages moe)
  #:use-module ((guix licenses) #:select (gpl2+))
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages compression)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu))

(define-public moe
  (package
    (name "moe")
    (version "1.10")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "mirror://gnu/moe/moe-"
                          version ".tar.lz"))
      (sha256
       (base32
        "0fymywdiy9xqppcmvgs7mf7d3gfrky3jp5jkxs2l3v93asml9zcc"))))
    (build-system gnu-build-system)
    (native-inputs `(("lzip" ,lzip)))
    (inputs `(("ncurses" ,ncurses)))
    (home-page "https://www.gnu.org/software/moe/moe.html")
    (synopsis "Modeless, multiple-buffer, user-friendly 8-bit text editor")
    (description
     "GNU Moe is a powerful-but-simple-to-use text editor.  It works in a
modeless manner, and features an intuitive set of key-bindings that
assign a degree of severity to each key; for example, key
combinations with the Alt key are for harmless commands like cursor
movements while combinations with the Control key are for commands
that will modify the text.  Moe features multiple windows, unlimited
undo/redo, unlimited line length, global search and replace, and
more.")
    (license gpl2+)))
(sha256 (base32 "0wlli8hqal9ikmbl3a49kyhzyf164jk6mdbir3bclq2gxszs532d")) (file-name (string-append name "-" version "-checkout")))) (inputs (modify-inputs (package-inputs zile) (prepend guile-2.0))) (native-inputs `(("m4" ,m4) ;for 'bootstrap' ("autoconf" ,autoconf) ("automake" ,automake) ;; For some reason, 'bootstrap' insists on having these. ("git" ,git) ("gpg" ,gnupg) ,@(package-native-inputs zile))) (arguments (substitute-keyword-arguments (package-arguments zile) ((#:phases phases) `(modify-phases ,phases (replace 'bootstrap (lambda _ ;; Make sure all the files are writable so that ./bootstrap ;; can proceed. (for-each (lambda (file) (chmod file #o755)) (find-files ".")) (patch-shebang "gnulib/gnulib-tool") (invoke "sh" "./bootstrap" "--gnulib-srcdir=gnulib" "--skip-git" "--skip-po" "--verbose"))) (replace 'patch-/bin/sh (lambda* (#:key inputs #:allow-other-keys) (let ((bash (assoc-ref inputs "bash"))) ;; Refer to the actual shell. (substitute* '("lib/spawni.c" "src/funcs.c") (("/bin/sh") (string-append bash "/bin/sh"))) #t))) (add-after 'install 'wrap-command (lambda* (#:key outputs #:allow-other-keys) ;; Add zile.scm to the search path. (let* ((out (assoc-ref outputs "out")) (scheme (dirname (car (find-files out "^zile\\.scm$"))))) (wrap-program (string-append out "/bin/zile-on-guile") `("GUILE_LOAD_PATH" ":" prefix (,scheme))) #t))))))) (synopsis "Lightweight clone of the Emacs editor using Guile") (description "GNU Zile is a lightweight clone of the Emacs editor, and Zile-on-Guile is a variant of Zile that can be extended in Guile Scheme. Hitting @kbd{M-C} (or: @kbd{Alt} and @kbd{C}) brings up a Guile REPL from which interactive functions akin to those of Emacs can be invoked."))))