git: d59facdd8f77 - main - editors/tamago: Unbreak with Emacs 28

From: Yasuhiro Kimura <yasu_at_FreeBSD.org>
Date: Fri, 05 Nov 2021 07:49:29 UTC
The branch main has been updated by yasu:

URL: https://cgit.FreeBSD.org/ports/commit/?id=d59facdd8f77110a194894cf74806a83b3879893

commit d59facdd8f77110a194894cf74806a83b3879893
Author:     Yasuhiro Kimura <yasu@FreeBSD.org>
AuthorDate: 2020-09-09 00:26:11 +0000
Commit:     Yasuhiro Kimura <yasu@FreeBSD.org>
CommitDate: 2021-11-05 07:48:48 +0000

    editors/tamago: Unbreak with Emacs 28
    
    PR:             249201
    Approved by:    maintainer timeout (> 13 months)
    MFH:            2021Q4
---
 editors/tamago/Makefile                       |   5 +-
 editors/tamago/files/patch-make-coding-system | 237 ++++++++++++++++++++++++++
 2 files changed, 238 insertions(+), 4 deletions(-)

diff --git a/editors/tamago/Makefile b/editors/tamago/Makefile
index 7e67201abdd0..fb8c305bce1c 100644
--- a/editors/tamago/Makefile
+++ b/editors/tamago/Makefile
@@ -3,7 +3,7 @@
 PORTNAME=	tamago
 PORTVERSION=	4.0.6.0.20041122.19.14
 DISTVERSIONPREFIX=	v
-PORTREVISION=	6
+PORTREVISION=	7
 CATEGORIES=	editors elisp
 PKGNAMESUFFIX=	${EMACS_PKGNAMESUFFIX}
 
@@ -13,9 +13,6 @@ COMMENT=	Egg V4, Multilingual Input Method for Emacsen
 LICENSE=	GPLv2
 
 USES=		emacs
-# Fails to build with Emacs 27.
-# Temporarily disable devel_full and devel_nox.
-EMACS_FLAVORS_EXCLUDE=	devel_full devel_nox
 USE_GITHUB=	yes
 GH_ACCOUNT=	hrs-allbsd
 
