[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master a94f961 6/8: Support loading so-long.el on top of an earlier vers
From: |
Phil |
Subject: |
master a94f961 6/8: Support loading so-long.el on top of an earlier version |
Date: |
Thu, 14 Nov 2019 06:48:05 -0500 (EST) |
branch: master
commit a94f961e625aa53deaf8605f892fd8993a4f0cb8
Author: Phil Sainty <address@hidden>
Commit: Phil Sainty <address@hidden>
Support loading so-long.el on top of an earlier version
* so-long.el (so-long-version, so-long--latest-version): New variables.
This enables users to safely load version 1.0 of so-long.el on top of
an earlier version, as well as making provisions for doing likewise
following any incompatible changes arising in future versions.
---
lisp/so-long.el | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/lisp/so-long.el b/lisp/so-long.el
index 982a699..2d551af 100644
--- a/lisp/so-long.el
+++ b/lisp/so-long.el
@@ -411,6 +411,8 @@
(add-to-list 'customize-package-emacs-version-alist
'(so-long ("1.0" . "27.1")))
+(defconst so-long--latest-version "1.0")
+
(declare-function longlines-mode "longlines")
(defvar longlines-mode)
@@ -1818,6 +1820,54 @@ If it appears in `%s', you should remove it."
(cdr hookfunc)))
(make-obsolete (car hookfunc) nil "so-long.el version 1.0")))
+;; Live upgrades, for when a newer version is loaded over an older one.
+;;
+;; If `so-long-version' was already bound then that tells us which version we
+;; should upgrade from. If `so-long-version' is unbound then most likely there
+;; was no older version loaded; however, prior to version 1.0 `so-long-version'
+;; was not defined at all, and so we also need to detect that scenario, which
+;; we can do by testing for the presence of a symbol which was removed in 1.0.
+;;
+;; The variable `so-long-mode-enabled' covers versions 0.5 - 0.7.6, which is
+;; every pre-1.0 release using the name "so-long.el".
+(defvar so-long-version (if (boundp 'so-long-mode-enabled)
+ "0.5" ;; >= 0.5 and < 1.0
+ so-long--latest-version)
+ "The loaded version of so-long.el.")
+
+;; Version-specific updates.
+(when (version< so-long-version so-long--latest-version)
+ ;; Perform each update in sequence, as necessary.
+ ;; Update to version 1.0 from earlier versions:
+ (when (version< so-long-version "1.0")
+ (remove-hook 'change-major-mode-hook 'so-long-change-major-mode)
+ (require 'advice)
+ (when (ad-find-advice 'hack-local-variables 'after
'so-long--file-local-mode)
+ (ad-remove-advice 'hack-local-variables 'after 'so-long--file-local-mode)
+ (ad-activate 'hack-local-variables))
+ (when (ad-find-advice 'set-auto-mode 'around 'so-long--set-auto-mode)
+ (ad-remove-advice 'set-auto-mode 'around 'so-long--set-auto-mode)
+ (ad-activate 'set-auto-mode))
+ (when (boundp 'so-long-mode-map)
+ (define-key so-long-mode-map [remap so-long-mode-revert]
#'so-long-revert))
+ (dolist (var '(so-long-mode--inhibited
+ so-long-original-mode))
+ (makunbound var))
+ (dolist (func '(so-long-change-major-mode
+ so-long-check-header-modes
+ so-long-line-detected-p))
+ (fmakunbound func))
+ (defvar so-long-mode-enabled)
+ (when so-long-mode-enabled
+ (unless global-so-long-mode
+ (global-so-long-mode 1)))
+ (makunbound 'so-long-mode-enabled))
+ ;; Update to version 1.N:
+ ;; (when (version< so-long-version "1.N") ...)
+ ;;
+ ;; All updates completed.
+ (setq so-long-version so-long--latest-version))
+
(provide 'so-long)
- master updated (75875ca -> 5803558), Phil, 2019/11/14
- master bf29fc4 4/8: * lisp/so-long.el (so-long-unload-function): Improved feature unload, Phil, 2019/11/14
- master cb7b63d 3/8: ; * lisp/so-long.el (so-long-predicate): Custom type consistency, Phil, 2019/11/14
- master e9dca2b 2/8: Defer triggering `so-long' until the buffer is displayed, Phil, 2019/11/14
- master 77c3bc0 7/8: Make so-long disable flymake, flyspell, flycheck, Phil, 2019/11/14
- master 9029074 1/8: ; Documentation and spelling, Phil, 2019/11/14
- master b28f35a 5/8: Backwards-compatibility function definitions for so-long.el, Phil, 2019/11/14
- master a94f961 6/8: Support loading so-long.el on top of an earlier version,
Phil <=
- master 5803558 8/8: Merge branch 'scratch/so-long-updates', Phil, 2019/11/14