SKKの単語登録まで待たされる問題を解決
SKKで単語登録するまでに時間がかかりすぎる。2秒とか待たされる。
http://mail.ring.gr.jp/skk/200704/msg00007.html
http://mail.ring.gr.jp/skk/200704/msg00014.html
どういう副作用があるのかわかってないですが (accept-process-output (get-buffer-process (current-buffer))) のようにプロセスを限定すると1回の応答待ちになりました。
だからskk-search-server-1を再定義する。
(defun skk-search-server-1 (file limit) "skk-search-server のサブルーチン。" (let ((key (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key)) ;; バッファローカル値の受け渡しのため、別名の一時変数に取る。 (okurigana (or skk-henkan-okurigana skk-okuri-char))) (cond ((skk-server-live-p (skk-open-server)) (with-current-buffer skkserv-working-buffer (let ((cont t) (count 0) l) (erase-buffer) (process-send-string skkserv-process (concat "1" key " ")) (while (and cont (skk-server-live-p)) (accept-process-output skkserv-process) (setq count (1+ count)) (when (> (buffer-size) 0) (if (eq (char-after 1) ?1) ;?1 ;; found key successfully, so check if a whole line ;; is received. (when (eq (char-after (1- (point-max))) ?\n) ;?\n (setq cont nil)) ;; not found or error, so exit (setq cont nil)))) (goto-char (point-min)) (when skk-server-report-response (skk-message "%d 回 SKK サーバーの応答待ちをしました" "Waited for server response %d times" count)) (when (eq (following-char) ?1) ;?1 (forward-char 2) (setq l (skk-compute-henkan-lists okurigana)) (when l (cond ((and okurigana skk-henkan-okuri-strictly) ;; 送り仮名が同一のエントリのみを返す。 (nth 2 l)) ((and okurigana skk-henkan-strict-okuri-precedence) (skk-nunion (nth 2 l) (car l))) (t (car l)))))))) (t ;; server is not active, so search file instead (skk-search-jisyo-file file limit))))) (byte-compile 'skk-search-server-1)