summary refs log tree commit diff
path: root/gnu/packages/text-editors.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/text-editors.scm')
-rw-r--r--gnu/packages/text-editors.scm239
1 files changed, 205 insertions, 34 deletions
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 0c30a705b9..f9330008e7 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2019, 2020, 2021, 2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2019, 2020, 2021, 2022, 2023 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020-2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Tom Zander <tomz@freedommail.ch>
 ;;; Copyright © 2020 Mark Meyer <mark@ofosos.org>
@@ -19,6 +19,8 @@
 ;;; Copyright © 2021 Calum Irwin <calumirwin1@gmail.com>
 ;;; Copyright © 2022 Luis Henrique Gomes Higino <luishenriquegh2701@gmail.com>
 ;;; Copyright © 2022 Foo Chuan Wei <chuanwei.foo@hotmail.com>
+;;; Copyright © 2022 zamfofex <zamfofex@twdb.moe>
+;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,7 +47,9 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages aspell)
@@ -56,19 +60,22 @@
   #:use-module (gnu packages code)
   #:use-module (gnu packages cpp)
   #:use-module (gnu packages crates-io)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages datastructures)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages graphics)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages haskell-xyz)
+  #:use-module (gnu packages hunspell)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libbsd)
-  #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages ncurses)
@@ -81,6 +88,8 @@
   #:use-module (gnu packages qt)
   #:use-module (gnu packages regex)
   #:use-module (gnu packages ruby)
+  #:use-module (gnu packages sdl)
+  #:use-module (gnu packages slang)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages terminals)
   #:use-module (gnu packages texinfo)
