From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Niklas Eklund Newsgroups: gmane.emacs.devel Subject: Re: Add zuul.el package to ELPA Date: Wed, 31 Aug 2022 11:44:13 +0000 Message-ID: References: <874jxuj3q1.fsf@posteo.net> <87v8qaumrh.fsf@posteo.net> <87pmgh1pbf.fsf@posteo.net> <87edwx755s.fsf@posteo.net> <87wnao6566.fsf@posteo.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="1913"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Philip Kaludercic Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Aug 31 14:35:19 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oTMwB-0000LD-FW for ged-emacs-devel@m.gmane-mx.org; Wed, 31 Aug 2022 14:35:19 +0200 Original-Received: from localhost ([::1]:49376 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oTMwA-0003Fx-Fr for ged-emacs-devel@m.gmane-mx.org; Wed, 31 Aug 2022 08:35:18 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:33178) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oTM8u-00050M-54 for emacs-devel@gnu.org; Wed, 31 Aug 2022 07:44:24 -0400 Original-Received: from mout01.posteo.de ([185.67.36.65]:45547) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oTM8p-0004gC-60 for emacs-devel@gnu.org; Wed, 31 Aug 2022 07:44:23 -0400 Original-Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 1D153240029 for ; Wed, 31 Aug 2022 13:44:14 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1661946257; bh=D9gwHMFUv/osxwcHbbOCRk8GtJWInL9VqngkwoiqHBI=; h=From:To:Cc:Subject:Date:From; b=AVSV+Br/ROTNto9Yfq7L1QsEsvaR4TF4yUchOZtVV0DQ3LRKRQcSWMbnTy3s18CHP IxcvhuIKtwcPPy/NrMREOHL1ffGUtsu38+tLI+wUVs3/9R+E96PERqlBYdjqn9BqWz m8E1i2BCA/0wezlPQiAJgkCFiIaHrArZnTHxAqKZRNXXelW9kKi6FM0KqBK/t9yXQY TM0cSA/1Uo29CTmJ1DhLhC3Mk4PGQzoCbQYTpHaU8x0RMsYzsZk9KQnHxAiMmxaVcg rDy6BA1GBe9PNK47kQ2C5hx+6+KGoDDd6GDG1ds7/u4knJ0UrV/7JSTRzk0tTYD08G b/7MLy2UVsJ6A== Original-Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4MHj4s6DXhz6tmj; Wed, 31 Aug 2022 13:44:13 +0200 (CEST) In-Reply-To: <87wnao6566.fsf@posteo.net> Received-SPF: pass client-ip=185.67.36.65; envelope-from=niklas.eklund@posteo.net; helo=mout01.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Wed, 31 Aug 2022 08:32:12 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:294426 Archived-At: --=-=-= Content-Type: text/plain Philip Kaludercic writes: > Niklas Eklund writes: > >> Niklas Eklund writes: >> >>> Philip Kaludercic writes: >>> >>>> Niklas Eklund 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) --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Use-compat-package-to-support-older-Emacs-version.patch Content-Description: patch >From a698110e477a1e640b851f912601c67e19bea6b7 Mon Sep 17 00:00:00 2001 From: Niklas Eklund 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 ;; 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 --=-=-= Content-Type: text/plain /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 >>>>>>> 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) >>>>>>> ) --=-=-=--