;;; -*- lexical-binding: t -*- ;; ;; this file: ;; https://dataswamp.org/~incal/emacs-init/version.el ;; ;; for Emacs-w3m including w3m(1): ;; https://dataswamp.org/~incal/emacs-init/w3m/w3m-version.el ;; ;; example: ;; GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, cairo version 1.16.0) ;; of 2022-05-22 [commit 714970f5967f2153bb95e35823dbd917e0e5b60b] ;; ;; try me: ;; (version-incf) ;; ;; Version: 4.3.0 (require 'cl-lib) (defun version-incf () (interactive) (save-mark-and-excursion (goto-char (point-min)) (when (re-search-forward "^;; Version: \\([0-9]+.[0-9]+.[0-9]+\\)$") (pcase-let ((`(,x ,y ,z) (version-to-list (match-string 1)) ) ( h 20 )) (when (zerop (mod (cl-incf z) h)) (when (zerop (mod (cl-incf y) h)) (cl-incf x))) (replace-match (format "%d.%d.%d" x (mod y h) (mod z h)) nil nil nil 1) (save-buffer))))) (defun emacs-version-commit (&optional here) (interactive "P") (let ((ver (replace-regexp-in-string " \\(of\\)" "\\1" (format "%s [commit %s]" (emacs-version) (emacs-repository-get-version) )))) (when here (insert ver) ) (message ver) )) (defalias 'ever #'emacs-version-commit) (provide 'version)