From dd52839dd9d5f5af1f961e3ace2554931ec66510 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sat, 26 Oct 2024 11:12:32 -0400 Subject: [PATCH] * lisp/editorconfig.el (editorconfig--get-indentation): Fix bug#73991 --- lisp/editorconfig.el | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lisp/editorconfig.el b/lisp/editorconfig.el index 8d239229dcb..c524945c4b9 100644 --- a/lisp/editorconfig.el +++ b/lisp/editorconfig.el @@ -437,8 +437,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)