Initial Commit
[packages] / mule-packages / skk / skk-obsolete.el
1 ;;; skk-obsolete.el --- obsolte check for SKK environment.
2 ;; Copyright (C) 1998, 1999 Mikio Nakajima <minakaji@osaka.email.ne.jp>
3
4 ;; Author: Mikio Nakajima <minakaji@osaka.email.ne.jp>
5 ;; Maintainer: Mikio Nakajima <minakaji@osaka.email.ne.jp>
6 ;; Version: $Id: skk-obsolete.el,v 1.1 2000-07-10 04:34:01 yoshiki Exp $
7 ;; Keywords: japanese
8 ;; Last Modified: $Date: 2000-07-10 04:34:01 $
9
10 ;; This file is not part of SKK yet.
11
12 ;; SKK is free software; you can redistribute it and/or modify
13 ;; it under the terms of the GNU General Public License as published by
14 ;; the Free Software Foundation; either versions 2, or (at your option)
15 ;; any later version.
16
17 ;; SKK is distributed in the hope that it will be useful
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 ;; GNU General Public License for more details.
21
22 ;; You should have received a copy of the GNU General Public License
23 ;; along with SKK, see the file COPYING.  If not, write to the Free
24 ;; Software Foundation Inc., 59 Temple Place - Suite 330, Boston,
25 ;; MA 02111-1307, USA.
26
27 ;;; Commentary:
28 ;;
29 ;;; Code:
30 (eval-when-compile (require 'skk))
31
32 (defvar skk-obsolete-variable-alist
33   '((skk-ascii-mode . skk-latin-mode)
34     (skk-ascii-mode-map . skk-latin-mode-map)
35     (skk-ascii-mode-string . skk-latin-mode-string)
36     (skk-default-zenkaku-vector . skk-default-jisx0208-vector)
37     (skk-hirakana-cursor-color . skk-hiragana-cursor-color)
38     (skk-hirakana-mode-string . skk-hiragana-mode-string)
39     (skk-num-type-list . skk-num-type-alist)
40     (skk-numeric-conversion-float-num . skk-num-convert-float)
41     (skk-recompute-numerals-key . skk-num-recompute-key)
42     (skk-report-server-response . skk-server-report-response)
43     (skk-remote-shell-program . skk-server-remote-shell-program)
44     (skk-uniq-numerals . skk-num-uniq)
45     (skk-zenkaku-cursor-color . skk-jisx0208-latin-cursor-color)
46     (skk-zenkaku-mode . skk-jisx0208-latin-mode)
47     (skk-zenkaku-mode-map . skk-jisx0208-latin-mode-map)
48     (skk-zenkaku-mode-string . skk-jisx0208-latin-mode-string)
49     (skk-zenkaku-vector . skk-jisx0208-latin-vector) )
50   "obsolete \e$BJQ?t$N%(!<%j%9%H!#\e(B" )
51
52 (defvar skk-obsolete-function-alist
53   '((skk-adjust-numeric-henkan-data . skk-num-process-user-minibuf-input)
54     (skk-ascii-mode . skk-latin-mode)
55     (skk-ascii-mode-on . skk-latin-mode-on)
56     (skk-attr-time-difference . skk-time-difference)
57     (skk-compute-numeric-henkan-key . skk-num-compute-henkan-key)
58     (skk-date . skk-current-date)
59     (skk-flatten-list . skk-num-flatten-list)
60     (skk-init-numeric-conversion-variables . skk-num-initialize)
61     ;; hirakana -> hiragana
62     (skk-isearch-skk-hirakana-mode-p . skk-isearch-skk-hiragana-mode-p)
63     ;; typo
64     (skk-isearch-skk-jix0208-latin-mode-p . skk-isearch-skk-jisx0208-latin-mode-p)
65     ;; hirakana -> hiragana
66     (skk-isearch-skk-turn-on-hirakana-mode . skk-isearch-skk-turn-on-hiragana-mode)
67     (skk-jisx0208-latin-num-str . skk-num-jisx0208-latin)
68     (skk-kakutei-cleanup-henkan-buffer . skk-kakutei-cleanup-buffer) 
69     (skk-kakutei-save-and-init-variables . skk-kakutei-initialize)
70     (skk-kanji-num-str . skk-num-type2-kanji)
71     (skk-kanji-num-str2 . skk-num-type3-kanji)
72     (skk-kanji-num-str2-subr . skk-num-type3-kanji-1)
73     (skk-kanji-num-str3 . skk-num-type5-kanji)
74     (skk-kanji-num-str3-subr . skk-num-type5-kanji-1)
75     (skk-middle-list . skk-splice-in)
76     (skk-numeric-convert . skk-num-convert)
77     (skk-numeric-convert*7 . skk-num-convert*7)
78     (skk-numeric-midasi-word . skk-num-henkan-key)
79     (skk-raw-number-to-skk-rep . skk-num-rawnum-exp)
80     (skk-raw-number-to-skk-rep-1 . skk-num-rawnum-exp-1)
81     (skk-recompute-numerals . skk-num-recompute)
82     (skk-set-cursor-color-properly . skk-set-cursor-properly)
83     (skk-set-cursor-properly . skk-cursor-set-properly)
84     (skk-shogi-num-str . skk-num-shogi)
85     (skk-update-jisyo-for-numerals . skk-num-update-jisyo)
86     (skk-uniq-numerals . skk-num-uniq)
87     (skk-public-jisyo-contains-p . skk-public-jisyo-has-entry-p)
88     (skk-zenkaku-mode . skk-jisx0208-latin-mode)
89     (skk-zenkaku-mode-on . skk-jisx0208-latin-mode-on)
90     (skktut-quit-tutorial . skk-tutorial-quit)
91     (skktut-tutorial-again . skk-tutorial-again) )
92   "obsolete \e$B4X?t$N%(!<%j%9%H!#\e(B" )
93
94 ;;;###autoload
95 (defun skk-obsolete-check (file)
96   "FILE \e$BFb$N\e(B obsolete \e$BJQ?tL>$H\e(B obsolete \e$B4X?tL>$r%A%'%C%/$7!"=q49$($k!#\e(B"
97   (interactive (list (read-file-name
98                       (format "File to check: (default: %s) " skk-init-file)
99                       default-directory skk-init-file )))
100   (save-window-excursion (skk-obsolete-check-1 file)) )
101
102 ;;;###autoload
103 (defun skk-obsolete-check-all-files (&optional program-files-too)
104   "\e$B4XO"%U%!%$%kA4$F$N\e(B obsolete \e$BJQ?tL>$H\e(B obsolete \e$B4X?tL>$r%A%'%C%/$7!"=q49$($k!#\e(B
105 C-u M-x skk-obsolete-check-all-files \e$B$N$h$&$K5/F0$7$?$H$-$O!"%G%#%U%)%k%H%G%#%l\e(B
106 \e$B%/%H%j$K$"$k\e(B SKK \e$B%W%m%0%i%`%U%!%$%k$b%A%'%C%/$r9T$J$&!#\e(B"
107   (interactive "p")
108   (save-window-excursion
109     (let ((lp load-path)
110           (user-files (list skk-init-file user-init-file))
111           (system-files '("default.el" "site-start.el"))
112           (program-files
113            (if program-files-too
114                '("skk-foreword.el" "skk-gadget.el" "skk-isearch.el" "skk-auto.el"
115                  "skk-comp.el" "skk-kakasi.el" "skk-kcode.el" "skk-leim.el"
116                  "skk-look.el" "skk-num.el" "skk-server.el" "skk-tut.el" "skk.el"
117                  "skk-vip.el" "skk-viper.el" "skk-dbm.el" "skk-rdbms.el"
118                  "skk-attr.el" "skk-assoc.el" )))
119           files modified )
120       (while lp
121         (setq files (nconc (skk-obsolete-check-all-files-1 system-files (car lp))
122                            files )
123               lp (cdr lp) ))
124       (setq files (nconc (skk-obsolete-check-all-files-1 user-files) files)
125             files (nconc (skk-obsolete-check-all-files-1 program-files) files) )
126       (while files
127         (setq modified (cons (skk-obsolete-check-1 (car files) 'no-restart-question)
128                              modified )
129               files (cdr files) ))
130       (message "Obsolete check is completely done")
131       (sit-for 1)
132       (and (memq t modified)
133            (y-or-n-p "You are strongly recommended to kill this session and restart Emacs.  Kill Emacs?")
134            (save-buffers-kill-emacs) ))))
135
136 (defun skk-obsolete-check-1 (file &optional no-restart-question)
137   (let ((alist (sort
138                 (mapcar (function
139                          (lambda (al)
140                            (cons (prin1-to-string (car al))
141                                  (prin1-to-string (cdr al)) )))
142                         (append skk-obsolete-function-alist
143                                 skk-obsolete-variable-alist ))
144                 ;; sort by length.
145                 (function (lambda (x y) (string< (car y) (car x)))) ))
146         modified )
147     (find-file (expand-file-name file))
148     (delete-other-windows)
149     (message "Obsolete check for %s..." file)
150     (while alist
151       (goto-char (point-min))
152       (query-replace-regexp
153        ;; not to match a name which contains pattern.
154        (concat (car (car alist)) "\\([^-]\\)")
155        (concat (cdr (car alist)) "\\1") )
156       (setq alist (cdr alist)) )
157     (and (buffer-modified-p)
158          (y-or-n-p "Obsolete check for this buffer done.  Save this buffer? ")
159          (setq modified t)
160          (save-buffer) )
161     (kill-buffer (current-buffer))
162     (message "Obsolete check for %s...done" file)
163     (sit-for 1)
164     (and (not no-restart-question)
165          modified
166          (y-or-n-p "You are strongly recommended to kill and restart Emacs.  Kill Emacs?")
167          (save-buffers-kill-emacs) )
168     modified ))
169
170 (defun skk-obsolete-check-all-files-1 (files &optional directory)
171   (let ((tmpfiles files)
172         objfile objfile-list)
173     (while tmpfiles
174       (setq objfile (expand-file-name (car tmpfiles) directory))
175       (if (file-exists-p objfile)
176           (progn
177             (if (file-readable-p objfile)
178                 ;; OBJFILE may not be writable, but check anyway.
179                 (setq objfile-list (cons objfile (delete objfile objfile-list)))
180               (message "%s is not readable.  Pass checking" objfile)
181               (sit-for 1) )))
182       (setq tmpfiles (cdr tmpfiles)) )
183     objfile-list ))
184
185 ;;;###autoload
186 (defun skk-obsolete-put-obsolete-mark ()
187   (let ((vl skk-obsolete-variable-alist)
188         ;;(fl skk-obsolete-function-alist) )
189         )
190     (while vl
191       (make-obsolete-variable (car (car vl)) (cdr (car vl)))
192       (setq vl (cdr vl)) )
193     ;; Put mark by define-obsolete-function-alias in skk-foreword.el.
194     ;;(while fl
195     ;;  (make-obsolete (car (car fl)) (cdr (car fl)))
196     ;;  (setq fl (cdr fl)) )))
197     ))
198
199 (provide 'skk-obsolete)
200 ;;; skk-obsolete.el ends here