Subject: [bug#36043] [PATCH] Add Geany

From: Nicolas Goaziou <[email-masked]>
Date: Thu, 13 Jun 2019 00:22:27 +0200

Hello,

Arun Isaac <[email-masked]> writes:

> Do post your scintilla patch to this bug report and add a link to it in
> the TODO comment. Perhaps it will be useful to someone working on it in
> the future.

I actually packaged scintilla, but I failed unbundling it from Geany.
I attach the three patches I put up so far.

Since there is nothing more left in this bug report, I don't think it is
worthwhile to link to it.

> You are missing an import of (gnu packages python-xyz) for
> python-docutils. Other than that your patch LGTM! :-)

Oh! Fixed. Thank you.

WDYT?

-- 
Nicolas Goaziou
>From 6a8ecb754a39fdfe216b03b47dab7967fd5147f4 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <[email-masked]>
Date: Sat, 8 Jun 2019 11:22:50 +0200
Subject: [PATCH 1/3] gnu: Add scintilla license.

* guix/licenses.scm (scintilla): New variable.
---
 guix/licenses.scm | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/guix/licenses.scm b/guix/licenses.scm
index 65d9c3da13..f861d7409a 100644
--- a/guix/licenses.scm
+++ b/guix/licenses.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2017 Marius Bakke <[email-masked]>
 ;;; Copyright © 2017 Arun Isaac <[email-masked]>
 ;;; Copyright © 2017 Rutger Helling <[email-masked]>
+;;; Copyright © 2019 Nicolas Goaziou <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -83,6 +84,7 @@
             ruby
             sgifreeb2.0
             silofl1.1
+            scintilla
             sleepycat
             tcl/tk
             unlicense
@@ -558,6 +560,11 @@ at URI, which may be a file:// URI pointing the package's tree."
            "http://directory.fsf.org/wiki/License:Ruby"
            "https://www.ruby-lang.org/en/about/license.txt"))
 
+(define scintilla
+  (license "Scintilla and SciTE License"
+           "https://www.scintilla.org/License.txt"
+           "X11-style license for Scintilla and SciTE"))
+
 (define sgifreeb2.0
   (license "SGI Free Software License B, version 2.0"
            "http://directory.fsf.org/wiki/License:SGIFreeBv2"
-- 
2.22.0

>From b376d19aee8309672dae897efcbdf1a53ae200fa Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <[email-masked]>
Date: Sat, 1 Jun 2019 23:37:24 +0200
Subject: [PATCH 2/3] gnu: Add geany.

* gnu/packages/text-editors.scm (geany): New variable.
---
 gnu/packages/text-editors.scm | 45 +++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 534934dfd1..383257f36d 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2014 Taylan Ulrich Bayırlı/Kammer <[email-masked]>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <[email-masked]>
 ;;; Copyright © 2019 Efraim Flashner <[email-masked]>
+;;; Copyright © 2019 Nicolas Goaziou <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,6 +46,7 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages regex)
   #:use-module (gnu packages ruby)
@@ -389,3 +391,46 @@ projects.  The EditorConfig project maintains a file format and plugins for
 various text editors which allow this file format to be read and used by those
 editors.")
     (license license:bsd-2)))
+
+(define-public geany
+  (package
+    (name "geany")
+    (version "1.35")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://download.geany.org/"
+                                  "geany-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "179xfnvhcxsv54v2mlrhykqv2j7klniln5sffvqqpjmdvwyivvim"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)
+       ("python-docutils" ,python-docutils))) ;for rst2html
+    ;; TODO: Unbundle scintilla when packaged.
+    (inputs
+     `(("gtk+" ,gtk+)))
+    (home-page "https://www.geany.org")
+    (synopsis "Fast and lightweight IDE")
+    (description "Geany is a small and fast Integrated Development
+Environment (IDE) that only has a few dependencies on other packages and is as
+independent as possible from special desktop environments like KDE or GNOME.
+
+The basic features of Geany are:
+@itemize
+@item syntax highlighting
+@item code completion
+@item auto completion of often constructed constructs like if, for and while
+@item auto completion of XML and HTML tags
+@item call tips
+@item folding
+@item many supported filetypes like C, Java, PHP, HTML, Python, Perl, Pascal
+@item symbol lists
+@item embedded terminal emulation
+@item extensibility through plugins
+@end itemize")
+    ;; Software is packaged under GPL2+ terms.  Scintilla is bundled with
+    ;; Geany.
+    (license (list license:gpl2+ license:scintilla))))
-- 
2.22.0

>From 04d9e080967cab864cd76565e9697bda73eff781 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <[email-masked]>
Date: Thu, 13 Jun 2019 00:13:27 +0200
Subject: [PATCH 3/3] gnu: Add scintilla.

* gnu/packages/text-editors.scm (scintilla): New variable.
---
 gnu/packages/text-editors.scm | 55 +++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 383257f36d..a7efce5830 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -392,6 +392,61 @@ various text editors which allow this file format to be read and used by those
 editors.")
     (license license:bsd-2)))
 
+(define-public scintilla
+  (package
+    (name "scintilla")
+    (version "4.1.5")
+    (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
+                "1c24hfrl0wzb8674bjjql5105nlp6h31gj7axjaf7akkf8yisyab"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ;require un-packaged Pyside
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ;no configure script
+         (add-before 'build 'expand-C++-include-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Make <gcc>/include/c++/ext/string_conversions.h find
+             ;; <stdlib.h>.
+             (let* ((path "CPLUS_INCLUDE_PATH")
+                    (gcc  (assoc-ref inputs "gcc"))
+                    (c++  (string-append gcc "/include/c++")))
+               (setenv path (string-append c++ ":" (getenv path))))
+             #t))
+         (replace 'build
+           (lambda _ (invoke "make" "GTK3=1" "CC=gcc" "-Cgtk")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (lib (string-append out "/lib/scintilla"))
+                    (include (string-append out "/include/scintilla")))
+               (install-file "bin/scintilla.a" lib)
+               (for-each (lambda (f) (install-file f include))
+                         (find-files "include/" "."))
+               #t))))))
+    (native-inputs
+     `(("gcc" ,gcc-7)                   ;require GCC 7.1+
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gtk+" ,gtk+)))
+    (home-page "https://www.scintilla.org/")
+    (synopsis "Code editor for GTK+")
+    (description "Scintilla is a source code editing component for
+GTK+.  It has the usual features found in text editing components, as
+well as some that are especially useful for editing and debugging
+source code; these include support for syntax styling, error
+indicators, code completion and call tips.  Styling choices are more
+open than with many editors: Scintilla lets you use proportional
+fonts, bold and italics, multiple foreground and background colours,
+and multiple fonts.")
+    (license license:scintilla)))
+
 (define-public geany
   (package
     (name "geany")
-- 
2.22.0