]> git.bundesbrandschatzamt.de Git - emacsconfig.git/commitdiff
update editorconfig
authorAndreas Gerler <baronNOSPAMbundesbrandschatzamt.de>
Wed, 21 May 2025 12:00:06 +0000 (14:00 +0200)
committerAndreas Gerler <baronNOSPAMbundesbrandschatzamt.de>
Wed, 21 May 2025 12:00:06 +0000 (14:00 +0200)
20 files changed:
elpa/editorconfig-20241027.1815/dir [deleted file]
elpa/editorconfig-20241027.1815/editorconfig-autoloads.el [deleted file]
elpa/editorconfig-20241027.1815/editorconfig-conf-mode.el [deleted file]
elpa/editorconfig-20241027.1815/editorconfig-core-handle.el [deleted file]
elpa/editorconfig-20241027.1815/editorconfig-core.el [deleted file]
elpa/editorconfig-20241027.1815/editorconfig-fnmatch.el [deleted file]
elpa/editorconfig-20241027.1815/editorconfig-pkg.el [deleted file]
elpa/editorconfig-20241027.1815/editorconfig-tools.el [deleted file]
elpa/editorconfig-20241027.1815/editorconfig.el [deleted file]
elpa/editorconfig-20241027.1815/editorconfig.info [deleted file]
elpa/editorconfig-20250219.1528/dir [new file with mode: 0644]
elpa/editorconfig-20250219.1528/editorconfig-autoloads.el [new file with mode: 0644]
elpa/editorconfig-20250219.1528/editorconfig-conf-mode.el [new file with mode: 0644]
elpa/editorconfig-20250219.1528/editorconfig-core-handle.el [new file with mode: 0644]
elpa/editorconfig-20250219.1528/editorconfig-core.el [new file with mode: 0644]
elpa/editorconfig-20250219.1528/editorconfig-fnmatch.el [new file with mode: 0644]
elpa/editorconfig-20250219.1528/editorconfig-pkg.el [new file with mode: 0644]
elpa/editorconfig-20250219.1528/editorconfig-tools.el [new file with mode: 0644]
elpa/editorconfig-20250219.1528/editorconfig.el [new file with mode: 0644]
elpa/editorconfig-20250219.1528/editorconfig.info [new file with mode: 0644]

