refactor: deprecate EMACS2[89]+, NATIVECOMP, MODULES

To reduce redundancy, remove the maintenance hassle that version
constants would impose later on, and rely on built-in
facilities (featurep) more over global variables or doomisms, these
global constants have been deprecated in favor of Emacs "features":

- EMACS28+   -- replace with (> emacs-major-version 27)
- EMACS29+   -- replace with (> emacs-major-version 28)
- NATIVECOMP -- replace with (featurep 'native-compile)
- MODULES    -- replace with (featurep 'dynamic-modules)

(These constants will be formally removed when v3 is released. The IS-*
constants are likely next, but I haven't decided on their substitutes
yet)

I also decided to follow native-compile's example and provide features
for Emacs' system features (since system-configuration-features' docs
outs itself as a poor method to detect features):

- dynamic-modules
- jansson
- native-compile -- this one already exists, but will instead be removed
  if it's non-functional; i.e. (native-comp-available-p) returns nil.

These are now detectable using featurep, which is fast and built-in.
This commit is contained in:
Henrik Lissner 2022-08-12 20:07:08 +02:00
parent c540f1b515
commit 0407621aff
No known key found for this signature in database
GPG key ID: B60957CA074D39A3
12 changed files with 54 additions and 35 deletions

View file

@ -561,7 +561,7 @@ files, so this replace calls to `pp' with the much faster `prin1'."
(lambda (button)
(helpful-variable (button-get button 'apropos-symbol))))))
(when EMACS29+
(when (> emacs-major-version 28)
;; REVIEW This should be reported upstream to Emacs.
(defadvice! doom--find-function-search-for-symbol-save-excursion-a (fn &rest args)
"Suppress cursor movement by `find-function-search-for-symbol'.
@ -669,7 +669,7 @@ on."
;; Emacs 29 introduced faster long-line detection, so they can afford a much
;; larger `so-long-threshold' and its default `so-long-predicate'.
(if (fboundp 'buffer-line-statistics)
(unless NATIVECOMP
(unless (featurep 'native-compile)
(setq so-long-threshold 5000))
;; reduce false positives w/ larger threshold
(setq so-long-threshold 400)