Function: c-read-offset

c-read-offset is a byte-compiled function defined in cc-styles.el.gz.

Signature

(c-read-offset LANGELEM)

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/cc-styles.el.gz
(defun c-read-offset (langelem)
  ;; read new offset value for LANGELEM from minibuffer. return a
  ;; valid value only
  (let* ((oldoff  (cdr-safe (or (assq langelem c-offsets-alist)
				(assq langelem (get 'c-offsets-alist
						    'c-stylevar-fallback)))))
	 (symname (symbol-name langelem))
	 (defstr  (format "(default %s): " oldoff))
	 (errmsg  (concat "Offset must be int, func, var, vector, list, "
			  "or [+,-,++,--,*,/] "
			  defstr))
	 (prompt (concat symname " offset " defstr))
	 (keymap (make-sparse-keymap))
	 offset input)
    ;; In principle completing-read is used here, but SPC is unbound
    ;; to make it less annoying to enter lists.
    (set-keymap-parent keymap minibuffer-local-completion-map)
    (define-key keymap " " 'self-insert-command)
    (while (not offset)
      (minibuffer-with-setup-hook
          (lambda ()
            (setq-local minibuffer-completion-table obarray)
            (setq-local minibuffer-completion-predicate 'fboundp))
        (setq input (read-from-minibuffer prompt nil keymap t
                                          'c-read-offset-history
                                          (format "%s" oldoff))))
      (if (c-valid-offset input)
	  (setq offset input)
	;; error, but don't signal one, keep trying
	;; to read an input value
	(ding)
	(setq prompt errmsg)))
    offset))