From 0864ffaba6e44e8fc49f9871adb1200cc0885f9e Mon Sep 17 00:00:00 2001
From: Chizi123 <joelgrun@gmail.com>
Date: Mon, 10 Jun 2019 11:51:03 +0000
Subject: [PATCH] Made verilog-mode update every week, code from auto-package-update

---
 config.org |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 52 insertions(+), 7 deletions(-)

diff --git a/config.org b/config.org
index 2aea1c7..283258b 100644
--- a/config.org
+++ b/config.org
@@ -805,19 +805,64 @@
 Pull the latest version from the web
 #+BEGIN_SRC emacs-lisp
   (defun get-verilog-latest()
+    (if (not(file-directory-p "~/.emacs.d/elpa/verilog-mode"))
+        (make-directory "~/.emacs.d/elpa/verilog-mode"))
+    (if (file-exists-p "~/.emacs.d/elpa/verilog-mode/verilog-mode.el")
+        (delete-file "~/.emacs.d/elpa/verilog-mode/verilog-mode.el"))
     (url-copy-file "https://www.veripool.org/ftp/verilog-mode.el" "~/.emacs.d/elpa/verilog-mode/verilog-mode.el" 1))
 #+END_SRC
 
 **** Integrate into emacs
 Add updated version and integrate it with Emacs.
 #+BEGIN_SRC emacs-lisp
-  (use-package verilog-mode
-    :init
-    (get-verilog-latest)
-    (add-to-list 'load-path "~/.emacs.d/elpa/verilog-mode/verilog-mode.el")
-    :config
-    (autoload 'verilog-mode "verilog-mode" "Verilog mode" t )
-    (add-to-list 'auto-mode-alist '("\\.[ds]?vh?\\'" . verilog-mode)))
+    (defun verilog-read-file-as-string (file)
+      "Read FILE contents."
+      (when (file-exists-p file)
+        (with-temp-buffer
+          (insert-file-contents file)
+          (buffer-string))))
+
+    (defun verilog-write-string-to-file (file string)
+      "Substitute FILE contents with STRING."
+      (with-temp-buffer
+        (insert string)
+        (when (file-writable-p file)
+          (write-region (point-min)
+                        (point-max)
+                        file))))
+
+    (defun verilog-today-day ()
+      (time-to-days (current-time)))
+
+    (defun should-update-verilog-p ()
+      "Return non-nil when an update is due."
+      (and
+       (or
+        (not (file-exists-p "~/.emacs.d/.last-verilog-update-day"))
+        (if (>= (/ (- (verilog-today-day) (verilog-read-last-update-day)) 7) 1)
+            t
+          nil))))
+
+    (defun verilog-read-last-update-day ()
+      "Read last update day."
+      (string-to-number
+       (verilog-read-file-as-string "~/.emacs.d/.last-verilog-update-day")))
+
+    (defun verilog-write-current-day ()
+      "Store current day."
+      (verilog-write-string-to-file
+       "~/.emacs.d/.last-verilog-update-day"
+       (int-to-string (verilog-today-day))))
+
+    (use-package verilog-mode
+      :init
+      (when (should-update-verilog-p)
+          (get-verilog-latest)
+          (verilog-write-current-day))
+      (add-to-list 'load-path "~/.emacs.d/elpa/verilog-mode/verilog-mode.el")
+      :config
+      (autoload 'verilog-mode "verilog-mode" "Verilog mode" t )
+      (add-to-list 'auto-mode-alist '("\\.[ds]?vh?\\'" . verilog-mode)))
 #+END_SRC
 
 * Org mode

--
Gitblit v1.9.3