changeset 24345:26fcfef41d24

(coding-system-list): Moved here from mule-util.el to avoid autoloading mule-util by the call of select-safe-coding-system.
author Kenichi Handa <handa@m17n.org>
date Thu, 18 Feb 1999 13:11:24 +0000
parents 8b7ef7fb9e2e
children 68d26067bb74
files lisp/international/mule.el
diffstat 1 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/international/mule.el	Thu Feb 18 12:52:07 1999 +0000
+++ b/lisp/international/mule.el	Thu Feb 18 13:11:24 1999 +0000
@@ -481,6 +481,25 @@
 	  (setq len (/ len 2))))
       (setcdr tem (cons coding-system (cdr tem))))))
 
+(defun coding-system-list (&optional base-only)
+  "Return a list of all existing coding systems.
+If optional arg BASE-ONLY is non-nil, only base coding systems are listed."
+  (let* ((codings (copy-sequence coding-system-list))
+	 (tail (cons nil codings)))
+    ;; Remove subsidiary coding systems (eol variants) and alias
+    ;; coding systems (if necessary).
+    (while (cdr tail)
+      (let* ((coding (car (cdr tail)))
+	     (aliases (coding-system-get coding 'alias-coding-systems)))
+	(if (or
+	     ;; CODING is an eol variant if not in ALIASES.
+	     (not (memq coding aliases))
+	     ;; CODING is an alias if it is not car of ALIASES.
+	     (and base-only (not (eq coding (car aliases)))))
+	    (setcdr tail (cdr (cdr tail)))
+	  (setq tail (cdr tail)))))
+    codings))
+
 ;; Make subsidiary coding systems (eol-type variants) of CODING-SYSTEM.
 (defun make-subsidiary-coding-system (coding-system)
   (let ((coding-spec (coding-system-spec coding-system))