branch: scratch/editorconfig-cc
commit c1ff2ea574de443f9ff56656bcce8cc4281554b4
Author: 10sr <8.slas...@gmail.com>
Commit: Stefan Monnier <monn...@iro.umontreal.ca>

    Fix support for Emacs<26
---
 editorconfig.el | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/editorconfig.el b/editorconfig.el
index 5bc1077787..3e5669a54a 100644
--- a/editorconfig.el
+++ b/editorconfig.el
@@ -377,6 +377,18 @@ to non-nil when FINAL-NEWLINE is true."
           '(conf-mode))
   "List of known `major-mode' that can be used for file_type_emacs value.")
 
+;; Emacs<26 does not have provided-mode-derived-p
+(defun editorconfig--provided-mode-derived-p (mode &rest modes)
+  "Non-nil if MODE is derived from one of MODES.
+Uses the `derived-mode-parent' property of the symbol to trace backwards.
+If you just want to check `major-mode', use `derived-mode-p'."
+  (if (fboundp 'provided-mode-derived-p)
+      (apply 'provided-mode-derived-p mode modes)
+    (while (and (not (memq mode modes))
+                (setq mode (get mode 'derived-mode-parent))))
+    mode))
+
+
 (defun editorconfig-set-major-mode-from-name (filetype)
   "Set buffer `major-mode' by FILETYPE.
 
@@ -388,7 +400,7 @@ FILETYPE should be s string like `\"ini\"`, if not nil or 
empty string."
                                    "-mode")))))
     (when mode
       (if (fboundp mode)
-          (if (apply 'provided-mode-derived-p mode
+          (if (apply 'editorconfig--provided-mode-derived-p mode
                      editorconfig-file-type-emacs-whitelist)
               (editorconfig-apply-major-mode-safely mode)
             (display-warning :error (format "Major-mode `%S' is not listed in 
`%S'"

Reply via email to