diff --git a/emacs.el b/emacs.el index 55b561d..fa08600 100644 --- a/emacs.el +++ b/emacs.el @@ -94,16 +94,6 @@ (lambda () (kill-buffer "*scratch*"))) -(defun my-delete-frame-or-kill-emacs () - "delete frame when opening multiple frame, kill emacs when only one." - (interactive) - (if (eq 1 - (length (frame-list))) - (save-buffers-kill-emacs) - (delete-frame))) -(global-set-key (kbd "C-x C-c") 'my-delete-frame-or-kill-emacs) -(define-key my-prefix-map (kbd "C-x C-c") 'save-buffers-kill-emacs) - ;; modifier keys (setq mac-option-modifier 'control) (setq w32-apps-modifier 'meta) @@ -480,9 +470,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; global keys -(define-key my-prefix-map (kbd "C-f") 'make-frame-command) (define-key my-prefix-map (kbd "C-o") 'occur) -(define-key my-prefix-map (kbd "C-s") 'my-execute-terminal) ;; (define-key my-prefix-map (kbd "C-h") help-map) (global-set-key (kbd "C-\\") help-map) @@ -743,9 +731,9 @@ return nil if LIB unfound and downloading failed, otherwise the path of LIB." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; frame buffer -;; (add-hook 'after-make-frame-functions -;; (lambda (frame) -;; (recentf-open-files))) +(add-hook 'after-make-frame-functions + (lambda (frame) + (switch-to-buffer (recentf-open-files)))) ;; (defvar aaa nil) ;; (plist-get aaa 'abc) @@ -754,24 +742,29 @@ return nil if LIB unfound and downloading failed, otherwise the path of LIB." (defvar my-frame-buffer-plist nil) ;; (setplist my-frame-buffer-plist nil) -(defun my-frame-buffer-add () +(defun my-frame-buffer-add (&optional buf frame) "" (setq my-frame-buffer-plist (plist-put my-frame-buffer-plist - (selected-frame) - (let ((lst (my-frame-buffer-get))) + (or frame + (selected-frame)) + (let ((lst (my-frame-buffer-get frame))) (if lst (add-to-list 'lst - (current-buffer)) - (list (current-buffer))))))) + (or buf + (current-buffer))) + (list (or buf + (current-buffer)))))))) -(defun my-frame-buffer-remove () +(defun my-frame-buffer-remove (&optional buf frame) "" (setq my-frame-buffer-plist (plist-put my-frame-buffer-plist - (selected-frame) - (delq (current-buffer) - (my-frame-buffer-get))))) + (or frame + (selected-frame)) + (delq (or buf + (current-buffer)) + (my-frame-buffer-get frame))))) (defun my-frame-buffer-get (&optional frame) "" @@ -779,21 +772,73 @@ return nil if LIB unfound and downloading failed, otherwise the path of LIB." (or frame (selected-frame)))) -(defun my-frame-buffer-kill-all-buffer (frame) +(defun my-frame-buffer-kill-all-buffer (&optional frame) "" (mapcar 'kill-buffer (my-frame-buffer-get frame))) (add-hook 'find-file-hook 'my-frame-buffer-add) -;; (add-hook 'dired-mode-hook -;; 'my-frame-buffer-add) +(add-hook 'term-mode-hook + 'my-frame-buffer-add) +(add-hook 'eshell-mode-hook + 'my-frame-buffer-add) + (add-hook 'kill-buffer-hook 'my-frame-buffer-remove) (add-hook 'delete-frame-functions 'my-frame-buffer-kill-all-buffer) -(frame-parameters (selected-frame)) + +(defvar my-desktop-terminal "roxterm") +(defun my-execute-terminal () + "" + (interactive) + (if (and (or (eq system-type 'windows-nt) + window-system) + my-desktop-terminal + ) + (let ((process-environment (cons "TERM=xterm" process-environment))) + (start-process "terminal" + nil + my-desktop-terminal)) + (my-term))) + +(defun my-term () + "open terminal buffer and return that buffer." + (interactive) + (if (eq system-type 'windows-nt) + (eshell t) + (if (featurep 'multi-term) + (multi-term) + (ansi-term "/bin/bash")))) + +(defvar my-frame-term-plist nil) +;; (setplist my-frame-term-plist nil) +(defun my-execute-or-find-term () + "" + (interactive) + (let* ((buf (plist-get my-frame-term-plist (selected-frame)))) + (if (and buf + (buffer-name buf)) + (switch-to-buffer buf) + (setq my-frame-term-plist + (plist-put my-frame-term-plist + (selected-frame) + (my-term)))))) + +(defun my-delete-frame-or-kill-emacs () + "delete frame when opening multiple frame, kill emacs when only one." + (interactive) + (if (eq 1 + (length (frame-list))) + (save-buffers-kill-emacs) + (delete-frame))) + +(define-key my-prefix-map (kbd "C-s") 'my-execute-terminal) +(define-key my-prefix-map (kbd "C-f") 'make-frame-command) +(global-set-key (kbd "C-x C-c") 'my-delete-frame-or-kill-emacs) +(define-key my-prefix-map (kbd "C-x C-c") 'save-buffers-kill-emacs) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; term mode @@ -1438,7 +1483,7 @@ Optional prefix ARG says how many lines to unflag; default is one line." ;; (defun eshell/git (&rest args) ;; "" -;; (eshell-parse-arguments (point-at-bol) (point-at-eol))) +;; ) (defun eshell/o (&optional file) (my-x-open (or file "."))) @@ -1660,43 +1705,6 @@ when SEC is nil, stop auto save if enabled." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; misc funcs -(defvar my-desktop-terminal "roxterm") -(defun my-execute-terminal () - "" - (interactive) - (if (and (or (eq system-type 'windows-nt) - window-system) - my-desktop-terminal - ) - (let ((process-environment (cons "TERM=xterm" process-environment))) - (start-process "terminal" - nil - my-desktop-terminal)) - (my-execute-or-find-term))) - -(defun my-term () - "open terminal buffer and return that buffer." - (interactive) - (if (eq system-type 'windows-nt) - (eshell t) - (if (featurep 'multi-term) - (multi-term) - (ansi-term "/bin/bash")))) - -(defvar my-frame-term-plist nil) -;; (setplist my-frame-term-plist nil) -(defun my-execute-or-find-term () - "" - (interactive) - (let* ((buf (plist-get my-frame-term-plist (selected-frame)))) - (if (and buf - (buffer-name buf)) - (switch-to-buffer buf) - (setq my-frame-term-plist - (plist-put my-frame-term-plist - (selected-frame) - (my-term)))))) - (defun my-format-time-string (&optional time) "" (let ((system-time-locale "C"))