From: Stefan Monnier Date: Sat, 26 Oct 2024 15:12:32 +0000 (-0400) Subject: * lisp/editorconfig.el (editorconfig--get-indentation): Fix bug#73991 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=00410c7b1b7e260b49834ca3657f98d8d375b973;p=emacs.git * lisp/editorconfig.el (editorconfig--get-indentation): Fix bug#73991 (cherry picked from commit dd52839dd9d5f5af1f961e3ace2554931ec66510) --- diff --git a/lisp/editorconfig.el b/lisp/editorconfig.el index 9a40c30b440..7a89b964d28 100644 --- a/lisp/editorconfig.el +++ b/lisp/editorconfig.el @@ -428,8 +428,18 @@ heuristic for those modes not found there." (let ((style (gethash 'indent_style props)) (size (gethash 'indent_size props)) (tab_width (gethash 'tab_width props))) - (when tab_width - (setq tab_width (string-to-number tab_width))) + (cond + (tab_width (setq tab_width (string-to-number tab_width))) + ;; The EditorConfig spec is excessively eager to set `tab-width' + ;; even when not explicitly requested (bug#73991). + ;; As a trade-off, we accept `indent_style=tab' as a good enough hint. + ((and (equal style "tab") (editorconfig-string-integer-p size)) + (setq tab_width (string-to-number size)))) + + ;; When users choose `indent_size=tab', they most likely prefer + ;; `indent_style=tab' as well. + (when (and (null style) (equal size "tab")) + (setq style "tab")) (setq size (cond ((editorconfig-string-integer-p size)