So this is by design? Of course I can insert a newline in some other way, circumventing the electric stuff, but having to decide between RET-version-1 and RET-version-2 seems really inconvenient, personally I would much rather have RET insert a newline without indent if the cursor is not after text. This is also how it seems to work in other editors. Cheers, Jarek On Fri, Aug 2, 2019 at 12:38 PM Andreas Röhler < andreas.roehler@easy-emacs.de> wrote: > All you need probably is calling C-j, not RET > > There is certain confusion IMO in recent design, as > > C-j is bound to electric-newline-and-maybe-indent > > which works as I would expect from newline. > > > On 02.08.19 07:08, Jarosław Rzeszótko wrote: > > Perhaps this behavior exists because there can also be a situation like > this: > > def test(): > print("test") > [cursor, on empty line in middle of indented block] > print("test") > > where what electric indent does after pressing RET (creates new line > aligned to the print statements) makes sense. I think it is mostly > irritating though, and editors I tested, Vim and Sublime Text, do not > automatically indent in any of the situations I mentioned. > > FWIW this works as a workaround for me: > > (setq electric-indent-functions > '((lambda (inserted-char) > (when (eq major-mode 'python-mode) > ;; Do not auto-indent after inserting any empty line > (when (save-excursion > (previous-line) > (beginning-of-line) > (looking-at "^\s*$")) > 'no-indent))))) > > Cheers, > Jarek > > On Fri, Aug 2, 2019 at 3:26 AM Noam Postavsky wrote: > >> Andreas Röhler writes: >> >> > AFAIU electric-indent-mode doesn't run a timer, cursor position alone >> > would not trigger it. >> >> electric-indent-mode works from post-self-insert-hook. Not sure how >> cursor position and timers are related. >> >> >> >>