Function: c-guess-make-basic-offset
c-guess-make-basic-offset is a byte-compiled function defined in
cc-guess.el.gz.
Signature
(c-guess-make-basic-offset ACCUMULATOR)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/cc-guess.el.gz
(defun c-guess-make-basic-offset (accumulator)
;; As candidate for `c-basic-offset', find the most frequently appearing
;; indentation-offset in ACCUMULATOR.
(let* (;; Drop the value related to `c' syntactic-symbol.
;; (`c': Inside a multiline C style block comment.)
;; The impact for values of `c' is too large for guessing
;; `basic-offset' if the target source file is small and its license
;; notice is at top of the file.
(accumulator (assq-delete-all 'c (copy-tree accumulator)))
;; Drop syntactic-symbols from ACCUMULATOR.
(alist (apply #'append (mapcar (lambda (elts)
(mapcar (lambda (elt)
(cons (abs (car elt))
(cdr elt)))
(cdr elts)))
accumulator)))
;; Gather all indentation-offsets other than 0.
;; 0 is meaningless as `basic-offset'.
(offset-list (delete 0
(delete-dups (mapcar
(lambda (elt) (car elt))
alist))))
;; Sum of number-of-times for offset:
;; (offset . sum)
(summed (mapcar (lambda (offset)
(cons offset
(apply #'+
(mapcar (lambda (a)
(if (eq (car a) offset)
(cdr a)
0))
alist))))
offset-list)))
;;
;; Find the majority.
;;
(let ((majority '(nil . 0)))
(while summed
(when (< (cdr majority) (cdr (car summed)))
(setq majority (car summed)))
(setq summed (cdr summed)))
(car majority))))