diff --git a/elpa/editorconfig-20241027.1815/dir b/elpa/editorconfig-20241027.1815/dir
deleted file mode 100644 (file)
index 3738902..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-This is the file .../info/dir, which contains the
-topmost node of the Info hierarchy, called (dir)Top.
-The first time you invoke Info you start off looking at this node.
-\1f
-File: dir,     Node: Top       This is the top of the INFO tree
-
-  This (the Directory node) gives a menu of major topics.
-  Typing "q" exits, "H" lists all Info commands, "d" returns here,
-  "h" gives a primer for first-timers,
-  "mEmacs<Return>" visits the Emacs manual, etc.
-
-  In Emacs, you can click mouse button 2 on a menu item or cross reference
-  to select it.
-
-* Menu:
-
-Emacs
-* EditorConfig: (editorconfig). EditorConfig Emacs Plugin.
diff --git a/elpa/editorconfig-20241027.1815/editorconfig-autoloads.el b/elpa/editorconfig-20241027.1815/editorconfig-autoloads.el
deleted file mode 100644 (file)
index 11375dc..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-;;; editorconfig-autoloads.el --- automatically extracted autoloads (do not edit)   -*- lexical-binding: t -*-
-;; Generated by the `loaddefs-generate' function.
-
-;; This file is part of GNU Emacs.
-
-;;; Code:
-
-(add-to-list 'load-path (or (and load-file-name (directory-file-name (file-name-directory load-file-name))) (car load-path)))
-
-
-\f
-;;; Generated autoloads from editorconfig.el
-
-(defvar editorconfig-mode nil "\
-Non-nil if Editorconfig mode is enabled.
-See the `editorconfig-mode' command
-for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `editorconfig-mode'.")
-(custom-autoload 'editorconfig-mode "editorconfig" nil)
-(autoload 'editorconfig-mode "editorconfig" "\
-Toggle EditorConfig feature.
-
-To disable EditorConfig in some buffers, modify
-`editorconfig-exclude-modes' or `editorconfig-exclude-regexps'.
-
-This is a global minor mode.  If called interactively, toggle the
-`Editorconfig mode' mode.  If the prefix argument is positive, enable
-the mode, and if it is zero or negative, disable the mode.
-
-If called from Lisp, toggle the mode if ARG is `toggle'.  Enable the
-mode if ARG is nil, omitted, or is a positive number.  Disable the mode
-if ARG is a negative number.
-
-To check whether the minor mode is enabled in the current buffer,
-evaluate `(default-value \\='editorconfig-mode)'.
-
-The mode's hook is called both when the mode is enabled and when it is
-disabled.
-
-(fn &optional ARG)" t)
-(autoload 'editorconfig-version "editorconfig" "\
-Get EditorConfig version as string.
-
-If called interactively or if SHOW-VERSION is non-nil, show the
-version in the echo area and the messages buffer.
-
-(fn &optional SHOW-VERSION)" t)
-(register-definition-prefixes "editorconfig" '("editorconfig-"))
-
-\f
-;;; Generated autoloads from editorconfig-conf-mode.el
-
-(autoload 'editorconfig-conf-mode "editorconfig-conf-mode" "\
-Major mode for editing .editorconfig files.
-
-(fn)" t)
-(add-to-list 'auto-mode-alist '("\\.editorconfig\\'" . editorconfig-conf-mode))
-(register-definition-prefixes "editorconfig-conf-mode" '("editorconfig-conf-mode-"))
-
-\f
-;;; Generated autoloads from editorconfig-core.el
-
-(autoload 'editorconfig-core-get-nearest-editorconfig "editorconfig-core" "\
-Return path to .editorconfig file that is closest to DIRECTORY.
-
-(fn DIRECTORY)")
-(autoload 'editorconfig-core-get-properties "editorconfig-core" "\
-Get EditorConfig properties for FILE.
-If FILE is not given, use currently visiting file.
-Give CONFNAME for basename of config file other than .editorconfig.
-If need to specify config format version, give CONFVERSION.
-
-This function returns an alist of properties.  Each element will
-look like (KEY . VALUE).
-
-(fn &optional FILE CONFNAME CONFVERSION)")
-(autoload 'editorconfig-core-get-properties-hash "editorconfig-core" "\
-Get EditorConfig properties for FILE.
-If FILE is not given, use currently visiting file.
-Give CONFNAME for basename of config file other than .editorconfig.
-If need to specify config format version, give CONFVERSION.
-
-This function is almost same as `editorconfig-core-get-properties', but returns
-hash object instead.
-
-(fn &optional FILE CONFNAME CONFVERSION)")
-(register-definition-prefixes "editorconfig-core" '("editorconfig-core--"))
-
-\f
-;;; Generated autoloads from editorconfig-core-handle.el
-
-(register-definition-prefixes "editorconfig-core-handle" '("editorconfig-core-handle"))
-
-\f
-;;; Generated autoloads from editorconfig-fnmatch.el
-
-(register-definition-prefixes "editorconfig-fnmatch" '("editorconfig-fnmatch-"))
-
-\f
-;;; Generated autoloads from editorconfig-tools.el
-
-(autoload 'editorconfig-apply "editorconfig-tools" "\
-Get and apply EditorConfig properties to current buffer.
-
-This function does not respect the values of `editorconfig-exclude-modes' and
-`editorconfig-exclude-regexps' and always applies available properties.
-Use `editorconfig-mode-apply' instead to make use of these variables." t)
-(autoload 'editorconfig-mode-apply "editorconfig-tools" "\
-Get and apply EditorConfig properties to current buffer.
-
-This function does nothing when the major mode is listed in
-`editorconfig-exclude-modes', or variable `buffer-file-name' matches
-any of regexps in `editorconfig-exclude-regexps'." t)
-(autoload 'editorconfig-find-current-editorconfig "editorconfig-tools" "\
-Find the closest .editorconfig file for current file." t)
-(autoload 'editorconfig-display-current-properties "editorconfig-tools" "\
-Display EditorConfig properties extracted for current buffer." t)
-(defalias 'describe-editorconfig-properties #'editorconfig-display-current-properties)
-(autoload 'editorconfig-format-buffer "editorconfig-tools" "\
-Format buffer according to .editorconfig indent_style and indent_width." t)
-\f
-;;; End of scraped data
-
-(provide 'editorconfig-autoloads)
-
-;; Local Variables:
-;; version-control: never
-;; no-byte-compile: t
-;; no-update-autoloads: t
-;; no-native-compile: t
-;; coding: utf-8-emacs-unix
-;; End:
-
-;;; editorconfig-autoloads.el ends here
diff --git a/elpa/editorconfig-20241027.1815/editorconfig-conf-mode.el b/elpa/editorconfig-20241027.1815/editorconfig-conf-mode.el
deleted file mode 100644 (file)
index 2b4ddd4..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-;;; editorconfig-conf-mode.el --- Major mode for editing .editorconfig files  -*- lexical-binding: t -*-
-
-;; Copyright (C) 2011-2024 EditorConfig Team
-
-;; Author: EditorConfig Team <editorconfigNOSPAMgooglegroups.com>
-
-;; See
-;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
-;; or the CONTRIBUTORS file for the list of contributors.
-
-;; This file is part of EditorConfig Emacs Plugin.
-
-;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or (at your
-;; option) any later version.
-
-;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
-;; Public License for more details.
-
-;; You should have received a copy of the GNU General Public License along with
-;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; Major mode for editing .editorconfig files.
-
-;;; Code:
-
-(require 'conf-mode)
-
-(defvar editorconfig-conf-mode-syntax-table
-  (let ((table (make-syntax-table conf-unix-mode-syntax-table)))
-    (modify-syntax-entry ?\; "<" table)
-    table)
-  "Syntax table in use in `editorconfig-conf-mode' buffers.")
-
-(defvar editorconfig-conf-mode-abbrev-table nil
-  "Abbrev table in use in `editorconfig-conf-mode' buffers.")
-(define-abbrev-table 'editorconfig-conf-mode-abbrev-table ())
-
-;;;###autoload
-(define-derived-mode editorconfig-conf-mode conf-unix-mode "Conf[EditorConfig]"
-  "Major mode for editing .editorconfig files."
-  (set-variable 'indent-line-function 'indent-relative)
-  (let ((key-property-list
-         '("charset"
-           "end_of_line"
-           "file_type_emacs"
-           "file_type_ext"
-           "indent_size"
-           "indent_style"
-           "insert_final_newline"
-           "max_line_length"
-           "root"
-           "tab_width"
-           "trim_trailing_whitespace"))
-        (key-value-list
-         '("unset"
-           "true"
-           "false"
-           "lf"
-           "cr"
-           "crlf"
-           "space"
-           "tab"
-           "latin1"
-           "utf-8"
-           "utf-8-bom"
-           "utf-16be"
-           "utf-16le"))
-        (font-lock-value
-         '(("^[ \t]*\\[\\(.+?\\)\\]" 1 font-lock-type-face)
-           ("^[ \t]*\\(.+?\\)[ \t]*[=:]" 1 font-lock-variable-name-face))))
-
-    ;; Highlight all key values
-    (dolist (key-value key-value-list)
-      (push `(,(format "[=:][ \t]*\\(%s\\)\\([ \t]\\|$\\)" key-value)
-              1 font-lock-constant-face)
-            font-lock-value))
-    ;; Highlight all key properties
-    (dolist (key-property key-property-list)
-      (push `(,(format "^[ \t]*\\(%s\\)[ \t]*[=:]" key-property)
-              1 font-lock-builtin-face)
-            font-lock-value))
-
-    (conf-mode-initialize "#" font-lock-value)))
-
-;;;###autoload
-(add-to-list 'auto-mode-alist '("\\.editorconfig\\'" . editorconfig-conf-mode))
-
-(provide 'editorconfig-conf-mode)
-;;; editorconfig-conf-mode.el ends here
diff --git a/elpa/editorconfig-20241027.1815/editorconfig-core-handle.el b/elpa/editorconfig-20241027.1815/editorconfig-core-handle.el
deleted file mode 100644 (file)
index 69eb45f..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-;;; editorconfig-core-handle.el --- Handle Class for EditorConfig File  -*- lexical-binding: t -*-
-
-;; Copyright (C) 2011-2024  Free Software Foundation, Inc.
-
-;; Author: EditorConfig Team <editorconfigNOSPAMgooglegroups.com>
-;; Package: editorconfig
-
-;; See
-;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors or
-;; https://github.com/editorconfig/editorconfig-emacs/blob/master/CONTRIBUTORS
-;; for the list of contributors.
-
-;; This file is part of EditorConfig Emacs Plugin.
-
-;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-;; See the GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; Handle structures for EditorConfig config file.  This library is used
-;; internally from editorconfig-core.el .
-
-;;; Code:
-
-(require 'cl-lib)
-
-(require 'editorconfig-fnmatch)
-
-(defvar editorconfig-core-handle--cache-hash
-  (make-hash-table :test 'equal)
-  "Hash of EditorConfig filename and its `editorconfig-core-handle' instance.")
-
-(cl-defstruct editorconfig-core-handle-section
-  "Structure representing one section in a .editorconfig file.
-
-Slots:
-
-`name'
-  String of section name (glob string).
-
-`props'
-  Alist of properties: (KEY . VALUE)."
-  (name nil)
-  (props nil))
-
-(defun editorconfig-core-handle-section-get-properties (section file)
-  "Return properties alist when SECTION name match FILE.
-
-FILE should be a relative file name, relative to the directory where
-the `.editorconfig' file which has SECTION lives.
-If not match, return nil."
-  (when (editorconfig-core-handle--fnmatch-p
-         file (editorconfig-core-handle-section-name section))
-    (editorconfig-core-handle-section-props section)))
-
-(cl-defstruct editorconfig-core-handle
-  "Structure representing an .editorconfig file.
-
-Slots:
-`top-props'
-  Alist of top properties like ((\"root\" . \"true\"))
-
-`sections'
-  List of `editorconfig-core-handle-section' structure objects.
-
-`mtime'
-  Last modified time of .editorconfig file.
-
-`path'
-  Absolute path to .editorconfig file."
-  (top-props nil)
-  (sections nil)
-  (mtime nil)
-  (path nil))
-
-
-(defun editorconfig-core-handle (conf)
-  "Return EditorConfig handle for CONF, which should be a file path.
-
-If CONF does not exist return nil."
-  (when (file-readable-p conf)
-    (let ((cached (gethash conf editorconfig-core-handle--cache-hash))
-          (mtime (nth 5 (file-attributes conf))))
-      (if (and cached
-               (equal (editorconfig-core-handle-mtime cached) mtime))
-          cached
-        (let ((parsed (editorconfig-core-handle--parse-file conf)))
-          (puthash conf parsed editorconfig-core-handle--cache-hash))))))
-
-(defun editorconfig-core-handle-root-p (handle)
-  "Return non-nil if HANDLE represent root EditorConfig file.
-
-If HANDLE is nil return nil."
-  (when handle
-    (string-equal "true"
-                  (downcase (or (cdr (assoc "root"
-                                            (editorconfig-core-handle-top-props handle)))
-                                "")))))
-
-(defun editorconfig-core-handle-get-properties (handle file)
-  "Return list of alist of properties from HANDLE for FILE.
-The list returned will be ordered by the lines they appear.
-
-If HANDLE is nil return nil."
-  (declare (obsolete editorconfig-core-handle-get-properties-hash "0.8.0"))
-  (when handle
-    (let* ((dir (file-name-directory (editorconfig-core-handle-path handle)))
-           (file (file-relative-name file dir)))
-      (cl-loop for section in (editorconfig-core-handle-sections handle)
-               for props = (editorconfig-core-handle-section-get-properties
-                            section file)
-               when props collect (copy-alist props)))))
-
-
-(defun editorconfig-core-handle-get-properties-hash (handle file)
-  "Return hash of properties from HANDLE for FILE.
-
-If HANDLE is nil return nil."
-  (when handle
-    (let* ((hash (make-hash-table))
-           (dir (file-name-directory (editorconfig-core-handle-path handle)))
-           (file (file-relative-name file dir)))
-      (dolist (section (editorconfig-core-handle-sections handle))
-        (cl-loop for (key . value) in (editorconfig-core-handle-section-get-properties section file)
-                 do (puthash (intern key) value hash)))
-      hash)))
-
-(defun editorconfig-core-handle--fnmatch-p (name pattern)
-  "Return non-nil if NAME match PATTERN.
-If pattern has slash, pattern should be relative to DIR.
-
-This function is a fnmatch with a few modification for EditorConfig usage."
-  (if (string-match-p "/" pattern)
-      (let ((pattern (replace-regexp-in-string "\\`/" "" pattern)))
-        (editorconfig-fnmatch-p name pattern))
-    ;; The match is not "anchored" so it can be either in the current dir or
-    ;; in a subdir.  Contrary to Zsh patterns, editorconfig's `**/foo' does
-    ;; not match `foo', so we need to split the problem into two matches.
-    (or (editorconfig-fnmatch-p name pattern)
-        (editorconfig-fnmatch-p name (concat "**/" pattern)))))
-
-(defun editorconfig-core-handle--parse-file (conf)
-  "Parse EditorConfig file CONF.
-
-This function returns a `editorconfig-core-handle'.
-If CONF is not found return nil."
-  (when (file-readable-p conf)
-    (with-temp-buffer
-      ;; NOTE: Use this instead of insert-file-contents-literally to enable
-      ;; code conversion
-      (insert-file-contents conf)
-      (goto-char (point-min))
-      (let ((sections ())
-            (top-props nil)
-
-            ;; nil when pattern not appeared yet, "" when pattern is empty ("[]")
-            (pattern nil)
-            ;; Alist of properties for current PATTERN
-            (props ())
-
-            ;; Current line num
-            (current-line-number 1))
-        (while (not (eobp))
-          (skip-chars-forward " \t\f")
-          (cond
-           ((looking-at "\\(?:[#;].*\\)?$")
-            nil)
-
-           ;; Start of section
-           ((looking-at "\\[\\(.*\\)\\][ \t]*$")
-            (let ((newpattern (match-string 1)))
-              (when pattern
-                (push (make-editorconfig-core-handle-section
-                       :name pattern
-                       :props (nreverse props))
-                      sections))
-              (setq props nil)
-              (setq pattern newpattern)))
-
-           ((looking-at "\\([^=: \t]+\\)[ \t]*[=:][ \t]*\\(.*?\\)[ \t]*$")
-            (let ((key (downcase (match-string 1)))
-                  (value (match-string 2)))
-              (if pattern
-                  (push `(,key . ,value)
-                        props)
-                (push `(,key . ,value)
-                      top-props))))
-
-           (t (error "Error while reading config file: %s:%d:\n    %s\n"
-                     conf current-line-number
-                     (buffer-substring-no-properties (line-beginning-position)
-                                                     (line-end-position)))))
-          (setq current-line-number (1+ current-line-number))
-          (goto-char (point-min))
-          (forward-line (1- current-line-number)))
-        (when pattern
-          (push (make-editorconfig-core-handle-section
-                 :name pattern
-                 :props (nreverse props))
-                sections))
-        (make-editorconfig-core-handle
-         :top-props (nreverse top-props)
-         :sections (nreverse sections)
-         :mtime (nth 5 (file-attributes conf))
-         :path conf)))))
-
-(provide 'editorconfig-core-handle)
-;;; editorconfig-core-handle.el ends here
diff --git a/elpa/editorconfig-20241027.1815/editorconfig-core.el b/elpa/editorconfig-20241027.1815/editorconfig-core.el
deleted file mode 100644 (file)
index 905084d..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-;;; editorconfig-core.el --- EditorConfig Core library in Emacs Lisp  -*- lexical-binding: t -*-
-
-;; Copyright (C) 2011-2024 EditorConfig Team
-
-;; Author: EditorConfig Team <editorconfigNOSPAMgooglegroups.com>
-
-;; See
-;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
-;; or the CONTRIBUTORS file for the list of contributors.
-
-;; This file is part of EditorConfig Emacs Plugin.
-
-;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or (at your
-;; option) any later version.
-
-;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
-;; Public License for more details.
-
-;; You should have received a copy of the GNU General Public License along with
-;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This library is one implementation of EditorConfig Core, which parses
-;; .editorconfig files and returns properties for given files.
-;; This can be used in place of, for example, editorconfig-core-c.
-
-
-;; Use from EditorConfig Emacs Plugin
-
-;; Emacs plugin (v0.5 or later) can utilize this implementation.
-;; By default, the plugin first search for any EditorConfig executable,
-;; and fallback to this library if not found.
-;; If you always want to use this library, add following lines to your init.el:
-
-;;     (setq editorconfig-get-properties-function
-;;           'editorconfig-core-get-properties-hash)
-
-
-;; Functions
-
-;; editorconfig-core-get-properties (&optional file confname confversion)
-
-;; Get EditorConfig properties for FILE.
-
-;; If FILE is not given, use currently visiting file.
-;; Give CONFNAME for basename of config file other than .editorconfig.
-;; If need to specify config format version, give CONFVERSION.
-
-;; This functions returns alist of properties.  Each element will look like
-;; (KEY . VALUE) .
-
-
-;; editorconfig-core-get-properties-hash (&optional file confname confversion)
-
-;; Get EditorConfig properties for FILE.
-
-;; This function is almost same as `editorconfig-core-get-properties', but
-;; returns hash object instead.
-
-;;; Code:
-
-(require 'cl-lib)
-
-(require 'editorconfig-core-handle)
-
-(eval-when-compile
-  (require 'subr-x))
-
-
-(defun editorconfig-core--get-handles (dir confname &optional result)
-  "Get list of EditorConfig handlers for DIR from CONFNAME.
-
-In the resulting list, the handle for root config file comes first, and the
-nearest comes last.
-The list may contains nil when no file was found for directories.
-RESULT is used internally and normally should not be used."
-  (setq dir (expand-file-name dir))
-  (let ((handle (editorconfig-core-handle (concat (file-name-as-directory dir)
-                                                  confname)))
-        (parent (file-name-directory (directory-file-name dir))))
-    (if (or (string= parent dir)
-            (and handle (editorconfig-core-handle-root-p handle)))
-        (cl-remove-if-not 'identity (cons handle result))
-      (editorconfig-core--get-handles parent
-                                      confname
-                                      (cons handle result)))))
-
-;;;###autoload
-(defun editorconfig-core-get-nearest-editorconfig (directory)
-  "Return path to .editorconfig file that is closest to DIRECTORY."
-  (when-let* ((handle (car (last
-                           (editorconfig-core--get-handles directory
-                                                           ".editorconfig")))))
-    (editorconfig-core-handle-path handle)))
-
-;;;###autoload
-(defun editorconfig-core-get-properties (&optional file confname confversion)
-  "Get EditorConfig properties for FILE.
-If FILE is not given, use currently visiting file.
-Give CONFNAME for basename of config file other than .editorconfig.
-If need to specify config format version, give CONFVERSION.
-
-This function returns an alist of properties.  Each element will
-look like (KEY . VALUE)."
-  (let ((hash (editorconfig-core-get-properties-hash file confname confversion))
-        (result nil))
-    (maphash (lambda (key value)
-               (add-to-list 'result (cons (symbol-name key) value)))
-             hash)
-    (sort result (lambda (x y) (string< (car x) (car y))))))
-
-(defun editorconfig-core--hash-merge (into update)
-  "Merge two hashes INTO and UPDATE.
-
-This is a destructive function, hash INTO will be modified.
-When the same key exists in both two hashes, values of UPDATE takes precedence."
-  (maphash (lambda (key value) (puthash key value into)) update)
-  into)
-
-;;;###autoload
-(defun editorconfig-core-get-properties-hash (&optional file confname confversion)
-  "Get EditorConfig properties for FILE.
-If FILE is not given, use currently visiting file.
-Give CONFNAME for basename of config file other than .editorconfig.
-If need to specify config format version, give CONFVERSION.
-
-This function is almost same as `editorconfig-core-get-properties', but returns
-hash object instead."
-  (setq file
-        (expand-file-name (or file
-                              buffer-file-name
-                              (error "FILE is not given and `buffer-file-name' is nil"))))
-  (setq confname (or confname ".editorconfig"))
-  (setq confversion (or confversion "0.12.0"))
-  (let ((result (make-hash-table)))
-    (dolist (handle (editorconfig-core--get-handles (file-name-directory file)
-                                                    confname))
-      (editorconfig-core--hash-merge result
-                                     (editorconfig-core-handle-get-properties-hash handle
-                                                                                   file)))
-
-    ;; Downcase known boolean values
-    (dolist (key '( end_of_line indent_style indent_size insert_final_newline
-                    trim_trailing_whitespace charset))
-      (when-let* ((val (gethash key result)))
-        (puthash key (downcase val) result)))
-
-    ;; Add indent_size property
-    (let ((v-indent-size (gethash 'indent_size result))
-          (v-indent-style (gethash 'indent_style result)))
-      (when (and (not v-indent-size)
-                 (string= v-indent-style "tab")
-                 ;; If VERSION < 0.9.0, indent_size should have no default value
-                 (version<= "0.9.0"
-                            confversion))
-        (puthash 'indent_size
-                 "tab"
-                 result)))
-    ;; Add tab_width property
-    (let ((v-indent-size (gethash 'indent_size result))
-          (v-tab-width (gethash 'tab_width result)))
-      (when (and v-indent-size
-                 (not v-tab-width)
-                 (not (string= v-indent-size "tab")))
-        (puthash 'tab_width v-indent-size result)))
-    ;; Update indent-size property
-    (let ((v-indent-size (gethash 'indent_size result))
-          (v-tab-width (gethash 'tab_width result)))
-      (when (and v-indent-size
-                 v-tab-width
-                 (string= v-indent-size "tab"))
-        (puthash 'indent_size v-tab-width result)))
-
-    result))
-
-(provide 'editorconfig-core)
-;;; editorconfig-core.el ends here
diff --git a/elpa/editorconfig-20241027.1815/editorconfig-fnmatch.el b/elpa/editorconfig-20241027.1815/editorconfig-fnmatch.el
deleted file mode 100644 (file)
index a3edfc3..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-;;; editorconfig-fnmatch.el --- Glob pattern matching  -*- lexical-binding: t -*-
-
-;; Copyright (C) 2011-2024  Free Software Foundation, Inc.
-
-;; Author: EditorConfig Team <editorconfigNOSPAMgooglegroups.com>
-;; Package: editorconfig
-
-;; See
-;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors or
-;; https://github.com/editorconfig/editorconfig-emacs/blob/master/CONTRIBUTORS
-;; for the list of contributors.
-
-;; This file is part of EditorConfig Emacs Plugin.
-
-;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-;; See the GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; editorconfig-fnmatch.el provides a fnmatch implementation with a few
-;; extensions.
-;; The main usage of this library is glob pattern matching for EditorConfig, but
-;; it can also act solely.
-
-;; editorconfig-fnmatch-p (name pattern)
-
-;; Test whether NAME match PATTERN.
-
-;; PATTERN should be a shell glob pattern, and some zsh-like wildcard matchings
-;; can be used:
-
-;; *           Matches any string of characters, except path separators (/)
-;; **          Matches any string of characters
-;; ?           Matches any single character
-;; [name]      Matches any single character in name
-;; [^name]     Matches any single character not in name
-;; {s1,s2,s3}  Matches any of the strings given (separated by commas)
-;; {min..max}  Matches any number between min and max
-
-
-;; This library is a port from editorconfig-core-py library.
-;; https://github.com/editorconfig/editorconfig-core-py/blob/master/editorconfig/fnmatch.py
-
-;;; Code:
-
-(require 'cl-lib)
-
-(defvar editorconfig-fnmatch--cache-hashtable
-  nil
-  "Cache of shell pattern and its translation.")
-;; Clear cache on file reload
-(setq editorconfig-fnmatch--cache-hashtable
-      (make-hash-table :test 'equal))
-
-
-(defconst editorconfig-fnmatch--left-brace-regexp
-  "\\(^\\|[^\\]\\){"
-  "Regular expression for left brace ({).")
-
-(defconst editorconfig-fnmatch--right-brace-regexp
-  "\\(^\\|[^\\]\\)}"
-  "Regular expression for right brace (}).")
-
-
-(defconst editorconfig-fnmatch--numeric-range-regexp
-  "\\([+-]?[0-9]+\\)\\.\\.\\([+-]?[0-9]+\\)"
-  "Regular expression for numeric range (like {-3..+3}).")
-
-(defun editorconfig-fnmatch--match-num (regexp string)
-  "Return how many times REGEXP is found in STRING."
-  (let ((num 0))
-    ;; START arg does not work as expected in this case
-    (while (string-match regexp string)
-      (setq num (1+ num)
-            string (substring string (match-end 0))))
-    num))
-
-(defun editorconfig-fnmatch-p (string pattern)
-  "Test whether STRING match PATTERN.
-
-Matching ignores case if `case-fold-search' is non-nil.
-
-PATTERN should be a shell glob pattern, and some zsh-like wildcard matchings can
-be used:
-
-*           Matches any string of characters, except path separators (/)
-**          Matches any string of characters
-?           Matches any single character
-[name]      Matches any single character in name
-[^name]     Matches any single character not in name
-{s1,s2,s3}  Matches any of the strings given (separated by commas)
-{min..max}  Matches any number between min and max"
-  (string-match (editorconfig-fnmatch-translate pattern)
-                string))
-
-;;(editorconfig-fnmatch-translate "{a,{-3..3}}.js")
-;;(editorconfig-fnmatch-p "1.js" "{a,{-3..3}}.js")
-
-(defun editorconfig-fnmatch-translate (pattern)
-  "Translate a shell PATTERN to a regular expression.
-
-Translation result will be cached, so same translation will not be done twice."
-  (let ((cached (gethash pattern
-                         editorconfig-fnmatch--cache-hashtable)))
-    (or cached
-        (puthash pattern
-                 (editorconfig-fnmatch--do-translate pattern)
-                 editorconfig-fnmatch--cache-hashtable))))
-
-
-(defun editorconfig-fnmatch--do-translate (pattern &optional nested)
-  "Translate a shell PATTERN to a regular expression.
-
-Set NESTED to t when this function is called from itself.
-
-This function is called from `editorconfig-fnmatch-translate', when no cached
-translation is found for PATTERN."
-  (let ((index 0)
-        (length (length pattern))
-        (brace-level 0)
-        (in-brackets nil)
-        ;; List of strings of resulting regexp, in reverse order.
-        (result ())
-        (is-escaped nil)
-        (matching-braces (= (editorconfig-fnmatch--match-num
-                             editorconfig-fnmatch--left-brace-regexp
-                             pattern)
-                            (editorconfig-fnmatch--match-num
-                             editorconfig-fnmatch--right-brace-regexp
-                             pattern)))
-
-        current-char
-        pos
-        has-slash
-        has-comma
-        num-range)
-
-    (while (< index length)
-      (if (and (not is-escaped)
-               (string-match "[^]\\*?[{},/-]+"
-                             ;;(string-match "[^]\\*?[{},/\\-]+" "?.a")
-                             pattern
-                             index)
-               (eq index (match-beginning 0)))
-          (progn
-            (push (regexp-quote (match-string 0 pattern)) result)
-            (setq index (match-end 0)
-                  is-escaped nil))
-
-        (setq current-char (aref pattern index)
-              index (1+ index))
-
-        (push
-         (cl-case current-char
-           (?*
-            (setq pos index)
-            (if (and (< pos length)
-                     (= (aref pattern pos) ?*))
-                ".*"
-              "[^/]*"))
-
-           (?? "[^/]")
-
-           (?\[
-            (if in-brackets
-                "\\["
-              (if (= (aref pattern index) ?/)
-                  ;; Slash after an half-open bracket
-                  (progn
-                    (setq index (+ index 1))
-                    "\\[/")
-                (setq pos index
-                      has-slash nil)
-                (while (and (< pos length)
-                            (not (= (aref pattern pos) ?\]))
-                            (not has-slash))
-                  (if (and (= (aref pattern pos) ?/)
-                           (not (= (aref pattern (- pos 1)) ?\\)))
-                      (setq has-slash t)
-                    (setq pos (1+ pos))))
-                (if has-slash
-                    (let ((content (substring pattern index (1+ pos))))
-                      (setq index (+ pos 2))
-                      (concat "\\[" content "\\]"))
-                  (setq in-brackets t)
-                  (if (and (< index length)
-                           (memq (aref pattern index)
-                                 '(?! ?^)))
-                      (progn
-                        (setq index (1+ index))
-                        "[^")
-                    "[")))))
-
-           (?- (if in-brackets "-" "\\-"))
-
-           (?\] (setq in-brackets nil) "]")
-
-           (?\{
-            (setq pos index
-                  has-comma nil)
-            (while (and (or (and (< pos length)
-                                 (not (= (aref pattern pos) ?})))
-                            is-escaped)
-                        (not has-comma))
-              (if (and (eq (aref pattern pos) ?,)
-                       (not is-escaped))
-                  (setq has-comma t)
-                (setq is-escaped (and (eq (aref pattern pos)
-                                          ?\\)
-                                      (not is-escaped))
-                      pos (1+ pos))))
-            (if (and (not has-comma)
-                     (< pos length))
-                (let ((pattern-sub (substring pattern index pos)))
-                  (setq num-range (string-match
-                                   editorconfig-fnmatch--numeric-range-regexp
-                                   pattern-sub))
-                  (setq index (1+ pos))
-                  (if num-range
-                      (let ((number-start (string-to-number
-                                           (match-string 1 pattern-sub)))
-                            (number-end (string-to-number
-                                         (match-string 2 pattern-sub))))
-                        (regexp-opt
-                         (mapcar #'number-to-string
-                                 (cl-loop for i from number-start to number-end
-                                          collect i))))
-                    (let ((inner (editorconfig-fnmatch--do-translate
-                                  pattern-sub t)))
-                      (format "{%s}" inner))))
-              (if matching-braces
-                  (progn
-                    (setq brace-level (1+ brace-level))
-                    "\\(?:")
-                "{")))
-
-           (?,
-            (if (and (> brace-level 0)
-                     (not is-escaped))
-                "\\|" "\\,"))
-
-           (?\}
-            (if (and (> brace-level 0)
-                     (not is-escaped))
-                (progn
-                  (setq brace-level (- brace-level 1))
-                  "\\)")
-              "}"))
-
-           (?/
-            (if (and (<= (+ index 3) (length pattern))
-                     (string= (substring pattern index (+ index 3)) "**/"))
-                (progn
-                  (setq index (+ index 3))
-                  "\\(?:/\\|/.*/\\)")
-              "/"))
-
-           (?\\ (when is-escaped "\\\\"))
-           (t (regexp-quote (char-to-string current-char))))
-         result)
-
-        (setq is-escaped (and (= current-char ?\\) (not is-escaped)))))
-    (unless nested
-      (setq result `("\\'" ,@result "\\`")))
-    (apply #'concat (reverse result))))
-
-(provide 'editorconfig-fnmatch)
-;;; editorconfig-fnmatch.el ends here
diff --git a/elpa/editorconfig-20241027.1815/editorconfig-pkg.el b/elpa/editorconfig-20241027.1815/editorconfig-pkg.el
deleted file mode 100644 (file)
index 1d2ff3a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-;; -*- no-byte-compile: t; lexical-binding: nil -*-
-(define-package "editorconfig" "20241027.1815"
-  "EditorConfig Emacs Plugin."
-  '((emacs "26.1"))
-  :url "https://github.com/editorconfig/editorconfig-emacs"
-  :commit "24f5b2b1cd4e37adc245fb59f7edeb6872a707a4"
-  :revdesc "24f5b2b1cd4e"
-  :keywords '("convenience" "editorconfig")
-  :authors '(("EditorConfig Team" . "editorconfigNOSPAMgooglegroups.com"))
-  :maintainers '(("EditorConfig Team" . "editorconfigNOSPAMgooglegroups.com")))
diff --git a/elpa/editorconfig-20241027.1815/editorconfig-tools.el b/elpa/editorconfig-20241027.1815/editorconfig-tools.el
deleted file mode 100644 (file)
index 1680889..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-;;; editorconfig-tools.el --- Editorconfig tools   -*- lexical-binding: t -*-
-
-;; Copyright (C) 2011-2024 EditorConfig Team
-
-;; Author: EditorConfig Team <editorconfigNOSPAMgooglegroups.com>
-
-;; See
-;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
-;; or the CONTRIBUTORS file for the list of contributors.
-
-;; This file is part of EditorConfig Emacs Plugin.
-
-;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or (at your
-;; option) any later version.
-
-;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
-;; Public License for more details.
-
-;; You should have received a copy of the GNU General Public License along with
-;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; Some utility commands for users, not used from editorconfig-mode.
-
-;;; Code:
-
-(require 'cl-lib)
-
-(eval-when-compile
-  (require 'subr-x))
-
-
-(require 'editorconfig)
-
-;;;###autoload
-(defun editorconfig-apply ()
-  "Get and apply EditorConfig properties to current buffer.
-
-This function does not respect the values of `editorconfig-exclude-modes' and
-`editorconfig-exclude-regexps' and always applies available properties.
-Use `editorconfig-mode-apply' instead to make use of these variables."
-  (interactive)
-  (when buffer-file-name
-    (condition-case err
-        (progn
-          (let ((props (editorconfig-call-get-properties-function buffer-file-name)))
-            (condition-case err
-                (run-hook-with-args 'editorconfig-hack-properties-functions props)
-              (error
-               (display-warning '(editorconfig editorconfig-hack-properties-functions)
-                                (format "Error while running editorconfig-hack-properties-functions, abort running hook: %S"
-                                        err)
-                                :warning)))
-            (setq editorconfig-properties-hash props)
-            (editorconfig-set-local-variables props)
-            (editorconfig-set-coding-system-revert
-             (gethash 'end_of_line props)
-             (gethash 'charset props))
-            (condition-case err
-                (run-hook-with-args 'editorconfig-after-apply-functions props)
-              (error
-               (display-warning '(editorconfig editorconfig-after-apply-functions)
-                                (format "Error while running editorconfig-after-apply-functions, abort running hook: %S"
-                                        err)
-                                :warning)))))
-      (error
-       (display-warning '(editorconfig editorconfig-apply)
-                        (format "Error in editorconfig-apply, styles will not be applied: %S" err)
-                        :error)))))
-
-;;;###autoload
-(defun editorconfig-mode-apply ()
-  "Get and apply EditorConfig properties to current buffer.
-
-This function does nothing when the major mode is listed in
-`editorconfig-exclude-modes', or variable `buffer-file-name' matches
-any of regexps in `editorconfig-exclude-regexps'."
-  (interactive)
-  (when (and major-mode
-             (not (editorconfig--disabled-for-majormode major-mode))
-             buffer-file-name
-             (not (editorconfig--disabled-for-filename buffer-file-name)))
-    (editorconfig-apply)))
-
-
-;;;###autoload
-(defun editorconfig-find-current-editorconfig ()
-  "Find the closest .editorconfig file for current file."
-  (interactive)
-  (eval-and-compile (require 'editorconfig-core))
-  (when-let* ((file (editorconfig-core-get-nearest-editorconfig
-                    default-directory)))
-    (find-file file)))
-
-;;;###autoload
-(defun editorconfig-display-current-properties ()
-  "Display EditorConfig properties extracted for current buffer."
-  (interactive)
-  (if editorconfig-properties-hash
-      (let ((buf (get-buffer-create "*EditorConfig Properties*"))
-            (file buffer-file-name)
-            (props editorconfig-properties-hash))
-        (with-current-buffer buf
-          (erase-buffer)
-          (insert (format "# EditorConfig for %s\n" file))
-          (maphash (lambda (k v)
-                     (insert (format "%S = %s\n" k v)))
-                   props))
-        (display-buffer buf))
-    (message "Properties are not applied to current buffer yet.")
-    nil))
-;;;###autoload
-(defalias 'describe-editorconfig-properties
-  #'editorconfig-display-current-properties)
-
-;;;###autoload
-(defun editorconfig-format-buffer()
-  "Format buffer according to .editorconfig indent_style and indent_width."
-  (interactive)
-  (when (string= (gethash 'indent_style editorconfig-properties-hash) "tab")
-    (tabify (point-min) (point-max)))
-  (when (string= (gethash 'indent_style editorconfig-properties-hash) "space")
-    (untabify (point-min) (point-max)))
-  (indent-region (point-min) (point-max)))
-
-
-(provide 'editorconfig-tools)
-;;; editorconfig-tools.el ends here
diff --git a/elpa/editorconfig-20241027.1815/editorconfig.el b/elpa/editorconfig-20241027.1815/editorconfig.el
deleted file mode 100644 (file)
index fb2be8e..0000000
+++ /dev/null
@@ -1,907 +0,0 @@
-;;; editorconfig.el --- EditorConfig Emacs Plugin  -*- lexical-binding: t -*-
-
-;; Copyright (C) 2011-2024 EditorConfig Team
-
-;; Author: EditorConfig Team <editorconfigNOSPAMgooglegroups.com>
-;; Package-Version: 20241027.1815
-;; Package-Revision: 24f5b2b1cd4e
-;; URL: https://github.com/editorconfig/editorconfig-emacs#readme
-;; Package-Requires: ((emacs "26.1"))
-;; Keywords: convenience editorconfig
-
-;; See
-;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
-;; or the CONTRIBUTORS file for the list of contributors.
-
-;; This file is part of EditorConfig Emacs Plugin.
-
-;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or (at your
-;; option) any later version.
-
-;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
-;; Public License for more details.
-
-;; You should have received a copy of the GNU General Public License along with
-;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; EditorConfig helps developers define and maintain consistent
-;; coding styles between different editors and IDEs.
-
-;; The EditorConfig project consists of a file format for defining
-;; coding styles and a collection of text editor plugins that enable
-;; editors to read the file format and adhere to defined styles.
-;; EditorConfig files are easily readable and they work nicely with
-;; version control systems.
-
-;;; Code:
-
-(require 'cl-lib)
-
-(eval-when-compile (require 'subr-x))
-(defvar tex-indent-basic)
-(defvar tex-indent-item)
-(defvar tex-indent-arg)
-(defvar evil-shift-width)
-
-(require 'editorconfig-core)
-
-(defgroup editorconfig nil
-  "EditorConfig Emacs Plugin.
-
-EditorConfig helps developers define and maintain consistent
-coding styles between different editors and IDEs."
-  :tag "EditorConfig"
-  :prefix "editorconfig-"
-  :group 'tools)
-
-(define-obsolete-variable-alias
-  'edconf-exec-path
-  'editorconfig-exec-path
-  "0.5")
-(defcustom editorconfig-exec-path
-  "editorconfig"
-  "Path to EditorConfig executable.
-
-Used by `editorconfig--execute-editorconfig-exec'."
-  :type 'string)
-
-(define-obsolete-variable-alias
-  'edconf-get-properties-function
-  'editorconfig-get-properties-function
-  "0.5")
-(defcustom editorconfig-get-properties-function
-  'editorconfig-core-get-properties-hash
-  "A function which gets EditorConfig properties for specified file.
-
-This function will be called with one argument, full path of the target file,
-and should return a hash object containing properties, or nil if any core
-program is not available.  Keys of this hash should be symbols of properties,
-and values should be strings of their values.
-
-
-For example, if you always want to use built-in core library instead
-of any EditorConfig executable to get properties, add following to
-your init.el:
-
-  (set-variable \\='editorconfig-get-properties-function
-                #\\='editorconfig-core-get-properties-hash)
-
-Possible known values are:
-
-* `editorconfig-core-get-properties-hash' (default)
-  * Always use built-in Emacs-Lisp implementation to get properties
-* `editorconfig-get-properties'
-  * Use `editorconfig-get-properties-from-exec' when
-    `editorconfig-exec-path' executable is found, otherwise
-    use `editorconfig-core-get-properties-hash'
-* `editorconfig-get-properties-from-exec'
-  * Get properties by executing EditorConfig executable"
-  :type 'function)
-
-(defcustom editorconfig-mode-lighter " EditorConfig"
-  "Command `editorconfig-mode' lighter string."
-  :type 'string)
-
-(define-obsolete-variable-alias
-  'edconf-custom-hooks
-  'editorconfig-after-apply-functions
-  "0.5")
-(define-obsolete-variable-alias
-  'editorconfig-custom-hooks
-  'editorconfig-after-apply-functions
-  "0.7.14")
-(defcustom editorconfig-after-apply-functions ()
-  "A list of functions after loading common EditorConfig settings.
-
-Each element in this list is a hook function.  This hook function
-takes one parameter, which is a property hash table.  The value
-of properties can be obtained through gethash function.
-
-The hook does not have to be coding style related; you can add
-whatever functionality you want.  For example, the following is
-an example to add a new property emacs_linum to decide whether to
-show line numbers on the left:
-
-  (add-hook \\='editorconfig-after-apply-functions
-    \\='(lambda (props)
-       (let ((show-line-num (gethash \\='emacs_linum props)))
-         (cond ((equal show-line-num \"true\") (linum-mode 1))
-           ((equal show-line-num \"false\") (linum-mode 0))))))
-
-This hook will be run even when there are no matching sections in
-\".editorconfig\", or no \".editorconfig\" file was found at all."
-  :type 'hook)
-
-(defcustom editorconfig-hack-properties-functions ()
-  "A list of function to alter property values before applying them.
-
-These functions will be run after loading \".editorconfig\" files and before
-applying them to current buffer, so that you can alter some properties from
-\".editorconfig\" before they take effect.
-\(Since 2021/08/30 (v0.9.0): Buffer coding-systems are set before running
-this functions, so this variable cannot be used to change coding-systems.)
-
-For example, Makefiles always use tab characters for indentation: you can
-overwrite \"indent_style\" property when current `major-mode' is a
-`makefile-mode' with following code:
-
-  (add-hook \\='editorconfig-hack-properties-functions
-            \\='(lambda (props)
-               (when (derived-mode-p \\='makefile-mode)
-                 (puthash \\='indent_style \"tab\" props))))
-
-This hook will be run even when there are no matching sections in
-\".editorconfig\", or no \".editorconfig\" file was found at all."
-  :type 'hook)
-(make-obsolete-variable 'editorconfig-hack-properties-functions
-                        "Using `editorconfig-after-apply-functions' instead is recommended,
-    because since 2021/08/30 (v0.9.0) this variable cannot support all properties:
-    charset values will be referenced before running this hook."
-                        "v0.9.0")
-
-(define-obsolete-variable-alias
-  'edconf-indentation-alist
-  'editorconfig-indentation-alist
-  "0.5")
-(defcustom editorconfig-indentation-alist
-  ;; For contributors: Sort modes in alphabetical order
-  '((ada-mode ada-indent)
-    (ada-ts-mode ada-ts-mode-indent-offset)
-    (apache-mode apache-indent-level)
-    (awk-mode c-basic-offset)
-    (bash-ts-mode sh-basic-offset
-                  sh-indentation)
-    (bpftrace-mode c-basic-offset)
-    (c++-mode c-basic-offset)
-    (c++-ts-mode c-basic-offset
-                 c-ts-mode-indent-offset)
-    (c-mode c-basic-offset)
-    (c-ts-mode c-basic-offset
-               c-ts-mode-indent-offset)
-    (cmake-mode cmake-tab-width)
-    (cmake-ts-mode cmake-tab-width
-                   cmake-ts-mode-indent-offset)
-    (coffee-mode coffee-tab-width)
-    (cperl-mode cperl-indent-level)
-    (crystal-mode crystal-indent-level)
-    (csharp-mode c-basic-offset)
-    (csharp-ts-mode c-basic-offset
-                    csharp-ts-mode-indent-offset)
-    (css-mode css-indent-offset)
-    (css-ts-mode css-indent-offset)
-    (d-mode c-basic-offset)
-    (elixir-ts-mode elixir-ts-indent-offset)
-    (emacs-lisp-mode . editorconfig-set-indentation-lisp-mode)
-    (enh-ruby-mode enh-ruby-indent-level)
-    (erlang-mode erlang-indent-level)
-    (ess-mode ess-indent-offset)
-    (f90-mode f90-associate-indent
-              f90-continuation-indent
-              f90-critical-indent
-              f90-do-indent
-              f90-if-indent
-              f90-program-indent
-              f90-type-indent)
-    (feature-mode feature-indent-offset
-                  feature-indent-level)
-    (fsharp-mode fsharp-continuation-offset
-                 fsharp-indent-level
-                 fsharp-indent-offset)
-    (gdscript-mode gdscript-indent-offset)
-    (go-ts-mode go-ts-mode-indent-offset)
-    (gpr-mode gpr-indent)
-    (gpr-ts-mode gpr-ts-mode-indent-offset)
-    (graphql-mode graphql-indent-level)
-    (groovy-mode groovy-indent-offset)
-    (haskell-mode haskell-indent-spaces
-                  haskell-indent-offset
-                  haskell-indentation-layout-offset
-                  haskell-indentation-left-offset
-                  haskell-indentation-starter-offset
-                  haskell-indentation-where-post-offset
-                  haskell-indentation-where-pre-offset
-                  shm-indent-spaces)
-    (haxor-mode haxor-tab-width)
-    (hcl-mode hcl-indent-level)
-    (html-ts-mode html-ts-mode-indent-offset)
-    (idl-mode c-basic-offset)
-    (jade-mode jade-tab-width)
-    (java-mode c-basic-offset)
-    (java-ts-mode c-basic-offset
-                  java-ts-mode-indent-offset)
-    (js-mode js-indent-level)
-    (js-ts-mode js-indent-level)
-    (js-jsx-mode js-indent-level sgml-basic-offset)
-    (js2-mode js2-basic-offset)
-    (js2-jsx-mode js2-basic-offset sgml-basic-offset)
-    (js3-mode js3-indent-level)
-    (json-mode js-indent-level)
-    (json-ts-mode json-ts-mode-indent-offset)
-    (jsonian-mode jsonian-default-indentation)
-    (julia-mode julia-indent-offset)
-    (kotlin-mode kotlin-tab-width)
-    (kotlin-ts-mode kotlin-ts-mode-indent-offset)
-    (latex-mode . editorconfig-set-indentation-latex-mode)
-    (lisp-mode . editorconfig-set-indentation-lisp-mode)
-    (livescript-mode livescript-tab-width)
-    (lua-mode lua-indent-level)
-    (lua-ts-mode lua-ts-indent-offset)
-    (magik-mode magik-indent-level)
-    (magik-ts-mode magik-indent-level)
-    (matlab-mode matlab-indent-level)
-    (meson-mode meson-indent-basic)
-    (mips-mode mips-tab-width)
-    (mustache-mode mustache-basic-offset)
-    (nasm-mode nasm-basic-offset)
-    (nginx-mode nginx-indent-level)
-    (nxml-mode nxml-child-indent (nxml-attribute-indent . 2))
-    (objc-mode c-basic-offset)
-    (octave-mode octave-block-offset)
-    (perl-mode perl-indent-level)
-    ;; No need to change `php-mode-coding-style' value for php-mode
-    ;; since we run editorconfig later than it resets `c-basic-offset'.
-    ;; See https://github.com/editorconfig/editorconfig-emacs/issues/116
-    ;; for details.
-    (php-mode c-basic-offset)
-    (php-ts-mode php-ts-mode-indent-offset)
-    (pike-mode c-basic-offset)
-    (protobuf-mode c-basic-offset)
-    (ps-mode ps-mode-tab)
-    (pug-mode pug-tab-width)
-    (puppet-mode puppet-indent-level)
-    (python-mode . editorconfig-set-indentation-python-mode)
-    (python-ts-mode . editorconfig-set-indentation-python-mode)
-    (rjsx-mode js-indent-level sgml-basic-offset)
-    (ruby-mode ruby-indent-level)
-    (ruby-ts-mode ruby-indent-level)
-    (rust-mode rust-indent-offset)
-    (rust-ts-mode rust-indent-offset
-                  rust-ts-mode-indent-offset)
-    (rustic-mode rustic-indent-offset)
-    (scala-mode scala-indent:step)
-    (scss-mode css-indent-offset)
-    (sgml-mode sgml-basic-offset)
-    (sh-mode sh-basic-offset sh-indentation)
-    (slim-mode slim-indent-offset)
-    (sml-mode sml-indent-level)
-    (svelte-mode svelte-basic-offset)
-    (swift-mode swift-mode:basic-offset)
-    (terra-mode terra-indent-level)
-    (tcl-mode tcl-indent-level
-              tcl-continued-indent-level)
-    (toml-ts-mode toml-ts-mode-indent-offset)
-    (typescript-mode typescript-indent-level)
-    (typescript-ts-base-mode typescript-ts-mode-indent-offset)
-    (verilog-mode verilog-indent-level
-                  verilog-indent-level-behavioral
-                  verilog-indent-level-declaration
-                  verilog-indent-level-module
-                  verilog-cexp-indent
-                  verilog-case-indent)
-    (web-mode (web-mode-indent-style . (lambda (size) 2))
-              web-mode-attr-indent-offset
-              web-mode-attr-value-indent-offset
-              web-mode-code-indent-offset
-              web-mode-css-indent-offset
-              web-mode-markup-indent-offset
-              web-mode-sql-indent-offset
-              web-mode-block-padding
-              web-mode-script-padding
-              web-mode-style-padding)
-    (yaml-mode yaml-indent-offset)
-    (yaml-ts-mode yaml-indent-offset)
-    (zig-mode zig-indent-offset))
-  "Alist of indentation setting methods by modes.
-
-Each element looks like (MODE . FUNCTION) or (MODE . INDENT-SPEC-LIST).
-
-If FUNCTION is provided, it will be called when setting the
-indentation.  The indent size will be passed.
-
-If INDENT-SPEC-LIST is provided, each element of it must have one of the
-following forms:
-
- 1. VARIABLE
-    It means (VARIABLE . 1).
-
- 2. (VARIABLE . SPEC)
-    Setting VARIABLE according to the type of SPEC:
-
-      - Integer
-        The value is (* SPEC INDENT-SIZE);
-
-      - Function
-        The value is (funcall SPEC INDENT-SIZE);
-
-      - Any other type.
-        The value is SPEC.
-
-NOTE: Only the **buffer local** value of VARIABLE will be set."
-  :type '(alist :key-type symbol :value-type sexp)
-  :risky t)
-
-(defcustom editorconfig-exclude-modes ()
-  "Modes in which `editorconfig-mode-apply' will not run."
-  :type '(repeat (symbol :tag "Major Mode")))
-
-(defcustom editorconfig-exclude-regexps ()
-  "List of regexp for buffer filenames `editorconfig-mode-apply' will not run.
-
-When variable `buffer-file-name' matches any of the regexps, then
-`editorconfig-mode-apply' will not do its work."
-  :type '(repeat string))
-(with-eval-after-load 'recentf
-  (add-to-list 'editorconfig-exclude-regexps
-               (rx-to-string '(seq string-start
-                                   (eval (file-truename (expand-file-name recentf-save-file))))
-                             t)))
-
-(defcustom editorconfig-trim-whitespaces-mode nil
-  "Buffer local minor-mode to use to trim trailing whitespaces.
-
-If set, enable that mode when `trim_trailing_whitespace` is set to true.
-Otherwise, use `delete-trailing-whitespace'."
-  :type 'symbol)
-
-(defvar editorconfig-properties-hash nil
-  "Hash object of EditorConfig properties that was enabled for current buffer.
-Set by `editorconfig-apply' and nil if that is not invoked in
-current buffer yet.")
-(make-variable-buffer-local 'editorconfig-properties-hash)
-(put 'editorconfig-properties-hash
-     'permanent-local
-     t)
-
-(defvar editorconfig-lisp-use-default-indent nil
-  "Selectively ignore the value of indent_size for Lisp files.
-Prevents `lisp-indent-offset' from being set selectively.
-
-nil - `lisp-indent-offset' is always set normally.
-t   - `lisp-indent-offset' is never set normally
-       (always use default indent for lisps).
-number - `lisp-indent-offset' is not set only if indent_size is
-         equal to this number.  For example, if this is set to 2,
-         `lisp-indent-offset' will not be set only if indent_size is 2.")
-
-(defcustom editorconfig-override-file-local-variables t
-  "Non-nil means editorconfig will override file local variable values."
-  :type 'boolean)
-
-(defcustom editorconfig-override-dir-local-variables t
-  "Non-nil means editorconfig will override values defined in dir-locals.el ."
-  :type 'boolean)
-
-(define-error 'editorconfig-error
-              "Error thrown from editorconfig lib")
-
-(defun editorconfig-error (&rest args)
-  "Signal an `editorconfig-error'.
-Make a message by passing ARGS to `format-message'."
-  (signal 'editorconfig-error (list (apply #'format-message args))))
-
-(defun editorconfig--disabled-for-filename (filename)
-  "Return non-nil when EditorConfig is disabled for FILENAME."
-  (cl-assert (stringp filename))
-  (cl-loop for regexp in editorconfig-exclude-regexps
-           if (string-match regexp filename) return t
-           finally return nil))
-
-(defun editorconfig--disabled-for-majormode (majormode)
-  "Return non-nil when Editorconfig is disabled for MAJORMODE."
-  (cl-assert majormode)
-  (or (provided-mode-derived-p majormode 'special-mode)
-      ;; Some special modes (like `archive-mode') are not derived from
-      ;; `special-mode'
-      (eq (get majormode 'mode-class) 'special)
-      (memq majormode
-            editorconfig-exclude-modes)))
-
-(defun editorconfig-string-integer-p (string)
-  "Return non-nil if STRING represents integer."
-  (and (stringp string)
-       (string-match-p "\\`[0-9]+\\'" string)))
-
-(defun editorconfig-set-indentation-python-mode (size)
-  "Set `python-mode' indent size to SIZE."
-  (when (boundp 'python-indent-offset)
-    (setq-local python-indent-offset size))
-  ;; For https://gitlab.com/python-mode-devs/python-mode
-  (when (boundp 'py-indent-offset)
-    (setq-local py-indent-offset size)))
-
-(defun editorconfig-set-indentation-latex-mode (size)
-  "Set `latex-mode' indent size to SIZE."
-  (setq-local tex-indent-basic size)
-  (setq-local tex-indent-item size)
-  (setq-local tex-indent-arg (* 2 size))
-  ;; For AUCTeX
-  (when (boundp 'TeX-brace-indent-level)
-    (setq-local TeX-brace-indent-level size))
-  (when (boundp 'LaTeX-indent-level)
-    (setq-local LaTeX-indent-level size))
-  (when (boundp 'LaTeX-item-indent)
-    (setq-local LaTeX-item-indent (- size))))
-
-(defun editorconfig-set-indentation-lisp-mode (size)
- "Set indent size to SIZE for Lisp mode(s)."
- (when (cond ((null editorconfig-lisp-use-default-indent)  t)
-             ((eql t editorconfig-lisp-use-default-indent) nil)
-             ((numberp editorconfig-lisp-use-default-indent)
-              (not (eql size editorconfig-lisp-use-default-indent)))
-             (t t))
-   (setq-local lisp-indent-offset size)))
-
-(cl-defun editorconfig--should-set (symbol)
-  "Determine if editorconfig should set SYMBOL."
-  (display-warning '(editorconfig editorconfig--should-set)
-                   (format "symbol: %S"
-                           symbol)
-                   :debug)
-  (when (and (not editorconfig-override-file-local-variables)
-             (assq symbol file-local-variables-alist))
-    (cl-return-from editorconfig--should-set
-      nil))
-
-  (when (and (not editorconfig-override-dir-local-variables)
-             (assq symbol dir-local-variables-alist))
-    (cl-return-from editorconfig--should-set
-      nil))
-
-  t)
-
-(defun editorconfig-set-indentation (style &optional size tab_width)
-  "Set indentation type from STYLE, SIZE and TAB_WIDTH."
-  (setq size
-        (cond ((editorconfig-string-integer-p size)
-               (string-to-number size))
-              ((equal size "tab")
-               "tab")
-              (t
-               nil)))
-
-  (cond ((not (editorconfig--should-set 'tab-width))
-         nil)
-        (tab_width
-         (setq tab-width (string-to-number tab_width)))
-        ((numberp size)
-         (setq tab-width size)))
-
-  (when (equal size "tab")
-    (setq size tab-width))
-
-  (cond ((not (editorconfig--should-set 'indent-tabs-mode))
-         nil)
-        ((equal style "space")
-         (setq indent-tabs-mode nil))
-        ((equal style "tab")
-         (setq indent-tabs-mode t)))
-
-  (when size
-    (when (and (featurep 'evil)
-               (editorconfig--should-set 'evil-shift-width))
-      (setq-local evil-shift-width size))
-    (let ((parent major-mode)
-          entry)
-      ;; Find the closet parent mode of `major-mode' in
-      ;; `editorconfig-indentation-alist'.
-      (while (and (not (setq entry (assoc parent editorconfig-indentation-alist)))
-                  (setq parent (get parent 'derived-mode-parent))))
-      (when entry
-        (let ((fn-or-list (cdr entry)))
-          (cond ((functionp fn-or-list) (funcall fn-or-list size))
-                ((listp fn-or-list)
-                 (dolist (elem fn-or-list)
-                   (cond ((and (symbolp elem)
-                               (editorconfig--should-set elem))
-                          (set (make-local-variable elem) size))
-                         ((and (consp elem)
-                               (editorconfig--should-set (car elem)))
-                          (let ((spec (cdr elem)))
-                            (set (make-local-variable (car elem))
-                                 (cond ((functionp spec) (funcall spec size))
-                                       ((integerp spec) (* spec size))
-                                       (t spec))))))))))))))
-
-(defvar-local editorconfig--apply-coding-system-currently nil
-  "Used internally.")
-(put 'editorconfig--apply-coding-system-currently
-     'permanent-local
-     t)
-
-(defun editorconfig-merge-coding-systems (end-of-line charset)
-  "Return merged coding system symbol of END-OF-LINE and CHARSET."
-  (let ((eol (cond
-              ((equal end-of-line "lf") 'undecided-unix)
-              ((equal end-of-line "cr") 'undecided-mac)
-              ((equal end-of-line "crlf") 'undecided-dos)))
-        (cs (cond
-             ((equal charset "latin1") 'iso-latin-1)
-             ((equal charset "utf-8") 'utf-8)
-             ((equal charset "utf-8-bom") 'utf-8-with-signature)
-             ((equal charset "utf-16be") 'utf-16be-with-signature)
-             ((equal charset "utf-16le") 'utf-16le-with-signature))))
-    (if (and eol cs)
-        (merge-coding-systems cs eol)
-      (or eol cs))))
-
-(cl-defun editorconfig-set-coding-system-revert (end-of-line charset)
-  "Set buffer coding system by END-OF-LINE and CHARSET.
-
-This function will revert buffer when the coding-system has been changed."
-  ;; `editorconfig--advice-find-file-noselect' does not use this function
-  (let ((coding-system (editorconfig-merge-coding-systems end-of-line
-                                                          charset)))
-    (display-warning '(editorconfig editorconfig-set-coding-system-revert)
-                     (format "editorconfig-set-coding-system-revert: buffer-file-name: %S | buffer-file-coding-system: %S | coding-system: %S | apply-currently: %S"
-                             buffer-file-name
-                             buffer-file-coding-system
-                             coding-system
-                             editorconfig--apply-coding-system-currently)
-                     :debug)
-    (when (memq coding-system '(nil undecided))
-      (cl-return-from editorconfig-set-coding-system-revert))
-    (when (and buffer-file-coding-system
-               (memq buffer-file-coding-system
-                     (coding-system-aliases (merge-coding-systems coding-system
-                                                                  buffer-file-coding-system))))
-      (cl-return-from editorconfig-set-coding-system-revert))
-    (unless (file-readable-p buffer-file-name)
-      (set-buffer-file-coding-system coding-system)
-      (cl-return-from editorconfig-set-coding-system-revert))
-    (unless (memq coding-system
-                  (coding-system-aliases editorconfig--apply-coding-system-currently))
-      ;; Revert functions might call `editorconfig-apply' again
-      ;; FIXME: I suspect `editorconfig--apply-coding-system-currently'
-      ;; gymnastics is not needed now that we hook into `find-auto-coding'.
-      (unwind-protect
-          (progn
-            (setq editorconfig--apply-coding-system-currently coding-system)
-            ;; Revert without query if buffer is not modified
-            (let ((revert-without-query '(".")))
-              (revert-buffer-with-coding-system coding-system)))
-        (setq editorconfig--apply-coding-system-currently nil)))))
-
-(defun editorconfig--delete-final-newline ()
-  "Ensure the buffer does not end with a newline.
-Does nothing if the buffer is read-only."
-  (unless buffer-read-only
-    (save-excursion
-      (save-restriction
-        (widen)
-        (goto-char (point-max))
-        (while (looking-at-p "^$")
-          (delete-char -1))))))
-
-(defun editorconfig-set-trailing-nl (final-newline)
-  "Set up requiring final newline by FINAL-NEWLINE.
-
-This function will set `require-final-newline' and `mode-require-final-newline'
-to non-nil when FINAL-NEWLINE is true."
-  (pcase final-newline
-    ("true"
-     ;; keep prefs around how/when the nl is added, if set - otherwise add on save
-     (setq-local require-final-newline      (or require-final-newline t))
-     (setq-local mode-require-final-newline (or mode-require-final-newline t))
-     (remove-hook 'before-save-hook
-                  #'editorconfig--delete-final-newline t))
-
-    ("false"
-     (setq-local require-final-newline      nil)
-     (setq-local mode-require-final-newline nil)
-     (add-hook 'before-save-hook
-               #'editorconfig--delete-final-newline nil t))))
-
-(defun editorconfig--delete-trailing-whitespace ()
-  "Call `delete-trailing-whitespace' unless the buffer is read-only."
-  (unless buffer-read-only (delete-trailing-whitespace)))
-
-(defun editorconfig-set-trailing-ws (trim-trailing-ws)
-  (pcase trim-trailing-ws
-    ("true"
-     (if editorconfig-trim-whitespaces-mode
-         (funcall editorconfig-trim-whitespaces-mode 1)
-       (add-hook 'before-save-hook
-                 #'editorconfig--delete-trailing-whitespace nil t)))
-    ("false"
-     (when editorconfig-trim-whitespaces-mode
-       (funcall editorconfig-trim-whitespaces-mode 0))
-     (remove-hook 'before-save-hook
-                  #'editorconfig--delete-trailing-whitespace t))))
-
-
-(defun editorconfig-set-line-length (length)
-  "Set the max line length (`fill-column') to LENGTH."
-  (when (and (editorconfig-string-integer-p length)
-             (> (string-to-number length) 0))
-    (setq fill-column (string-to-number length))))
-
-
-(defun editorconfig--execute-editorconfig-exec (filename)
-  "Execute EditorConfig core with FILENAME and return output."
-  (if filename
-      (with-temp-buffer
-        (let ((remote (file-remote-p filename))
-              (remote-localname (file-remote-p filename
-                                               'localname)))
-          (display-warning '(editorconfig editorconfig--execute-editorconfig-exec)
-                           (format "editorconfig--execute-editorconfig-exec: filename: %S | remote: %S | remote-localname: %S"
-                                   filename
-                                   remote
-                                   remote-localname)
-                           :debug)
-          (if remote
-              (progn
-                (cd (concat remote "/"))
-                (setq filename remote-localname))
-            (cd "/")))
-        (display-warning '(editorconfig editorconfig--execute-editorconfig-exec)
-                         (format "editorconfig--execute-editorconfig-exec: default-directory: %S | filename: %S"
-                                 default-directory
-                                 filename
-                                 )
-                         :debug)
-        (if (eq 0
-                (process-file editorconfig-exec-path nil t nil filename))
-            (buffer-string)
-          (editorconfig-error (buffer-string))))
-    ""))
-
-(defun editorconfig--parse-properties (props-string)
-  "Create properties hash table from PROPS-STRING."
-  (let ((props-list (split-string props-string "\n"))
-        (properties (make-hash-table)))
-    (dolist (prop props-list properties)
-      (let ((key-val (split-string prop " *= *")))
-        (when (> (length key-val) 1)
-          (let ((key (intern (car key-val)))
-                (val (mapconcat #'identity (cdr key-val) "")))
-            (puthash key val properties)))))))
-
-(defun editorconfig-get-properties-from-exec (filename)
-  "Get EditorConfig properties of file FILENAME.
-
-This function uses value of `editorconfig-exec-path' to get properties."
-  (if (executable-find editorconfig-exec-path)
-      (editorconfig--parse-properties (editorconfig--execute-editorconfig-exec filename))
-    (editorconfig-error "Unable to find editorconfig executable")))
-
-(defun editorconfig-get-properties (filename)
-  "Get EditorConfig properties for file FILENAME.
-
-It calls `editorconfig-get-properties-from-exec' if
-`editorconfig-exec-path' is found, otherwise
-`editorconfig-core-get-properties-hash'."
-  (if (and (executable-find editorconfig-exec-path)
-           (not (file-remote-p filename)))
-      (editorconfig-get-properties-from-exec filename)
-    (require 'editorconfig-core)
-    (editorconfig-core-get-properties-hash filename)))
-
-(defun editorconfig-call-get-properties-function (filename)
-  "Call `editorconfig-get-properties-function' with FILENAME and return result.
-
-This function also removes `unset' properties and calls
-`editorconfig-hack-properties-functions'."
-  (unless (functionp editorconfig-get-properties-function)
-    (editorconfig-error "Invalid editorconfig-get-properties-function value"))
-  (if (stringp filename)
-      (setq filename (expand-file-name filename))
-    (editorconfig-error "Invalid argument: %S" filename))
-  (let ((props nil))
-    (condition-case err
-        (setq props (funcall editorconfig-get-properties-function
-                             filename))
-      (error
-       (editorconfig-error "Error from editorconfig-get-properties-function: %S"
-                           err)))
-    (cl-loop for k being the hash-keys of props using (hash-values v)
-             when (equal v "unset") do (remhash k props))
-    props))
-
-(defun editorconfig-set-local-variables (props)
-  "Set buffer variables according to EditorConfig PROPS."
-  (editorconfig-set-indentation (gethash 'indent_style props)
-                                (gethash 'indent_size props)
-                                (gethash 'tab_width props))
-  (editorconfig-set-trailing-nl (gethash 'insert_final_newline props))
-  (editorconfig-set-trailing-ws (gethash 'trim_trailing_whitespace props))
-  (editorconfig-set-line-length (gethash 'max_line_length props)))
-
-
-(defun editorconfig-major-mode-hook ()
-  "Function to run when `major-mode' has been changed.
-
-This functions does not reload .editorconfig file, just sets local variables
-again.  Changing major mode can reset these variables.
-
-This function also executes `editorconfig-after-apply-functions' functions."
-  (display-warning '(editorconfig editorconfig-major-mode-hook)
-                   (format "editorconfig-major-mode-hook: editorconfig-mode: %S, major-mode: %S, -properties-hash: %S"
-                           (and (boundp 'editorconfig-mode)
-                                editorconfig-mode)
-                           major-mode
-                           editorconfig-properties-hash)
-                   :debug)
-  (when (and (bound-and-true-p editorconfig-mode)
-             editorconfig-properties-hash)
-    (editorconfig-set-local-variables editorconfig-properties-hash)
-    (condition-case err
-        (run-hook-with-args 'editorconfig-after-apply-functions editorconfig-properties-hash)
-      (error
-       (display-warning '(editorconfig editorconfig-major-mode-hook)
-                        (format "Error while running `editorconfig-after-apply-functions': %S"
-                                err))))))
-
-;; This is a new var in Emacs≥30.
-;; We dyn-bind it in our `editorconfig--advice-find-auto-coding' advice
-;; to mimic the Emacs-30 behavior.
-(defvar auto-coding-file-name)
-
-(defun editorconfig--advice-find-auto-coding (filename &rest _args)
-  "Consult `charset' setting of EditorConfig."
-  (let ((cs (let ((auto-coding-file-name filename))
-              (editorconfig--get-coding-system))))
-    (when cs (cons cs 'EditorConfig))))
-
-(defun editorconfig--advice-find-file-noselect (f filename &rest args)
-  "Get EditorConfig properties and apply them to buffer to be visited.
-
-This function should be added as an advice function to `find-file-noselect'.
-F is that function, and FILENAME and ARGS are arguments passed to F."
-  (let ((props nil)
-        (ret nil))
-    (condition-case err
-        (when (stringp filename)
-          (setq props (editorconfig-call-get-properties-function filename)))
-      (error
-       (display-warning '(editorconfig editorconfig--advice-find-file-noselect)
-                        (format "Failed to get properties, styles will not be applied: %S"
-                                err)
-                        :warning)))
-
-    (setq ret (apply f filename args))
-
-    (condition-case err
-        (with-current-buffer ret
-          (when props
-
-            ;; NOTE: hack-properties-functions cannot affect coding-system value,
-            ;; because it has to be set before initializing buffers.
-            (condition-case err
-                (run-hook-with-args 'editorconfig-hack-properties-functions props)
-              (error
-               (display-warning '(editorconfig editorconfig-hack-properties-functions)
-                                (format "Error while running editorconfig-hack-properties-functions, abort running hook: %S"
-                                        err)
-                                :warning)))
-            (setq editorconfig-properties-hash props)
-            ;; When initializing buffer, `editorconfig-major-mode-hook'
-            ;; will be called before setting `editorconfig-properties-hash', so
-            ;; execute this explicitly here.
-            (editorconfig-set-local-variables props)
-
-            (condition-case err
-                (run-hook-with-args 'editorconfig-after-apply-functions props)
-              (error
-               (display-warning '(editorconfig editorconfig--advice-find-file-noselect)
-                                (format "Error while running `editorconfig-after-apply-functions': %S"
-                                        err))))))
-      (error
-       (display-warning '(editorconfig editorconfig--advice-find-file-noselect)
-                        (format "Error while setting variables from EditorConfig: %S" err))))
-    ret))
-
-(defvar editorconfig--getting-coding-system nil)
-
-(defun editorconfig--get-coding-system (&optional _size)
-  "Return the coding system to use according to EditorConfig.
-Meant to be used on `auto-coding-functions'."
-  (when (and (stringp auto-coding-file-name)
-             (file-name-absolute-p auto-coding-file-name)
-            ;; Don't recurse infinitely.
-            (not (member auto-coding-file-name
-                         editorconfig--getting-coding-system)))
-    (let* ((editorconfig--getting-coding-system
-            (cons auto-coding-file-name editorconfig--getting-coding-system))
-           (props (editorconfig-call-get-properties-function
-                   auto-coding-file-name)))
-      (editorconfig-merge-coding-systems (gethash 'end_of_line props)
-                                         (gethash 'charset props)))))
-
-;;;###autoload
-(define-minor-mode editorconfig-mode
-  "Toggle EditorConfig feature.
-
-To disable EditorConfig in some buffers, modify
-`editorconfig-exclude-modes' or `editorconfig-exclude-regexps'."
-  :global t
-  :lighter editorconfig-mode-lighter
-  (let ((modehooks '(prog-mode-hook
-                     text-mode-hook
-                     ;; Some modes call `kill-all-local-variables' in their init
-                     ;; code, which clears some values set by editorconfig.
-                     ;; For those modes, editorconfig-apply need to be called
-                     ;; explicitly through their hooks.
-                     rpm-spec-mode-hook)))
-    (if editorconfig-mode
-        (progn
-          (advice-add 'find-file-noselect :around #'editorconfig--advice-find-file-noselect)
-          (advice-add 'find-auto-coding :after-until
-                      #'editorconfig--advice-find-auto-coding)
-          (dolist (hook modehooks)
-            (add-hook hook
-                      #'editorconfig-major-mode-hook
-                      t)))
-      (advice-remove 'find-file-noselect #'editorconfig--advice-find-file-noselect)
-      (advice-remove 'find-auto-coding
-                     #'editorconfig--advice-find-auto-coding)
-      (dolist (hook modehooks)
-        (remove-hook hook #'editorconfig-major-mode-hook)))))
-
-
-;; (defconst editorconfig--version
-;;   (eval-when-compile
-;;     (require 'lisp-mnt)
-;;     (declare-function lm-version "lisp-mnt" nil)
-;;     (lm-version))
-;;   "EditorConfig version.")
-
-;;;###autoload
-(defun editorconfig-version (&optional show-version)
-  "Get EditorConfig version as string.
-
-If called interactively or if SHOW-VERSION is non-nil, show the
-version in the echo area and the messages buffer."
-  (interactive (list t))
-  (let ((version-full
-         (if (fboundp 'package-get-version) ;Emacs≥27
-             (package-get-version)
-           (let* ((version
-                   (with-temp-buffer
-                     (require 'find-func)
-                     (declare-function find-library-name "find-func" (library))
-                     (insert-file-contents (find-library-name "editorconfig"))
-                     (require 'lisp-mnt)
-                     (declare-function lm-version "lisp-mnt" nil)
-                     (lm-version)))
-                  (pkg (and (eval-and-compile (require 'package nil t))
-                            (cadr (assq 'editorconfig
-                                        package-alist))))
-                  (pkg-version (and pkg (package-version-join
-                                         (package-desc-version pkg)))))
-             (if (and pkg-version
-                      (not (string= version pkg-version)))
-                 (concat version "-" pkg-version)
-               version)))))
-    (when show-version
-      (message "EditorConfig Emacs v%s" version-full))
-    version-full))
-
-(provide 'editorconfig)
-;;; editorconfig.el ends here
diff --git a/elpa/editorconfig-20241027.1815/editorconfig.info b/elpa/editorconfig-20241027.1815/editorconfig.info
deleted file mode 100644 (file)
index 20341cc..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-This is editorconfig.info, produced by makeinfo version 6.8 from
-editorconfig.texi.
-
-INFO-DIR-SECTION Emacs
-START-INFO-DIR-ENTRY
-* EditorConfig: (editorconfig). EditorConfig Emacs Plugin.
-END-INFO-DIR-ENTRY
-
-\1f
-File: editorconfig.info,  Node: Top,  Next: Getting Started,  Up: (dir)
-
-1 EditorConfig Emacs Plugin
-***************************
-
-This is an EditorConfig (https://editorconfig.org) plugin for Emacs
-(https://www.gnu.org/software/emacs/).
-
-* Menu:
-
-* Getting Started::
-* Supported properties::
-* Customize::
-* Troubleshooting::
-* Submitting Bugs and Feature Requests::
-* License::
-
-\1f
-File: editorconfig.info,  Node: Getting Started,  Next: Supported properties,  Prev: Top,  Up: Top
-
-1.1 Getting Started
-===================
-
-* Menu:
-
-* packageel::
-* use-package::
-* Manual installation::
-
-\1f
-File: editorconfig.info,  Node: packageel,  Next: use-package,  Up: Getting Started
-
-1.1.1 package.el
-----------------
-
-This package is available from MELPA (https://melpa.org/#/editorconfig),
-MELPA Stable (https://stable.melpa.org/#/editorconfig) and NonGNU ELPA
-(http://elpa.nongnu.org/nongnu/editorconfig.html).  Install from these
-repositories and enable global minor-mode 'editorconfig-mode':
-
-(editorconfig-mode 1)
-
-   Normally, enabling 'editorconfig-mode' should be enough for this
-plugin to work: all other configurations are optional.  This mode sets
-up hooks so that EditorConfig properties will be loaded and applied to
-the new buffers automatically when visiting files.
-
-\1f
-File: editorconfig.info,  Node: use-package,  Next: Manual installation,  Prev: packageel,  Up: Getting Started
-
-1.1.2 use-package
------------------
-
-If you use *use-package* (https://www.emacswiki.org/emacs/UsePackage),
-add the following to your 'init.el' file:
-
-(use-package editorconfig
-  :ensure t
-  :config
-  (editorconfig-mode 1))
-
-\1f
-File: editorconfig.info,  Node: Manual installation,  Prev: use-package,  Up: Getting Started
-
-1.1.3 Manual installation
--------------------------
-
-Copy all '.el' files in this repository to '~/.emacs.d/lisp' and add the
-following:
-
-(add-to-list 'load-path "~/.emacs.d/lisp")
-(require 'editorconfig)
-(editorconfig-mode 1)
-
-\1f
-File: editorconfig.info,  Node: Supported properties,  Next: Customize,  Prev: Getting Started,  Up: Top
-
-1.2 Supported properties
-========================
-
-Current Emacs plugin coverage for EditorConfig's properties
-(https://editorconfig.org/#supported-properties):
-
-   * 'indent_style'
-   * 'indent_size'
-   * 'tab_width'
-   * 'end_of_line'
-   * 'charset'
-   * 'trim_trailing_whitespace'
-   * 'insert_final_newline = true' is supported
-   * 'insert_final_newline = false' is not enforced (as in trailing
-     newlines actually being removed automagically), we just
-     buffer-locally override any preferences that would auto-add them to
-     files '.editorconfig' marks as trailing-newline-free
-   * 'max_line_length'
-   * 'file_type_ext' (Experimental) (See below)
-   * 'file_type_emacs' (Experimental) (See below)
-   * 'root' (only used by EditorConfig core)
-
-   Not yet covered properties marked with over-strike - pull requests
-implementing missing features warmly welcomed!  Typically, you will want
-to tie these to native functionality, or the configuration of existing
-packages handling the feature.
-
-   As several packages have their own handling of, say, indentation, we
-might not yet cover some mode you use, but we try to add the ones that
-show up on our radar.
-
-* Menu:
-
-* File Type file_type_ext file_type_emacs::
-
-\1f
-File: editorconfig.info,  Node: File Type file_type_ext file_type_emacs,  Up: Supported properties
-
-1.2.1 File Type (file_type_ext, file_type_emacs)
-------------------------------------------------
-
-File-type feature is currently disabled, because this package is now
-undergoing big internal refactoring.  For those who want this
-functionality, please consider using editorconfig-custom-majormode
-(https://github.com/10sr/editorconfig-custom-majormode-el).
-
-\1f
-File: editorconfig.info,  Node: Customize,  Next: Troubleshooting,  Prev: Supported properties,  Up: Top
-
-1.3 Customize
-=============
-
-'editorconfig-emacs' provides some customize variables.
-
-   Here are some of these variables: for the full list of available
-variables, type M-x customize-group [RET] editorconfig [RET].
-
-* Menu:
-
-* editorconfig-trim-whitespaces-mode::
-* editorconfig-after-apply-functions::
-* editorconfig-hack-properties-functions::
-
-\1f
-File: editorconfig.info,  Node: editorconfig-trim-whitespaces-mode,  Next: editorconfig-after-apply-functions,  Up: Customize
-
-1.3.1 'editorconfig-trim-whitespaces-mode'
-------------------------------------------
-
-Buffer local minor-mode to use to trim trailing whitespaces.
-
-   If set, editorconfig will enable/disable this mode in accord with
-'trim_trailing_whitespace' property in '.editorconfig'.  Otherwise, use
-Emacs built-in 'delete-trailing-whitespace' function.
-
-   One possible value is 'ws-butler-mode'
-(https://github.com/lewang/ws-butler), with which only lines touched get
-trimmed.  To use it, add following to your init.el:
-
-(setq editorconfig-trim-whitespaces-mode
-      'ws-butler-mode)
-
-\1f
-File: editorconfig.info,  Node: editorconfig-after-apply-functions,  Next: editorconfig-hack-properties-functions,  Prev: editorconfig-trim-whitespaces-mode,  Up: Customize
-
-1.3.2 'editorconfig-after-apply-functions'
-------------------------------------------
-
-(Formerly 'editorconfig-custom-hooks')
-
-   A list of functions which will be called after loading common
-EditorConfig settings, when you can set some custom variables.
-
-   For example, 'web-mode' has several variables for indentation offset
-size and EditorConfig sets them at once by 'indent_size'.  You can stop
-indenting only blocks of 'web-mode' by adding following to your init.el:
-
-(add-hook 'editorconfig-after-apply-functions
-  (lambda (props) (setq web-mode-block-padding 0)))
-
-\1f
-File: editorconfig.info,  Node: editorconfig-hack-properties-functions,  Prev: editorconfig-after-apply-functions,  Up: Customize
-
-1.3.3 'editorconfig-hack-properties-functions'
-----------------------------------------------
-
-A list of functions to alter property values before applying them.
-
-   These functions will be run after loading ".editorconfig" files and
-before applying them to current buffer, so that you can alter some
-properties from ".editorconfig" before they take effect.
-
-   For example, Makefile files always use tab characters for
-indentation: you can overwrite "indent_style" property when current
-'major-mode' is 'makefile-mode':
-
-(add-hook 'editorconfig-hack-properties-functions
-          '(lambda (props)
-             (when (derived-mode-p 'makefile-mode)
-               (puthash 'indent_style "tab" props))))
-
-\1f
-File: editorconfig.info,  Node: Troubleshooting,  Next: Submitting Bugs and Feature Requests,  Prev: Customize,  Up: Top
-
-1.4 Troubleshooting
-===================
-
-Enabling 'editorconfig-mode' should be enough for normal cases.
-
-   When EditorConfig properties are not effective for unknown reason, we
-recommend first trying 'M-x editorconfig-display-current-properties'.
-
-   This command will open a new buffer and display the EditorConfig
-properties loaded for current buffer.  You can check if EditorConfig
-properties were not read for buffers at all, or they were loaded but did
-not take effect for some other reasons.
-
-* Menu:
-
-* Indentation for new major-modes::
-* Not work at all for FOO-mode!::
-
-\1f
-File: editorconfig.info,  Node: Indentation for new major-modes,  Next: Not work at all for FOO-mode!,  Up: Troubleshooting
-
-1.4.1 Indentation for new major-modes
--------------------------------------
-
-Because most Emacs major-modes have their own indentation settings, this
-plugin requires explicit support for each major-mode for 'indent_size'
-property.
-
-   By default this plugin ships with settings for many major-modes, but,
-sorry to say, it cannot be perfect.  Especially it is difficult to
-support brand-new major-modes.  Please feel free to submit issue or
-pull-request for such major-mode!
-
-   Supported major-modes and their indentation configs are defined in
-the variable 'editorconfig-indentation-alist'.
-
-\1f
-File: editorconfig.info,  Node: Not work at all for FOO-mode!,  Prev: Indentation for new major-modes,  Up: Troubleshooting
-
-1.4.2 Not work at all for FOO-mode!
------------------------------------
-
-Most cases properties are loaded just after visiting files when
-'editorconfig-mode' is enabled.  But it is known that there are
-major-modes that this mechanism does not work for and require explicit
-call of 'editorconfig-apply'.
-
-   Typically it will occur when the major-mode is not defined using
-'define-derived-mode' ('rpm-spec-mode' is an example for this).  Please
-feel free to submit issues if you find such modes!
-
-\1f
-File: editorconfig.info,  Node: Submitting Bugs and Feature Requests,  Next: License,  Prev: Troubleshooting,  Up: Top
-
-1.5 Submitting Bugs and Feature Requests
-========================================
-
-Bugs, feature requests, and other issues should be submitted to the
-issue tracker: https://github.com/editorconfig/editorconfig-emacs/issues
-
-* Menu:
-
-* Development::
-
-\1f
-File: editorconfig.info,  Node: Development,  Up: Submitting Bugs and Feature Requests
-
-1.5.1 Development
------------------
-
-Make and CMake (https://cmake.org) must be installed to run the tests
-locally:
-
-$ make check
-
-   To start a new Emacs process with current '*.el' and without loading
-user init file, run:
-
-$ make sandbox
-
-\1f
-File: editorconfig.info,  Node: License,  Prev: Submitting Bugs and Feature Requests,  Up: Top
-
-1.6 License
-===========
-
-EditorConfig Emacs Plugin is free software: you can redistribute it
-and/or modify it under the terms of the GNU General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-
-\1f
-Tag Table:
-Node: Top\7f208
-Ref: #editorconfig-emacs-plugin\7f340
-Node: Getting Started\7f590
-Ref: #getting-started\7f733
-Node: packageel\7f797
-Ref: #package.el\7f919
-Node: use-package\7f1483
-Ref: #use-package\7f1635
-Node: Manual installation\7f1823
-Ref: #manual-installation\7f1973
-Node: Supported properties\7f2148
-Ref: #supported-properties\7f2307
-Node: File Type file_type_ext file_type_emacs\7f3481
-Ref: #file-type-file_type_ext-file_type_emacs\7f3682
-Node: Customize\7f3941
-Ref: #customize\7f4078
-Node: editorconfig-trim-whitespaces-mode\7f4397
-Ref: #editorconfig-trim-whitespaces-mode\7f4613
-Node: editorconfig-after-apply-functions\7f5104
-Ref: #editorconfig-after-apply-functions\7f5367
-Node: editorconfig-hack-properties-functions\7f5853
-Ref: #editorconfig-hack-properties-functions\7f6081
-Node: Troubleshooting\7f6691
-Ref: #troubleshooting\7f6856
-Node: Indentation for new major-modes\7f7396
-Ref: #indentation-for-new-major-modes\7f7600
-Node: Not work at all for FOO-mode!\7f8116
-Ref: #not-work-at-all-for-foo-mode\7f8316
-Node: Submitting Bugs and Feature Requests\7f8738
-Ref: #submitting-bugs-and-feature-requests\7f8943
-Node: Development\7f9111
-Ref: #development\7f9238
-Node: License\7f9442
-Ref: #license\7f9565
-\1f
-End Tag Table
-
-\1f
-Local Variables:
-coding: utf-8
-End:
diff --git a/elpa/editorconfig-20250219.1528/dir b/elpa/editorconfig-20250219.1528/dir
new file mode 100644 (file)
index 0000000..3738902
--- /dev/null
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+\1f
+File: dir,     Node: Top       This is the top of the INFO tree
+
+  This (the Directory node) gives a menu of major topics.
+  Typing "q" exits, "H" lists all Info commands, "d" returns here,
+  "h" gives a primer for first-timers,
+  "mEmacs<Return>" visits the Emacs manual, etc.
+
+  In Emacs, you can click mouse button 2 on a menu item or cross reference
+  to select it.
+
+* Menu:
+
+Emacs
+* EditorConfig: (editorconfig). EditorConfig Emacs Plugin.
diff --git a/elpa/editorconfig-20250219.1528/editorconfig-autoloads.el b/elpa/editorconfig-20250219.1528/editorconfig-autoloads.el
new file mode 100644 (file)
index 0000000..11375dc
--- /dev/null
@@ -0,0 +1,136 @@
+;;; editorconfig-autoloads.el --- automatically extracted autoloads (do not edit)   -*- lexical-binding: t -*-
+;; Generated by the `loaddefs-generate' function.
+
+;; This file is part of GNU Emacs.
+
+;;; Code:
+
+(add-to-list 'load-path (or (and load-file-name (directory-file-name (file-name-directory load-file-name))) (car load-path)))
+
+
+\f
+;;; Generated autoloads from editorconfig.el
+
+(defvar editorconfig-mode nil "\
+Non-nil if Editorconfig mode is enabled.
+See the `editorconfig-mode' command
+for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `editorconfig-mode'.")
+(custom-autoload 'editorconfig-mode "editorconfig" nil)
+(autoload 'editorconfig-mode "editorconfig" "\
+Toggle EditorConfig feature.
+
+To disable EditorConfig in some buffers, modify
+`editorconfig-exclude-modes' or `editorconfig-exclude-regexps'.
+
+This is a global minor mode.  If called interactively, toggle the
+`Editorconfig mode' mode.  If the prefix argument is positive, enable
+the mode, and if it is zero or negative, disable the mode.
+
+If called from Lisp, toggle the mode if ARG is `toggle'.  Enable the
+mode if ARG is nil, omitted, or is a positive number.  Disable the mode
+if ARG is a negative number.
+
+To check whether the minor mode is enabled in the current buffer,
+evaluate `(default-value \\='editorconfig-mode)'.
+
+The mode's hook is called both when the mode is enabled and when it is
+disabled.
+
+(fn &optional ARG)" t)
+(autoload 'editorconfig-version "editorconfig" "\
+Get EditorConfig version as string.
+
+If called interactively or if SHOW-VERSION is non-nil, show the
+version in the echo area and the messages buffer.
+
+(fn &optional SHOW-VERSION)" t)
+(register-definition-prefixes "editorconfig" '("editorconfig-"))
+
+\f
+;;; Generated autoloads from editorconfig-conf-mode.el
+
+(autoload 'editorconfig-conf-mode "editorconfig-conf-mode" "\
+Major mode for editing .editorconfig files.
+
+(fn)" t)
+(add-to-list 'auto-mode-alist '("\\.editorconfig\\'" . editorconfig-conf-mode))
+(register-definition-prefixes "editorconfig-conf-mode" '("editorconfig-conf-mode-"))
+
+\f
+;;; Generated autoloads from editorconfig-core.el
+
+(autoload 'editorconfig-core-get-nearest-editorconfig "editorconfig-core" "\
+Return path to .editorconfig file that is closest to DIRECTORY.
+
+(fn DIRECTORY)")
+(autoload 'editorconfig-core-get-properties "editorconfig-core" "\
+Get EditorConfig properties for FILE.
+If FILE is not given, use currently visiting file.
+Give CONFNAME for basename of config file other than .editorconfig.
+If need to specify config format version, give CONFVERSION.
+
+This function returns an alist of properties.  Each element will
+look like (KEY . VALUE).
+
+(fn &optional FILE CONFNAME CONFVERSION)")
+(autoload 'editorconfig-core-get-properties-hash "editorconfig-core" "\
+Get EditorConfig properties for FILE.
+If FILE is not given, use currently visiting file.
+Give CONFNAME for basename of config file other than .editorconfig.
+If need to specify config format version, give CONFVERSION.
+
+This function is almost same as `editorconfig-core-get-properties', but returns
+hash object instead.
+
+(fn &optional FILE CONFNAME CONFVERSION)")
+(register-definition-prefixes "editorconfig-core" '("editorconfig-core--"))
+
+\f
+;;; Generated autoloads from editorconfig-core-handle.el
+
+(register-definition-prefixes "editorconfig-core-handle" '("editorconfig-core-handle"))
+
+\f
+;;; Generated autoloads from editorconfig-fnmatch.el
+
+(register-definition-prefixes "editorconfig-fnmatch" '("editorconfig-fnmatch-"))
+
+\f
+;;; Generated autoloads from editorconfig-tools.el
+
+(autoload 'editorconfig-apply "editorconfig-tools" "\
+Get and apply EditorConfig properties to current buffer.
+
+This function does not respect the values of `editorconfig-exclude-modes' and
+`editorconfig-exclude-regexps' and always applies available properties.
+Use `editorconfig-mode-apply' instead to make use of these variables." t)
+(autoload 'editorconfig-mode-apply "editorconfig-tools" "\
+Get and apply EditorConfig properties to current buffer.
+
+This function does nothing when the major mode is listed in
+`editorconfig-exclude-modes', or variable `buffer-file-name' matches
+any of regexps in `editorconfig-exclude-regexps'." t)
+(autoload 'editorconfig-find-current-editorconfig "editorconfig-tools" "\
+Find the closest .editorconfig file for current file." t)
+(autoload 'editorconfig-display-current-properties "editorconfig-tools" "\
+Display EditorConfig properties extracted for current buffer." t)
+(defalias 'describe-editorconfig-properties #'editorconfig-display-current-properties)
+(autoload 'editorconfig-format-buffer "editorconfig-tools" "\
+Format buffer according to .editorconfig indent_style and indent_width." t)
+\f
+;;; End of scraped data
+
+(provide 'editorconfig-autoloads)
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; no-native-compile: t
+;; coding: utf-8-emacs-unix
+;; End:
+
+;;; editorconfig-autoloads.el ends here
diff --git a/elpa/editorconfig-20250219.1528/editorconfig-conf-mode.el b/elpa/editorconfig-20250219.1528/editorconfig-conf-mode.el
new file mode 100644 (file)
index 0000000..2b4ddd4
--- /dev/null
@@ -0,0 +1,95 @@
+;;; editorconfig-conf-mode.el --- Major mode for editing .editorconfig files  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2011-2024 EditorConfig Team
+
+;; Author: EditorConfig Team <editorconfigNOSPAMgooglegroups.com>
+
+;; See
+;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
+;; or the CONTRIBUTORS file for the list of contributors.
+
+;; This file is part of EditorConfig Emacs Plugin.
+
+;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or (at your
+;; option) any later version.
+
+;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
+;; Public License for more details.
+
+;; You should have received a copy of the GNU General Public License along with
+;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Major mode for editing .editorconfig files.
+
+;;; Code:
+
+(require 'conf-mode)
+
+(defvar editorconfig-conf-mode-syntax-table
+  (let ((table (make-syntax-table conf-unix-mode-syntax-table)))
+    (modify-syntax-entry ?\; "<" table)
+    table)
+  "Syntax table in use in `editorconfig-conf-mode' buffers.")
+
+(defvar editorconfig-conf-mode-abbrev-table nil
+  "Abbrev table in use in `editorconfig-conf-mode' buffers.")
+(define-abbrev-table 'editorconfig-conf-mode-abbrev-table ())
+
+;;;###autoload
+(define-derived-mode editorconfig-conf-mode conf-unix-mode "Conf[EditorConfig]"
+  "Major mode for editing .editorconfig files."
+  (set-variable 'indent-line-function 'indent-relative)
+  (let ((key-property-list
+         '("charset"
+           "end_of_line"
+           "file_type_emacs"
+           "file_type_ext"
+           "indent_size"
+           "indent_style"
+           "insert_final_newline"
+           "max_line_length"
+           "root"
+           "tab_width"
+           "trim_trailing_whitespace"))
+        (key-value-list
+         '("unset"
+           "true"
+           "false"
+           "lf"
+           "cr"
+           "crlf"
+           "space"
+           "tab"
+           "latin1"
+           "utf-8"
+           "utf-8-bom"
+           "utf-16be"
+           "utf-16le"))
+        (font-lock-value
+         '(("^[ \t]*\\[\\(.+?\\)\\]" 1 font-lock-type-face)
+           ("^[ \t]*\\(.+?\\)[ \t]*[=:]" 1 font-lock-variable-name-face))))
+
+    ;; Highlight all key values
+    (dolist (key-value key-value-list)
+      (push `(,(format "[=:][ \t]*\\(%s\\)\\([ \t]\\|$\\)" key-value)
+              1 font-lock-constant-face)
+            font-lock-value))
+    ;; Highlight all key properties
+    (dolist (key-property key-property-list)
+      (push `(,(format "^[ \t]*\\(%s\\)[ \t]*[=:]" key-property)
+              1 font-lock-builtin-face)
+            font-lock-value))
+
+    (conf-mode-initialize "#" font-lock-value)))
+
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.editorconfig\\'" . editorconfig-conf-mode))
+
+(provide 'editorconfig-conf-mode)
+;;; editorconfig-conf-mode.el ends here
diff --git a/elpa/editorconfig-20250219.1528/editorconfig-core-handle.el b/elpa/editorconfig-20250219.1528/editorconfig-core-handle.el
new file mode 100644 (file)
index 0000000..588419f
--- /dev/null
@@ -0,0 +1,221 @@
+;;; editorconfig-core-handle.el --- Handle Class for EditorConfig File  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2011-2024  Free Software Foundation, Inc.
+
+;; Author: EditorConfig Team <editorconfigNOSPAMgooglegroups.com>
+;; Package: editorconfig
+
+;; See
+;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors or
+;; https://github.com/editorconfig/editorconfig-emacs/blob/master/CONTRIBUTORS
+;; for the list of contributors.
+
+;; This file is part of EditorConfig Emacs Plugin.
+
+;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+;; See the GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Handle structures for EditorConfig config file.  This library is used
+;; internally from editorconfig-core.el .
+
+;;; Code:
+
+(require 'cl-lib)
+(when (eval-when-compile (version< emacs-version "28.1"))
+  ;; For `string-trim'
+  (require 'subr-x))
+
+(require 'editorconfig-fnmatch)
+
+(defvar editorconfig-core-handle--cache-hash
+  (make-hash-table :test 'equal)
+  "Hash of EditorConfig filename and its `editorconfig-core-handle' instance.")
+
+(cl-defstruct editorconfig-core-handle-section
+  "Structure representing one section in a .editorconfig file.
+
+Slots:
+
+`name'
+  String of section name (glob string).
+
+`props'
+  Alist of properties: (KEY . VALUE)."
+  (name nil)
+  (props nil))
+
+(defun editorconfig-core-handle-section-get-properties (section file)
+  "Return properties alist when SECTION name match FILE.
+
+FILE should be a relative file name, relative to the directory where
+the `.editorconfig' file which has SECTION lives.
+If not match, return nil."
+  (when (editorconfig-core-handle--fnmatch-p
+         file (editorconfig-core-handle-section-name section))
+    (editorconfig-core-handle-section-props section)))
+
+(cl-defstruct editorconfig-core-handle
+  "Structure representing an .editorconfig file.
+
+Slots:
+`top-props'
+  Alist of top properties like ((\"root\" . \"true\"))
+
+`sections'
+  List of `editorconfig-core-handle-section' structure objects.
+
+`mtime'
+  Last modified time of .editorconfig file.
+
+`path'
+  Absolute path to .editorconfig file."
+  (top-props nil)
+  (sections nil)
+  (mtime nil)
+  (path nil))
+
+
+(defun editorconfig-core-handle (conf)
+  "Return EditorConfig handle for CONF, which should be a file path.
+
+If CONF does not exist return nil."
+  (when (file-readable-p conf)
+    (let ((cached (gethash conf editorconfig-core-handle--cache-hash))
+          (mtime (nth 5 (file-attributes conf))))
+      (if (and cached
+               (equal (editorconfig-core-handle-mtime cached) mtime))
+          cached
+        (let ((parsed (editorconfig-core-handle--parse-file conf)))
+          (puthash conf parsed editorconfig-core-handle--cache-hash))))))
+
+(defun editorconfig-core-handle-root-p (handle)
+  "Return non-nil if HANDLE represent root EditorConfig file.
+
+If HANDLE is nil return nil."
+  (when handle
+    (string-equal "true"
+                  (downcase (or (cdr (assoc "root"
+                                            (editorconfig-core-handle-top-props handle)))
+                                "")))))
+
+(defun editorconfig-core-handle-get-properties (handle file)
+  "Return list of alist of properties from HANDLE for FILE.
+The list returned will be ordered by the lines they appear.
+
+If HANDLE is nil return nil."
+  (declare (obsolete editorconfig-core-handle-get-properties-hash "0.8.0"))
+  (when handle
+    (let* ((dir (file-name-directory (editorconfig-core-handle-path handle)))
+           (file (file-relative-name file dir)))
+      (cl-loop for section in (editorconfig-core-handle-sections handle)
+               for props = (editorconfig-core-handle-section-get-properties
+                            section file)
+               when props collect (copy-alist props)))))
+
+
+(defun editorconfig-core-handle-get-properties-hash (handle file)
+  "Return hash of properties from HANDLE for FILE.
+
+If HANDLE is nil return nil."
+  (when handle
+    (let* ((hash (make-hash-table))
+           (dir (file-name-directory (editorconfig-core-handle-path handle)))
+           (file (file-relative-name file dir)))
+      (dolist (section (editorconfig-core-handle-sections handle))
+        (cl-loop for (key . value) in (editorconfig-core-handle-section-get-properties section file)
+                 do (puthash (intern key) value hash)))
+      hash)))
+
+(defun editorconfig-core-handle--fnmatch-p (name pattern)
+  "Return non-nil if NAME match PATTERN.
+If pattern has slash, pattern should be relative to DIR.
+
+This function is a fnmatch with a few modification for EditorConfig usage."
+  (if (string-match-p "/" pattern)
+      (let ((pattern (replace-regexp-in-string "\\`/" "" pattern)))
+        (editorconfig-fnmatch-p name pattern))
+    ;; The match is not "anchored" so it can be either in the current dir or
+    ;; in a subdir.  Contrary to Zsh patterns, editorconfig's `**/foo' does
+    ;; not match `foo', so we need to split the problem into two matches.
+    (or (editorconfig-fnmatch-p name pattern)
+        (editorconfig-fnmatch-p name (concat "**/" pattern)))))
+
+(defun editorconfig-core-handle--parse-file (conf)
+  "Parse EditorConfig file CONF.
+
+This function returns a `editorconfig-core-handle'.
+If CONF is not found return nil."
+  (when (file-readable-p conf)
+    (with-temp-buffer
+      ;; NOTE: Use this instead of insert-file-contents-literally to enable
+      ;; code conversion
+      (insert-file-contents conf)
+      (goto-char (point-min))
+      (let ((sections ())
+            (top-props nil)
+
+            ;; nil when pattern not appeared yet, "" when pattern is empty ("[]")
+            (pattern nil)
+            ;; Alist of properties for current PATTERN
+            (props ())
+
+            ;; Current line num
+            (current-line-number 1))
+        (while (not (eobp))
+          (skip-chars-forward " \t\f")
+          (cond
+           ((looking-at "\\(?:[#;].*\\)?$")
+            nil)
+
+           ;; Start of section
+           ((looking-at "\\[\\(.*\\)\\][ \t]*\\(?:[#;].*\\)?$")
+            (let ((newpattern (match-string 1)))
+              (when pattern
+                (push (make-editorconfig-core-handle-section
+                       :name pattern
+                       :props (nreverse props))
+                      sections))
+              (setq props nil)
+              (setq pattern newpattern)))
+
+           ((looking-at "\\([^=: \t][^=:]*\\)[ \t]*[=:][ \t]*\\(.*?\\)[ \t]*$")
+            (let ((key (downcase (string-trim (match-string 1))))
+                  (value (match-string 2)))
+              (if pattern
+                  (push `(,key . ,value)
+                        props)
+                (push `(,key . ,value)
+                      top-props))))
+
+           (t (error "Error while reading config file: %s:%d:\n    %s\n"
+                     conf current-line-number
+                     (buffer-substring-no-properties (line-beginning-position)
+                                                     (line-end-position)))))
+          (setq current-line-number (1+ current-line-number))
+          (goto-char (point-min))
+          (forward-line (1- current-line-number)))
+        (when pattern
+          (push (make-editorconfig-core-handle-section
+                 :name pattern
+                 :props (nreverse props))
+                sections))
+        (make-editorconfig-core-handle
+         :top-props (nreverse top-props)
+         :sections (nreverse sections)
+         :mtime (nth 5 (file-attributes conf))
+         :path conf)))))
+
+(provide 'editorconfig-core-handle)
+;;; editorconfig-core-handle.el ends here
diff --git a/elpa/editorconfig-20250219.1528/editorconfig-core.el b/elpa/editorconfig-20250219.1528/editorconfig-core.el
new file mode 100644 (file)
index 0000000..905084d
--- /dev/null
@@ -0,0 +1,182 @@
+;;; editorconfig-core.el --- EditorConfig Core library in Emacs Lisp  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2011-2024 EditorConfig Team
+
+;; Author: EditorConfig Team <editorconfigNOSPAMgooglegroups.com>
+
+;; See
+;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
+;; or the CONTRIBUTORS file for the list of contributors.
+
+;; This file is part of EditorConfig Emacs Plugin.
+
+;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or (at your
+;; option) any later version.
+
+;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
+;; Public License for more details.
+
+;; You should have received a copy of the GNU General Public License along with
+;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This library is one implementation of EditorConfig Core, which parses
+;; .editorconfig files and returns properties for given files.
+;; This can be used in place of, for example, editorconfig-core-c.
+
+
+;; Use from EditorConfig Emacs Plugin
+
+;; Emacs plugin (v0.5 or later) can utilize this implementation.
+;; By default, the plugin first search for any EditorConfig executable,
+;; and fallback to this library if not found.
+;; If you always want to use this library, add following lines to your init.el:
+
+;;     (setq editorconfig-get-properties-function
+;;           'editorconfig-core-get-properties-hash)
+
+
+;; Functions
+
+;; editorconfig-core-get-properties (&optional file confname confversion)
+
+;; Get EditorConfig properties for FILE.
+
+;; If FILE is not given, use currently visiting file.
+;; Give CONFNAME for basename of config file other than .editorconfig.
+;; If need to specify config format version, give CONFVERSION.
+
+;; This functions returns alist of properties.  Each element will look like
+;; (KEY . VALUE) .
+
+
+;; editorconfig-core-get-properties-hash (&optional file confname confversion)
+
+;; Get EditorConfig properties for FILE.
+
+;; This function is almost same as `editorconfig-core-get-properties', but
+;; returns hash object instead.
+
+;;; Code:
+
+(require 'cl-lib)
+
+(require 'editorconfig-core-handle)
+
+(eval-when-compile
+  (require 'subr-x))
+
+
+(defun editorconfig-core--get-handles (dir confname &optional result)
+  "Get list of EditorConfig handlers for DIR from CONFNAME.
+
+In the resulting list, the handle for root config file comes first, and the
+nearest comes last.
+The list may contains nil when no file was found for directories.
+RESULT is used internally and normally should not be used."
+  (setq dir (expand-file-name dir))
+  (let ((handle (editorconfig-core-handle (concat (file-name-as-directory dir)
+                                                  confname)))
+        (parent (file-name-directory (directory-file-name dir))))
+    (if (or (string= parent dir)
+            (and handle (editorconfig-core-handle-root-p handle)))
+        (cl-remove-if-not 'identity (cons handle result))
+      (editorconfig-core--get-handles parent
+                                      confname
+                                      (cons handle result)))))
+
+;;;###autoload
+(defun editorconfig-core-get-nearest-editorconfig (directory)
+  "Return path to .editorconfig file that is closest to DIRECTORY."
+  (when-let* ((handle (car (last
+                           (editorconfig-core--get-handles directory
+                                                           ".editorconfig")))))
+    (editorconfig-core-handle-path handle)))
+
+;;;###autoload
+(defun editorconfig-core-get-properties (&optional file confname confversion)
+  "Get EditorConfig properties for FILE.
+If FILE is not given, use currently visiting file.
+Give CONFNAME for basename of config file other than .editorconfig.
+If need to specify config format version, give CONFVERSION.
+
+This function returns an alist of properties.  Each element will
+look like (KEY . VALUE)."
+  (let ((hash (editorconfig-core-get-properties-hash file confname confversion))
+        (result nil))
+    (maphash (lambda (key value)
+               (add-to-list 'result (cons (symbol-name key) value)))
+             hash)
+    (sort result (lambda (x y) (string< (car x) (car y))))))
+
+(defun editorconfig-core--hash-merge (into update)
+  "Merge two hashes INTO and UPDATE.
+
+This is a destructive function, hash INTO will be modified.
+When the same key exists in both two hashes, values of UPDATE takes precedence."
+  (maphash (lambda (key value) (puthash key value into)) update)
+  into)
+
+;;;###autoload
+(defun editorconfig-core-get-properties-hash (&optional file confname confversion)
+  "Get EditorConfig properties for FILE.
+If FILE is not given, use currently visiting file.
+Give CONFNAME for basename of config file other than .editorconfig.
+If need to specify config format version, give CONFVERSION.
+
+This function is almost same as `editorconfig-core-get-properties', but returns
+hash object instead."
+  (setq file
+        (expand-file-name (or file
+                              buffer-file-name
+                              (error "FILE is not given and `buffer-file-name' is nil"))))
+  (setq confname (or confname ".editorconfig"))
+  (setq confversion (or confversion "0.12.0"))
+  (let ((result (make-hash-table)))
+    (dolist (handle (editorconfig-core--get-handles (file-name-directory file)
+                                                    confname))
+      (editorconfig-core--hash-merge result
+                                     (editorconfig-core-handle-get-properties-hash handle
+                                                                                   file)))
+
+    ;; Downcase known boolean values
+    (dolist (key '( end_of_line indent_style indent_size insert_final_newline
+                    trim_trailing_whitespace charset))
+      (when-let* ((val (gethash key result)))
+        (puthash key (downcase val) result)))
+
+    ;; Add indent_size property
+    (let ((v-indent-size (gethash 'indent_size result))
+          (v-indent-style (gethash 'indent_style result)))
+      (when (and (not v-indent-size)
+                 (string= v-indent-style "tab")
+                 ;; If VERSION < 0.9.0, indent_size should have no default value
+                 (version<= "0.9.0"
+                            confversion))
+        (puthash 'indent_size
+                 "tab"
+                 result)))
+    ;; Add tab_width property
+    (let ((v-indent-size (gethash 'indent_size result))
+          (v-tab-width (gethash 'tab_width result)))
+      (when (and v-indent-size
+                 (not v-tab-width)
+                 (not (string= v-indent-size "tab")))
+        (puthash 'tab_width v-indent-size result)))
+    ;; Update indent-size property
+    (let ((v-indent-size (gethash 'indent_size result))
+          (v-tab-width (gethash 'tab_width result)))
+      (when (and v-indent-size
+                 v-tab-width
+                 (string= v-indent-size "tab"))
+        (puthash 'indent_size v-tab-width result)))
+
+    result))
+
+(provide 'editorconfig-core)
+;;; editorconfig-core.el ends here
diff --git a/elpa/editorconfig-20250219.1528/editorconfig-fnmatch.el b/elpa/editorconfig-20250219.1528/editorconfig-fnmatch.el
new file mode 100644 (file)
index 0000000..a3edfc3
--- /dev/null
@@ -0,0 +1,278 @@
+;;; editorconfig-fnmatch.el --- Glob pattern matching  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2011-2024  Free Software Foundation, Inc.
+
+;; Author: EditorConfig Team <editorconfigNOSPAMgooglegroups.com>
+;; Package: editorconfig
+
+;; See
+;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors or
+;; https://github.com/editorconfig/editorconfig-emacs/blob/master/CONTRIBUTORS
+;; for the list of contributors.
+
+;; This file is part of EditorConfig Emacs Plugin.
+
+;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+;; See the GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; editorconfig-fnmatch.el provides a fnmatch implementation with a few
+;; extensions.
+;; The main usage of this library is glob pattern matching for EditorConfig, but
+;; it can also act solely.
+
+;; editorconfig-fnmatch-p (name pattern)
+
+;; Test whether NAME match PATTERN.
+
+;; PATTERN should be a shell glob pattern, and some zsh-like wildcard matchings
+;; can be used:
+
+;; *           Matches any string of characters, except path separators (/)
+;; **          Matches any string of characters
+;; ?           Matches any single character
+;; [name]      Matches any single character in name
+;; [^name]     Matches any single character not in name
+;; {s1,s2,s3}  Matches any of the strings given (separated by commas)
+;; {min..max}  Matches any number between min and max
+
+
+;; This library is a port from editorconfig-core-py library.
+;; https://github.com/editorconfig/editorconfig-core-py/blob/master/editorconfig/fnmatch.py
+
+;;; Code:
+
+(require 'cl-lib)
+
+(defvar editorconfig-fnmatch--cache-hashtable
+  nil
+  "Cache of shell pattern and its translation.")
+;; Clear cache on file reload
+(setq editorconfig-fnmatch--cache-hashtable
+      (make-hash-table :test 'equal))
+
+
+(defconst editorconfig-fnmatch--left-brace-regexp
+  "\\(^\\|[^\\]\\){"
+  "Regular expression for left brace ({).")
+
+(defconst editorconfig-fnmatch--right-brace-regexp
+  "\\(^\\|[^\\]\\)}"
+  "Regular expression for right brace (}).")
+
+
+(defconst editorconfig-fnmatch--numeric-range-regexp
+  "\\([+-]?[0-9]+\\)\\.\\.\\([+-]?[0-9]+\\)"
+  "Regular expression for numeric range (like {-3..+3}).")
+
+(defun editorconfig-fnmatch--match-num (regexp string)
+  "Return how many times REGEXP is found in STRING."
+  (let ((num 0))
+    ;; START arg does not work as expected in this case
+    (while (string-match regexp string)
+      (setq num (1+ num)
+            string (substring string (match-end 0))))
+    num))
+
+(defun editorconfig-fnmatch-p (string pattern)
+  "Test whether STRING match PATTERN.
+
+Matching ignores case if `case-fold-search' is non-nil.
+
+PATTERN should be a shell glob pattern, and some zsh-like wildcard matchings can
+be used:
+
+*           Matches any string of characters, except path separators (/)
+**          Matches any string of characters
+?           Matches any single character
+[name]      Matches any single character in name
+[^name]     Matches any single character not in name
+{s1,s2,s3}  Matches any of the strings given (separated by commas)
+{min..max}  Matches any number between min and max"
+  (string-match (editorconfig-fnmatch-translate pattern)
+                string))
+
+;;(editorconfig-fnmatch-translate "{a,{-3..3}}.js")
+;;(editorconfig-fnmatch-p "1.js" "{a,{-3..3}}.js")
+
+(defun editorconfig-fnmatch-translate (pattern)
+  "Translate a shell PATTERN to a regular expression.
+
+Translation result will be cached, so same translation will not be done twice."
+  (let ((cached (gethash pattern
+                         editorconfig-fnmatch--cache-hashtable)))
+    (or cached
+        (puthash pattern
+                 (editorconfig-fnmatch--do-translate pattern)
+                 editorconfig-fnmatch--cache-hashtable))))
+
+
+(defun editorconfig-fnmatch--do-translate (pattern &optional nested)
+  "Translate a shell PATTERN to a regular expression.
+
+Set NESTED to t when this function is called from itself.
+
+This function is called from `editorconfig-fnmatch-translate', when no cached
+translation is found for PATTERN."
+  (let ((index 0)
+        (length (length pattern))
+        (brace-level 0)
+        (in-brackets nil)
+        ;; List of strings of resulting regexp, in reverse order.
+        (result ())
+        (is-escaped nil)
+        (matching-braces (= (editorconfig-fnmatch--match-num
+                             editorconfig-fnmatch--left-brace-regexp
+                             pattern)
+                            (editorconfig-fnmatch--match-num
+                             editorconfig-fnmatch--right-brace-regexp
+                             pattern)))
+
+        current-char
+        pos
+        has-slash
+        has-comma
+        num-range)
+
+    (while (< index length)
+      (if (and (not is-escaped)
+               (string-match "[^]\\*?[{},/-]+"
+                             ;;(string-match "[^]\\*?[{},/\\-]+" "?.a")
+                             pattern
+                             index)
+               (eq index (match-beginning 0)))
+          (progn
+            (push (regexp-quote (match-string 0 pattern)) result)
+            (setq index (match-end 0)
+                  is-escaped nil))
+
+        (setq current-char (aref pattern index)
+              index (1+ index))
+
+        (push
+         (cl-case current-char
+           (?*
+            (setq pos index)
+            (if (and (< pos length)
+                     (= (aref pattern pos) ?*))
+                ".*"
+              "[^/]*"))
+
+           (?? "[^/]")
+
+           (?\[
+            (if in-brackets
+                "\\["
+              (if (= (aref pattern index) ?/)
+                  ;; Slash after an half-open bracket
+                  (progn
+                    (setq index (+ index 1))
+                    "\\[/")
+                (setq pos index
+                      has-slash nil)
+                (while (and (< pos length)
+                            (not (= (aref pattern pos) ?\]))
+                            (not has-slash))
+                  (if (and (= (aref pattern pos) ?/)
+                           (not (= (aref pattern (- pos 1)) ?\\)))
+                      (setq has-slash t)
+                    (setq pos (1+ pos))))
+                (if has-slash
+                    (let ((content (substring pattern index (1+ pos))))
+                      (setq index (+ pos 2))
+                      (concat "\\[" content "\\]"))
+                  (setq in-brackets t)
+                  (if (and (< index length)
+                           (memq (aref pattern index)
+                                 '(?! ?^)))
+                      (progn
+                        (setq index (1+ index))
+                        "[^")
+                    "[")))))
+
+           (?- (if in-brackets "-" "\\-"))
+
+           (?\] (setq in-brackets nil) "]")
+
+           (?\{
+            (setq pos index
+                  has-comma nil)
+            (while (and (or (and (< pos length)
+                                 (not (= (aref pattern pos) ?})))
+                            is-escaped)
+                        (not has-comma))
+              (if (and (eq (aref pattern pos) ?,)
+                       (not is-escaped))
+                  (setq has-comma t)
+                (setq is-escaped (and (eq (aref pattern pos)
+                                          ?\\)
+                                      (not is-escaped))
+                      pos (1+ pos))))
+            (if (and (not has-comma)
+                     (< pos length))
+                (let ((pattern-sub (substring pattern index pos)))
+                  (setq num-range (string-match
+                                   editorconfig-fnmatch--numeric-range-regexp
+                                   pattern-sub))
+                  (setq index (1+ pos))
+                  (if num-range
+                      (let ((number-start (string-to-number
+                                           (match-string 1 pattern-sub)))
+                            (number-end (string-to-number
+                                         (match-string 2 pattern-sub))))
+                        (regexp-opt
+                         (mapcar #'number-to-string
+                                 (cl-loop for i from number-start to number-end
+                                          collect i))))
+                    (let ((inner (editorconfig-fnmatch--do-translate
+                                  pattern-sub t)))
+                      (format "{%s}" inner))))
+              (if matching-braces
+                  (progn
+                    (setq brace-level (1+ brace-level))
+                    "\\(?:")
+                "{")))
+
+           (?,
+            (if (and (> brace-level 0)
+                     (not is-escaped))
+                "\\|" "\\,"))
+
+           (?\}
+            (if (and (> brace-level 0)
+                     (not is-escaped))
+                (progn
+                  (setq brace-level (- brace-level 1))
+                  "\\)")
+              "}"))
+
+           (?/
+            (if (and (<= (+ index 3) (length pattern))
+                     (string= (substring pattern index (+ index 3)) "**/"))
+                (progn
+                  (setq index (+ index 3))
+                  "\\(?:/\\|/.*/\\)")
+              "/"))
+
+           (?\\ (when is-escaped "\\\\"))
+           (t (regexp-quote (char-to-string current-char))))
+         result)
+
+        (setq is-escaped (and (= current-char ?\\) (not is-escaped)))))
+    (unless nested
+      (setq result `("\\'" ,@result "\\`")))
+    (apply #'concat (reverse result))))
+
+(provide 'editorconfig-fnmatch)
+;;; editorconfig-fnmatch.el ends here
diff --git a/elpa/editorconfig-20250219.1528/editorconfig-pkg.el b/elpa/editorconfig-20250219.1528/editorconfig-pkg.el
new file mode 100644 (file)
index 0000000..a24ff20
--- /dev/null
@@ -0,0 +1,10 @@
+;; -*- no-byte-compile: t; lexical-binding: nil -*-
+(define-package "editorconfig" "20250219.1528"
+  "EditorConfig Emacs Plugin."
+  '((emacs "27.2"))
+  :url "https://github.com/editorconfig/editorconfig-emacs#readme"
+  :commit "1a9942746cf5b10daae8962f380b5f2a459086f3"
+  :revdesc "1a9942746cf5"
+  :keywords '("convenience" "editorconfig")
+  :authors '(("EditorConfig Team" . "editorconfigNOSPAMgooglegroups.com"))
+  :maintainers '(("EditorConfig Team" . "editorconfigNOSPAMgooglegroups.com")))
diff --git a/elpa/editorconfig-20250219.1528/editorconfig-tools.el b/elpa/editorconfig-20250219.1528/editorconfig-tools.el
new file mode 100644 (file)
index 0000000..1680889
--- /dev/null
@@ -0,0 +1,133 @@
+;;; editorconfig-tools.el --- Editorconfig tools   -*- lexical-binding: t -*-
+
+;; Copyright (C) 2011-2024 EditorConfig Team
+
+;; Author: EditorConfig Team <editorconfigNOSPAMgooglegroups.com>
+
+;; See
+;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
+;; or the CONTRIBUTORS file for the list of contributors.
+
+;; This file is part of EditorConfig Emacs Plugin.
+
+;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or (at your
+;; option) any later version.
+
+;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
+;; Public License for more details.
+
+;; You should have received a copy of the GNU General Public License along with
+;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Some utility commands for users, not used from editorconfig-mode.
+
+;;; Code:
+
+(require 'cl-lib)
+
+(eval-when-compile
+  (require 'subr-x))
+
+
+(require 'editorconfig)
+
+;;;###autoload
+(defun editorconfig-apply ()
+  "Get and apply EditorConfig properties to current buffer.
+
+This function does not respect the values of `editorconfig-exclude-modes' and
+`editorconfig-exclude-regexps' and always applies available properties.
+Use `editorconfig-mode-apply' instead to make use of these variables."
+  (interactive)
+  (when buffer-file-name
+    (condition-case err
+        (progn
+          (let ((props (editorconfig-call-get-properties-function buffer-file-name)))
+            (condition-case err
+                (run-hook-with-args 'editorconfig-hack-properties-functions props)
+              (error
+               (display-warning '(editorconfig editorconfig-hack-properties-functions)
+                                (format "Error while running editorconfig-hack-properties-functions, abort running hook: %S"
+                                        err)
+                                :warning)))
+            (setq editorconfig-properties-hash props)
+            (editorconfig-set-local-variables props)
+            (editorconfig-set-coding-system-revert
+             (gethash 'end_of_line props)
+             (gethash 'charset props))
+            (condition-case err
+                (run-hook-with-args 'editorconfig-after-apply-functions props)
+              (error
+               (display-warning '(editorconfig editorconfig-after-apply-functions)
+                                (format "Error while running editorconfig-after-apply-functions, abort running hook: %S"
+                                        err)
+                                :warning)))))
+      (error
+       (display-warning '(editorconfig editorconfig-apply)
+                        (format "Error in editorconfig-apply, styles will not be applied: %S" err)
+                        :error)))))
+
+;;;###autoload
+(defun editorconfig-mode-apply ()
+  "Get and apply EditorConfig properties to current buffer.
+
+This function does nothing when the major mode is listed in
+`editorconfig-exclude-modes', or variable `buffer-file-name' matches
+any of regexps in `editorconfig-exclude-regexps'."
+  (interactive)
+  (when (and major-mode
+             (not (editorconfig--disabled-for-majormode major-mode))
+             buffer-file-name
+             (not (editorconfig--disabled-for-filename buffer-file-name)))
+    (editorconfig-apply)))
+
+
+;;;###autoload
+(defun editorconfig-find-current-editorconfig ()
+  "Find the closest .editorconfig file for current file."
+  (interactive)
+  (eval-and-compile (require 'editorconfig-core))
+  (when-let* ((file (editorconfig-core-get-nearest-editorconfig
+                    default-directory)))
+    (find-file file)))
+
+;;;###autoload
+(defun editorconfig-display-current-properties ()
+  "Display EditorConfig properties extracted for current buffer."
+  (interactive)
+  (if editorconfig-properties-hash
+      (let ((buf (get-buffer-create "*EditorConfig Properties*"))
+            (file buffer-file-name)
+            (props editorconfig-properties-hash))
+        (with-current-buffer buf
+          (erase-buffer)
+          (insert (format "# EditorConfig for %s\n" file))
+          (maphash (lambda (k v)
+                     (insert (format "%S = %s\n" k v)))
+                   props))
+        (display-buffer buf))
+    (message "Properties are not applied to current buffer yet.")
+    nil))
+;;;###autoload
+(defalias 'describe-editorconfig-properties
+  #'editorconfig-display-current-properties)
+
+;;;###autoload
+(defun editorconfig-format-buffer()
+  "Format buffer according to .editorconfig indent_style and indent_width."
+  (interactive)
+  (when (string= (gethash 'indent_style editorconfig-properties-hash) "tab")
+    (tabify (point-min) (point-max)))
+  (when (string= (gethash 'indent_style editorconfig-properties-hash) "space")
+    (untabify (point-min) (point-max)))
+  (indent-region (point-min) (point-max)))
+
+
+(provide 'editorconfig-tools)
+;;; editorconfig-tools.el ends here
diff --git a/elpa/editorconfig-20250219.1528/editorconfig.el b/elpa/editorconfig-20250219.1528/editorconfig.el
new file mode 100644 (file)
index 0000000..c734dd6
--- /dev/null
@@ -0,0 +1,908 @@
+;;; editorconfig.el --- EditorConfig Emacs Plugin  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2011-2024 EditorConfig Team
+
+;; Author: EditorConfig Team <editorconfigNOSPAMgooglegroups.com>
+;; Package-Version: 20250219.1528
+;; Package-Revision: 1a9942746cf5
+;; URL: https://github.com/editorconfig/editorconfig-emacs#readme
+;; Package-Requires: ((emacs "27.2"))
+;; Keywords: convenience editorconfig
+
+;; See
+;; https://github.com/editorconfig/editorconfig-emacs/graphs/contributors
+;; or the CONTRIBUTORS file for the list of contributors.
+
+;; This file is part of EditorConfig Emacs Plugin.
+
+;; EditorConfig Emacs Plugin is free software: you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or (at your
+;; option) any later version.
+
+;; EditorConfig Emacs Plugin is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
+;; Public License for more details.
+
+;; You should have received a copy of the GNU General Public License along with
+;; EditorConfig Emacs Plugin. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; EditorConfig helps developers define and maintain consistent
+;; coding styles between different editors and IDEs.
+
+;; The EditorConfig project consists of a file format for defining
+;; coding styles and a collection of text editor plugins that enable
+;; editors to read the file format and adhere to defined styles.
+;; EditorConfig files are easily readable and they work nicely with
+;; version control systems.
+
+;;; Code:
+
+(require 'cl-lib)
+
+(eval-when-compile (require 'subr-x))
+(defvar tex-indent-basic)
+(defvar tex-indent-item)
+(defvar tex-indent-arg)
+(defvar evil-shift-width)
+
+(require 'editorconfig-core)
+
+(defgroup editorconfig nil
+  "EditorConfig Emacs Plugin.
+
+EditorConfig helps developers define and maintain consistent
+coding styles between different editors and IDEs."
+  :tag "EditorConfig"
+  :prefix "editorconfig-"
+  :group 'tools)
+
+(define-obsolete-variable-alias
+  'edconf-exec-path
+  'editorconfig-exec-path
+  "0.5")
+(defcustom editorconfig-exec-path
+  "editorconfig"
+  "Path to EditorConfig executable.
+
+Used by `editorconfig--execute-editorconfig-exec'."
+  :type 'string)
+
+(define-obsolete-variable-alias
+  'edconf-get-properties-function
+  'editorconfig-get-properties-function
+  "0.5")
+(defcustom editorconfig-get-properties-function
+  'editorconfig-core-get-properties-hash
+  "A function which gets EditorConfig properties for specified file.
+
+This function will be called with one argument, full path of the target file,
+and should return a hash object containing properties, or nil if any core
+program is not available.  Keys of this hash should be symbols of properties,
+and values should be strings of their values.
+
+
+For example, if you always want to use built-in core library instead
+of any EditorConfig executable to get properties, add following to
+your init.el:
+
+  (set-variable \\='editorconfig-get-properties-function
+                #\\='editorconfig-core-get-properties-hash)
+
+Possible known values are:
+
+* `editorconfig-core-get-properties-hash' (default)
+  * Always use built-in Emacs-Lisp implementation to get properties
+* `editorconfig-get-properties'
+  * Use `editorconfig-get-properties-from-exec' when
+    `editorconfig-exec-path' executable is found, otherwise
+    use `editorconfig-core-get-properties-hash'
+* `editorconfig-get-properties-from-exec'
+  * Get properties by executing EditorConfig executable"
+  :type 'function)
+
+(defcustom editorconfig-mode-lighter " EditorConfig"
+  "Command `editorconfig-mode' lighter string."
+  :type 'string)
+
+(define-obsolete-variable-alias
+  'edconf-custom-hooks
+  'editorconfig-after-apply-functions
+  "0.5")
+(define-obsolete-variable-alias
+  'editorconfig-custom-hooks
+  'editorconfig-after-apply-functions
+  "0.7.14")
+(defcustom editorconfig-after-apply-functions ()
+  "A list of functions after loading common EditorConfig settings.
+
+Each element in this list is a hook function.  This hook function
+takes one parameter, which is a property hash table.  The value
+of properties can be obtained through gethash function.
+
+The hook does not have to be coding style related; you can add
+whatever functionality you want.  For example, the following is
+an example to add a new property emacs_linum to decide whether to
+show line numbers on the left:
+
+  (add-hook \\='editorconfig-after-apply-functions
+    \\='(lambda (props)
+       (let ((show-line-num (gethash \\='emacs_linum props)))
+         (cond ((equal show-line-num \"true\") (linum-mode 1))
+           ((equal show-line-num \"false\") (linum-mode 0))))))
+
+This hook will be run even when there are no matching sections in
+\".editorconfig\", or no \".editorconfig\" file was found at all."
+  :type 'hook)
+
+(defcustom editorconfig-hack-properties-functions ()
+  "A list of function to alter property values before applying them.
+
+These functions will be run after loading \".editorconfig\" files and before
+applying them to current buffer, so that you can alter some properties from
+\".editorconfig\" before they take effect.
+\(Since 2021/08/30 (v0.9.0): Buffer coding-systems are set before running
+this functions, so this variable cannot be used to change coding-systems.)
+
+For example, Makefiles always use tab characters for indentation: you can
+overwrite \"indent_style\" property when current `major-mode' is a
+`makefile-mode' with following code:
+
+  (add-hook \\='editorconfig-hack-properties-functions
+            \\='(lambda (props)
+               (when (derived-mode-p \\='makefile-mode)
+                 (puthash \\='indent_style \"tab\" props))))
+
+This hook will be run even when there are no matching sections in
+\".editorconfig\", or no \".editorconfig\" file was found at all."
+  :type 'hook)
+(make-obsolete-variable 'editorconfig-hack-properties-functions
+                        "Using `editorconfig-after-apply-functions' instead is recommended,
+    because since 2021/08/30 (v0.9.0) this variable cannot support all properties:
+    charset values will be referenced before running this hook."
+                        "v0.9.0")
+
+(define-obsolete-variable-alias
+  'edconf-indentation-alist
+  'editorconfig-indentation-alist
+  "0.5")
+(defcustom editorconfig-indentation-alist
+  ;; For contributors: Sort modes in alphabetical order
+  '((ada-mode ada-indent)
+    (ada-ts-mode ada-ts-mode-indent-offset)
+    (apache-mode apache-indent-level)
+    (awk-mode c-basic-offset)
+    (bash-ts-mode sh-basic-offset
+                  sh-indentation)
+    (bpftrace-mode c-basic-offset)
+    (c++-mode c-basic-offset)
+    (c++-ts-mode c-basic-offset
+                 c-ts-mode-indent-offset)
+    (c-mode c-basic-offset)
+    (c-ts-mode c-basic-offset
+               c-ts-mode-indent-offset)
+    (cmake-mode cmake-tab-width)
+    (cmake-ts-mode cmake-tab-width
+                   cmake-ts-mode-indent-offset)
+    (coffee-mode coffee-tab-width)
+    (cperl-mode cperl-indent-level)
+    (crystal-mode crystal-indent-level)
+    (csharp-mode c-basic-offset)
+    (csharp-ts-mode c-basic-offset
+                    csharp-ts-mode-indent-offset)
+    (css-mode css-indent-offset)
+    (css-ts-mode css-indent-offset)
+    (d-mode c-basic-offset)
+    (elixir-ts-mode elixir-ts-indent-offset)
+    (emacs-lisp-mode . editorconfig-set-indentation-lisp-mode)
+    (enh-ruby-mode enh-ruby-indent-level)
+    (erlang-mode erlang-indent-level)
+    (ess-mode ess-indent-offset)
+    (f90-mode f90-associate-indent
+              f90-continuation-indent
+              f90-critical-indent
+              f90-do-indent
+              f90-if-indent
+              f90-program-indent
+              f90-type-indent)
+    (feature-mode feature-indent-offset
+                  feature-indent-level)
+    (fsharp-mode fsharp-continuation-offset
+                 fsharp-indent-level
+                 fsharp-indent-offset)
+    (gdscript-mode gdscript-indent-offset)
+    (go-ts-mode go-ts-mode-indent-offset)
+    (gpr-mode gpr-indent)
+    (gpr-ts-mode gpr-ts-mode-indent-offset)
+    (graphql-mode graphql-indent-level)
+    (groovy-mode groovy-indent-offset)
+    (haskell-mode haskell-indent-spaces
+                  haskell-indent-offset
+                  haskell-indentation-layout-offset
+                  haskell-indentation-left-offset
+                  haskell-indentation-starter-offset
+                  haskell-indentation-where-post-offset
+                  haskell-indentation-where-pre-offset
+                  shm-indent-spaces)
+    (haxor-mode haxor-tab-width)
+    (hcl-mode hcl-indent-level)
+    (html-ts-mode html-ts-mode-indent-offset)
+    (idl-mode c-basic-offset)
+    (jade-mode jade-tab-width)
+    (java-mode c-basic-offset)
+    (java-ts-mode c-basic-offset
+                  java-ts-mode-indent-offset)
+    (js-mode js-indent-level)
+    (js-ts-mode js-indent-level)
+    (js-jsx-mode js-indent-level sgml-basic-offset)
+    (js2-mode js2-basic-offset)
+    (js2-jsx-mode js2-basic-offset sgml-basic-offset)
+    (js3-mode js3-indent-level)
+    (json-mode js-indent-level)
+    (json-ts-mode json-ts-mode-indent-offset)
+    (jsonian-mode jsonian-default-indentation)
+    (julia-mode julia-indent-offset)
+    (kotlin-mode kotlin-tab-width)
+    (kotlin-ts-mode kotlin-ts-mode-indent-offset)
+    (latex-mode . editorconfig-set-indentation-latex-mode)
+    (lisp-mode . editorconfig-set-indentation-lisp-mode)
+    (livescript-mode livescript-tab-width)
+    (lua-mode lua-indent-level)
+    (lua-ts-mode lua-ts-indent-offset)
+    (magik-mode magik-indent-level)
+    (magik-ts-mode magik-indent-level)
+    (matlab-mode matlab-indent-level)
+    (meson-mode meson-indent-basic)
+    (mips-mode mips-tab-width)
+    (mustache-mode mustache-basic-offset)
+    (nasm-mode nasm-basic-offset)
+    (nginx-mode nginx-indent-level)
+    (nxml-mode nxml-child-indent (nxml-attribute-indent . 2))
+    (objc-mode c-basic-offset)
+    (octave-mode octave-block-offset)
+    (perl-mode perl-indent-level)
+    ;; No need to change `php-mode-coding-style' value for php-mode
+    ;; since we run editorconfig later than it resets `c-basic-offset'.
+    ;; See https://github.com/editorconfig/editorconfig-emacs/issues/116
+    ;; for details.
+    (php-mode c-basic-offset)
+    (php-ts-mode php-ts-mode-indent-offset)
+    (pike-mode c-basic-offset)
+    (protobuf-mode c-basic-offset)
+    (ps-mode ps-mode-tab)
+    (pug-mode pug-tab-width)
+    (puppet-mode puppet-indent-level)
+    (python-mode . editorconfig-set-indentation-python-mode)
+    (python-ts-mode . editorconfig-set-indentation-python-mode)
+    (rjsx-mode js-indent-level sgml-basic-offset)
+    (ruby-mode ruby-indent-level)
+    (ruby-ts-mode ruby-indent-level)
+    (rust-mode rust-indent-offset)
+    (rust-ts-mode rust-indent-offset
+                  rust-ts-mode-indent-offset)
+    (rustic-mode rustic-indent-offset)
+    (scala-mode scala-indent:step)
+    (scss-mode css-indent-offset)
+    (sgml-mode sgml-basic-offset)
+    (sh-mode sh-basic-offset sh-indentation)
+    (slim-mode slim-indent-offset)
+    (sml-mode sml-indent-level)
+    (svelte-mode svelte-basic-offset)
+    (swift-mode swift-mode:basic-offset)
+    (terra-mode terra-indent-level)
+    (tcl-mode tcl-indent-level
+              tcl-continued-indent-level)
+    (templ-ts-mode go-ts-mode-indent-offset js-indent-level)
+    (toml-ts-mode toml-ts-mode-indent-offset)
+    (typescript-mode typescript-indent-level)
+    (typescript-ts-base-mode typescript-ts-mode-indent-offset)
+    (verilog-mode verilog-indent-level
+                  verilog-indent-level-behavioral
+                  verilog-indent-level-declaration
+                  verilog-indent-level-module
+                  verilog-cexp-indent
+                  verilog-case-indent)
+    (web-mode (web-mode-indent-style . (lambda (size) 2))
+              web-mode-attr-indent-offset
+              web-mode-attr-value-indent-offset
+              web-mode-code-indent-offset
+              web-mode-css-indent-offset
+              web-mode-markup-indent-offset
+              web-mode-sql-indent-offset
+              web-mode-block-padding
+              web-mode-script-padding
+              web-mode-style-padding)
+    (yaml-mode yaml-indent-offset)
+    (yaml-ts-mode yaml-indent-offset)
+    (zig-mode zig-indent-offset))
+  "Alist of indentation setting methods by modes.
+
+Each element looks like (MODE . FUNCTION) or (MODE . INDENT-SPEC-LIST).
+
+If FUNCTION is provided, it will be called when setting the
+indentation.  The indent size will be passed.
+
+If INDENT-SPEC-LIST is provided, each element of it must have one of the
+following forms:
+
+ 1. VARIABLE
+    It means (VARIABLE . 1).
+
+ 2. (VARIABLE . SPEC)
+    Setting VARIABLE according to the type of SPEC:
+
+      - Integer
+        The value is (* SPEC INDENT-SIZE);
+
+      - Function
+        The value is (funcall SPEC INDENT-SIZE);
+
+      - Any other type.
+        The value is SPEC.
+
+NOTE: Only the **buffer local** value of VARIABLE will be set."
+  :type '(alist :key-type symbol :value-type sexp)
+  :risky t)
+
+(defcustom editorconfig-exclude-modes ()
+  "Modes in which `editorconfig-mode-apply' will not run."
+  :type '(repeat (symbol :tag "Major Mode")))
+
+(defcustom editorconfig-exclude-regexps ()
+  "List of regexp for buffer filenames `editorconfig-mode-apply' will not run.
+
+When variable `buffer-file-name' matches any of the regexps, then
+`editorconfig-mode-apply' will not do its work."
+  :type '(repeat string))
+(with-eval-after-load 'recentf
+  (add-to-list 'editorconfig-exclude-regexps
+               (rx-to-string '(seq string-start
+                                   (eval (file-truename (expand-file-name recentf-save-file))))
+                             t)))
+
+(defcustom editorconfig-trim-whitespaces-mode nil
+  "Buffer local minor-mode to use to trim trailing whitespaces.
+
+If set, enable that mode when `trim_trailing_whitespace` is set to true.
+Otherwise, use `delete-trailing-whitespace'."
+  :type 'symbol)
+
+(defvar editorconfig-properties-hash nil
+  "Hash object of EditorConfig properties that was enabled for current buffer.
+Set by `editorconfig-apply' and nil if that is not invoked in
+current buffer yet.")
+(make-variable-buffer-local 'editorconfig-properties-hash)
+(put 'editorconfig-properties-hash
+     'permanent-local
+     t)
+
+(defvar editorconfig-lisp-use-default-indent nil
+  "Selectively ignore the value of indent_size for Lisp files.
+Prevents `lisp-indent-offset' from being set selectively.
+
+nil - `lisp-indent-offset' is always set normally.
+t   - `lisp-indent-offset' is never set normally
+       (always use default indent for lisps).
+number - `lisp-indent-offset' is not set only if indent_size is
+         equal to this number.  For example, if this is set to 2,
+         `lisp-indent-offset' will not be set only if indent_size is 2.")
+
+(defcustom editorconfig-override-file-local-variables t
+  "Non-nil means editorconfig will override file local variable values."
+  :type 'boolean)
+
+(defcustom editorconfig-override-dir-local-variables t
+  "Non-nil means editorconfig will override values defined in dir-locals.el ."
+  :type 'boolean)
+
+(define-error 'editorconfig-error
+              "Error thrown from editorconfig lib")
+
+(defun editorconfig-error (&rest args)
+  "Signal an `editorconfig-error'.
+Make a message by passing ARGS to `format-message'."
+  (signal 'editorconfig-error (list (apply #'format-message args))))
+
+(defun editorconfig--disabled-for-filename (filename)
+  "Return non-nil when EditorConfig is disabled for FILENAME."
+  (cl-assert (stringp filename))
+  (cl-loop for regexp in editorconfig-exclude-regexps
+           if (string-match regexp filename) return t
+           finally return nil))
+
+(defun editorconfig--disabled-for-majormode (majormode)
+  "Return non-nil when Editorconfig is disabled for MAJORMODE."
+  (cl-assert majormode)
+  (or (provided-mode-derived-p majormode 'special-mode)
+      ;; Some special modes (like `archive-mode') are not derived from
+      ;; `special-mode'
+      (eq (get majormode 'mode-class) 'special)
+      (memq majormode
+            editorconfig-exclude-modes)))
+
+(defun editorconfig-string-integer-p (string)
+  "Return non-nil if STRING represents integer."
+  (and (stringp string)
+       (string-match-p "\\`[0-9]+\\'" string)))
+
+(defun editorconfig-set-indentation-python-mode (size)
+  "Set `python-mode' indent size to SIZE."
+  (when (boundp 'python-indent-offset)
+    (setq-local python-indent-offset size))
+  ;; For https://gitlab.com/python-mode-devs/python-mode
+  (when (boundp 'py-indent-offset)
+    (setq-local py-indent-offset size)))
+
+(defun editorconfig-set-indentation-latex-mode (size)
+  "Set `latex-mode' indent size to SIZE."
+  (setq-local tex-indent-basic size)
+  (setq-local tex-indent-item size)
+  (setq-local tex-indent-arg (* 2 size))
+  ;; For AUCTeX
+  (when (boundp 'TeX-brace-indent-level)
+    (setq-local TeX-brace-indent-level size))
+  (when (boundp 'LaTeX-indent-level)
+    (setq-local LaTeX-indent-level size))
+  (when (boundp 'LaTeX-item-indent)
+    (setq-local LaTeX-item-indent (- size))))
+
+(defun editorconfig-set-indentation-lisp-mode (size)
+ "Set indent size to SIZE for Lisp mode(s)."
+ (when (cond ((null editorconfig-lisp-use-default-indent)  t)
+             ((eql t editorconfig-lisp-use-default-indent) nil)
+             ((numberp editorconfig-lisp-use-default-indent)
+              (not (eql size editorconfig-lisp-use-default-indent)))
+             (t t))
+   (setq-local lisp-indent-offset size)))
+
+(cl-defun editorconfig--should-set (symbol)
+  "Determine if editorconfig should set SYMBOL."
+  (display-warning '(editorconfig editorconfig--should-set)
+                   (format "symbol: %S"
+                           symbol)
+                   :debug)
+  (when (and (not editorconfig-override-file-local-variables)
+             (assq symbol file-local-variables-alist))
+    (cl-return-from editorconfig--should-set
+      nil))
+
+  (when (and (not editorconfig-override-dir-local-variables)
+             (assq symbol dir-local-variables-alist))
+    (cl-return-from editorconfig--should-set
+      nil))
+
+  t)
+
+(defun editorconfig-set-indentation (style &optional size tab_width)
+  "Set indentation type from STYLE, SIZE and TAB_WIDTH."
+  (setq size
+        (cond ((editorconfig-string-integer-p size)
+               (string-to-number size))
+              ((equal size "tab")
+               "tab")
+              (t
+               nil)))
+
+  (cond ((not (editorconfig--should-set 'tab-width))
+         nil)
+        (tab_width
+         (setq tab-width (string-to-number tab_width)))
+        ((numberp size)
+         (setq tab-width size)))
+
+  (when (equal size "tab")
+    (setq size tab-width))
+
+  (cond ((not (editorconfig--should-set 'indent-tabs-mode))
+         nil)
+        ((equal style "space")
+         (setq indent-tabs-mode nil))
+        ((equal style "tab")
+         (setq indent-tabs-mode t)))
+
+  (when size
+    (when (and (featurep 'evil)
+               (editorconfig--should-set 'evil-shift-width))
+      (setq-local evil-shift-width size))
+    (let ((parent major-mode)
+          entry)
+      ;; Find the closet parent mode of `major-mode' in
+      ;; `editorconfig-indentation-alist'.
+      (while (and (not (setq entry (assoc parent editorconfig-indentation-alist)))
+                  (setq parent (get parent 'derived-mode-parent))))
+      (when entry
+        (let ((fn-or-list (cdr entry)))
+          (cond ((functionp fn-or-list) (funcall fn-or-list size))
+                ((listp fn-or-list)
+                 (dolist (elem fn-or-list)
+                   (cond ((and (symbolp elem)
+                               (editorconfig--should-set elem))
+                          (set (make-local-variable elem) size))
+                         ((and (consp elem)
+                               (editorconfig--should-set (car elem)))
+                          (let ((spec (cdr elem)))
+                            (set (make-local-variable (car elem))
+                                 (cond ((functionp spec) (funcall spec size))
+                                       ((integerp spec) (* spec size))
+                                       (t spec))))))))))))))
+
+(defvar-local editorconfig--apply-coding-system-currently nil
+  "Used internally.")
+(put 'editorconfig--apply-coding-system-currently
+     'permanent-local
+     t)
+
+(defun editorconfig-merge-coding-systems (end-of-line charset)
+  "Return merged coding system symbol of END-OF-LINE and CHARSET."
+  (let ((eol (cond
+              ((equal end-of-line "lf") 'undecided-unix)
+              ((equal end-of-line "cr") 'undecided-mac)
+              ((equal end-of-line "crlf") 'undecided-dos)))
+        (cs (cond
+             ((equal charset "latin1") 'iso-latin-1)
+             ((equal charset "utf-8") 'utf-8)
+             ((equal charset "utf-8-bom") 'utf-8-with-signature)
+             ((equal charset "utf-16be") 'utf-16be-with-signature)
+             ((equal charset "utf-16le") 'utf-16le-with-signature))))
+    (if (and eol cs)
+        (merge-coding-systems cs eol)
+      (or eol cs))))
+
+(cl-defun editorconfig-set-coding-system-revert (end-of-line charset)
+  "Set buffer coding system by END-OF-LINE and CHARSET.
+
+This function will revert buffer when the coding-system has been changed."
+  ;; `editorconfig--advice-find-file-noselect' does not use this function
+  (let ((coding-system (editorconfig-merge-coding-systems end-of-line
+                                                          charset)))
+    (display-warning '(editorconfig editorconfig-set-coding-system-revert)
+                     (format "editorconfig-set-coding-system-revert: buffer-file-name: %S | buffer-file-coding-system: %S | coding-system: %S | apply-currently: %S"
+                             buffer-file-name
+                             buffer-file-coding-system
+                             coding-system
+                             editorconfig--apply-coding-system-currently)
+                     :debug)
+    (when (memq coding-system '(nil undecided))
+      (cl-return-from editorconfig-set-coding-system-revert))
+    (when (and buffer-file-coding-system
+               (memq buffer-file-coding-system
+                     (coding-system-aliases (merge-coding-systems coding-system
+                                                                  buffer-file-coding-system))))
+      (cl-return-from editorconfig-set-coding-system-revert))
+    (unless (file-readable-p buffer-file-name)
+      (set-buffer-file-coding-system coding-system)
+      (cl-return-from editorconfig-set-coding-system-revert))
+    (unless (memq coding-system
+                  (coding-system-aliases editorconfig--apply-coding-system-currently))
+      ;; Revert functions might call `editorconfig-apply' again
+      ;; FIXME: I suspect `editorconfig--apply-coding-system-currently'
+      ;; gymnastics is not needed now that we hook into `find-auto-coding'.
+      (unwind-protect
+          (progn
+            (setq editorconfig--apply-coding-system-currently coding-system)
+            ;; Revert without query if buffer is not modified
+            (let ((revert-without-query '(".")))
+              (revert-buffer-with-coding-system coding-system)))
+        (setq editorconfig--apply-coding-system-currently nil)))))
+
+(defun editorconfig--delete-final-newline ()
+  "Ensure the buffer does not end with a newline.
+Does nothing if the buffer is read-only."
+  (unless buffer-read-only
+    (save-excursion
+      (save-restriction
+        (widen)
+        (goto-char (point-max))
+        (while (looking-at-p "^$")
+          (delete-char -1))))))
+
+(defun editorconfig-set-trailing-nl (final-newline)
+  "Set up requiring final newline by FINAL-NEWLINE.
+
+This function will set `require-final-newline' and `mode-require-final-newline'
+to non-nil when FINAL-NEWLINE is true."
+  (pcase final-newline
+    ("true"
+     ;; keep prefs around how/when the nl is added, if set - otherwise add on save
+     (setq-local require-final-newline      (or require-final-newline t))
+     (setq-local mode-require-final-newline (or mode-require-final-newline t))
+     (remove-hook 'before-save-hook
+                  #'editorconfig--delete-final-newline t))
+
+    ("false"
+     (setq-local require-final-newline      nil)
+     (setq-local mode-require-final-newline nil)
+     (add-hook 'before-save-hook
+               #'editorconfig--delete-final-newline nil t))))
+
+(defun editorconfig--delete-trailing-whitespace ()
+  "Call `delete-trailing-whitespace' unless the buffer is read-only."
+  (unless buffer-read-only (delete-trailing-whitespace)))
+
+(defun editorconfig-set-trailing-ws (trim-trailing-ws)
+  (pcase trim-trailing-ws
+    ("true"
+     (if editorconfig-trim-whitespaces-mode
+         (funcall editorconfig-trim-whitespaces-mode 1)
+       (add-hook 'before-save-hook
+                 #'editorconfig--delete-trailing-whitespace nil t)))
+    ("false"
+     (when editorconfig-trim-whitespaces-mode
+       (funcall editorconfig-trim-whitespaces-mode 0))
+     (remove-hook 'before-save-hook
+                  #'editorconfig--delete-trailing-whitespace t))))
+
+
+(defun editorconfig-set-line-length (length)
+  "Set the max line length (`fill-column') to LENGTH."
+  (when (and (editorconfig-string-integer-p length)
+             (> (string-to-number length) 0))
+    (setq fill-column (string-to-number length))))
+
+
+(defun editorconfig--execute-editorconfig-exec (filename)
+  "Execute EditorConfig core with FILENAME and return output."
+  (if filename
+      (with-temp-buffer
+        (let ((remote (file-remote-p filename))
+              (remote-localname (file-remote-p filename
+                                               'localname)))
+          (display-warning '(editorconfig editorconfig--execute-editorconfig-exec)
+                           (format "editorconfig--execute-editorconfig-exec: filename: %S | remote: %S | remote-localname: %S"
+                                   filename
+                                   remote
+                                   remote-localname)
+                           :debug)
+          (if remote
+              (progn
+                (cd (concat remote "/"))
+                (setq filename remote-localname))
+            (cd "/")))
+        (display-warning '(editorconfig editorconfig--execute-editorconfig-exec)
+                         (format "editorconfig--execute-editorconfig-exec: default-directory: %S | filename: %S"
+                                 default-directory
+                                 filename
+                                 )
+                         :debug)
+        (if (eq 0
+                (process-file editorconfig-exec-path nil t nil filename))
+            (buffer-string)
+          (editorconfig-error (buffer-string))))
+    ""))
+
+(defun editorconfig--parse-properties (props-string)
+  "Create properties hash table from PROPS-STRING."
+  (let ((props-list (split-string props-string "\n"))
+        (properties (make-hash-table)))
+    (dolist (prop props-list properties)
+      (let ((key-val (split-string prop " *= *")))
+        (when (> (length key-val) 1)
+          (let ((key (intern (car key-val)))
+                (val (mapconcat #'identity (cdr key-val) "")))
+            (puthash key val properties)))))))
+
+(defun editorconfig-get-properties-from-exec (filename)
+  "Get EditorConfig properties of file FILENAME.
+
+This function uses value of `editorconfig-exec-path' to get properties."
+  (if (executable-find editorconfig-exec-path)
+      (editorconfig--parse-properties (editorconfig--execute-editorconfig-exec filename))
+    (editorconfig-error "Unable to find editorconfig executable")))
+
+(defun editorconfig-get-properties (filename)
+  "Get EditorConfig properties for file FILENAME.
+
+It calls `editorconfig-get-properties-from-exec' if
+`editorconfig-exec-path' is found, otherwise
+`editorconfig-core-get-properties-hash'."
+  (if (and (executable-find editorconfig-exec-path)
+           (not (file-remote-p filename)))
+      (editorconfig-get-properties-from-exec filename)
+    (require 'editorconfig-core)
+    (editorconfig-core-get-properties-hash filename)))
+
+(defun editorconfig-call-get-properties-function (filename)
+  "Call `editorconfig-get-properties-function' with FILENAME and return result.
+
+This function also removes `unset' properties and calls
+`editorconfig-hack-properties-functions'."
+  (unless (functionp editorconfig-get-properties-function)
+    (editorconfig-error "Invalid editorconfig-get-properties-function value"))
+  (if (stringp filename)
+      (setq filename (expand-file-name filename))
+    (editorconfig-error "Invalid argument: %S" filename))
+  (let ((props nil))
+    (condition-case err
+        (setq props (funcall editorconfig-get-properties-function
+                             filename))
+      (error
+       (editorconfig-error "Error from editorconfig-get-properties-function: %S"
+                           err)))
+    (cl-loop for k being the hash-keys of props using (hash-values v)
+             when (equal v "unset") do (remhash k props))
+    props))
+
+(defun editorconfig-set-local-variables (props)
+  "Set buffer variables according to EditorConfig PROPS."
+  (editorconfig-set-indentation (gethash 'indent_style props)
+                                (gethash 'indent_size props)
+                                (gethash 'tab_width props))
+  (editorconfig-set-trailing-nl (gethash 'insert_final_newline props))
+  (editorconfig-set-trailing-ws (gethash 'trim_trailing_whitespace props))
+  (editorconfig-set-line-length (gethash 'max_line_length props)))
+
+
+(defun editorconfig-major-mode-hook ()
+  "Function to run when `major-mode' has been changed.
+
+This functions does not reload .editorconfig file, just sets local variables
+again.  Changing major mode can reset these variables.
+
+This function also executes `editorconfig-after-apply-functions' functions."
+  (display-warning '(editorconfig editorconfig-major-mode-hook)
+                   (format "editorconfig-major-mode-hook: editorconfig-mode: %S, major-mode: %S, -properties-hash: %S"
+                           (and (boundp 'editorconfig-mode)
+                                editorconfig-mode)
+                           major-mode
+                           editorconfig-properties-hash)
+                   :debug)
+  (when (and (bound-and-true-p editorconfig-mode)
+             editorconfig-properties-hash)
+    (editorconfig-set-local-variables editorconfig-properties-hash)
+    (condition-case err
+        (run-hook-with-args 'editorconfig-after-apply-functions editorconfig-properties-hash)
+      (error
+       (display-warning '(editorconfig editorconfig-major-mode-hook)
+                        (format "Error while running `editorconfig-after-apply-functions': %S"
+                                err))))))
+
+;; This is a new var in Emacs≥30.
+;; We dyn-bind it in our `editorconfig--advice-find-auto-coding' advice
+;; to mimic the Emacs-30 behavior.
+(defvar auto-coding-file-name)
+
+(defun editorconfig--advice-find-auto-coding (filename &rest _args)
+  "Consult `charset' setting of EditorConfig."
+  (let ((cs (let ((auto-coding-file-name filename))
+              (editorconfig--get-coding-system))))
+    (when cs (cons cs 'EditorConfig))))
+
+(defun editorconfig--advice-find-file-noselect (f filename &rest args)
+  "Get EditorConfig properties and apply them to buffer to be visited.
+
+This function should be added as an advice function to `find-file-noselect'.
+F is that function, and FILENAME and ARGS are arguments passed to F."
+  (let ((props nil)
+        (ret nil))
+    (condition-case err
+        (when (stringp filename)
+          (setq props (editorconfig-call-get-properties-function filename)))
+      (error
+       (display-warning '(editorconfig editorconfig--advice-find-file-noselect)
+                        (format "Failed to get properties, styles will not be applied: %S"
+                                err)
+                        :warning)))
+
+    (setq ret (apply f filename args))
+
+    (condition-case err
+        (with-current-buffer ret
+          (when props
+
+            ;; NOTE: hack-properties-functions cannot affect coding-system value,
+            ;; because it has to be set before initializing buffers.
+            (condition-case err
+                (run-hook-with-args 'editorconfig-hack-properties-functions props)
+              (error
+               (display-warning '(editorconfig editorconfig-hack-properties-functions)
+                                (format "Error while running editorconfig-hack-properties-functions, abort running hook: %S"
+                                        err)
+                                :warning)))
+            (setq editorconfig-properties-hash props)
+            ;; When initializing buffer, `editorconfig-major-mode-hook'
+            ;; will be called before setting `editorconfig-properties-hash', so
+            ;; execute this explicitly here.
+            (editorconfig-set-local-variables props)
+
+            (condition-case err
+                (run-hook-with-args 'editorconfig-after-apply-functions props)
+              (error
+               (display-warning '(editorconfig editorconfig--advice-find-file-noselect)
+                                (format "Error while running `editorconfig-after-apply-functions': %S"
+                                        err))))))
+      (error
+       (display-warning '(editorconfig editorconfig--advice-find-file-noselect)
+                        (format "Error while setting variables from EditorConfig: %S" err))))
+    ret))
+
+(defvar editorconfig--getting-coding-system nil)
+
+(defun editorconfig--get-coding-system (&optional _size)
+  "Return the coding system to use according to EditorConfig.
+Meant to be used on `auto-coding-functions'."
+  (when (and (stringp auto-coding-file-name)
+             (file-name-absolute-p auto-coding-file-name)
+            ;; Don't recurse infinitely.
+            (not (member auto-coding-file-name
+                         editorconfig--getting-coding-system)))
+    (let* ((editorconfig--getting-coding-system
+            (cons auto-coding-file-name editorconfig--getting-coding-system))
+           (props (editorconfig-call-get-properties-function
+                   auto-coding-file-name)))
+      (editorconfig-merge-coding-systems (gethash 'end_of_line props)
+                                         (gethash 'charset props)))))
+
+;;;###autoload
+(define-minor-mode editorconfig-mode
+  "Toggle EditorConfig feature.
+
+To disable EditorConfig in some buffers, modify
+`editorconfig-exclude-modes' or `editorconfig-exclude-regexps'."
+  :global t
+  :lighter editorconfig-mode-lighter
+  (let ((modehooks '(prog-mode-hook
+                     text-mode-hook
+                     ;; Some modes call `kill-all-local-variables' in their init
+                     ;; code, which clears some values set by editorconfig.
+                     ;; For those modes, editorconfig-apply need to be called
+                     ;; explicitly through their hooks.
+                     rpm-spec-mode-hook)))
+    (if editorconfig-mode
+        (progn
+          (advice-add 'find-file-noselect :around #'editorconfig--advice-find-file-noselect)
+          (advice-add 'find-auto-coding :after-until
+                      #'editorconfig--advice-find-auto-coding)
+          (dolist (hook modehooks)
+            (add-hook hook
+                      #'editorconfig-major-mode-hook
+                      t)))
+      (advice-remove 'find-file-noselect #'editorconfig--advice-find-file-noselect)
+      (advice-remove 'find-auto-coding
+                     #'editorconfig--advice-find-auto-coding)
+      (dolist (hook modehooks)
+        (remove-hook hook #'editorconfig-major-mode-hook)))))
+
+
+;; (defconst editorconfig--version
+;;   (eval-when-compile
+;;     (require 'lisp-mnt)
+;;     (declare-function lm-version "lisp-mnt" nil)
+;;     (lm-version))
+;;   "EditorConfig version.")
+
+;;;###autoload
+(defun editorconfig-version (&optional show-version)
+  "Get EditorConfig version as string.
+
+If called interactively or if SHOW-VERSION is non-nil, show the
+version in the echo area and the messages buffer."
+  (interactive (list t))
+  (let ((version-full
+         (if (fboundp 'package-get-version) ;Emacs≥27
+             (package-get-version)
+           (let* ((version
+                   (with-temp-buffer
+                     (require 'find-func)
+                     (declare-function find-library-name "find-func" (library))
+                     (insert-file-contents (find-library-name "editorconfig"))
+                     (require 'lisp-mnt)
+                     (declare-function lm-version "lisp-mnt" nil)
+                     (lm-version)))
+                  (pkg (and (eval-and-compile (require 'package nil t))
+                            (cadr (assq 'editorconfig
+                                        package-alist))))
+                  (pkg-version (and pkg (package-version-join
+                                         (package-desc-version pkg)))))
+             (if (and pkg-version
+                      (not (string= version pkg-version)))
+                 (concat version "-" pkg-version)
+               version)))))
+    (when show-version
+      (message "EditorConfig Emacs v%s" version-full))
+    version-full))
+
+(provide 'editorconfig)
+;;; editorconfig.el ends here
diff --git a/elpa/editorconfig-20250219.1528/editorconfig.info b/elpa/editorconfig-20250219.1528/editorconfig.info
new file mode 100644 (file)
index 0000000..20341cc
--- /dev/null
@@ -0,0 +1,353 @@
+This is editorconfig.info, produced by makeinfo version 6.8 from
+editorconfig.texi.
+
+INFO-DIR-SECTION Emacs
+START-INFO-DIR-ENTRY
+* EditorConfig: (editorconfig). EditorConfig Emacs Plugin.
+END-INFO-DIR-ENTRY
+
+\1f
+File: editorconfig.info,  Node: Top,  Next: Getting Started,  Up: (dir)
+
+1 EditorConfig Emacs Plugin
+***************************
+
+This is an EditorConfig (https://editorconfig.org) plugin for Emacs
+(https://www.gnu.org/software/emacs/).
+
+* Menu:
+
+* Getting Started::
+* Supported properties::
+* Customize::
+* Troubleshooting::
+* Submitting Bugs and Feature Requests::
+* License::
+
+\1f
+File: editorconfig.info,  Node: Getting Started,  Next: Supported properties,  Prev: Top,  Up: Top
+
+1.1 Getting Started
+===================
+
+* Menu:
+
+* packageel::
+* use-package::
+* Manual installation::
+
+\1f
+File: editorconfig.info,  Node: packageel,  Next: use-package,  Up: Getting Started
+
+1.1.1 package.el
+----------------
+
+This package is available from MELPA (https://melpa.org/#/editorconfig),
+MELPA Stable (https://stable.melpa.org/#/editorconfig) and NonGNU ELPA
+(http://elpa.nongnu.org/nongnu/editorconfig.html).  Install from these
+repositories and enable global minor-mode 'editorconfig-mode':
+
+(editorconfig-mode 1)
+
+   Normally, enabling 'editorconfig-mode' should be enough for this
+plugin to work: all other configurations are optional.  This mode sets
+up hooks so that EditorConfig properties will be loaded and applied to
+the new buffers automatically when visiting files.
+
+\1f
+File: editorconfig.info,  Node: use-package,  Next: Manual installation,  Prev: packageel,  Up: Getting Started
+
+1.1.2 use-package
+-----------------
+
+If you use *use-package* (https://www.emacswiki.org/emacs/UsePackage),
+add the following to your 'init.el' file:
+
+(use-package editorconfig
+  :ensure t
+  :config
+  (editorconfig-mode 1))
+
+\1f
+File: editorconfig.info,  Node: Manual installation,  Prev: use-package,  Up: Getting Started
+
+1.1.3 Manual installation
+-------------------------
+
+Copy all '.el' files in this repository to '~/.emacs.d/lisp' and add the
+following:
+
+(add-to-list 'load-path "~/.emacs.d/lisp")
+(require 'editorconfig)
+(editorconfig-mode 1)
+
+\1f
+File: editorconfig.info,  Node: Supported properties,  Next: Customize,  Prev: Getting Started,  Up: Top
+
+1.2 Supported properties
+========================
+
+Current Emacs plugin coverage for EditorConfig's properties
+(https://editorconfig.org/#supported-properties):
+
+   * 'indent_style'
+   * 'indent_size'
+   * 'tab_width'
+   * 'end_of_line'
+   * 'charset'
+   * 'trim_trailing_whitespace'
+   * 'insert_final_newline = true' is supported
+   * 'insert_final_newline = false' is not enforced (as in trailing
+     newlines actually being removed automagically), we just
+     buffer-locally override any preferences that would auto-add them to
+     files '.editorconfig' marks as trailing-newline-free
+   * 'max_line_length'
+   * 'file_type_ext' (Experimental) (See below)
+   * 'file_type_emacs' (Experimental) (See below)
+   * 'root' (only used by EditorConfig core)
+
+   Not yet covered properties marked with over-strike - pull requests
+implementing missing features warmly welcomed!  Typically, you will want
+to tie these to native functionality, or the configuration of existing
+packages handling the feature.
+
+   As several packages have their own handling of, say, indentation, we
+might not yet cover some mode you use, but we try to add the ones that
+show up on our radar.
+
+* Menu:
+
+* File Type file_type_ext file_type_emacs::
+
+\1f
+File: editorconfig.info,  Node: File Type file_type_ext file_type_emacs,  Up: Supported properties
+
+1.2.1 File Type (file_type_ext, file_type_emacs)
+------------------------------------------------
+
+File-type feature is currently disabled, because this package is now
+undergoing big internal refactoring.  For those who want this
+functionality, please consider using editorconfig-custom-majormode
+(https://github.com/10sr/editorconfig-custom-majormode-el).
+
+\1f
+File: editorconfig.info,  Node: Customize,  Next: Troubleshooting,  Prev: Supported properties,  Up: Top
+
+1.3 Customize
+=============
+
+'editorconfig-emacs' provides some customize variables.
+
+   Here are some of these variables: for the full list of available
+variables, type M-x customize-group [RET] editorconfig [RET].
+
+* Menu:
+
+* editorconfig-trim-whitespaces-mode::
+* editorconfig-after-apply-functions::
+* editorconfig-hack-properties-functions::
+
+\1f
+File: editorconfig.info,  Node: editorconfig-trim-whitespaces-mode,  Next: editorconfig-after-apply-functions,  Up: Customize
+
+1.3.1 'editorconfig-trim-whitespaces-mode'
+------------------------------------------
+
+Buffer local minor-mode to use to trim trailing whitespaces.
+
+   If set, editorconfig will enable/disable this mode in accord with
+'trim_trailing_whitespace' property in '.editorconfig'.  Otherwise, use
+Emacs built-in 'delete-trailing-whitespace' function.
+
+   One possible value is 'ws-butler-mode'
+(https://github.com/lewang/ws-butler), with which only lines touched get
+trimmed.  To use it, add following to your init.el:
+
+(setq editorconfig-trim-whitespaces-mode
+      'ws-butler-mode)
+
+\1f
+File: editorconfig.info,  Node: editorconfig-after-apply-functions,  Next: editorconfig-hack-properties-functions,  Prev: editorconfig-trim-whitespaces-mode,  Up: Customize
+
+1.3.2 'editorconfig-after-apply-functions'
+------------------------------------------
+
+(Formerly 'editorconfig-custom-hooks')
+
+   A list of functions which will be called after loading common
+EditorConfig settings, when you can set some custom variables.
+
+   For example, 'web-mode' has several variables for indentation offset
+size and EditorConfig sets them at once by 'indent_size'.  You can stop
+indenting only blocks of 'web-mode' by adding following to your init.el:
+
+(add-hook 'editorconfig-after-apply-functions
+  (lambda (props) (setq web-mode-block-padding 0)))
+
+\1f
+File: editorconfig.info,  Node: editorconfig-hack-properties-functions,  Prev: editorconfig-after-apply-functions,  Up: Customize
+
+1.3.3 'editorconfig-hack-properties-functions'
+----------------------------------------------
+
+A list of functions to alter property values before applying them.
+
+   These functions will be run after loading ".editorconfig" files and
+before applying them to current buffer, so that you can alter some
+properties from ".editorconfig" before they take effect.
+
+   For example, Makefile files always use tab characters for
+indentation: you can overwrite "indent_style" property when current
+'major-mode' is 'makefile-mode':
+
+(add-hook 'editorconfig-hack-properties-functions
+          '(lambda (props)
+             (when (derived-mode-p 'makefile-mode)
+               (puthash 'indent_style "tab" props))))
+
+\1f
+File: editorconfig.info,  Node: Troubleshooting,  Next: Submitting Bugs and Feature Requests,  Prev: Customize,  Up: Top
+
+1.4 Troubleshooting
+===================
+
+Enabling 'editorconfig-mode' should be enough for normal cases.
+
+   When EditorConfig properties are not effective for unknown reason, we
+recommend first trying 'M-x editorconfig-display-current-properties'.
+
+   This command will open a new buffer and display the EditorConfig
+properties loaded for current buffer.  You can check if EditorConfig
+properties were not read for buffers at all, or they were loaded but did
+not take effect for some other reasons.
+
+* Menu:
+
+* Indentation for new major-modes::
+* Not work at all for FOO-mode!::
+
+\1f
+File: editorconfig.info,  Node: Indentation for new major-modes,  Next: Not work at all for FOO-mode!,  Up: Troubleshooting
+
+1.4.1 Indentation for new major-modes
+-------------------------------------
+
+Because most Emacs major-modes have their own indentation settings, this
+plugin requires explicit support for each major-mode for 'indent_size'
+property.
+
+   By default this plugin ships with settings for many major-modes, but,
+sorry to say, it cannot be perfect.  Especially it is difficult to
+support brand-new major-modes.  Please feel free to submit issue or
+pull-request for such major-mode!
+
+   Supported major-modes and their indentation configs are defined in
+the variable 'editorconfig-indentation-alist'.
+
+\1f
+File: editorconfig.info,  Node: Not work at all for FOO-mode!,  Prev: Indentation for new major-modes,  Up: Troubleshooting
+
+1.4.2 Not work at all for FOO-mode!
+-----------------------------------
+
+Most cases properties are loaded just after visiting files when
+'editorconfig-mode' is enabled.  But it is known that there are
+major-modes that this mechanism does not work for and require explicit
+call of 'editorconfig-apply'.
+
+   Typically it will occur when the major-mode is not defined using
+'define-derived-mode' ('rpm-spec-mode' is an example for this).  Please
+feel free to submit issues if you find such modes!
+
+\1f
+File: editorconfig.info,  Node: Submitting Bugs and Feature Requests,  Next: License,  Prev: Troubleshooting,  Up: Top
+
+1.5 Submitting Bugs and Feature Requests
+========================================
+
+Bugs, feature requests, and other issues should be submitted to the
+issue tracker: https://github.com/editorconfig/editorconfig-emacs/issues
+
+* Menu:
+
+* Development::
+
+\1f
+File: editorconfig.info,  Node: Development,  Up: Submitting Bugs and Feature Requests
+
+1.5.1 Development
+-----------------
+
+Make and CMake (https://cmake.org) must be installed to run the tests
+locally:
+
+$ make check
+
+   To start a new Emacs process with current '*.el' and without loading
+user init file, run:
+
+$ make sandbox
+
+\1f
+File: editorconfig.info,  Node: License,  Prev: Submitting Bugs and Feature Requests,  Up: Top
+
+1.6 License
+===========
+
+EditorConfig Emacs Plugin is free software: you can redistribute it
+and/or modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+
+\1f
+Tag Table:
+Node: Top\7f208
+Ref: #editorconfig-emacs-plugin\7f340
+Node: Getting Started\7f590
+Ref: #getting-started\7f733
+Node: packageel\7f797
+Ref: #package.el\7f919
+Node: use-package\7f1483
+Ref: #use-package\7f1635
+Node: Manual installation\7f1823
+Ref: #manual-installation\7f1973
+Node: Supported properties\7f2148
+Ref: #supported-properties\7f2307
+Node: File Type file_type_ext file_type_emacs\7f3481
+Ref: #file-type-file_type_ext-file_type_emacs\7f3682
+Node: Customize\7f3941
+Ref: #customize\7f4078
+Node: editorconfig-trim-whitespaces-mode\7f4397
+Ref: #editorconfig-trim-whitespaces-mode\7f4613
+Node: editorconfig-after-apply-functions\7f5104
+Ref: #editorconfig-after-apply-functions\7f5367
+Node: editorconfig-hack-properties-functions\7f5853
+Ref: #editorconfig-hack-properties-functions\7f6081
+Node: Troubleshooting\7f6691
+Ref: #troubleshooting\7f6856
+Node: Indentation for new major-modes\7f7396
+Ref: #indentation-for-new-major-modes\7f7600
+Node: Not work at all for FOO-mode!\7f8116
+Ref: #not-work-at-all-for-foo-mode\7f8316
+Node: Submitting Bugs and Feature Requests\7f8738
+Ref: #submitting-bugs-and-feature-requests\7f8943
+Node: Development\7f9111
+Ref: #development\7f9238
+Node: License\7f9442
+Ref: #license\7f9565
+\1f
+End Tag Table
+
+\1f
+Local Variables:
+coding: utf-8
+End: