| @@ -69,6 +69,15 @@ otherwise the path where the library installed." | |||||
| (locate-library lib)) | (locate-library lib)) | ||||
| locate-p))) | locate-p))) | ||||
| ;; (defmacro f-autoload (feature functions &rest form) | |||||
| ;; `(,@(mapcar (lambda (f) | |||||
| ;; `(autoload ,f ,(symbol-name feature))) | |||||
| ;; functions) | |||||
| ;; (eval-after-load ,feature | |||||
| ;; ,@form))) | |||||
| ;; (f-autoload autosave (a b) (ddd) (ccc)) | |||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;; start and quit | ;; start and quit | ||||
| @@ -464,7 +473,7 @@ otherwise the path where the library installed." | |||||
| (setq version-control 'never) | (setq version-control 'never) | ||||
| (setq delete-old-versions t) | (setq delete-old-versions t) | ||||
| (setq auto-save-list-file-prefix (expand-file-name "~/.emacs.d/autosave/")) | |||||
| (setq auto-save-list-file-prefix (expand-file-name "~/.emacs.d/auto-save/")) | |||||
| (setq delete-auto-save-files t) | (setq delete-auto-save-files t) | ||||
| (add-to-list 'completion-ignored-extensions ".bak") | (add-to-list 'completion-ignored-extensions ".bak") | ||||
| @@ -488,6 +497,14 @@ otherwise the path where the library installed." | |||||
| (smart-revert-on) | (smart-revert-on) | ||||
| ) | ) | ||||
| ;; autosave | |||||
| (and (fetch-library | |||||
| "https://raw.github.com/10sr/emacs-lisp/master/autosave.el" | |||||
| t) | |||||
| (require 'autosave nil t) | |||||
| (autosave-set 2)) | |||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;; editting | ;; editting | ||||
| @@ -1786,71 +1803,6 @@ if arg given, use that eshell buffer, otherwise make new eshell buffer." | |||||
| (global-set-key (kbd "C-x C-c") 'my-delete-frame-or-kill-emacs) | (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) | (define-key my-prefix-map (kbd "C-x C-c") 'save-buffers-kill-emacs) | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||||
| ;; autosave | |||||
| (defun autosave-buffer-save-current-buffer () | |||||
| "Save current buffer. The variable `autosave-buffer-functions' decides if | |||||
| current buffer should be saved or not." | |||||
| (when (run-hook-with-args-until-failure 'autosave-buffer-functions) | |||||
| (save-buffer))) | |||||
| (defvar autosave-buffer-functions nil | |||||
| "A list of functions be called before autosave current buffer. | |||||
| Each function is called with no argument. Current buffer is the buffer to save | |||||
| while these functions are called. If any of these functions return nil, | |||||
| autosaving will not happen.") | |||||
| (defvar autosave-buffer nil "Autosave timer object.") | |||||
| (defun autosave-buffer (secs) | |||||
| "Register timer so that the buffer will be saved automatically each time | |||||
| when Emacs is idle for SECS. When SECS is 0 or nil, stop the timer and disable | |||||
| auto-saving." | |||||
| (interactive "nSeconds until autosaving (0 to disable autosaving.): ") | |||||
| (if (and secs | |||||
| (not (eq secs | |||||
| 0))) | |||||
| (progn (when autosave-buffer | |||||
| (cancel-timer autosave-buffer) | |||||
| (setq autosave-buffer nil)) | |||||
| (setq autosave-buffer | |||||
| (run-with-idle-timer secs | |||||
| t | |||||
| 'autosave-buffer-save-current-buffer))) | |||||
| (when autosave-buffer | |||||
| (cancel-timer autosave-buffer) | |||||
| (setq autosave-buffer nil)))) | |||||
| (defun autosave-buffer-buffer-file-name () | |||||
| "Return nil if current buffer is not visiting any file." | |||||
| buffer-file-name) | |||||
| (defun autosave-buffer-file-exists-p () | |||||
| "Return nil if the file current buffer is visiting is not exist." | |||||
| (file-exists-p buffer-file-name)) | |||||
| (defun autosave-buffer-buffer-writable-p () | |||||
| "Return nil if current buffer is read only." | |||||
| (not buffer-read-only)) | |||||
| (defun autosave-buffer-buffer-modified-p () | |||||
| "Return nil if current buffer is not modified yet since last save." | |||||
| (buffer-modified-p)) | |||||
| (defun autosave-buffer-buffer-file-writable-p () | |||||
| "Return nil if the file current buffer is visiting is not writable." | |||||
| (file-writable-p buffer-file-name)) | |||||
| (mapcar (lambda (f) | |||||
| (add-hook 'autosave-buffer-functions | |||||
| f)) | |||||
| '(autosave-buffer-buffer-file-name | |||||
| autosave-buffer-file-exists-p | |||||
| autosave-buffer-buffer-writable-p | |||||
| autosave-buffer-buffer-modified-p | |||||
| autosave-buffer-buffer-file-writable-p)) | |||||
| (autosave-buffer 2) | |||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;; x open | ;; x open | ||||