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

From: Brett Gilio <[email-masked]>
Date: Mon, 09 Dec 2019 23:31:30 -0600

Oleg Pykhalov <[email-masked]> writes:

> 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.
>

Hello Oleg and TK,

I'd like to see these changes get pushed to master. TK, we are just
needing you to split these packages and follow the revisions that Oleg
proposed which I agree with. Depending on the age of these packages they
now likely lag behind its dependent packages so some version adjustments
may be indicated.

If you need some help, please do not hesitate to ask!

-- 
Brett M. Gilio
Homepage -- https://scm.pw/
GNU Guix -- https://guix.gnu.org/