+ João, author of yasnippet. Hi, João, I'd appreciate any suggestions you might have. I'm aiming to extend go-ts-mode with a snippet-like feature. go-ts-mode would be able to insert a "smart / context-aware" return statement. My question is - is there a way for major modes to provide yasnippet snippets? My understanding is the snippets are either created by each user individually, or distributed as a collection of snippets (e.g. yasnippet-snippets). Are there any major modes which provide snippets (I wasn't able to find any in emacs' repo)? On Thu, Feb 9, 2023 at 3:40 PM Eli Zaretskii wrote: > > Makes sense. I am familiar with electric-pair-mode. I see that it adds > > a hook in post-self-insert-hook. Is your suggestion to do something > > like this: > > - add hook in post-self-insert-hook > > - in the hook check if RET is typed after an "return" > > - if yes, replace the "return" with the "context-aware return > > statement", possibly using (yas-expand-snippet) > > Yes, something like that. See electric.el for more examples. > > Electric modes are usually minor modes that let major modes customize > them by setting variables. Again, I think you will find examples in > electric.el. The attached patch now adds a (go-ts-electric-return-mode) which, when enabled, replaces "return RET" with a context-aware return statement. I used sh-script.el's (sh-electric-here-document-mode) as an example. I'm concerned this electric mode can turn out to be too aggressive/surprising for the user - "return RET" is a common text to be entered, I'm not sure the user would always want it to be replaced. For example, when debugging I might insert return statements all over the place. Put differently, I would be more comfortable if there's a distinct mechanism to trigger the context-aware return, for example with a trigger key like when a snippet is inserted.