xyzzy
Top Page > Tips > File


読み込み

insert-fileC-x iの初期ディレクトリを固定
 →Written by Nekoya

siteinit.l(追加)
(defun my-insert-file (filename &optional encoding)
  (interactive "*fInsert file: \n0zEncoding: " :title0 "Insert file"
        :default0 *default-insert-file-directory*)
  (let ((*expected-fileio-encoding*
          (or encoding *expected-fileio-encoding*)))
    (declare (special *expected-fileio-encoding*))
    (setq filename (namestring filename))
    (when (special-file-p filename)
      (error "~aはデバイスファイルです" filename))
    (when (file-directory-p filename)
      (error "~aはディレクトリです" filename))
    (unless (and (valid-path-p filename)
         (file-exist-p filename))
      (error "~a\nファイルまたはディレクトリが見つかりません" filename))
    (insert-file-contents filename)))
(global-set-key #\[キー] 'my-insert-file)

commentary

 キー設定はお好みで。そのままC-x C-iを上書きしてもいいですし、カレントディレクトリからinsert-fileを起動したいこともあるのであれば、別のキーに設定してもいいかと。

.xyzzy(追加)
(setq *default-insert-file-directory* "[ディレクトリ]")
for example...
(setq *default-insert-file-directory* "d:/home/temporary/")

commentary

 上で指定した変数*default-insert-file-directory*にディレクトリを代入します。
 設定を変更することも多いと思うので、ダンプファイルを消す必要のあるsiteinit.lより.xyzzyに記述した方がいいでしょう。

find-file(C-x C-f)の後F7で.xyzzy、F8でsiteinit.lをロード
 →MailingList 02669

siteinit.l(追加)
(define-key minibuffer-local-completion-map #\F7
    #'(lambda () (interactive)
        (delete-region (point-min) (point-max))
        (insert (concat
            (merge-pathnames ".xyzzy" (user-homedir-pathname))))))

(define-key minibuffer-local-completion-map #\F8
    #'(lambda () (interactive)
        (delete-region (point-min) (point-max))
        (insert (concat
          (merge-pathnames "site-lisp" (si:system-root)) "/siteinit.l"))))

バッファ(現在開いているファイル)に対する操作

バッファ名をコピー
 →Written by Hie

siteinit.l(追加)
(defun my-buffer-name-copy () (interactive)
  (copy-to-clipboard (buffer-name (selected-buffer))))
(define-key spec-map #\c 'my-buffer-name-copy)

 現在のバッファの名前をクリップボードにコピーします。ここではC-c cに割り当てています。

ファイル名をコピー(\区切り)
 →Written by Hie

siteinit.l(追加)
(defun my-file-name-copy-backslash ()
  (interactive)
  (unless (equal (get-buffer-file-name) nil)
    (copy-to-clipboard
     (map-slash-to-backslash (get-buffer-file-name)))))
(define-key spec-map #\n 'my-file-name-copy-backslash)

 現在開いているファイルのファイル名を、Windows形式(ディレクトリを「\」で区切る)でクリップボードにコピーします。ここではC-c nに割り当てています。

ファイル名をコピー(/区切り)
 →Written by Hie

siteinit.l(追加)
(defun my-file-name-copy-slash ()
  (interactive)
  (unless (equal (get-buffer-file-name) nil)
    (copy-to-clipboard (get-buffer-file-name))))
(define-key spec-map #\C-n 'my-file-name-copy-slash)

 現在開いているファイルのファイル名を、Unix形式(ディレクトリを「/」で区切る)でクリップボードにコピーします。ここではC-c C-nに割り当てています。

現在のファイルをバイトコンパイル
 →Written by Hie

siteinit.l(追加)
(defun my-file-bytecompile () (interactive)
  (byte-compile-file (get-buffer-file-name)))
(define-key spec-map #\C-b 'my-file-bytecompile)

 現在開いているファイルをバイトコンパイルします。ここではC-c C-bに割り当てています。

その他

siteinit.lのバイトコンパイル+ダンプファイル削除
 →Witten by Toy

siteinitl.(追加)
(defun compile-and-delete-dump-file ()
  (interactive)
  (and (find-buffer "siteinit.l")
       (eval-buffer "siteinit.l"))
  (byte-compile-file
   (concat (si:system-root) "site-lisp/siteinit.l"))
  (let ((dumpfile
         (concat (si:system-root) "xyzzy.w"
                 (case (os-platform)
                   (whistler "xp")
                   (windows-2000 "2k")
                   (windows-nt "nt")
                   (windows-me "me")
                   (windows-98 "98")
                   (windows-95 "95")
                   (t "nt")))))
    (and (file-exist-p dumpfile)
         (delete-file dumpfile))))
(global-set-key '(#\C-c #\b) 'compile-and-delete-dump-file)

 siteinit.lをバイトコンパイルした後はダンプファイルを削除するのが通常なので、これを一連の動作としてC-c bに割り当てています。新しい環境を入れる時は特に便利なんじゃないかと。

▲トップページに戻る▲

読み込み

insert-file

find-file

バッファ

バッファ名コピー

ファイル名コピー(\)

ファイル名コピー(/)

バイトコンパイル

その他

siteinit.lコンパイル+ダンプファイル削除