<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body>
<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">On 21 Aug 2016, at 14:15, Fabian Zeindl wrote:</p>

<p dir="auto"></p></div>
<div style="white-space:pre-wrap"><blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px"><div dir="auto">[…] given the following code is it possible to do this in TextMate:
</div><div dir="auto">
</div><div dir="auto">let x = { number: 42 }
</div><div dir="auto">
</div><div dir="auto">1. I want to place the cursor after the { and when I press return, I the closing bracket should too go on a new line
</div><div dir="auto">
</div><div dir="auto">let x = {
</div><div dir="auto">    number: 42
</div><div dir="auto">}
</div></blockquote></div>
<div style="white-space:normal">

<p dir="auto">In the Ruby bundle there is a “Toggle ‘do … end’ / ‘{ … }’” command bound to ⌃{ which does something very similar, so for the implementation you can look at this command.</p>

<p dir="auto">Though I took a quick look, and it seems surprisingly complex, and it even reads the selection or document (when there is no selection) in TextMate’s XML format (which include scope info). I am not sure why this is necessary.</p>

<p dir="auto">For actually overloading return and backspace in these locations, this is possible if you make the grammar match them and assign a scope at the desired locations, but I think it would be better with a toggle key like the Ruby bundle.</p>

<p dir="auto">Come to think of it, there is also <em>Fold/Unfold Code</em> in the C bundle (also bound to ⌃{) which also does something similar.</p>
</div>
</div>
</body>
</html>