Inserting Blank Lines between HTML Tags in Atom
I’ve done this exact thing before for Emacs. This is basically a copy and paste of that post, with updated code.
I code HTML in Atom, and Emmet makes it a breeze. Although, there was one thing that bugged me. When I expand
div, Emmet gives me
with the cursor stuck right there in the middle. I (and I think I’m not alone with that) would prefer
1 2 3
<div> | </div>
Getting from the one thing to the other is a mess of inserting newlines and moving the point, and indenting.
Don’t Fear, atom is here!
Until now. This being Atom, there’s a way around this. With the following snippet in my config, everything gets expanded and indented properly when I hit
RET between an opening and closing tag.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
atom.workspaceView.eachEditorView (editorView) -> editor = editorView.getEditor() _.adviseBefore editor, "insertNewline", ((_this) -> (text) -> cursorBufferPosition = undefined previousCharacter = undefined nextCharacter = undefined return true if editor.hasMultipleCursors() return unless editor.getSelection().isEmpty() cursorBufferPosition = editor.getCursorBufferPosition() previousCharacter = editor.getTextInBufferRange([ cursorBufferPosition.add([ 0, -1 ]) cursorBufferPosition ]) nextCharacter = editor.getTextInBufferRange([ cursorBufferPosition cursorBufferPosition.add([ 0, 1 ]) ]) if previousCharacter is ">" and nextCharacter is "<" editor.transact -> cursorRow = undefined editor.insertText "\n\n" editor.moveCursorUp() cursorRow = editor.getCursorBufferPosition().row editor.autoIndentBufferRows cursorRow, cursorRow + 1 false )(this)
This snippet mostly a copy of the code found in the bracket-matcher package, translated to coffeescript.