xyzzyからの別名保存をディレクトリ関係なくサポート!emacs-write-fileのディレクトリ対応版

ファイル名: -
別名で保存した時に windowsライクにその変更後のファイルでバッファを修正したいが、既存機能だと、xyzzy上はファイルは保存するが、バッファは元のファイルで編集が進む。。 その対応をするlisp [xyzzy:08055]の方法の方がいい。(これ頭悪い) また、(06/21/2004)やっぱり書き直した。
(defun emacs-write-file-set-default-file (filename)
  (interactive "FWrite file: "
    :title0 "Write File" :default0
    (let ((fn))
      (setq fn  (get-buffer-file-name (selected-buffer)))
      (concat
       ;ディレクトリ
       (or
        *default-write-file-directory*
        (if  fn
         (directory-namestring fn)
          nil
          )
        (map-backslash-to-slash (concat (get-special-folder-location :personal) "/"))
        ;(si::system-root)
        ;(default-directory)
        )
       ;ファイル
       (or
        (if fn
            (progn
             (setq fn (file-namestring fn))
              (cond ((equal (char fn 0) #\ )(setq fn nil))
                    ((equal (char fn 0) #\*)(setq fn nil))
                    ((equal (char fn 1) #\*)(setq fn nil))
                    )
              fn)
          nil
          )

        (progn
          (setq fn (buffer-name(selected-buffer)) )
          (cond ((equal (char fn 0) #\ ) (setq fn nil))
                ((equal (char fn 0) #\*) (setq fn nil))
                ((equal (char fn 1) #\*) (setq fn nil))
                )
          fn)

        ))
     )
    )
    (and (or (make-directory-unless-directory-exists filename) t)
         (rename filename)
         (save-buffer))
  )

;[xyzzy:8052,78,77] 8055 YANASE Kengo
;;; find-file時にディレクトリが作れるように
  (defun make-directory-unless-directory-exists (filename)
    (let ((d (directory-namestring filename)))
      (unless (check-valid-pathname d)
        (when (yes-or-no-p "~a~%ディレクトリがないけど作る?"  d)
          (create-directory d))))
    nil)

;;; ファイルを開く前に
(add-hook '*before-find-file-hook*
          'make-directory-unless-directory-exists)

;(global-set-key '(#\C-x #\C-w) 'emacs-write-file-with-directory)
;(global-set-key '(#\C-x #\C-w) 'emacs-write-file)
(global-set-key '(#\C-x #\C-w) 'emacs-write-file-set-default-file)
Delicious にシェア
Digg にシェア
reddit にシェア
LinkedIn にシェア
LINEで送る
email this
Pocket

589 views.



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です