Philipp Stephani
schrieb am Do., 28. Apr. 2016 um
19:22 Uhr:
> Philipp Stephani schrieb am Do., 28. Apr. 2016 um
> 19:11 Uhr:
>
>> Philipp Stephani schrieb am Mi., 27. Apr. 2016
>> um 16:16 Uhr:
>>
>>>
>>> emacs -Q
>>> M-x electric-quote-mode
>>> M-x customize-variable RET electric-quote-string, set it to t, save
>>> M-x python-mode
>>> Hit '
>>>
>>> Expected: ' (ASCII apostrophe) is inserted because point is outside a
>>> string
>>> Actual: ’ (Unicode quote) is inserted
>>>
>>> This seems to happen only in Python mode, not in e.g. emacs-lisp-mode.
>>>
>>> Also happens in C++ mode, and probably others.
>>
>
> The root cause is that electric-quote-post-self-insert-function uses
> syntax-ppss to check whether point is in a string or comment. Before it
> makes any replacement, the ASCII apostrophe is still in the buffer, so
> syntax-ppss considers point to be inside a string. It looks like calling
> syntax-ppss with (forward-point -1) as argument instead of (point) should
> fix it, but I'm not sure whether that's the right way.
>
I've attached a patch.