Browse Source

Add recently

master
10sr 6 years ago
parent
commit
ce541ce9c8
Signed by: 10sr GPG Key ID: 7BEC428194130EB2
1 changed files with 100 additions and 0 deletions
  1. +100
    -0
      emacs.el

+ 100
- 0
emacs.el View File

@@ -1752,7 +1752,107 @@ This mode is a simplified version of `adoc-mode'."


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; recently

(defgroup recently nil
"Recently visited files"
:tag "Recently"
:prefix "recently-"
:group 'tools)

(defcustom recently-file
(concat user-emacs-directory
"recently.el")
"Recently file."
:type 'string
:group 'recently)

(defcustom recently-max
100
"Recently list max length."
:type 'int
:group 'recently)

(defvar recently-list
'()
"Recently list.")

(defvar recently-file-mtime
nil
"Modified time of file when last read file.")

(defun recently-write ()
"Write to file."
(with-temp-buffer
(prin1 recently-list
(current-buffer))
(write-region (point-min)
(point-max)
recently-file)))

(defun recently-read ()
"Read file."
(when (file-readable-p recently-file)
(with-temp-buffer
(insert-file-contents recently-file)
(goto-char (point-min))
(setq recently-list
(read (current-buffer))))
(setq recently-file-mtime
(nth 5
(file-attributes recently-file)))))

(defun recently-reload ()
"Reload file."
(when (and (file-readable-p recently-file)
(not (equal recently-file-mtime
(nth 5
(file-attributes recently-file)))))
(recently-read)
(cl-assert (equal recently-file-mtime
(nth 5
(file-attributes recently-file))))))

(defun recently-add (path)
"Add file to list."
(cl-assert (string= path
(expand-file-name path)))
(recently-reload)
(let* ((l recently-list)
(l (delete path
l))
(l (cl-loop for e in l
unless (file-in-directory-p path e)
collect e)))
(setq recently-list
(cons path
l)))
(recently-truncate)
(recently-write))

(defun recently-truncate ()
"Truncate list."
(when (> (length recently-list)
recently-max)
(setq recently-list
(cl-subseq recently-list
0
recently-max))))

(defun recently-find-file-hook ()
"Add current file."
(when buffer-file-name
(recently-add buffer-file-name)))

(defun recently-dired-mode-hook ()
"Add current directory."
(recently-add (expand-file-name default-directory)))

(add-hook 'find-file-hook
'recently-find-file-hook)

(add-hook 'dired-mode-hook
'recently-dired-mode-hook)

;; Local Variables:
;; flycheck-disabled-checkers: (emacs-lisp-checkdoc)


Loading…
Cancel
Save