Patchwork gnu: Add vis, libtermkey and lua-lpeg.

login
register
mail settings
Submitter Marius Bakke
Date Dec. 7, 2016, 10:23 p.m.
Message ID <878trrz8e2.fsf@kirby.i-did-not-set--mail-host-address--so-tickle-me>
Download mbox | patch
Permalink /patch/18273/
State New
Headers show

Comments

Marius Bakke - Dec. 7, 2016, 10:23 p.m.
José Miguel Sánchez García <jmi2k@openmailbox.org> 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?
Marius Bakke - Dec. 8, 2016, 2:17 p.m.
José Miguel Sánchez García <jmi2k@openmailbox.org> writes:

> On 2016-12-07 23:23, Marius Bakke wrote:
>> José Miguel Sánchez García <jmi2k@openmailbox.org> 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?
> I'm in a VM, so my home directory is pretty much empty, but you're 
> right: weeks
> back when I was trying to get it working on my machine I created an 
> empty
> config file, so I forgot about it when I submitted the patches.
>
> I tested it, and it works fine. I'll take a look at the modifications 
> you did
> to learn more about what to do for future patches.
>
> Finally, thanks for finally accepting these packages. I worked really 
> hard to
> prepare them (I didn't know any Scheme before starting!), but the 
> community has
> proven to be very helpful :D.

Thanks for checking (it seems you forgot to CC the list) :-)

I tested it with a custom config just now, but it seems to load the one
from VIS_PATH before checking ~/.config. I'm not sure how to fix that
without breaking the lexer integration, so I've committed it as-is.
Would be nice to have a fix for that though ;-)

Thanks again for contributing!

Patch

From 3fbbe7d6c9de4cde01f2e6aa2b7df96b067e33d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
 <jmi2k@openmailbox.org>
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 <mbakke@fastmail.com>
---
 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 <jmi2k@openmailbox.org>
+;;;
+;;; 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