|
28 | 28 | (defvar Miel-edit-buffer nil) ; 編集バッファ名一時記憶変数
|
29 | 29 | (defvar Miel-mode-line-format ; モードライン定義
|
30 | 30 | "--%*- %b (%M) [%k:%l] %P %f")
|
| 31 | +(defvar Miel-frame-name "miel") ; フレーム名 |
| 32 | +(defvar Miel-pwd-buffer-name "[ Show Pwd ]") |
| 33 | +(defvar Miel-browser-buffer-name "[ File Browser ]") |
31 | 34 | ; "( %M ) %P %f")
|
32 | 35 |
|
33 | 36 | ; ----------
|
|
52 | 55 | (define-key *miel-mode-map* '(#\SPC) 'miel-mark-file)
|
53 | 56 | ; 削除
|
54 | 57 | (define-key *miel-mode-map* '(#\d) 'miel-delete-file))
|
| 58 | + (define-key *miel-mode-map* '(#\q) 'miel-quit) |
55 | 59 | ; kill-buffer キーバインドの再定義(global-map でないとダメ)
|
56 | 60 | (define-key *global-keymap* '(#\C-x #\k) 'miel-delete-buffer)
|
57 | 61 |
|
|
66 | 70 | ((equal Miel-edit-buffer nil) ; Mielが編集を起動していなければ
|
67 | 71 | (delete-other-windows)
|
68 | 72 | (cond
|
69 |
| - ((find-name-buffer "[ File Browser ]") |
70 |
| - (delete-buffer "[ File Browser ]")) |
| 73 | + ((find-name-buffer Miel-browser-buffer-name) |
| 74 | + (delete-buffer Miel-browser-buffer-name)) |
71 | 75 | (t nil))
|
72 |
| - (delete-buffer (selected-buffer))) ; カレントバッファを削除 |
| 76 | +; (delete-buffer (selected-buffer))) ; カレントバッファを削除 |
| 77 | + ) |
73 | 78 | (t
|
74 | 79 | (delete-buffer Miel-edit-buffer) ; 編集バッファを削除
|
75 | 80 | (setq Miel-edit-buffer nil) ; リセット
|
|
256 | 261 | ; 現在行のファイルの内容を別ウィンドウに読み込み、表示する
|
257 | 262 | (interactive)
|
258 | 263 | (let ((win (selected-window))
|
259 |
| - (buf2 (get-buffer-create "[ File Browser ]")) |
| 264 | + (buf2 (get-buffer-create Miel-browser-buffer-name)) |
260 | 265 | (file (miel-get-filename))) ; ファイル名取得
|
261 | 266 | (save-excursion
|
262 | 267 | (set-buffer buf2) ; 編集対象バッファを切替える
|
|
316 | 321 |
|
317 | 322 | ; ----------
|
318 | 323 |
|
| 324 | +(defun frame-get () |
| 325 | + ; Miel のフレームを取得 |
| 326 | + (find-pseudo-frame Miel-frame-name)) |
| 327 | + |
| 328 | +; ---------- |
| 329 | + |
| 330 | +(defun restore () |
| 331 | + ; Miel のフレームを表示 |
| 332 | + (interactive) |
| 333 | + (let ((frame (frame-get))) |
| 334 | + (when frame |
| 335 | + (select-pseudo-frame frame) |
| 336 | + (when (find-buffer Miel-pwd-buffer-name) |
| 337 | + (switch-to-buffer Miel-pwd-buffer-name)) |
| 338 | + ))) |
| 339 | + |
| 340 | +; ---------- |
| 341 | + |
| 342 | +(defun miel-quit () |
| 343 | + ; miel-mode の終了 |
| 344 | + (interactive) |
| 345 | + (let ((pf (find-pseudo-frame Miel-frame-name))) |
| 346 | + (when pf |
| 347 | + (delete-pseudo-frame pf) |
| 348 | + (when (find-buffer Miel-browser-buffer-name) |
| 349 | + (delete-buffer Miel-browser-buffer-name)) |
| 350 | + (when (find-buffer Miel-pwd-buffer-name) |
| 351 | + (delete-buffer Miel-pwd-buffer-name)) |
| 352 | + ))) |
| 353 | + |
| 354 | +; ---------- |
| 355 | + |
319 | 356 | (defun miel (dir)
|
320 | 357 | ; Miel メイン処理関数
|
321 | 358 | ; ディレクトリ一覧を表示してファイルの情報を表示
|
|
354 | 391 | (defun miel-mode ()
|
355 | 392 | ; 往年の著名な DOS-Filer Miel.exe の clone
|
356 | 393 | (interactive)
|
357 |
| - (delete-other-windows) |
| 394 | + (when (frame-get) |
| 395 | + (restore) |
| 396 | + (return-from miel-mode)) |
| 397 | + (new-pseudo-frame Miel-frame-name) |
358 | 398 | (setq Miel-window-height (window-height))
|
359 |
| - (switch-to-buffer "[ Show Pwd ]") |
| 399 | + (switch-to-buffer Miel-pwd-buffer-name) |
360 | 400 | (setq Miel-main-window (selected-window))
|
361 | 401 | ; メジャーモードの設定
|
362 | 402 | (setq major-mode 'miel-mode)
|
|
0 commit comments