Subject: [bug#36091] [PATCH] gnu: Add emacs-excorporate

From: Oleg Pykhalov <[email-masked]>
Date: Wed, 05 Jun 2019 09:33:33 +0300

Hello,

First of all thank you for a contribution!

Could you split this patch to make a single patch per package, please?

Also several notes about current patch below.

TK <[email-masked]> writes:

> Empty Message
> From 73a918c84f1a25c2def96b6830e68b3b6368e06e Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Todor=20Kondi=C4=87?= <[email-masked]>
> Date: Tue, 4 Jun 2019 13:15:52 +0200
> Subject: [PATCH] gnu: Add emacs-excorporate
>
> * gnu/packages/emacs-xyz.scm (emacs-ntlm, emacs-ntlm): New variables.
>   (emacs-url-http-ntlm, emacs-soap-client): New variables.
>   (emacs-fsm,emacs-excorporate): New variables.

This could be in a single (emacs-ntlm, emacs-url-http-ntlm,
emacs-soap-client, &): New variables., but after splitting the patch
it will be not relevant.

> ---
>  gnu/packages/emacs-xyz.scm | 189 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 189 insertions(+)
>
> diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
> index f9f0b2156f..81880886d3 100644
> --- a/gnu/packages/emacs-xyz.scm
> +++ b/gnu/packages/emacs-xyz.scm
> @@ -47,6 +47,7 @@
>  ;;; Copyright © 2019 mikadoZero <[email-masked]>
>  ;;; Copyright © 2019 Gabriel Hondet <[email-masked]>
>  ;;; Copyright © 2019 LaFreniere, Joseph <[email-masked]>
> +;;; Copyright © 2019 Todor Kondi‡ <[email-masked]>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -15669,3 +15670,191 @@ verb commands which would are normally destructive (such as deletion) are
>  provided.  Those alternative commands are and bound by default to their
>  corresponding Evil keys.")
>        (license license:expat))))
> +
> +
> +(define-public emacs-ntlm
> +  (package
> +   (name "emacs-ntlm")
> +   (version "2.1.0")
> +   (source
> +    (origin
> +     (method url-fetch)
> +     (uri (string-append
> +           "https://elpa.gnu.org/packages/ntlm-"
> +           version
> +           ".el"))

Last three lines could be on a single line.

> +     (sha256
> +      (base32
> +       "01d0bcmh8a36qf871w6bc05kjk9bmnh843m9869xw06zyvqwg9mv"))))
> +   (build-system emacs-build-system)
> +   (home-page
> +    "http://elpa.gnu.org/packages/ntlm.html")

Use https://elpa.gnu.org/packages/ntlm.html and on single line.

> +   (synopsis
> +    "NTLM (NT LanManager) authentication support")

Could be one line.

> +   (description
> +    "This library is a direct translation of the Samba release 2.2.0
> +implementation of Windows NT and LanManager compatible password
> +encryption.")
> +   (license license:gpl3+)))
> +
> +(define-public emacs-nadvice
> +  (package
> +    (name "emacs-nadvice")
> +    (version "0.3")
> +    (source
> +      (origin
> +        (method url-fetch)
> +        (uri (string-append
> +               "https://elpa.gnu.org/packages/nadvice-"
> +               version
> +               ".el"))

One line.

> +        (sha256
> +          (base32
> +            "0gi3csnxbs8h7iy0scsl35sic3gv90swa89hhdjwb7qvpirfdcgw"))))
> +    (build-system emacs-build-system)
> +    (home-page
> +      "http://elpa.gnu.org/packages/nadvice.html")

One line and https.

> +    (synopsis
> +      "Forward compatibility for Emacs-24.4's nadvice")

One line.

> +    (description
> +      "This package tries to re-implement some of nadvice.el's functionality
> +on top of the old defadvice system, to help users of defadvice
> +move to the new advice system without dropping support for Emacs<24.4.")
> +    (license license:gpl3+)))
> +
> +(define-public emacs-url-http-ntlm
> +  (package
> +    (name "emacs-url-http-ntlm")
> +    (version "2.0.4")
> +    (source
> +      (origin
> +        (method url-fetch)
> +        (uri (string-append
> +               "https://elpa.gnu.org/packages/url-http-ntlm-"
> +               version
> +               ".el"))
> +        (sha256
> +          (base32
> +            "1cakq2ykraci7d1gl8rnpv4f2f5ffyaidhqb1282g7i72adwmb98"))))
> +    (build-system emacs-build-system)
> +    (propagated-inputs `(("emacs-ntlm" ,emacs-ntlm)))
> +    (home-page
> +      "http://elpa.gnu.org/packages/url-http-ntlm.html")

One line and https.

> +    (synopsis
> +      "NTLM authentication for the url library")

One line.

> +    (description
> +      "This package provides a NTLM handler for the URL package.")

One line.

> +    (license license:gpl3+)))
> +
> +(define-public emacs-soap-client
> +  (package
> +    (name "emacs-soap-client")
> +    (version "3.1.5")
> +    (source
> +      (origin
> +        (method url-fetch)
> +        (uri (string-append
> +               "https://elpa.gnu.org/packages/soap-client-"
> +               version
> +               ".tar"))
> +        (sha256
> +          (base32
> +            "0nnf075ywxmsfd6vmzk2yg3khx6sycl5l6qrgp5rqqmw0wzhxlh0"))))
> +    (build-system emacs-build-system)
> +    (home-page
> +      "http://elpa.gnu.org/packages/soap-client.html")

One line and https.

> +    (synopsis "Access SOAP web services")
> +    (description
> +      "To use the SOAP client, you first need to load the WSDL document for the
> +service you want to access, using `soap-load-wsdl-from-url'.  A WSDL
> +document describes the available operations of the SOAP service, how their
> +parameters and responses are encoded.  To invoke operations, you use the
> +`soap-invoke' method passing it the WSDL, the service name, the operation
> +you wish to invoke and any required parameters.
> +
> +Ideally, the service you want to access will have some documentation about
> +the operations it supports.  If it does not, you can try using
> +`soap-inspect' to browse the WSDL document and see the available operations
> +and their parameters.")
> +    (license license:gpl3+)))

I think we should replace this instruction with a package description
instead, because we have the same tutorial in soap-client.el file.

> +(define-public emacs-fsm
> +  (package
> +    (name "emacs-fsm")
> +    (version "0.2.1")
> +    (source
> +      (origin
> +        (method url-fetch)
> +        (uri (string-append
> +               "https://elpa.gnu.org/packages/fsm-"
> +               version
> +               ".el"))

One line.

> +        (sha256
> +          (base32
> +            "1jyxyqdbfl8nv7c50q0sg3w5p7whp1sqgi7w921k5hfar4d11qqp"))))
> +    (build-system emacs-build-system)
> +    (home-page
> +      "http://elpa.gnu.org/packages/fsm.html")

One line and https.

> +    (synopsis "state machine library")

Linter has some warnings:

$ ./pre-inst-env guix lint emacs-fsm
gnu/packages/emacs-xyz.scm:15903:14: [email-masked]: synopsis should
start with an upper-case letter or digit

Also, State machine Emacs library will be better for guix search.

> +    (description
> +      "fsm.el is an exercise in metaprogramming inspired by gen_fsm of
> +Erlang/OTP.  It aims to make asynchronous programming in Emacs Lisp
> +easy and fun.

I think it's enough for the description.

gnu/packages/emacs-xyz.scm:15905:6: [email-masked]: description should
start with an upper-case letter or digit

The warning above could be fixed by @code{fsm.el}.

> By \"asynchronous\" I mean that long-lasting tasks don't interfer
> with normal editing.
> +
> +Some people say that it would be nice if Emacs Lisp had threads
> +and/or continuations.  They are probably right, but there are few
> +things that can't be made to run in the background using facilities
> +already available: timers, filters and sentinels.  As the code can
> +become a bit messy when using such means, with callbacks everywhere
> +and such things, it can be useful to structure the program as a
> +state machine.")
> 
> +    (license license:gpl3+)))
> +
> +(define-public emacs-excorporate
> +  (package
> +    (name "emacs-excorporate")
> +    (version "0.8.1")
> +    (source
> +      (origin
> +        (method url-fetch)
> +        (uri (string-append
> +               "https://elpa.gnu.org/packages/excorporate-"
> +               version
> +               ".tar"))

One line.

> +        (sha256
> +          (base32
> +            "1k89472x80wsn14y16km5bgynmmd2kbdfhylb3cc17jvdn1xr53y"))))
> +    (build-system emacs-build-system)
> +    (propagated-inputs
> +      `(("emacs-fsm" ,emacs-fsm)
> +        ("emacs-soap-client" ,emacs-soap-client)
> +        ("emacs-url-http-ntlm" ,emacs-url-http-ntlm)
> +        ("emacs-nadvice" ,emacs-nadvice)))
> +    (home-page
> +      "http://elpa.gnu.org/packages/excorporate.html")

One line and https.

> +    (synopsis "Exchange integration")

Maybe Exchange integration for Emacs as in description.

> +    (description
> +      "Excorporate provides Exchange integration for Emacs.

That's enough, we will have the following after installing a package.

> +To create a connection to a web service:
> +
> +M-x excorporate
> +
> +Excorporate will prompt for an email address that it will use to
> +automatically discover settings.  Then it will prompt you for your
> +credentials two or three times depending on the server configuration.
> +
> +You should see a message indicating that the connection is ready
> +either in the minibuffer or in the *Messages* buffer.
> +
> +Finally, run M-x calendar, and press @code{e} to show today's meetings.
> +
> +If autodiscovery fails, customize @code{excorporate-configuration} to skip
> +autodiscovery.
> +
> +For further information including connection troubleshooting, see the
> +Excorporate Info node at C-h i d m Excorporate.
> +")
> +    (license license:gpl3+)))
> +

Regards,
Oleg.