insert-file
C-x iの初期ディレクトリを固定(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)
キー設定はお好みで。そのままC-x C-iを上書きしてもいいですし、カレントディレクトリからinsert-file
を起動したいこともあるのであれば、別のキーに設定してもいいかと。
(setq *default-insert-file-directory* "[ディレクトリ]")
(setq *default-insert-file-directory* "d:/home/temporary/")
上で指定した変数*default-insert-file-directory*
にディレクトリを代入します。
設定を変更することも多いと思うので、ダンプファイルを消す必要のあるsiteinit.lより.xyzzyに記述した方がいいでしょう。
find-file
(C-x C-f)の後F7で.xyzzy、F8で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"))))
(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に割り当てています。
(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に割り当てています。
(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に割り当てています。
(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に割り当てています。
(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に割り当てています。新しい環境を入れる時は特に便利なんじゃないかと。