Re: Add compat to ERC

Philip Kaludercic <[email protected]>
Newsgroups gmane.emacs.erc.general
Message-ID <[email protected]>
"J.P." <[email protected]> writes:

> Hi Philip,
>
> Thanks for making compat! Although most of it's way over my head, the
> parts I did manage to grasp look really well done. It seems to work
> great with ERC on Emacs 27 and 28, so much so that I'd like to make us
> the first :core package to require it, if that's acceptable to everyone.

Would be great to see!  Thank you for starting the initiative.

> I've attempted a patch but had no real clue what I was doing. Please
> tell us what needs changing, assuming it's salvageable; otherwise, feel
> free to take over or, if you'd be willing, provide a replacement
> whenever time allows.

I'd be glad to help, I just don't use ERC so I'd need a basic
configuration to contribute materially.

> diff --git a/lisp/erc/erc-compat.el b/lisp/erc/erc-compat.el
> index 16cfb15a5a..899522f186 100644
> --- a/lisp/erc/erc-compat.el
> +++ b/lisp/erc/erc-compat.el
> @@ -26,6 +26,7 @@
>  ;; This mostly defines stuff that cannot be worked around easily.
>  
>  ;;; Code:
> +(require 'compat nil 'noerror)

I guess this is the main part.  Have you tested it to see if it works?

>  ;;;###autoload(autoload 'erc-define-minor-mode "erc-compat")
>  (define-obsolete-function-alias 'erc-define-minor-mode
> @@ -150,6 +151,40 @@ erc-subseq
>  		 (setq i (1+ i) start (1+ start)))
>  	       res))))))
>  
> +;;;; lisp/calendar/time-date.el
> +
> +(defun erc-compat--28-decoded-time-period (time)
> +  "Interpret DECODED as a period and return its length in seconds.
> +For computational purposes, years are 365 days long and months
> +are 30 days long."
> +  (+ (if (consp (decoded-time-second time))
> +         ;; Fractional second.
> +         (/ (float (car (decoded-time-second time)))
> +            (cdr (decoded-time-second time)))
> +       (or (decoded-time-second time) 0))
> +     (* (or (decoded-time-minute time) 0) 60)
> +     (* (or (decoded-time-hour time) 0) 60 60)
> +     (* (or (decoded-time-day time) 0) 60 60 24)
> +     (* (or (decoded-time-month time) 0) 60 60 24 30)
> +     (* (or (decoded-time-year time) 0) 60 60 24 365)))
> +
> +(defmacro erc-compat--decoded-time-period (time)
> +  (declare (indent defun))
> +  (list (if (< emacs-major-version 28)
> +            'erc-compat--28-decoded-time-period
> +          'decoded-time-period)
> +        time))

If you want, we can upstream these definitions into compat.  I would
guess others are interested in them too.

My wish would be to one day replace all custom *-compat.el files in the
core with compat.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.