mirror of
https://github.com/larstvei/dot-emacs.git
synced 2024-11-26 07:28:31 +00:00
A time-stamp file is created by default.
Instead of the user having the option to add a time-stamp to the init-file, a file is created for this purpose only.
This commit is contained in:
parent
67d780f9af
commit
b77e3c0de3
45
init.el
45
init.el
@ -37,29 +37,32 @@ PACKAGE is installed and the current version is deleted."
|
|||||||
|
|
||||||
(defvar days-between-updates 1)
|
(defvar days-between-updates 1)
|
||||||
(defvar do-package-update-on-init t)
|
(defvar do-package-update-on-init t)
|
||||||
|
(defvar package-last-update-file
|
||||||
|
(expand-file-name (concat user-emacs-directory ".package-last-update")))
|
||||||
|
|
||||||
(require 'time-stamp)
|
(require 'time-stamp)
|
||||||
;; Open the 'user-init-file' and write any changes.
|
;; Open the package-last-update-file
|
||||||
(with-temp-file user-init-file
|
(with-temp-file package-last-update-file
|
||||||
;; Insert it's original content's.
|
(if (file-exists-p package-last-update-file)
|
||||||
(insert-file-contents user-init-file)
|
(progn
|
||||||
(forward-line time-stamp-line-limit)
|
;; Insert it's original content's.
|
||||||
(let ((bound (point)))
|
(insert-file-contents package-last-update-file)
|
||||||
(goto-char (point-min))
|
(let ((start (re-search-forward time-stamp-start nil t))
|
||||||
;; We search for the time-stamp.
|
(end (re-search-forward time-stamp-end nil t)))
|
||||||
(let ((start (re-search-forward time-stamp-start bound t))
|
(when (and start end)
|
||||||
(end (re-search-forward time-stamp-end bound t)))
|
;; Assuming we have found a time-stamp, we check determine if it's
|
||||||
(when (and start end)
|
;; time to update.
|
||||||
;; Assuming we have found a time-stamp, we check determine if it's
|
(setq do-package-update-on-init
|
||||||
;; time to update.
|
(<= days-between-updates
|
||||||
(setq do-package-update-on-init
|
(days-between
|
||||||
(<= days-between-updates
|
(current-time-string)
|
||||||
(days-between
|
(buffer-substring-no-properties start end))))
|
||||||
(current-time-string)
|
;; Remember to update the time-stamp.
|
||||||
(buffer-substring-no-properties start end))))
|
(when do-package-update-on-init
|
||||||
;; Remember to update the time-stamp.
|
(time-stamp)))))
|
||||||
(when do-package-update-on-init
|
;; If no such file exists it is created with a time-stamp.
|
||||||
(time-stamp))))))
|
(insert "Time-stamp: <>")
|
||||||
|
(time-stamp)))
|
||||||
|
|
||||||
(when do-package-update-on-init
|
(when do-package-update-on-init
|
||||||
(package-refresh-contents))
|
(package-refresh-contents))
|
||||||
|
58
init.org
58
init.org
@ -85,45 +85,49 @@
|
|||||||
|
|
||||||
The =package-refresh-contents= function downloads archive descriptions,
|
The =package-refresh-contents= function downloads archive descriptions,
|
||||||
this is a major bottleneck in this configuration. To avoid this we can
|
this is a major bottleneck in this configuration. To avoid this we can
|
||||||
try to only check for updates once every day or so. Here are to
|
try to only check for updates once every day or so. Here are three
|
||||||
variables. The first specifies how often we should check for updates. The
|
variables. The first specifies how often we should check for updates. The
|
||||||
second specifies wither one should update during the initialization.
|
second specifies wither one should update during the initialization. The
|
||||||
|
third is a path to a file where a time-stamp is stored in order to check
|
||||||
|
when packages were updated last.
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp :tangle yes
|
#+BEGIN_SRC emacs-lisp :tangle yes
|
||||||
(defvar days-between-updates 1)
|
(defvar days-between-updates 1)
|
||||||
(defvar do-package-update-on-init t)
|
(defvar do-package-update-on-init t)
|
||||||
|
(defvar package-last-update-file
|
||||||
|
(expand-file-name (concat user-emacs-directory ".package-last-update")))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
The tricky part is figuring out when the last time the Emacs was updated!
|
The tricky part is figuring out when the last time the Emacs was updated!
|
||||||
Here is a hacky way of doing it, using [[http://www.gnu.org/software/emacs/manual/html_node/emacs/Time-Stamps.html][time-stamps]]. By adding a
|
Here is a hacky way of doing it, using [[http://www.gnu.org/software/emacs/manual/html_node/emacs/Time-Stamps.html][time-stamps]]. By adding a
|
||||||
time-stamp to the init file, we can search for it and determine wither or
|
time-stamp to the a file, we can determine wither or not to do an
|
||||||
not to do an update. After that we must run the =time-stamp=-function to
|
update. After that we must run the =time-stamp=-function to update the
|
||||||
update the time-stamp. Note that if there is no time-stamp in the
|
time-stamp.
|
||||||
init-file then packages will be updated every time you start Emacs.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp :tangle yes
|
#+BEGIN_SRC emacs-lisp :tangle yes
|
||||||
(require 'time-stamp)
|
(require 'time-stamp)
|
||||||
;; Open the 'user-init-file' and write any changes.
|
;; Open the package-last-update-file
|
||||||
(with-temp-file user-init-file
|
(with-temp-file package-last-update-file
|
||||||
;; Insert it's original content's.
|
(if (file-exists-p package-last-update-file)
|
||||||
(insert-file-contents user-init-file)
|
(progn
|
||||||
(forward-line time-stamp-line-limit)
|
;; Insert it's original content's.
|
||||||
(let ((bound (point)))
|
(insert-file-contents package-last-update-file)
|
||||||
(goto-char (point-min))
|
(let ((start (re-search-forward time-stamp-start nil t))
|
||||||
;; We search for the time-stamp.
|
(end (re-search-forward time-stamp-end nil t)))
|
||||||
(let ((start (re-search-forward time-stamp-start bound t))
|
(when (and start end)
|
||||||
(end (re-search-forward time-stamp-end bound t)))
|
;; Assuming we have found a time-stamp, we check determine if it's
|
||||||
(when (and start end)
|
;; time to update.
|
||||||
;; Assuming we have found a time-stamp, we check determine if it's
|
(setq do-package-update-on-init
|
||||||
;; time to update.
|
(<= days-between-updates
|
||||||
(setq do-package-update-on-init
|
(days-between
|
||||||
(<= days-between-updates
|
(current-time-string)
|
||||||
(days-between
|
(buffer-substring-no-properties start end))))
|
||||||
(current-time-string)
|
;; Remember to update the time-stamp.
|
||||||
(buffer-substring-no-properties start end))))
|
(when do-package-update-on-init
|
||||||
;; Remember to update the time-stamp.
|
(time-stamp)))))
|
||||||
(when do-package-update-on-init
|
;; If no such file exists it is created with a time-stamp.
|
||||||
(time-stamp))))))
|
(insert "Time-stamp: <>")
|
||||||
|
(time-stamp)))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
Now we can use the function above to make sure packages are installed and
|
Now we can use the function above to make sure packages are installed and
|
||||||
|
Loading…
Reference in New Issue
Block a user