@@ -91,7 +100,7 @@
 (define-public vis
   (package
     (name "vis")
-    (version "0.7")                     ; also update the vis-test input
+    (version "0.8")                     ; also update the vis-test input
     (source
      (origin
        (method git-fetch)
@@ -99,7 +108,7 @@
              (url "https://git.sr.ht/~martanne/vis")
              (commit (string-append "v" version))))
        (sha256
-        (base32 "1g05ncsnk57kcqm9wsv6sz8b24kyzj8r5rfpa1wfwj8qkjzx3vji"))
+        (base32 "0ija192c9i13gbikm707jynf6my212i040ls0f8pgkbiyvls7xay"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
@@ -134,14 +143,8 @@
                (substitute* "test/core/ccan-config.c"
                  (("\"cc\"")
                   (format #f "\"~a\"" ,(cc-for-target))))
-
                ;; Use the ‘vis’ executable that we wrapped above.
-               (install-file (string-append out "/bin/vis") ".")
-
-               ;; XXX Delete 2 failing tests.  TODO: make them not fail. :-)
-               (for-each delete-file
-                         (find-files "test/vis/selections" "^complement"))
-               #t))))))
+               (install-file (string-append out "/bin/vis") ".")))))))
     (native-inputs
      `(("vis-test"
         ,(origin
@@ -308,7 +311,7 @@ bindings and many of the powerful features of GNU Emacs.")
 (define-public jucipp
   (package
     (name "jucipp")
-    (version "1.7.1")
+    (version "1.7.2")
     (home-page "https://gitlab.com/cppit/jucipp")
     (source (origin
               (method git-fetch)
@@ -320,7 +323,7 @@ bindings and many of the powerful features of GNU Emacs.")
                                   (recursive? #t)))
               (file-name (git-file-name name version))
               (sha256
-               (base32 "0xyf1fa7jvxzvg1dxh5vc50fbwjjsar4fmlvbfhicdd1f8bhz1ii"))
+               (base32 "034il3z38a7qvp95f52n9rxbqmh8fxsy416rjak3zzagvfkvzyii"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -344,7 +347,7 @@ bindings and many of the powerful features of GNU Emacs.")
                      ;; Disable the CMake build test, as it does not test
                      ;; functionality of the package, and requires doing
                      ;; an "in-source" build.
-                     (("add_test\\(cmake_build_test.*\\)")
+                     (("add_test\\(cmake_(build|file_api)_test.*\\)")
                       "")
                      ;; Disable the git test, as it requires the full checkout.
                      (("add_test\\(git_test.*\\)")
@@ -494,7 +497,7 @@ Wordstar-, EMACS-, Pico, Nedit or vi-like key bindings.  e3 can be used on
 (define-public mg
   (package
     (name "mg")
-    (version "20220614")
+    (version "20221112")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -503,7 +506,7 @@ Wordstar-, EMACS-, Pico, Nedit or vi-like key bindings.  e3 can be used on
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "145qk4bzys4igv98645vikswv9hqym46chh6xb9d82ihsvjq1wjk"))
+                "1wsib91f277xsx3qi8zmjcd9r9cm078rcf8hii0rwipyn04vxy83"))
               (modules '((guix build utils)))
               (snippet '(begin
                           (substitute* "GNUmakefile"
@@ -872,19 +875,19 @@ editors.")
            qtsvg-5
            sqlite))
     (arguments
-     `(#:tests? #f                      ; no check target
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-icon-directory
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (substitute* "packages/linux/icons.sh"
-                 (("/usr/share")
-                  (string-append out "/share"))))))
-         (add-before 'configure 'gzip-flags
-           (lambda _
-             (substitute* "Makefile.in"
-               (("^GZIP = gzip -f") "GZIP = gzip -f -n")))))))
+     (list
+      #:tests? #f                       ; no check target
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-icon-directory
+            (lambda _
+              (substitute* "packages/linux/icons.sh"
+                (("/usr/share")
+                 (string-append #$output "/share")))))
+          (add-before 'configure 'gzip-flags
+            (lambda _
+              (substitute* "Makefile.in"
+                (("^GZIP = gzip -f") "GZIP = gzip -f -n")))))))
     (synopsis "Editing platform with special features for scientists")
     (description
      "GNU TeXmacs is a text editing platform which is specialized for
@@ -895,17 +898,108 @@ Octave.  TeXmacs is completely extensible via Guile.")
     (license license:gpl3+)
     (home-page "https://www.texmacs.org/tmweb/home/welcome.en.html")))
 
+(define-public mogan
+  (package
+    (inherit texmacs)
+    (name "mogan")
+    (version "1.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/XmacsLabs/mogan")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "04wz6xmimjv2l6baxgzm8vyq5grg102m3l4wq8i6bglv529yp4ff"))))
+    (build-system qt-build-system)
+    (inputs
+     (modify-inputs (package-inputs texmacs)
+       ;; Replaced by S7 scheme
+       ;; TODO: Maybe unbundle S7
+       (delete "guile")
+       (prepend curl)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments texmacs)
+       ((#:phases orig)
+        #~(modify-phases #$orig
+            ;; The non-deterministic compression issue is solved in Mogan.
+            (delete 'gzip-flags)))))
+    (home-page "https://github.com/XmacsLabs/mogan")
+    (synopsis "Scientific structural text editor")
+    (description
+     "Mogan is a scientific structural text editor, a fork of GNU TeXmacs.")
+    (license license:gpl3+)))
+
+(define-public textpieces
+  (package
+    (name "textpieces")
+    (version "3.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/liferooter/textpieces")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "14zq2c7js80m4cq8wpdb3kyz5sw96l8znbz027w8s94gqhm632ff"))))
+    (arguments
+     '(;; The test suite fails to validate appstream file due to lack of
+       ;; network access
+       #:tests? #f
+       #:glib-or-gtk? #t))
+    (build-system meson-build-system)
+    (native-inputs
+     (list appstream-glib
+           blueprint-compiler
+           desktop-file-utils
+           gettext-minimal
+           `(,glib "bin")
+           `(,gtk "bin")
+           pkg-config
+           vala))
+    (inputs
+     (list gtk
+           gtksourceview
+           json-glib
+           libadwaita
+           libgee
+           python
+           python-pygobject
+           python-pyyaml))
+    (home-page "https://github.com/liferooter/textpieces")
+    (synopsis "Quick text processor")
+    (description
+     "Text Pieces is a tool for quick text transformations such as checksums,
+encoding, decoding, etc.
+
+The basic features of Text Pieces are:
+@itemize
+@item Base64 encoding and decoding
+@item SHA-1, SHA-2 and MD5 checksums
+@item Prettify and minify JSON
+@item Covert JSON to YAML and vice versa
+@item Count lines, symbols and words
+@item Escape and unescape string, URL and HTML
+@item Remove leading and trailing whitespaces
+@item Sort and reverse sort lines
+@item Reverse lines and whole text
+@item You can write your own scripts and create custom tools
+@end itemize")
+    (license license:gpl3)))
+
 (define-public scintilla
   (package
     (name "scintilla")
-    (version "5.3.0")
+    (version "5.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (let ((v (apply string-append (string-split version #\.))))
               (string-append "https://www.scintilla.org/scintilla" v ".tgz")))
        (sha256
-        (base32 "0ys0836qjljzqk0wj6y9pnmrcw7ydzn8c06rwbawjk74dpsn0lpx"))))
+        (base32 "16jskdc0762iwpy4s75vmp27qds32pnpaj09h48c6qg3rmvrgslh"))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -1055,7 +1149,7 @@ card.  It offers:
 (define-public ne
   (package
     (name "ne")
-    (version "3.3.1")
+    (version "3.3.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1064,7 +1158,7 @@ card.  It offers:
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0sg2f6lxq6cjkpd3dvlxxns82hvq826rjnams5in97pssmknr77g"))))
+                "16hzja0x41xz6028d8qij9rh1vkiil8qkswd8yznwlcwyl4h04wr"))))
     (build-system gnu-build-system)
     (native-inputs
      (list perl texinfo))