diff --git a/editors/tamago/files/patch-make-coding-system b/editors/tamago/files/patch-make-coding-system
new file mode 100644
index 000000000000..6de81e8bcacd
--- /dev/null
+++ b/editors/tamago/files/patch-make-coding-system
@@ -0,0 +1,237 @@
+diff --git egg-com.el egg-com.el
+index 63ebdb5..daab668 100644
+--- egg-com.el
++++ egg-com.el
+@@ -99,135 +99,38 @@
+     (prog1 (- (point) pos)
+       (goto-char pos))))
+ 
+-(if (and (fboundp 'make-coding-system)
+-         (null (get 'make-coding-system 'byte-obsolete-info)))
+-;; since Emacs 23.1, make-coding-system has been marked as obsolete.
+-    (eval-and-compile
+-	(define-ccl-program ccl-decode-fixed-euc-jp
+-	  `(2
+-	    ((r2 = ,(charset-id 'japanese-jisx0208))
+-	     (r3 = ,(charset-id 'japanese-jisx0212))
+-	     (r4 = ,(charset-id 'katakana-jisx0201))
+-	     (read r0)
+-	     (loop
+-	      (read r1)
+-	      (if (r0 < ?\x80)
+-		  ((r0 = r1)
+-		   (if (r1 < ?\x80)
+-		       (write-read-repeat r0))
+-		   (write r4)
+-		   (write-read-repeat r0))
+-		((if (r1 > ?\x80)
+-		     ((write r2 r0)
+-		      (r0 = r1)
+-		      (write-read-repeat r0))
+-		   ((write r3 r0)
+-		    (r0 = (r1 | ?\x80))
+-		    (write-read-repeat r0)))))))))
+-
+-	(define-ccl-program ccl-encode-fixed-euc-jp
+-	  `(2
+-	    ((read r0)
+-	     (loop
+-	      (if (r0 == ,(charset-id 'latin-jisx0201))                   ; Unify
+-		  ((read r0)
+-		   (r0 &= ?\x7f)))
+-	      (if (r0 < ?\x80)                                            ;G0
+-		  ((write 0)
+-		   (write-read-repeat r0)))
+-	      (r6 = (r0 == ,(charset-id 'japanese-jisx0208)))
+-	      (r6 |= (r0 == ,(charset-id 'japanese-jisx0208-1978)))
+-	      (if r6                                                      ;G1
+-		  ((read r0)
+-		   (write r0)
+-		   (read r0)
+-		   (write-read-repeat r0)))
+-	      (if (r0 == ,(charset-id 'katakana-jisx0201))                ;G2
+-		  ((read r0)
+-		   (write 0)
+-		   (write-read-repeat r0)))
+-	      (if (r0 == ,(charset-id 'japanese-jisx0212))                ;G3
+-		  ((read r0)
+-		   (write r0)
+-		   (read r0)
+-		   (r0 &= ?\x7f)
+-		   (write-read-repeat r0)))
+-	      (read r0)
+-	      (repeat)))))
+-	(make-coding-system 'fixed-euc-jp 4 ?W "Coding System for fixed EUC Japanese"
+-			    (cons ccl-decode-fixed-euc-jp ccl-encode-fixed-euc-jp))
+-	)
+-    (eval-and-compile
+-    ;; since Emacs 23.1, make-coding-system has been marked as obsolete.
+-    ;; From Handa-san. [mule-ja : No.09414]
+-    (define-charset 'fixed-euc-jp
+-      "Fixed EUC Japanese"
+-      :dimension 2
+-      :superset '(ascii
+-		  (katakana-jisx0201 . #x80)
+-		  (japanese-jisx0208 . #x8080)
+-		  (japanese-jisx0212 . #x8000)))
+-    (define-coding-system 'fixed-euc-jp
+-      "Coding System for fixed EUC Japanese"
+-      :mnemonic ?W
+-      :coding-type 'charset
+-      :charset-list '(fixed-euc-jp))
+-    )
++(eval-and-compile
++  (define-charset 'fixed-euc-jp
++    "Fixed EUC Japanese"
++    :dimension 2
++    :superset '(ascii
++		(katakana-jisx0201 . #x80)
++		(japanese-jisx0208 . #x8080)
++		(japanese-jisx0212 . #x8000)))
++  (define-coding-system 'fixed-euc-jp
++    "Coding System for fixed EUC Japanese"
++    :mnemonic ?W
++    :coding-type 'charset
++    :charset-list '(fixed-euc-jp))
+   )
+ 
+ ;; Korean
+-
+-(if (and (fboundp 'make-coding-system)
+-         (null (get 'make-coding-system 'byte-obsolete-info)))
+-;; since Emacs 23.1, make-coding-system has been marked as obsolete.
+-    (eval-and-compile
+-(define-ccl-program ccl-decode-fixed-euc-kr
+-  `(2
+-    ((r2 = ,(charset-id 'korean-ksc5601))
+-     (read r0)
+-     (loop
+-      (read r1)
+-      (if (r0 < ?\x80)
+-	  (r0 = r1 & ?\x7f)
+-	((write r2 r0)
+-	 (r0 = r1 | ?\x80)))
+-      (write-read-repeat r0)))))
+-
+-(define-ccl-program ccl-encode-fixed-euc-kr
+-  `(2
+-    ((read r0)
+-     (loop
+-      (if (r0 < ?\x80)
+-	  ((write 0)
+-	   (write-read-repeat r0)))
+-      (if (r0 == ,(charset-id 'korean-ksc5601))
+-	  ((read r0)
+-	   (write r0)
+-	   (read r0)
+-	   (write-read-repeat r0)))
+-      (read r0)
+-      (repeat)))))
+-(make-coding-system 'fixed-euc-kr 4 ?W "Coding System for fixed EUC Korean"
+-		    (cons ccl-decode-fixed-euc-kr ccl-encode-fixed-euc-kr)))
+-    (eval-and-compile
+-    ;; since Emacs 23.1, make-coding-system has been marked as obsolete.
+-    (define-charset 'fixed-euc-kr
+-      "Fixed EUC Korean"
+-      :dimension 2
+-      :superset '(ascii
+-		  (korean-ksc5601 . #x8080)))
+-    (define-coding-system 'fixed-euc-kr
+-      "Coding System for fixed EUC Korean"
+-      :mnemonic ?W
+-      :coding-type 'charset
+-      :charset-list '(fixed-euc-kr))
+-    )
+-)
++(eval-and-compile
++  (define-charset 'fixed-euc-kr
++    "Fixed EUC Korean"
++    :dimension 2
++    :superset '(ascii
++		(korean-ksc5601 . #x8080)))
++  (define-coding-system 'fixed-euc-kr
++    "Coding System for fixed EUC Korean"
++    :mnemonic ?W
++    :coding-type 'charset
++    :charset-list '(fixed-euc-kr))
++  )
+ 
+ 
+ ;; Chinese
+ ;;
+-;; TODO: convert an obsolete make-coding-system to define-coding-system.
+ 
+ (defconst egg-pinyin-shengmu
+   '((""  . 0)  ("B" . 1)  ("C"  . 2)  ("Ch" . 3)  ("D" . 4)
+@@ -687,29 +590,33 @@ Return the length of resulting text."
+ (defun post-read-decode-euc-zy-tw (len)
+   (post-read-decode-fixed-euc-china len 'tw t))
+ 
+-(make-coding-system 'fixed-euc-py-cn 0 ?W
+-		    "Coding System for fixed EUC Chinese-gb2312")
++(define-coding-system
++  'fixed-euc-py-cn "Coding System for fixed EUC Chinese-gb2312"
++  :mnemonic ?W :coding-type 'emacs-mule)
+ (coding-system-put 'fixed-euc-py-cn
+ 		   'pre-write-conversion 'pre-write-encode-euc-cn)
+ (coding-system-put 'fixed-euc-py-cn
+ 		   'post-read-conversion 'post-read-decode-euc-py-cn)
+ 
+-(make-coding-system 'fixed-euc-zy-cn 0 ?W
+-		    "Coding System for fixed EUC Chinese-gb2312")
++(define-coding-system
++  'fixed-euc-zy-cn "Coding System for fixed EUC Chinese-gb2312"
++  :mnemonic ?W :coding-type 'emacs-mule)
+ (coding-system-put 'fixed-euc-zy-cn
+ 		   'pre-write-conversion 'pre-write-encode-euc-cn)
+ (coding-system-put 'fixed-euc-zy-cn
+ 		   'post-read-conversion 'post-read-decode-euc-zy-cn)
+ 
+-(make-coding-system 'fixed-euc-py-tw 0 ?W
+-		    "Coding System for fixed EUC Chinese-cns11643")
++(define-coding-system
++  'fixed-euc-py-tw "Coding System for fixed EUC Chinese-cns11643"
++  :mnemonic ?W :coding-type 'emacs-mule)
+ (coding-system-put 'fixed-euc-py-tw
+ 		   'pre-write-conversion 'pre-write-encode-euc-tw)
+ (coding-system-put 'fixed-euc-py-tw
+ 		   'post-read-conversion 'post-read-decode-euc-py-tw)
+ 
+-(make-coding-system 'fixed-euc-zy-tw 0 ?W
+-		    "Coding System for fixed EUC Chinese-cns11643")
++(define-coding-system
++  'fixed-euc-zy-tw "Coding System for fixed EUC Chinese-cns11643"
++  :mnemonic ?W :coding-type 'emacs-mule)
+ (coding-system-put 'fixed-euc-zy-tw
+ 		   'pre-write-conversion 'pre-write-encode-euc-tw)
+ (coding-system-put 'fixed-euc-zy-tw
+@@ -735,8 +642,9 @@ Return the length of resulting text."
+ 	   (r0 = 0)))
+       (write-read-repeat r0))))))
+ 
+-(make-coding-system 'egg-binary 4 ?W "Coding System for binary data"
+-		    (cons ccl-decode-egg-binary ccl-encode-egg-binary))
++(define-coding-system 'egg-binary "Coding System for binary data"
++  :mnemonic ?W :coding-type 'ccl :ccl-decoder ccl-decode-egg-binary
++  :ccl-encoder ccl-encode-egg-binary)
+ 
+ 
+ (defun comm-format-u32c (uint32c)
+diff --git egg-x0213.el egg-x0213.el
+index ce13eb3..bb44584 100644
+--- egg-x0213.el
++++ egg-x0213.el
+@@ -104,8 +104,10 @@
+               (repeat)))
+          (repeat)))))
+ 
+-   (make-coding-system
+-    'fixed-euc-jisx0213 4 ?W "Coding System for fixed EUC Japanese"
+-    (cons ccl-decode-fixed-euc-jisx0213 ccl-encode-fixed-euc-jisx0213))))
++   (define-coding-system
++     'fixed-euc-jisx0213 "Coding System for fixed EUC Japanese"
++     :mnemonic ?W :coding-type 'ccl
++     :ccl-decoder ccl-decode-fixed-euc-jisx0213
++     :ccl-encoder ccl-encode-fixed-euc-jisx0213)))
+ 
+ (provide 'egg-x0213)