bug#81551: 31.0.91; Electric-pair-mode should support Java's text blocks in java-mode, java-ts-mode

Rudi Schlatte <[email protected]> Wed, 5 Aug 2026 15:06:19 +0200
Newsgroups gmane.emacs.bugs
Message-ID <[email protected]>
> On 5 Aug 2026, at 11:32, Sean Whitton <[email protected]> wrote:
> 
> Rudi Schlatte [04/Aug  3:42pm +02] wrote:
>> Java >= 15 has support for "text blocks", multi-line strings delimited
>> by triple quotation marks similar to Python, e.g.:
>> 
>> """
>> This is how Java's
>> multi-line strings look like.
>> """
>> 
>> In my configuration, I added support for this to electric-pair-mode like so:
>> 
>> (add-hook 'java-mode-hook
>>          (lambda ()
>>            (setq-local electric-pair-pairs
>>                        (cons '("\"\"\"" . "\"\"\"") electric-pair-pairs))))
>> 
>> and similar for java-ts-mode.  I could prepare a patch that adds this to
>> java-ts-mode.el if this is the proper way to implement this.
>> 
>> But is there a better way for mode-specific customization of
>> electric-pair-mode?  The docstring of electric-pair-pairs says that it's
>> a fallback variable and that it can be overridden via a mode's syntax
>> table, but do syntax tables support this type of multi-character
>> delimiter?
>> 
>> FWIW, python.el and other modes included in Emacs seem to implement
>> multi-character electric pairs via adding a mode-specific function to
>> `post-self-insert-hook' instead of this built-in functionality.
> 
> It's fine to go ahead and implement it in the same way that those others
> modes in the tree already do, if you'd like to prepare a patch.

Something like this?  Code adapted from python.el.

(I still think adding (""" . """) to `electric-pair-pairs’ would be more satisfying ;) )