2014-03-04 Stefan Monnier <monnier@iro.umontreal.ca>
+ * progmodes/cc-mode.el (c-initialize-cc-mode): Only hook into
+ electric-indent-mode-hook if we obey electric-indent-mode.
+ (c-basic-common-init): Use (fboundp 'electric-indent-local-mode) to
+ decide whether we obey electric-indent-mode.
+ (c-change-set-fl-decl-start, c-extend-after-change-region):
+ Silence warnings.
+ (c-electric-indent-mode-hook): Assume we do want to obey
+ electric-indent-mode.
+
+ * electric.el (electric-indent-mode-has-been-called): Remove.
+ (electric-indent-mode): Fix accordingly.
+
* files.el (hack-local-variables): Mention file name in warning.
* htmlfontify.el (hfy-fontify-buffer): Drop `invis-range' message.
(let ((electric-indent-mode nil))
(newline arg 'interactive)))
-(defvar electric-indent-mode-has-been-called 0
- "How many times has `electric-indent-mode' been called?
-It's > 1 if it's been called at least once by the user.")
+
;;;###autoload
(define-minor-mode electric-indent-mode
"Toggle on-the-fly reindentation (Electric Indent mode).
:global t :group 'electricity
:initialize 'custom-initialize-delay
:init-value t
- (setq electric-indent-mode-has-been-called
- (1+ electric-indent-mode-has-been-called))
(if (not electric-indent-mode)
(progn
(when (eq (lookup-key global-map [?\C-j])
;; For Emacs < 22.2.
(eval-and-compile
- (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
+ (unless (fboundp 'declare-function) (defmacro declare-function (&rest _r))))
(eval-when-compile
(let ((load-path
(add-hook 'change-major-mode-hook 'c-leave-cc-mode-mode)
(setq c-initialization-ok t)
;; Connect up with Emacs's electric-indent-mode, for >= Emacs 24.4
- (when (fboundp 'electric-indent-mode)
+ (when (fboundp 'electric-indent-local-mode)
(add-hook 'electric-indent-mode-hook 'c-electric-indent-mode-hook)
- (when (fboundp 'electric-indent-local-mode)
- (add-hook 'electric-indent-local-mode-hook
- 'c-electric-indent-local-mode-hook))))
+ (add-hook 'electric-indent-local-mode-hook
+ 'c-electric-indent-local-mode-hook)))
;; Will try initialization hooks again if they failed.
(put 'c-initialize-cc-mode initprop c-initialization-ok))))
;; messing up CC Mode's, and set `c-electric-flag' if `electric-indent-mode'
;; has been called by the user.
(when (boundp 'electric-indent-inhibit) (setq electric-indent-inhibit t))
- (when (and (boundp 'electric-indent-mode-has-been-called)
- (> electric-indent-mode-has-been-called 1))
+ ;; CC-mode should obey Emacs's generic preferences, tho only do it if
+ ;; Emacs's generic preferences can be set per-buffer (Emacs>=24.4).
+ (when (fboundp 'electric-indent-local-mode)
(setq c-electric-flag electric-indent-mode))
;; ;; Put submode indicators onto minor-mode-alist, but only once.
(backward-char))
new-pos)) ; back over (, [, <.
-(defun c-change-set-fl-decl-start (beg end old-len)
+(defun c-change-set-fl-decl-start (_beg _end _old-len)
;; Set c-new-BEG to the beginning of a "local" declaration if it('s BOL) is
;; inside one. This is called from an after-change-function, but the
;; parameters BEG END and OLD-LEN are ignored. See `c-set-fl-decl-start'
(make-local-hook 'font-lock-mode-hook))
(add-hook 'font-lock-mode-hook 'c-after-font-lock-init nil t))
-(defun c-extend-after-change-region (beg end old-len)
+(defun c-extend-after-change-region (_beg _end _old-len)
"Extend the region to be fontified, if necessary."
;; Note: the parameters are ignored here. This somewhat indirect
;; implementation exists because it is minimally different from the
(defun c-electric-indent-mode-hook ()
;; Emacs has en/disabled `electric-indent-mode'. Propagate this through to
;; each CC Mode buffer.
- (when (and (boundp 'electric-indent-mode-has-been-called)
- (> electric-indent-mode-has-been-called 1))
- (mapc (lambda (buf)
- (with-current-buffer buf
- (when c-buffer-is-cc-mode
- ;; Don't use `c-toggle-electric-state' here due to recursion.
- (setq c-electric-flag electric-indent-mode)
- (c-update-modeline))))
- (buffer-list))))
+ (mapc (lambda (buf)
+ (with-current-buffer buf
+ (when c-buffer-is-cc-mode
+ ;; Don't use `c-toggle-electric-state' here due to recursion.
+ (setq c-electric-flag electric-indent-mode)
+ (c-update-modeline))))
+ (buffer-list)))
(defun c-electric-indent-local-mode-hook ()
;; Emacs has en/disabled `electric-indent-local-mode' for this buffer.