Lele Gaifax writes: > where I'm going to add a comma *after* the multiline string: when I tried to > find a solution, I thought I'd need to consider the state *at > (beginning-of-line)*, in other words, morphing my experiment on top of > your change to something like: > > (when (and electric-indent-mode > (eq (char-before) last-command-event) > (not (python-syntax-context 'string)) > (save-excursion > (beginning-of-line) > (not (eq (car (python-indent-context)) :inside-string)))) > > but your simpler code tells that it is not needed... Well, there is no big mystery I think. It's simply that `python-indent-context' goes to the beginning of line itself: (defun python-indent-context () ... (save-restriction (prog-widen) (let ((ppss (save-excursion (beginning-of-line) (syntax-ppss)))) Actually, I forgot to check for an indent context of :inside-docstring though. I'm not sure if there is valid python code which could trigger electric indent next to a docstring, but it's probably more correct to do this instead: