unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Niklas Eklund <niklas.eklund@posteo.net>
To: Philip Kaludercic <philipk@posteo.net>
Cc: emacs-devel@gnu.org
Subject: Re: Add zuul.el package to ELPA
Date: Wed, 31 Aug 2022 11:44:13 +0000	[thread overview]
Message-ID: <eruueh1qsw3aeq.fsf@posteo.net> (raw)
In-Reply-To: <87wnao6566.fsf@posteo.net>

[-- Attachment #1: Type: text/plain, Size: 1540 bytes --]

Philip Kaludercic <philipk@posteo.net> writes:

> Niklas Eklund <niklas.eklund@posteo.net> writes:
>
>> Niklas Eklund <niklas.eklund@posteo.net> writes:
>>
>>> Philip Kaludercic <philipk@posteo.net> writes:
>>>
>>>> Niklas Eklund <niklas.eklund@posteo.net> writes:
>>>>
>>>>>> I believe if you used compat, you can reduce the minimal version of
>>>>>> Emacs down to 26.1, and the only hard dependency appears to be
>>>>>> project.el?
>>
>> One other thing I saw that package lint complained about, and that I
>> couldn't find in the compat package was with-connection-local-variables?
>>
>> 486:3: error: You should depend on (emacs "27.1") if you need
>> `with-connection-local-variables'.
>>
>> I see in the manual that it doesn't seem to be supported
>> https://git.sr.ht/~pkal/compat/tree/master/compat.texi#L1753. So I guess
>> I can lower it to 27.1 the most, but that would be a good win over 28.1 :)
>
> True, that is missing, but reading through the source in files-x.el, it
> *might* be possible to add that functionality in a backwards
>  way?  But if not, 27.1 is still a considerable improvement considering
>  that Debian Stable is currently distributing that version.

Absolutely, a great improvement! :) If that is added in the future that
would be even better of course, seems like that's the only thing
blocking the package from supporting 26. 

Once you have released a new version of compat I'll try to depend on
that. Would this patch be sufficient you think? (given that I update the
version of compat to the latest)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: patch --]
[-- Type: text/x-diff, Size: 1408 bytes --]

From a698110e477a1e640b851f912601c67e19bea6b7 Mon Sep 17 00:00:00 2001
From: Niklas Eklund <niklas.eklund@posteo.net>
Date: Wed, 31 Aug 2022 13:38:06 +0200
Subject: [PATCH] Use compat package to support older Emacs version

This patch lowers the required Emacs version from 28.1 to 27.1. This
is done by using the compat package in combination with an explicit
dependency to the project package.
---
 zuul.el | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/zuul.el b/zuul.el
index f2b146c..34d4bf7 100644
--- a/zuul.el
+++ b/zuul.el
@@ -5,7 +5,7 @@
 ;; Author: Niklas Eklund <niklas.eklund@posteo.net>
 ;; URL: https://git.sr.ht/~niklaseklund/zuul.el
 ;; Version: 0.3
-;; Package-Requires: ((emacs "28.1"))
+;; Package-Requires: ((emacs "27.1") (compat "2.1.2.2") (project "0.8.1"))
 ;; Keywords: convenience tools
 
 ;; This file is not part of GNU Emacs.
@@ -41,6 +41,9 @@
 
 (require 'ansi-color)
 (require 'comint)
+(require 'compat)
+(require 'compat-27)
+(require 'compat-28)
 (require 'project)
 (eval-when-compile (require 'rx))
 (require 'subr-x)
@@ -770,7 +773,7 @@ Optionally provide extra parameters PARAMS, PARSER, METHOD, BUFFER or HEADERS."
   "Parse the output of a json build."
   (let ((build (zuul--request-json-parser)))
     (string-join
-     (flatten-list
+     (flatten-tree
       (seq-map #'zuul--build-playbook-output build))
      "\n")))
 
-- 
2.34.0


[-- Attachment #3: Type: text/plain, Size: 4066 bytes --]


/Niklas

>> /Niklas
>>
>>>>> I wasn't familiar with the compat library. But if I have a dependency to
>>>>> project.el which package-lint tells me I need to have Emacs 28.1 for, is
>>>>> the proper way to add project to Package-Requires to circumvent the
>>>>> need? Should I then do the same for e.g. seq or does compat provide
>>>>> functionality for that library?
>>>>
>>>> No, compat does not automatically add other dependencies.  If you need
>>>> some other core package that is also available from ELPA, you will need
>>>> to add the dependency to the "Package-Requires" list yourself.
>>>
>>> Alright, then I understand. I'll look into that.
>>>
>>>> But I have noticed that compat is missing `text-property-search-forward'
>>>> and `text-property-search-backward'.  If you are interested in using
>>>> compat, I've already implemented the code and could publish a release
>>>> with these functions added.
>>>
>>> I am interested in adding support for compat, would be good to not
>>> provide a package that only works for the most recent Emacs. Let me know
>>> when the new release is available :)
>>>
>>>>>> I'd also recommend using more specific custom types for your user
>>>>>> options.  See (elisp) Composite Types.
>>>>>
>>>>> Thanks for the suggestion, I wasn't aware about these composite types!
>>>>
>>>> This is also useful since the new `setopt' macro can use this for
>>>> type-checking!
>>>
>>> That's neat!
>>>
>>> /Niklas
>>>
>>>>>> It also appears you should be able to use defconst and defvar-local in
>>>>>> your private variable section.
>>>>>
>>>>> defvar-local I didn't know about.
>>>>>
>>>>>> Keywords (:foo) do not have to be quoted to prevent evaluation.
>>>>>>
>>>>>> I believe, but I might be mistaken, that it is advised to require rx in
>>>>>> a `eval-when-compile' block.
>>>>>
>>>>> Make sense.
>>>>>
>>>>>> (mapconcat #'identity ...) should do the same as `string-join'
>>>>>
>>>>> Yeah this becomes clearer.
>>>>>
>>>>>> Defining a map like zuul-log-mode-map is usually done using defvar
>>>>>>
>>>>>>     (defvar foo-map
>>>>>>       (let ((map (make-sparse-keymap)))
>>>>>>         (define-key map ...)
>>>>>>         ...
>>>>>>         map))
>>>>>
>>>>> I have taken your suggestions and made them into the following commits:
>>>>> - Add defvar to zuul-log-mode-map
>>>>> - Replace mapconcat with string-join
>>>>> - Require rx at compilation
>>>>> - Use defconst and defvar-local in private vars
>>>>> - Use composite types for defcustom variables
>>>>> https://git.sr.ht/~niklaseklund/zuul.el/log
>>>>>
>>>>> /Niklas
>>>>>
>>>>>>> The package allows users to access build logs from the Zuul,
>>>>>>> https://zuul-ci.org/, CI system. Users uses the completion interface of
>>>>>>> Emacs to select a specific build and a buffer is then opened with the
>>>>>>> build log.
>>>>>>>
>>>>>>> The package utilizes Emacs compilation mode to navigate between errors
>>>>>>> in the logs. It also lets the user configure where projects can be found
>>>>>>> on the local machine so that navigating to the source code of an error
>>>>>>> works, even though the absolute path might not be found on the local
>>>>>>> host.
>>>>>>>
>>>>>>> /Niklas Eklund
>>>>>>>
>>>>>>> From ed4201c73aa66b21b040169009dddb636ab76048 Mon Sep 17 00:00:00 2001
>>>>>>> From: Niklas Eklund <niklas.eklund@posteo.net>
>>>>>>> Date: Mon, 29 Aug 2022 20:26:35 +0200
>>>>>>> Subject: [PATCH] * elpa-packages (zuul): New package
>>>>>>>
>>>>>>> ---
>>>>>>>  elpa-packages | 4 ++++
>>>>>>>  1 file changed, 4 insertions(+)
>>>>>>>
>>>>>>> diff --git a/elpa-packages b/elpa-packages
>>>>>>> index 4ae12a26ca..5ab182f93b 100644
>>>>>>> --- a/elpa-packages
>>>>>>> +++ b/elpa-packages
>>>>>>> @@ -810,4 +810,8 @@
>>>>>>>   ("yasnippet-classic-snippets" :url nil)
>>>>>>>   ("zones"		:url nil)  ;https://www.emacswiki.org/emacs/zones.el
>>>>>>>   ("ztree"		:url "https://github.com/fourier/ztree")
>>>>>>> + ("zuul"		:url "https://git.sr.ht/~niklaseklund/zuul.el"
>>>>>>> +  :news "CHANGELOG.org"
>>>>>>> +  :readme "README.md"
>>>>>>> +  :auto-sync t)
>>>>>>>   )

  reply	other threads:[~2022-08-31 11:44 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-29 18:37 Add zuul.el package to ELPA Niklas Eklund
2022-08-30  9:02 ` Philip Kaludercic
2022-08-30 19:52   ` Niklas Eklund
2022-08-30 22:11     ` Philip Kaludercic
2022-08-31  9:25       ` Niklas Eklund
2022-08-31  9:54         ` Niklas Eklund
2022-08-31 11:09           ` Philip Kaludercic
2022-08-31 11:44             ` Niklas Eklund [this message]
2022-08-31 11:57               ` Philip Kaludercic
2022-08-31 12:08                 ` Philip Kaludercic
2022-08-31 12:47                   ` Niklas Eklund
2022-08-31 12:44                 ` Niklas Eklund
2022-08-31 14:43                   ` Philip Kaludercic
2022-08-30 14:22 ` Stefan Monnier
2022-08-30 16:59   ` Niklas Eklund

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=eruueh1qsw3aeq.fsf@posteo.net \
    --to=niklas.eklund@posteo.net \
    --cc=emacs-devel@gnu.org \
    --cc=philipk@posteo.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).