@@ -1072,8 +1166,10 @@ card.  It offers:
      (list ncurses))
     (arguments
      `(#:tests? #f
+       #:parallel-build? #f             ; or enums.h may not yet be generated
        #:make-flags
-       (list "CC=gcc"
+       (list "STRIP=true"               ; don't
+             (string-append "CC=" ,(cc-for-target))
              (string-append "PREFIX=" (assoc-ref %outputs "out"))
              (string-append "LDFLAGS=-L" (assoc-ref %build-inputs "ncurses")
                             "/lib"))
@@ -1260,3 +1356,78 @@ scriptable rc file, macros, search and replace (PCRE), window
 splitting, multiple cursors, and integration with various shell
 commands.")
     (license license:asl2.0)))
+
+(define-public lite-xl
+  (package
+    (name "lite-xl")
+    (version "2.1.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/lite-xl/lite-xl")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1pnmax68hvk1ry4bjsxwq4qimfn55pai8jlljw6jiqzcmh4mp7xm"))
+              (modules '((guix build utils)))
+              (snippet '(substitute* "meson.build"
+                          (("dependency\\('lua5\\.4',")
+                           "dependency('lua-5.4',")))))
+    (build-system meson-build-system)
+    (inputs (list agg
+                  freetype
+                  lua-5.4
+                  pcre2
+                  reproc
+                  sdl2))
+    (native-inputs (list pkg-config))
+    (home-page "https://lite-xl.com")
+    (synopsis "Lightweight text editor written in Lua")
+    (description
+     "Lite XL is derived from lite.  It is a lightweight text editor written
+mostly in Lua.  It aims to provide something practical, pretty, small and fast
+easy to modify and extend, or to use without doing either.
+
+The aim of Lite XL compared to lite is to be more user-friendly, improve the
+quality of font rendering, and reduce CPU usage.")
+    (license license:expat)))
+
+(define-public jed
+  (package
+    (name "jed")
+    (version "0.99-19")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.jedsoft.org/releases/jed/jed-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "0qspdc6wss43wh1a8fddvf62xyhld5p7hl75grv4d95h5z73k8wp"))
+              (modules '((guix build utils)))
+              (snippet #~(begin
+                           ;; Delete Windows binaries.
+                           (delete-file-recursively "bin/w32")
+
+                           (substitute* "src/Makefile.in"
+                             (("/bin/cp")
+                              "cp"))
+                           (substitute* "configure"
+                             (("TERMCAP=-ltermcap")
+                              "TERMCAP="))))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:configure-flags
+           #~(list (string-append "--with-slang="
+                                  #$(this-package-input "slang")))
+           ;; jed provides no tests
+           #:tests? #f))
+    (inputs (list slang))
+    (home-page "https://www.jedsoft.org/jed/")
+    (synopsis "Programmer's editor using S-Lang scripting for configuration")
+    (description
+     "Jed is a powerful programmer's editor using the S-Lang scripting language
+for configuration and extensibility.  It provides emulation modes for the
+key bindings of many editors (including Emacs and WordStar), and has syntax
+highlighting for dozens of languages.  Jed is very small and fast.")
+    (license license:gpl2+)))