guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] gnu: Add vis, libtermkey and lua-lpeg.


From: Marius Bakke
Subject: Re: [PATCH] gnu: Add vis, libtermkey and lua-lpeg.
Date: Wed, 07 Dec 2016 23:23:01 +0100
User-agent: Notmuch/0.23.3 (https://notmuchmail.org) Emacs/25.1.1 (x86_64-unknown-linux-gnu)

José Miguel Sánchez García <address@hidden> writes:

> Let's see if these patches get accepted now! I think I've taken into 
> account
> every single detail.
>
> These patches add three packages: vis, lua and libtermkey. vis depends 
> on lua
> and libtermkey, so add them before adding vis.
>
> vis is being added in a new file, gnu/text-editors.scm , as requested 
> here
> <https://lists.gnu.org/archive/html/guix-devel/2016-12/msg00242.html>

Thanks for these patches!

I've committed the first two packages with some minor edits:

* Indentation ran through emacs (e.g. M-x indent-region). We follow
  emacs indentation rules religiously. :-)
* Updated commit messages to match the GNU changelog style.
* libtermkey and lua-lpeg actually had tests. 'gnu-build-system' runs
  "make check" by default, whereas they expected "make test". This can
  be overridden with the #:test-target argument.
* Avoided hard coding the lua version in lpeg install path.

'vis' was a little more tricky. On startup it could not find the "visrc"
file, which you probably had in ~/.config or similar. I solved that by
adding a "native-search-path" for VIS_PATH so Guix sets up this variable
when installed (this seems to be an undocumented feature of Guix :-)).

In a perfect world, the same trick could be used for LUA_PATH and
LUA_CPATH to discover the optional "lpeg" module, but they don't seem to
behave like normal PATH specifications and requires a pattern match,
which in turn appears to get ignored by guix' search-path-specification.

Instead I wrapped the binary with the lpeg paths. This also seems to
have fixed the problem finding themes. Can you try the attached patch
and see if that works for you, especially if you have a custom config?

Attachment: signature.asc
Description: PGP signature

>From 3fbbe7d6c9de4cde01f2e6aa2b7df96b067e33d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
 <address@hidden>
Date: Wed, 7 Dec 2016 17:53:22 +0100
Subject: [PATCH] gnu: Add vis.

* gnu/packages/text-editors.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.

Co-authored-by: Marius Bakke <address@hidden>
---
 gnu/local.mk                  |  1 +
 gnu/packages/text-editors.scm | 75 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 76 insertions(+)
 create mode 100644 gnu/packages/text-editors.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 1f98513ca..e8137a538 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -359,6 +359,7 @@ GNU_SYSTEM_MODULES =                                \
   %D%/packages/texinfo.scm                     \
   %D%/packages/tex.scm                         \
   %D%/packages/textutils.scm                   \
+  %D%/packages/text-editors.scm                \
   %D%/packages/time.scm                                \
   %D%/packages/tls.scm                         \
   %D%/packages/tmux.scm                                \
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
new file mode 100644
index 000000000..4b047f3d7
--- /dev/null
+++ b/gnu/packages/text-editors.scm
@@ -0,0 +1,75 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 José Miguel Sánchez García <address@hidden>
+;;;
+;;; 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 text-editors)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages terminals)
+  #:use-module (gnu packages lua))
+
+(define-public vis
+  (package
+    (name "vis")
+    (version "0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/martanne/";
+                                  name "/archive/v" version ".tar.gz"))
+              (sha256
+               (base32 
"0bbmkblpndc53pvr8xcfywdn8g351yxfj8c46zp5d744c3bq2nry"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags '("CFLAGS=-pie")
+       #:tests? #f ; No tests.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-binary
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (lpeg (assoc-ref inputs "lua-lpeg"))
+                    (lua-version ,(version-major+minor (package-version lua)))
+                    (LUA_PATH (string-append lpeg "/share/lua/"
+                                             lua-version "/?.lua"))
+                    (LUA_CPATH (string-append lpeg "/lib/lua/"
+                                              lua-version "/?.so")))
+               (wrap-program (string-append out "/bin/vis")
+                 `("LUA_PATH" ":" prefix (,LUA_PATH))
+                 `("LUA_CPATH" ":" prefix (,LUA_CPATH)))
+               #t))))))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "VIS_PATH")
+            (files '("share/vis")))))
+    (inputs `(("lua", lua)
+              ("ncurses", ncurses)
+              ("libtermkey", libtermkey)
+              ("lua-lpeg", lua-lpeg)))
+    (synopsis "Vim-like text editor")
+    (description
+     "Vis aims to be a modern, legacy free, simple yet efficient vim-like text
+editor.  It extends vim's modal editing with built-in support for multiple
+cursors/selecctions and combines it with sam's structural regular expression
+based command language.")
+    (home-page "https://github.com/martanne/vis";)
+    (license (list license:isc               ; Main distribution.
+                   license:public-domain     ; map.[ch]
+                   license:expat))))         ; lexers and libutf.[ch]
-- 
2.11.0


reply via email to

[Prev in Thread] Current Thread [Next in Thread]