Вам нужно будет углубиться в emacs-lisp, чтобы сделать это именно так, как вы хотите, поскольку YASnippet сделает что-то хорошее для вас, но не совсем то, что вы просите.
Я думаю, что самый простой способсделать это было бы, чтобы привязать функцию к клавише RET в карте ключей режима cc.
Функция должна проверить, что предыдущий символ является { и, если это так, выполните необходимые RET , RET , TAB , } , Up , TAB , чтобы получить курсор туда, куда вы хотите, и вставить закрывающий } .
Вы можете сделать функцию более надежной, проверив ее на сбалансированное закрытие } но это было бы сложнее, и я бы порекомендовал посмотреть, каково это без этой дополнительной функции полировки.
Если хотите, я могу написать для вас функцию и привязку карты клавиш, но так какВы попросили дать представление о том, как это делается, и я оставлю это на ваше усмотрение, если вам потребуется дополнительная помощьэто.
Кроме того, я обнаружил, что autopair.el делает это достаточно хорошо для меня, и я делаю переводы строк самостоятельно;)