Function: dtrt-indent-try-set-offset
dtrt-indent-try-set-offset is an interactive and natively compiled
function defined in dtrt-indent.el.
Signature
(dtrt-indent-try-set-offset)
Documentation
Try adjusting the current buffer's indentation offset.
Key Bindings
This command is not in any keymaps.
Source Code
;; Defined in /nix/store/xl774j723v677bsfsybzln3vi6w0fpm3-emacs-packages-deps/share/emacs/site-lisp/elpa/dtrt-indent-20260709.2011/dtrt-indent.el
(defun dtrt-indent-try-set-offset ()
"Try adjusting the current buffer's indentation offset."
(interactive)
(let ((language-and-variable (cdr (dtrt-indent--search-hook-mapping major-mode))))
(when language-and-variable
(let* ((result
(dtrt-indent--analyze
(dtrt-indent--calc-histogram
(car language-and-variable))))
(best-guess
(cdr (assoc :best-guess result)))
(rejected
(cdr (assoc :rejected result)))
(confidence
(cdr (assoc :confidence result)))
(change-indent-tabs-mode
(cdr (assoc :change-indent-tabs-mode result)))
(indent-tabs-mode-setting
(cdr (assoc :indent-tabs-mode-setting result)))
(best-indent-offset
(nth 0 best-guess))
(indent-offset-mode-variables
(let ((v (nth 1 language-and-variable)))
(if (listp v) v (list v))))
(indent-offset-variables
(append
indent-offset-mode-variables
(remove nil
(mapcar
(lambda (x)
(let ((mode (car x))
(variable (cadr x)))
(when (and (boundp mode)
(symbol-value mode))
variable)))
dtrt-indent-hook-generic-mapping-list))))
(indent-offset-names
(mapconcat (lambda (x) (format "%s" x))
indent-offset-variables ", ")))
;; update indent-offset-variable?
(cond
((and best-guess
(not rejected))
(if dtrt-indent-explicit-offset
(message "\
Indentation offset set with file variable; not adjusted")
(when (or (not dtrt-indent-require-confirmation-flag)
(yes-or-no-p
(format "Do you want to adjust %s to %s for buffer %s? "
indent-offset-names
best-indent-offset
(buffer-name))))
(setq dtrt-indent-original-indent
(mapcar
(lambda (x)
(list x (symbol-value x) (local-variable-p x)))
indent-offset-variables))
(when (>= dtrt-indent-verbosity 1)
(let ((offset-info
(format "%s adjusted to %s%s"
indent-offset-names
best-indent-offset
(if (>= dtrt-indent-verbosity 2)
(format " (%.0f%%%% confidence)"
(* 100 confidence))
""))))
(message (concat "Note: " offset-info))))
(dolist (x indent-offset-variables)
(set (make-local-variable x)
best-indent-offset))
best-indent-offset)))
(t
(when (>= dtrt-indent-verbosity 2)
(message "Note: %s not adjusted%s" indent-offset-variables
(if (and rejected (>= dtrt-indent-verbosity 3))
(format ": %s" rejected) "")))
nil))
;; update indent-tabs-mode?
(cond
((and change-indent-tabs-mode
(not (eq indent-tabs-mode indent-tabs-mode-setting)))
(when (>= dtrt-indent-verbosity 1)
(let ((tabs-mode-info
(when (and change-indent-tabs-mode
(not (eql indent-tabs-mode-setting
indent-tabs-mode)))
(format "indent-tabs-mode adjusted to %s"
indent-tabs-mode-setting))))
(message (concat "Note: " tabs-mode-info))))
;; backup indent-tabs-mode setting
(setq dtrt-indent-original-indent
(cons
(let ((x 'indent-tabs-mode))
(list x (symbol-value x) (local-variable-p x)))
dtrt-indent-original-indent))
;; actually adapt indent-tabs-mode
(set (make-local-variable 'indent-tabs-mode)
indent-tabs-mode-setting))
(t
(when (>= dtrt-indent-verbosity 2)
(message "Note: indent-tabs-mode not adjusted"))
nil))))))