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