From 1103fdfbf2be55d68d44151498c2598fd622ac08 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Fri, 10 May 2019 16:40:27 -0400 Subject: [PATCH] Inhibit electric indent completely in cc mode buffers (Bug#35254) Electric indent mode's post-self-insert hook entry has 3 effects: 1. Indent the previous line. 2. Remove trailing whitespace from the previous line. 3. Indent the current line (when at beginning of line). The change from 2019-01-22 "electric-layout-mode kicks in before electric-pair-mode", makes 'electric-indent-inhibit' inhibit 1 and 2, whereas before then it inhibited only 1. While cc mode provides its own electric commands and therefore sets 'electric-indent-inhibit', it doesn't implement an electric newline command. So if only one of effects 2 and 3 from Electric indent mode occur, then hitting RET will leave trailing whitespace. * lisp/progmodes/cc-mode.el (c-electric-indent-mode-function): New function. (c-basic-common-init): Add it to electric-indent-functions to disable electric indent completely (while still letting the electric-indent-mode command/setting to control c-electric-flag as before). --- lisp/progmodes/cc-mode.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index bd62fc754a..e41f1101d0 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -634,6 +634,7 @@ (defun c-basic-common-init (mode default-style) ;; 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)) + (add-hook 'electric-indent-functions 'c-electric-indent-mode-function nil t) ;; 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) @@ -2143,6 +2144,10 @@ (defun c-electric-indent-local-mode-hook () (setq c-electric-flag electric-indent-mode) (c-update-modeline))) +(defun c-electric-indent-mode-function (char) + ;; We never want `electric-indent-mode' to do anything. + 'no-indent) + ;; Support for C -- 2.11.0