Function: tit-dic-convert
tit-dic-convert is an interactive and byte-compiled function defined
in titdic-cnv.el.gz.
Signature
(tit-dic-convert FILENAME &optional DIRNAME)
Documentation
Convert a TIT dictionary of FILENAME into a Quail package.
Optional argument DIRNAME if specified is the directory name under which the generated Quail package is saved.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/international/titdic-cnv.el.gz
(defun tit-dic-convert (filename &optional dirname)
"Convert a TIT dictionary of FILENAME into a Quail package.
Optional argument DIRNAME if specified is the directory name under which
the generated Quail package is saved."
(interactive "FTIT dictionary file: ")
(let ((coding-system-for-write nil))
(with-temp-file (tit-make-quail-package-file-name filename dirname)
(let ((standard-output (current-buffer)))
(with-temp-buffer
(set-buffer-multibyte nil)
;; Here we must use `raw-text' instead of `no-conversion' to
;; enable auto-decoding of eol format (CRLF->LF).
(let ((coding-system-for-read 'raw-text))
(insert-file-contents (expand-file-name filename)))
;; Decode the buffer contents from the encoding specified by a
;; value of the key "ENCODE:".
(if (not (search-forward "\nBEGIN" nil t))
(error "TIT dictionary doesn't have body part"))
(let ((limit (point))
coding-system slot)
(goto-char (point-min))
(if (re-search-forward "^ENCODE:[ \t]*" limit t)
(progn
(goto-char (match-end 0))
(setq tit-encode (tit-read-key-value)))
(setq tit-encode tit-default-encode))
(setq slot (assoc tit-encode tit-encode-list))
(if (not slot)
(error "Invalid ENCODE: value in TIT dictionary"))
(setq coding-system (nth 1 slot))
(goto-char (point-min))
(decode-coding-region (point-min) (point-max) coding-system)
;; Explicitly set eol format to `unix'.
(setq coding-system-for-write 'utf-8-unix)
(remove-text-properties (point-min) (point-max) '(charset nil)))
(set-buffer-multibyte t)
;; Set point the starting position of the body part.
(goto-char (point-min))
(if (not (search-forward "\nBEGIN" nil t))
(error "TIT dictionary can't be decoded correctly"))
;; Process the header part.
(forward-line 1)
(narrow-to-region (point-min) (point))
(tit-process-header filename)
(widen)
;; Process the body part
(tit-process-body)
(generate-lisp-file-trailer
filename :inhibit-provide t :compile t :coding nil))))))