Source of Nothingness - xyzzy : モバイルxyzzyの件

* xyzzy : モバイルxyzzyの件

ヒストリ変数でパスを指定する場合でのみ問題ということであれば.xyzzy.historyの出力をどうにかすればいいのでは?と思い、書いてみる。
未テストなので注意。
帰ってからテストします。

; history.l
(defun save-history-file ()
  (when (and *history-file-loaded*
             (integerp *save-history*))
    (ignore-errors (run-hooks '*save-history-hook*))
    (let ((*package* *package*))
      (with-open-file (s (history-file-name)
                         :direction :output
                         :if-exists :supersede
                         :if-does-not-exist :create)
        (flet ((put (var value)
                 (unless (eq *package* (symbol-package var))
                   (setq *package* (symbol-package var))
                   (write `(in-package ,(package-name *package*))
                          :stream s :escape t)
                   (terpri s))
                 (if (and (stringp value) (valid-path-p value) (eql 0 (string-matchp (regexp-quote (si:system-root)) value)))
                     (write `(set-default ',var (merge-pathnames ,(substitute-string (string-downcase value) (string-downcase (si:system-root)) "") (si:system-root))) :stream s :escape t :circle t)
                   (write `(set-default ',var ',value)
                          :stream s :escape t :circle t))
                 (terpri s)))
          (save-history-symbol-packages s *history-variable-list*)
          (mapcar #'(lambda (var)
                      (let* ((his (symbol-value var))
                             (exceed (- (length his) *save-history*)))
                        (if (> exceed 0)
                            (setq his (nbutlast his exceed)))
                        (put var his)))
                  *minibuffer-history-variables*)
          (mapcar #'(lambda (var)
                      (when (and (symbolp var)
                                 (boundp var))
                        (put var (default-value var))))
                  *history-variable-list*)))))
  (when *save-resume-info*
    (let ((base (resume-file-name-base)))
      (dotimes (x 1000)
        (with-open-file (s (merge-pathnames (format nil "~a~a" base x)
                                            (user-config-path))
                           :direction :output
                           :if-exists nil
                           :if-does-not-exist :create)
          (when s
            (save-session-info s)
            (return)))))))

update : 2006-10-20 (Fri) 12:54:35