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'"