[bug#34900] Add emacs-semantic-refactor

Message ID alpine.DEB.2.20.1903172247080.16784@marsh.hcoop.net
State Accepted
Headers show
Series [bug#34900] Add emacs-semantic-refactor | expand

Checks

Context Check Description
cbaines/applying patch fail Apply failed

Commit Message

Jack Hill March 18, 2019, 3:04 a.m. UTC
Hi Guix,

The attached patch adds the emacs-semantic-refactor package.

When reviewing this patch some particular things to look out for/questions 
I have:

0) There are different sections in the (gnu packages emacs-xyz) module 
that are delineated by comments (e.g. Emacs Hacking, Web Browsing, and 
Miscellaneous). I've added the definition of emacs-semantic-refactor near 
the end of the file in the Miscellaneous section. I wonder if this is 
correct or if it should go in the Emacs Hacking section. Paredit, which 
would be used in similar scenarios to semantic-refactor is in the Emacs 
Hacking section.

1) The upstream source contains a number of animated gif files 
demonstrating usage in the srefactor-demos directory. I do not see a build 
process for these, and assume they were created by hand. Are we free to 
distribute these in Guix?

2) semantic-refactor has an optional integration with projectile whose 
availability is checked for with (featurep 'projectile). I have not added 
projectile as an input or propagated-input. Is this OK?

3) I'm still new to writing package definitions, so extra scrutiny is 
warranted, particularly for the synopsis and description.

All the best,
Jack

Comments

Marius Bakke March 21, 2019, 7:49 p.m. UTC | #1
Jack Hill <jackhill@jackhill.us> writes:

> Hi Guix,
>
> The attached patch adds the emacs-semantic-refactor package.

Thanks!

> When reviewing this patch some particular things to look out for/questions 
> I have:
>
> 0) There are different sections in the (gnu packages emacs-xyz) module 
> that are delineated by comments (e.g. Emacs Hacking, Web Browsing, and 
> Miscellaneous). I've added the definition of emacs-semantic-refactor near 
> the end of the file in the Miscellaneous section. I wonder if this is 
> correct or if it should go in the Emacs Hacking section. Paredit, which 
> would be used in similar scenarios to semantic-refactor is in the Emacs 
> Hacking section.

I don't have a good answer, so I went with your initial approach.

> 1) The upstream source contains a number of animated gif files 
> demonstrating usage in the srefactor-demos directory. I do not see a build 
> process for these, and assume they were created by hand. Are we free to 
> distribute these in Guix?

As long as they are free to use and redistribute (i.e. not under a
separate license), it should be okay for Guix.  GIFs generally don't
come with build instructions :-)

> 2) semantic-refactor has an optional integration with projectile whose 
> availability is checked for with (featurep 'projectile). I have not added 
> projectile as an input or propagated-input. Is this OK?

Great!  Optional dependencies are typically not propagated.

> 3) I'm still new to writing package definitions, so extra scrutiny is 
> warranted, particularly for the synopsis and description.

I added a "This package provides a ..." prefix to the description to
provide a little more context for the prospective reader.

Pushed as ea4a1e5d0b13b5c548804ac854e6eb30c5149ce4, thank you!
Jack Hill March 21, 2019, 8:05 p.m. UTC | #2
On Thu, 21 Mar 2019, Marius Bakke wrote:

> Pushed as ea4a1e5d0b13b5c548804ac854e6eb30c5149ce4, thank you!

Thanks for the review!

Patch

From 1470705542f28351ceaf183a49cd5d869a4576db Mon Sep 17 00:00:00 2001
From: Jack Hill <jackhill@jackhill.us>
Date: Sun, 17 Mar 2019 22:01:17 -0400
Subject: [PATCH] gnu: Add emacs-semantic-refactor

* gnu/packages/emacs-xyz.scm (emacs-semantic-refactor): New variable.
---
 gnu/packages/emacs-xyz.scm | 43 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 8d5ee6c5fb..a8a59a2dee 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -36,7 +36,7 @@ 
 ;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018, 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
-;;; Copyright © 2018 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2018, 2019 Jack Hill <jackhill@jackhill.us>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 ;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
 ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
@@ -13691,6 +13691,47 @@  command\", but because it always involves at least two commands (a prefix and
 a suffix) we prefer to call it just a \"transient\".")
       (license license:gpl3+))))
 
+(define-public emacs-semantic-refactor
+  ;; The last release, 0.5, was made on 2015-07-26 and there have been 47
+  ;; commits since then.
+  (let ((commit "6f2c97d17fb70f4ca2112f5a2b99a8ec162004f5"))
+    (package
+      (name "emacs-semantic-refactor")
+      (version (git-version "0.5" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/tuhdo/semantic-refactor")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1lyz3zjkx2csh0xdy1zpx8s32qp1p3sig57mwi9xhgpqjyf0axmb"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/tuhdo/semantic-refactor")
+      (synopsis "Refactoring tool for C/C++ and Lisp dialects")
+      (description "A refactoring tool based on the Emacs Semantic parser
+framework.  For C and C++ it supports operations such as:
+
+@enumerate
+@item Generating class implementations
+@item Generating function prototypes
+@item Converting functions to function pointers
+@item Moving semantic units
+@item etc...
+@end enumerate
+
+For Lisp dialects like Clojure, ELisp, and Scheme, it supports operations such
+as:
+
+@enumerate
+@item Formatting the whole buffer
+@item Converting sexpressions to one or multiple lines
+@item etc...
+@end enumerate\n")
+      (license license:gpl3+))))
+
 (define-public emacs-nhexl-mode
   (package
     (name "emacs-nhexl-mode")
-- 
2.21.0